{"version":3,"file":"static/js/main.7064870f.js","mappings":"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,OAAO+4K,OAAO,CAAC,GEAnB,SAAA/gD,GACtB53H,EACAG,EACAJ,GAEA,YAAO,IAFPA,IAAAA,EAAiE4jH,IAEzD3jH,EAAM44K,QAAU74K,EAAa64K,OAAS54K,EAAM44K,OAAUz4K,GAAiBJ,EAAa64K,KAC9F,CCPA,IAwIA18G,GAAe,IAAIkY,IAxIF,CACf,IACA,OACA,UACA,OACA,UACA,QACA,QACA,IACA,OACA,MACA,MACA,MACA,aACA,OACA,KACA,SACA,SACA,UACA,OACA,OACA,MACA,WACA,OACA,WACA,KACA,MACA,UACA,MACA,SACA,MACA,KACA,KACA,KACA,QACA,WACA,aACA,SACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,SACA,SACA,KACA,OACA,IACA,SACA,MACA,QACA,MACA,MACA,SACA,QACA,SACA,KACA,OACA,OACA,MACA,OACA,OACA,WACA,OACA,QACA,MACA,WACA,SACA,KACA,WACA,SACA,SACA,IACA,QACA,UACA,MACA,WACA,IACA,KACA,KACA,OACA,IACA,OACA,SACA,UACA,SACA,QACA,SACA,OACA,SACA,QACA,MACA,UACA,MACA,QACA,QACA,KACA,WACA,QACA,KACA,QACA,OACA,KACA,QACA,IACA,KACA,MACA,MACA,QACA,MACA,SACA,WACA,OACA,UACA,gBACA,IACA,QACA,OACA,iBACA,SACA,OACA,OACA,UACA,UACA,WACA,iBACA,OACA,OACA,MACA,OACA,UCrII3sB,GAAc,wCAEd0hC,GAAe,WAMG,SAAAw3C,GAAO3gI,GAC7B,OAAOA,EACJgiC,QAAQylB,GAAa,KACrBzlB,QAAQmnD,GAAc,GAC3B,CCdA,IAAMhjD,GAAgB,WAOhBvmB,GAAoB,SAAC5f,GAAiB,OAAA+hC,OAAOkZ,aAAaj7C,GAAQA,EAAO,GAAK,GAAK,IAA7C,EAGpB,SAAA2D,GAAuB3D,GAC7C,IACIG,EADAJ,EAAO,GAIX,IAAKI,EAAIiZ,KAAKue,IAAI33B,GAAOG,EAXP,GAWwBA,EAAKA,EAX7B,GAWgD,EAChEJ,EAAO6f,GAA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,KACA,MACA,UACA,MACA,SACA,MACA,KACA,KACA,KACA,QACA,WACA,aACA,SACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,OACA,SACA,SACA,KACA,OACA,IACA,SACA,MACA,QACA,MACA,MACA,SACA,QACA,SACA,KACA,OACA,OACA,MACA,OACA,OACA,WACA,OACA,QACA,MACA,WACA,SACA,KACA,WACA,SACA,SACA,IACA,QACA,UACA,MACA,WACA,IACA,KACA,KACA,OACA,IACA,OACA,SACA,UACA,SACA,QACA,SACA,OACA,SACA,QACA,MACA,UACA,MACA,QACA,QACA,KACA,WACA,QACA,KACA,QACA,OACA,QACA,KACA,QACA,IACA,KACA,MACA,QACA,MAEA,SACA,WACA,OACA,UACA,gBACA,IACA,QACA,OACA,iBACA,OACA,OACA,UACA,UACA,WACA,iBACA,OACA,OACA,MACA,OACA,SFxHkC,CAClCvS,oBFOK,SAA6B1+I,EAAoBxgE,GACtD,IAAKwgE,EAASuZ,WAAavZ,EAAShnB,aAClC,OAAO,EAGT,MAAMk4K,EACkB,WAAtBlxJ,EAASu5C,UACRv5C,EAASj5C,YAA+C,WAAjCi5C,EAASj5C,WAAWwyF,UAExC,MAAEvzG,EAAA,SAAOyhB,EAAA,UAAU+hC,EAAA,WAAWD,EAAA,QAAY5pD,KAAY+iJ,GAC1DljJ,EAEIib,EAASlc,OAAOkc,OAAOioI,GACvB3pD,EAAQx6F,OAAO+uC,KAAKo1G,GAAY93G,KAAIliC,GACxCwoN,GAAmBlxJ,EAASmxJ,aAAazoN,GACrCA,EACAsnN,GAAetnN,KACdsnN,GAAetnN,GAAQA,EAAKi4B,QAC3B,YAEAjiC,GAAK,IAAMA,EAAEiY,wBAIJ,IAAb8Q,IACFu4C,EAASq7C,YAAc5zF,GAIzB,IAAK,MAAM/e,KAAQ1C,EACjB,GAAIA,EAAMhH,eAAe0J,GAAO,CAC9B,MAAME,EAAQknN,GAAoBpnN,EAAM1C,EAAM0C,IAC1CmnN,GAAejxM,KAAKlW,GACtBs3D,EAASh6D,MAAMq2G,YAAY3zG,EAAME,GAEjCo3D,E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6O,EAAY,YA4EZlW,IAAO5B,GACT2Y,GAAQi0C,IAAI,8CAGPvsD,CAAA,CCz1BT,SAASuwW,GAAYxwW,GAAA,IAMfH,EACAI,EACAL,EACAiJ,EAeA0P,EAvBAE,EAASQ,KAAK2C,MACdrC,EAAS,IAAImC,MAAM,IACnBG,EAAU,IAAIH,MAAM,IACpB8e,EAAU,IAAI9e,MAAM,IACpBpC,EAAW,IAAIoC,MAAM,IAMrB/D,EAAU,IAAI+D,MAAM,OACpB1Q,EAAW,IAAI0Q,MAAM,OACrBla,EAAkB,IAAIka,MAAM,IAC5Bgb,EAAK,IAAIhb,MAAM,IACfrD,EAAU,GACVX,EAAU,EACVsT,EAAU,EAEV1S,EAAM,IAAIoD,MAAM,IAChBjY,EAAM,IAAIiY,MAAM,IAChBktB,EAAM,IAAIltB,MAAM,IAChBg7C,EAAM,IAAIh7C,MAAM,KAChB0rE,EAAgB,IAAI1rE,MAAM,MAG1BqgD,EAAS,CACX,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAGEv4D,EAA2B,CAC7B,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GAEEikD,EAA0B,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAC7DI,EAA2B,CAC7B,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,KAEE21E,EAA0B,CAC5B,EACA,EACA,EACA,EACA,EACA,GACA,EACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,EACA,GACA,IACA,GACA,GACA,IACA,IACA,IACA,EACA,GACA,GACA,IACA,IACA,GACA,GACA,IACA,IACA,GACA,GACA,GACA,IACA,IACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAGE7iH,EAA6B,CAC/B,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GAEE88G,EAA4B,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAC/DzE,EAA6B,CAC/B,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,KAEExP,EAA4B,CAC9B,EACA,EACA,EACA,EACA,GACA,EACA,EACA,GACA,GACA,EACA,GACA,GACA,GACA,EACA,GACA,IACA,GACA,GACA,GACA,IACA,EACA,GACA,GACA,IACA,IACA,IACA,IACA,EACA,GACA,GACA,GACA,IACA,GACA,GACA,IACA,IACA,GACA,GACA,GACA,GACA,IACA,GACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,cAuKO/jG,EAAkBzf,EAASH,GAAA,QAC9BI,EAAY,EACZL,EAAe,EACfiJ,EAAK,IAAI6S,MACJnD,EAAI,EAAGA,GAAK,GAAIA,IAAK,KACvB,IAAIE,EAAI,EAAGA,GAAKzY,EAAQuY,GAAIE,IAC/B5P,EAAGhJ,EAAUD,IAAiB,GAC9BiJ,EAAGhJ,EAAUD,IAAe,GAAKK,EACjC4I,EAAGhJ,EAAUD,IAAe,GAAK2Y,EACjC3Y,IACAK,IAEFA,GAAa,SAER4I,CAAA,UA2DAy+C,EAAUtnD,GAAA,QACbH,EAAQG,EAAG,GACXC,EAASD,EAAG,GAAK,EACdC,GAAU,GACXJ,EAAS,GAAKI,IAChByX,GAAW,GAAKsT,GAElB/qB,MACA+qB,EACc,IACG,KAAXtT,GACFypG,EAAU,KACVA,EAAU,IAEVA,EAAUzpG,GAEZsT,EAAU,EACVtT,EAAU,YAKPypG,EAAUnhH,GAEjBqY,EAAQjQ,KAAKpI,EAAA,UAGNunD,EAAUvnD,GACjBmhH,EAAWnhH,GAAS,EAAK,KA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EqzX,IACjB74V,GAAK/hB,EAAMa,GAAKuC,EAAM7Q,GAAK6Q,EACpChc,GAAK,MAAQG,EAAEyD,EACf5D,GAAK,MAAQG,EAAEgL,EACfnL,GAAK,MAAQG,EAAEq3G,GAAA,IACTxuG,IAAOhJ,GAAK2B,GAAKiX,EAAK5Y,GAAK62B,GAAK12B,EAAE0kH,GAAM7kH,GAAK,MAAQG,EAAEgzH,EAAA,MAE5DnzH,EAAI,EACTG,EAAIH,EAAI,EAAI,UAGZ,GAAKG,GAAA,MACDC,GAAKA,EAAE6lH,KAAO9lH,EAAI07W,GAAG97W,IADVI,CAAA,KAIjBw7W,GAAK,GACPzR,GAAK,CACH,EACA,EACA,EACA,EACA,GACA,GACA,GACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,OACA,OACA,OACA,QACA,QACA,QACA,QACA,UAEF0R,GAAK,GACLqX,GAAK,GACLC,GAAK,EACLC,GAAK,CACH,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GAEJxyP,EAAE,aAAc,iBAChBxgI,EAAKs3X,WAAa,kBACT,YAETt3X,EAAKu3X,WAAa,SAASv3X,GAAA,OAClBA,CAAA,EAETA,EAAKw3X,WAAa,SAASx3X,EAAGH,EAAGI,GAAA,OACxBJ,EAAEI,EAAI,IAEfD,EAAKy3X,WAAa,SAASz3X,EAAGH,EAAGI,GAAA,OACxBJ,EAAEI,EAAI,IAEfD,EAAK03X,WAAa,SAAS13X,EAAGH,EAAGI,GAAA,OACxBJ,EAAEI,EAAI,IAEfD,EAAK23X,WAAa,SAAS33X,EAAGH,EAAGI,GAAA,OACxB4nI,EAAGA,EAAG7nI,EAAGH,EAAEI,EAAI,IAAKJ,EAAEI,EAAI,KAEnCD,EAAK43X,WAAa,SAAS53X,EAAGH,EAAGI,GAAA,OACxB4nI,EAAG7nI,EAAGH,EAAEI,EAAI,KAErBD,EAAK63X,WAAa,SAAS73X,EAAGH,EAAGI,GAAA,OACxB4nI,EAAG7nI,EAAGH,EAAEI,EAAI,KAErBD,EAAK83X,WAAa,SAAS93X,EAAGH,EAAGI,GAAA,OACxB4nI,E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,EAAG,EAAG,GACZD,GAAK,CAAC,EAAG,EAAG,IACZF,GAAK,CAAC,IAAK,IAAK,IAAK,IAAK,IAC1BI,GAAK,CAAC,EAAG,EAAG,EAAG,EAAG,GAClBH,GAAK,CAAC,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,IACpEvB,GAAK,CACH,GACA,EACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,EACA,IACA,IACA,GACA,GACA,IACA,IACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,GACA,GACA,IACA,EACA,IACA,IACA,GACA,GACA,GACA,GACA,IACA,IACA,GACA,GACA,IACA,IACA,GACA,GACA,IACA,IACA,GACA,GACA,GACA,IACA,GACA,GACA,EACA,IACA,IACA,GACA,GACA,GACA,GACA,GACA,IACA,GACA,IACA,IACA,GACA,GACA,GACA,IACA,IACA,GACA,IACA,GACA,IACA,IACA,GACA,KAEFqB,GAAK,CACH,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEFr1P,GAAK,EACLd,GAAK,CACH,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEFY,GAAK,CACH,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEFH,GAAK,KACL98F,GAAK,CACH,CAAC,IAAK,IAAK,IAAK,GAChB,CAAC,IAAK,IAAK,IAAK,IAAK,GACrB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,GAC1B,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,I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AC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,OAGvD,CACE,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,OAGvD,CACE,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,OAGvD,CACE,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAErD,CACE,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACnD,CAAC,IAAK,IAAK,IAAK,IAAK,I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A,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,IACA,IACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,IACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,IACA,MACA,IACA,MACA,MACA,IACA,MACA,MACA,IACA,MACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,IACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,MACA,MACA,IACA,MACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,IACA,MACA,MACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,MACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,MACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,IACA,KACA,IACA,IACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,KACA,IACA,IACA,IACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IAC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L,IAAK,UACL,IAAK,YACL,IAAK,iBACL,IAAK,cACL,IAAK,oBACL,IAAK,gBACL,IAAK,eACL,IAAK,iBACL,IAAK,kBACL,IAAK,cACL,IAAK,qBACL,IAAK,SACL,IAAK,cACL,IAAK,WACL,IAAK,WACL,IAAK,eACL,IAAK,eACL,IAAK,iBACL,IAAK,eACL,IAAK,kBACL,IAAK,qBACL,IAAK,aACL,IAAK,YACL,IAAK,YACL,IAAK,gBACL,IAAK,cACL,IAAK,eACL,IAAK,kBACL,IAAK,oBACL,IAAK,kBACL,IAAK,iBACL,IAAK,UACL,IAAK,YACL,IAAK,YACL,IAAK,aACL,IAAK,cACL,IAAK,UACL,IAAK,SACL,IAAK,cACL,IAAK,UACL,IAAK,oBACL,IAAK,kBACL,IAAK,QACL,IAAK,aACL,IAAK,YACL,IAAK,cACL,IAAK,mBACL,IAAK,oBACL,IAAK,cACL,IAAK,cACL,IAAK,mBACL,IAAK,eACL,IAAK,aACL,IAAK,eACL,IAAK,gBACL,IAAK,aACL,IAAK,cACL,IAAK,cACL,IAAK,iBACL,IAAK,YACL,IAAK,cACL,IAAK,eACL,IAAK,aACL,IAAK,aACL,IAAK,gBACL,IAAK,eACL,IAAK,kBACL,IAAK,gBACL,IAAK,qBACL,IAAK,WACL,IAAK,OACL,IAAK,gBACL,IAAK,kBACL,IAAK,aACL,IAAK,aACL,IAAK,eACL,IAAK,iBACL,IAAK,cACL,IAAK,iBACL,IAAK,qBACL,IAAK,YACL,IAAK,oBACL,IAAK,WACL,IAAK,cACL,IAAK,iBACL,IAAK,WACL,IAAK,eACL,IAAK,gBACL,IAAK,gBACL,IAAK,mBACL,IAAK,iBACL,IAAK,eACL,IAAK,cACL,IAAK,YACL,IAAK,kBACL,IAAK,oBACL,IAAK,iBACL,IAAK,YACL,IAAK,aACL,IAAK,oBACL,IAAK,aACL,IAAK,eACL,IAAK,iBACL,IAAK,kBACL,IAAK,eACL,IAAK,gBACL,IAAK,gBACL,IAAK,qBACL,IAAK,mBACL,IAAK,qBACL,IAAK,yBACL,IAAK,cACL,IAAK,aACL,IAAK,mBACL,IAAK,sBACL,IAAK,eACL,IAAK,eACL,IAAK,gBACL,IAAK,cACL,IAAK,kBACL,IAAK,cACL,IAAK,gBACL,IAAK,kBACL,IAAK,2BACL,IAAK,eACL,IAAK,iBACL,IAAK,aACL,IAAK,iBACL,IAAK,YACL,IAAK,mBACL,IAAK,cACL,IAAK,wBACL,IAAK,kBACL,IAAK,qBACL,IAAK,kBACL,IAAK,kBACL,IAAK,kBACL,IAAK,qBACL,IAAK,aACL,IAAK,iBACL,IAAK,eACL,IAAK,mBACL,IAAK,aACL,IAAK,eACL,IAAK,kBACL,IAAK,gBACL,IAAK,gBACL,IAAK,kBACL,IAAK,kBACL,IAAK,gBACL,IAAK,iBACL,IAAK,uBACL,IAAK,0BACL,IAAK,iBACL,IAAK,eACL,IAAK,YACL,IAAK,cACL,IAAK,aACL,IAAK,iBACL,IAAK,kBACL,IAAK,kBACL,IAAK,gBACL,IAAK,kBACL,IAAK,gBACL,IAAK,gBACL,IAAK,qBACL,IAAK,cACL,IAAK,mBACL,IAAK,uBACL,IAAK,mBACL,IAAK,kBACL,IAAK,mBACL,IAAK,cACL,IAAK,iBACL,IAAK,kBACL,IAAK,eACL,IAAK,eACL,IAAK,oBACL,IAAK,sBACL,IAAK,sBACL,IAAK,mBACL,IAAK,qBACL,IAAK,qBACL,IAAK,gBACL,IAAK,aACL,IAAK,YACL,IAAK,cACL,IAAK,mBACL,IAAK,gBACL,IAAK,wBACL,IAAK,qBACL,IAAK,SACL,IAAK,kBACL,IAAK,gBACL,IAAK,kBACL,IAAK,gBACL,IAAK,gBACL,IAAK,mBACL,IAAK,mBACL,IAAK,oBACL,IAAK,eACL,IAAK,oBACL,IAAK,uBACL,IAAK,cACL,IAAK,WACL,IAAK,WACL,IAAK,aACL,IAAK,aACL,IAAK,eACL,IAAK,eACL,IAAK,cACL,IAAK,qBACL,IAAK,yBACL,IAAK,mBACL,IAAK,WACL,IAAK,iBACL,IAAK,iBACL,IAAK,eACL,IAAK,YACL,IAAK,mBACL,IAAK,mBACL,IAAK,iBACL,IAAK,kBACL,IAAK,oBACL,IAAK,mBACL,IAAK,cACL,IAAK,gBACL,IAA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AAK,OACL,IAAK,UACL,IAAK,YACL,IAAK,MACL,IAAK,OACL,IAAK,OACL,IAAK,UACL,IAAK,UACL,IAAK,QACL,IAAK,MACL,IAAK,OACL,IAAK,UACL,IAAK,SACL,IAAK,WACL,IAAK,SACL,IAAK,aACL,IAAK,OACL,IAAK,OACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,OACL,IAAK,gBACL,IAAK,WACL,IAAK,aACL,IAAK,cACL,IAAK,gBACL,IAAK,kBACL,IAAK,gBACL,IAAK,WACL,IAAK,OACL,IAAK,QACL,IAAK,aACL,IAAK,KACL,IAAK,QACL,IAAK,SACL,IAAK,YACL,IAAK,cACL,IAAK,iBACL,IAAK,OACL,IAAK,gBACL,IAAK,WACL,IAAK,cACL,IAAK,WACL,IAAK,iBACL,IAAK,aACL,IAAK,YACL,IAAK,eACL,IAAK,eACL,IAAK,cACL,IAAK,aACL,IAAK,cACL,IAAK,eACL,IAAK,SACL,IAAK,WACL,IAAK,UACL,IAAK,UACL,IAAK,YACL,IAAK,UACL,IAAK,SACL,IAAK,SACL,IAAK,aACL,IAAK,YACL,IAAK,OACL,IAAK,YACL,IAAK,QACL,IAAK,OACL,IAAK,SACL,IAAK,YACL,IAAK,QACL,IAAK,YACL,IAAK,WACL,IAAK,UACL,IAAK,cACL,IAAK,cACL,IAAK,SACL,IAAK,eACL,IAAK,WACL,IAAK,YACL,IAAK,UACL,IAAK,WACL,IAAK,cACL,IAAK,MACL,IAAK,SACL,IAAK,UACL,IAAK,QACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,WACL,IAAK,UACL,IAAK,SACL,IAAK,QACL,IAAK,WACL,IAAK,QACL,IAAK,YACL,IAAK,UACL,IAAK,MACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,UACL,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,WACL,IAAK,aACL,IAAK,cACL,IAAK,OACL,IAAK,WACL,IAAK,OACL,IAAK,gBACL,IAAK,YACL,IAAK,cACL,IAAK,QACL,IAAK,iBACL,IAAK,kBACL,IAAK,kBACL,IAAK,iBACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,QACL,IAAK,UACL,IAAK,aACL,IAAK,eACL,IAAK,oBACL,IAAK,QACL,IAAK,UACL,IAAK,aACL,IAAK,eACL,IAAK,QACL,IAAK,cACL,IAAK,cACL,IAAK,WACL,IAAK,eACL,IAAK,YACL,IAAK,WACL,IAAK,WACL,IAAK,OACL,IAAK,OACL,IAAK,UACL,IAAK,QACL,IAAK,SACL,IAAK,OACL,IAAK,WACL,IAAK,gBACL,IAAK,YACL,IAAK,kBACL,IAAK,eACL,IAAK,gBACL,IAAK,mBACL,IAAK,cACL,IAAK,gBACL,IAAK,cACL,IAAK,WACL,IAAK,MACL,IAAK,YACL,IAAK,aACL,IAAK,qBACL,IAAK,mBACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,QACL,IAAK,QACL,IAAK,UACL,IAAK,QACL,IAAK,SACL,IAAK,OACL,IAAK,SACL,IAAK,UACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,aACL,IAAK,cACL,IAAK,YACL,IAAK,SACL,IAAK,UACL,IAAK,QACL,IAAK,YACL,IAAK,YACL,IAAK,aACL,IAAK,SACL,IAAK,WACL,IAAK,QACL,IAAK,SACL,IAAK,SACL,IAAK,QACL,IAAK,SACL,IAAK,MACL,IAAK,OACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,OACL,IAAK,OACL,IAAK,WACL,IAAK,WACL,IAAK,UACL,IAAK,WACL,IAAK,OACL,IAAK,YACL,IAAK,YACL,IAAK,UACL,IAAK,aACL,IAAK,aACL,IAAK,QACL,IAAK,QACL,IAAK,WACL,IAAK,WACL,IAAK,UACL,IAAK,SACL,IAAK,WACL,IAAK,UACL,IAAK,QACL,IAAK,UACL,IAAK,WACL,IAAK,YACL,IAAK,WACL,IAAK,aACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,YACL,IAAK,YACL,IAAK,YACL,IAAK,YACL,IAAK,YACL,IAAK,cACL,IAAK,UACL,IAAK,YACL,IAAK,WACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,UACL,IAAK,cACL,IAAK,MACL,IAAK,cACL,IAAK,MACL,IAAK,aACL,IAAK,gBACL,IAAK,UACL,IAAK,eACL,IAAK,UACL,IAAK,WACL,IAAK,SACL,IAAK,YACL,IAAK,cAEHD,GAAW,CACb,EAAG,EACH,EAAG,EACH,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,GAAI,EACJ,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL,IAAK,EACL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","sources":["assets/Homepage Assets/companies/Fill 251.svg","assets/Homepage Assets/companies/Fill 32.svg","assets/Homepage Assets/companies/Group 17.svg","assets/Homepage Assets/companies/Group 19.svg","assets/Homepage Assets/companies/Group 20.svg","assets/Homepage Assets/companies/Group 22.svg","assets/Homepage Assets/companies/Group 23.svg","assets/Homepage Assets/companies/Group 25.svg","assets/Homepage Assets/companies/Group 26.svg","assets/Homepage Assets/companies/Group 28.svg","assets/Homepage Assets/companies/Group 32.svg","assets/Homepage Assets/companies/Group 34.svg","assets/Homepage Assets/companies/Group 35.svg","assets/Homepage Assets/companies/Group 37.svg","assets/Homepage Assets/header/header background .svg","assets/Homepage Assets/icons/Group 11.svg","assets/Homepage Assets/icons/Group 12.svg","assets/Homepage Assets/icons/Group 14.svg","assets/Homepage Assets/icons/Group 2.svg","assets/Homepage Assets/icons/Group 3 Copy 3.svg","assets/Homepage Assets/icons/Group 3.svg","assets/Homepage Assets/icons/Group.svg","assets/Homepage Assets/icons/Path.svg","assets/Homepage Assets/icons/Vector 1.svg","assets/Homepage Assets/icons/arrow.svg","assets/Homepage Assets/icons/target.svg","assets/Homepage Assets/illustrations/Group 156.svg","assets/Homepage Assets/illustrations/Group 52.svg","assets/Homepage Assets/illustrations/Group 61.svg","assets/Homepage Assets/illustrations/Group 62.svg","assets/Homepage Assets/illustrations/Group 65.svg","assets/Homepage Assets/pull out section/particle 1.svg","assets/Homepage Assets/pull out section/particle 2.svg","assets/Homepage Assets/pull out section/particle 3.svg","assets/Homepage Assets/pull out section/particle 4.svg","assets/Homepage Assets/pull out section/particle 5.svg","assets/Homepage Assets/pull out section/particle 6.svg","assets/Homepage Assets/pull out section/particle 7.svg","assets/Homepage Assets/pull out section/particle 8.svg","assets/Homepage Assets/why sproj section/Group.svg","assets/Icons/chevron-left.svg","assets/Icons/downvote.svg","assets/Icons/message-circle.svg","assets/Icons/search.svg","assets/Icons/sort.svg","assets/Icons/thumbs-up.svg","assets/Icons/upvote.svg","assets/Logo/logo-main.svg","../node_modules/@antv/event-emitter/src/index.ts","../node_modules/@antv/g-base/src/abstract/base.ts","../node_modules/d3-timer/src/timer.js","../node_modules/d3-color/src/define.js","../node_modules/d3-color/src/color.js","../node_modules/d3-interpolate/src/basis.js","../node_modules/d3-interpolate/src/constant.js","../node_modules/d3-interpolate/src/color.js","../node_modules/d3-interpolate/src/rgb.js","../node_modules/d3-interpolate/src/basisClosed.js","../node_modules/d3-interpolate/src/numberArray.js","../node_modules/d3-interpolate/src/array.js","../node_modules/d3-interpolate/src/date.js","../node_modules/d3-interpolate/src/number.js","../node_modules/d3-interpolate/src/object.js","../node_modules/d3-interpolate/src/string.js","../node_modules/d3-interpolate/src/value.js","../node_modules/@antv/g-base/src/animate/timeline.ts","../node_modules/@antv/g-base/src/util/color.ts","../node_modules/@antv/g-base/src/event/event-contoller.ts","../node_modules/@antv/g-base/src/abstract/canvas.ts","../node_modules/@antv/g-base/src/abstract/container.ts","../node_modules/@antv/g-base/src/abstract/element.ts","../node_modules/@antv/g-base/src/abstract/group.ts","../node_modules/@antv/g-base/src/abstract/shape.ts","../node_modules/d3-ease/src/linear.js","../node_modules/d3-ease/src/quad.js","../node_modules/d3-ease/src/cubic.js","../node_modules/d3-ease/src/poly.js","../node_modules/d3-ease/src/sin.js","../node_modules/d3-ease/src/math.js","../node_modules/d3-ease/src/exp.js","../node_modules/d3-ease/src/circle.js","../node_modules/d3-ease/src/bounce.js","../node_modules/d3-ease/src/back.js","../node_modules/d3-ease/src/elastic.js","../node_modules/@antv/g-base/src/animate/register.ts","../node_modules/@antv/g-base/src/bbox/register.ts","../node_modules/@antv/g-base/src/bbox/rect.ts","../node_modules/@antv/g-base/src/bbox/circle.ts","../node_modules/@antv/g-base/node_modules/@antv/g-math/src/util.ts","../node_modules/@antv/g-base/node_modules/@antv/g-math/src/quadratic.ts","../node_modules/@antv/g-base/node_modules/@antv/g-math/src/cubic.ts","../node_modules/@antv/g-base/node_modules/@antv/g-math/src/arc.ts","../node_modules/@antv/g-base/src/bbox/util.ts","../node_modules/@antv/g-base/node_modules/@antv/path-util/src/parse-path.ts","../node_modules/@antv/g-base/node_modules/@antv/path-util/src/parse-path-string.ts","../node_modules/@antv/g-base/node_modules/@antv/path-util/src/process/arc-2-cubic.ts","../node_modules/@antv/g-base/node_modules/@antv/path-util/src/get-arc-params.ts","../node_modules/@antv/g-base/node_modules/@antv/path-util/src/path-2-segments.ts","../node_modules/@antv/g-base/src/bbox/path.ts","../node_modules/@antv/g-base/src/bbox/index.ts","../node_modules/@antv/g-base/src/bbox/polyline.ts","../node_modules/@antv/g-base/src/bbox/polygon.ts","../node_modules/@antv/g-base/src/bbox/text.ts","../node_modules/@antv/g-base/src/bbox/line.ts","../node_modules/@antv/g-base/src/bbox/ellipse.ts","../node_modules/@antv/g-base/src/event/graph-event.ts","../node_modules/@antv/g-base/src/index.ts","../node_modules/@antv/g-base/src/util/matrix.ts","../node_modules/@antv/g-base/src/util/offscreen.ts","../node_modules/@antv/g-base/src/util/path.ts","../node_modules/@antv/g-base/src/util/text.ts","../node_modules/@antv/g-base/src/util/util.ts","../node_modules/@antv/g-base/node_modules/@antv/util/src/is-type.ts","../node_modules/@antv/g-base/node_modules/@antv/util/src/is-function.ts","../node_modules/@antv/g-base/node_modules/@antv/util/src/is-array.ts","../node_modules/@antv/g-base/node_modules/@antv/util/src/is-object.ts","../node_modules/@antv/g-base/node_modules/@antv/util/src/each.ts","../node_modules/@antv/g-base/node_modules/@antv/util/src/keys.ts","../node_modules/@antv/g-base/node_modules/@antv/util/src/flatten-deep.ts","../node_modules/@antv/g-base/node_modules/@antv/util/src/max.ts","../node_modules/@antv/g-base/node_modules/@antv/util/src/min.ts","../node_modules/@antv/g-base/node_modules/@antv/util/src/pull.ts","../node_modules/@antv/g-base/node_modules/@antv/util/src/pull-at.ts","../node_modules/@antv/g-base/node_modules/@antv/util/src/remove.ts","../node_modules/@antv/g-base/node_modules/@antv/util/src/is-string.ts","../node_modules/@antv/g-base/node_modules/@antv/util/src/group-by.ts","../node_modules/@antv/g-base/node_modules/@antv/util/src/is-number.ts","../node_modules/@antv/g-base/node_modules/@antv/util/src/is-integer.ts","../node_modules/@antv/g-base/node_modules/@antv/util/src/is-number-equal.ts","../node_modules/@antv/g-base/node_modules/@antv/util/src/mod.ts","../node_modules/@antv/g-base/node_modules/@antv/util/src/to-degree.ts","../node_modules/@antv/g-base/node_modules/@antv/util/src/to-radian.ts","../node_modules/@antv/g-base/node_modules/@antv/util/src/values.ts","../node_modules/@antv/g-base/node_modules/@antv/util/src/is-nil.ts","../node_modules/@antv/g-base/node_modules/@antv/util/src/upper-first.ts","../node_modules/@antv/g-base/node_modules/@antv/util/src/to-string.ts","../node_modules/@antv/g-base/node_modules/@antv/util/src/is-prototype.ts","../node_modules/@antv/g-base/node_modules/@antv/util/src/is-empty.ts","../node_modules/@antv/g-base/node_modules/@antv/util/src/is-object-like.ts","../node_modules/@antv/g-base/node_modules/@antv/util/src/is-array-like.ts","../node_modules/@antv/g-base/node_modules/@antv/util/src/is-equal.ts","../node_modules/@antv/g-base/node_modules/@antv/util/src/mix.ts","../node_modules/@antv/g-base/node_modules/@antv/util/src/pick.ts","../node_modules/@antv/g-base/node_modules/@antv/util/src/unique-id.ts","../node_modules/@antv/g-base/node_modules/@antv/util/src/noop.ts","../node_modules/@antv/g-base/node_modules/@antv/util/src/measure-text-width.ts","../node_modules/@antv/g-base/node_modules/@antv/util/src/memoize.ts","../node_modules/@antv/g-base/node_modules/@antv/util/src/cache.ts","../node_modules/@antv/matrix-util/src/ext.ts","../node_modules/@atlaskit/icon/core/warning.js","../node_modules/@atlaskit/icon/dist/esm/components/icon-new.js","../node_modules/@atlaskit/icon/dist/esm/constants.js","../node_modules/@atlaskit/icon/dist/esm/components/styles.js","../node_modules/@atlaskit/icon/dist/esm/components/icon.js","../node_modules/@atlaskit/icon/dist/esm/components/utils.js","../node_modules/@atlaskit/icon/dist/esm/components/icon-facade.js","../node_modules/@atlaskit/icon/glyph/warning.js","../node_modules/@atlaskit/platform-feature-flags/dist/esm/debug.js","../node_modules/@atlaskit/platform-feature-flags/dist/esm/resolvers.js","../node_modules/@atlaskit/platform-feature-flags/dist/esm/index.js","../node_modules/@emotion/sheet/dist/emotion-sheet.esm.js","../node_modules/stylis/src/Utility.js","../node_modules/stylis/src/Tokenizer.js","../node_modules/stylis/src/Enum.js","../node_modules/stylis/src/Serializer.js","../node_modules/stylis/src/Parser.js","../node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js","../node_modules/stylis/src/Middleware.js","../node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js","../node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","../node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","../node_modules/@emotion/serialize/dist/emotion-serialize.esm.js","../node_modules/@emotion/hash/dist/emotion-hash.esm.js","../node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.browser.esm.js","../node_modules/@emotion/react/dist/emotion-element-5486c51c.browser.esm.js","../node_modules/@emotion/react/dist/emotion-react.browser.esm.js","../node_modules/aos/dist/aos.js","../node_modules/d3-regression/dist/d3-regression.js","../node_modules/detect-browser/es/index.js","../node_modules/file-saver/src/FileSaver.js","../node_modules/fmin/build/fmin.js","../node_modules/gl-matrix/esm/common.js","../node_modules/gl-matrix/esm/mat3.js","../node_modules/gl-matrix/esm/vec2.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/hoist-non-react-statics/node_modules/react-is/index.js","../node_modules/localforage/dist/localforage.js","../node_modules/lodash/_DataView.js","../node_modules/lodash/_Hash.js","../node_modules/lodash/_ListCache.js","../node_modules/lodash/_Map.js","../node_modules/lodash/_MapCache.js","../node_modules/lodash/_Promise.js","../node_modules/lodash/_Set.js","../node_modules/lodash/_SetCache.js","../node_modules/lodash/_Stack.js","../node_modules/lodash/_Symbol.js","../node_modules/lodash/_Uint8Array.js","../node_modules/lodash/_WeakMap.js","../node_modules/lodash/_arrayEach.js","../node_modules/lodash/_arrayFilter.js","../node_modules/lodash/_arrayLikeKeys.js","../node_modules/lodash/_arrayPush.js","../node_modules/lodash/_arraySome.js","../node_modules/lodash/_assignValue.js","../node_modules/lodash/_assocIndexOf.js","../node_modules/lodash/_baseAssign.js","../node_modules/lodash/_baseAssignIn.js","../node_modules/lodash/_baseAssignValue.js","../node_modules/lodash/_baseClone.js","../node_modules/lodash/_baseCreate.js","../node_modules/lodash/_baseGetAllKeys.js","../node_modules/lodash/_baseGetTag.js","../node_modules/lodash/_baseIsArguments.js","../node_modules/lodash/_baseIsEqual.js","../node_modules/lodash/_baseIsEqualDeep.js","../node_modules/lodash/_baseIsMap.js","../node_modules/lodash/_baseIsNative.js","../node_modules/lodash/_baseIsSet.js","../node_modules/lodash/_baseIsTypedArray.js","../node_modules/lodash/_baseKeys.js","../node_modules/lodash/_baseKeysIn.js","../node_modules/lodash/_baseTimes.js","../node_modules/lodash/_baseUnary.js","../node_modules/lodash/_cacheHas.js","../node_modules/lodash/_cloneArrayBuffer.js","../node_modules/lodash/_cloneBuffer.js","../node_modules/lodash/_cloneDataView.js","../node_modules/lodash/_cloneRegExp.js","../node_modules/lodash/_cloneSymbol.js","../node_modules/lodash/_cloneTypedArray.js","../node_modules/lodash/_copyArray.js","../node_modules/lodash/_copyObject.js","../node_modules/lodash/_copySymbols.js","../node_modules/lodash/_copySymbolsIn.js","../node_modules/lodash/_coreJsData.js","../node_modules/lodash/_defineProperty.js","../node_modules/lodash/_equalArrays.js","../node_modules/lodash/_equalByTag.js","../node_modules/lodash/_equalObjects.js","../node_modules/lodash/_freeGlobal.js","../node_modules/lodash/_getAllKeys.js","../node_modules/lodash/_getAllKeysIn.js","../node_modules/lodash/_getMapData.js","../node_modules/lodash/_getNative.js","../node_modules/lodash/_getPrototype.js","../node_modules/lodash/_getRawTag.js","../node_modules/lodash/_getSymbols.js","../node_modules/lodash/_getSymbolsIn.js","../node_modules/lodash/_getTag.js","../node_modules/lodash/_getValue.js","../node_modules/lodash/_hashClear.js","../node_modules/lodash/_hashDelete.js","../node_modules/lodash/_hashGet.js","../node_modules/lodash/_hashHas.js","../node_modules/lodash/_hashSet.js","../node_modules/lodash/_initCloneArray.js","../node_modules/lodash/_initCloneByTag.js","../node_modules/lodash/_initCloneObject.js","../node_modules/lodash/_isIndex.js","../node_modules/lodash/_isKeyable.js","../node_modules/lodash/_isMasked.js","../node_modules/lodash/_isPrototype.js","../node_modules/lodash/_listCacheClear.js","../node_modules/lodash/_listCacheDelete.js","../node_modules/lodash/_listCacheGet.js","../node_modules/lodash/_listCacheHas.js","../node_modules/lodash/_listCacheSet.js","../node_modules/lodash/_mapCacheClear.js","../node_modules/lodash/_mapCacheDelete.js","../node_modules/lodash/_mapCacheGet.js","../node_modules/lodash/_mapCacheHas.js","../node_modules/lodash/_mapCacheSet.js","../node_modules/lodash/_mapToArray.js","../node_modules/lodash/_nativeCreate.js","../node_modules/lodash/_nativeKeys.js","../node_modules/lodash/_nativeKeysIn.js","../node_modules/lodash/_nodeUtil.js","../node_modules/lodash/_objectToString.js","../node_modules/lodash/_overArg.js","../node_modules/lodash/_root.js","../node_modules/lodash/_setCacheAdd.js","../node_modules/lodash/_setCacheHas.js","../node_modules/lodash/_setToArray.js","../node_modules/lodash/_stackClear.js","../node_modules/lodash/_stackDelete.js","../node_modules/lodash/_stackGet.js","../node_modules/lodash/_stackHas.js","../node_modules/lodash/_stackSet.js","../node_modules/lodash/_toSource.js","../node_modules/lodash/cloneDeep.js","../node_modules/lodash/eq.js","../node_modules/lodash/isArguments.js","../node_modules/lodash/isArray.js","../node_modules/lodash/isArrayLike.js","../node_modules/lodash/isBuffer.js","../node_modules/lodash/isEmpty.js","../node_modules/lodash/isEqual.js","../node_modules/lodash/isFunction.js","../node_modules/lodash/isLength.js","../node_modules/lodash/isMap.js","../node_modules/lodash/isObject.js","../node_modules/lodash/isObjectLike.js","../node_modules/lodash/isSet.js","../node_modules/lodash/isTypedArray.js","../node_modules/lodash/keys.js","../node_modules/lodash/keysIn.js","../node_modules/lodash/stubArray.js","../node_modules/lodash/stubFalse.js","../node_modules/moment/moment.js","../node_modules/pdfast/src/helper.js","../node_modules/pdfast/src/index.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/property-expr/index.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/shallowequal/index.js","../node_modules/size-sensor/lib/constant.js","../node_modules/size-sensor/lib/debounce.js","../node_modules/size-sensor/lib/id.js","../node_modules/size-sensor/lib/index.js","../node_modules/size-sensor/lib/sensorPool.js","../node_modules/size-sensor/lib/sensors/index.js","../node_modules/size-sensor/lib/sensors/object.js","../node_modules/size-sensor/lib/sensors/resizeObserver.js","../node_modules/tiny-case/index.js","../node_modules/toposort/index.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-with-selector.production.min.js","../node_modules/use-sync-external-store/with-selector.js","../node_modules/classnames/index.js","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/tslib/tslib.es6.mjs","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../webpack/runtime/nonce","../node_modules/@fortawesome/fontawesome-svg-core/index.mjs","../node_modules/@fortawesome/free-solid-svg-icons/index.mjs","../node_modules/@remix-run/router/history.ts","../node_modules/@remix-run/router/utils.ts","../node_modules/@remix-run/router/router.ts","../node_modules/react-router/lib/context.ts","../node_modules/react-router/lib/hooks.tsx","../node_modules/react-router/lib/components.tsx","../node_modules/notistack/node_modules/clsx/dist/clsx.m.js","../node_modules/goober/dist/goober.modern.js","../node_modules/src/SnackbarContext.ts","../node_modules/src/utils/index.ts","../node_modules/src/transitions/Transition/Transition.tsx","../node_modules/src/transitions/useForkRef.ts","../node_modules/src/transitions/getTransitionProps.ts","../node_modules/src/transitions/utils.ts","../node_modules/src/transitions/createTransition.ts","../node_modules/src/transitions/Slide/Slide.tsx","../node_modules/src/utils/defaultIconVariants.tsx","../node_modules/src/SnackbarProvider/merger.ts","../node_modules/src/utils/styles.ts","../node_modules/src/transitions/Collapse/Collapse.tsx","../node_modules/src/SnackbarItem/utils.ts","../node_modules/src/utils/createChainedFunction.ts","../node_modules/src/utils/useEventCallback.ts","../node_modules/src/SnackbarItem/Snackbar.tsx","../node_modules/src/SnackbarContent/SnackbarContent.tsx","../node_modules/src/ui/MaterialDesignContent/MaterialDesignContent.tsx","../node_modules/src/SnackbarItem/SnackbarItem.tsx","../node_modules/src/SnackbarContainer/SnackbarContainer.tsx","../node_modules/src/SnackbarProvider/SnackbarProvider.tsx","../node_modules/src/useSnackbar.ts","../node_modules/react-redux/src/utils/react.ts","../node_modules/react-redux/src/components/Context.ts","../node_modules/react-redux/src/utils/useSyncExternalStore.ts","../node_modules/react-redux/src/hooks/useReduxContext.ts","../node_modules/react-redux/src/hooks/useSelector.ts","../node_modules/react-redux/src/utils/react-is.ts","../node_modules/react-redux/src/utils/batch.ts","../node_modules/react-redux/src/utils/Subscription.ts","../node_modules/react-redux/src/utils/useIsomorphicLayoutEffect.ts","../node_modules/react-redux/src/utils/hoistStatics.ts","../node_modules/react-redux/src/components/Provider.tsx","../node_modules/react-redux/src/hooks/useStore.ts","../node_modules/react-redux/src/hooks/useDispatch.ts","../node_modules/react-redux/src/index.ts","../node_modules/react-redux/src/components/connect.tsx","../node_modules/styled-components/node_modules/tslib/tslib.es6.mjs","../node_modules/styled-components/node_modules/stylis/src/Enum.js","../node_modules/styled-components/node_modules/stylis/src/Utility.js","../node_modules/styled-components/node_modules/stylis/src/Tokenizer.js","../node_modules/styled-components/node_modules/stylis/src/Serializer.js","../node_modules/styled-components/node_modules/stylis/src/Prefixer.js","../node_modules/styled-components/node_modules/stylis/src/Middleware.js","../node_modules/styled-components/node_modules/stylis/src/Parser.js","../node_modules/styled-components/node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","../node_modules/styled-components/src/constants.ts","../node_modules/styled-components/src/utils/empties.ts","../node_modules/styled-components/src/utils/checkDynamicCreation.ts","../node_modules/styled-components/src/utils/determineTheme.ts","../node_modules/styled-components/src/utils/domElements.ts","../node_modules/styled-components/src/utils/escape.ts","../node_modules/styled-components/src/utils/generateAlphabeticName.ts","../node_modules/styled-components/src/utils/hash.ts","../node_modules/styled-components/src/utils/generateComponentId.ts","../node_modules/styled-components/src/utils/getComponentName.ts","../node_modules/styled-components/src/utils/isTag.ts","../node_modules/styled-components/src/utils/hoist.ts","../node_modules/styled-components/src/utils/isFunction.ts","../node_modules/styled-components/src/utils/isStyledComponent.ts","../node_modules/styled-components/src/utils/joinStrings.ts","../node_modules/styled-components/src/utils/isPlainObject.ts","../node_modules/styled-components/src/utils/mixinDeep.ts","../node_modules/styled-components/src/utils/setToString.ts","../node_modules/styled-components/src/utils/error.ts","../node_modules/styled-components/src/sheet/GroupedTag.ts","../node_modules/styled-components/src/sheet/GroupIDAllocator.ts","../node_modules/styled-components/src/sheet/Rehydration.ts","../node_modules/styled-components/src/utils/nonce.ts","../node_modules/styled-components/src/sheet/dom.ts","../node_modules/styled-components/src/sheet/Tag.ts","../node_modules/styled-components/src/sheet/Sheet.ts","../node_modules/styled-components/src/utils/stylis.ts","../node_modules/styled-components/src/models/StyleSheetManager.tsx","../node_modules/styled-components/src/models/Keyframes.ts","../node_modules/styled-components/src/utils/hyphenateStyleName.ts","../node_modules/styled-components/src/utils/flatten.ts","../node_modules/styled-components/src/utils/addUnitIfNeeded.ts","../node_modules/styled-components/src/utils/isStatelessFunction.ts","../node_modules/styled-components/src/utils/isStaticRules.ts","../node_modules/styled-components/src/models/ComponentStyle.ts","../node_modules/styled-components/src/models/ThemeProvider.tsx","../node_modules/styled-components/src/models/StyledComponent.ts","../node_modules/styled-components/src/utils/generateDisplayName.ts","../node_modules/styled-components/src/utils/interleave.ts","../node_modules/styled-components/src/constructors/css.ts","../node_modules/styled-components/src/constructors/constructWithOptions.ts","../node_modules/styled-components/src/constructors/styled.tsx","../node_modules/styled-components/src/models/GlobalStyle.ts","../node_modules/styled-components/src/models/ServerStyleSheet.tsx","../node_modules/styled-components/src/base.ts","components/Header/header.style.js","assets/Logo/SC1.svg","components/Header/index.js","../node_modules/react-router-dom/dom.ts","../node_modules/react-router-dom/index.tsx","components/SideBar/left-sidebar.style.js","assets/Icons/visualize-color.svg","assets/Icons/extract-color.svg","assets/Icons/clone-color.svg","assets/Icons/migrate-color.svg","assets/Icons/cloud-count.svg","../node_modules/redux/src/utils/formatProdErrorMessage.ts","../node_modules/redux/src/utils/symbol-observable.ts","../node_modules/redux/src/utils/actionTypes.ts","../node_modules/redux/src/utils/isPlainObject.ts","../node_modules/redux/src/createStore.ts","../node_modules/redux/src/combineReducers.ts","../node_modules/redux/src/compose.ts","../node_modules/redux-thunk/dist/redux-thunk.mjs","../node_modules/immer/src/utils/env.ts","../node_modules/immer/src/utils/errors.ts","../node_modules/immer/src/utils/common.ts","../node_modules/immer/src/utils/plugins.ts","../node_modules/immer/src/core/scope.ts","../node_modules/immer/src/core/finalize.ts","../node_modules/immer/src/core/proxy.ts","../node_modules/immer/src/core/immerClass.ts","../node_modules/immer/src/core/current.ts","../node_modules/immer/src/immer.ts","../node_modules/@reduxjs/toolkit/src/createDraftSafeSelector.ts","../node_modules/@reduxjs/toolkit/src/devtoolsExtension.ts","../node_modules/@reduxjs/toolkit/src/tsHelpers.ts","../node_modules/@reduxjs/toolkit/src/createAction.ts","../node_modules/redux/src/utils/isAction.ts","../node_modules/@reduxjs/toolkit/src/utils.ts","../node_modules/@reduxjs/toolkit/src/getDefaultMiddleware.ts","../node_modules/@reduxjs/toolkit/src/autoBatchEnhancer.ts","../node_modules/@reduxjs/toolkit/src/getDefaultEnhancers.ts","../node_modules/@reduxjs/toolkit/src/mapBuilders.ts","../node_modules/@reduxjs/toolkit/src/matchers.ts","../node_modules/@reduxjs/toolkit/src/nanoid.ts","../node_modules/@reduxjs/toolkit/src/createAsyncThunk.ts","../node_modules/@reduxjs/toolkit/src/createSlice.ts","../node_modules/@reduxjs/toolkit/src/createReducer.ts","../node_modules/@reduxjs/toolkit/src/listenerMiddleware/task.ts","../node_modules/@reduxjs/toolkit/src/listenerMiddleware/index.ts","../node_modules/@reduxjs/toolkit/src/combineSlices.ts","../node_modules/@reduxjs/toolkit/src/formatProdErrorMessage.ts","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/utils.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/platform/browser/index.js","../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../node_modules/axios/lib/platform/browser/classes/FormData.js","../node_modules/axios/lib/platform/browser/classes/Blob.js","../node_modules/axios/lib/platform/common/utils.js","../node_modules/axios/lib/platform/index.js","../node_modules/axios/lib/helpers/formDataToJSON.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/helpers/toURLEncodedForm.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/core/AxiosHeaders.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/speedometer.js","../node_modules/axios/lib/helpers/throttle.js","../node_modules/axios/lib/helpers/progressEventReducer.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/helpers/resolveConfig.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/helpers/composeSignals.js","../node_modules/axios/lib/helpers/trackStream.js","../node_modules/axios/lib/adapters/fetch.js","../node_modules/axios/lib/adapters/adapters.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/HttpStatusCode.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","store/sc/index.js","components/SideBar/LeftSideBar.js","components/SideBar/right-sidebar.js","assets/Icons/documentation.svg","assets/Icons/support.svg","components/SideBar/RightSideBar.js","pages/Dashboard/content.style.js","pages/Dashboard/dashboard.style.js","assets/Icons/visualize.svg","assets/Icons/extract.svg","assets/Icons/clone.svg","assets/Icons/migrate.svg","containers/MainHeader/main-header.style.js","containers/MainHeader/index.js","../node_modules/@react-spring/rafz/src/index.ts","../node_modules/@react-spring/shared/src/globals.ts","../node_modules/@react-spring/shared/src/helpers.ts","../node_modules/@react-spring/shared/src/FrameLoop.ts","../node_modules/@react-spring/shared/src/clamp.ts","../node_modules/@react-spring/shared/src/colorMatchers.ts","../node_modules/@react-spring/shared/src/normalizeColor.ts","../node_modules/@react-spring/shared/src/colorToRgba.ts","../node_modules/@react-spring/shared/src/createInterpolator.ts","../node_modules/@react-spring/shared/src/easings.ts","../node_modules/@react-spring/shared/src/fluids.ts","../node_modules/@react-spring/shared/src/stringInterpolation.ts","../node_modules/@react-spring/shared/src/regexs.ts","../node_modules/@react-spring/shared/src/variableToRgba.ts","../node_modules/@react-spring/shared/src/deprecations.ts","../node_modules/@react-spring/shared/src/isAnimatedString.ts","../node_modules/@react-spring/shared/src/hooks/useIsomorphicLayoutEffect.ts","../node_modules/@react-spring/shared/src/hooks/useForceUpdate.ts","../node_modules/@react-spring/shared/src/hooks/useIsMounted.ts","../node_modules/@react-spring/shared/src/hooks/useOnce.ts","../node_modules/@react-spring/shared/src/hooks/useReducedMotion.ts","../node_modules/@react-spring/animated/src/Animated.ts","../node_modules/@react-spring/animated/src/AnimatedValue.ts","../node_modules/@react-spring/animated/src/AnimatedString.ts","../node_modules/@react-spring/animated/src/context.ts","../node_modules/@react-spring/animated/src/AnimatedObject.ts","../node_modules/@react-spring/animated/src/AnimatedArray.ts","../node_modules/@react-spring/animated/src/getAnimatedType.ts","../node_modules/@react-spring/animated/src/withAnimated.tsx","../node_modules/@react-spring/animated/src/createHost.ts","../node_modules/@react-spring/core/src/helpers.ts","../node_modules/@react-spring/core/src/constants.ts","../node_modules/@react-spring/core/src/AnimationConfig.ts","../node_modules/@react-spring/core/src/Animation.ts","../node_modules/@react-spring/core/src/scheduleProps.ts","../node_modules/@react-spring/core/src/AnimationResult.ts","../node_modules/@react-spring/core/src/runAsync.ts","../node_modules/@react-spring/core/src/FrameValue.ts","../node_modules/@react-spring/core/src/SpringPhase.ts","../node_modules/@react-spring/core/src/SpringValue.ts","../node_modules/@react-spring/core/src/Controller.ts","../node_modules/@react-spring/core/src/SpringContext.tsx","../node_modules/@react-spring/shared/src/hooks/useMemoOne.ts","../node_modules/@react-spring/core/src/SpringRef.ts","../node_modules/@react-spring/core/src/hooks/useTransition.tsx","../node_modules/@react-spring/shared/src/hooks/usePrev.ts","../node_modules/@react-spring/core/src/Interpolation.ts","../node_modules/@react-spring/core/src/globals.ts","../node_modules/@react-spring/web/src/applyAnimatedValues.ts","../node_modules/@react-spring/web/src/AnimatedStyle.ts","../node_modules/@react-spring/web/src/index.ts","../node_modules/@react-spring/shared/src/colors.ts","../node_modules/@react-spring/web/src/primitives.ts","containers/MainContent/main-content.js","containers/MainContent/index.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/rc-util/es/React/render.js","../node_modules/antd/es/config-provider/context.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@ant-design/cssinjs/node_modules/@emotion/hash/dist/hash.browser.esm.js","../node_modules/rc-util/es/Dom/canUseDom.js","../node_modules/rc-util/es/Dom/contains.js","../node_modules/rc-util/es/Dom/dynamicCSS.js","../node_modules/rc-util/es/hooks/useMemo.js","../node_modules/rc-util/es/warning.js","../node_modules/rc-util/es/isEqual.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@ant-design/cssinjs/es/Cache.js","../node_modules/@ant-design/cssinjs/es/StyleContext.js","../node_modules/@ant-design/cssinjs/es/theme/calc/CSSCalculator.js","../node_modules/@ant-design/cssinjs/es/theme/ThemeCache.js","../node_modules/@ant-design/cssinjs/es/theme/Theme.js","../node_modules/@ant-design/cssinjs/es/theme/createTheme.js","../node_modules/@ant-design/cssinjs/es/util/index.js","../node_modules/@ant-design/cssinjs/es/util/css-variables.js","../node_modules/rc-util/es/hooks/useLayoutEffect.js","../node_modules/@ant-design/cssinjs/es/hooks/useCompatibleInsertionEffect.js","../node_modules/@ant-design/cssinjs/es/hooks/useEffectCleanupRegister.js","../node_modules/@ant-design/cssinjs/es/hooks/useHMR.js","../node_modules/@ant-design/cssinjs/es/hooks/useGlobalCache.js","../node_modules/@ant-design/cssinjs/es/hooks/useCacheToken.js","../node_modules/@ant-design/cssinjs/node_modules/@emotion/unitless/dist/unitless.browser.esm.js","../node_modules/@ant-design/cssinjs/node_modules/stylis/src/Enum.js","../node_modules/@ant-design/cssinjs/node_modules/stylis/src/Utility.js","../node_modules/@ant-design/cssinjs/node_modules/stylis/src/Serializer.js","../node_modules/@ant-design/cssinjs/node_modules/stylis/src/Tokenizer.js","../node_modules/@ant-design/cssinjs/node_modules/stylis/src/Parser.js","../node_modules/@ant-design/cssinjs/es/util/cacheMapUtil.js","../node_modules/@ant-design/cssinjs/es/hooks/useStyleRegister.js","../node_modules/@ant-design/cssinjs/es/hooks/useCSSVarRegister.js","../node_modules/@ant-design/cssinjs/es/extractStyle.js","../node_modules/@ant-design/cssinjs/es/Keyframes.js","../node_modules/@ant-design/cssinjs/es/transformers/legacyLogicalProperties.js","../node_modules/@ant-design/icons/es/components/Context.js","../node_modules/@babel/runtime/helpers/esm/toArray.js","../node_modules/rc-util/es/utils/get.js","../node_modules/rc-util/es/utils/set.js","../node_modules/antd/es/_util/warning.js","../node_modules/antd/es/form/validateMessagesContext.js","../node_modules/rc-pagination/es/locale/en_US.js","../node_modules/rc-picker/es/locale/en_US.js","../node_modules/rc-picker/es/locale/common.js","../node_modules/antd/es/time-picker/locale/en_US.js","../node_modules/antd/es/date-picker/locale/en_US.js","../node_modules/antd/es/locale/en_US.js","../node_modules/antd/es/modal/locale.js","../node_modules/antd/es/locale/context.js","../node_modules/antd/es/locale/index.js","../node_modules/@ctrl/tinycolor/dist/module/util.js","../node_modules/@ctrl/tinycolor/dist/module/conversion.js","../node_modules/@ctrl/tinycolor/dist/module/css-color-names.js","../node_modules/@ctrl/tinycolor/dist/module/format-input.js","../node_modules/@ant-design/colors/es/generate.js","../node_modules/@ant-design/colors/es/presets.js","../node_modules/antd/es/theme/themes/seed.js","../node_modules/@ctrl/tinycolor/dist/module/index.js","../node_modules/antd/es/theme/themes/shared/genRadius.js","../node_modules/antd/es/theme/themes/shared/genControlHeight.js","../node_modules/antd/es/theme/themes/shared/genFontSizes.js","../node_modules/antd/es/theme/themes/shared/genFontMapToken.js","../node_modules/antd/es/theme/themes/default/colorAlgorithm.js","../node_modules/antd/es/theme/themes/default/colors.js","../node_modules/antd/es/theme/context.js","../node_modules/antd/es/theme/themes/default/index.js","../node_modules/antd/es/theme/themes/shared/genColorMapToken.js","../node_modules/antd/es/theme/themes/shared/genSizeMapToken.js","../node_modules/antd/es/theme/themes/shared/genCommonMapToken.js","../node_modules/antd/es/config-provider/cssVariables.js","../node_modules/antd/es/config-provider/DisabledContext.js","../node_modules/antd/es/config-provider/SizeContext.js","../node_modules/antd/es/config-provider/hooks/useConfig.js","../node_modules/antd/es/config-provider/hooks/useThemeKey.js","../node_modules/rc-util/es/Dom/findDOMNode.js","../node_modules/rc-util/es/ref.js","../node_modules/rc-motion/es/context.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/rc-motion/es/DomWrapper.js","../node_modules/rc-util/es/hooks/useEvent.js","../node_modules/rc-util/es/hooks/useState.js","../node_modules/rc-util/es/hooks/useMergedState.js","../node_modules/rc-motion/es/interface.js","../node_modules/rc-motion/es/util/motion.js","../node_modules/rc-motion/es/hooks/useIsomorphicLayoutEffect.js","../node_modules/rc-util/es/raf.js","../node_modules/rc-motion/es/hooks/useStepQueue.js","../node_modules/rc-motion/es/hooks/useNextFrame.js","../node_modules/rc-motion/es/hooks/useStatus.js","../node_modules/rc-util/es/hooks/useSyncState.js","../node_modules/rc-motion/es/hooks/useDomMotionEvents.js","../node_modules/rc-motion/es/CSSMotion.js","../node_modules/rc-motion/es/util/diff.js","../node_modules/rc-motion/es/CSSMotionList.js","../node_modules/rc-motion/es/index.js","../node_modules/antd/es/theme/util/getAlphaColor.js","../node_modules/antd/es/theme/util/alias.js","../node_modules/antd/es/theme/useToken.js","../node_modules/antd/es/config-provider/MotionWrapper.js","../node_modules/antd/es/config-provider/PropWarning.js","../node_modules/antd/es/style/index.js","../node_modules/antd/es/theme/util/useResetIconStyle.js","../node_modules/antd/es/config-provider/index.js","../node_modules/antd/es/config-provider/hooks/useTheme.js","../node_modules/@ant-design/icons-svg/es/asn/CheckCircleFilled.js","../node_modules/rc-util/es/Dom/shadow.js","../node_modules/@ant-design/icons/es/utils.js","../node_modules/@ant-design/icons/es/components/IconBase.js","../node_modules/@ant-design/icons/es/components/twoTonePrimaryColor.js","../node_modules/@ant-design/icons/es/components/AntdIcon.js","../node_modules/@ant-design/icons/es/icons/CheckCircleFilled.js","../node_modules/@ant-design/icons-svg/es/asn/CloseCircleFilled.js","../node_modules/@ant-design/icons/es/icons/CloseCircleFilled.js","../node_modules/@ant-design/icons-svg/es/asn/ExclamationCircleFilled.js","../node_modules/@ant-design/icons/es/icons/ExclamationCircleFilled.js","../node_modules/@ant-design/icons-svg/es/asn/InfoCircleFilled.js","../node_modules/@ant-design/icons/es/icons/InfoCircleFilled.js","../node_modules/antd/es/_util/zindexContext.js","../node_modules/antd/es/_util/hooks/useZIndex.js","../node_modules/antd/es/_util/motion.js","../node_modules/antd/es/locale/useLocale.js","../node_modules/rc-util/es/omit.js","../node_modules/rc-util/es/Dom/isVisible.js","../node_modules/antd/es/_util/reactNode.js","../node_modules/@ant-design/cssinjs-utils/es/util/calc/calculator.js","../node_modules/@ant-design/cssinjs-utils/es/util/calc/CSSCalculator.js","../node_modules/@ant-design/cssinjs-utils/es/util/calc/NumCalculator.js","../node_modules/@ant-design/cssinjs-utils/es/util/calc/index.js","../node_modules/@ant-design/cssinjs-utils/es/util/getCompVarPrefix.js","../node_modules/@ant-design/cssinjs-utils/es/util/getComponentToken.js","../node_modules/@ant-design/cssinjs-utils/es/util/statistic.js","../node_modules/@ant-design/cssinjs-utils/es/util/getDefaultComponentToken.js","../node_modules/@ant-design/cssinjs-utils/es/util/maxmin.js","../node_modules/@ant-design/cssinjs-utils/es/_util/hooks/useUniqueMemo.js","../node_modules/@ant-design/cssinjs-utils/es/hooks/useCSP.js","../node_modules/@ant-design/cssinjs-utils/es/util/genStyleUtils.js","../node_modules/antd/es/theme/util/genStyleUtils.js","../node_modules/antd/es/_util/wave/style.js","../node_modules/antd/es/_util/wave/interface.js","../node_modules/antd/es/_util/wave/util.js","../node_modules/antd/es/_util/wave/WaveEffect.js","../node_modules/antd/es/_util/wave/useWave.js","../node_modules/antd/es/_util/wave/index.js","../node_modules/antd/es/config-provider/hooks/useSize.js","../node_modules/rc-util/es/Children/toArray.js","../node_modules/antd/es/space/Compact.js","../node_modules/antd/es/button/button-group.js","../node_modules/antd/es/button/buttonHelpers.js","../node_modules/antd/es/button/IconWrapper.js","../node_modules/@ant-design/icons-svg/es/asn/LoadingOutlined.js","../node_modules/@ant-design/icons/es/icons/LoadingOutlined.js","../node_modules/antd/es/button/LoadingIcon.js","../node_modules/antd/es/button/style/group.js","../node_modules/antd/es/button/style/token.js","../node_modules/antd/es/button/style/index.js","../node_modules/antd/es/style/compact-item.js","../node_modules/antd/es/style/compact-item-vertical.js","../node_modules/antd/es/button/style/compactCmp.js","../node_modules/antd/es/button/button.js","../node_modules/antd/es/button/index.js","../node_modules/antd/es/_util/ActionButton.js","../node_modules/antd/es/modal/context.js","../node_modules/antd/es/modal/components/ConfirmCancelBtn.js","../node_modules/antd/es/modal/components/ConfirmOkBtn.js","../node_modules/@ant-design/icons-svg/es/asn/CloseOutlined.js","../node_modules/@ant-design/icons/es/icons/CloseOutlined.js","../node_modules/@rc-component/portal/es/Context.js","../node_modules/@rc-component/portal/es/useDom.js","../node_modules/rc-util/es/getScrollBarSize.js","../node_modules/@rc-component/portal/es/useScrollLocker.js","../node_modules/@rc-component/portal/es/util.js","../node_modules/@rc-component/portal/es/mock.js","../node_modules/@rc-component/portal/es/Portal.js","../node_modules/@rc-component/portal/es/index.js","../node_modules/rc-dialog/es/context.js","../node_modules/rc-util/es/hooks/useId.js","../node_modules/rc-util/es/KeyCode.js","../node_modules/rc-util/es/pickAttrs.js","../node_modules/rc-dialog/es/util.js","../node_modules/rc-dialog/es/Dialog/Content/MemoChildren.js","../node_modules/rc-dialog/es/Dialog/Content/Panel.js","../node_modules/rc-dialog/es/Dialog/Content/index.js","../node_modules/rc-dialog/es/Dialog/Mask.js","../node_modules/rc-dialog/es/Dialog/index.js","../node_modules/rc-dialog/es/DialogWrap.js","../node_modules/rc-dialog/es/index.js","../node_modules/rc-field-form/es/FieldContext.js","../node_modules/rc-field-form/es/ListContext.js","../node_modules/rc-field-form/es/utils/typeUtil.js","../node_modules/@rc-component/async-validator/es/messages.js","../node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","../node_modules/@babel/runtime/helpers/esm/construct.js","../node_modules/@rc-component/async-validator/es/util.js","../node_modules/@rc-component/async-validator/es/rule/enum.js","../node_modules/@rc-component/async-validator/es/rule/pattern.js","../node_modules/@rc-component/async-validator/es/rule/range.js","../node_modules/@rc-component/async-validator/es/rule/required.js","../node_modules/@rc-component/async-validator/es/rule/url.js","../node_modules/@rc-component/async-validator/es/rule/type.js","../node_modules/@rc-component/async-validator/es/rule/whitespace.js","../node_modules/@rc-component/async-validator/es/rule/index.js","../node_modules/@rc-component/async-validator/es/validator/any.js","../node_modules/@rc-component/async-validator/es/validator/array.js","../node_modules/@rc-component/async-validator/es/validator/boolean.js","../node_modules/@rc-component/async-validator/es/validator/date.js","../node_modules/@rc-component/async-validator/es/validator/enum.js","../node_modules/@rc-component/async-validator/es/validator/float.js","../node_modules/@rc-component/async-validator/es/validator/integer.js","../node_modules/@rc-component/async-validator/es/validator/method.js","../node_modules/@rc-component/async-validator/es/validator/number.js","../node_modules/@rc-component/async-validator/es/validator/object.js","../node_modules/@rc-component/async-validator/es/validator/pattern.js","../node_modules/@rc-component/async-validator/es/validator/regexp.js","../node_modules/@rc-component/async-validator/es/validator/required.js","../node_modules/@rc-component/async-validator/es/validator/string.js","../node_modules/@rc-component/async-validator/es/validator/type.js","../node_modules/@rc-component/async-validator/es/validator/index.js","../node_modules/@rc-component/async-validator/es/index.js","../node_modules/rc-field-form/es/utils/messages.js","../node_modules/rc-field-form/es/utils/validateUtil.js","../node_modules/rc-field-form/es/utils/valueUtil.js","../node_modules/rc-field-form/es/Field.js","../node_modules/rc-field-form/es/List.js","../node_modules/rc-field-form/es/utils/NameMap.js","../node_modules/rc-field-form/es/useForm.js","../node_modules/rc-field-form/es/utils/asyncUtil.js","../node_modules/rc-field-form/es/FormContext.js","../node_modules/rc-field-form/es/Form.js","../node_modules/rc-field-form/es/useWatch.js","../node_modules/rc-field-form/es/index.js","../node_modules/antd/es/form/context.js","../node_modules/antd/es/_util/ContextIsolator.js","../node_modules/antd/es/_util/hooks/useClosable.js","../node_modules/antd/es/_util/styleChecker.js","../node_modules/antd/es/config-provider/hooks/useCSSVarCls.js","../node_modules/antd/es/skeleton/Element.js","../node_modules/antd/es/skeleton/style/index.js","../node_modules/antd/es/skeleton/Avatar.js","../node_modules/antd/es/skeleton/Button.js","../node_modules/antd/es/skeleton/Image.js","../node_modules/antd/es/skeleton/Input.js","../node_modules/@ant-design/icons-svg/es/asn/DotChartOutlined.js","../node_modules/@ant-design/icons/es/icons/DotChartOutlined.js","../node_modules/antd/es/skeleton/Node.js","../node_modules/antd/es/skeleton/Paragraph.js","../node_modules/antd/es/skeleton/Title.js","../node_modules/antd/es/skeleton/Skeleton.js","../node_modules/antd/es/skeleton/index.js","../node_modules/antd/es/watermark/context.js","../node_modules/antd/es/modal/components/NormalCancelBtn.js","../node_modules/antd/es/modal/components/NormalOkBtn.js","../node_modules/antd/es/modal/shared.js","../node_modules/antd/es/style/motion/motion.js","../node_modules/antd/es/style/motion/fade.js","../node_modules/antd/es/style/motion/zoom.js","../node_modules/antd/es/modal/style/index.js","../node_modules/antd/es/modal/Modal.js","../node_modules/antd/es/modal/style/confirm.js","../node_modules/antd/es/modal/ConfirmDialog.js","../node_modules/antd/es/modal/destroyFns.js","../node_modules/antd/es/modal/confirm.js","../node_modules/antd/es/_util/PurePanel.js","../node_modules/antd/es/modal/PurePanel.js","../node_modules/antd/es/modal/useModal/HookModal.js","../node_modules/antd/es/modal/useModal/index.js","../node_modules/antd/es/_util/hooks/usePatchElement.js","../node_modules/antd/es/modal/index.js","../node_modules/yup/index.esm.js","containers/onBoarding/onboarding-style.js","../node_modules/@ant-design/icons-svg/es/asn/CaretLeftOutlined.js","../node_modules/@ant-design/icons/es/icons/CaretLeftOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/CaretRightOutlined.js","../node_modules/@ant-design/icons/es/icons/CaretRightOutlined.js","../node_modules/@fortawesome/react-fontawesome/index.es.js","components/button/onBoarding/onBoarding.style.js","components/button/onBoarding/index.js","components/Title/OnBoarding.style.js","components/Title/index.js","components/input/onBoarding/onBoarding.style.js","../node_modules/@ant-design/icons-svg/es/asn/CheckCircleTwoTone.js","../node_modules/@ant-design/icons/es/icons/CheckCircleTwoTone.js","../node_modules/@ant-design/icons-svg/es/asn/CloseCircleTwoTone.js","../node_modules/@ant-design/icons/es/icons/CloseCircleTwoTone.js","components/input/onBoarding/index.js","components/checkbox/checkbox.style.js","helpers/utils.js","../node_modules/decode-uri-component/index.js","../node_modules/filter-obj/index.js","../node_modules/split-on-first/index.js","../node_modules/query-string/base.js","../node_modules/query-string/index.js","helpers/custom-hooks/projects.js","components/checkbox/index.js","components/OnBoardRadioGroup/OnBoardRadioGroup.style.js","components/OnBoardRadioGroup/index.js","components/Spinner/Spinner.jsx","assets/images/cancel.svg","containers/onBoarding/index.js","../node_modules/framer-motion/dist/es/render/components/create-proxy.mjs","../node_modules/framer-motion/dist/es/animation/utils/is-animation-controls.mjs","../node_modules/framer-motion/dist/es/animation/utils/is-keyframes-target.mjs","../node_modules/framer-motion/dist/es/utils/shallow-compare.mjs","../node_modules/framer-motion/dist/es/render/utils/is-variant-label.mjs","../node_modules/framer-motion/dist/es/render/utils/resolve-variants.mjs","../node_modules/framer-motion/dist/es/render/utils/resolve-dynamic-variants.mjs","../node_modules/framer-motion/dist/es/render/utils/variant-props.mjs","../node_modules/framer-motion/dist/es/render/html/utils/transform.mjs","../node_modules/framer-motion/dist/es/utils/time-conversion.mjs","../node_modules/framer-motion/dist/es/animation/utils/default-transitions.mjs","../node_modules/framer-motion/dist/es/animation/utils/transitions.mjs","../node_modules/framer-motion/dist/es/utils/GlobalConfig.mjs","../node_modules/framer-motion/dist/es/utils/use-instant-transition-state.mjs","../node_modules/framer-motion/dist/es/animation/animators/waapi/utils/get-final-keyframe.mjs","../node_modules/framer-motion/dist/es/utils/noop.mjs","../node_modules/framer-motion/dist/es/frameloop/batcher.mjs","../node_modules/framer-motion/dist/es/frameloop/render-step.mjs","../node_modules/framer-motion/dist/es/frameloop/frame.mjs","../node_modules/framer-motion/dist/es/utils/is-zero-value-string.mjs","../node_modules/framer-motion/dist/es/animation/utils/is-none.mjs","../node_modules/framer-motion/dist/es/utils/errors.mjs","../node_modules/framer-motion/dist/es/utils/is-numerical-string.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/is-css-variable.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/css-variables-conversion.mjs","../node_modules/framer-motion/dist/es/utils/clamp.mjs","../node_modules/framer-motion/dist/es/value/types/numbers/index.mjs","../node_modules/framer-motion/dist/es/value/types/utils.mjs","../node_modules/framer-motion/dist/es/value/types/numbers/units.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/unit-conversion.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/test.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/dimensions.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/type-auto.mjs","../node_modules/framer-motion/dist/es/render/utils/KeyframesResolver.mjs","../node_modules/framer-motion/dist/es/value/types/color/utils.mjs","../node_modules/framer-motion/dist/es/value/types/color/rgba.mjs","../node_modules/framer-motion/dist/es/value/types/color/hex.mjs","../node_modules/framer-motion/dist/es/value/types/color/hsla.mjs","../node_modules/framer-motion/dist/es/value/types/color/index.mjs","../node_modules/framer-motion/dist/es/value/types/complex/index.mjs","../node_modules/framer-motion/dist/es/value/types/complex/filter.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/type-int.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/number.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/defaults.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/animatable-none.mjs","../node_modules/framer-motion/dist/es/render/html/utils/make-none-animatable.mjs","../node_modules/framer-motion/dist/es/render/dom/DOMKeyframesResolver.mjs","../node_modules/framer-motion/dist/es/utils/memo.mjs","../node_modules/framer-motion/dist/es/frameloop/sync-time.mjs","../node_modules/framer-motion/dist/es/animation/utils/is-animatable.mjs","../node_modules/framer-motion/dist/es/animation/animators/BaseAnimation.mjs","../node_modules/framer-motion/dist/es/animation/animators/utils/can-animate.mjs","../node_modules/framer-motion/dist/es/utils/velocity-per-second.mjs","../node_modules/framer-motion/dist/es/animation/generators/utils/velocity.mjs","../node_modules/framer-motion/dist/es/animation/generators/spring/find.mjs","../node_modules/framer-motion/dist/es/animation/generators/spring/index.mjs","../node_modules/framer-motion/dist/es/animation/generators/inertia.mjs","../node_modules/framer-motion/dist/es/easing/cubic-bezier.mjs","../node_modules/framer-motion/dist/es/easing/ease.mjs","../node_modules/framer-motion/dist/es/easing/modifiers/mirror.mjs","../node_modules/framer-motion/dist/es/easing/modifiers/reverse.mjs","../node_modules/framer-motion/dist/es/easing/circ.mjs","../node_modules/framer-motion/dist/es/easing/back.mjs","../node_modules/framer-motion/dist/es/easing/utils/map.mjs","../node_modules/framer-motion/dist/es/easing/anticipate.mjs","../node_modules/framer-motion/dist/es/utils/pipe.mjs","../node_modules/framer-motion/dist/es/utils/progress.mjs","../node_modules/framer-motion/dist/es/utils/mix/number.mjs","../node_modules/framer-motion/dist/es/utils/hsla-to-rgba.mjs","../node_modules/framer-motion/dist/es/utils/mix/immediate.mjs","../node_modules/framer-motion/dist/es/utils/mix/color.mjs","../node_modules/framer-motion/dist/es/utils/mix/visibility.mjs","../node_modules/framer-motion/dist/es/utils/mix/complex.mjs","../node_modules/framer-motion/dist/es/utils/mix/index.mjs","../node_modules/framer-motion/dist/es/utils/interpolate.mjs","../node_modules/framer-motion/dist/es/utils/offsets/default.mjs","../node_modules/framer-motion/dist/es/utils/offsets/fill.mjs","../node_modules/framer-motion/dist/es/animation/generators/keyframes.mjs","../node_modules/framer-motion/dist/es/easing/utils/is-easing-array.mjs","../node_modules/framer-motion/dist/es/utils/offsets/time.mjs","../node_modules/framer-motion/dist/es/animation/animators/drivers/driver-frameloop.mjs","../node_modules/framer-motion/dist/es/animation/animators/MainThreadAnimation.mjs","../node_modules/framer-motion/dist/es/animation/generators/utils/calc-duration.mjs","../node_modules/framer-motion/dist/es/animation/animators/utils/accelerated-values.mjs","../node_modules/framer-motion/dist/es/easing/utils/is-bezier-definition.mjs","../node_modules/framer-motion/dist/es/animation/animators/waapi/easing.mjs","../node_modules/framer-motion/dist/es/animation/animators/AcceleratedAnimation.mjs","../node_modules/framer-motion/dist/es/animation/animators/waapi/index.mjs","../node_modules/framer-motion/dist/es/render/dom/scroll/supports.mjs","../node_modules/framer-motion/dist/es/animation/GroupPlaybackControls.mjs","../node_modules/framer-motion/dist/es/render/dom/scroll/observe.mjs","../node_modules/framer-motion/dist/es/animation/interfaces/motion-value.mjs","../node_modules/framer-motion/dist/es/utils/resolve-value.mjs","../node_modules/framer-motion/dist/es/utils/array.mjs","../node_modules/framer-motion/dist/es/utils/subscription-manager.mjs","../node_modules/framer-motion/dist/es/value/index.mjs","../node_modules/framer-motion/dist/es/render/utils/setters.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/camel-to-dash.mjs","../node_modules/framer-motion/dist/es/animation/optimized-appear/data-id.mjs","../node_modules/framer-motion/dist/es/animation/optimized-appear/get-appear-id.mjs","../node_modules/framer-motion/dist/es/value/use-will-change/get-will-change-name.mjs","../node_modules/framer-motion/dist/es/value/use-will-change/WillChangeMotionValue.mjs","../node_modules/framer-motion/dist/es/value/utils/is-motion-value.mjs","../node_modules/framer-motion/dist/es/value/use-will-change/add-will-change.mjs","../node_modules/framer-motion/dist/es/value/use-will-change/is.mjs","../node_modules/framer-motion/dist/es/animation/interfaces/visual-element-target.mjs","../node_modules/framer-motion/dist/es/animation/interfaces/visual-element-variant.mjs","../node_modules/framer-motion/dist/es/render/utils/animation-state.mjs","../node_modules/framer-motion/dist/es/animation/interfaces/visual-element.mjs","../node_modules/framer-motion/dist/es/motion/features/Feature.mjs","../node_modules/framer-motion/dist/es/motion/features/animation/exit.mjs","../node_modules/framer-motion/dist/es/motion/features/animations.mjs","../node_modules/framer-motion/dist/es/motion/features/animation/index.mjs","../node_modules/framer-motion/dist/es/events/utils/is-primary-pointer.mjs","../node_modules/framer-motion/dist/es/events/event-info.mjs","../node_modules/framer-motion/dist/es/events/add-dom-event.mjs","../node_modules/framer-motion/dist/es/events/add-pointer-event.mjs","../node_modules/framer-motion/dist/es/utils/distance.mjs","../node_modules/framer-motion/dist/es/gestures/pan/PanSession.mjs","../node_modules/framer-motion/dist/es/gestures/drag/utils/lock.mjs","../node_modules/framer-motion/dist/es/utils/is-ref-object.mjs","../node_modules/framer-motion/dist/es/projection/geometry/delta-calc.mjs","../node_modules/framer-motion/dist/es/gestures/drag/utils/constraints.mjs","../node_modules/framer-motion/dist/es/projection/geometry/models.mjs","../node_modules/framer-motion/dist/es/projection/utils/each-axis.mjs","../node_modules/framer-motion/dist/es/projection/geometry/conversion.mjs","../node_modules/framer-motion/dist/es/projection/utils/has-transform.mjs","../node_modules/framer-motion/dist/es/projection/geometry/delta-apply.mjs","../node_modules/framer-motion/dist/es/projection/utils/measure.mjs","../node_modules/framer-motion/dist/es/utils/get-context-window.mjs","../node_modules/framer-motion/dist/es/gestures/drag/VisualElementDragControls.mjs","../node_modules/framer-motion/dist/es/gestures/pan/index.mjs","../node_modules/framer-motion/dist/es/context/PresenceContext.mjs","../node_modules/framer-motion/dist/es/context/LayoutGroupContext.mjs","../node_modules/framer-motion/dist/es/context/SwitchLayoutGroupContext.mjs","../node_modules/framer-motion/dist/es/projection/node/state.mjs","../node_modules/framer-motion/dist/es/projection/styles/scale-border-radius.mjs","../node_modules/framer-motion/dist/es/projection/styles/scale-box-shadow.mjs","../node_modules/framer-motion/dist/es/projection/styles/scale-correction.mjs","../node_modules/framer-motion/dist/es/frameloop/microtask.mjs","../node_modules/framer-motion/dist/es/motion/features/layout/MeasureLayout.mjs","../node_modules/framer-motion/dist/es/components/AnimatePresence/use-presence.mjs","../node_modules/framer-motion/dist/es/projection/animation/mix-values.mjs","../node_modules/framer-motion/dist/es/projection/geometry/copy.mjs","../node_modules/framer-motion/dist/es/projection/geometry/delta-remove.mjs","../node_modules/framer-motion/dist/es/projection/geometry/utils.mjs","../node_modules/framer-motion/dist/es/projection/shared/stack.mjs","../node_modules/framer-motion/dist/es/render/utils/compare-by-depth.mjs","../node_modules/framer-motion/dist/es/render/utils/flat-tree.mjs","../node_modules/framer-motion/dist/es/value/utils/resolve-motion-value.mjs","../node_modules/framer-motion/dist/es/projection/node/create-projection-node.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/is-svg-element.mjs","../node_modules/framer-motion/dist/es/utils/delay.mjs","../node_modules/framer-motion/dist/es/animation/interfaces/single-value.mjs","../node_modules/framer-motion/dist/es/projection/styles/transform.mjs","../node_modules/framer-motion/dist/es/projection/node/DocumentProjectionNode.mjs","../node_modules/framer-motion/dist/es/projection/node/HTMLProjectionNode.mjs","../node_modules/framer-motion/dist/es/motion/features/drag.mjs","../node_modules/framer-motion/dist/es/gestures/drag/index.mjs","../node_modules/framer-motion/dist/es/gestures/hover.mjs","../node_modules/framer-motion/dist/es/gestures/utils/is-node-or-child.mjs","../node_modules/framer-motion/dist/es/gestures/press.mjs","../node_modules/framer-motion/dist/es/motion/features/viewport/observers.mjs","../node_modules/framer-motion/dist/es/motion/features/viewport/index.mjs","../node_modules/framer-motion/dist/es/motion/features/gestures.mjs","../node_modules/framer-motion/dist/es/gestures/focus.mjs","../node_modules/framer-motion/dist/es/motion/features/layout.mjs","../node_modules/framer-motion/dist/es/context/MotionConfigContext.mjs","../node_modules/framer-motion/dist/es/context/MotionContext/index.mjs","../node_modules/framer-motion/dist/es/utils/is-browser.mjs","../node_modules/framer-motion/dist/es/utils/use-isomorphic-effect.mjs","../node_modules/framer-motion/dist/es/context/LazyContext.mjs","../node_modules/framer-motion/dist/es/motion/utils/use-visual-element.mjs","../node_modules/framer-motion/dist/es/motion/utils/use-motion-ref.mjs","../node_modules/framer-motion/dist/es/render/utils/is-controlling-variants.mjs","../node_modules/framer-motion/dist/es/context/MotionContext/create.mjs","../node_modules/framer-motion/dist/es/context/MotionContext/utils.mjs","../node_modules/framer-motion/dist/es/motion/features/definitions.mjs","../node_modules/framer-motion/dist/es/motion/utils/symbol.mjs","../node_modules/framer-motion/dist/es/motion/index.mjs","../node_modules/framer-motion/dist/es/motion/features/load-features.mjs","../node_modules/framer-motion/dist/es/render/svg/lowercase-elements.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/is-svg-component.mjs","../node_modules/framer-motion/dist/es/render/html/utils/render.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/camel-case-attrs.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/render.mjs","../node_modules/framer-motion/dist/es/motion/utils/is-forced-motion-value.mjs","../node_modules/framer-motion/dist/es/render/html/utils/scrape-motion-values.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/scrape-motion-values.mjs","../node_modules/framer-motion/dist/es/motion/utils/use-visual-state.mjs","../node_modules/framer-motion/dist/es/utils/use-constant.mjs","../node_modules/framer-motion/dist/es/render/html/utils/create-render-state.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/create-render-state.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/get-as-type.mjs","../node_modules/framer-motion/dist/es/render/html/utils/build-transform.mjs","../node_modules/framer-motion/dist/es/render/html/utils/build-styles.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/transform-origin.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/path.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/build-attrs.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/is-svg-tag.mjs","../node_modules/framer-motion/dist/es/render/svg/config-motion.mjs","../node_modules/framer-motion/dist/es/render/html/config-motion.mjs","../node_modules/framer-motion/dist/es/render/html/use-props.mjs","../node_modules/framer-motion/dist/es/motion/utils/valid-prop.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/filter-props.mjs","../node_modules/framer-motion/dist/es/render/svg/use-props.mjs","../node_modules/framer-motion/dist/es/render/dom/use-render.mjs","../node_modules/framer-motion/dist/es/render/components/create-factory.mjs","../node_modules/framer-motion/dist/es/utils/reduced-motion/state.mjs","../node_modules/framer-motion/dist/es/render/store.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/find.mjs","../node_modules/framer-motion/dist/es/render/VisualElement.mjs","../node_modules/framer-motion/dist/es/utils/reduced-motion/index.mjs","../node_modules/framer-motion/dist/es/render/utils/motion-values.mjs","../node_modules/framer-motion/dist/es/render/dom/DOMVisualElement.mjs","../node_modules/framer-motion/dist/es/render/html/HTMLVisualElement.mjs","../node_modules/framer-motion/dist/es/render/svg/SVGVisualElement.mjs","../node_modules/framer-motion/dist/es/render/dom/create-visual-element.mjs","../node_modules/framer-motion/dist/es/render/components/motion/proxy.mjs","../node_modules/framer-motion/dist/es/render/components/motion/create.mjs","helpers/animation.js","helpers/reponseErr.js","helpers/custom-hooks/selectedType.js","components/SelectedProject/selected-project.style.js","helpers/custom-hooks/windowDimension.js","../node_modules/dequal/dist/index.mjs","../node_modules/use-deep-compare-effect/dist/use-deep-compare-effect.esm.js","components/SelectedProject/selected-filters.js","components/SelectedProject/selected-project.js","components/SelectedProject/selected-release.js","components/SelectedProject/index.js","components/cloud-counter/SelectedProject/selected-project.style.js","components/cloud-counter/SelectedProject/selected-project.js","components/cloud-counter/SelectedProject/index.js","components/cloud-counter/CloudContent/cloud-content.js","../node_modules/@atlaskit/tokens/dist/esm/constants.js","../node_modules/@atlaskit/primitives/dist/esm/xcss/style-maps.partial.js","../node_modules/@atlaskit/primitives/dist/esm/xcss/xcss.js","../node_modules/@atlaskit/primitives/dist/esm/components/internal/surface-provider.js","../node_modules/@atlaskit/primitives/dist/esm/components/box.js","../node_modules/@atlaskit/primitives/dist/esm/components/flex.js","../node_modules/@atlaskit/primitives/dist/esm/components/inline.js","../node_modules/@atlaskit/theme/dist/esm/colors.js","../node_modules/@atlaskit/banner/dist/esm/components/banner.js","../node_modules/react-icons/lib/iconContext.mjs","../node_modules/react-icons/lib/iconBase.mjs","../node_modules/react-icons/si/index.mjs","../node_modules/react-icons/fa/index.mjs","../node_modules/react-icons/vsc/index.mjs","../node_modules/fflate/esm/browser.js","../node_modules/jspdf/src/libs/globalObject.js","../node_modules/jspdf/src/libs/console.js","../node_modules/jspdf/src/libs/FileSaver.js","../node_modules/jspdf/src/libs/AtobBtoa.js","../node_modules/jspdf/src/libs/rgbcolor.js","../node_modules/jspdf/src/libs/md5.js","../node_modules/jspdf/src/libs/rc4.js","../node_modules/jspdf/src/libs/pdfsecurity.js","../node_modules/jspdf/src/libs/pdfname.js","../node_modules/jspdf/src/jspdf.js","../node_modules/jspdf/src/modules/acroform.js","../node_modules/jspdf/src/libs/fontFace.js","../node_modules/jspdf/src/modules/addimage.js","../node_modules/jspdf/src/modules/annotations.js","../node_modules/jspdf/src/modules/arabic.js","../node_modules/jspdf/src/modules/autoprint.js","../node_modules/jspdf/src/modules/canvas.js","../node_modules/jspdf/src/modules/cell.js","../node_modules/jspdf/src/modules/javascript.js","../node_modules/jspdf/src/modules/context2d.js","../node_modules/jspdf/src/modules/filters.js","../node_modules/jspdf/src/modules/fileloading.js","../node_modules/jspdf/src/modules/html.js","../node_modules/jspdf/src/modules/outline.js","../node_modules/jspdf/src/modules/jpeg_support.js","../node_modules/jspdf/src/libs/png.js","../node_modules/jspdf/src/modules/split_text_to_size.js","../node_modules/jspdf/src/libs/omggif.js","../node_modules/jspdf/src/libs/JPEGEncoder.js","../node_modules/jspdf/src/libs/BMPDecoder.js","../node_modules/jspdf/src/libs/WebPDecoder.js","../node_modules/jspdf/src/modules/png_support.js","../node_modules/jspdf/src/modules/gif_support.js","../node_modules/jspdf/src/modules/bmp_support.js","../node_modules/jspdf/src/modules/webp_support.js","../node_modules/jspdf/src/modules/rgba_support.js","../node_modules/jspdf/src/modules/setlanguage.js","../node_modules/jspdf/src/modules/standard_fonts_metrics.js","../node_modules/jspdf/src/modules/ttfsupport.js","../node_modules/jspdf/src/modules/svg.js","../node_modules/jspdf/src/modules/total_pages.js","../node_modules/jspdf/src/modules/viewerpreferences.js","../node_modules/jspdf/src/modules/xmp_metadata.js","../node_modules/jspdf/src/modules/utf8.js","../node_modules/jspdf/src/modules/vfs.js","../node_modules/jspdf/src/libs/bidiEngine.js","../node_modules/jspdf/src/libs/ttffont.js","utils/util.ts","../node_modules/xlsx/xlsx.mjs","components/exports/exports.js","webpack://migration-demo-frontend/./src/components/Table/table.module.scss?3b76","components/Table/table.jsx","webpack://migration-demo-frontend/./src/components/previous-counts/previous-counts.module.scss?69a1","components/previous-counts/previous-counts.jsx","../node_modules/@kurkle/color/dist/color.esm.js","../node_modules/chart.js/src/helpers/helpers.core.ts","../node_modules/chart.js/src/helpers/helpers.math.ts","../node_modules/chart.js/src/helpers/helpers.collection.ts","../node_modules/chart.js/src/helpers/helpers.extras.ts","../node_modules/chart.js/src/helpers/helpers.easing.ts","../node_modules/chart.js/src/helpers/helpers.color.ts","../node_modules/chart.js/src/core/core.animations.defaults.js","../node_modules/chart.js/src/helpers/helpers.intl.ts","../node_modules/chart.js/src/core/core.ticks.js","../node_modules/chart.js/src/core/core.defaults.js","../node_modules/chart.js/src/core/core.layouts.defaults.js","../node_modules/chart.js/src/core/core.scale.defaults.js","../node_modules/chart.js/src/helpers/helpers.canvas.ts","../node_modules/chart.js/src/helpers/helpers.options.ts","../node_modules/chart.js/src/helpers/helpers.config.ts","../node_modules/chart.js/src/helpers/helpers.curve.ts","../node_modules/chart.js/src/helpers/helpers.dom.ts","../node_modules/chart.js/src/helpers/helpers.rtl.ts","../node_modules/chart.js/src/core/core.animator.js","../node_modules/chart.js/src/core/core.animation.js","../node_modules/chart.js/src/core/core.animations.js","../node_modules/chart.js/src/core/core.datasetController.js","../node_modules/chart.js/src/controllers/controller.bar.js","../node_modules/chart.js/src/core/core.adapters.ts","../node_modules/chart.js/src/core/core.interaction.js","../node_modules/chart.js/src/core/core.layouts.js","../node_modules/chart.js/src/platform/platform.base.js","../node_modules/chart.js/src/platform/platform.basic.js","../node_modules/chart.js/src/platform/platform.dom.js","../node_modules/chart.js/src/core/core.element.ts","../node_modules/chart.js/src/core/core.scale.autoskip.js","../node_modules/chart.js/src/core/core.scale.js","../node_modules/chart.js/src/core/core.typedRegistry.js","../node_modules/chart.js/src/core/core.registry.js","../node_modules/chart.js/src/core/core.plugins.js","../node_modules/chart.js/src/core/core.config.js","../node_modules/chart.js/src/core/core.controller.js","../node_modules/chart.js/src/platform/index.js","../node_modules/chart.js/src/elements/element.bar.js","../node_modules/chart.js/src/plugins/plugin.legend.js","../node_modules/chart.js/src/plugins/plugin.title.js","../node_modules/chart.js/src/plugins/plugin.subtitle.js","../node_modules/chart.js/src/plugins/plugin.tooltip.js","../node_modules/chart.js/src/scales/scale.category.js","../node_modules/chart.js/src/scales/scale.linearbase.js","../node_modules/chart.js/src/scales/scale.linear.js","../node_modules/chart.js/src/scales/scale.logarithmic.js","../node_modules/chart.js/src/scales/scale.radialLinear.js","../node_modules/chart.js/src/scales/scale.time.js","../node_modules/react-chartjs-2/src/utils.ts","../node_modules/react-chartjs-2/src/chart.tsx","../node_modules/react-chartjs-2/src/typedCharts.tsx","components/bar-chart/bar-chart.jsx","components/jira-service-desk-counts/jira-service-desk-counts.js","components/jira-software-counts/jira-software-counts.js","components/scheme-counts/scheme-counts.js","components/attachments/attachments.js","store/cloud-counter/CloudCounterSlice.js","../node_modules/clsx/dist/clsx.mjs","assets/Icons/Vector.svg","components/ScrollIndicatorButton/ScrollIndicatorButton.js","components/cloud-counter/CloudContent/index.js","pages/cloud-counter/cloudCounter.style.js","pages/cloud-counter/index.js","pages/Dashboard/index.js","pages/Landing Page/index.js","components/ReportForm/ReportForm.js","pages/Visualize Community/view-report.js","components/Report/Report.js","components/SearchBar/SearchBar.js","components/placeholder/placeholder.js","pages/Visualize Community/index.js","helpers/errorBoundary.js","helpers/storageError.js","../node_modules/@ant-design/icons-svg/es/asn/ProjectFilled.js","../node_modules/@ant-design/icons/es/icons/ProjectFilled.js","../node_modules/@ant-design/icons-svg/es/asn/PullRequestOutlined.js","../node_modules/@ant-design/icons/es/icons/PullRequestOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/FilterFilled.js","../node_modules/@ant-design/icons/es/icons/FilterFilled.js","helpers/custom-hooks/visualize.js","components/DashboardScreens/ReleaseVisualize.js","helpers/custom-hooks/filters.js","components/DashboardScreens/FiltersVisualize.js","pages/Clone/cone.style.js","components/MiniCard/minicard.style.js","components/MiniCard/index.js","pages/Landing/index.js","assets/Icons/download.svg","helpers/custom-hooks/extract.js","pages/Extract/index.js","pages/Clone/CloneSuccess.js","assets/Icons/copy.svg","helpers/custom-hooks/clone.js","pages/Clone/CloneProject.js","pages/Clone/index.js","../node_modules/rc-util/es/isMobile.js","../node_modules/rc-select/es/TransBtn.js","../node_modules/rc-select/es/hooks/useAllowClear.js","../node_modules/rc-select/es/hooks/useBaseProps.js","../node_modules/rc-select/es/hooks/useLock.js","../node_modules/rc-resize-observer/es/Collection.js","../node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","../node_modules/rc-resize-observer/es/utils/observerUtil.js","../node_modules/rc-resize-observer/es/SingleObserver/DomWrapper.js","../node_modules/rc-resize-observer/es/SingleObserver/index.js","../node_modules/rc-resize-observer/es/index.js","../node_modules/rc-overflow/es/Item.js","../node_modules/rc-overflow/es/hooks/useEffectState.js","../node_modules/rc-overflow/es/hooks/channelUpdate.js","../node_modules/rc-overflow/es/context.js","../node_modules/rc-overflow/es/RawItem.js","../node_modules/rc-overflow/es/Overflow.js","../node_modules/rc-overflow/es/index.js","../node_modules/rc-select/es/Selector/Input.js","../node_modules/rc-select/es/utils/commonUtil.js","../node_modules/rc-select/es/Selector/MultipleSelector.js","../node_modules/rc-select/es/hooks/useLayoutEffect.js","../node_modules/rc-select/es/Selector/SingleSelector.js","../node_modules/rc-select/es/Selector/index.js","../node_modules/rc-select/es/utils/keyUtil.js","../node_modules/@rc-component/trigger/es/Popup/Arrow.js","../node_modules/@rc-component/trigger/es/Popup/Mask.js","../node_modules/@rc-component/trigger/es/Popup/PopupContent.js","../node_modules/@rc-component/trigger/es/Popup/index.js","../node_modules/@rc-component/trigger/es/TriggerWrapper.js","../node_modules/@rc-component/trigger/es/context.js","../node_modules/@rc-component/trigger/es/hooks/useAction.js","../node_modules/@rc-component/trigger/es/util.js","../node_modules/@rc-component/trigger/es/hooks/useAlign.js","../node_modules/@rc-component/trigger/es/index.js","../node_modules/@rc-component/trigger/es/hooks/useWatch.js","../node_modules/@rc-component/trigger/es/hooks/useWinClick.js","../node_modules/rc-select/es/SelectTrigger.js","../node_modules/rc-select/es/utils/valueUtil.js","../node_modules/rc-select/es/SelectContext.js","../node_modules/rc-select/es/BaseSelect/Polite.js","../node_modules/rc-select/es/BaseSelect/index.js","../node_modules/rc-select/es/hooks/useDelayReset.js","../node_modules/rc-select/es/hooks/useSelectTriggerControl.js","../node_modules/rc-select/es/OptGroup.js","../node_modules/rc-select/es/Option.js","../node_modules/rc-virtual-list/es/Filler.js","../node_modules/rc-virtual-list/es/Item.js","../node_modules/rc-virtual-list/es/hooks/useDiffItem.js","../node_modules/rc-virtual-list/es/utils/algorithmUtil.js","../node_modules/rc-virtual-list/es/utils/isFirefox.js","../node_modules/rc-virtual-list/es/hooks/useOriginScroll.js","../node_modules/rc-virtual-list/es/hooks/useFrameWheel.js","../node_modules/rc-virtual-list/es/utils/CacheMap.js","../node_modules/rc-virtual-list/es/hooks/useMobileTouchMove.js","../node_modules/rc-virtual-list/es/ScrollBar.js","../node_modules/rc-virtual-list/es/utils/scrollbarUtil.js","../node_modules/rc-virtual-list/es/List.js","../node_modules/rc-virtual-list/es/hooks/useHeights.js","../node_modules/rc-virtual-list/es/hooks/useScrollTo.js","../node_modules/rc-virtual-list/es/hooks/useGetSize.js","../node_modules/rc-virtual-list/es/hooks/useChildren.js","../node_modules/rc-virtual-list/es/index.js","../node_modules/rc-select/es/OptionList.js","../node_modules/rc-select/es/utils/platformUtil.js","../node_modules/rc-select/es/hooks/useFilterOptions.js","../node_modules/rc-select/es/hooks/useId.js","../node_modules/rc-select/es/utils/legacyUtil.js","../node_modules/rc-select/es/hooks/useOptions.js","../node_modules/rc-select/es/hooks/useRefFunc.js","../node_modules/rc-select/es/Select.js","../node_modules/rc-select/es/hooks/useCache.js","../node_modules/rc-select/es/index.js","../node_modules/antd/es/empty/empty.js","../node_modules/antd/es/empty/simple.js","../node_modules/antd/es/empty/style/index.js","../node_modules/antd/es/empty/index.js","../node_modules/antd/es/config-provider/defaultRenderEmpty.js","../node_modules/antd/es/form/hooks/useVariants.js","../node_modules/antd/es/select/mergedBuiltinPlacements.js","../node_modules/antd/es/style/motion/slide.js","../node_modules/antd/es/style/motion/move.js","../node_modules/antd/es/select/style/dropdown.js","../node_modules/antd/es/select/style/multiple.js","../node_modules/antd/es/select/style/single.js","../node_modules/antd/es/select/style/token.js","../node_modules/antd/es/select/style/variants.js","../node_modules/antd/es/select/style/index.js","../node_modules/@ant-design/icons-svg/es/asn/CheckOutlined.js","../node_modules/@ant-design/icons/es/icons/CheckOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/DownOutlined.js","../node_modules/@ant-design/icons/es/icons/DownOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/SearchOutlined.js","../node_modules/@ant-design/icons/es/icons/SearchOutlined.js","../node_modules/antd/es/select/index.js","../node_modules/antd/es/select/useShowArrow.js","../node_modules/antd/es/_util/statusUtils.js","../node_modules/antd/es/select/useIcons.js","../node_modules/@antv/g2plot/node_modules/@antv/util/src/is-array-like.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/contains.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/filter.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/difference.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/is-type.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/is-function.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/is-nil.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/is-array.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/is-object.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/each.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/keys.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/is-match.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/is-object-like.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/is-plain-object.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/find.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/find-index.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/first-value.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/flatten.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/flatten-deep.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/max.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/min.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/get-range.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/pull.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/pull-at.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/reduce.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/remove.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/is-string.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/sort-by.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/uniq.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/values-of-key.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/head.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/last.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/every.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/some.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/group-by.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/clamp.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/fixed-base.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/is-number.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/is-integer.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/is-number-equal.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/is-positive.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/max-by.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/mod.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/to-degree.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/to-radian.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/for-in.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/has-key.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/has.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/values.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/to-string.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/lower-case.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/substitute.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/upper-first.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/get-type.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/is-boolean.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/is-date.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/is-null.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/is-prototype.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/is-undefined.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/is-element.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/clone.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/debounce.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/memoize.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/deep-mix.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/index-of.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/is-empty.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/is-equal.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/map.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/mix.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/get.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/set.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/pick.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/omit.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/throttle.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/unique-id.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/noop.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/size.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/measure-text-width.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/get-ellipsis-text.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/cache.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/constant.ts","../node_modules/@antv/dom-util/src/create-dom.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/engine/index.ts","../node_modules/@antv/dom-util/src/modify-css.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/util/dom.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/base.ts","../node_modules/@antv/adjust/node_modules/@antv/util/src/is-type.ts","../node_modules/@antv/adjust/node_modules/@antv/util/src/is-function.ts","../node_modules/@antv/adjust/node_modules/@antv/util/src/is-array.ts","../node_modules/@antv/adjust/node_modules/@antv/util/src/is-object.ts","../node_modules/@antv/adjust/node_modules/@antv/util/src/each.ts","../node_modules/@antv/adjust/node_modules/@antv/util/src/keys.ts","../node_modules/@antv/adjust/node_modules/@antv/util/src/flatten.ts","../node_modules/@antv/adjust/node_modules/@antv/util/src/pull.ts","../node_modules/@antv/adjust/node_modules/@antv/util/src/pull-at.ts","../node_modules/@antv/adjust/node_modules/@antv/util/src/remove.ts","../node_modules/@antv/adjust/node_modules/@antv/util/src/is-string.ts","../node_modules/@antv/adjust/node_modules/@antv/util/src/is-nil.ts","../node_modules/@antv/adjust/node_modules/@antv/util/src/values-of-key.ts","../node_modules/@antv/adjust/node_modules/@antv/util/src/group-by.ts","../node_modules/@antv/adjust/node_modules/@antv/util/src/group.ts","../node_modules/@antv/adjust/node_modules/@antv/util/src/group-to-map.ts","../node_modules/@antv/adjust/node_modules/@antv/util/src/is-number.ts","../node_modules/@antv/adjust/node_modules/@antv/util/src/is-integer.ts","../node_modules/@antv/adjust/node_modules/@antv/util/src/to-degree.ts","../node_modules/@antv/adjust/node_modules/@antv/util/src/to-radian.ts","../node_modules/@antv/adjust/node_modules/@antv/util/src/values.ts","../node_modules/@antv/adjust/node_modules/@antv/util/src/is-prototype.ts","../node_modules/@antv/adjust/node_modules/@antv/util/src/clone.ts","../node_modules/@antv/adjust/node_modules/@antv/util/src/is-empty.ts","../node_modules/@antv/adjust/node_modules/@antv/util/src/is-array-like.ts","../node_modules/@antv/adjust/node_modules/@antv/util/src/map.ts","../node_modules/@antv/adjust/node_modules/@antv/util/src/map-values.ts","../node_modules/@antv/adjust/node_modules/@antv/util/src/mix.ts","../node_modules/@antv/adjust/node_modules/@antv/util/src/get.ts","../node_modules/@antv/adjust/node_modules/@antv/util/src/pick.ts","../node_modules/@antv/adjust/node_modules/@antv/util/node_modules/tslib/tslib.es6.mjs","../node_modules/@antv/adjust/node_modules/@antv/util/src/measure-text-width.ts","../node_modules/@antv/adjust/node_modules/@antv/util/src/memoize.ts","../node_modules/@antv/adjust/node_modules/@antv/util/src/cache.ts","../node_modules/@antv/adjust/src/constant.ts","../node_modules/@antv/adjust/src/adjusts/adjust.ts","../node_modules/@antv/adjust/src/factory.ts","../node_modules/@antv/adjust/node_modules/tslib/tslib.es6.js","../node_modules/@antv/adjust/src/adjusts/dodge.ts","../node_modules/@antv/adjust/src/adjusts/jitter.ts","../node_modules/@antv/adjust/src/adjusts/stack.ts","../node_modules/@antv/adjust/src/adjusts/symmetric.ts","../node_modules/@antv/adjust/src/index.ts","../node_modules/@antv/attr/node_modules/@antv/util/src/is-type.ts","../node_modules/@antv/attr/node_modules/@antv/util/src/is-function.ts","../node_modules/@antv/attr/node_modules/@antv/util/src/is-array.ts","../node_modules/@antv/attr/node_modules/@antv/util/src/is-object.ts","../node_modules/@antv/attr/node_modules/@antv/util/src/each.ts","../node_modules/@antv/attr/node_modules/@antv/util/src/keys.ts","../node_modules/@antv/attr/node_modules/@antv/util/src/get-range.ts","../node_modules/@antv/attr/node_modules/@antv/util/src/max.ts","../node_modules/@antv/attr/node_modules/@antv/util/src/min.ts","../node_modules/@antv/attr/node_modules/@antv/util/src/pull.ts","../node_modules/@antv/attr/node_modules/@antv/util/src/pull-at.ts","../node_modules/@antv/attr/node_modules/@antv/util/src/remove.ts","../node_modules/@antv/attr/node_modules/@antv/util/src/is-string.ts","../node_modules/@antv/attr/node_modules/@antv/util/src/is-array-like.ts","../node_modules/@antv/attr/node_modules/@antv/util/src/head.ts","../node_modules/@antv/attr/node_modules/@antv/util/src/last.ts","../node_modules/@antv/attr/node_modules/@antv/util/src/filter.ts","../node_modules/@antv/attr/node_modules/@antv/util/src/group-by.ts","../node_modules/@antv/attr/node_modules/@antv/util/src/fixed-base.ts","../node_modules/@antv/attr/node_modules/@antv/util/src/is-number.ts","../node_modules/@antv/attr/node_modules/@antv/util/src/is-integer.ts","../node_modules/@antv/attr/node_modules/@antv/util/src/to-degree.ts","../node_modules/@antv/attr/node_modules/@antv/util/src/to-radian.ts","../node_modules/@antv/attr/node_modules/@antv/util/src/values.ts","../node_modules/@antv/attr/node_modules/@antv/util/src/get-type.ts","../node_modules/@antv/attr/node_modules/@antv/util/src/is-date.ts","../node_modules/@antv/attr/node_modules/@antv/util/src/is-nil.ts","../node_modules/@antv/attr/node_modules/@antv/util/src/is-prototype.ts","../node_modules/@antv/attr/node_modules/@antv/util/src/index-of.ts","../node_modules/@antv/attr/node_modules/@antv/util/src/is-empty.ts","../node_modules/@antv/attr/node_modules/@antv/util/src/map.ts","../node_modules/@antv/attr/node_modules/@antv/util/src/mix.ts","../node_modules/@antv/attr/node_modules/@antv/util/src/pick.ts","../node_modules/@antv/attr/node_modules/@antv/util/src/size.ts","../node_modules/@antv/attr/node_modules/@antv/util/src/measure-text-width.ts","../node_modules/@antv/attr/node_modules/@antv/util/src/memoize.ts","../node_modules/@antv/attr/node_modules/@antv/util/src/cache.ts","../node_modules/@antv/attr/src/attributes/base.ts","../node_modules/@antv/color-util/node_modules/@antv/util/src/is-type.ts","../node_modules/@antv/color-util/node_modules/@antv/util/src/is-function.ts","../node_modules/@antv/color-util/node_modules/@antv/util/src/each.ts","../node_modules/@antv/color-util/node_modules/@antv/util/src/is-array.ts","../node_modules/@antv/color-util/node_modules/@antv/util/src/is-object.ts","../node_modules/@antv/color-util/node_modules/@antv/util/src/keys.ts","../node_modules/@antv/color-util/node_modules/@antv/util/src/pull.ts","../node_modules/@antv/color-util/node_modules/@antv/util/src/pull-at.ts","../node_modules/@antv/color-util/node_modules/@antv/util/src/remove.ts","../node_modules/@antv/color-util/node_modules/@antv/util/src/is-string.ts","../node_modules/@antv/color-util/node_modules/@antv/util/src/group-by.ts","../node_modules/@antv/color-util/node_modules/@antv/util/src/is-number.ts","../node_modules/@antv/color-util/node_modules/@antv/util/src/is-integer.ts","../node_modules/@antv/color-util/node_modules/@antv/util/src/to-degree.ts","../node_modules/@antv/color-util/node_modules/@antv/util/src/to-radian.ts","../node_modules/@antv/color-util/node_modules/@antv/util/src/values.ts","../node_modules/@antv/color-util/node_modules/@antv/util/src/is-prototype.ts","../node_modules/@antv/color-util/node_modules/@antv/util/src/clone.ts","../node_modules/@antv/color-util/node_modules/@antv/util/src/memoize.ts","../node_modules/@antv/color-util/node_modules/@antv/util/src/is-empty.ts","../node_modules/@antv/color-util/node_modules/@antv/util/src/is-array-like.ts","../node_modules/@antv/color-util/node_modules/@antv/util/src/map.ts","../node_modules/@antv/color-util/node_modules/@antv/util/src/pick.ts","../node_modules/@antv/color-util/node_modules/@antv/util/src/measure-text-width.ts","../node_modules/@antv/color-util/node_modules/@antv/util/src/cache.ts","../node_modules/@antv/color-util/src/index.ts","../node_modules/@antv/attr/src/attributes/color.ts","../node_modules/@antv/attr/src/attributes/opacity.ts","../node_modules/@antv/attr/src/attributes/position.ts","../node_modules/@antv/attr/src/attributes/shape.ts","../node_modules/@antv/attr/src/attributes/size.ts","../node_modules/@antv/attr/node_modules/@antv/scale/src/tick-method/register.ts","../node_modules/@antv/attr/node_modules/@antv/scale/src/base.ts","../node_modules/@antv/attr/node_modules/@antv/scale/src/category/base.ts","../node_modules/fecha/src/fecha.ts","../node_modules/@antv/attr/node_modules/@antv/scale/src/util/time.ts","../node_modules/@antv/attr/node_modules/@antv/scale/src/util/bisector.ts","../node_modules/@antv/attr/node_modules/@antv/scale/src/category/time.ts","../node_modules/@antv/attr/node_modules/@antv/scale/src/continuous/base.ts","../node_modules/@antv/attr/node_modules/@antv/scale/src/continuous/linear.ts","../node_modules/@antv/attr/node_modules/@antv/scale/src/util/math.ts","../node_modules/@antv/attr/node_modules/@antv/scale/src/continuous/log.ts","../node_modules/@antv/attr/node_modules/@antv/scale/src/continuous/pow.ts","../node_modules/@antv/attr/node_modules/@antv/scale/src/continuous/time.ts","../node_modules/@antv/attr/node_modules/@antv/scale/src/continuous/quantize.ts","../node_modules/@antv/attr/node_modules/@antv/scale/src/continuous/quantile.ts","../node_modules/@antv/attr/node_modules/@antv/scale/src/factory.ts","../node_modules/@antv/attr/node_modules/@antv/scale/src/identity/index.ts","../node_modules/@antv/attr/node_modules/@antv/scale/src/tick-method/cat.ts","../node_modules/@antv/attr/node_modules/@antv/scale/src/util/d3-linear.ts","../node_modules/@antv/attr/node_modules/@antv/scale/src/util/interval.ts","../node_modules/@antv/attr/node_modules/@antv/scale/src/util/strict-limit.ts","../node_modules/@antv/attr/node_modules/@antv/scale/src/util/pretty-number.ts","../node_modules/@antv/attr/node_modules/@antv/scale/src/util/extended.ts","../node_modules/@antv/attr/node_modules/@antv/scale/src/util/pretty.ts","../node_modules/@antv/attr/node_modules/@antv/scale/src/tick-method/quantile.ts","../node_modules/@antv/attr/node_modules/@antv/scale/src/tick-method/time-pretty.ts","../node_modules/@antv/attr/node_modules/@antv/scale/src/tick-method/index.ts","../node_modules/@antv/attr/node_modules/@antv/scale/src/tick-method/time-cat.ts","../node_modules/@antv/attr/node_modules/@antv/scale/src/tick-method/linear.ts","../node_modules/@antv/attr/node_modules/@antv/scale/src/tick-method/r-prettry.ts","../node_modules/@antv/attr/node_modules/@antv/scale/src/tick-method/time.ts","../node_modules/@antv/attr/node_modules/@antv/scale/src/tick-method/log.ts","../node_modules/@antv/attr/node_modules/@antv/scale/src/tick-method/pow.ts","../node_modules/@antv/attr/node_modules/@antv/scale/src/tick-method/d3-linear.ts","../node_modules/@antv/attr/node_modules/@antv/scale/src/index.ts","../node_modules/@antv/attr/src/factory.ts","../node_modules/@antv/attr/src/index.ts","../node_modules/gl-matrix/esm/vec3.js","../node_modules/@antv/g2plot/node_modules/@antv/coord/src/coord/base.ts","../node_modules/@antv/g2plot/node_modules/@antv/coord/src/coord/cartesian.ts","../node_modules/@antv/g2plot/node_modules/@antv/coord/src/coord/helix.ts","../node_modules/@antv/g2plot/node_modules/@antv/coord/src/coord/polar.ts","../node_modules/@antv/g2plot/node_modules/@antv/coord/src/factory.ts","../node_modules/@antv/g2plot/node_modules/@antv/coord/src/index.ts","../node_modules/@antv/g2plot/node_modules/@antv/scale/src/tick-method/register.ts","../node_modules/@antv/g2plot/node_modules/@antv/scale/src/base.ts","../node_modules/@antv/g2plot/node_modules/@antv/scale/src/category/base.ts","../node_modules/@antv/g2plot/node_modules/@antv/scale/src/util/time.ts","../node_modules/@antv/g2plot/node_modules/@antv/scale/src/util/bisector.ts","../node_modules/@antv/g2plot/node_modules/@antv/scale/src/category/time.ts","../node_modules/@antv/g2plot/node_modules/@antv/scale/src/continuous/base.ts","../node_modules/@antv/g2plot/node_modules/@antv/scale/src/continuous/linear.ts","../node_modules/@antv/g2plot/node_modules/@antv/scale/src/util/math.ts","../node_modules/@antv/g2plot/node_modules/@antv/scale/src/continuous/log.ts","../node_modules/@antv/g2plot/node_modules/@antv/scale/src/continuous/pow.ts","../node_modules/@antv/g2plot/node_modules/@antv/scale/src/continuous/time.ts","../node_modules/@antv/g2plot/node_modules/@antv/scale/src/continuous/quantize.ts","../node_modules/@antv/g2plot/node_modules/@antv/scale/src/continuous/quantile.ts","../node_modules/@antv/g2plot/node_modules/@antv/scale/src/factory.ts","../node_modules/@antv/g2plot/node_modules/@antv/scale/src/identity/index.ts","../node_modules/@antv/g2plot/node_modules/@antv/scale/src/tick-method/cat.ts","../node_modules/@antv/g2plot/node_modules/@antv/scale/src/util/d3-linear.ts","../node_modules/@antv/g2plot/node_modules/@antv/scale/src/util/interval.ts","../node_modules/@antv/g2plot/node_modules/@antv/scale/src/util/strict-limit.ts","../node_modules/@antv/g2plot/node_modules/@antv/scale/src/util/pretty-number.ts","../node_modules/@antv/g2plot/node_modules/@antv/scale/src/util/extended.ts","../node_modules/@antv/g2plot/node_modules/@antv/scale/src/util/pretty.ts","../node_modules/@antv/g2plot/node_modules/@antv/scale/src/tick-method/quantile.ts","../node_modules/@antv/g2plot/node_modules/@antv/scale/src/tick-method/time-pretty.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/src/util/event.ts","../node_modules/@antv/g2plot/node_modules/@antv/scale/src/tick-method/index.ts","../node_modules/@antv/g2plot/node_modules/@antv/scale/src/tick-method/time-cat.ts","../node_modules/@antv/g2plot/node_modules/@antv/scale/src/tick-method/linear.ts","../node_modules/@antv/g2plot/node_modules/@antv/scale/src/tick-method/r-prettry.ts","../node_modules/@antv/g2plot/node_modules/@antv/scale/src/tick-method/time.ts","../node_modules/@antv/g2plot/node_modules/@antv/scale/src/tick-method/log.ts","../node_modules/@antv/g2plot/node_modules/@antv/scale/src/tick-method/pow.ts","../node_modules/@antv/g2plot/node_modules/@antv/scale/src/tick-method/d3-linear.ts","../node_modules/@antv/g2plot/node_modules/@antv/scale/src/index.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/src/util/matrix.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/src/util/util.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/src/abstract/component.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/src/abstract/group-component.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/src/util/text.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/src/util/label.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/src/util/graphic.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/src/util/theme.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/src/annotation/line.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/src/annotation/text.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/src/annotation/arc.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/src/annotation/region.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/src/annotation/image.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/src/annotation/data-marker.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/src/annotation/data-region.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/src/annotation/region-filter.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/src/annotation/shape.ts","../node_modules/@antv/dom-util/src/get-style.ts","../node_modules/@antv/dom-util/src/get-outer-width.ts","../node_modules/@antv/dom-util/src/get-width.ts","../node_modules/@antv/dom-util/src/get-outer-height.ts","../node_modules/@antv/dom-util/src/get-height.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/src/abstract/html-component.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/src/annotation/html.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/src/util/state.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/src/axis/base.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/src/axis/overlap/auto-ellipsis.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/src/axis/overlap/auto-hide.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/src/axis/overlap/auto-rotate.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/src/axis/line.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/src/axis/circle.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/src/crosshair/base.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/src/crosshair/line.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/src/crosshair/circle.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/src/crosshair/css-const.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/src/crosshair/html-theme.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/src/crosshair/html.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/src/grid/base.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/src/grid/circle.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/src/grid/line.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/src/legend/base.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/src/legend/category.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/src/legend/continuous.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/src/tooltip/css-const.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/src/tooltip/html-theme.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/src/tooltip/html.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/src/util/align.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/src/trend/constant.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/node_modules/@antv/path-util/src/catmull-rom-2-bezier.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/node_modules/@antv/path-util/src/parse-path-string.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/node_modules/@antv/path-util/src/process/arc-2-cubic.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/src/trend/path.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/src/trend/trend.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/src/slider/handler.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/src/slider/constant.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/src/slider/slider.ts","../node_modules/@antv/dom-util/src/add-event-listener.ts","../node_modules/@antv/g2plot/node_modules/@antv/component/src/scrollbar/scrollbar.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/dependents.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/util/graphics.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/util/helper.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/util/bbox.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/util/coordinate.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/util/scale.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/util/axis.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/facet/facet.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/facet/index.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/base.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/callback.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/register.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/shape/util/path.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/node_modules/@antv/path-util/src/parse-path-string.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/node_modules/@antv/path-util/src/process/arc-2-cubic.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/node_modules/@antv/path-util/src/point-in-polygon.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/node_modules/@antv/path-util/src/get-line-intersect.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/node_modules/@antv/path-util/src/is-polygons-intersect.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/util.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/context.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/interaction.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/grammar-interaction.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/index.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/theme/util/create-by-style-sheet.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/theme/style-sheet/light.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/theme/util/create-theme.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/theme/index.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/util/tooltip.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/util/padding.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/chart/controller/index.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/chart/controller/coordinate.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/chart/event.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/chart/layout/index.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/chart/util/scale-pool.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/chart/layout/padding-cal.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/chart/layout/auto.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/chart/util/sync-view-padding.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/chart/view.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/chart/chart.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/chart/controller/base.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/chart/controller/tooltip.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/animate/animation/index.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/animate/index.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/shape/constant.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/element/index.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/label/index.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/shape/base.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/util/group-data.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/group-to-map.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/util/is-model-change.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/util/parse-fields.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/util/diff.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/base.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/util/transform.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/label/util/index.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/component/update-label.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/component/labels.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/label/base.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/util/attr.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/util/marker.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/util/legend.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/shape/util/get-path-points.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/shape/util/get-style.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/shape/util/split-points.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/shape/line/util.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/shape/line/index.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/core.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/theme/style-sheet/dark.ts","../node_modules/@antv/g2plot/node_modules/@antv/g-canvas/src/util/util.ts","../node_modules/@antv/g2plot/node_modules/@antv/g-canvas/src/util/parse.ts","../node_modules/@antv/g2plot/node_modules/@antv/g-canvas/src/util/arc-params.ts","../node_modules/@antv/g2plot/node_modules/@antv/g-canvas/src/util/arrow.ts","../node_modules/@antv/g2plot/node_modules/@antv/g-canvas/src/util/draw.ts","../node_modules/@antv/g2plot/node_modules/@antv/g-canvas/src/group.ts","../node_modules/@antv/g2plot/node_modules/@antv/g-canvas/src/shape/base.ts","../node_modules/@antv/g2plot/node_modules/@antv/g-canvas/src/shape/circle.ts","../node_modules/@antv/g2plot/node_modules/@antv/g-canvas/src/shape/ellipse.ts","../node_modules/@antv/g2plot/node_modules/@antv/g-canvas/src/shape/image.ts","../node_modules/@antv/g2plot/node_modules/@antv/g-math/src/util.ts","../node_modules/@antv/g2plot/node_modules/@antv/g-math/src/line.ts","../node_modules/@antv/g2plot/node_modules/@antv/g-math/src/bezier.ts","../node_modules/@antv/g2plot/node_modules/@antv/g-math/src/quadratic.ts","../node_modules/@antv/g2plot/node_modules/@antv/g-math/src/cubic.ts","../node_modules/@antv/g2plot/node_modules/@antv/g-math/src/segments.ts","../node_modules/@antv/g2plot/node_modules/@antv/g-math/src/polyline.ts","../node_modules/@antv/g2plot/node_modules/@antv/g-canvas/src/util/in-stroke/line.ts","../node_modules/@antv/g2plot/node_modules/@antv/g-canvas/src/shape/line.ts","../node_modules/@antv/g2plot/node_modules/@antv/g-canvas/node_modules/@antv/path-util/src/parse-path.ts","../node_modules/@antv/g2plot/node_modules/@antv/g-canvas/node_modules/@antv/path-util/src/parse-path-string.ts","../node_modules/@antv/g2plot/node_modules/@antv/g-canvas/node_modules/@antv/path-util/src/path-2-absolute.ts","../node_modules/@antv/g2plot/node_modules/@antv/g-canvas/node_modules/@antv/path-util/src/process/arc-2-cubic.ts","../node_modules/@antv/g2plot/node_modules/@antv/g-canvas/node_modules/@antv/path-util/src/get-arc-params.ts","../node_modules/@antv/g2plot/node_modules/@antv/g-canvas/node_modules/@antv/path-util/src/path-2-segments.ts","../node_modules/@antv/g2plot/node_modules/@antv/g-canvas/src/shape/marker.ts","../node_modules/@antv/g2plot/node_modules/@antv/g-canvas/src/util/in-path/point-in-path.ts","../node_modules/@antv/g2plot/node_modules/@antv/g-canvas/src/util/in-path/polygon.ts","../node_modules/@antv/g2plot/node_modules/@antv/g-canvas/src/util/in-stroke/arc.ts","../node_modules/@antv/g2plot/node_modules/@antv/g-canvas/src/util/path.ts","../node_modules/@antv/g2plot/node_modules/@antv/g-canvas/src/shape/path.ts","../node_modules/@antv/g2plot/node_modules/@antv/g-canvas/src/util/in-stroke/polyline.ts","../node_modules/@antv/g2plot/node_modules/@antv/g-canvas/src/shape/polygon.ts","../node_modules/@antv/g2plot/node_modules/@antv/g-canvas/src/shape/polyline.ts","../node_modules/@antv/g2plot/node_modules/@antv/g-canvas/src/shape/rect.ts","../node_modules/@antv/g2plot/node_modules/@antv/g-canvas/src/util/in-stroke/rect-radius.ts","../node_modules/@antv/g2plot/node_modules/@antv/g-canvas/src/util/in-stroke/rect.ts","../node_modules/@antv/g2plot/node_modules/@antv/g-canvas/src/shape/text.ts","../node_modules/@antv/g2plot/node_modules/@antv/g-canvas/src/util/hit.ts","../node_modules/@antv/g2plot/node_modules/@antv/g-canvas/src/canvas.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/clear-animation-frame.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/request-animation-frame.ts","../node_modules/@antv/g2plot/node_modules/@antv/g-canvas/src/index.ts","../node_modules/@antv/g-svg/node_modules/@antv/util/src/is-type.ts","../node_modules/@antv/g-svg/node_modules/@antv/util/src/is-function.ts","../node_modules/@antv/g-svg/node_modules/@antv/util/src/is-array.ts","../node_modules/@antv/g-svg/node_modules/@antv/util/src/is-object.ts","../node_modules/@antv/g-svg/node_modules/@antv/util/src/each.ts","../node_modules/@antv/g-svg/node_modules/@antv/util/src/keys.ts","../node_modules/@antv/g-svg/node_modules/@antv/util/src/flatten-deep.ts","../node_modules/@antv/g-svg/node_modules/@antv/util/src/max.ts","../node_modules/@antv/g-svg/node_modules/@antv/util/src/min.ts","../node_modules/@antv/g-svg/node_modules/@antv/util/src/pull.ts","../node_modules/@antv/g-svg/node_modules/@antv/util/src/pull-at.ts","../node_modules/@antv/g-svg/node_modules/@antv/util/src/remove.ts","../node_modules/@antv/g-svg/node_modules/@antv/util/src/is-string.ts","../node_modules/@antv/g-svg/node_modules/@antv/util/src/group-by.ts","../node_modules/@antv/g-svg/node_modules/@antv/util/src/is-number.ts","../node_modules/@antv/g-svg/node_modules/@antv/util/src/is-integer.ts","../node_modules/@antv/g-svg/node_modules/@antv/util/src/mod.ts","../node_modules/@antv/g-svg/node_modules/@antv/util/src/to-degree.ts","../node_modules/@antv/g-svg/node_modules/@antv/util/src/to-radian.ts","../node_modules/@antv/g-svg/node_modules/@antv/util/src/values.ts","../node_modules/@antv/g-svg/node_modules/@antv/util/src/is-nil.ts","../node_modules/@antv/g-svg/node_modules/@antv/util/src/is-prototype.ts","../node_modules/@antv/g-svg/node_modules/@antv/util/src/is-empty.ts","../node_modules/@antv/g-svg/node_modules/@antv/util/src/pick.ts","../node_modules/@antv/g-svg/node_modules/@antv/util/src/is-array-like.ts","../node_modules/@antv/g-svg/node_modules/@antv/util/src/unique-id.ts","../node_modules/@antv/g-svg/node_modules/@antv/util/src/measure-text-width.ts","../node_modules/@antv/g-svg/node_modules/@antv/util/src/memoize.ts","../node_modules/@antv/g-svg/node_modules/@antv/util/src/cache.ts","../node_modules/@antv/g-svg/src/constant.ts","../node_modules/@antv/g-svg/src/util/dom.ts","../node_modules/@antv/g-svg/node_modules/@antv/util/src/to-array.ts","../node_modules/@antv/g-svg/src/util/svg.ts","../node_modules/@antv/g-svg/src/util/draw.ts","../node_modules/@antv/g-svg/src/group.ts","../node_modules/@antv/g-svg/src/shape/base.ts","../node_modules/@antv/g-svg/src/shape/circle.ts","../node_modules/@antv/g-svg/src/shape/dom.ts","../node_modules/@antv/g-svg/src/shape/ellipse.ts","../node_modules/@antv/g-svg/src/shape/image.ts","../node_modules/@antv/g-svg/node_modules/@antv/g-math/src/util.ts","../node_modules/@antv/g-svg/node_modules/@antv/g-math/src/line.ts","../node_modules/@antv/g-svg/node_modules/@antv/g-math/src/segments.ts","../node_modules/@antv/g-svg/node_modules/@antv/g-math/src/polyline.ts","../node_modules/@antv/g-svg/src/shape/line.ts","../node_modules/@antv/g-svg/src/shape/marker/symbols.ts","../node_modules/@antv/g-svg/src/shape/marker/index.ts","../node_modules/@antv/g-svg/src/shape/path.ts","../node_modules/@antv/g-svg/src/shape/polygon.ts","../node_modules/@antv/g-svg/src/shape/polyline.ts","../node_modules/@antv/g-svg/src/shape/rect.ts","../node_modules/@antv/g-svg/src/util/format.ts","../node_modules/@antv/g-svg/src/shape/text.ts","../node_modules/@antv/g-svg/src/defs/gradient.ts","../node_modules/@antv/g-svg/src/defs/shadow.ts","../node_modules/@antv/g-svg/src/defs/arrow.ts","../node_modules/@antv/g-svg/src/defs/clip.ts","../node_modules/@antv/g-svg/src/defs/pattern.ts","../node_modules/@antv/g-svg/src/defs/index.ts","../node_modules/@antv/g-svg/src/canvas.ts","../node_modules/@antv/g-svg/src/index.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/path.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/shape/area/util.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/shape/area/index.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/area.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/shape/edge/index.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/edge.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/heatmap.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/shape/interval/util.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/shape/interval/index.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/util/shape-size.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/interval.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/line.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/shape/point/util.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/shape/point/index.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/point.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/shape/polygon/index.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/polygon.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/shape/schema/index.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/schema.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/shape/violin/index.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/violin.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/shape/edge/util.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/shape/area/line.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/shape/area/smooth.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/shape/area/smooth-line.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/shape/edge/arc.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/shape/edge/smooth.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/shape/edge/vhv.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/shape/interval/funnel.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/shape/interval/hollow-rect.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/shape/interval/line.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/shape/interval/pyramid.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/shape/interval/tick.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/shape/line/step.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/shape/schema/box.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/shape/schema/candle.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/shape/polygon/square.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/shape/point/hollow.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/shape/point/image.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/shape/point/solid.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/shape/violin/smooth.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/shape/violin/hollow.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/label/interval.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/label/polar.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/label/pie.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/label/layout/pie/util.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/label/layout/overlap.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/util/collision-detect.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/label/util/createWorker.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/label/layout/worker/hide-overlap.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/label/layout/hide-overlap.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/util/color.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/util/context.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/label/layout/interval/adjust-position.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/label/layout/point/adjust-position.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/label/layout/path/adjust-position.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/util/text.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/animate/animation/util.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/animate/animation/sector-path-update.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/animate/animation/zoom.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/util/facet.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/facet/circle.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/facet/list.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/facet/matrix.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/facet/mirror.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/facet/rect.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/facet/tree.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/util/stat.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/util/annotation.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/chart/controller/annotation.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/util/grid.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/chart/controller/axis.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/util/direction.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/chart/controller/legend.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/chart/controller/slider.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/chart/controller/scrollbar.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/active-region.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/component/tooltip/geometry.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/component/tooltip/sibling.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/component/tooltip/ellipsis-text.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/element/state-base.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/element/state.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/element/active.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/element/link-by-color.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/element/range-state.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/element/range-active.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/element/single-state.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/element/single-active.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/element/highlight-util.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/element/highlight.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/element/highlight-by-color.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/element/highlight-by-x.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/element/range-highlight.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/element/single-highlight.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/element/range-selected.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/element/selected.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/element/single-selected.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/component/list-state.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/component/list-active.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/component/list-highlight-util.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/component/list-highlight.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/component/list-selected.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/component/list-unchecked.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/component/list-checked.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/component/list-focus.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/component/list-radio.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/mask/base.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/mask/circle.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/mask/rect.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/mask/dim-rect.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/mask/path.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/mask/smooth-path.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/mask/multiple/base.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/mask/multiple/rect.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/mask/multiple/dim-rect.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/mask/multiple/circle.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/mask/multiple/path.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/mask/multiple/smooth-path.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/cursor.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/data/filter.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/data/range-filter.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/data/sibling-filter.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/element/filter.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/element/sibling-filter.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/view/button.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/view/drag.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/view/move.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/view/scale-transform.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/view/scale-translate.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/view/scale-zoom.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/view/mousewheel-scroll.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/interaction/action/component/axis/axis-description.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/index.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/label/layout/pie/distribute.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/label/layout/limit-in-shape.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/label/layout/limit-in-canvas.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/label/layout/limit-in-plot.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/label/layout/pie/outer.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/label/layout/adjust-color.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/label/layout/interval/hide-overlap.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/geometry/label/layout/pie/spider.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/animate/animation/fade.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/animate/animation/grow-in.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/animate/animation/scale-in.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/animate/animation/wave-in.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/animate/animation/position-update.ts","../node_modules/@antv/g2plot/node_modules/@antv/g2/src/animate/animation/path-in.ts","../node_modules/@antv/g2plot/src/constant.ts","../node_modules/@antv/g2plot/src/utils/invariant.ts","../node_modules/@antv/g2plot/src/utils/pick.ts","../node_modules/@antv/g2plot/src/utils/data.ts","../node_modules/@antv/g2plot/src/utils/deep-assign.ts","../node_modules/@antv/g2plot/src/utils/context.ts","../node_modules/@antv/g2plot/src/utils/dom.ts","../node_modules/@antv/g2plot/src/utils/flow.ts","../node_modules/@antv/g2plot/src/utils/geometry.ts","../node_modules/@antv/g2plot/src/utils/label.ts","../node_modules/@antv/g2plot/src/utils/measure-text.ts","../node_modules/@antv/g2plot/src/utils/number.ts","../node_modules/@antv/g2plot/src/utils/padding.ts","../node_modules/@antv/g2plot/src/utils/path.ts","../node_modules/@antv/g2plot/src/utils/kebab-case.ts","../node_modules/@antv/g2plot/src/utils/statistic.ts","../node_modules/@antv/g2plot/src/utils/template.ts","../node_modules/@antv/g2plot/src/utils/view.ts","../node_modules/@antv/g2plot/src/utils/pattern/util.ts","../node_modules/@antv/g2plot/src/utils/pattern/dot.ts","../node_modules/@antv/g2plot/src/utils/pattern/line.ts","../node_modules/@antv/g2plot/src/utils/pattern/square.ts","../node_modules/@antv/g2plot/src/utils/pattern/index.ts","../node_modules/@antv/g2plot/src/adaptor/pattern.ts","../node_modules/@antv/g2plot/src/adaptor/common.ts","../node_modules/@antv/g2plot/src/core/global.ts","../node_modules/@antv/g2plot/src/core/locale.ts","../node_modules/@antv/g2plot/src/utils/tooltip.ts","../node_modules/@antv/g2plot/src/adaptor/geometries/base.ts","../node_modules/@antv/g2plot/src/adaptor/geometries/area.ts","../node_modules/@antv/g2plot/src/adaptor/geometries/edge.ts","../node_modules/@antv/g2plot/src/adaptor/geometries/interval.ts","../node_modules/@antv/g2plot/src/adaptor/geometries/line.ts","../node_modules/@antv/g2plot/src/adaptor/geometries/point.ts","../node_modules/@antv/g2plot/src/adaptor/geometries/polygon.ts","../node_modules/@antv/g2plot/src/adaptor/geometries/schema.ts","../node_modules/@antv/g2plot/src/core/plot.ts","../node_modules/@antv/g2plot/src/utils/transform/percent.ts","../node_modules/@antv/g2plot/src/plots/line/adaptor.ts","../node_modules/@antv/g2plot/src/plots/area/adaptor.ts","../node_modules/@antv/g2plot/src/plots/area/constants.ts","../node_modules/@antv/g2plot/src/plots/area/index.ts","../node_modules/@antv/g2plot/src/interactions/actions/reset-button.ts","../node_modules/@antv/g2plot/src/interactions/brush.ts","../node_modules/@antv/g2plot/src/adaptor/brush.ts","../node_modules/@antv/g2plot/src/adaptor/connected-area.ts","../node_modules/@antv/g2plot/src/utils/conversion.ts","../node_modules/@antv/g2plot/src/adaptor/conversion-tag.ts","../node_modules/@antv/g2plot/src/plots/column/adaptor.ts","../node_modules/@antv/g2plot/src/plots/bar/adaptor.ts","../node_modules/@antv/g2plot/src/plots/bar/constants.ts","../node_modules/@antv/g2plot/src/plots/bar/index.ts","../node_modules/@antv/g2plot/src/plots/column/constants.ts","../node_modules/@antv/g2plot/src/plots/column/index.ts","../node_modules/@antv/g2plot/src/plots/funnel/constant.ts","../node_modules/@antv/g2plot/src/plots/funnel/geometries/common.ts","../node_modules/@antv/g2plot/src/plots/funnel/geometries/basic.ts","../node_modules/@antv/g2plot/src/plots/funnel/geometries/compare.ts","../node_modules/@antv/g2plot/src/plots/funnel/geometries/dynamic-height.ts","../node_modules/@antv/g2plot/src/plots/funnel/geometries/facet.ts","../node_modules/@antv/g2plot/src/plots/funnel/interactions/funnel-conversion-tag.ts","../node_modules/@antv/g2plot/src/plots/funnel/interactions/index.ts","../node_modules/@antv/g2plot/src/plots/funnel/adaptor.ts","../node_modules/@antv/g2plot/src/plots/funnel/index.ts","../node_modules/@antv/g2plot/src/plots/gauge/constants.ts","../node_modules/@antv/g2plot/src/plots/gauge/utils.ts","../node_modules/@antv/g2plot/src/plots/gauge/adaptor.ts","../node_modules/@antv/g2plot/src/plots/gauge/shapes/indicator.ts","../node_modules/@antv/g2plot/src/plots/gauge/shapes/meter-gauge.ts","../node_modules/@antv/g2plot/src/plots/gauge/index.ts","../node_modules/@antv/g2plot/src/utils/transform/histogram.ts","../node_modules/@antv/g2plot/src/plots/histogram/constant.ts","../node_modules/@antv/g2plot/src/plots/histogram/adaptor.ts","../node_modules/@antv/g2plot/src/plots/histogram/index.ts","../node_modules/@antv/g2plot/src/plots/line/constants.ts","../node_modules/@antv/g2plot/src/plots/line/interactions/marker-active.ts","../node_modules/@antv/g2plot/src/plots/line/interactions/index.ts","../node_modules/@antv/g2plot/src/plots/line/index.ts","../node_modules/@antv/g2plot/src/plots/pie/contants.ts","../node_modules/@antv/g2plot/src/utils/matrix.ts","../node_modules/@antv/g2plot/src/plots/pie/interactions/actions/legend-active.ts","../node_modules/@antv/g2plot/src/plots/pie/interactions/actions/statistic-active.ts","../node_modules/@antv/g2plot/src/plots/pie/interactions/util.ts","../node_modules/@antv/g2plot/src/plots/pie/interactions/index.ts","../node_modules/@antv/g2plot/src/plots/pie/utils.ts","../node_modules/@antv/g2plot/src/plots/pie/adaptor.ts","../node_modules/@antv/g2plot/src/plots/pie/index.ts","../node_modules/@antv/g2plot/src/plots/progress/constants.ts","../node_modules/@antv/g2plot/src/plots/progress/utils.ts","../node_modules/@antv/g2plot/src/plots/progress/adaptor.ts","../node_modules/@antv/g2plot/src/plots/progress/index.ts","../node_modules/@antv/g2plot/src/plots/ring-progress/adaptor.ts","../node_modules/@antv/g2plot/src/plots/ring-progress/constants.ts","../node_modules/@antv/g2plot/src/plots/ring-progress/index.ts","../node_modules/@antv/g2plot/src/plots/scatter/util.ts","../node_modules/@antv/g2plot/src/plots/scatter/adaptor.ts","../node_modules/@antv/g2plot/src/plots/scatter/constant.ts","../node_modules/@antv/g2plot/src/interactions/drag-move.ts","../node_modules/@antv/g2plot/src/plots/scatter/index.ts","../node_modules/@antv/g2plot/src/plots/stock/constant.ts","../node_modules/@antv/g2plot/src/plots/stock/utils.ts","../node_modules/@antv/g2plot/src/plots/stock/adaptor.ts","../node_modules/@antv/g2plot/src/plots/stock/index.ts","../node_modules/@antv/g2plot/src/plots/tiny-line/utils.ts","../node_modules/@antv/g2plot/src/plots/tiny-line/constants.ts","../node_modules/@antv/g2plot/src/plots/tiny-area/adaptor.ts","../node_modules/@antv/g2plot/src/plots/tiny-area/constants.ts","../node_modules/@antv/g2plot/src/plots/tiny-area/index.ts","../node_modules/@antv/g2plot/src/plots/tiny-column/adaptor.ts","../node_modules/@antv/g2plot/src/plots/tiny-column/constants.ts","../node_modules/@antv/g2plot/src/plots/tiny-column/index.ts","../node_modules/@antv/g2plot/src/plots/tiny-line/adaptor.ts","../node_modules/@antv/g2plot/src/plots/tiny-line/index.ts","../node_modules/@antv/g2plot/src/plots/mix/utils.ts","../node_modules/@antv/g2plot/src/plots/mix/adaptor.ts","../node_modules/@antv/g2plot/src/plots/mix/interactions/association.ts","../node_modules/@antv/g2plot/src/plots/mix/interactions/utils.ts","../node_modules/@antv/g2plot/src/plots/mix/index.ts","../node_modules/@antv/g2plot/src/lab.ts","../node_modules/@antv/g2plot/src/plots/bidirectional-bar/constant.ts","../node_modules/@antv/g2plot/src/plots/bidirectional-bar/utils.ts","../node_modules/@antv/g2plot/src/plots/bidirectional-bar/adaptor.ts","../node_modules/@antv/g2plot/src/plots/bidirectional-bar/index.ts","../node_modules/@antv/g2plot/src/plots/box/constant.ts","../node_modules/@antv/g2plot/src/plots/box/utils.ts","../node_modules/@antv/g2plot/src/plots/box/adaptor.ts","../node_modules/@antv/g2plot/src/plots/box/index.ts","../node_modules/@antv/g2plot/src/plots/bullet/utils.ts","../node_modules/@antv/g2plot/src/plots/bullet/adaptor.ts","../node_modules/@antv/g2plot/src/plots/bullet/constant.ts","../node_modules/@antv/g2plot/src/utils/transform/chord.ts","../node_modules/@antv/g2plot/src/plots/bullet/index.ts","../node_modules/@antv/g2plot/src/plots/chord/constant.ts","../node_modules/@antv/g2plot/src/plots/chord/adaptor.ts","../node_modules/@antv/g2plot/src/plots/chord/index.ts","../node_modules/@antv/g2plot/src/plots/circle-packing/constant.ts","../node_modules/@antv/g2plot/src/interactions/actions/drill-down.ts","../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/pack/enclose.js","../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/array.js","../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/pack/siblings.js","../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/accessors.js","../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/constant.js","../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/pack/index.js","../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/count.js","../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/index.js","../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/each.js","../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/find.js","../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/sum.js","../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/sort.js","../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/path.js","../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/ancestors.js","../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/descendants.js","../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/leaves.js","../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/links.js","../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/hierarchy/iterator.js","../node_modules/@antv/g2plot/src/utils/hierarchy/util.ts","../node_modules/@antv/g2plot/src/utils/hierarchy/pack.ts","../node_modules/@antv/g2plot/src/plots/circle-packing/utils.ts","../node_modules/@antv/g2plot/src/plots/circle-packing/adaptor.ts","../node_modules/@antv/g2plot/src/interactions/drill-down.ts","../node_modules/@antv/g2plot/src/plots/circle-packing/index.ts","../node_modules/@antv/g2plot/src/plots/dual-axes/types.ts","../node_modules/@antv/g2plot/src/plots/dual-axes/constant.ts","../node_modules/@antv/g2plot/src/plots/dual-axes/util/option.ts","../node_modules/@antv/g2plot/src/plots/dual-axes/util/legend.ts","../node_modules/@antv/g2plot/src/plots/dual-axes/util/render-sider.ts","../node_modules/@antv/g2plot/src/plots/dual-axes/adaptor.ts","../node_modules/@antv/g2plot/src/plots/dual-axes/util/geometry.ts","../node_modules/@antv/g2plot/src/plots/dual-axes/index.ts","../node_modules/@antv/g2plot/src/plots/facet/adaptor.ts","../node_modules/@antv/g2plot/src/plots/facet/utils.ts","../node_modules/@antv/g2plot/src/plots/facet/constant.ts","../node_modules/@antv/g2plot/src/plots/facet/index.ts","../node_modules/@antv/g2plot/src/plots/heatmap/adaptor.ts","../node_modules/@antv/g2plot/src/plots/heatmap/constant.ts","../node_modules/@antv/g2plot/src/plots/heatmap/shapes/circle.ts","../node_modules/@antv/g2plot/src/plots/heatmap/shapes/square.ts","../node_modules/@antv/g2plot/src/plots/heatmap/index.ts","../node_modules/@antv/g2plot/src/plots/liquid/utils.ts","../node_modules/@antv/g2plot/src/plots/liquid/adaptor.ts","../node_modules/@antv/g2plot/src/plots/liquid/constants.ts","../node_modules/@antv/g2plot/src/plots/liquid/shapes/liquid.ts","../node_modules/@antv/g2plot/src/plots/liquid/index.ts","../node_modules/@antv/g2plot/src/plots/radar/adaptor.ts","../node_modules/@antv/g2plot/src/plots/radar/interactions/radar-tooltip-action.ts","../node_modules/@antv/g2plot/src/plots/radar/interactions/index.ts","../node_modules/@antv/g2plot/src/plots/radar/index.ts","../node_modules/@antv/g2plot/src/plots/radial-bar/utils.ts","../node_modules/@antv/g2plot/src/plots/radial-bar/adaptor.ts","../node_modules/@antv/g2plot/src/plots/radial-bar/constant.ts","../node_modules/@antv/g2plot/src/plots/radial-bar/index.ts","../node_modules/@antv/g2plot/src/plots/rose/adaptor.ts","../node_modules/@antv/g2plot/src/plots/rose/constant.ts","../node_modules/@antv/g2plot/src/plots/sankey/constant.ts","../node_modules/@antv/g2plot/src/plots/rose/index.ts","../node_modules/@antv/g2plot/src/plots/sankey/circle.ts","../node_modules/@antv/g2plot/src/plots/sankey/sankey/align.ts","../node_modules/@antv/g2plot/src/plots/sankey/sankey/helper.ts","../node_modules/@antv/g2plot/src/plots/sankey/sankey/sankey.ts","../node_modules/@antv/g2plot/src/plots/sankey/layout.ts","../node_modules/@antv/g2plot/node_modules/@antv/util/src/min-by.ts","../node_modules/@antv/g2plot/src/plots/sankey/helper.ts","../node_modules/@antv/g2plot/src/plots/sankey/adaptor.ts","../node_modules/@antv/g2plot/src/plots/sankey/interactions/actions/node-drag.ts","../node_modules/@antv/g2plot/src/plots/sankey/interactions/node-draggable.ts","../node_modules/@antv/g2plot/src/plots/sankey/index.ts","../node_modules/@antv/g2plot/src/plots/sunburst/constant.ts","../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/treemap/round.js","../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/treemap/dice.js","../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/partition.js","../node_modules/@antv/g2plot/src/utils/hierarchy/partition.ts","../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/cluster.js","../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/stratify.js","../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/tree.js","../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/treemap/slice.js","../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/treemap/squarify.js","../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/treemap/index.js","../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/treemap/binary.js","../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/treemap/sliceDice.js","../node_modules/@antv/g2plot/node_modules/d3-hierarchy/src/treemap/resquarify.js","../node_modules/@antv/g2plot/src/utils/hierarchy/treemap.ts","../node_modules/@antv/g2plot/src/plots/sunburst/utils.ts","../node_modules/@antv/g2plot/src/plots/sunburst/adaptor.ts","../node_modules/@antv/g2plot/src/plots/sunburst/index.ts","../node_modules/@antv/g2plot/src/plots/treemap/utils.ts","../node_modules/@antv/g2plot/src/plots/treemap/adaptor.ts","../node_modules/@antv/g2plot/src/plots/treemap/constant.ts","../node_modules/@antv/g2plot/src/plots/venn/constant.ts","../node_modules/@antv/g2plot/src/plots/treemap/index.ts","../node_modules/@antv/g2plot/src/plots/venn/interactions/util.ts","../node_modules/@antv/g2plot/src/plots/venn/interactions/actions/active.ts","../node_modules/@antv/g2plot/src/plots/venn/interactions/actions/highlight.ts","../node_modules/@antv/g2plot/src/plots/venn/interactions/actions/selected.ts","../node_modules/@antv/g2plot/src/plots/venn/interactions/index.ts","../node_modules/@antv/g2plot/src/plots/venn/label.ts","../node_modules/lodash-es/isArray.js","../node_modules/@antv/path-util/src/parse-path-string.ts","../node_modules/@antv/path-util/src/process/arc-2-cubic.ts","../node_modules/@antv/g2plot/src/plots/venn/shape.ts","../node_modules/@antv/g2plot/src/utils/color/blend.ts","../node_modules/@antv/g2plot/src/plots/venn/layout/circleintersection.ts","../node_modules/@antv/g2plot/src/plots/venn/layout/diagram.ts","../node_modules/@antv/g2plot/src/plots/venn/layout/layout.ts","../node_modules/@antv/g2plot/src/plots/venn/utils.ts","../node_modules/@antv/g2plot/src/plots/venn/adaptor.ts","../node_modules/@antv/g2plot/src/plots/venn/index.ts","../node_modules/@antv/g2plot/src/plots/violin/constant.ts","../node_modules/@antv/g2plot/src/utils/transform/quantile.ts","../node_modules/@antv/g2plot/src/plots/violin/utils.ts","../node_modules/@antv/g2plot/src/plots/violin/adaptor.ts","../node_modules/@antv/g2plot/src/adaptor/geometries/violin.ts","../node_modules/@antv/g2plot/src/plots/violin/index.ts","../node_modules/@antv/g2plot/src/plots/waterfall/constant.ts","../node_modules/@antv/g2plot/src/plots/waterfall/utils.ts","../node_modules/@antv/g2plot/src/plots/waterfall/adaptor.ts","../node_modules/@antv/g2plot/src/plots/waterfall/shape.ts","../node_modules/@antv/g2plot/src/plots/waterfall/index.ts","../node_modules/@antv/g2plot/src/plots/word-cloud/constant.ts","../node_modules/@antv/g2plot/src/utils/transform/word-cloud.ts","../node_modules/@antv/g2plot/src/plots/word-cloud/utils.ts","../node_modules/@antv/g2plot/src/plots/word-cloud/adaptor.ts","../node_modules/@antv/g2plot/src/plots/word-cloud/shapes/word-cloud.ts","../node_modules/@antv/g2plot/src/plots/word-cloud/index.ts","../node_modules/@antv/g2plot/src/plugin/index.ts","../node_modules/@antv/g2plot/src/index.ts","../node_modules/@antv/g2plot/src/locales/en_US.ts","../node_modules/@antv/g2plot/src/locales/zh_CN.ts","../node_modules/@opd/g2plot-react/es/components/base/index.js","../node_modules/@opd/g2plot-react/es/plots/bar/index.js","../node_modules/@opd/g2plot-react/es/plots/line/index.js","../node_modules/@opd/g2plot-react/es/plots/pie/index.js","pages/Visualize/chartPie.js","pages/Visualize/Index.js","pages/Migrate/InitilizeMigrate.js","pages/Migrate/migrate.style.js","pages/Migrate/EnterCredentials.js","../node_modules/@ant-design/icons-svg/es/asn/SwapOutlined.js","../node_modules/@ant-design/icons/es/icons/SwapOutlined.js","helpers/custom-hooks/migrate.js","pages/Migrate/MigrateProject.js","pages/Migrate/MigrateSuccess.js","pages/Migrate/index.js","App.js","../node_modules/styled-components/src/constructors/createGlobalStyle.ts","serviceWorker.js","store/store.js","../node_modules/@reduxjs/toolkit/src/configureStore.ts","../node_modules/redux/src/applyMiddleware.ts","index.js"],"sourcesContent":["var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgFill251(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"114px\",\n height: \"21px\",\n viewBox: \"0 0 114 21\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"Fill 251\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Final-design-tweak\",\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Fill-251\",\n transform: \"translate(0.524700, 0.926500)\",\n fill: \"#0AEDC2\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M112.328,8.831 C112.328,9.478 112.245,10.25 112.135,10.663 C111.625,10.607 111.129,10.58 110.523,10.58 C110,10.58 109.476,10.621 108.953,10.69 L108.953,19.011 L106.817,19.011 L106.817,9.299 C107.726,8.982 109.269,8.762 110.468,8.762 C111.129,8.748 111.873,8.775 112.328,8.831 M97.987,13.073 L102.808,13.073 C102.808,11.476 101.954,10.553 100.48,10.553 C98.965,10.539 98.166,11.421 97.987,13.073 M104.848,14.851 L98.028,14.851 C98.304,16.586 99.309,17.413 101.211,17.413 C102.382,17.413 103.566,17.165 104.627,16.669 C104.544,17.233 104.434,17.977 104.297,18.611 C103.318,19.053 102.299,19.231 101.141,19.231 C97.559,19.231 95.838,17.248 95.838,13.928 C95.838,11.035 97.175,8.734 100.577,8.734 C103.621,8.734 104.944,10.731 104.944,13.184 C104.972,13.804 104.93,14.286 104.848,14.851 M91.994,16.766 L91.994,10.787 C91.43,10.677 90.851,10.594 90.286,10.594 C88.165,10.594 87.159,11.916 87.159,14.135 C87.159,16.118 87.958,17.51 89.859,17.51 C90.699,17.496 91.402,17.206 91.994,16.766 M94.102,5.414 L94.102,19.011 L92.146,19.011 L92.036,17.771 C91.485,18.681 90.658,19.245 89.253,19.245 C86.69,19.245 84.982,17.386 84.982,14.12 C84.982,10.704 86.814,8.762 90.41,8.762 C90.975,8.762 91.499,8.816 92.009,8.913 L92.009,5.703 C92.641,5.47 93.399,5.414 94.102,5.414 M83.261,12.481 L83.261,19.011 L81.125,19.011 L81.125,12.853 C81.125,11.324 80.616,10.58 78.48,10.58 C77.971,10.58 77.379,10.636 76.786,10.731 L76.786,19.011 L74.65,19.011 L74.65,9.299 C76.015,8.969 77.502,8.762 78.535,8.762 C82.117,8.748 83.261,10.14 83.261,12.481 M70.187,16.793 L70.187,10.69 C69.747,10.607 69.251,10.58 68.658,10.58 C66.44,10.58 65.407,11.944 65.407,14.12 C65.407,16.104 66.206,17.496 68.107,17.496 C68.947,17.496 69.623,17.22 70.187,16.793 M72.322,9.299 L72.322,19.011 L70.366,19.011 L70.256,17.84 C69.705,18.694 68.879,19.245 67.515,19.245 C64.953,19.245 63.244,17.386 63.244,14.12 C63.244,10.704 65.076,8.762 68.672,8.762 C70.05,8.748 71.193,8.913 72.322,9.299 M60.861,17.427 C61.481,17.427 62.059,17.316 62.528,17.138 C62.473,17.716 62.39,18.377 62.28,18.942 C61.701,19.177 61.082,19.259 60.475,19.259 C58.395,19.259 57.073,18.309 57.073,15.938 L57.073,5.731 C57.734,5.511 58.547,5.414 59.208,5.414 L59.208,9.093 L62.583,9.093 C62.542,9.754 62.486,10.359 62.39,10.925 L59.208,10.925 L59.208,15.691 C59.208,16.931 59.828,17.427 60.861,17.427 M54.937,12.481 L54.937,19.011 L52.803,19.011 L52.803,12.853 C52.803,11.324 52.293,10.58 50.157,10.58 C49.647,10.58 49.056,10.636 48.463,10.731 L48.463,19.011 L46.328,19.011 L46.328,9.299 C47.691,8.969 49.18,8.762 50.213,8.762 C53.78,8.748 54.937,10.14 54.937,12.481 M41.85,16.793 L41.85,10.69 C41.41,10.607 40.914,10.58 40.321,10.58 C38.103,10.58 37.07,11.944 37.07,14.12 C37.07,16.104 37.869,17.496 39.77,17.496 C40.61,17.496 41.286,17.22 41.85,16.793 M43.985,9.299 L43.985,19.011 L42.029,19.011 L41.92,17.84 C41.382,18.694 40.542,19.245 39.178,19.245 C36.616,19.245 34.907,17.386 34.907,14.12 C34.907,10.704 36.74,8.762 40.335,8.762 C41.713,8.748 42.87,8.913 43.985,9.299 M24.576,18.584 C24.617,17.785 24.727,17.248 24.947,16.628 C26.036,17.138 27.441,17.386 28.502,17.386 C30.307,17.386 31.326,16.807 31.326,15.649 C31.326,14.52 30.582,13.996 28.764,13.197 L27.771,12.77 C25.939,11.972 24.699,10.938 24.699,8.886 C24.699,6.668 26.228,5.249 29.384,5.249 C30.65,5.249 31.836,5.428 32.937,5.813 C32.883,6.585 32.745,7.191 32.552,7.756 C31.505,7.37 30.265,7.191 29.37,7.191 C27.675,7.191 26.903,7.852 26.903,8.886 C26.903,9.892 27.661,10.483 29.025,11.062 L30.072,11.503 C32.538,12.55 33.571,13.666 33.571,15.539 C33.571,17.771 31.877,19.314 28.584,19.314 C26.973,19.328 25.664,19.094 24.576,18.584 M14.808,9.01 C14.781,8.308 14.574,7.591 14.216,6.957 L10.978,1.351 C10.731,0.923 10.565,0.469 10.47,1.24344979e-14 L10.331,0.234 C9.532,1.626 9.532,3.334 10.331,4.726 L12.921,9.217 C13.721,10.607 13.721,12.315 12.921,13.707 L12.783,13.941 C12.687,13.473 12.521,13.018 12.273,12.592 L9.904,8.486 L8.389,5.869 C8.141,5.441 7.975,4.987 7.879,4.519 L7.741,4.753 C6.942,6.131 6.942,7.839 7.727,9.23 L10.331,13.734 C11.131,15.126 11.131,16.834 10.331,18.226 L10.193,18.46 C10.098,17.991 9.932,17.537 9.683,17.11 L6.446,11.448 C6.006,10.69 5.813,9.85 5.854,9.01 C2.383,9.919 -2.4158453e-13,11.834 -2.4158453e-13,14.065 C-2.4158453e-13,17.165 4.628,19.672 10.346,19.672 C16.062,19.672 20.69,17.165 20.69,14.065 C20.677,11.834 18.28,9.919 14.808,9.01\",\n id: \"Fill-163\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgFill251);\nexport default __webpack_public_path__ + \"static/media/Fill 251.ba60983fec1b423831d6b5456b7f6453.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgFill32(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"60px\",\n height: \"25px\",\n viewBox: \"0 0 60 25\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"Fill 32\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Final-design-tweak\",\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Fill-32\",\n transform: \"translate(0.478100, 0.864700)\",\n fill: \"#0AEDC2\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M55.36,6.633 C54.045,6.028 52.609,5.727 51.161,5.753 C49.131,5.753 47.484,6.056 47.484,7.591 C47.484,10.31 54.921,9.292 54.921,15.111 C54.921,20.404 50.006,21.779 45.562,21.779 C43.543,21.733 41.54,21.4 39.614,20.791 L40.803,16.895 C41.821,17.555 43.849,17.995 45.521,17.995 C47.192,17.995 49.608,17.693 49.608,15.717 C49.608,12.642 42.172,13.796 42.172,8.388 C42.172,3.45 46.508,1.963 50.709,1.963 C53.088,1.963 55.289,2.213 56.58,2.814 L55.36,6.633 Z M32.718,21.452 L34.421,13.248 L28.382,13.248 L26.68,21.452 L21.552,21.452 L25.527,2.296 L30.661,2.296 L29.149,9.625 L35.217,9.625 L36.728,2.296 L41.862,2.296 L37.882,21.452 L32.718,21.452 Z M13.213,21.452 L9.203,8.197 L9.149,8.197 L6.49,21.452 L1.66,21.452 L5.747,2.296 L12.141,2.296 L16.062,15.58 L16.122,15.58 L18.81,2.296 L23.641,2.296 L19.578,21.452 L13.213,21.452 Z M-1.56319402e-13,23.796 L58.793,23.796 L58.793,-8.8817842e-15 L-1.56319402e-13,-8.8817842e-15 L-1.56319402e-13,23.796 Z\",\n id: \"Fill-27\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgFill32);\nexport default __webpack_public_path__ + \"static/media/Fill 32.345474e7282f6ffbe77ec69f466e28f6.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgGroup17(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"144px\",\n height: \"21px\",\n viewBox: \"0 0 144 21\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"Group 17\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Final-design-tweak\",\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group-17\",\n transform: \"translate(0.457900, 0.793600)\",\n fill: \"#0AEDC2\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.597,18.4277 C9.76,19.1707 8.692,19.6127 7.576,19.6357 C3.997,19.6127 3.184,16.6157 3.184,12.6647 C3.184,8.7137 3.951,5.6937 7.53,5.6937 C8.621,5.6937 9.667,6.1347 10.434,6.9247 L12.409,10.1777 L12.526,10.1777 L12.526,5.6007 L12.409,5.6007 L10.55,6.5537 C9.713,5.8327 8.645,5.4147 7.53,5.3917 C4.09,5.4147 -1.63424829e-13,8.0397 -1.63424829e-13,12.6647 C-1.63424829e-13,17.2887 3.997,19.9377 7.576,19.9377 C8.714,19.9137 9.807,19.4957 10.69,18.7767 L12.618,19.7287 L12.735,19.7287 L12.735,14.9417 L12.618,14.9417 L10.597,18.4277 Z\",\n id: \"Fill-1\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.2386,19.6357 C18.8226,19.6357 18.0326,16.8237 18.0326,12.6647 C18.0326,8.5287 18.8226,5.6937 22.2386,5.6937 C25.6546,5.6937 26.4446,8.5047 26.4446,12.6647 C26.4216,16.8007 25.6546,19.6357 22.2386,19.6357 M22.2386,5.4147 C18.8696,5.4147 14.8956,8.2497 14.8956,12.6647 C14.8956,17.0787 18.8696,19.9377 22.2386,19.9377 C25.6076,19.9377 29.5816,17.1027 29.5816,12.6647 C29.5816,8.2267 25.5846,5.4147 22.2386,5.4147\",\n id: \"Fill-3\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n id: \"Fill-5\",\n points: \"41.3626 5.6699 41.3626 5.9019 43.1516 5.9019 43.1516 14.8029 43.1286 14.8029 36.7156 5.6699 31.1846 5.6699 31.1846 5.9019 32.9976 5.9019 32.9976 19.4269 31.1846 19.4269 31.1846 19.6589 35.1346 19.6589 35.1346 19.4269 33.3226 19.4269 33.3226 5.9019 33.3456 5.9019 43.4076 19.9379 43.5006 19.9379 43.5006 5.9019 45.2896 5.9019 45.2896 5.6699\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M53.0501,19.4268 L51.5401,19.4268 L51.5401,5.9028 L53.0501,5.9028 C56.7221,5.9028 58.3951,8.4118 58.3951,12.6648 C58.3951,16.9168 56.6981,19.4268 53.0501,19.4268 M53.0971,5.6698 L46.8691,5.6698 L46.8691,5.9028 L48.6581,5.9028 L48.6581,19.4268 L46.8691,19.4268 L46.8691,19.6588 L53.0971,19.6588 C56.1881,19.6588 61.4861,18.3118 61.4861,12.5718 C61.4861,6.8318 56.2111,5.6698 53.0971,5.6698\",\n id: \"Fill-7\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M73.0345,19.4268 L67.7365,19.4268 L67.7365,12.2928 L70.4085,12.2928 C71.2915,12.9898 72.3135,15.0118 72.3135,15.0118 L72.4305,15.0118 L72.4305,9.2948 L72.2905,9.2948 C72.2905,9.2948 71.2685,11.3168 70.3855,12.0138 L67.7135,12.0138 L67.7135,5.9028 L72.4535,5.9028 C73.8245,6.8088 75.0325,9.4348 75.0325,9.4348 L75.1485,9.4348 L75.1485,5.6698 L63.0655,5.6698 L63.0655,5.9028 L64.8785,5.9028 L64.8785,19.4268 L63.0655,19.4268 L63.0655,19.6588 L75.5445,19.6588 L75.5445,14.9648 L75.4285,14.9648 C75.4515,14.9648 74.2425,18.0788 73.0345,19.4268\",\n id: \"Fill-9\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n id: \"Fill-11\",\n points: \"72.6624 -1.42108547e-14 68.2014 3.672 68.2474 3.741 72.8024 2.696 72.4304 1.696 72.7324 0.07\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n id: \"Fill-13\",\n points: \"97.5032 5.6699 97.5032 5.9019 99.3152 5.9019 99.3152 14.8029 99.2692 14.8029 92.8562 5.6699 87.3252 5.6699 87.3252 5.9019 89.1382 5.9019 89.1382 19.4269 87.3252 19.4269 87.3252 19.6589 91.2752 19.6589 91.2752 19.4269 89.4632 19.4269 89.4632 5.9019 89.5092 5.9019 99.5482 19.9379 99.6412 19.9379 99.6412 5.9019 101.4532 5.9019 101.4532 5.6699\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M107.6575,8.877 L109.8875,13.873 L105.5195,13.873 L107.6575,8.877 Z M108.9125,5.183 L102.8465,19.427 L101.1745,19.427 L101.1745,19.659 L104.9385,19.659 L104.9385,19.427 L103.1955,19.427 L105.4275,14.129 L109.9805,14.129 L112.3505,19.427 L110.5385,19.427 L110.5385,19.659 L117.1145,19.659 L117.1145,19.427 L115.4415,19.427 L109.0055,5.183 L108.9125,5.183 Z\",\n id: \"Fill-15\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M125.2708,11.4561 L122.5058,10.5261 C121.1348,10.0621 119.9968,9.3881 119.9968,8.0631 C119.9968,6.5541 121.2048,5.7171 123.0408,5.7171 C124.1788,5.7171 124.8998,6.0191 125.5738,6.6461 L127.5248,9.8761 L127.6408,9.8761 L127.6408,5.4151 L127.5248,5.4151 L125.6668,6.3441 C124.9218,5.7171 123.9938,5.3921 123.0168,5.4151 C120.3448,5.4151 118.6018,7.1571 118.5788,9.5981 C118.6018,11.5721 119.9728,12.5951 121.5528,13.1761 L124.3648,14.1981 C125.8518,14.7321 126.8748,15.3831 126.8748,16.8481 C126.8748,18.2181 125.9448,19.6121 123.5048,19.6361 C122.3668,19.6121 121.0648,19.1471 120.2978,18.4041 L118.1838,14.8721 L118.0678,14.8721 L118.1608,19.7051 L118.2768,19.7051 L120.1818,18.6831 C121.1348,19.4271 122.2968,19.8681 123.5048,19.8921 C126.5728,19.8921 128.5708,17.7301 128.5708,15.3601 C128.6178,13.0831 126.9908,12.0371 125.2708,11.4561\",\n id: \"Fill-17\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M129.9886,5.6699 L129.9886,10.0159 L130.1046,10.0159 C130.1046,10.0159 131.4056,7.2499 132.6136,5.9019 L135.0536,5.9019 L135.0536,19.4269 L132.8456,19.4269 L132.8456,19.6589 L140.0956,19.6589 L140.0956,19.4269 L137.8886,19.4269 L137.8886,5.9019 L140.3286,5.9019 C141.5596,7.2499 142.8386,10.0159 142.8386,10.0159 L142.9546,10.0159 L142.9546,5.6699 L129.9886,5.6699 Z\",\n id: \"Fill-19\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgGroup17);\nexport default __webpack_public_path__ + \"static/media/Group 17.4cddec538295ad3583a5430944169a3f.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgGroup19(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"71px\",\n height: \"25px\",\n viewBox: \"0 0 71 25\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"Group 19\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Final-design-tweak\",\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group-19\",\n transform: \"translate(0.335916, 0.054723)\",\n fill: \"#0AEDC2\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.23068405,19.6265767 C5.16868405,18.7655767 4.74468405,18.2455767 3.87368405,18.2185767 C3.00768405,18.1915767 2.48268405,18.6465767 2.44668405,19.5195767 C2.40868405,20.4445767 2.89968405,20.9795767 3.83568405,20.9795767 C4.70568405,20.9785767 5.14768405,20.4675767 5.23068405,19.6265767 L5.23068405,19.6265767 Z M14.7326841,21.4895767 C14.7676841,22.3835767 15.3296841,22.8685767 16.1236841,22.8775767 C16.9356841,22.8875767 17.4756841,22.3705767 17.5096841,21.4895767 C17.5436841,20.6475767 16.8746841,19.9385767 16.0726841,20.0365767 C15.2526841,20.1365767 14.7466841,20.6055767 14.7326841,21.4895767 L14.7326841,21.4895767 Z M20.9946841,3.93357668 C20.9546841,3.05957668 20.5576841,2.51857668 19.6756841,2.47457668 C18.8166841,2.43257668 18.2726841,2.85757668 18.2156841,3.73657668 C18.1566841,4.66257668 18.6276841,5.20657668 19.5656841,5.23357668 C20.4406841,5.25957668 20.8896841,4.75757668 20.9946841,3.93357668 L20.9946841,3.93357668 Z M7.42168405,0.685576677 C6.51768405,0.709576677 6.02768405,1.24057668 6.01568405,2.06457668 C6.00468405,2.88957668 6.49668405,3.46357668 7.37668405,3.48257668 C8.31168405,3.50357668 8.85568405,2.93957668 8.83868405,2.04757668 C8.82468405,1.22057668 8.29968405,0.712576677 7.42168405,0.685576677 L7.42168405,0.685576677 Z M21.1076841,14.9765767 C20.6876841,14.5585767 20.5286841,15.0915767 20.2966841,15.3125767 C19.5306841,16.0415767 18.8056841,16.8145767 18.0376841,17.5435767 C17.3336841,18.2115767 17.1396841,19.0055767 17.8466841,19.6625767 C18.5286841,20.2965767 19.3746841,20.2485767 20.0856841,19.5025767 C20.7586841,18.7955767 21.4496841,18.1035767 22.1606841,17.4335767 C22.6596841,16.9625767 23.1416841,16.4265767 22.8316841,15.7505767 C22.5486841,15.1355767 21.9046841,14.8715767 21.1076841,14.9765767 L21.1076841,14.9765767 Z M0.676684051,7.71357668 C0.679684051,8.10257668 1.00468405,8.46857668 1.51768405,8.73257668 C2.13068405,9.04957668 2.63068405,8.84157668 3.06668405,8.41957668 C3.94568405,7.56857668 4.79668405,6.68957668 5.66968405,5.83457668 C6.45968405,5.06157668 6.15068405,4.43557668 5.47668405,3.78057668 C4.83468405,3.15657668 4.24868405,3.31157668 3.69868405,3.82957668 C2.81068405,4.66957668 1.97768405,5.56757668 1.08868405,6.40657668 C0.749684051,6.72657668 0.726684051,7.10557668 0.676684051,7.71357668 L0.676684051,7.71357668 Z M69.4536841,4.91357668 C69.4366841,4.02457668 68.4146841,2.84157668 67.6866841,2.86657668 C65.1266841,2.95457668 64.9226841,3.66057668 64.8016841,4.96457668 C64.6806841,6.26357668 65.9086841,7.34857668 67.2416841,7.29057668 C68.4286841,7.23957668 69.4746841,6.11557668 69.4536841,4.91357668 L69.4536841,4.91357668 Z M33.6656841,4.95057668 C33.6486841,6.29957668 34.5956841,7.28157668 35.9306841,7.30057668 C37.2676841,7.31857668 38.2606841,6.35457668 38.2736841,5.02357668 C38.2866841,3.80557668 37.4186841,2.73957668 36.3876841,2.70757668 C34.6596841,2.65357668 33.6826841,3.45757668 33.6656841,4.95057668 L33.6656841,4.95057668 Z M5.15868405,16.8025767 C5.11568405,17.4455767 5.45568405,17.9165767 6.00768405,18.1525767 C6.55168405,18.3855767 7.02568405,18.2945767 7.52468405,17.7875767 C10.8006841,14.4635767 14.1216841,11.1825767 17.4516841,7.91157668 C18.0586841,7.31457668 18.5906841,6.70657668 18.0126841,5.89857668 C17.2956841,4.89757668 16.5316841,4.90157668 15.5966841,5.82857668 C12.3116841,9.09057668 9.04168405,12.3665767 5.76668405,15.6385767 C5.44568405,15.9585767 5.12268405,16.2795767 5.15868405,16.8025767 L5.15868405,16.8025767 Z M0.00168405059,14.5245767 C0.0366840506,15.1405767 0.286684051,15.5905767 0.888684051,15.8555767 C1.63468405,16.1855767 2.14468405,15.8325767 2.62968405,15.3485767 C6.86668405,11.1235767 11.0956841,6.89257668 15.3406841,2.67657668 C16.0556841,1.96657668 16.3356841,1.21657668 15.5526841,0.450576677 C14.7786841,-0.306423323 14.0166841,-0.027423323 13.3116841,0.680576677 C9.08568405,4.91557668 4.84968405,9.13857668 0.618684051,13.3675767 C0.299684051,13.6875767 -0.0263159494,14.0095767 0.00168405059,14.5245767 L0.00168405059,14.5245767 Z M8.83468405,23.4145767 C9.37768405,23.4355767 9.74868405,23.1205767 10.1006841,22.7685767 C14.3016841,18.5715767 18.5066841,14.3795767 22.7006841,10.1755767 C23.6926841,9.18157668 23.6106841,8.68057668 22.6116841,7.75257668 C21.7686841,6.96957668 21.2746841,7.61857668 20.7846841,8.10557668 C16.5396841,12.3145767 12.3126841,16.5445767 8.08368405,20.7715767 C7.91168405,20.9425767 7.73568405,21.1245767 7.61368405,21.3325767 C7.07268405,22.2585767 7.75668405,23.4115767 8.83468405,23.4145767 L8.83468405,23.4145767 Z M68.9286841,8.96557668 C67.9146841,8.94157668 66.8986841,8.92957668 65.8846841,8.89257668 C65.4616841,8.87757668 65.2096841,8.93857668 65.2156841,9.46857668 C65.2576841,13.1255767 65.2736841,16.7835767 65.2976841,20.4405767 C66.2166841,20.9075767 67.1976841,20.5075767 68.1386841,20.6455767 C68.8946841,20.7565767 69.1186841,20.4445767 69.1086841,19.6925767 C69.0686841,16.8305767 69.1076841,13.9675767 69.0826841,11.1055767 C69.0756841,10.3935767 69.2726841,9.65557668 68.9286841,8.96557668 L68.9286841,8.96557668 Z M50.9756841,20.4605767 C50.9866841,20.6585767 51.0916841,20.6955767 51.2586841,20.6235767 C52.3086841,20.6025767 53.3576841,20.5795767 54.4076841,20.5585767 C54.9146841,20.4705767 54.7376841,20.0625767 54.7386841,19.7795767 C54.7466841,17.9485767 54.7286841,16.1185767 54.7186841,14.2885767 C54.9536841,13.4615767 55.1986841,12.6205767 56.0306841,12.1905767 C57.2286841,11.5735767 58.5526841,12.3415767 58.6386841,13.8105767 C58.7526841,15.7635767 58.6906841,17.7265767 58.7286841,19.6845767 C58.7356841,20.0415767 58.5196841,20.6435767 59.1706841,20.6155767 C60.2816841,20.5675767 61.4156841,20.8945767 62.5026841,20.4425767 C62.6336841,17.8305767 62.6356841,15.2185767 62.4966841,12.6055767 C62.2516841,10.0225767 59.6856841,8.31057668 57.5796841,8.48557668 C56.3806841,8.58557668 55.6436841,9.36357668 54.7136841,9.86857668 C54.8426841,9.18457668 54.7096841,8.78657668 53.8616841,8.87857668 C53.1316841,8.95757668 52.3846841,8.93657668 51.6516841,8.88257668 C51.0256841,8.83557668 50.9106841,9.08757668 50.9166841,9.65557668 C50.9556841,13.2575767 50.9596841,16.8585767 50.9756841,20.4605767 L50.9756841,20.4605767 Z M34.0336841,9.14157668 C34.0116841,11.3545767 33.9916841,13.5665767 33.9696841,15.7795767 C33.1786841,17.2135767 32.3616841,17.7585767 31.1666841,17.2135767 C30.1156841,16.7335767 29.7596841,17.1985767 29.3406841,17.9375767 C29.1406841,18.2905767 28.9216841,18.6445767 28.6546841,18.9475767 C28.1106841,19.5645767 28.3196841,19.9035767 28.9926841,20.2085767 C32.3856841,21.7425767 37.7506841,20.9535767 37.8846841,15.0325767 C37.9006841,13.2335767 37.9216841,11.4355767 37.9236841,9.63657668 C37.9236841,9.38257668 38.0616841,8.91257668 37.6826841,8.93457668 C36.4666841,9.00057668 35.2186841,8.58057668 34.0336841,9.14157668 L34.0336841,9.14157668 Z M44.0336841,20.5405767 C44.1906841,20.7115767 44.2636841,20.6645767 44.2706841,20.4475767 L44.3526841,15.2975767 C44.8386841,14.0605767 45.4556841,12.9885767 46.9216841,12.6595767 C47.4956841,12.5305767 48.2896841,13.0205767 48.5786841,12.4215767 C48.8346841,11.8905767 48.6686841,11.1505767 48.6686841,10.5035767 C48.6686841,9.97757668 48.6366841,9.45057668 48.6206841,8.92557668 C48.3666841,8.04457668 48.0736841,8.76157668 47.7936841,8.90457668 C47.5476841,8.82557668 47.3616841,8.67857668 47.0296841,8.77257668 C45.8426841,9.11157668 45.0506841,9.90357668 44.3646841,10.8555767 C44.2886841,8.89757668 44.2886841,8.89457668 42.2476841,8.89857668 C41.7166841,8.89957668 41.1866841,8.92757668 40.6556841,8.94257668 C40.4466841,8.96357668 40.4186841,9.10657668 40.4196589,9.27757668 C40.4406841,12.9315767 40.4596841,16.5845767 40.4796841,20.2375767 C40.4766841,20.5645767 40.6766841,20.5985767 40.9336841,20.5495767 C41.9596841,20.6825767 42.9876841,20.6985767 44.0126841,20.5415767 L44.0336841,20.5405767 Z\",\n id: \"Fill-29\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M62.5031841,20.4429767 C61.4151841,20.8939767 60.2811841,20.5679767 59.1711841,20.6159767 C58.5201841,20.6429767 58.7351841,20.0419767 58.7291841,19.6839767 C58.6901841,17.7259767 58.7531841,15.7629767 58.6391841,13.8099767 C58.5531841,12.3409767 57.2291841,11.5739767 56.0301841,12.1909767 C55.1981841,12.6209767 54.9531841,13.4619767 54.7191841,14.2889767 C54.2631841,14.6189767 54.4371841,15.1069767 54.4311841,15.5339767 C54.4071841,17.2089767 54.4121841,18.8829767 54.4071841,20.5579767 C53.3571841,20.5799767 52.3091841,20.6019767 51.2591841,20.6239767 C51.2581841,20.5599767 51.2471841,20.4979767 51.2271841,20.4379767 C51.2261841,17.0589767 51.2211841,13.6799767 51.2331841,10.3009767 C51.2351841,9.92397668 51.0631841,9.46597668 51.5311841,9.20797668 C52.1911841,8.84197668 54.2401841,9.26997668 54.7141841,9.86897668 C55.6441841,9.36397668 56.3811841,8.58597668 57.5791841,8.48597668 C59.6861841,8.30997668 62.2521841,10.0229767 62.4961841,12.6059767 C62.0701841,14.1629767 62.3501841,15.7509767 62.3241841,17.3219767 C62.3081841,18.3579767 62.0781841,19.4249767 62.5031841,20.4429767\",\n id: \"Fill-31\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.83518405,23.4136767 C7.75718405,23.4116767 7.07218405,22.2586767 7.61318405,21.3326767 C7.73518405,21.1246767 7.91118405,20.9426767 8.08318405,20.7706767 C12.3131841,16.5446767 16.5391841,12.3146767 20.7841841,8.10467668 C21.2741841,7.61867668 21.7691841,6.96967668 22.6111841,7.75267668 C23.6101841,8.68067668 23.6921841,9.18167668 22.7001841,10.1756767 C18.5071841,14.3796767 14.3021841,18.5716767 10.1011841,22.7676767 C9.74818405,23.1206767 9.37818405,23.4346767 8.83518405,23.4136767\",\n id: \"Fill-33\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M48.6202841,8.92537668 C48.6372841,9.45037668 48.6682841,9.97737668 48.6682841,10.5033767 C48.6682841,11.1513767 48.8342841,11.8903767 48.5782841,12.4213767 C48.2892841,13.0203767 47.4952841,12.5303767 46.9222841,12.6593767 C45.4552841,12.9883767 44.8392841,14.0603767 44.3522841,15.2973767 C43.9422841,15.5943767 44.0992841,16.0323767 44.0892841,16.4173767 C44.0512841,17.7923767 44.0362841,19.1673767 44.0132841,20.5413767 C42.9872841,20.6983767 41.9602841,20.6823767 40.9332841,20.5493767 C40.7822841,20.4463767 40.6312841,20.3413767 40.4792841,20.2383767 C40.4602841,16.5843767 40.4402841,12.9313767 40.4202581,9.27837668 C40.4192841,9.10737668 40.4462841,8.96337668 40.6552841,8.94337668 C40.8732841,9.18637668 41.1662841,9.14837668 41.4442841,9.14237668 C42.7692841,9.11737668 44.2902841,8.75337668 44.3642841,10.8563767 C45.0512841,9.90437668 45.8432841,9.11237668 47.0292841,8.77337668 C47.3612841,8.67837668 47.5482841,8.82537668 47.7942841,8.90437668 L48.6202841,8.92537668 Z\",\n id: \"Fill-35\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.00218405059,14.5249767 C-0.0258159494,14.0089767 0.300184051,13.6869767 0.618184051,13.3679767 C4.85018405,9.13797668 9.08618405,4.91597668 13.3121841,0.679976677 C14.0171841,-0.028023323 14.7781841,-0.306023323 15.5531841,0.450976677 C16.3361841,1.21597668 16.0561841,1.96597668 15.3411841,2.67597668 C11.0961841,6.89197668 6.86618405,11.1239767 2.63018405,15.3479767 C2.14518405,15.8329767 1.63518405,16.1849767 0.889184051,15.8559767 C0.286184051,15.5899767 0.0361840506,15.1399767 0.00218405059,14.5249767\",\n id: \"Fill-37\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M37.8849841,15.0327767 C37.7499841,20.9537767 32.3859841,21.7427767 28.9919841,20.2087767 C28.3199841,19.9037767 28.1109841,19.5647767 28.6549841,18.9477767 C28.9219841,18.6437767 29.1409841,18.2907767 29.3409841,17.9367767 C29.7599841,17.1987767 30.1149841,16.7337767 31.1659841,17.2137767 C32.3619841,17.7587767 33.1789841,17.2137767 33.9699841,15.7797767 C34.3839841,15.4807767 34.2299841,15.0387767 34.2329841,14.6507767 C34.2489841,12.8167767 34.2439841,10.9817767 34.2469841,9.14677668 C34.6949841,9.14477668 35.1419841,9.13777668 35.5889841,9.14377668 C38.0049841,9.17877668 37.6139841,8.82877668 37.6969841,11.1847767 C37.7399841,12.4677767 37.4359841,13.7697767 37.8849841,15.0327767\",\n id: \"Fill-39\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.15838405,16.8023767 C5.12238405,16.2803767 5.44538405,15.9583767 5.76638405,15.6383767 C9.04138405,12.3663767 12.3113841,9.09037668 15.5963841,5.82837668 C16.5313841,4.90237668 17.2963841,4.89837668 18.0123841,5.89937668 C18.5913841,6.70637668 18.0583841,7.31537668 17.4513841,7.91137668 C14.1213841,11.1823767 10.8013841,14.4633767 7.52438405,17.7873767 C7.02538405,18.2943767 6.55238405,18.3853767 6.00838405,18.1533767 C5.45538405,17.9163767 5.11538405,17.4463767 5.15838405,16.8023767\",\n id: \"Fill-41\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M68.9288841,8.96547668 C69.2728841,9.65547668 69.0748841,10.3934767 69.0818841,11.1054767 C69.1078841,13.9674767 69.0688841,16.8304767 69.1088841,19.6934767 C69.1178841,20.4444767 68.8948841,20.7564767 68.1388841,20.6454767 C67.1978841,20.5074767 66.2168841,20.9074767 65.2978841,20.4414767 C65.6638841,20.0614767 65.4978841,19.5854767 65.4998841,19.1544767 C65.5158841,16.2114767 65.5388841,13.2684767 65.4898841,10.3244767 C65.4748841,9.43447668 65.6978841,9.07547668 66.6478841,9.12047668 C67.3998841,9.15547668 68.1938841,9.35147668 68.9288841,8.96547668\",\n id: \"Fill-43\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M33.6652841,4.95077668 C33.6832841,3.45777668 34.6592841,2.65377668 36.3882841,2.70777668 C37.4182841,2.73977668 38.2862841,3.80477668 38.2732841,5.02377668 C38.2612841,6.35377668 37.2682841,7.31877668 35.9312841,7.30077668 C34.5962841,7.28177668 33.6482841,6.29977668 33.6652841,4.95077668\",\n id: \"Fill-45\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M69.4532841,4.91367668 C69.4742841,6.11567668 68.4292841,7.23967668 67.2412841,7.29067668 C65.9082841,7.34867668 64.6812841,6.26367668 64.8022841,4.96467668 C64.9232841,3.66067668 65.1272841,2.95467668 67.6862841,2.86667668 C68.4142841,2.84167668 69.4362841,4.02467668 69.4532841,4.91367668\",\n id: \"Fill-47\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.676984051,7.71347668 C0.726984051,7.10547668 0.748984051,6.72647668 1.08898405,6.40647668 C1.97798405,5.56747668 2.81098405,4.66947668 3.69798405,3.82947668 C4.24798405,3.31147668 4.83498405,3.15647668 5.47698405,3.78047668 C6.15098405,4.43547668 6.45998405,5.06147668 5.66998405,5.83447668 C4.79698405,6.69047668 3.94598405,7.56847668 3.06698405,8.41947668 C2.63098405,8.84147668 2.13098405,9.04947668 1.51798405,8.73347668 C1.00498405,8.46847668 0.679984051,8.10247668 0.676984051,7.71347668\",\n id: \"Fill-49\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.1075841,14.9761767 C21.9045841,14.8721767 22.5485841,15.1351767 22.8315841,15.7501767 C23.1415841,16.4261767 22.6595841,16.9621767 22.1605841,17.4331767 C21.4495841,18.1031767 20.7585841,18.7951767 20.0865841,19.5021767 C19.3745841,20.2481767 18.5285841,20.2961767 17.8465841,19.6631767 C17.1395841,19.0051767 17.3335841,18.2111767 18.0375841,17.5431767 C18.8055841,16.8151767 19.5305841,16.0411767 20.2965841,15.3121767 C20.5285841,15.0911767 20.6875841,14.5581767 21.1075841,14.9761767\",\n id: \"Fill-51\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.42208405,0.685176677 C8.30008405,0.712176677 8.82408405,1.22017668 8.83908405,2.04717668 C8.85608405,2.93917668 8.31208405,3.50317668 7.37608405,3.48317668 C6.49608405,3.46317668 6.00508405,2.88917668 6.01608405,2.06417668 C6.02708405,1.24117668 6.51808405,0.709176677 7.42208405,0.685176677\",\n id: \"Fill-53\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20.9943841,3.93317668 C20.8903841,4.75717668 20.4403841,5.25917668 19.5653841,5.23417668 C18.6283841,5.20617668 18.1563841,4.66217668 18.2163841,3.73717668 C18.2723841,2.85817668 18.8163841,2.43217668 19.6763841,2.47417668 C20.5573841,2.51817668 20.9543841,3.05917668 20.9943841,3.93317668\",\n id: \"Fill-55\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.7325841,21.4898767 C14.7465841,20.6048767 15.2535841,20.1358767 16.0725841,20.0368767 C16.8745841,19.9388767 17.5435841,20.6478767 17.5095841,21.4898767 C17.4755841,22.3708767 16.9355841,22.8868767 16.1235841,22.8778767 C15.3295841,22.8688767 14.7675841,22.3838767 14.7325841,21.4898767\",\n id: \"Fill-57\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.23068405,19.6265767 C5.14768405,20.4675767 4.70568405,20.9785767 3.83568405,20.9795767 C2.89968405,20.9795767 2.40868405,20.4445767 2.44668405,19.5195767 C2.48268405,18.6465767 3.00768405,18.1915767 3.87368405,18.2185767 C4.74468405,18.2455767 5.16868405,18.7655767 5.23068405,19.6265767\",\n id: \"Fill-59\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M54.7140841,9.86877668 C54.2400841,9.26977668 52.1920841,8.84277668 51.5310841,9.20777668 C51.0630841,9.46677668 51.2350841,9.92477668 51.2340841,10.3017767 C51.2210841,13.6807767 51.2260841,17.0587767 51.2270841,20.4377767 C51.1430841,20.4457767 51.0590841,20.4527767 50.9760841,20.4607767 C50.9600841,16.8587767 50.9550841,13.2577767 50.9160841,9.65577668 C50.9100841,9.08777668 51.0260841,8.83577668 51.6510841,8.88277668 C52.3850841,8.93577668 53.1320841,8.95777668 53.8610841,8.87877668 C54.7100841,8.78677668 54.8430841,9.18377668 54.7140841,9.86877668\",\n id: \"Fill-61\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M68.9288841,8.96547668 C68.1938841,9.35147668 67.3998841,9.15547668 66.6478841,9.12047668 C65.6978841,9.07547668 65.4748841,9.43447668 65.4898841,10.3244767 C65.5388841,13.2684767 65.5158841,16.2114767 65.4998841,19.1544767 C65.4978841,19.5854767 65.6638841,20.0614767 65.2978841,20.4414767 C65.2738841,16.7834767 65.2578841,13.1254767 65.2158841,9.46847668 C65.2098841,8.93847668 65.4618841,8.87747668 65.8848841,8.89247668 C66.8988841,8.92947668 67.9138841,8.94247668 68.9288841,8.96547668\",\n id: \"Fill-63\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M37.8849841,15.0327767 C37.4359841,13.7697767 37.7399841,12.4677767 37.6969841,11.1847767 C37.6139841,8.82877668 38.0049841,9.17877668 35.5889841,9.14377668 C35.1419841,9.13777668 34.6949841,9.14477668 34.2459841,9.14677668 C34.1759841,9.14277668 34.1049841,9.14077668 34.0329841,9.14077668 C35.2189841,8.58077668 36.4669841,9.00077668 37.6829841,8.93377668 C38.0619841,8.91277668 37.9239841,9.38277668 37.9239841,9.63677668 C37.9219841,11.4347767 37.9009841,13.2337767 37.8849841,15.0327767\",\n id: \"Fill-65\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M62.5031841,20.4429767 C62.0781841,19.4249767 62.3081841,18.3579767 62.3241841,17.3219767 C62.3501841,15.7509767 62.0701841,14.1629767 62.4961841,12.6059767 C62.6361841,15.2179767 62.6341841,17.8309767 62.5031841,20.4429767\",\n id: \"Fill-67\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M34.0333841,9.14117668 C34.1043841,9.14117668 34.1763841,9.14317668 34.2463841,9.14717668 C34.2443841,10.9821767 34.2493841,12.8171767 34.2323841,14.6511767 C34.2293841,15.0381767 34.3843841,15.4811767 33.9703841,15.7801767 C33.9913841,13.5671767 34.0123841,11.3541767 34.0333841,9.14117668\",\n id: \"Fill-69\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M54.4073841,20.5581767 C54.4123841,18.8831767 54.4073841,17.2081767 54.4303841,15.5341767 C54.4363841,15.1071767 54.2623841,14.6191767 54.7193841,14.2881767 C54.7283841,16.1191767 54.7463841,17.9491767 54.7383841,19.7801767 C54.7373841,20.0621767 54.9143841,20.4701767 54.4073841,20.5581767\",\n id: \"Fill-71\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M44.3644841,10.8560767 C44.2904841,8.75307668 42.7694841,9.11807668 41.4444841,9.14207668 C41.1664841,9.14807668 40.8734841,9.18607668 40.6554841,8.94307668 C41.1864841,8.92707668 41.7174841,8.90007668 42.2474841,8.89907668 C44.2884841,8.89407668 44.2884841,8.89707668 44.3644841,10.8560767\",\n id: \"Fill-73\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M44.0128841,20.5415767 C44.0358841,19.1675767 44.0508841,17.7925767 44.0888841,16.4175767 C44.0988841,16.0325767 43.9428841,15.5945767 44.3528841,15.2975767 L44.2708841,20.4475767 C44.1918841,20.4795767 44.1128841,20.5095767 44.0338841,20.5405767 L44.0128841,20.5415767 Z\",\n id: \"Fill-75\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M48.6202841,8.92537668 L47.7942841,8.90437668 C48.0732841,8.76137668 48.3662841,8.04437668 48.6202841,8.92537668\",\n id: \"Fill-77\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M40.4796841,20.2378767 C40.6306841,20.3418767 40.7826841,20.4458767 40.9336841,20.5498767 C40.6766841,20.5978767 40.4766841,20.5648767 40.4796841,20.2378767\",\n id: \"Fill-79\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M44.0333841,20.5406767 C44.1123841,20.5096767 44.1913841,20.4786767 44.2703841,20.4476767 C44.2633841,20.6646767 44.1903841,20.7116767 44.0333841,20.5406767\",\n id: \"Fill-81\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M50.9757841,20.4605767 C51.0587841,20.4525767 51.1427841,20.4455767 51.2267841,20.4385767 C51.2467841,20.4975767 51.2577841,20.5605767 51.2587841,20.6235767 C51.0917841,20.6955767 50.9867841,20.6585767 50.9757841,20.4605767\",\n id: \"Fill-83\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgGroup19);\nexport default __webpack_public_path__ + \"static/media/Group 19.9e49e972b19644350cb1a56cc8375114.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgGroup20(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"89px\",\n height: \"18px\",\n viewBox: \"0 0 89 18\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"Group 20\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Final-design-tweak\",\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group-20\",\n transform: \"translate(0.854400, 0.576000)\",\n fill: \"#0AEDC2\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M82.9749,14.0067 C82.9749,12.7017 84.0369,11.6887 85.2929,11.6887 C86.5969,11.6887 87.6119,12.7507 87.6119,14.0067 C87.6119,15.2627 86.5489,16.3247 85.2929,16.3247 C84.0369,16.3247 82.9749,15.3107 82.9749,14.0067\",\n id: \"Fill-119\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.887,7.9207 C8.887,6.4237 8.598,5.3607 8.018,4.6367 C7.487,3.9607 6.569,3.5737 5.409,3.5737 L4.25,3.5737 L4.25,12.5577 L5.217,12.5577 C6.521,12.5577 7.439,12.1707 8.067,11.3987 C8.598,10.6257 8.887,9.4667 8.887,7.9207 M13.33,7.7757 C13.33,10.4817 12.655,12.5097 11.205,13.9577 C9.757,15.4067 7.728,16.1317 5.12,16.1317 L-2.66453526e-14,16.1317 L-2.66453526e-14,0.0487 L5.409,0.0487 C7.97,0.0487 9.902,0.6767 11.254,2.0287 C12.655,3.3327 13.33,5.2647 13.33,7.7757\",\n id: \"Fill-121\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n id: \"Fill-123\",\n points: \"27.3846 16.132 31.3936 16.132 31.3936 8.34887715e-14 27.3846 8.34887715e-14\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M37.0442,10.0946 C37.0442,11.1566 37.1902,11.8816 37.4312,12.4126 C37.6722,12.9446 38.1062,13.1856 38.7832,13.1856 C39.4592,13.1856 39.8462,12.9446 40.1362,12.4126 C40.3772,11.8816 40.5222,11.0606 40.5222,10.0946 C40.5222,9.0326 40.3772,8.3076 40.1362,7.7766 C39.8942,7.2926 39.4592,7.0036 38.7832,7.0036 C38.2032,7.0036 37.7212,7.2446 37.4312,7.7766 C37.1902,8.3076 37.0442,9.0326 37.0442,10.0946 M44.6272,10.0946 C44.6272,12.0266 44.1442,13.5726 43.0812,14.6826 C42.0192,15.7936 40.5702,16.3246 38.7342,16.3246 C36.9472,16.3246 35.5472,15.7936 34.4842,14.6346 C33.4222,13.4756 32.8912,11.9786 32.8912,10.0946 C32.8912,8.1626 33.3742,6.6166 34.4372,5.5546 C35.4992,4.4436 36.9472,3.9116 38.7832,3.9116 C39.9422,3.9116 40.9562,4.1546 41.8252,4.6366 C42.7432,5.1196 43.3712,5.8446 43.8552,6.7616 C44.4342,7.7766 44.6272,8.8386 44.6272,10.0946\",\n id: \"Fill-125\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n id: \"Fill-126\",\n points: \"46.2686 16.083 50.2776 16.083 50.2776 4.105 46.2686 4.105\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n id: \"Fill-127\",\n points: \"46.2686 2.705 50.2776 2.705 50.2776 1.39888101e-14 46.2686 1.39888101e-14\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M58.4397,13.0408 C58.9707,13.0408 59.6477,12.8948 60.3727,12.6538 L60.3727,15.6968 C59.8407,15.9378 59.3097,16.0828 58.8267,16.1798 C58.3437,16.2758 57.7637,16.3248 57.0877,16.3248 C55.7357,16.3248 54.7697,15.9868 54.1417,15.2628 C53.5617,14.5858 53.2237,13.5228 53.2237,12.1228 L53.2237,7.1958 L51.8237,7.1958 L51.8237,4.1048 L53.2237,4.1048 L53.2237,1.1108 L57.2807,0.4358 L57.2807,4.2018 L59.8887,4.2018 L59.8887,7.2448 L57.2807,7.2448 L57.2807,11.8818 C57.3777,12.7018 57.7157,13.0408 58.4397,13.0408\",\n id: \"Fill-128\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M67.8098,13.0408 C68.3408,13.0408 69.0168,12.8948 69.7418,12.6538 L69.7418,15.6968 C69.2098,15.9378 68.6788,16.0828 68.1968,16.1798 C67.7128,16.2758 67.1338,16.3248 66.4568,16.3248 C65.1048,16.3248 64.1388,15.9868 63.5108,15.2628 C62.9318,14.5858 62.5938,13.5228 62.5938,12.1228 L62.5938,7.1958 L61.1928,7.1958 L61.1928,4.1048 L62.5938,4.1048 L62.5938,1.0628 L66.6508,0.4358 L66.6508,4.2018 L69.2588,4.2018 L69.2588,7.2448 L66.6508,7.2448 L66.6508,11.8818 C66.6988,12.7018 67.0848,13.0408 67.8098,13.0408\",\n id: \"Fill-129\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M74.8616,8.6453 C74.9096,8.0173 75.1026,7.4863 75.3926,7.1963 C75.6816,6.9073 76.0686,6.7613 76.5996,6.7613 C77.0836,6.7613 77.5656,6.9073 77.8556,7.2453 C78.1456,7.5833 78.2906,8.0173 78.3386,8.6453 L74.8616,8.6453 Z M80.5596,5.3133 C79.5936,4.3473 78.2426,3.9123 76.5036,3.9123 C74.6686,3.9123 73.2186,4.4433 72.2046,5.5543 C71.1906,6.6653 70.7076,8.2103 70.7076,10.2393 C70.7076,12.1703 71.2386,13.7163 72.3006,14.7793 C73.4126,15.8413 74.9096,16.3733 76.8406,16.3733 C77.8066,16.3733 78.5806,16.3253 79.2566,16.1793 C79.8836,16.0353 80.6086,15.8413 81.1876,15.5033 L80.6086,12.7983 C80.1736,12.9923 79.6906,13.1373 79.3046,13.2343 C78.7246,13.3783 78.0496,13.4263 77.3726,13.4263 C76.5996,13.4263 75.9716,13.2343 75.5376,12.8953 C75.1026,12.5093 74.8616,11.9783 74.8616,11.3013 L82.0576,11.3013 L82.0576,9.4173 C82.0086,7.6313 81.4776,6.2793 80.5596,5.3133 L80.5596,5.3133 Z\",\n id: \"Fill-130\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.6429,8.6453 C18.6919,8.0173 18.8849,7.4863 19.1739,7.1963 C19.4639,6.9073 19.8509,6.7613 20.3819,6.7613 C20.9139,6.7613 21.3479,6.9073 21.6379,7.2453 C21.9269,7.5833 22.0729,8.0173 22.1209,8.6453 L18.6429,8.6453 Z M24.3909,5.3133 C23.3759,4.3473 22.0729,3.9123 20.3329,3.9123 C18.4979,3.9123 17.0489,4.4433 16.0359,5.5543 C15.0209,6.6653 14.5389,8.2103 14.5389,10.2393 C14.5389,12.1703 15.0699,13.7163 16.1319,14.7793 C17.2429,15.8413 18.7399,16.3733 20.6719,16.3733 C21.6379,16.3733 22.4109,16.3253 23.0859,16.1793 C23.7139,16.0353 24.4389,15.8413 25.0189,15.5033 L24.4389,12.7503 C24.0039,12.9443 23.5219,13.0883 23.1349,13.1853 C22.5549,13.3303 21.8789,13.3783 21.2039,13.3783 C20.4299,13.3783 19.8019,13.1853 19.3679,12.8473 C18.9329,12.4603 18.6919,11.9293 18.6919,11.2533 L25.8879,11.2533 L25.8879,9.4173 C25.8389,7.6313 25.3079,6.2793 24.3909,5.3133 L24.3909,5.3133 Z\",\n id: \"Fill-131\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgGroup20);\nexport default __webpack_public_path__ + \"static/media/Group 20.7f2809296b96c60f36f9be243c3b7f43.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgGroup22(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"134px\",\n height: \"27px\",\n viewBox: \"0 0 134 27\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"Group 22\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Final-design-tweak\",\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group-22\",\n transform: \"translate(0.531200, 0.803000)\",\n fill: \"#0AEDC2\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M70.7795,17.5013 C71.2225,17.5013 72.2195,17.5013 72.2195,13.2923 C72.2195,8.9723 71.4445,8.4183 70.7795,8.4183 C70.0045,8.4183 69.2285,8.8613 69.2285,13.1813 C69.2285,17.5013 70.1155,17.5013 70.7795,17.5013\",\n id: \"Fill-236\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M125.6086,8.4183 C124.7226,8.4183 124.2796,8.9723 124.2796,11.5203 L126.7166,11.5203 C126.7166,9.6373 126.6056,8.4183 125.6086,8.4183\",\n id: \"Fill-237\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M114.1995,17.1683 C114.7545,17.1683 115.7505,16.1723 115.7505,15.8393 L115.7505,10.1903 C115.7505,10.0793 115.0865,8.8613 114.3105,8.8613 C113.4245,8.8613 112.6485,9.4153 112.6485,13.1813 C112.6485,15.0643 112.8705,17.1683 114.1995,17.1683\",\n id: \"Fill-238\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M45.0823,15.5072 C45.0823,16.6142 45.6363,16.9472 46.0783,16.9472 C46.3013,16.9472 46.9653,16.6142 47.2973,16.0612 L47.2973,12.9592 C46.0783,13.4032 45.0823,14.5102 45.0823,15.5072\",\n id: \"Fill-239\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.5871,17.722 L25.8091,17.722 C26.1411,17.722 27.2481,17.612 27.2481,16.726 L27.2481,4.541 C27.1381,4.431 26.1411,3.212 26.0301,3.101 L25.6971,3.101 L25.6971,2.105 L30.5711,2.105 C30.5711,2.105 36.7751,10.633 37.4401,11.63 L37.4401,4.32 C37.4401,3.656 36.7751,3.212 36.4421,3.212 L35.6671,3.212 L35.6671,2.105 L40.9831,2.105 L40.9831,3.212 L40.7621,3.212 C39.9861,3.212 39.5431,3.544 39.5431,4.32 L39.5431,19.162 L38.4361,19.162 C38.4361,19.162 30.0181,7.865 29.3541,6.978 L29.3541,16.726 C29.3541,17.058 30.0181,17.612 30.5711,17.612 L31.1251,17.612 L31.1251,18.719 L25.5871,18.719 L25.5871,17.722 Z M45.8581,8.529 C45.1921,8.529 43.5311,8.75 42.8661,11.742 L42.8661,11.962 L41.8691,11.962 L41.8691,8.529 L41.9811,8.418 C42.5341,7.865 43.7531,7.089 46.0781,7.089 C48.8481,7.089 50.7311,8.308 50.7311,10.191 L50.7311,16.726 C50.7311,16.948 50.8421,17.058 51.0641,17.058 C51.1741,17.168 51.2851,17.168 51.2851,17.058 L51.7281,16.615 L51.7281,17.722 L51.6171,17.833 C51.0641,18.609 50.2881,19.052 49.4011,19.052 C48.5161,19.052 47.7401,18.497 47.5191,17.833 C46.5221,18.609 45.4141,19.052 44.3071,19.052 C42.6451,19.052 41.5371,18.055 41.5371,16.394 C41.5371,14.178 43.4201,12.517 47.4081,11.409 L47.4081,9.747 C47.4081,9.083 46.5221,8.529 45.8581,8.529 L45.8581,8.529 Z M52.2811,7.753 L52.3931,7.643 C53.8321,6.535 55.1611,4.541 55.8261,3.434 L55.9371,3.323 L56.8231,3.323 L56.8231,7.311 L58.8161,7.311 L58.8161,8.75 L56.8231,8.75 L56.8231,16.172 C56.8231,16.394 56.9341,16.615 57.1551,16.836 C57.4871,16.948 57.9311,17.058 58.1521,16.836 L58.4841,16.726 L58.4841,17.612 L58.4841,17.722 C57.7091,18.719 56.9341,18.941 55.9371,18.941 C54.6081,18.941 53.3891,18.055 53.3891,16.394 L53.3891,8.75 L52.2811,8.75 L52.2811,7.753 Z M59.4821,17.722 L59.7031,17.722 C60.1461,17.722 60.5891,17.39 60.5891,16.948 L60.5891,7.311 L64.0231,7.311 L64.0231,16.948 C64.0231,17.39 64.5761,17.722 64.7981,17.722 L65.0201,17.722 L65.0201,18.719 L59.4821,18.719 L59.4821,17.722 Z M62.2501,1.883 C63.3581,1.883 64.2441,2.769 64.2441,3.877 C64.2441,4.985 63.3581,5.76 62.2501,5.76 C61.2541,5.76 60.3671,4.985 60.3671,3.877 C60.3671,2.769 61.2541,1.883 62.2501,1.883 L62.2501,1.883 Z M70.7791,6.978 C73.6591,6.978 75.8751,9.747 75.8751,13.292 C75.8751,17.168 72.8841,19.052 70.7791,19.052 C69.0081,19.052 65.6851,17.722 65.6851,12.959 C65.6851,9.304 68.3431,6.978 70.7791,6.978 L70.7791,6.978 Z M76.5391,17.722 L76.6501,17.722 C77.2041,17.722 77.6471,17.39 77.6471,16.836 L77.6471,8.972 C77.6471,8.418 77.0931,8.308 77.0931,8.308 L76.5391,8.308 L76.5391,7.311 L81.0801,7.311 L81.0801,8.308 C81.7451,7.421 82.7421,6.978 84.0711,6.978 C86.0651,6.978 87.1731,8.75 87.1731,10.523 L87.1731,17.058 C87.1731,17.39 87.2831,17.722 87.9481,17.722 L88.1701,17.722 L88.1701,18.719 L82.7421,18.719 L82.7421,17.722 L82.8531,17.722 C83.1861,17.722 83.7391,17.28 83.7391,17.058 L83.7391,10.411 C83.7391,9.526 83.4061,8.972 82.6311,8.972 C81.8561,8.972 81.0801,9.969 81.0801,10.301 L81.0801,16.836 C81.0801,17.39 81.4131,17.722 81.9671,17.722 L82.1891,17.722 L82.1891,18.719 L76.5391,18.719 L76.5391,17.722 Z M87.8381,7.311 L92.9331,7.311 L92.9331,8.308 L92.7111,8.308 C92.3791,8.308 92.2681,8.308 92.1571,8.529 C92.0471,8.529 92.0471,8.64 92.0471,8.75 C92.0471,8.862 92.0471,9.083 92.1571,9.194 C92.3791,9.858 93.3761,12.517 93.7081,13.624 C94.0401,12.849 95.0371,10.301 95.0371,10.191 C95.0371,9.969 94.5941,8.64 94.5941,8.64 C94.4831,8.308 94.0401,8.308 93.8181,8.308 L93.5981,8.308 L93.5981,7.311 L99.0251,7.311 L99.0251,8.308 L98.8031,8.308 C98.4711,8.308 98.2491,8.308 98.1391,8.529 C98.0271,8.64 98.0271,8.64 98.0271,8.75 L98.0271,8.972 C98.1391,9.304 98.8031,12.184 99.1361,13.513 C99.5781,12.184 100.4651,9.526 100.6861,8.972 L100.6861,8.75 C100.6861,8.75 100.6861,8.64 100.5751,8.529 C100.4651,8.308 100.1331,8.308 99.9111,8.308 L99.6901,8.308 L99.6901,7.311 L103.2341,7.311 L103.2341,8.197 L103.1231,8.197 C102.6801,8.197 102.4591,8.529 102.2371,9.304 L98.8031,18.941 L97.6951,18.941 C97.6951,18.941 96.0341,13.513 95.7011,12.517 C95.3691,13.513 93.3761,18.941 93.3761,18.941 L92.2681,18.941 L92.1571,18.83 C90.7171,14.953 88.6131,8.972 88.3911,8.64 C88.2801,8.418 88.0591,8.308 87.9481,8.308 L87.8381,8.197 L87.8381,7.311 Z M104.1201,16.948 L104.1201,7.311 L107.5541,7.311 L107.5541,16.948 C107.5541,17.39 108.1081,17.722 108.3291,17.722 L108.5511,17.722 L108.5511,18.719 L103.0121,18.719 L103.0121,17.722 L103.2341,17.722 C103.6771,17.722 104.1201,17.39 104.1201,16.948 L104.1201,16.948 Z M105.7811,1.883 C106.8891,1.883 107.7751,2.769 107.7751,3.877 C107.7751,4.985 106.8891,5.76 105.7811,5.76 C104.6741,5.76 103.8991,4.985 103.8991,3.877 C103.8991,2.769 104.6741,1.883 105.7811,1.883 L105.7811,1.883 Z M113.4241,6.978 C114.6431,6.978 115.4181,7.532 115.8611,7.975 L115.8611,3.877 C115.8611,3.434 115.1961,3.101 114.8641,3.101 L114.1991,3.101 L114.1991,2.105 L119.1841,2.105 L119.1841,16.836 C119.1841,17.28 119.5171,17.722 119.9591,17.722 L120.1811,17.722 L120.1811,18.719 L115.7501,18.719 L115.7501,17.944 C115.3071,18.497 114.4211,19.052 113.0921,19.052 C111.7631,19.052 109.1051,17.833 109.1051,13.181 C109.1051,8.64 111.7631,6.978 113.4241,6.978 L113.4241,6.978 Z M125.4981,6.978 C127.6031,6.978 129.8171,8.75 129.8171,12.849 L129.8171,13.071 L124.2791,13.071 C124.2791,15.618 124.7231,17.058 126.8271,17.058 C127.8241,17.058 128.9321,16.172 128.9321,16.172 L129.1531,16.061 L129.5961,16.948 L129.4851,17.058 C128.7101,17.944 127.3811,19.052 125.4981,19.052 C125.0551,19.052 120.8461,18.83 120.8461,13.071 C120.8461,8.197 123.8361,6.978 125.4981,6.978 L125.4981,6.978 Z M132.1441,20.824 L132.1441,5.32907052e-15 L0.0001,5.32907052e-15 L0.0001,20.824 L6.0921,20.824 L6.0921,18.719 L5.7601,18.497 C3.6551,17.168 2.3261,15.064 2.3261,12.738 C2.3261,8.862 5.5381,5.649 9.4151,5.649 L9.9691,5.649 L9.9691,4.653 L12.2951,4.653 L12.2951,2.105 L19.1621,2.105 L19.1621,7.975 C19.6061,8.529 23.1501,11.962 23.1501,11.962 L23.1501,20.824 L132.1441,20.824 Z\",\n id: \"Fill-240\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n id: \"Fill-241\",\n points: \"6.092 23.4828 6.092 21.7108 1.13686838e-13 21.7108 1.13686838e-13 25.9198 132.144 25.9198 132.144 21.7108 19.162 21.7108 19.162 23.4828\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n id: \"Fill-242\",\n points: \"8.3078 21.267 12.4068 21.267 12.4068 20.824 8.3078 20.824\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n id: \"Fill-243\",\n points: \"6.0928 21.711 7.2008 21.711 7.2008 20.824 6.0928 20.824\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n id: \"Fill-244\",\n points: \"13.5138 21.267 16.9478 21.267 16.9478 20.824 13.5138 20.824\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n id: \"Fill-245\",\n points: \"18.0558 21.711 19.1628 21.711 19.1628 20.824 18.0558 20.824\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n id: \"Fill-246\",\n points: \"17.0588 17.723 18.0548 17.723 18.0548 15.619 17.0588 15.619\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20.9348,18.7191 L16.9478,18.7191 L16.9478,20.8231 L18.0548,20.8231 L18.0548,19.8271 L22.0428,19.8271 L22.0428,12.4061 L18.0548,8.4181 L18.0548,3.1011 L13.4028,3.1011 L13.4028,5.6491 L11.0768,5.6491 L11.0768,6.9781 C10.5238,6.7571 9.9688,6.7571 9.4148,6.7571 C6.0918,6.7571 3.4338,9.4151 3.4338,12.7381 C3.4338,14.8421 4.6528,16.6151 6.3138,17.6121 L10.0808,11.6301 L15.3968,11.6301 C15.0648,9.7471 13.8458,8.1971 12.0738,7.3111 L12.0738,6.7571 L14.3998,6.7571 L14.3998,4.2091 L16.9478,4.2091 L16.9478,12.7381 L20.9348,12.7381 L20.9348,18.7191 Z\",\n id: \"Fill-247\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n id: \"Fill-248\",\n points: \"8.3079 18.1654 12.4069 18.1654 12.4069 20.8234 13.5139 20.8234 13.5139 18.1654 16.9479 12.7374 10.7449 12.7374 7.2009 18.2764 7.2009 20.8234 8.3079 20.8234\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n id: \"Fill-249\",\n points: \"7.2008 22.374 18.0548 22.374 18.0548 21.71 7.2008 21.71\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M125.6086,8.4183 C124.7226,8.4183 124.2796,8.9723 124.2796,11.5203 L126.7166,11.5203 C126.7166,9.6373 126.6056,8.4183 125.6086,8.4183\",\n id: \"Fill-237\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M114.1995,17.1683 C114.7545,17.1683 115.7505,16.1723 115.7505,15.8393 L115.7505,10.1903 C115.7505,10.0793 115.0865,8.8613 114.3105,8.8613 C113.4245,8.8613 112.6485,9.4153 112.6485,13.1813 C112.6485,15.0643 112.8705,17.1683 114.1995,17.1683\",\n id: \"Fill-238\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M45.0823,15.5072 C45.0823,16.6142 45.6363,16.9472 46.0783,16.9472 C46.3013,16.9472 46.9653,16.6142 47.2973,16.0612 L47.2973,12.9592 C46.0783,13.4032 45.0823,14.5102 45.0823,15.5072\",\n id: \"Fill-239\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.5871,17.722 L25.8091,17.722 C26.1411,17.722 27.2481,17.612 27.2481,16.726 L27.2481,4.541 C27.1381,4.431 26.1411,3.212 26.0301,3.101 L25.6971,3.101 L25.6971,2.105 L30.5711,2.105 C30.5711,2.105 36.7751,10.633 37.4401,11.63 L37.4401,4.32 C37.4401,3.656 36.7751,3.212 36.4421,3.212 L35.6671,3.212 L35.6671,2.105 L40.9831,2.105 L40.9831,3.212 L40.7621,3.212 C39.9861,3.212 39.5431,3.544 39.5431,4.32 L39.5431,19.162 L38.4361,19.162 C38.4361,19.162 30.0181,7.865 29.3541,6.978 L29.3541,16.726 C29.3541,17.058 30.0181,17.612 30.5711,17.612 L31.1251,17.612 L31.1251,18.719 L25.5871,18.719 L25.5871,17.722 Z M45.8581,8.529 C45.1921,8.529 43.5311,8.75 42.8661,11.742 L42.8661,11.962 L41.8691,11.962 L41.8691,8.529 L41.9811,8.418 C42.5341,7.865 43.7531,7.089 46.0781,7.089 C48.8481,7.089 50.7311,8.308 50.7311,10.191 L50.7311,16.726 C50.7311,16.948 50.8421,17.058 51.0641,17.058 C51.1741,17.168 51.2851,17.168 51.2851,17.058 L51.7281,16.615 L51.7281,17.722 L51.6171,17.833 C51.0641,18.609 50.2881,19.052 49.4011,19.052 C48.5161,19.052 47.7401,18.497 47.5191,17.833 C46.5221,18.609 45.4141,19.052 44.3071,19.052 C42.6451,19.052 41.5371,18.055 41.5371,16.394 C41.5371,14.178 43.4201,12.517 47.4081,11.409 L47.4081,9.747 C47.4081,9.083 46.5221,8.529 45.8581,8.529 L45.8581,8.529 Z M52.2811,7.753 L52.3931,7.643 C53.8321,6.535 55.1611,4.541 55.8261,3.434 L55.9371,3.323 L56.8231,3.323 L56.8231,7.311 L58.8161,7.311 L58.8161,8.75 L56.8231,8.75 L56.8231,16.172 C56.8231,16.394 56.9341,16.615 57.1551,16.836 C57.4871,16.948 57.9311,17.058 58.1521,16.836 L58.4841,16.726 L58.4841,17.612 L58.4841,17.722 C57.7091,18.719 56.9341,18.941 55.9371,18.941 C54.6081,18.941 53.3891,18.055 53.3891,16.394 L53.3891,8.75 L52.2811,8.75 L52.2811,7.753 Z M59.4821,17.722 L59.7031,17.722 C60.1461,17.722 60.5891,17.39 60.5891,16.948 L60.5891,7.311 L64.0231,7.311 L64.0231,16.948 C64.0231,17.39 64.5761,17.722 64.7981,17.722 L65.0201,17.722 L65.0201,18.719 L59.4821,18.719 L59.4821,17.722 Z M62.2501,1.883 C63.3581,1.883 64.2441,2.769 64.2441,3.877 C64.2441,4.985 63.3581,5.76 62.2501,5.76 C61.2541,5.76 60.3671,4.985 60.3671,3.877 C60.3671,2.769 61.2541,1.883 62.2501,1.883 L62.2501,1.883 Z M70.7791,6.978 C73.6591,6.978 75.8751,9.747 75.8751,13.292 C75.8751,17.168 72.8841,19.052 70.7791,19.052 C69.0081,19.052 65.6851,17.722 65.6851,12.959 C65.6851,9.304 68.3431,6.978 70.7791,6.978 L70.7791,6.978 Z M76.5391,17.722 L76.6501,17.722 C77.2041,17.722 77.6471,17.39 77.6471,16.836 L77.6471,8.972 C77.6471,8.418 77.0931,8.308 77.0931,8.308 L76.5391,8.308 L76.5391,7.311 L81.0801,7.311 L81.0801,8.308 C81.7451,7.421 82.7421,6.978 84.0711,6.978 C86.0651,6.978 87.1731,8.75 87.1731,10.523 L87.1731,17.058 C87.1731,17.39 87.2831,17.722 87.9481,17.722 L88.1701,17.722 L88.1701,18.719 L82.7421,18.719 L82.7421,17.722 L82.8531,17.722 C83.1861,17.722 83.7391,17.28 83.7391,17.058 L83.7391,10.411 C83.7391,9.526 83.4061,8.972 82.6311,8.972 C81.8561,8.972 81.0801,9.969 81.0801,10.301 L81.0801,16.836 C81.0801,17.39 81.4131,17.722 81.9671,17.722 L82.1891,17.722 L82.1891,18.719 L76.5391,18.719 L76.5391,17.722 Z M87.8381,7.311 L92.9331,7.311 L92.9331,8.308 L92.7111,8.308 C92.3791,8.308 92.2681,8.308 92.1571,8.529 C92.0471,8.529 92.0471,8.64 92.0471,8.75 C92.0471,8.862 92.0471,9.083 92.1571,9.194 C92.3791,9.858 93.3761,12.517 93.7081,13.624 C94.0401,12.849 95.0371,10.301 95.0371,10.191 C95.0371,9.969 94.5941,8.64 94.5941,8.64 C94.4831,8.308 94.0401,8.308 93.8181,8.308 L93.5981,8.308 L93.5981,7.311 L99.0251,7.311 L99.0251,8.308 L98.8031,8.308 C98.4711,8.308 98.2491,8.308 98.1391,8.529 C98.0271,8.64 98.0271,8.64 98.0271,8.75 L98.0271,8.972 C98.1391,9.304 98.8031,12.184 99.1361,13.513 C99.5781,12.184 100.4651,9.526 100.6861,8.972 L100.6861,8.75 C100.6861,8.75 100.6861,8.64 100.5751,8.529 C100.4651,8.308 100.1331,8.308 99.9111,8.308 L99.6901,8.308 L99.6901,7.311 L103.2341,7.311 L103.2341,8.197 L103.1231,8.197 C102.6801,8.197 102.4591,8.529 102.2371,9.304 L98.8031,18.941 L97.6951,18.941 C97.6951,18.941 96.0341,13.513 95.7011,12.517 C95.3691,13.513 93.3761,18.941 93.3761,18.941 L92.2681,18.941 L92.1571,18.83 C90.7171,14.953 88.6131,8.972 88.3911,8.64 C88.2801,8.418 88.0591,8.308 87.9481,8.308 L87.8381,8.197 L87.8381,7.311 Z M104.1201,16.948 L104.1201,7.311 L107.5541,7.311 L107.5541,16.948 C107.5541,17.39 108.1081,17.722 108.3291,17.722 L108.5511,17.722 L108.5511,18.719 L103.0121,18.719 L103.0121,17.722 L103.2341,17.722 C103.6771,17.722 104.1201,17.39 104.1201,16.948 L104.1201,16.948 Z M105.7811,1.883 C106.8891,1.883 107.7751,2.769 107.7751,3.877 C107.7751,4.985 106.8891,5.76 105.7811,5.76 C104.6741,5.76 103.8991,4.985 103.8991,3.877 C103.8991,2.769 104.6741,1.883 105.7811,1.883 L105.7811,1.883 Z M113.4241,6.978 C114.6431,6.978 115.4181,7.532 115.8611,7.975 L115.8611,3.877 C115.8611,3.434 115.1961,3.101 114.8641,3.101 L114.1991,3.101 L114.1991,2.105 L119.1841,2.105 L119.1841,16.836 C119.1841,17.28 119.5171,17.722 119.9591,17.722 L120.1811,17.722 L120.1811,18.719 L115.7501,18.719 L115.7501,17.944 C115.3071,18.497 114.4211,19.052 113.0921,19.052 C111.7631,19.052 109.1051,17.833 109.1051,13.181 C109.1051,8.64 111.7631,6.978 113.4241,6.978 L113.4241,6.978 Z M125.4981,6.978 C127.6031,6.978 129.8171,8.75 129.8171,12.849 L129.8171,13.071 L124.2791,13.071 C124.2791,15.618 124.7231,17.058 126.8271,17.058 C127.8241,17.058 128.9321,16.172 128.9321,16.172 L129.1531,16.061 L129.5961,16.948 L129.4851,17.058 C128.7101,17.944 127.3811,19.052 125.4981,19.052 C125.0551,19.052 120.8461,18.83 120.8461,13.071 C120.8461,8.197 123.8361,6.978 125.4981,6.978 L125.4981,6.978 Z M132.1441,20.824 L132.1441,5.32907052e-15 L0.0001,5.32907052e-15 L0.0001,20.824 L6.0921,20.824 L6.0921,18.719 L5.7601,18.497 C3.6551,17.168 2.3261,15.064 2.3261,12.738 C2.3261,8.862 5.5381,5.649 9.4151,5.649 L9.9691,5.649 L9.9691,4.653 L12.2951,4.653 L12.2951,2.105 L19.1621,2.105 L19.1621,7.975 C19.6061,8.529 23.1501,11.962 23.1501,11.962 L23.1501,20.824 L132.1441,20.824 Z\",\n id: \"Fill-240\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n id: \"Fill-241\",\n points: \"6.092 23.4828 6.092 21.7108 1.13686838e-13 21.7108 1.13686838e-13 25.9198 132.144 25.9198 132.144 21.7108 19.162 21.7108 19.162 23.4828\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n id: \"Fill-242\",\n points: \"8.3078 21.267 12.4068 21.267 12.4068 20.824 8.3078 20.824\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n id: \"Fill-243\",\n points: \"6.0928 21.711 7.2008 21.711 7.2008 20.824 6.0928 20.824\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n id: \"Fill-244\",\n points: \"13.5138 21.267 16.9478 21.267 16.9478 20.824 13.5138 20.824\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n id: \"Fill-245\",\n points: \"18.0558 21.711 19.1628 21.711 19.1628 20.824 18.0558 20.824\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n id: \"Fill-246\",\n points: \"17.0588 17.723 18.0548 17.723 18.0548 15.619 17.0588 15.619\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20.9348,18.7191 L16.9478,18.7191 L16.9478,20.8231 L18.0548,20.8231 L18.0548,19.8271 L22.0428,19.8271 L22.0428,12.4061 L18.0548,8.4181 L18.0548,3.1011 L13.4028,3.1011 L13.4028,5.6491 L11.0768,5.6491 L11.0768,6.9781 C10.5238,6.7571 9.9688,6.7571 9.4148,6.7571 C6.0918,6.7571 3.4338,9.4151 3.4338,12.7381 C3.4338,14.8421 4.6528,16.6151 6.3138,17.6121 L10.0808,11.6301 L15.3968,11.6301 C15.0648,9.7471 13.8458,8.1971 12.0738,7.3111 L12.0738,6.7571 L14.3998,6.7571 L14.3998,4.2091 L16.9478,4.2091 L16.9478,12.7381 L20.9348,12.7381 L20.9348,18.7191 Z\",\n id: \"Fill-247\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n id: \"Fill-248\",\n points: \"8.3079 18.1654 12.4069 18.1654 12.4069 20.8234 13.5139 20.8234 13.5139 18.1654 16.9479 12.7374 10.7449 12.7374 7.2009 18.2764 7.2009 20.8234 8.3079 20.8234\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n id: \"Fill-249\",\n points: \"7.2008 22.374 18.0548 22.374 18.0548 21.71 7.2008 21.71\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgGroup22);\nexport default __webpack_public_path__ + \"static/media/Group 22.4809c22c2026861566f146ce3d3bb1eb.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgGroup23(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"74px\",\n height: \"28px\",\n viewBox: \"0 0 74 28\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"Group 23\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Final-design-tweak\",\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group-23\",\n transform: \"translate(0.740100, 0.000800)\",\n fill: \"#0AEDC2\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M69.0823,13.659 C69.0823,11.889 67.6083,10.416 65.8403,10.416 C64.0703,10.416 62.5973,11.889 62.5973,13.659 L62.5973,20.243 L58.9613,20.243 L58.9613,13.659 C58.9613,9.826 62.0073,6.78 65.8403,6.78 C69.6723,6.78 72.7193,9.826 72.7193,13.659 L72.7193,20.243 L69.1813,20.243 C69.0823,20.243 69.0823,14.543 69.0823,13.659\",\n id: \"Fill-132\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M50.5101,16.9012 C52.3771,16.9012 53.8511,15.4272 53.8511,13.5602 C53.8511,11.6932 52.3771,10.2192 50.5101,10.2192 C48.6431,10.2192 47.1691,11.6932 47.1691,13.5602 C47.2671,15.4272 48.7411,17.0002 50.5101,16.9012 C50.5101,17.0002 50.5101,17.0002 50.5101,16.9012 M43.6311,13.6592 C43.6311,9.8262 46.6781,6.7802 50.5101,6.7802 C54.3421,6.7802 57.3891,9.8262 57.3891,13.6592 C57.3891,17.4912 54.3421,20.5372 50.5101,20.5372 C46.7761,20.5372 43.6311,17.4912 43.6311,13.6592\",\n id: \"Fill-133\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M35.18,11.202 C34.689,10.808 34.787,10.22 35.671,10.022 C37.244,9.728 38.914,10.022 40.29,10.711 L42.059,8.352 C40.683,7.369 39.013,6.78 37.342,6.78 C37.342,6.78 33.411,6.289 31.741,9.335 C30.954,11.006 31.544,12.971 33.117,13.953 C34.787,15.034 37.833,15.428 38.718,15.919 C39.603,16.41 39.209,17.196 38.128,17.392 C36.261,17.59 34.394,17.098 32.92,16.115 L31.152,18.473 C32.625,19.555 34.394,20.341 36.163,20.537 C36.163,20.537 39.897,21.225 41.961,18.572 C43.14,17 42.944,14.739 41.371,13.56 C41.175,13.364 40.88,13.265 40.683,13.167 C38.817,12.184 36.065,11.792 35.18,11.202\",\n id: \"Fill-134\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.18,22.994 C19.261,23.681 20.44,24.174 21.619,24.271 C25.55,24.37 25.845,20.243 25.845,19.26 C24.96,20.046 23.782,20.537 22.602,20.537 C18.867,20.537 15.822,17.59 15.723,13.855 L15.723,13.757 L15.723,6.976 L19.36,6.976 L19.36,13.757 C19.36,15.525 20.833,17 22.602,17 C24.37,17 25.845,15.525 25.845,13.757 L25.845,6.976 L29.481,6.976 L29.481,13.757 C29.481,19.751 29.776,25.844 23.978,27.318 C21.325,27.907 18.475,27.22 16.313,25.451 L18.18,22.994 Z\",\n id: \"Fill-135\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.22,13.659 C10.22,15.428 8.746,16.901 6.879,16.901 C5.111,16.901 3.636,15.428 3.636,13.56 C3.636,11.792 5.111,10.317 6.879,10.317 L10.122,10.317 L10.22,13.659 Z M13.857,-1.24344979e-14 L10.22,-1.24344979e-14 L10.22,6.681 L6.879,6.681 C3.047,6.681 8.8817842e-16,9.728 8.8817842e-16,13.56 C8.8817842e-16,17.392 3.047,20.439 6.879,20.439 C10.711,20.439 13.758,17.392 13.758,13.56 L13.758,6.681 L13.857,-1.24344979e-14 Z\",\n id: \"Fill-136\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgGroup23);\nexport default __webpack_public_path__ + \"static/media/Group 23.b9ef5de8da94478f567ba5670506e8e1.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgGroup25(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"128px\",\n height: \"49px\",\n viewBox: \"0 0 128 49\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"Group 25\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Final-design-tweak\",\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group-25\",\n transform: \"translate(0.805200, 0.804100)\",\n fill: \"#0AEDC2\"\n }, /*#__PURE__*/React.createElement(\"polygon\", {\n id: \"Fill-137\",\n points: \"122.5505 16.801 122.5645 16.801 122.5685 16.781\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n id: \"Fill-138\",\n points: \"122.568 16.801 122.564 16.803 122.564 16.802 122.547 16.806 122.55 16.801 -3.48165941e-13 16.801 54.677 31.231 122.547 16.806 122.543 16.81 67.606 34.655 89.879 40.532 122.516 16.839 99.018 42.924 116.042 47.423 122.563 16.805 122.568 16.801 122.564 16.801 122.564 16.802\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n id: \"Fill-139\",\n points: \"6.9909 4.4592 7.0309 4.4592 9.9909 14.4502 14.4079 14.4502 17.5289 0.0002 14.0839 0.0002 11.9959 10.0122 11.9559 10.0122 9.0569 0.0002 4.6399 0.0002 1.4789 14.4502 4.9249 14.4502\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23.1022,6.3645 C24.4002,6.3645 24.8252,7.2965 24.8252,8.3905 L20.4882,8.3905 C20.7512,7.3975 21.5822,6.3645 23.1022,6.3645 M22.1702,14.6935 C23.1832,14.6935 24.5002,14.4905 25.7372,14.1255 L26.2232,11.6335 C25.2302,12.0985 23.9532,12.3435 23.0212,12.3435 C20.8532,12.3435 20.3272,11.4705 20.2852,10.3765 L27.4992,10.3765 C27.6422,9.7675 27.7632,8.8565 27.7632,8.4515 C27.7632,5.3715 25.7572,4.0135 23.0822,4.0135 C18.5422,4.0135 16.9612,7.6615 16.9412,10.0325 C16.9412,12.6055 18.7652,14.6935 22.1702,14.6935\",\n id: \"Fill-140\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M29.446,9.6067 C29.202,10.6797 29.121,11.1867 29.121,11.6937 C29.121,13.8427 30.945,14.7127 32.749,14.7127 C33.458,14.7127 34.187,14.6317 34.938,14.5107 L35.343,12.1207 C34.978,12.2417 34.573,12.4027 34.209,12.4027 C33.5,12.4027 32.647,12.0187 32.647,11.3297 C32.647,10.8427 32.79,10.3357 32.951,9.5657 L33.58,6.7287 L36.559,6.7287 L37.005,4.2557 L34.168,4.2557 L34.896,1.0757 L31.391,1.0757 L30.662,4.2557 L29.061,4.2557 L28.614,6.7507 L30.074,6.7507 L29.446,9.6067 Z\",\n id: \"Fill-141\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n id: \"Fill-142\",\n points: \"42.9626 14.4504 46.5096 7.0734 46.5496 7.0734 46.6506 14.4504 50.7456 14.4504 56.1556 4.2564 52.5896 4.2564 49.2856 11.6344 49.2456 11.6344 49.2056 4.2564 44.9286 4.2564 41.5446 11.6344 41.5046 11.6344 41.4426 4.2564 37.9366 4.2564 38.8486 14.4504\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M61.9118,6.4856 C63.2688,6.4856 63.7358,7.4786 63.7358,8.5326 C63.7358,10.8426 62.6828,12.2216 61.0398,12.2216 C59.8458,12.2416 59.1358,11.3296 59.1358,9.9516 C59.1358,8.3296 60.2088,6.4856 61.9118,6.4856 M60.7768,14.6936 C64.5868,14.6936 67.3628,12.8296 67.3628,8.5736 C67.3838,6.0186 65.5588,4.0136 62.0948,4.0136 C58.1008,4.0136 55.5078,6.4456 55.4878,10.0326 C55.4878,12.6056 57.0078,14.6936 60.7768,14.6936\",\n id: \"Fill-143\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M72.2878,9.7678 C72.5518,8.2698 73.4428,6.9728 74.9218,6.9728 C75.5918,6.9728 76.0988,7.0538 76.5438,7.3978 L77.3538,4.2768 C76.8888,4.0738 76.3408,4.0138 75.8758,4.0138 C74.4358,4.0138 73.2808,5.1488 72.7138,6.3438 L72.6728,6.3438 L73.0738,4.2768 L69.8148,4.2768 C69.7148,5.1888 69.5518,6.0608 69.3698,6.9308 L67.7488,14.4708 L71.2738,14.4708 L72.2878,9.7678 Z\",\n id: \"Fill-144\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n id: \"Fill-145\",\n points: \"73.0778 4.2561 73.0738 4.2771 73.0778 4.2771\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n id: \"Fill-146\",\n points: \"80.2321 14.4504 81.3271 9.4044 81.3671 9.4044 83.4331 14.4504 87.3451 14.4504 84.7111 9.1604 88.9471 4.2564 84.9331 4.2564 81.5491 8.5324 81.5081 8.5324 83.3741 0.0004 79.8071 0.0004 76.6441 14.4504\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M95.0465,2.717 L97.0935,2.717 C98.2695,2.737 98.8765,3.182 98.8765,4.217 C98.8575,5.594 97.5605,5.999 95.8775,5.999 L94.3575,5.999 L95.0465,2.717 Z M93.7905,8.735 L94.1955,8.735 C95.9185,8.735 96.5055,8.878 96.8705,10.762 L97.5995,14.45 L101.2285,14.45 L100.2145,10.417 C100.0115,9.486 99.6465,7.945 98.5115,7.843 L98.5115,7.803 C100.7215,7.539 102.4835,6.142 102.5046,3.689 C102.5255,0.102 99.2215,0.021 96.4655,-5.32907052e-15 L92.0675,-5.32907052e-15 L88.9465,14.45 L92.5945,14.45 L93.7905,8.735 Z\",\n id: \"Fill-147\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M106.862,12.343 C106.132,12.343 105.686,11.795 105.686,11.31 C105.686,10.417 106.923,9.81 108.605,9.869 C108.807,9.869 109.232,9.869 109.537,9.931 C109.273,11.31 108.361,12.343 106.862,12.343 M107.976,8.006 C104.876,8.006 102.363,9.222 102.342,11.735 C102.322,13.72 103.538,14.694 105.726,14.694 C107.105,14.694 108.422,14.207 109.172,13.032 L109.172,12.99 L109.213,13.032 L109.07,14.471 L111.949,14.471 C112.354,11.39 113.265,9.1 113.265,7.499 C113.286,4.986 111.299,4.033 108.868,4.033 C107.267,4.033 106.153,4.277 105.119,4.621 L104.754,7.195 C105.929,6.587 106.781,6.384 108.056,6.384 C109.213,6.384 109.922,6.972 109.922,7.701 C109.922,7.822 109.922,7.966 109.881,8.107 C109.395,8.067 108.686,8.006 107.976,8.006\",\n id: \"Fill-148\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n id: \"Fill-149\",\n points: \"119.5485 4.2561 115.9825 4.2561 113.8125 14.4501 117.3795 14.4501\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n id: \"Fill-150\",\n points: \"120.4606 0.0002 116.8946 0.0002 116.3256 2.5952 119.8926 2.5952\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n id: \"Fill-151\",\n points: \"122.6286 0.0002 119.5486 14.4502 123.1146 14.4502 126.1946 0.0002\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgGroup25);\nexport default __webpack_public_path__ + \"static/media/Group 25.73de19f0508b0ebdae4008fff3512796.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgGroup26(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"70px\",\n height: \"54px\",\n viewBox: \"0 0 70 54\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"Group 26\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Final-design-tweak\",\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group-26\",\n transform: \"translate(0.792000, 0.528500)\",\n fill: \"#0AEDC2\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M37.5949,38.5815 L38.0239,38.5815 C40.0269,38.5815 41.5389,37.4035 41.5389,34.6365 C41.5389,31.7915 39.7209,30.9045 37.9319,30.9045 C36.9079,30.9045 36.4639,30.9355 36.4639,31.7005 L36.4639,37.4195 C36.4639,38.4755 37.0609,38.5815 37.5949,38.5815\",\n id: \"Fill-85\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.8361,34.7124 C16.8361,37.0224 17.9511,38.6734 19.6631,38.6734 C21.4221,38.6734 22.5381,37.4654 22.5381,34.7124 C22.5381,32.4804 21.3001,30.9044 19.6631,30.9044 C17.8291,30.9044 16.8361,32.5574 16.8361,34.7124\",\n id: \"Fill-87\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M54.6252,21.3169 C54.0912,21.3169 53.4942,21.8819 53.0652,22.5549 C52.7752,22.9839 52.6232,23.4719 52.6232,23.8399 C52.6232,24.2679 52.7752,24.5579 53.1422,24.5579 C53.5702,24.5579 54.0602,24.3599 54.6872,23.3499 C55.0082,22.7849 55.1602,22.2649 55.1602,21.8819 C55.1602,21.4999 54.9772,21.3169 54.6252,21.3169\",\n id: \"Fill-89\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M48.2502,38.6733 C50.0092,38.6733 51.1242,37.4653 51.1242,34.7123 C51.1242,32.4803 49.8862,30.9043 48.2502,30.9043 C46.4162,30.9043 45.4232,32.5573 45.4232,34.7123 C45.4232,37.0223 46.5382,38.6733 48.2502,38.6733\",\n id: \"Fill-91\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M50.3293,28.519 C50.3293,28.932 50.7723,29.789 52.2403,29.789 C52.8063,29.789 53.9363,29.605 53.9363,28.872 C53.9363,28.581 53.7843,28.259 52.9893,27.708 C52.8063,27.54 52.2703,27.219 51.9043,27.067 C51.5833,27.189 51.1703,27.387 50.8943,27.586 C50.4823,27.862 50.3293,28.122 50.3293,28.519\",\n id: \"Fill-93\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M35.5471,26.9438 C36.7851,26.9438 38.6201,23.8848 38.6201,22.2798 C38.6351,21.7908 38.4971,21.2868 37.9011,21.2868 C36.6481,21.2868 34.8291,24.2838 34.8291,26.1028 C34.8291,26.5768 35.0421,26.9438 35.5471,26.9438\",\n id: \"Fill-95\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M62.131,30.813 C61.367,30.813 61.062,31.18 61.062,31.883 L61.015,38.979 L60.587,38.979 C60.541,38.933 54.243,31.532 54.243,31.532 L54.304,37.542 C54.319,38.566 54.946,38.719 55.298,38.719 C55.481,38.719 55.481,38.979 55.328,38.979 L52.866,38.979 C52.714,38.979 52.714,38.719 52.913,38.719 C53.509,38.719 53.738,38.184 53.738,37.542 L53.784,31.638 C53.784,30.905 53.28,30.844 53.035,30.844 C52.821,30.844 52.866,30.569 53.021,30.569 L55.175,30.569 L60.587,36.946 L60.527,31.777 C60.511,30.859 59.655,30.813 59.38,30.813 C59.226,30.813 59.226,30.569 59.38,30.569 L62.131,30.569 C62.284,30.569 62.284,30.813 62.131,30.813 L62.131,30.813 Z M7.433,42.481 L60.954,42.481 L60.954,41.977 L7.433,41.977 L7.433,42.481 Z M7.433,44.759 L60.954,44.759 L60.954,43.597 L7.433,43.597 L7.433,44.759 Z M7.389,38.673 C7.862,38.673 8.458,38.444 8.458,37.587 L8.458,31.883 C8.458,31.15 8.03,30.844 7.312,30.844 C7.128,30.859 7.113,30.584 7.312,30.584 L10.736,30.584 C10.904,30.584 10.966,30.859 10.751,30.859 C10.415,30.859 9.742,31.012 9.742,31.731 L9.742,37.679 C9.742,38.352 10.078,38.597 11.546,38.597 C12.968,38.597 14.314,38.428 14.97,36.533 C15.032,36.379 15.277,36.395 15.231,36.625 L14.787,38.979 L7.434,38.979 C7.174,38.979 7.235,38.673 7.389,38.673 L7.389,38.673 Z M23.899,34.712 C23.899,37.343 22.14,39.056 19.679,39.056 C17.142,39.056 15.475,37.19 15.475,34.712 C15.475,32.434 17.234,30.522 19.679,30.522 C22.186,30.522 23.899,32.404 23.899,34.712 L23.899,34.712 Z M6.823,26.792 C7.464,26.746 8.978,26.668 9.07,24.238 C9.177,21.73 9.115,11.147 9.07,9.986 C9.055,9.19 8.382,8.104 6.623,8.104 C6.349,8.104 6.379,7.63 6.7,7.63 L14.192,7.63 C14.466,7.63 14.634,8.088 14.146,8.135 C13.671,8.181 11.853,8.226 11.79,10.658 C11.73,13.089 11.73,16.867 11.73,17.02 C11.73,17.218 11.806,17.417 12.081,17.218 C12.953,16.637 15.506,14.114 17.416,11.973 C18.165,11.117 18.686,10.382 19.053,9.695 C19.159,9.587 19.235,9.374 19.235,9.129 C19.235,8.823 19.113,8.532 18.716,8.379 C18.38,8.256 18.074,8.226 17.753,8.166 C17.279,8.088 17.371,7.615 17.799,7.615 C18.074,7.615 19.403,7.722 20.994,7.722 C21.911,7.722 23.226,7.675 23.868,7.645 C24.265,7.615 24.312,8.043 24.021,8.12 C23.745,8.196 22.431,8.517 20.076,10.673 C17.647,12.906 14.512,16.209 14.512,16.209 C14.512,16.209 21.56,24.604 22.782,25.598 C24.051,26.638 24.938,26.714 25.886,26.792 C26.13,26.806 26.206,27.265 25.886,27.265 L20.382,27.265 C20.382,27.265 13.564,19.023 12.448,18.273 C12.25,18.151 11.776,17.999 11.73,18.548 C11.685,19.069 11.653,23.442 11.776,24.39 C11.898,25.354 12.295,26.746 14.558,26.746 C14.833,26.746 15.001,27.281 14.604,27.265 C13.258,27.205 12.25,27.205 10.583,27.205 C9.146,27.205 7.144,27.265 6.868,27.265 C6.395,27.265 6.395,26.822 6.823,26.792 L6.823,26.792 Z M25.87,7.675 L29.86,7.675 C30.181,7.675 30.151,7.998 29.906,7.998 C29.264,8.043 28.668,8.272 28.668,9.114 L28.668,15.873 C28.668,16.545 28.988,17.111 29.829,17.111 C30.166,17.111 30.105,17.402 29.906,17.402 L25.978,17.402 C25.718,17.402 25.625,17.111 25.978,17.111 C26.863,17.111 27.139,16.623 27.139,15.873 L27.139,9.114 C27.139,8.349 26.421,8.058 25.825,7.998 C25.55,7.982 25.595,7.675 25.87,7.675 L25.87,7.675 Z M31.114,17.111 C31.755,17.036 31.985,16.392 32,15.643 C32.077,13.533 32.077,10.933 32.062,8.96 C32.062,8.12 31.419,8.058 31.114,7.998 C30.961,7.951 30.961,7.675 31.236,7.675 L31.236,7.691 L33.514,7.691 L39.919,14.863 C39.919,14.863 39.859,10.52 39.812,9.129 C39.766,8.166 38.773,8.058 38.451,8.013 C38.299,8.013 38.207,7.691 38.559,7.691 L41.479,7.691 C41.723,7.691 41.784,8.013 41.432,8.043 C40.714,8.088 40.5,8.457 40.454,9.114 C40.408,9.679 40.408,17.172 40.408,17.172 L39.812,17.172 L32.612,9.16 C32.612,9.16 32.658,14.282 32.719,15.643 C32.765,17.036 33.484,17.036 33.927,17.111 C34.125,17.141 34.065,17.402 33.911,17.402 L31.037,17.402 C30.869,17.402 30.869,17.126 31.114,17.111 L31.114,17.111 Z M42.013,18.87 C42.319,18.854 42.671,18.824 42.869,18.808 C43.099,18.793 43.298,18.748 43.45,18.748 C43.558,18.748 43.618,18.793 43.618,18.885 C43.618,18.961 43.604,19.039 43.542,19.176 L40.225,26.546 C40.179,26.714 40.255,26.714 40.331,26.668 C40.76,26.424 41.188,25.874 41.325,25.736 C41.417,25.66 41.555,25.766 41.478,25.889 C41.111,26.439 40.499,27.082 39.919,27.311 C39.827,27.342 39.69,27.387 39.583,27.387 C39.384,27.387 39.231,27.219 39.231,27.02 C39.231,26.852 39.338,26.624 39.384,26.501 C40.424,24.161 41.493,21.836 42.564,19.497 C42.61,19.42 42.625,19.344 42.625,19.298 C42.625,19.251 42.61,19.207 42.533,19.176 C42.365,19.129 42.197,19.129 42.044,19.129 C41.952,19.129 41.891,19.084 41.891,19.007 C41.891,18.946 41.938,18.87 42.013,18.87 L42.013,18.87 Z M47.624,7.615 C49.138,7.615 49.902,8.013 50.696,8.517 C50.773,8.563 50.972,8.685 51.124,8.685 C51.323,8.685 51.476,8.532 51.537,8.288 C51.599,8.043 51.889,8.088 51.889,8.288 L51.889,10.398 C51.889,10.551 51.645,10.597 51.537,10.398 C51.216,9.741 50.269,8.028 47.624,8.028 C44.673,8.028 43.772,10.827 43.772,12.615 C43.772,14.818 44.917,17.02 47.471,17.02 C47.99,17.02 48.878,16.973 49.58,16.392 C49.764,16.27 49.917,16.042 49.917,15.719 L49.917,14.267 C49.917,13.502 49.275,13.349 48.48,13.303 C48.204,13.289 48.204,12.921 48.48,12.921 L52.5,12.921 C52.791,12.921 52.745,13.243 52.546,13.273 C52.027,13.319 51.43,13.395 51.43,14.206 L51.415,14.206 L51.415,16.072 C51.186,16.224 49.902,17.463 47.471,17.463 C44.994,17.463 42.167,16.3 42.167,12.554 C42.167,8.838 45.178,7.615 47.624,7.615 L47.624,7.615 Z M53.647,7.645 C54.152,7.645 54.565,8.013 54.565,8.625 C54.565,9.312 54.044,10.138 53.128,10.138 C53.035,10.138 52.989,10.077 52.989,10.016 C52.989,9.955 53.035,9.909 53.081,9.893 C53.708,9.771 53.937,9.374 53.952,9.114 C53.922,9.144 53.738,9.19 53.556,9.19 C53.203,9.19 52.806,8.976 52.806,8.425 C52.806,7.829 53.28,7.645 53.647,7.645 L53.647,7.645 Z M48.25,30.522 C50.757,30.522 52.47,32.404 52.47,34.712 C52.47,37.343 50.712,39.056 48.25,39.056 C45.713,39.056 44.047,37.19 44.047,34.712 C44.047,32.434 45.805,30.522 48.25,30.522 L48.25,30.522 Z M47.501,26.822 C48.22,26.822 48.893,26.256 49.275,25.828 C49.398,25.66 49.58,25.828 49.474,25.951 C48.907,26.684 48.036,27.357 46.951,27.357 C46.11,27.357 45.606,26.761 45.606,25.996 C45.606,23.61 48.235,21.102 49.993,21.102 C50.589,21.102 51.032,21.332 51.032,21.974 C51.032,22.907 50.222,23.412 48.755,23.855 C48.342,23.977 47.441,24.176 46.997,24.268 C46.798,24.589 46.538,25.232 46.538,25.736 C46.538,26.409 46.874,26.822 47.501,26.822 L47.501,26.822 Z M42.885,27.311 C42.793,27.342 42.655,27.387 42.548,27.387 C42.35,27.387 42.197,27.219 42.197,27.02 C42.197,26.852 42.288,26.624 42.35,26.501 C43.389,24.161 44.459,21.836 45.529,19.497 C45.575,19.42 45.59,19.344 45.59,19.298 C45.59,19.251 45.575,19.207 45.515,19.176 C45.346,19.129 45.178,19.129 45.025,19.129 C44.933,19.129 44.872,19.084 44.872,19.007 C44.872,18.946 44.918,18.87 44.994,18.87 C45.3,18.854 45.652,18.824 45.851,18.808 C46.08,18.793 46.278,18.748 46.431,18.748 C46.524,18.748 46.584,18.793 46.584,18.885 C46.584,18.961 46.568,19.039 46.508,19.176 L43.191,26.546 C43.145,26.714 43.221,26.714 43.298,26.668 C43.726,26.424 44.139,25.874 44.291,25.736 C44.384,25.66 44.521,25.766 44.444,25.889 C44.077,26.439 43.466,27.082 42.885,27.311 L42.885,27.311 Z M34.294,38.673 C35.042,38.673 35.195,38.275 35.195,37.633 L35.195,31.638 C35.195,30.997 34.66,30.844 34.339,30.844 C34.171,30.844 34.125,30.522 34.401,30.522 L38.237,30.522 C40.562,30.522 42.945,31.15 42.945,34.667 C42.945,38.137 40.041,38.979 38.283,38.979 L34.278,38.979 C34.11,38.979 34.11,38.673 34.294,38.673 L34.294,38.673 Z M37.626,20.918 C38.895,20.918 39.14,22.036 39.14,23.076 C39.14,24.727 37.626,27.357 35.792,27.357 C34.63,27.357 34.202,26.424 34.202,25.476 C34.202,23.167 35.838,20.918 37.626,20.918 L37.626,20.918 Z M33.621,21.531 C33.743,19.987 32.902,19.145 31.771,19.145 C30.594,19.145 29.569,20.078 28.912,20.904 C27.872,22.158 27.2,23.657 27.2,25.094 C27.2,26.18 27.644,27.051 28.775,27.051 C29.294,27.051 29.937,26.883 30.502,26.624 C31.832,25.965 32.108,25.583 32.489,24.987 C32.581,24.819 32.643,24.773 32.765,24.773 C32.841,24.773 32.917,24.849 32.857,25.048 L32,27.479 C31.97,27.571 31.908,27.602 31.848,27.602 C31.771,27.602 31.694,27.571 31.694,27.449 C31.68,27.143 31.664,26.806 31.435,26.806 C31.297,26.806 31.068,26.899 30.869,26.974 C29.951,27.357 29.433,27.433 28.76,27.433 C27.246,27.433 26.084,26.501 26.084,24.819 C26.084,23.763 26.405,22.693 27.031,21.73 C28.056,20.093 29.814,18.763 31.848,18.763 C32.29,18.763 33.208,18.871 33.774,19.574 C33.834,19.62 33.897,19.665 33.957,19.665 C34.079,19.665 34.217,19.542 34.339,19.42 C34.385,19.375 34.431,19.359 34.477,19.359 C34.584,19.359 34.645,19.436 34.599,19.558 L33.957,21.592 C33.942,21.668 33.881,21.714 33.804,21.714 C33.697,21.714 33.606,21.653 33.621,21.531 L33.621,21.531 Z M25.778,37.542 C25.794,38.566 26.421,38.719 26.773,38.719 C26.956,38.719 26.956,38.979 26.803,38.979 L24.342,38.979 C24.189,38.979 24.189,38.719 24.387,38.719 C24.984,38.719 25.213,38.184 25.213,37.542 L25.259,31.638 C25.259,30.905 24.755,30.844 24.51,30.844 C24.296,30.844 24.342,30.569 24.494,30.569 L26.65,30.569 L32.062,36.946 L32,31.777 C31.985,30.859 31.129,30.813 30.854,30.813 C30.701,30.813 30.701,30.569 30.854,30.569 L33.606,30.569 C33.759,30.569 33.759,30.813 33.606,30.813 C32.841,30.813 32.535,31.18 32.535,31.883 L32.489,38.979 L32.062,38.979 C32.016,38.933 25.718,31.532 25.718,31.532 L25.778,37.542 Z M55.818,22.417 C55.818,22.723 55.741,23.09 55.588,23.442 C54.977,24.711 54.014,24.957 53.295,24.957 C53.066,24.957 52.745,24.879 52.5,24.879 C52.318,24.879 52.149,24.926 52.042,25.001 C51.888,25.094 51.843,25.247 51.843,25.4 C51.843,25.965 52.653,26.348 53.219,26.668 C54.09,27.159 54.885,27.831 54.885,28.549 C54.885,28.749 54.855,29.07 54.61,29.345 C54.289,29.712 53.464,30.186 52.149,30.186 C49.902,30.186 49.351,29.147 49.351,28.503 C49.351,27.954 49.856,27.555 50.314,27.311 C50.895,26.99 51.629,26.792 51.629,26.792 C51.277,26.546 50.956,26.165 50.956,25.767 C50.956,25.155 51.553,24.819 51.903,24.696 C52.103,24.635 52.225,24.574 52.225,24.482 C52.225,24.436 52.21,24.42 52.179,24.376 C52.072,24.207 51.903,23.917 51.903,23.519 C51.903,23.122 51.981,22.723 52.378,22.158 C52.943,21.393 53.815,21.042 54.411,21.042 C55.007,21.042 55.237,21.164 55.481,21.332 C55.604,21.409 55.802,21.317 55.878,21.255 C56.2,21.042 56.506,20.981 56.75,20.981 C56.964,20.981 57.194,21.056 57.194,21.301 C57.194,21.577 57.041,21.653 56.888,21.653 C56.628,21.653 56.628,21.485 56.215,21.5 C55.909,21.5 55.756,21.592 55.756,21.745 C55.756,21.928 55.818,22.02 55.818,22.417 L55.818,22.417 Z M58.248,26.822 C58.966,26.822 59.639,26.256 60.022,25.828 C60.144,25.66 60.312,25.828 60.22,25.951 C59.655,26.684 58.783,27.357 57.683,27.357 C56.842,27.357 56.353,26.761 56.353,25.996 C56.353,23.61 58.983,21.102 60.739,21.102 C61.337,21.102 61.779,21.332 61.779,21.974 C61.779,22.907 60.954,23.412 59.501,23.855 C59.073,23.977 58.188,24.176 57.744,24.268 C57.545,24.589 57.284,25.232 57.284,25.736 C57.284,26.409 57.637,26.822 58.248,26.822 L58.248,26.822 Z M55.13,14.756 C55.13,14.587 55.206,14.527 55.298,14.527 C55.405,14.527 55.45,14.557 55.497,14.71 C55.971,16.469 57.284,17.004 58.402,17.004 C59.41,17.004 60.48,16.515 60.48,15 C60.48,13.656 59.441,13.289 58.142,12.814 C56.903,12.371 55.466,11.774 55.466,9.986 C55.466,8.196 57.102,7.661 58.34,7.661 C59.288,7.661 59.654,7.951 60.052,7.951 C60.281,7.951 60.403,7.813 60.48,7.661 C60.527,7.584 60.571,7.553 60.618,7.553 C60.694,7.553 60.739,7.584 60.771,7.707 L61.03,9.48 C61.046,9.573 60.97,9.618 60.908,9.618 C60.862,9.618 60.817,9.618 60.739,9.526 C60.068,8.226 59.073,8.058 58.462,8.058 C57.224,8.058 56.78,8.792 56.78,9.542 C56.78,10.429 57.331,11.147 59.043,11.622 C61.458,12.294 61.872,13.579 61.872,14.573 C61.872,17.081 59.716,17.478 58.447,17.478 C56.995,17.478 56.399,16.867 55.894,16.867 C55.634,16.867 55.527,16.989 55.436,17.126 C55.405,17.188 55.343,17.234 55.282,17.234 C55.206,17.234 55.13,17.172 55.13,17.036 L55.13,14.756 Z M4.54747351e-13,52.312 L68.683,52.312 L68.683,7.10542736e-15 L4.54747351e-13,7.10542736e-15 L4.54747351e-13,52.312 Z\",\n id: \"Fill-97\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M50.2687,22.0356 C50.2687,21.6526 50.0847,21.4846 49.7037,21.4846 C49.2437,21.4846 48.7857,21.8366 48.5097,22.1116 C48.0517,22.5556 47.5927,23.1056 47.2107,23.7946 C47.5007,23.7946 48.1127,23.6406 48.6787,23.4726 C49.5037,23.2126 50.2687,22.7686 50.2687,22.0356\",\n id: \"Fill-99\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M61.0002,22.0356 C61.0002,21.6526 60.8322,21.4846 60.4352,21.4846 C59.9762,21.4846 59.5172,21.8366 59.2412,22.1116 C58.7832,22.5556 58.3242,23.1056 57.9582,23.7946 C58.2322,23.7946 58.8592,23.6406 59.4252,23.4726 C60.2352,23.2126 61.0002,22.7686 61.0002,22.0356\",\n id: \"Fill-101\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgGroup26);\nexport default __webpack_public_path__ + \"static/media/Group 26.d9a93a73d4216f329008d75d28b6ed64.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgGroup28(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"111px\",\n height: \"58px\",\n viewBox: \"0 0 111 58\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"Group 28\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Final-design-tweak\",\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group-28\",\n transform: \"translate(0.667000, 0.561100)\",\n fill: \"#0AEDC2\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M68.2404,54.0518 C67.8184,54.0518 67.5644,53.7978 67.5644,53.4608 C67.5644,53.1228 67.8184,52.8688 68.2404,52.8688 C68.6634,52.8688 68.9164,53.1228 68.9164,53.4608 C68.9164,53.7978 68.6634,54.0518 68.2404,54.0518 L68.2404,54.0518 Z M68.0714,56.2468 C69.2544,56.2468 69.8444,55.3188 69.8444,54.0518 C69.8444,53.2918 69.6764,52.7848 69.3384,52.5308 C69.0004,52.1938 68.7474,52.1098 68.1564,52.1098 C67.2264,52.1098 66.6364,52.6998 66.6364,53.5448 C66.6364,54.3898 67.2264,54.8968 68.0714,54.8968 C68.4094,54.8968 68.6634,54.8118 68.9164,54.6428 C68.8314,55.1498 68.5784,55.5728 68.0714,55.5728 C67.7334,55.5728 67.4804,55.4878 67.2264,55.2348 L66.7194,55.9098 C67.0574,56.0788 67.4804,56.2468 68.0714,56.2468 L68.0714,56.2468 Z M64.4394,54.0518 C64.0174,54.0518 63.7644,53.7978 63.7644,53.4608 C63.7644,53.1228 64.0174,52.8688 64.4394,52.8688 C64.8624,52.8688 65.1154,53.1228 65.1154,53.4608 C65.2004,53.7978 64.8624,54.0518 64.4394,54.0518 L64.4394,54.0518 Z M64.2704,56.2468 C65.4534,56.2468 66.0454,55.3188 66.0454,54.0518 C66.0454,53.2918 65.8764,52.7848 65.5384,52.5308 C65.2004,52.1938 64.9464,52.1098 64.3554,52.1098 C63.4274,52.1098 62.8354,52.6998 62.8354,53.5448 C62.8354,54.3898 63.4274,54.8968 64.2704,54.8968 C64.6084,54.8968 64.8624,54.8118 65.1154,54.6428 C65.0314,55.1498 64.7774,55.5728 64.2704,55.5728 C63.9324,55.5728 63.6794,55.4878 63.4274,55.2348 L62.9204,55.9098 C63.3424,56.0788 63.6794,56.2468 64.2704,56.2468 L64.2704,56.2468 Z M60.8084,55.4878 C60.3864,55.4878 60.1334,55.2348 60.1334,54.9808 C60.1334,54.6428 60.3864,54.4738 60.8084,54.4738 C61.2304,54.4738 61.4844,54.6428 61.4844,54.9808 C61.4844,55.3188 61.2304,55.4878 60.8084,55.4878 L60.8084,55.4878 Z M60.8084,53.7978 C60.4704,53.7978 60.2174,53.5448 60.2174,53.2918 C60.2174,53.0378 60.4704,52.7848 60.8084,52.7848 C61.1464,52.7848 61.3994,53.0378 61.3994,53.2918 C61.3994,53.6298 61.1464,53.7978 60.8084,53.7978 L60.8084,53.7978 Z M60.8084,56.2468 C61.7374,56.2468 62.4134,55.8248 62.4134,55.0658 C62.4134,54.5588 62.1594,54.3048 61.7374,54.1358 C62.0754,53.9668 62.2444,53.7138 62.2444,53.2918 C62.2444,52.6998 61.6524,52.1938 60.8084,52.1938 C59.9644,52.1938 59.3724,52.6998 59.3724,53.2918 C59.3724,53.7138 59.5414,53.9668 59.8794,54.1358 C59.4574,54.3048 59.2034,54.6428 59.2034,55.1498 C59.2034,55.8248 59.8794,56.2468 60.8084,56.2468 L60.8084,56.2468 Z M57.5984,56.1628 L58.4434,56.1628 L58.4434,52.1098 L57.8524,52.1098 L56.7544,52.4478 L56.9234,53.2068 L57.5984,53.0378 L57.5984,56.1628 Z M53.1234,54.3898 C53.2074,53.9668 53.4614,53.7138 53.7994,53.7138 C54.1364,53.7138 54.3894,53.9668 54.4734,54.3898 L53.1234,54.3898 Z M53.8834,56.2468 C54.4734,56.2468 54.8964,55.9938 55.1494,55.6558 L54.6424,55.2348 C54.3894,55.4878 54.2204,55.5728 53.8834,55.5728 C53.4614,55.5728 53.2074,55.4038 53.1234,54.9808 L55.3184,54.9808 L55.3184,54.7278 C55.3184,53.8828 54.8114,53.0378 53.7994,53.0378 C52.8694,53.0378 52.2784,53.7978 52.2784,54.6428 C52.2784,55.6558 52.9544,56.2468 53.8834,56.2468 L53.8834,56.2468 Z M50.6744,56.2468 C51.2644,56.2468 51.6024,55.9938 51.9404,55.6558 L51.4334,55.1498 C51.1804,55.3188 51.0114,55.4878 50.7584,55.4878 C50.2514,55.4878 49.9984,55.0658 49.9984,54.6428 C49.9984,54.2208 50.3364,53.7978 50.7584,53.7978 C51.0954,53.7978 51.2644,53.9668 51.4334,54.1358 L51.9404,53.5448 C51.6874,53.2068 51.2644,53.0378 50.6744,53.0378 C49.7444,53.0378 49.0694,53.7978 49.0694,54.6428 C49.0694,55.5728 49.7444,56.2468 50.6744,56.2468 L50.6744,56.2468 Z M45.6904,56.1628 L46.5354,56.1628 L46.5354,54.3898 C46.5354,53.9668 46.7894,53.7978 47.1274,53.7978 C47.4644,53.7978 47.6334,54.0518 47.6334,54.3898 L47.6334,56.1628 L48.4774,56.1628 L48.4774,54.1358 C48.4774,53.4608 48.0554,52.9538 47.4644,52.9538 C47.0424,52.9538 46.7894,53.2068 46.5354,53.4608 L46.5354,53.0378 L45.6904,53.0378 L45.6904,56.1628 Z M44.0024,56.1628 L44.8464,56.1628 L44.8464,53.0378 L44.0024,53.0378 L44.0024,56.1628 Z M44.0024,52.7848 L44.9314,52.7848 L44.9314,52.0238 L44.0024,52.0238 L44.0024,52.7848 Z M41.8904,56.2468 C42.7344,56.2468 43.4104,55.8248 43.4104,54.9808 C43.4104,54.3048 42.9884,53.9668 42.1434,53.7978 C41.4684,53.6298 41.2994,53.5448 41.2994,53.2918 C41.2994,53.1228 41.4684,52.9538 41.8054,52.9538 C42.1434,52.9538 42.4814,53.1228 42.8194,53.3758 L43.2414,52.6998 C42.8194,52.3628 42.3124,52.1938 41.7214,52.1938 C40.8774,52.1938 40.2854,52.6998 40.2854,53.3758 C40.2854,54.2208 40.7924,54.3898 41.6364,54.6428 C42.3124,54.8118 42.4814,54.8968 42.4814,55.1498 C42.4814,55.4038 42.2284,55.5728 41.8904,55.5728 C41.4684,55.5728 41.0464,55.4038 40.7084,55.0658 L40.2014,55.6558 C40.6234,56.0788 41.2994,56.2468 41.8904,56.2468 L41.8904,56.2468 Z\",\n id: \"Fill-21\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.759,48.8155 C21.79,48.8155 18.834,45.9445 18.834,42.2275 C18.834,38.4275 21.79,35.6405 25.759,35.6405 C29.729,35.6405 32.685,38.5115 32.685,42.2275 C32.601,45.9445 29.645,48.8155 25.759,48.8155 M25.759,38.8495 C23.902,38.8495 22.55,40.2855 22.55,42.2275 C22.55,44.1705 23.902,45.6065 25.759,45.6065 C27.533,45.6065 28.884,44.1705 28.884,42.2275 C28.884,40.2855 27.533,38.8495 25.759,38.8495 M56.839,48.3935 L56.839,36.0625 C56.839,35.9785 56.754,35.8935 56.67,35.8935 L53.292,35.8935 C53.207,35.8935 53.123,35.9785 53.123,36.0625 L53.123,48.3935 C53.123,48.4775 53.207,48.5625 53.292,48.5625 L56.67,48.5625 C56.754,48.5625 56.839,48.4775 56.839,48.3935 M77.278,48.8155 C73.308,48.8155 70.352,45.9445 70.352,42.2275 C70.352,38.4275 73.308,35.6405 77.278,35.6405 C81.246,35.6405 84.202,38.5115 84.202,42.2275 C84.202,45.9445 81.246,48.8155 77.278,48.8155 M77.278,38.8495 C75.419,38.8495 74.068,40.2855 74.068,42.2275 C74.068,44.1705 75.419,45.6065 77.278,45.6065 C79.051,45.6065 80.403,44.1705 80.403,42.2275 C80.403,40.2855 79.051,38.8495 77.278,38.8495 M97.715,48.3935 L97.715,40.5395 C97.715,37.3295 96.196,35.6405 93.239,35.6405 C91.297,35.6405 90.03,36.5695 89.355,37.3295 L89.355,36.0625 C89.355,35.9785 89.27,35.8935 89.186,35.8935 L85.976,35.8935 C85.892,35.8935 85.807,35.9785 85.807,36.0625 L85.807,48.3935 C85.807,48.4775 85.892,48.5625 85.976,48.5625 L89.355,48.5625 C89.439,48.5625 89.524,48.4775 89.524,48.3935 L89.524,42.7345 C89.524,42.1435 89.608,41.6365 89.693,41.2145 C90.114,39.8635 91.212,39.0185 92.564,39.0185 C93.661,39.0185 94.084,39.5255 94.084,41.0455 L94.084,48.3085 C94.084,48.3935 94.168,48.4775 94.253,48.4775 L97.546,48.4775 C97.715,48.5625 97.715,48.4775 97.715,48.3935 M16.976,48.5625 L13.598,48.5625 C13.514,48.5625 13.429,48.4775 13.429,48.3935 C13.429,44.5075 13.091,40.1165 13.007,38.7655 C11.824,40.3705 10.642,42.5655 9.713,44.6765 C9.713,44.7615 9.628,44.7615 9.544,44.7615 L7.602,44.7615 C7.517,44.7615 7.433,44.7615 7.433,44.6765 C6.504,42.5655 5.405,40.3705 4.139,38.7655 C4.055,40.1165 3.717,44.5075 3.717,48.3935 C3.717,48.4775 3.632,48.5625 3.548,48.5625 L0.169,48.5625 C0.085,48.5625 4.19220214e-13,48.4775 4.19220214e-13,48.3935 C4.19220214e-13,43.1575 0.423,36.2315 1.268,32.6845 C1.268,32.5995 1.352,32.5155 1.437,32.5155 L4.139,32.5155 C4.223,32.5155 4.223,32.5155 4.308,32.5995 C6.081,34.5435 7.517,36.7385 8.615,38.8495 C9.713,36.6545 11.149,34.5435 12.922,32.5995 C12.922,32.5995 13.007,32.5155 13.091,32.5155 L15.794,32.5155 C15.878,32.5155 15.963,32.5995 15.963,32.6845 C16.807,36.2315 17.23,43.1575 17.23,48.3935 C17.145,48.4775 17.061,48.5625 16.976,48.5625 M38.09,48.3935 L38.09,43.4955 C38.09,42.7345 38.174,42.1435 38.343,41.6365 C38.85,39.9475 40.201,39.3565 41.215,39.3565 L41.806,39.3565 L41.975,39.3565 C41.975,39.3565 42.06,39.2725 42.06,39.1875 L42.06,35.8935 C42.06,35.8095 41.975,35.7245 41.891,35.7245 L41.384,35.7245 C40.032,35.7245 38.766,36.4005 38.005,37.5835 L38.005,36.0625 C38.005,35.9785 37.921,35.8935 37.836,35.8935 L34.627,35.8935 C34.543,35.8935 34.458,35.9785 34.458,36.0625 L34.458,48.3935 C34.458,48.4775 34.543,48.5625 34.627,48.5625 L38.005,48.5625 C38.09,48.5625 38.09,48.4775 38.09,48.3935 M47.295,48.5625 L43.917,48.5625 C43.833,48.5625 43.748,48.4775 43.748,48.3935 L43.748,36.0625 C43.748,35.9785 43.833,35.8935 43.917,35.8935 L47.127,35.8935 C47.211,35.8935 47.295,35.9785 47.295,36.0625 L47.295,37.5835 C48.14,36.4005 49.407,35.7245 50.674,35.7245 L51.181,35.7245 C51.265,35.7245 51.35,35.8095 51.35,35.8935 L51.35,39.1875 C51.35,39.2725 51.35,39.2725 51.265,39.3565 C51.265,39.3565 51.181,39.4405 51.096,39.3565 L50.505,39.3565 C49.407,39.3565 48.14,39.9475 47.633,41.6365 C47.549,42.1435 47.464,42.7345 47.464,43.4105 L47.464,48.3085 C47.464,48.4775 47.38,48.5625 47.295,48.5625 M69.085,44.5925 L69.085,44.5925 C69.085,47.2115 67.058,48.7315 63.765,48.7315 C61.822,48.7315 60.302,48.0555 58.613,46.8735 C58.529,46.8735 58.529,46.7885 58.529,46.7045 L58.529,46.6195 L59.964,44.3385 C59.964,44.2545 60.048,44.2545 60.133,44.2545 L60.217,44.2545 C61.653,45.1835 62.666,45.6065 64.018,45.6065 C64.863,45.6065 65.369,45.3525 65.369,44.8455 L65.369,44.7615 C65.369,44.1705 64.778,43.8335 63.511,43.4955 C63.342,43.4105 63.173,43.4105 63.004,43.3265 C60.809,42.7345 58.95,41.8055 58.95,39.3565 C58.95,36.9075 60.893,35.3865 64.018,35.3865 C65.538,35.3865 66.974,35.8095 68.409,36.5695 C68.494,36.5695 68.494,36.6545 68.494,36.7385 L68.494,36.8235 L67.143,39.1875 C67.143,39.2725 67.058,39.2725 66.974,39.2725 L66.889,39.2725 C65.622,38.6805 64.863,38.3425 63.933,38.3425 C63.173,38.3425 62.666,38.6805 62.666,39.1875 L62.666,39.2725 C62.666,39.8635 63.427,40.1165 64.694,40.5395 C64.863,40.6235 64.947,40.6235 65.115,40.7085 C67.058,41.2145 69.085,42.2275 69.085,44.5925 M105.823,40.6235 C105.655,40.5395 105.57,40.5395 105.401,40.4545 C104.134,40.0325 103.374,39.7785 103.374,39.1875 L103.374,39.1035 C103.374,38.5965 103.965,38.2585 104.641,38.2585 C105.486,38.2585 106.33,38.5115 107.597,39.1875 L107.681,39.1875 C107.766,39.1875 107.766,39.1875 107.85,39.1035 L109.201,36.7385 L109.201,36.6545 C109.201,36.5695 109.201,36.5695 109.117,36.4855 C107.681,35.7245 106.33,35.3025 104.725,35.3025 C101.685,35.3025 99.658,36.8235 99.658,39.2725 L99.658,39.3565 C99.658,41.8055 101.601,42.7345 103.712,43.3265 C103.881,43.4105 104.05,43.4105 104.219,43.4955 C105.57,43.9175 106.076,44.1705 106.076,44.7615 L106.076,44.8455 C105.992,45.3525 105.57,45.6065 104.725,45.6065 C103.458,45.6065 102.361,45.1835 100.925,44.2545 L100.84,44.2545 C100.756,44.2545 100.756,44.2545 100.671,44.3385 L99.236,46.6195 L99.236,46.7045 C99.236,46.7885 99.236,46.7885 99.321,46.8735 C101.009,48.0555 102.613,48.7315 104.472,48.7315 C107.85,48.7315 109.792,47.2945 109.792,44.6765 L109.792,44.5925 C109.877,42.3125 107.85,41.2985 105.823,40.6235 M57.261,31.4185 C57.261,32.6845 56.248,33.6985 54.981,33.6985 C53.714,33.6985 52.7,32.6845 52.7,31.4185 C52.7,30.1505 53.714,29.1375 54.981,29.1375 C56.248,29.0525 57.261,30.1505 57.261,31.4185\",\n id: \"Fill-23\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M52.7004,22.043 C52.7004,23.395 51.6024,24.408 50.3364,24.408 C49.0694,24.408 47.9714,23.31 47.9714,22.043 C47.9714,20.691 49.0694,19.679 50.3364,19.679 C51.6024,19.679 52.7004,20.776 52.7004,22.043 M63.3424,12.331 C63.3424,13.682 62.2444,14.695 60.9774,14.695 C59.6264,14.695 58.6124,13.598 58.6124,12.331 C58.6124,11.064 59.7104,9.966 60.9774,9.966 C62.2444,9.966 63.3424,10.98 63.3424,12.331 M57.7674,5.067 C57.7674,8.361 54.9804,10.135 54.9804,10.135 C54.9804,10.135 52.1934,8.361 52.1934,5.067 C52.1934,1.773 54.9804,0 54.9804,0 C54.8964,0 57.7674,1.773 57.7674,5.067 M45.7754,9.966 C45.7754,9.966 45.0994,13.26 47.3804,15.54 C49.6604,17.82 52.9544,17.145 52.9544,17.145 C52.9544,17.145 53.6304,13.851 51.3494,11.57 C49.0694,9.29 45.7754,9.966 45.7754,9.966 M42.0594,15.371 C44.8464,16.976 45.0144,20.354 45.0144,20.354 C45.0144,20.354 42.0594,21.874 39.1874,20.27 C36.4004,18.665 36.2314,15.287 36.2314,15.287 C36.2314,15.287 39.2724,13.767 42.0594,15.371 M40.6234,26.266 C40.6234,26.266 41.3844,29.56 44.4244,30.657 C47.4644,31.756 50.1674,29.729 50.1674,29.729 C50.1674,29.729 49.4074,26.435 46.3664,25.337 C43.2414,24.239 40.6234,26.266 40.6234,26.266 M60.9774,22.719 C59.6264,25.675 56.3324,26.097 56.3324,26.097 C56.3324,26.097 54.5584,23.31 55.9104,20.354 C57.2614,17.398 60.5544,16.976 60.5544,16.976 C60.5544,16.976 62.3284,19.763 60.9774,22.719 M73.7294,15.287 C73.7294,15.287 70.7744,13.767 67.9024,15.371 C65.1154,16.976 64.9464,20.354 64.9464,20.354 C64.9464,20.354 67.9024,21.874 70.7744,20.27 C73.5604,18.665 73.7294,15.287 73.7294,15.287 M65.7074,30.657 C62.6664,31.756 59.9644,29.729 59.9644,29.729 C59.9644,29.729 60.7234,26.435 63.7644,25.337 C66.8044,24.239 69.5074,26.266 69.5074,26.266 C69.5074,26.266 68.7474,29.476 65.7074,30.657\",\n id: \"Fill-25\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgGroup28);\nexport default __webpack_public_path__ + \"static/media/Group 28.259a5bae4c6aeab93d8514df73c4685b.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgGroup32(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"103px\",\n height: \"47px\",\n viewBox: \"0 0 103 47\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"Group 32\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Final-design-tweak\",\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group-32\",\n transform: \"translate(0.522600, 0.833800)\",\n fill: \"#0AEDC2\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M100.0879,24.5272 C100.9369,25.1492 101.8149,25.6022 101.8149,26.5922 C101.8149,26.8792 101.4469,27.1622 100.6259,27.1622 C100.0039,27.1622 99.3249,26.9922 99.0129,26.5362 C98.7589,26.1962 99.1259,25.7432 98.9009,25.4042 C98.7299,25.1212 98.3339,25.2612 98.0789,25.1212 C97.7689,24.9512 97.7399,24.8092 97.5409,24.3852 C97.3159,23.8772 96.5509,23.0272 95.6459,22.1212 C94.8819,21.3582 94.0619,20.9612 93.6929,20.9892 C93.4349,21.0172 93.3519,21.0172 93.0969,21.0172 C92.4449,21.0172 91.8779,21.6412 90.9449,22.0372 C90.2949,22.3192 89.9259,22.4892 89.5019,22.5462 L89.3609,22.7162 L90.2089,22.6882 C91.0009,22.6882 92.0489,22.5742 92.8409,22.5742 C93.6649,22.5742 94.0619,23.3102 94.3719,24.0742 C94.9959,25.6312 95.9299,27.8692 97.0339,29.7362 C97.5689,30.6142 98.0239,31.1792 98.0239,32.2592 C98.0239,32.5992 97.9939,33.0532 97.5409,33.0532 C96.9199,33.0532 95.3349,32.4022 95.3349,31.6912 C95.3349,31.1512 95.7589,30.9252 95.7589,30.3882 C95.7589,30.0482 95.2489,30.1052 95.1369,29.7942 C94.7409,28.1252 94.2589,26.4792 93.3219,25.4892 C92.8409,24.9792 92.7839,24.7532 92.3039,24.7532 C92.0489,24.7532 91.7939,24.8092 91.5669,24.8952 C90.2669,25.3762 88.5399,26.8222 86.3899,27.4722 C85.5689,27.7282 85.4269,27.2472 84.5789,27.4162 L84.6359,27.4162 C83.9529,27.5572 83.4149,27.9542 82.4819,28.2102 C81.1799,28.5782 78.9429,28.7462 77.1609,28.5212 C75.8889,28.3502 74.2429,28.0962 73.5359,28.1252 C72.9989,29.6792 71.8379,31.7192 70.1409,32.5152 C69.2359,32.9112 68.9519,33.4762 69.2359,34.4942 C69.5749,35.7652 70.7069,36.7022 71.3009,37.7772 C71.8379,38.7082 72.7149,40.1822 73.6499,40.6642 C74.5839,41.1432 75.1519,41.8512 75.1519,42.4432 C75.1519,42.7272 75.0349,42.8972 74.7529,42.8972 L72.8869,42.8972 C72.6029,42.8972 72.4619,42.7272 72.4039,42.6132 C72.1499,42.1322 72.3189,41.6812 71.9809,41.2562 C71.7249,40.9462 71.5259,41.0312 71.2159,40.7772 C70.6509,40.2392 71.0739,39.9272 70.6509,39.2462 C69.4619,37.3812 68.9519,36.9282 67.9619,35.5952 C67.3969,34.8902 66.7169,34.5482 66.7169,33.6162 C66.7169,32.4872 67.8489,32.2882 67.8199,31.1512 C67.0849,31.6912 66.2349,32.1162 64.9309,32.2882 C64.7609,32.3162 64.3079,32.6562 64.1089,32.8822 C63.6569,33.3362 63.4879,33.7872 63.4309,34.4652 C63.2899,35.9952 62.9799,37.5512 63.1759,39.0762 C63.4309,40.0702 63.6029,40.4092 64.4209,40.9462 C64.9309,41.2852 65.5249,41.7662 65.5819,42.4732 C65.5819,42.6712 65.5249,42.8972 65.2409,42.8972 L63.2329,42.8972 C63.0339,42.8972 62.8649,42.7552 62.8089,42.6422 C62.5819,42.2472 62.7239,41.9642 62.6389,41.5102 C62.4409,40.5782 61.3949,40.6342 61.3949,39.6732 C61.3949,39.3882 61.5639,39.0202 61.5919,38.4262 C61.6489,37.1272 62.0439,35.0302 61.6489,32.4872 C61.4789,31.0102 63.0059,30.9552 63.7999,29.6532 C64.2789,28.9152 64.1389,29.2282 64.4209,28.6902 C64.7049,28.1252 64.6489,27.7282 64.6199,27.3892 C64.6199,26.9642 64.1949,26.0552 64.4789,24.2152 C64.5919,23.3952 64.9859,22.5742 65.5249,21.8672 C65.5249,21.8392 65.5249,21.7262 65.3549,21.7262 C64.5629,21.7832 64.5629,21.5852 64.0249,21.5852 C63.5169,21.5852 63.1189,22.0092 63.0339,22.2342 C62.7799,22.1212 62.6679,21.8392 62.6679,21.6702 C62.6679,21.3862 62.7239,21.1312 63.0059,20.8482 C63.1189,20.7352 63.0059,20.6782 62.8649,20.6782 C62.2419,20.6782 61.6489,21.4432 61.5069,21.9802 C61.1379,21.9232 61.1099,21.4432 60.9409,21.4432 C60.7719,21.4432 60.6579,21.6982 60.6579,21.9532 C60.6579,23.7632 63.6029,24.1602 63.6029,26.5362 C63.6029,29.2852 60.2899,28.7172 60.2899,29.7082 C60.2899,29.9072 60.4319,30.0762 60.6869,30.1902 C60.5729,30.4452 60.2899,30.5572 59.9799,30.5572 C59.2439,30.5572 58.7039,30.0202 58.7039,29.2852 C58.7039,27.7842 60.7139,27.7552 60.7139,26.6212 C60.7139,26.0842 60.3749,25.9142 60.0639,25.6592 C58.1399,24.2992 57.0639,22.9422 57.0639,20.7072 C57.0639,18.3012 58.7339,16.4592 60.9119,16.4592 C64.0819,16.4592 64.1669,20.1122 67.0569,20.4232 C68.1319,19.6882 69.4049,19.2642 70.6509,19.2642 C72.5189,19.2642 73.3369,19.7452 75.3209,19.7452 C76.1149,19.7452 77.4449,19.5192 79.0279,18.4442 C79.6229,18.0482 79.8779,17.9632 80.4149,17.4802 C81.6599,16.4022 82.8199,14.3082 82.8199,12.8102 L82.8199,12.8932 C82.8199,12.4132 82.7069,12.1302 82.4819,12.1302 C81.8019,12.1302 81.2079,12.7542 80.5279,13.4042 C80.1039,13.8552 80.7539,14.0522 79.7929,14.5912 C79.4529,14.7612 79.0579,14.4492 78.6899,14.4492 C77.9259,14.4492 77.5859,13.5452 77.5859,12.7542 C77.5859,12.3552 77.8979,12.2432 78.0669,11.8762 C78.4639,11.1102 78.4359,10.8292 78.8019,10.0642 C79.0279,9.5532 79.4259,9.2142 79.3989,8.8462 C79.3989,8.7072 79.2849,8.6212 79.2849,8.4802 C79.2849,7.7122 80.3029,7.2032 80.3029,6.4392 C80.3029,6.0152 79.8209,5.8162 79.7079,5.4772 C79.5949,5.1372 79.6799,5.0522 79.6799,5.0522 C79.7079,4.9962 79.7659,4.9662 79.8209,4.9662 C80.2179,4.9662 80.3879,5.3922 80.7539,5.6182 C80.7839,5.1092 80.6139,4.9962 80.6139,4.6282 C80.6139,4.4302 80.5859,4.1192 80.7839,4.1192 C81.0379,4.1192 81.0089,4.4592 81.2359,4.6282 C81.5209,4.8532 81.7749,4.8272 82.0849,5.0242 C82.4819,5.2792 82.7069,5.7032 82.8489,5.7312 C83.2449,5.7882 83.3589,5.3062 83.1599,5.0242 C83.6119,4.9962 84.0669,5.3642 84.6629,5.3642 C85.5979,5.3642 85.9089,5.6182 86.0789,5.7592 C86.6739,6.2702 86.7849,6.6662 87.4359,6.6662 C87.7749,6.6662 87.9449,6.3812 88.0319,6.2702 C88.4839,6.6072 88.5119,7.4572 88.0319,8.1662 C88.2299,8.7632 89.0779,8.8182 89.4739,9.1022 C89.8699,9.3842 89.8139,9.5262 90.0959,9.6962 C90.3229,9.8392 90.5229,9.8102 90.6909,9.6962 C90.8899,10.4882 90.2089,11.1962 89.3899,11.3082 C89.4179,12.3272 90.4939,12.9512 90.9739,13.2052 C90.6909,13.8272 90.1809,14.0252 89.7289,14.1392 C89.8699,14.7612 90.5509,15.6682 90.2089,16.4872 C89.8989,16.3452 89.4459,16.4872 89.4459,16.9402 C89.4459,17.4502 90.0959,17.7092 89.4179,18.0762 C89.1059,18.2452 89.0499,18.6982 89.6149,19.1232 C90.3519,18.9242 91.0589,18.9532 91.8779,18.9532 C92.3889,18.9532 93.0679,18.8102 93.5209,18.8102 C94.3719,18.8102 94.8819,19.1502 95.5049,19.8302 C97.0619,21.5272 98.4759,23.3102 100.0879,24.5272\",\n id: \"Fill-152\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M58.084,20.0008 C58.424,20.0008 59.046,18.1318 60.318,18.1318 C60.687,18.1318 60.772,18.2728 60.772,18.4138 C60.772,18.6698 60.348,18.8968 60.348,19.2358 C60.348,19.2918 60.375,19.3768 60.488,19.3768 C60.8,19.3768 61.026,18.6978 62.299,18.6978 C62.639,18.6978 62.922,18.7268 63.232,18.8108 C63.374,18.8388 63.657,18.9818 63.544,18.5848 C63.232,17.7088 62.271,16.8838 60.912,16.8838 C59.554,16.8838 58.14,18.1048 57.97,19.5758 C57.941,19.8298 57.941,20.0008 58.084,20.0008\",\n id: \"Fill-153\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M81.5762,8.3387 C81.2082,8.1927 81.1512,7.9957 81.2652,7.5427 C81.3492,7.0627 81.3772,6.8617 81.1512,6.8067 C80.9532,6.7497 80.6992,6.8617 80.4432,7.1467 C80.2182,7.4567 79.8482,7.8267 79.7362,8.1367 C79.6232,8.5357 80.1032,8.4797 79.7652,9.1297 C79.1712,10.2057 79.0282,10.4317 78.7462,11.1957 C78.4912,11.9887 78.2932,12.1027 78.1522,12.3567 C77.9812,12.5827 78.3792,12.6107 78.8312,12.4707 C79.3132,12.2997 79.3402,12.8647 79.1712,13.2617 C79.0282,13.5447 79.1422,13.6577 79.5382,13.3467 C79.9052,13.0647 79.3402,12.8367 79.4812,11.9317 C79.6232,11.1097 79.7932,10.6577 80.3032,9.8387 C80.7272,9.1297 81.0962,8.6207 81.8302,8.8747 C82.1132,9.0177 81.9722,8.5077 81.5762,8.3387\",\n id: \"Fill-154\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M97.3155,32.3729 C97.4565,32.3729 97.4855,32.1739 97.4855,32.0019 C97.4855,31.6069 97.2585,31.0109 96.9475,30.7559 C96.8635,31.3519 96.5795,31.7479 96.5795,32.0019 C96.5795,32.2039 97.1185,32.3729 97.3155,32.3729\",\n id: \"Fill-155\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M100.8233,26.6785 C101.0513,26.6785 101.3903,26.5925 101.3903,26.4215 C101.3903,26.0835 100.8803,25.4895 100.4283,25.3475 C100.7393,25.9415 100.4283,26.6785 100.8233,26.6785\",\n id: \"Fill-156\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M85.2862,18.953 C88.4832,20.424 88.2852,23.112 88.5682,22.432 C88.6822,22.149 89.1062,20.82 87.9742,19.548 C87.0972,18.527 86.7582,18.783 87.0972,17.935 C88.4832,14.564 89.3612,9.469 85.2022,7.684 C84.7202,7.485 84.3212,7.485 84.3212,7.571 C84.3212,7.656 84.7762,7.799 85.3142,8.165 C88.0882,10.007 87.2382,15.015 84.6912,17.449 C83.8392,18.273 84.2362,18.473 85.2862,18.953\",\n id: \"Fill-157\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M74.3565,42.4168 C74.5835,42.4168 74.4695,42.0768 74.3845,41.9358 C74.1875,41.5978 73.8195,41.3708 73.5065,41.2288 C73.5915,41.5688 73.6215,42.4168 73.9615,42.4168 L74.3565,42.4168\",\n id: \"Fill-158\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M64.7051,42.4168 C64.9311,42.4168 64.7611,42.0768 64.6771,41.9358 C64.4781,41.5978 64.0821,41.3988 63.7701,41.2568 C63.8551,41.5978 63.9131,42.4168 64.2511,42.4168 L64.7051,42.4168\",\n id: \"Fill-159\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n id: \"Fill-160\",\n points: \"0.9534 45.7032 90.4384 45.7032 90.4384 44.1572 0.9534 44.1572\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M76.3975,23.2537 C78.1525,23.0557 78.4355,22.6597 78.7465,21.3297 C78.8865,20.7077 79.3395,20.0557 79.7365,19.6317 C79.9915,19.3487 80.2465,19.1227 80.5015,18.6977 C80.5855,18.5267 80.6425,18.3867 80.5015,18.4437 C80.3025,18.5847 79.7085,18.9817 79.4525,19.1797 C78.2085,20.0557 76.3115,20.4807 75.5485,20.4807 C73.9325,20.4807 72.5455,19.9997 71.0745,19.9997 C66.6615,19.9997 65.0145,23.4527 65.2415,25.4607 C65.2695,25.7727 65.3265,25.8007 65.4405,25.8007 C65.7515,25.8007 66.0085,24.6117 67.1135,23.5657 C68.7265,22.0357 70.4805,21.1597 72.9705,21.1597 C74.7825,21.1597 75.5205,21.7537 75.5205,21.9797 C75.5205,22.4317 74.7525,22.4617 74.8085,22.9137 C74.8085,23.0557 75.2375,23.3957 76.3975,23.2537\",\n id: \"Fill-161\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.711,29.491 C15.711,31.863 17.619,33.728 19.978,33.728 C22.334,33.728 24.242,31.863 24.242,29.491 C24.242,27.174 22.294,25.294 19.978,25.28 C17.66,25.294 15.711,27.174 15.711,29.491 L15.711,29.491 Z M12.673,4.21 C12.673,6.58 14.581,8.448 16.938,8.448 C19.295,8.448 21.203,6.58 21.203,4.21 C21.203,1.893 19.255,0.013 16.938,1.0658141e-14 C14.621,0.013 12.673,1.893 12.673,4.21 L12.673,4.21 Z M30.455,0.109 L30.455,8.339 L33.099,8.339 C35.47,8.339 37.323,6.526 37.323,4.21 C37.323,1.922 35.47,0.109 33.099,0.109 L30.455,0.109 Z M0.356,12.753 L0.356,20.984 L3.38,20.984 C5.221,20.984 6.311,20.057 6.311,18.531 C6.311,17.713 5.873,17.058 5.125,16.61 C5.601,16.296 6.038,15.738 6.038,15.015 C6.038,13.638 5.028,12.753 3.476,12.753 L0.356,12.753 Z M8.722,25.403 L8.722,33.621 L10.275,33.621 L10.275,30.499 L11.27,30.499 L13,33.621 L14.799,33.621 L12.809,30.227 C13.723,29.818 14.295,28.973 14.295,27.951 C14.295,26.33 13.123,25.403 11.516,25.403 L8.722,25.403 Z M22.336,12.753 L22.336,18.163 L17.99,12.753 L16.653,12.753 L16.653,20.984 L18.207,20.984 L18.207,15.302 L22.731,20.984 L23.863,20.984 L23.863,12.753 L22.336,12.753 Z M43.962,12.753 L43.962,18.163 L39.616,12.753 L38.281,12.753 L38.281,20.984 L39.835,20.984 L39.835,15.302 L44.358,20.984 L45.489,20.984 L45.489,12.753 L43.962,12.753 Z M13.614,20.984 L15.332,20.984 L11.951,12.713 L10.467,12.713 L7.074,20.984 L8.723,20.984 L9.568,18.817 L12.783,18.817 L13.614,20.984 Z M34.599,25.403 L34.599,33.621 L36.138,33.621 L36.138,30.773 L37.228,30.773 C38.849,30.785 40.131,29.722 40.131,28.074 C40.131,26.467 38.917,25.403 37.323,25.403 L34.599,25.403 Z M27.829,12.753 L26.261,12.753 L26.261,20.984 L27.829,20.984 L27.829,17.1 L31.181,20.984 L33.237,20.984 L29.573,16.814 L33.021,12.753 L31.112,12.753 L27.829,16.651 L27.829,12.753 Z M30.919,25.403 L30.919,30.581 C30.919,31.575 30.251,32.229 29.256,32.229 C28.275,32.229 27.567,31.562 27.567,30.581 L27.567,25.403 L25.999,25.403 L25.999,30.622 C25.999,32.489 27.403,33.742 29.256,33.742 C31.108,33.742 32.514,32.474 32.514,30.622 L32.514,25.403 L30.919,25.403 Z M-1.70530257e-13,29.517 C-1.70530257e-13,32.039 2.003,33.742 4.415,33.742 C5.139,33.742 5.873,33.606 6.597,33.401 L6.597,29.178 L5.069,29.178 L5.069,32.203 C4.935,32.229 4.62,32.257 4.43,32.257 C2.753,32.257 1.623,31.086 1.623,29.517 C1.623,27.896 2.808,26.82 4.497,26.82 C5.221,26.82 5.819,26.971 6.404,27.162 L6.404,25.635 C5.914,25.47 5.207,25.322 4.484,25.322 C1.977,25.322 -1.70530257e-13,27.011 -1.70530257e-13,29.517 L-1.70530257e-13,29.517 Z M47.206,16.868 C47.206,19.389 49.209,21.093 51.621,21.093 C52.343,21.093 53.078,20.957 53.802,20.751 L53.802,16.528 L52.276,16.528 L52.276,19.553 C52.139,19.581 51.826,19.607 51.634,19.607 C49.959,19.607 48.826,18.435 48.826,16.868 C48.826,15.248 50.013,14.171 51.702,14.171 C52.425,14.171 53.024,14.32 53.609,14.511 L53.609,12.984 C53.12,12.821 52.411,12.672 51.69,12.672 C49.181,12.672 47.206,14.362 47.206,16.868 L47.206,16.868 Z M38.659,2.371 C38.659,3.501 39.381,4.279 40.865,4.741 C41.792,5.042 42.528,5.286 42.528,6.009 C42.528,6.678 41.86,6.976 41.193,6.976 C40.362,6.976 39.544,6.649 38.796,6.185 L38.796,7.78 C39.339,8.094 40.253,8.42 41.233,8.42 C42.61,8.42 44.082,7.549 44.082,5.94 C44.082,4.373 42.856,3.774 41.792,3.447 C40.416,3.012 40.172,2.725 40.172,2.33 C40.172,1.758 40.689,1.471 41.492,1.471 C42.242,1.471 42.923,1.717 43.537,1.989 L43.537,0.49 C42.868,0.163 42.16,0.04 41.465,0.04 C39.816,0.04 38.659,0.953 38.659,2.371 L38.659,2.371 Z M19.978,26.794 C21.421,26.794 22.62,27.979 22.62,29.491 C22.62,31.045 21.449,32.229 19.978,32.229 C18.506,32.229 17.333,31.045 17.333,29.491 C17.333,27.979 18.532,26.794 19.978,26.794 L19.978,26.794 Z M16.938,1.512 C18.382,1.512 19.582,2.697 19.582,4.21 C19.582,5.762 18.41,6.948 16.938,6.948 C15.467,6.948 14.295,5.762 14.295,4.21 C14.295,2.697 15.494,1.512 16.938,1.512 L16.938,1.512 Z M27.635,0.109 L25.536,3.679 L23.315,0.109 L21.449,0.109 L24.65,5.054 L22.661,8.339 L24.459,8.339 L29.42,0.109 L27.635,0.109 Z M7.005,0.109 L7.005,8.339 L12.277,8.339 L12.277,6.799 L8.599,6.799 L8.599,0.109 L7.005,0.109 Z M0.356,0.109 L0.356,8.339 L5.614,8.339 L5.614,6.799 L1.936,6.799 L1.936,0.109 L0.356,0.109 Z M33.112,1.607 C34.612,1.607 35.702,2.711 35.702,4.21 C35.702,5.736 34.612,6.84 33.112,6.84 L32.022,6.84 L32.022,1.607 L33.112,1.607 Z M34.247,20.984 L35.84,20.984 L35.84,12.753 L34.247,12.753 L34.247,20.984 Z M3.558,17.481 C4.253,17.481 4.716,17.89 4.716,18.477 C4.716,19.335 3.94,19.525 3.299,19.525 L1.922,19.525 L1.922,17.481 L3.558,17.481 Z M37.24,26.902 C38.06,26.902 38.535,27.365 38.535,28.088 C38.535,28.809 38.019,29.26 37.158,29.26 L36.138,29.26 L36.138,26.902 L37.24,26.902 Z M11.433,26.876 C12.17,26.876 12.7,27.188 12.7,27.951 C12.7,28.674 12.224,29.055 11.501,29.041 L10.288,29.041 L10.288,26.876 L11.433,26.876 Z M3.353,14.197 C3.871,14.197 4.484,14.442 4.484,15.096 C4.484,15.682 4.047,16.078 3.407,16.078 L1.922,16.078 L1.922,14.197 L3.353,14.197 Z M11.19,14.635 L12.237,17.387 L10.113,17.387 L11.19,14.635 Z\",\n id: \"Fill-162\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgGroup32);\nexport default __webpack_public_path__ + \"static/media/Group 32.21b2fbe9cf8668d62131af179fe37710.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgGroup34(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"96px\",\n height: \"63px\",\n viewBox: \"0 0 96 63\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"Group 34\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Final-design-tweak\",\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group-34\",\n transform: \"translate(0.122400, 0.014900)\",\n fill: \"#0AEDC2\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.0331,4.0346 C13.1121,4.1746 13.2361,4.2756 13.3681,4.3146 C13.5421,4.3666 13.7411,4.2916 13.7891,4.1386 C13.8391,3.9766 13.8681,3.8066 13.9061,3.6436 C13.6211,3.7716 13.3311,3.9016 13.0331,4.0346 M12.3131,4.3136 C12.0021,4.4226 11.6981,4.5276 11.4131,4.6266 C11.5261,4.7016 11.6511,4.7806 11.7701,4.8656 C11.8911,4.9506 12.0111,4.9586 12.1361,4.8796 C12.3031,4.7746 12.3871,4.5106 12.3131,4.3136 M12.6311,5.5426 C12.7131,5.5236 12.7821,5.5046 12.8531,5.4916 C13.0281,5.4586 13.1571,5.5536 13.1491,5.7316 C13.1461,5.8106 13.0881,5.8876 13.0531,5.9646 C13.0331,6.0066 12.9891,6.0486 12.9931,6.0866 C13.0111,6.3086 13.0651,6.5206 13.2571,6.6636 C13.4961,6.8426 13.8501,6.7086 13.9131,6.4176 C13.9561,6.2186 13.8521,6.0576 13.7631,5.8936 C13.7031,5.7806 13.5991,5.7786 13.4931,5.7646 C13.3651,5.7496 13.2991,5.6596 13.2681,5.5416 C13.2391,5.4276 13.3011,5.3536 13.3891,5.2966 C13.4481,5.2586 13.5101,5.2216 13.5801,5.1786 C13.5341,5.1556 13.4961,5.1456 13.4711,5.1226 C13.4351,5.0876 13.4091,5.0436 13.3791,5.0026 C13.4321,4.9726 13.4831,4.9286 13.5401,4.9196 C13.5891,4.9116 13.6431,4.9476 13.6971,4.9576 C13.7211,4.9616 13.7621,4.9566 13.7721,4.9406 C13.7841,4.9236 13.7741,4.8846 13.7621,4.8626 C13.6611,4.7046 13.5241,4.6576 13.3491,4.7216 C13.0661,4.8286 12.7841,4.9356 12.5021,5.0456 C12.3091,5.1196 12.2491,5.2216 12.2791,5.4266 C12.2831,5.4546 12.3091,5.4786 12.3261,5.5046 C12.3501,5.4876 12.3811,5.4746 12.3991,5.4526 C12.4381,5.4016 12.4641,5.3356 12.5121,5.2956 C12.5441,5.2696 12.6101,5.2636 12.6501,5.2796 C12.6721,5.2876 12.6771,5.3596 12.6751,5.4016 C12.6721,5.4436 12.6491,5.4846 12.6311,5.5426 M16.3791,17.0586 C16.2051,16.7576 16.0731,16.6986 15.8491,16.8226 C15.8871,17.2426 15.7931,17.4216 15.4921,17.4876 C15.5121,17.4146 15.5371,17.3446 15.5491,17.2716 C15.5601,17.1966 15.5491,17.1196 15.4681,17.0856 C15.3901,17.0526 15.3111,17.0516 15.2491,17.1246 C15.2471,17.1276 15.2441,17.1306 15.2411,17.1326 C15.0561,17.2636 14.8461,17.1946 14.6461,17.2026 C14.5471,17.2076 14.4981,17.1256 14.4441,17.0556 C14.3691,16.9566 14.2931,16.8586 14.2081,16.7676 C14.1561,16.7126 14.0831,16.6546 14.0071,16.7146 C13.9301,16.7726 13.9261,16.8646 13.9641,16.9536 C13.9771,16.9856 13.9991,17.0146 14.0171,17.0486 C13.7441,17.0726 13.5281,16.9366 13.4381,16.6766 C13.3871,16.5246 13.3511,16.3676 13.3031,16.2146 C13.2671,16.1066 13.2151,16.0076 13.0911,15.9436 L13.0911,16.5836 C12.7741,16.3196 12.5501,16.0346 12.4731,15.6516 C12.4641,15.6046 12.4591,15.5576 12.4511,15.5116 C12.4311,15.3866 12.3831,15.2816 12.2631,15.2196 C12.2291,15.2016 12.1961,15.1746 12.1731,15.1426 C12.1041,15.0536 12.1361,14.9386 12.2401,14.9096 C12.6261,14.7996 12.8081,14.5026 12.7881,14.0496 C12.7671,13.6076 12.5901,13.2636 12.2191,13.0216 C12.2071,13.0136 12.1941,13.0066 12.1811,12.9996 C12.1761,12.9966 12.1681,12.9966 12.1591,12.9956 C12.1591,13.1166 12.1581,13.2386 12.1601,13.3596 C12.1691,13.8516 12.1371,14.3396 11.9031,14.7866 C11.6051,15.3576 11.1521,15.7796 10.5991,16.0956 C10.3791,16.2216 10.1351,16.3046 9.9071,16.4186 C9.7481,16.4976 9.5911,16.5846 9.4481,16.6896 C9.3131,16.7886 9.2521,16.9416 9.2511,17.1116 C9.2471,17.5446 9.3091,17.9636 9.5411,18.3406 C9.6621,18.5386 9.8201,18.6936 10.0591,18.7476 C10.1991,18.7796 10.3161,18.7486 10.3981,18.6326 C10.5661,18.3936 10.8581,18.3706 11.0641,18.4806 C11.2191,18.5636 11.3691,18.6306 11.5361,18.6786 C11.6931,18.7226 11.7461,18.8476 11.7291,19.0276 C11.7151,19.1906 11.6341,19.2866 11.4921,19.3226 C11.4721,19.2456 11.4721,19.1526 11.4271,19.0986 C11.3851,19.0516 11.2931,19.0316 11.2211,19.0266 C11.1181,19.0186 11.0861,19.0756 11.1181,19.1736 C11.1331,19.2186 11.1531,19.2626 11.1621,19.3076 C11.2081,19.5556 11.0931,19.7226 10.8341,19.7886 C10.8311,19.7826 10.8241,19.7756 10.8251,19.7706 C10.8471,19.6996 10.8751,19.6246 10.7931,19.5756 C10.7081,19.5236 10.6251,19.5446 10.5541,19.6116 C10.5401,19.6236 10.5251,19.6356 10.5141,19.6496 C10.3591,19.8806 10.1431,19.8886 9.9031,19.8196 C9.7201,19.7676 9.5371,19.7146 9.3451,19.7676 C9.3201,19.7746 9.2951,19.7806 9.2711,19.7896 C9.1411,19.8406 9.1181,19.8986 9.1751,20.0236 C8.9711,20.0516 8.8361,19.9556 8.8061,19.7516 C8.7841,19.6016 8.8121,19.4626 8.9211,19.3466 C8.9701,19.2946 9.0391,19.2476 8.9991,19.1596 C8.9641,19.0826 8.8361,19.0306 8.7421,19.0526 C8.6001,19.0866 8.5191,19.1826 8.4721,19.3346 C8.3521,19.1206 8.2901,18.9116 8.3461,18.6796 C8.3871,18.5166 8.4431,18.3576 8.4711,18.1926 C8.4901,18.0716 8.4741,17.9446 8.4551,17.8176 C8.3451,18.0666 8.2251,18.2996 8.0021,18.4586 C7.9571,18.2346 7.9071,18.0196 7.8741,17.8036 C7.8261,17.4846 7.8901,17.1856 8.0701,16.9156 C8.1101,16.8546 8.1501,16.7936 8.1931,16.7346 C8.2631,16.6386 8.2841,16.5406 8.2351,16.4276 C8.2141,16.3786 8.2021,16.3216 8.2031,16.2676 C8.2051,16.1556 8.2971,16.0936 8.4051,16.1226 C8.4201,16.1266 8.4331,16.1306 8.4471,16.1356 C8.7751,16.2466 8.9771,16.1946 9.2041,15.9316 C9.4421,15.6556 9.5801,15.3236 9.6141,14.9696 C9.6921,14.1526 10.0031,13.4276 10.4001,12.7256 C10.4591,12.6246 10.4761,12.4986 10.5131,12.3846 C10.5021,12.3786 10.4891,12.3736 10.4771,12.3676 C10.3671,12.5336 10.2551,12.6976 10.1451,12.8646 C9.9161,13.2166 9.6911,13.5716 9.3691,13.8496 C9.3521,13.8646 9.3411,13.8926 9.3401,13.9156 C9.3311,14.1016 9.2461,14.2526 9.1161,14.3766 C8.7971,14.6806 8.4241,14.8336 7.9781,14.7486 C7.8751,14.7276 7.7791,14.6726 7.6801,14.6176 C7.9611,14.5686 8.2211,14.5026 8.3641,14.2086 C8.2411,14.1886 8.1391,14.1346 8.0121,14.1816 C7.7521,14.2816 7.4171,14.1846 7.2341,13.9726 C7.1561,13.8816 7.1251,13.7926 7.1351,13.6756 C7.2771,13.8056 7.4311,13.8826 7.6151,13.8056 C7.5611,13.6546 7.4901,13.5096 7.4591,13.3556 C7.3831,12.9926 7.4621,12.6446 7.6201,12.3146 C7.8451,11.8436 8.1951,11.4666 8.5461,11.0886 C8.9271,10.6756 9.3091,10.2636 9.6731,9.8366 C9.8611,9.6156 9.9731,9.3466 10.0111,9.0526 C10.0831,8.4876 9.6561,8.1516 9.1301,8.3606 C9.0691,8.3856 9.0121,8.4186 8.9521,8.4476 C9.1061,8.6226 9.1761,8.8146 9.1421,9.0456 C9.1061,9.2996 9.0041,9.5186 8.8261,9.7036 C8.6141,9.9236 8.3531,10.0686 8.0801,10.1936 C7.7561,10.3426 7.4251,10.4776 7.1031,10.6336 C6.8341,10.7636 6.5891,10.9286 6.4741,11.2636 C6.4411,10.8956 6.5361,10.6056 6.8051,10.3946 C6.9621,10.2716 7.1411,10.1786 7.3081,10.0666 C7.4621,9.9636 7.6201,9.8636 7.7611,9.7436 C7.9081,9.6186 7.9901,9.4476 8.0201,9.2446 C7.7071,9.5816 7.4101,9.9296 6.8871,9.8526 C7.2321,9.7896 7.3391,9.5086 7.4531,9.2366 C7.5351,9.0416 7.6041,8.8416 7.6931,8.6496 C7.7881,8.4466 7.9191,8.2636 8.1561,8.2206 C8.2801,8.1976 8.4161,8.2156 8.5431,8.2346 C8.6071,8.2446 8.6491,8.2416 8.7011,8.2036 C8.8911,8.0626 9.1001,7.9586 9.3401,7.9386 C9.9361,7.8886 10.4161,8.3806 10.3801,8.9806 C10.3501,9.4646 10.1441,9.8706 9.8401,10.2226 C9.4861,10.6306 9.1031,11.0136 8.7331,11.4056 C8.4571,11.6976 8.1831,11.9926 7.9901,12.3486 C7.8491,12.6066 7.7651,12.8786 7.7831,13.1766 C7.8191,13.8146 8.3801,13.9386 8.7451,13.7996 C9.0001,13.7036 9.1991,13.5266 9.3521,13.3116 C9.6231,12.9316 9.8751,12.5386 10.1321,12.1486 C10.4101,11.7256 10.6841,11.2996 10.9621,10.8746 C11.2381,10.4536 11.4271,9.9906 11.5981,9.5216 C11.8201,8.9166 12.0341,8.3066 12.2531,7.7006 C12.2841,7.6116 12.3241,7.5266 12.3481,7.4276 C12.3091,7.4656 12.2621,7.4976 12.2341,7.5416 C12.1161,7.7336 12.0061,7.9306 11.8881,8.1236 C11.8091,8.2546 11.7321,8.3886 11.6401,8.5096 C11.5571,8.6176 11.4431,8.6896 11.2821,8.7056 C11.4591,8.4766 11.4451,8.2176 11.4531,7.9656 C11.4631,7.6146 11.4731,7.2656 11.5911,6.9296 C11.6431,6.7776 11.6541,6.6156 11.5971,6.4266 C11.5541,6.5046 11.5081,6.5576 11.4911,6.6196 C11.4271,6.8616 11.3741,7.1076 11.3111,7.3496 C11.2621,7.5366 11.2151,7.7236 11.1501,7.9056 C11.1011,8.0416 11.0111,8.1516 10.8431,8.2116 C10.9751,7.9616 10.8941,7.7266 10.8451,7.4966 C10.7641,7.1126 10.8201,6.7536 10.9861,6.4006 C11.0701,6.2206 11.1271,6.0266 11.1911,5.8386 C11.2071,5.7926 11.2021,5.7386 11.2061,5.6896 C11.1941,5.6826 11.1821,5.6776 11.1721,5.6706 C11.1241,5.7426 11.0651,5.8096 11.0301,5.8876 C10.9701,6.0196 10.9341,6.1636 10.8701,6.2936 C10.8141,6.4056 10.7421,6.5146 10.6571,6.6056 C10.5761,6.6936 10.4591,6.7236 10.3191,6.7076 C10.4791,6.5316 10.5491,6.3306 10.5481,6.1036 C10.5481,6.0426 10.5491,5.9796 10.5511,5.9186 C10.5581,5.6436 10.6251,5.3906 10.8391,5.1926 C10.6541,5.0996 10.5001,4.9926 10.3931,4.8286 C10.2441,4.5956 10.2711,4.4906 10.5241,4.3906 C10.6651,4.3346 10.8151,4.3036 10.9691,4.2586 C10.9061,4.0686 11.0361,3.9556 11.1651,3.8406 C11.3221,4.0016 11.3241,4.0046 11.5161,3.8796 C12.0911,3.5086 12.7231,3.2836 13.3821,3.1216 C13.5471,3.0816 13.5471,3.0816 13.5281,2.9116 C13.5271,2.8966 13.5281,2.8826 13.5281,2.8686 C13.7611,2.8236 13.8981,2.8786 13.9631,3.0196 C14.1511,2.9626 14.3371,2.9066 14.5221,2.8496 C14.5951,2.8286 14.6241,2.8636 14.6501,2.9286 C14.7351,3.1426 14.7521,3.3596 14.6961,3.5836 C14.6831,3.6326 14.6721,3.6816 14.6561,3.7466 C14.9411,3.7666 15.1411,4.0276 15.4671,3.9896 C15.3711,4.1156 15.2691,4.1996 15.1301,4.2116 C14.9971,4.2216 14.8621,4.2146 14.7401,4.2146 C15.0041,4.3236 15.2261,4.5186 15.4231,4.7466 C15.5441,4.8886 15.6571,5.0366 15.7891,5.1676 C15.8741,5.2526 15.9841,5.3116 16.0831,5.3826 C15.9961,5.4946 15.7811,5.5396 15.5941,5.4486 C15.4561,5.3836 15.3321,5.2906 15.1981,5.2156 C15.0931,5.1556 14.9821,5.1036 14.8731,5.0486 C14.8671,5.0596 14.8621,5.0706 14.8561,5.0816 C14.9291,5.1236 15.0011,5.1646 15.0731,5.2076 C15.4281,5.4236 15.7211,5.7026 15.9581,6.0436 C16.0481,6.1736 16.1201,6.3246 16.2901,6.3776 C16.1891,6.5006 16.0391,6.5386 15.8681,6.4686 C15.7341,6.4136 15.6071,6.3396 15.4761,6.2756 C15.4091,6.2426 15.3391,6.2156 15.2661,6.1836 C15.4421,6.3426 15.6211,6.4866 15.7801,6.6496 C16.0501,6.9256 16.1831,7.2536 16.1241,7.6456 C16.1201,7.6686 16.1231,7.7016 16.1371,7.7166 C16.2921,7.8796 16.2931,8.0866 16.3041,8.2906 C16.3051,8.3266 16.3041,8.3626 16.3041,8.3966 C16.4961,8.3396 16.6791,8.2856 16.8621,8.2306 C16.8681,8.2386 16.8741,8.2476 16.8801,8.2556 C16.3511,8.8096 15.9231,9.4296 15.6461,10.1606 C15.4711,9.9926 15.3041,9.8356 15.1411,9.6766 C15.0191,9.5566 14.8811,9.4906 14.6851,9.5236 C14.7191,9.5626 14.7431,9.5956 14.7701,9.6246 C15.2601,10.1616 15.7481,10.6996 16.2401,11.2336 C16.4461,11.4586 16.5641,11.7166 16.5721,12.0216 C16.5771,12.1996 16.6591,12.3426 16.7651,12.4756 C16.8561,12.5896 16.9351,12.7026 16.8791,12.8636 C16.8641,12.9066 16.8871,12.9726 16.9101,13.0186 C17.0571,13.3026 16.9830699,13.4886 16.6781,13.5876 C16.6551,13.5946 16.6321,13.5976 16.6041,13.6046 C16.6881,13.2706 16.6331,13.1496 16.3691,13.0976 C16.3591,13.3076 16.3481,13.5206 16.1341,13.6376 C16.0271,13.6956 15.9151,13.7136 15.7851,13.6656 C15.9941,13.5276 15.9811,13.3356 15.9351,13.1106 C15.7931,13.3226 15.6351,13.4806 15.3741,13.4336 C15.2331,13.4096 15.1421,13.3126 15.0921,13.2096 C15.1851,13.1916 15.2851,13.1926 15.3641,13.1516 C15.4631,13.1016 15.4611,13.0076 15.3831,12.9266 C15.3631,12.9056 15.3401,12.8876 15.3191,12.8666 C15.1901,12.7346 15.2101,12.5346 15.3651,12.4336 C15.4231,12.3956 15.4881,12.3706 15.5471,12.3346 C15.6491,12.2696 15.6911,12.1396 15.6501,12.0276 C15.6051,11.9046 15.4461,11.8766 15.3431,11.9826 C15.2921,12.0356 15.2621,12.1086 15.2171,12.1846 C15.0501,11.9346 15.1911,11.6656 15.1501,11.4036 C15.1271,11.6736 14.8871,11.7396 14.7151,11.8896 C14.5771,11.6386 14.7101,11.3506 14.5971,11.1216 C14.5081,11.2866 14.4121,11.4616 14.3161,11.6386 C13.8221,11.4786 13.3451,11.4686 12.8771,11.7886 C12.9961,11.8736 13.0961,11.9436 13.1951,12.0146 C13.4871,12.2266 13.7891,12.4276 14.0671,12.6556 C14.3131,12.8566 14.4441,13.1326 14.4651,13.4566 C14.4791,13.6876 14.3941,13.8816 14.2331,14.0366 C14.0951,14.1706 13.9391,14.2866 13.7931,14.4136 C13.7021,14.4916 13.6091,14.5696 13.5261,14.6566 C13.4161,14.7706 13.3951,14.9106 13.4711,15.0496 C13.5401,15.1736 13.6141,15.2976 13.7051,15.4056 C13.9741,15.7316 14.2961,16.0006 14.6771,16.1916 C14.7411,16.2246 14.8111,16.2466 14.8791,16.2716 C15.0311,16.3286 15.1661,16.3056 15.2781,16.1836 C15.3611,16.0956 15.4621,16.0586 15.5841,16.0696 C15.6851,16.0786 15.7881,16.0786 15.8891,16.0856 C16.0001,16.0936 16.0631,16.1616 16.1131,16.2546 C16.1341,16.2936 16.1681,16.3366 16.2061,16.3516 C16.5021,16.4736 16.6011,16.8166 16.4031,17.0426 C16.3971,17.0496 16.3871,17.0546 16.3791,17.0586\",\n id: \"Fill-164\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M28.3885,4.765 C28.6595,4.693 28.9225,4.621 29.1855,4.551 C29.1045,4.503 29.0175,4.453 28.9305,4.402 C28.9055,4.388 28.8785,4.375 28.8515,4.364 C28.6335,4.269 28.4665,4.358 28.4245,4.588 C28.4125,4.652 28.3995,4.715 28.3885,4.765 M26.4395,8.74 C26.4235,8.688 26.4135,8.626 26.3875,8.572 C26.3075,8.409 26.1255,8.392 26.0365,8.549 C25.9895,8.635 25.9745,8.749 25.9775,8.85 C25.9815,8.977 26.0775,9.071 26.1725,9.079 C26.2775,9.088 26.3675,9.012 26.4095,8.877 C26.4215,8.836 26.4275,8.793 26.4395,8.74 M33.3595,17.726 C33.3615,17.6 33.2695,17.507 33.1315,17.494 C32.9315,17.477 32.6995,17.651 32.6595,17.846 C32.6395,17.953 32.6935,18.055 32.7905,18.097 C33.0175,18.196 33.3555,17.975 33.3595,17.726 M31.7775,12.272 C31.9275,12.273 32.0315,12.156 32.0125,12.007 C31.9885,11.81 31.8175,11.633 31.6205,11.603 C31.4815,11.581 31.3665,11.671 31.3555,11.811 C31.3375,12.031 31.5585,12.271 31.7775,12.272 M30.1635,15.098 C30.1515,15.298 30.3215,15.429 30.5105,15.367 C30.6715,15.313 30.8015,15.139 30.8075,14.97 C30.8145,14.768 30.6465,14.644 30.4555,14.708 C30.3005,14.761 30.1745,14.93 30.1635,15.098 M31.0295,13.753 C31.0295,13.958 31.1935,14.074 31.3855,14.003 C31.5415,13.946 31.6695,13.761 31.6685,13.595 C31.6665,13.405 31.5045,13.288 31.3255,13.347 C31.1555,13.403 31.0295,13.576 31.0295,13.753 M29.5635,7.992 C29.5475,8.03 29.5445,8.044 29.5365,8.055 C29.4555,8.167 29.3495,8.234 29.2085,8.205 C29.0465,8.172 28.9035,8.098 28.8315,7.939 C28.8145,7.9 28.8325,7.824 28.8635,7.791 C28.8945,7.759 28.9675,7.738 29.0085,7.751 C29.0685,7.772 29.1165,7.828 29.1725,7.872 C29.2745,7.806 29.3125,7.725 29.2775,7.631 C29.2425,7.541 29.1685,7.515 29.0055,7.536 C29.2225,7.193 29.2485,7.078 29.1485,6.904 C28.9025,6.99 28.8055,7.181 28.7875,7.437 C28.6865,7.29 28.6265,7.261 28.5335,7.297 C28.4415,7.333 28.4035,7.411 28.4195,7.527 C28.4515,7.527 28.4855,7.523 28.5165,7.528 C28.6075,7.541 28.6775,7.624 28.6625,7.703 C28.6455,7.801 28.5685,7.831 28.4905,7.804 C28.3625,7.76 28.2315,7.707 28.1185,7.632 C28.0065,7.558 27.9905,7.428 28.0485,7.28 C28.1175,7.339 28.1825,7.395 28.2565,7.457 C28.2915,7.369 28.3265,7.281 28.3635,7.189 L28.0985,7.189 C28.0955,7.18 28.0915,7.171 28.0875,7.161 C28.1785,7.09 28.2705,7.019 28.3695,6.94 C28.2635,6.901 28.1695,6.866 28.0715,6.828 C27.9835,7.109 27.9055,7.374 27.8165,7.635 C27.7835,7.731 27.7935,7.779 27.8885,7.831 C28.3155,8.07 28.7375,8.318 29.1595,8.562 C29.6785,8.861 30.1965,9.161 30.7155,9.456 C30.7465,9.474 30.8105,9.487 30.8265,9.47 C31.0405,9.247 31.2485,9.019 31.4655,8.786 C31.3785,8.716 31.3005,8.655 31.2165,8.587 C31.1985,8.715 31.1825,8.827 31.1655,8.94 C31.1555,8.942 31.1445,8.945 31.1325,8.947 C31.0915,8.874 31.0505,8.801 31.0025,8.717 L30.8265,8.94 C30.9215,8.975 31.0025,9.004 31.0825,9.035 C31.0825,9.05 31.0825,9.067 31.0815,9.082 C31.0025,9.111 30.9225,9.165 30.8445,9.162 C30.6415,9.155 30.4915,9.036 30.3815,8.872 C30.3605,8.841 30.3675,8.76 30.3945,8.737 C30.4305,8.704 30.5055,8.681 30.5475,8.697 C30.6055,8.718 30.6485,8.781 30.7045,8.832 C30.7835,8.797 30.8435,8.731 30.8265,8.628 C30.8185,8.581 30.7785,8.529 30.7385,8.501 C30.6985,8.475 30.6385,8.479 30.5875,8.469 C30.8485,8.251 30.9255,8.076 30.8445,7.88 C30.5835,7.922 30.4605,8.103 30.3905,8.346 C30.3385,8.239 30.3055,8.124 30.1665,8.144 C30.0615,8.159 30.0095,8.241 30.0125,8.375 C30.0295,8.375 30.0465,8.374 30.0645,8.375 C30.1795,8.384 30.2585,8.468 30.2425,8.566 C30.2275,8.661 30.1345,8.72 30.0225,8.679 C29.9145,8.641 29.8075,8.585 29.7215,8.512 C29.5995,8.408 29.6005,8.238 29.7125,8.08 C29.7485,8.173 29.7815,8.254 29.8165,8.343 C29.8865,8.231 29.9535,8.123 30.0215,8.014 C29.9365,8.01 29.8565,8.007 29.7765,8.003 C29.7715,7.991 29.7665,7.977 29.7615,7.964 C29.8585,7.896 29.9545,7.828 30.0545,7.757 C29.9975,7.723 29.9335,7.684 29.8675,7.646 C29.7995,7.607 29.7305,7.57 29.6675,7.535 C29.6565,7.658 29.6455,7.774 29.6345,7.89 C29.6205,7.893 29.6085,7.896 29.5945,7.898 C29.5505,7.832 29.5065,7.767 29.4595,7.696 C29.3985,7.81 29.3395,7.92 29.2795,8.034 C29.3735,8.02 29.4595,8.007 29.5635,7.992 M30.1585,4.894 C30.2415,5.436 29.8045,5.893 29.3005,5.787 C29.1755,5.761 29.0605,5.673 28.9495,5.599 C28.8675,5.545 28.8005,5.54 28.7185,5.591 C28.6625,5.626 28.6445,5.666 28.6375,5.732 C28.6275,5.835 28.6135,5.945 28.5705,6.037 C28.5345,6.117 28.4555,6.176 28.3955,6.244 C28.3865,6.237 28.3765,6.23 28.3675,6.222 C28.3725,6.161 28.3825,6.101 28.3795,6.041 C28.3765,5.982 28.3595,5.923 28.3465,5.853 C28.2375,5.921 28.2325,6.012 28.2235,6.103 C28.1965,6.378 28.0535,6.57 27.8255,6.637 C27.8085,6.642 27.7895,6.641 27.7695,6.644 C27.7975,6.527 27.8295,6.416 27.8505,6.304 C27.8575,6.266 27.8355,6.223 27.8265,6.182 C27.7915,6.197 27.7515,6.203 27.7225,6.225 C27.6005,6.31 27.5445,6.291 27.4795,6.156 C27.4645,6.125 27.4125,6.104 27.3745,6.095 C27.2935,6.076 27.2675,6.03 27.3315,5.978 C27.4265,5.902 27.5345,5.84 27.6415,5.78 C27.7515,5.716 27.8695,5.666 27.9795,5.601 C28.0085,5.583 28.0185,5.532 28.0365,5.495 C27.9965,5.476 27.9515,5.435 27.9185,5.443 C27.7925,5.473 27.6645,5.508 27.5465,5.561 C27.4075,5.622 27.2775,5.707 27.1425,5.779 C27.0005,5.853 26.9655,5.827 26.9585,5.668 C26.9565,5.601 26.9405,5.533 26.9195,5.468 C26.8705,5.31 26.8905,5.239 27.0135,5.128 C27.3275,4.846 27.6795,4.619 28.0525,4.423 C28.1065,4.395 28.1425,4.366 28.1545,4.297 C28.1765,4.173 28.2565,4.094 28.3765,4.05 C28.5505,3.988 28.7215,3.917 28.9065,3.846 C28.7355,3.631 28.5735,3.426 28.4095,3.222 C27.7635,2.411 27.1175,1.6 26.4705,0.789 C26.4565,0.773 26.4365,0.755 26.4335,0.737 C26.4275,0.703 26.4335,0.669 26.4335,0.635 C26.4635,0.64 26.5005,0.636 26.5215,0.653 C26.5945,0.712 26.6635,0.778 26.7315,0.844 C27.5985,1.697 28.4655,2.549 29.3325,3.401 C29.3635,3.431 29.3965,3.457 29.4365,3.493 C29.5215,3.279 29.5485,3.07 29.5025,2.852 C29.7675,2.914 30.0975,3.294 30.2085,3.665 C30.3145,3.675 30.4225,3.68 30.5295,3.696 C30.7865,3.732 31.0145,3.848 31.2375,3.975 C31.4035,4.069 31.4275,4.071 31.5825,4.034 C31.5865,4.239 31.4185,4.276 31.2685,4.348 C31.2995,4.361 31.3155,4.367 31.3295,4.371 C31.6725,4.478 31.9205,4.695 32.0845,5.013 C32.1175,5.077 32.1555,5.14 32.1975,5.201 C32.2825,5.324 32.3385,5.359 32.5365,5.427 C32.4275,5.56 32.2845,5.533 32.1425,5.517 C32.2025,5.645 32.2695,5.769 32.3205,5.9 C32.4265,6.171 32.4225,6.456 32.4075,6.742 C32.4005,6.858 32.3885,6.979 32.4115,7.09 C32.4405,7.217 32.5045,7.335 32.5585,7.468 C32.3145,7.48 32.1605,7.313 32.0005,7.137 C32.1365,7.612 31.9345,8.082 32.0005,8.568 C31.7205,8.59 31.6625,8.366 31.5745,8.168 C31.5285,8.296 31.4835,8.413 31.4465,8.534 C31.4385,8.559 31.4525,8.602 31.4725,8.621 C31.5275,8.674 31.5885,8.719 31.6545,8.773 C31.3765,9.074 31.1045,9.369 30.8285,9.667 C30.7995,9.656 30.7705,9.644 30.7285,9.626 C30.6215,9.779 30.5085,9.926 30.4105,10.083 C30.2615,10.323 30.2455,10.577 30.3935,10.82 C30.6275,11.205 30.8765,11.582 31.1185,11.963 C31.1315,11.957 31.1445,11.952 31.1575,11.947 C31.1595,11.924 31.1635,11.903 31.1625,11.881 C31.1505,11.553 31.3745,11.36 31.6965,11.421 C31.9885,11.477 32.2305,11.79 32.2025,12.076 C32.1745,12.369 31.9145,12.534 31.6215,12.441 C31.5845,12.429 31.5475,12.413 31.4875,12.391 C31.6235,12.576 31.7565,12.734 31.8665,12.907 C32.0485,13.197 32.2115,13.498 32.3925,13.788 C32.5105,13.98 32.6345,14.171 32.7765,14.345 C32.9455,14.552 33.1725,14.623 33.4355,14.545 C33.7075,14.465 33.9025,14.292 33.9645,14.013 C34.0615,13.578 33.9385,13.183 33.6915,12.823 C33.4525,12.475 33.1255,12.214 32.8175,11.936 C32.4985,11.649 32.1915,11.353 32.0035,10.957 C31.8225,10.574 31.7585,10.17 31.8465,9.753 C31.9775,9.123 32.6575,8.653 33.2435,8.794 C33.3775,8.827 33.4965,8.914 33.6245,8.973 C33.6695,8.994 33.7225,9.018 33.7695,9.014 C34.1495,8.98 34.3945,9.144 34.4905,9.516 C34.5355,9.696 34.5635,9.881 34.6075,10.061 C34.6595,10.277 34.7725,10.444 35.0145,10.484 C34.9075,10.561 34.7515,10.581 34.5905,10.499 C34.4575,10.432 34.3295,10.338 34.2275,10.23 C34.1275,10.124 34.0635,9.986 33.9815,9.86 C34.0085,10.168 34.1475,10.418 34.3955,10.597 C34.5655,10.721 34.7565,10.816 34.9345,10.93 C35.0415,10.997 35.1515,11.067 35.2435,11.153 C35.3835,11.283 35.4175,11.45 35.3665,11.653 C35.2935,11.451 35.1345,11.363 34.9685,11.29 C34.7045,11.176 34.4355,11.075 34.1705,10.961 C33.9135,10.852 33.6745,10.718 33.4705,10.522 C33.1395,10.204 33.0405,9.601 33.3595,9.204 C33.1945,9.085 33.0195,9.076 32.8325,9.136 C32.4285,9.267 32.1435,9.66 32.1395,10.091 C32.1355,10.537 32.2985,10.923 32.6005,11.241 C32.8795,11.534 33.1855,11.8 33.4805,12.077 C33.8135,12.391 34.1125,12.727 34.2405,13.181 C34.3335,13.518 34.3685,13.859 34.2335,14.191 C34.1675,14.349 34.0615,14.491 33.9725,14.643 C34.1525,14.653 34.3125,14.56 34.4605,14.436 C34.3385,15.039 33.6595,15.161 33.3765,14.89 C33.3665,14.88 33.3545,14.866 33.3425,14.865 C33.2665,14.863 33.1905,14.864 33.1155,14.864 C33.1745,15.122 33.4415,15.345 33.7435,15.371 C33.5605,15.514 33.3685,15.571 33.1555,15.529 C32.7265,15.445 32.4125,15.012 32.4375,14.556 C32.4405,14.509 32.4175,14.455 32.3935,14.411 C32.2845,14.218 32.1725,14.026 32.0585,13.836 C32.0345,13.796 31.9915,13.769 31.9565,13.737 C31.9335,13.778 31.8875,13.821 31.8885,13.862 C31.9005,14.225 31.7555,14.544 31.6225,14.869 C31.5605,15.019 31.4995,15.175 31.4725,15.334 C31.4195,15.642 31.6725,16.076 31.9575,16.199 C31.9965,16.215 32.0515,16.213 32.0925,16.201 C32.1475,16.184 32.1955,16.147 32.2475,16.12 C32.3545,16.067 32.4235,16.101 32.4425,16.22 C32.4495,16.263 32.4475,16.307 32.4485,16.351 C32.4525,16.798 32.4575,17.246 32.4625,17.695 C32.4735,17.697 32.4845,17.698 32.4945,17.7 C32.5115,17.674 32.5275,17.649 32.5435,17.623 C32.6805,17.416 32.8705,17.302 33.1205,17.305 C33.4395,17.309 33.6265,17.578 33.5275,17.879 C33.4315,18.169 33.0915,18.371 32.7945,18.296 C32.6925,18.271 32.6015,18.196 32.5115,18.147 C32.4875,18.479 32.6285,18.87 32.2855,19.143 C32.2125,19.089 32.1565,19.036 32.0895,19.003 C31.9845,18.952 31.8615,18.987 31.8075,19.074 C31.7465,19.173 31.8125,19.237 31.8755,19.301 C32.0275,19.455 32.0315,19.619 31.8735,19.769 C31.6415,19.988 31.3655,20.098 31.0215,20.09 C31.0985,19.814 31.1715,19.553 31.2445,19.292 C31.2405,19.288 31.2355,19.284 31.2295,19.279 C31.1875,19.336 31.1355,19.389 31.1055,19.452 C31.0385,19.589 30.9885,19.735 30.9215,19.872 C30.8415,20.036 30.7425,20.064 30.5875,19.969 C30.7525,19.707 30.9105,19.441 31.0845,19.186 C31.1495,19.092 31.2405,19.005 31.3375,18.948 C31.6455,18.765 31.7615,18.484 31.8005,18.148 C31.8535,17.701 31.7785,17.259 31.7475,16.816 C31.7345,16.607 31.6385,16.554 31.4315,16.563 C31.3355,16.567 31.2305,16.558 31.1445,16.521 C30.5405,16.263 30.0485,15.869 29.7035,15.305 C29.5285,15.019 29.4995,14.825 29.5335,14.401 C29.2745,14.389 29.0215,14.402 28.7965,14.548 C28.5695,14.698 28.5235,14.934 28.5215,15.182 C28.5195,15.407 28.5585,15.614 28.7535,15.768 C28.8675,15.859 28.8435,15.953 28.7005,16.018 C28.3975,16.153 28.0905,16.281 27.7845,16.41 C27.3375,16.596 26.8895,16.782 26.4415,16.967 C26.2175,17.06 26.1635,17.045 26.0075,16.864 C25.9365,16.78 25.8615,16.695 25.7325,16.722 C25.6105,16.748 25.5785,16.817 25.6625,16.904 C25.8285,17.075 25.7255,17.308 25.5645,17.392 C25.4935,17.428 25.4175,17.462 25.3395,17.472 C25.1545,17.497 24.9665,17.507 24.7565,17.526 C24.8495,17.3 25.0095,17.144 25.0485,16.933 C25.0375,16.925 25.0285,16.917 25.0175,16.91 C24.9865,16.939 24.9505,16.964 24.9245,16.997 C24.8325,17.116 24.7385,17.233 24.6585,17.359 C24.5975,17.453 24.5235,17.482 24.4185,17.456 C24.3775,17.447 24.3345,17.444 24.2675,17.435 C24.3725,17.328 24.4625,17.237 24.5555,17.146 C24.6725,17.031 24.8005,16.926 24.9075,16.801 C25.1595,16.504 25.4945,16.402 25.8625,16.35 C26.3895,16.275 26.9165,16.195 27.4145,15.996 C27.5165,15.956 27.6145,15.905 27.7045,15.844 C27.8835,15.724 27.9335,15.582 27.8605,15.38 C27.8265,15.286 27.7615,15.203 27.7045,15.12 C27.6735,15.076 27.6285,15.041 27.5895,15.003 C26.9575,14.37 27.1605,13.378 27.9925,13.043 C28.3715,12.891 28.7705,12.856 29.1735,12.846 C29.2425,12.844 29.3115,12.845 29.3915,12.845 C29.3105,12.619 29.1665,12.453 28.9935,12.311 C28.7945,12.145 28.5695,12.03 28.3175,11.966 C27.8645,11.852 27.4745,11.64 27.2555,11.209 C27.1575,11.014 27.1115,10.792 27.0445,10.581 C27.0295,10.53 27.0265,10.475 27.0165,10.416 C26.7985,10.405 26.5825,10.404 26.3695,10.378 C26.0845,10.345 25.8005,10.293 25.5165,10.251 C25.4695,10.244 25.4205,10.24 25.3755,10.247 C25.2615,10.268 25.1935,10.377 25.2465,10.476 C25.3875,10.732 25.5395,10.981 25.6915,11.23 C25.7025,11.25 25.7385,11.258 25.7645,11.267 C25.8135,11.282 25.8655,11.287 25.9115,11.307 C26.0415,11.363 26.0725,11.492 25.9845,11.602 C25.9705,11.619 25.9545,11.635 25.9415,11.652 C25.8995,11.706 25.8935,11.764 25.9565,11.802 C26.0175,11.837 26.0865,11.828 26.1095,11.754 C26.1335,11.678 26.1845,11.667 26.2485,11.661 C26.4545,11.638 26.6295,11.681 26.7475,11.872 C26.8485,12.036 26.9575,12.193 27.0495,12.365 C26.8005,12.314 26.5815,12.188 26.3325,12.184 C26.3285,12.194 26.3255,12.202 26.3215,12.211 C26.3455,12.226 26.3685,12.244 26.3945,12.254 C26.4975,12.3 26.6015,12.345 26.7055,12.387 C26.7945,12.423 26.8405,12.48 26.8145,12.58 C26.8035,12.621 26.8045,12.665 26.8015,12.69 C26.4635,12.525 26.1235,12.359 25.7845,12.193 C25.6325,12.118 25.5465,11.985 25.4715,11.839 C25.2325,11.375 24.9925,10.913 24.7445,10.454 C24.6295,10.24 24.6405,10.211 24.7655,10.001 C24.8885,9.795 25.0235,9.703 25.2765,9.747 C25.4845,9.784 25.7065,9.777 25.9115,9.689 C25.9315,9.68 25.9505,9.67 25.9705,9.66 C25.7715,9.416 25.5745,9.178 25.3795,8.937 C25.2845,8.821 25.1955,8.701 25.1065,8.58 C24.9445,8.363 24.7955,8.34 24.5795,8.505 C24.5685,8.514 24.5555,8.521 24.5385,8.533 C24.4345,8.418 24.3315,8.306 24.2235,8.187 C24.3795,8.058 24.5295,7.921 24.6935,7.804 C24.8095,7.721 25.1845,7.798 25.2885,7.893 C25.4845,8.069 25.6865,8.235 25.8835,8.403 C26.1005,8.225 26.2685,8.2 26.4285,8.324 C26.5905,8.45 26.6475,8.626 26.6165,8.822 C26.6005,8.919 26.6225,8.974 26.6985,9.033 C26.8005,9.113 26.8925,9.206 26.9845,9.29 C27.0495,9.088 27.0925,8.878 27.1825,8.691 C27.3035,8.435 27.4585,8.196 27.6025,7.95 C27.6275,7.905 27.6805,7.87 27.6345,7.808 C27.6265,7.798 27.6385,7.773 27.6445,7.756 C27.7515,7.409 27.8605,7.06 27.9695,6.713 C27.9745,6.697 27.9845,6.681 27.9955,6.659 C28.1565,6.72 28.3125,6.778 28.4665,6.841 C28.5275,6.866 28.5665,6.859 28.6225,6.819 C28.8525,6.659 29.0865,6.503 29.3255,6.357 C29.6025,6.187 29.8935,6.04 30.1205,5.8 C30.3785,5.531 30.3985,5.151 30.1585,4.894\",\n id: \"Fill-165\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.787,19.5697 C24.893,19.6677 25,19.7657 25.107,19.8627 C25.334,20.0657 25.501,20.3017 25.464,20.6237 C25.447,20.7647 25.416,20.9177 25.348,21.0407 C25.09,21.5037 24.909,21.9917 24.802,22.5087 C24.724,22.8827 24.483,23.1327 24.161,23.3137 C23.744,23.5487 23.288,23.6607 22.822,23.7347 C21.655,23.9207 20.481,23.9227 19.307,23.8487 C18.664,23.8087 18.025,23.7367 17.417,23.5147 C17.186,23.4307 16.964,23.3117 16.757,23.1787 C16.489,23.0077 16.351,22.7367 16.291,22.4277 C16.202,21.9817 16.043,21.5617 15.84,21.1547 C15.769,21.0127 15.725,20.8547 15.693,20.6997 C15.626,20.3737 15.743,20.1047 15.983,19.8847 C16.099,19.7797 16.213,19.6747 16.327,19.5697 C16.322,19.5587 16.317,19.5477 16.313,19.5367 C16.174,19.5677 16.033,19.5917 15.896,19.6317 C15.404,19.7757 14.967,20.0327 14.542,20.3097 C14.058,20.6257 13.584,20.9537 13.099,21.2647 C12.703,21.5197 12.288,21.7367 11.825,21.8567 C11.397,21.9667 11.009,21.9027 10.654,21.6387 C10.473,21.5047 10.297,21.3607 10.11,21.2327 C9.886,21.0787 9.652,20.9357 9.421,20.7917 C9.366,20.7567 9.312,20.7177 9.347,20.6567 C9.365,20.6237 9.439,20.5927 9.478,20.6027 C9.949,20.7187 10.398,20.6287 10.838,20.4617 C11.446,20.2307 11.99,19.8827 12.534,19.5337 C13.16,19.1327 13.784,18.7247 14.419,18.3387 C14.787,18.1137 15.184,17.9437 15.616,17.8747 C16.346,17.7577 17.101,18.0237 17.435,18.8457 C17.562,19.1577 17.758,19.4407 17.922,19.7377 C17.953,19.7957 17.987,19.8517 18.014,19.9117 C18.136,20.1897 18.091,20.4437 17.849,20.6277 C17.652,20.7747 17.429,20.8877 17.215,21.0127 C17.13,21.0627 17.037,21.0987 16.955,21.1517 C16.905,21.1837 16.863,21.2337 16.827,21.2837 C16.786,21.3417 16.797,21.3897 16.875,21.4137 C17.269,21.5287 17.659,21.6687 18.058,21.7577 C18.802,21.9257 19.558,21.9827 20.319,21.9947 C21.308,22.0097 22.289,21.9427 23.253,21.7167 C23.609,21.6327 23.958,21.5137 24.309,21.4107 C24.313,21.3937 24.317,21.3787 24.32,21.3617 C24.272,21.3137 24.23,21.2547 24.173,21.2197 C24.048,21.1457 23.91,21.0917 23.788,21.0137 C23.603,20.8977 23.412,20.7847 23.252,20.6397 C23.004,20.4137 22.974,20.1417 23.134,19.8447 C23.193,19.7327 23.269,19.6287 23.33,19.5157 C23.459,19.2797 23.598,19.0467 23.703,18.7987 C24.007,18.0887 24.629,17.8047 25.321,17.8527 C25.833,17.8877 26.293,18.0907 26.722,18.3507 C27.386,18.7547 28.033,19.1827 28.687,19.6017 C29.205,19.9317 29.725,20.2557 30.304,20.4697 C30.738,20.6317 31.181,20.7157 31.643,20.6017 C31.681,20.5917 31.729,20.6317 31.772,20.6477 C31.755,20.6907 31.748,20.7577 31.717,20.7727 C31.322,20.9577 30.997,21.2427 30.653,21.5007 C30.451,21.6507 30.246,21.8007 29.999,21.8697 C29.656,21.9647 29.326,21.8817 29.004,21.7667 C28.511,21.5927 28.077,21.3097 27.642,21.0267 C27.117,20.6837 26.597,20.3327 26.063,20.0037 C25.718,19.7907 25.343,19.6327 24.938,19.5617 C24.892,19.5527 24.846,19.5497 24.799,19.5457 C24.795,19.5527 24.791,19.5617 24.787,19.5697\",\n id: \"Fill-166\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20.5731,6.5385 C20.4371,6.5385 20.3021,6.5345 20.1681,6.5395 C19.6571,6.5565 19.1471,6.5765 18.6461,6.6895 C18.4231,6.7405 18.1991,6.8005 18.0191,6.9565 C17.8631,7.0915 17.8401,7.2815 17.9671,7.4445 C18.0261,7.5205 18.1091,7.5785 18.1811,7.6445 C18.2251,7.6845 18.2651,7.6765 18.3181,7.6485 C18.5011,7.5515 18.6821,7.4465 18.8751,7.3705 C19.5801,7.0885 20.3171,7.0265 21.0671,7.0945 C21.6511,7.1465 22.2061,7.3005 22.7171,7.5945 C22.8931,7.6955 22.8931,7.6955 23.0501,7.5595 C23.0581,7.5525 23.0661,7.5455 23.0751,7.5385 C23.3091,7.3165 23.2891,7.0445 23.0061,6.8915 C22.8381,6.8005 22.6511,6.7335 22.4661,6.6905 C21.8441,6.5495 21.2081,6.5425 20.5731,6.5385 L20.5731,6.5385 Z M20.7101,8.7015 L20.7101,12.5805 L23.9311,12.5805 C23.9311,12.5465 23.9321,12.5175 23.9311,12.4895 C23.9131,12.0425 23.8411,11.6035 23.6911,11.1825 C23.3691,10.2685 22.8271,9.5315 21.9681,9.0555 C21.5791,8.8395 21.1611,8.7255 20.7101,8.7015 L20.7101,8.7015 Z M20.4891,12.5795 L20.4891,8.6975 C20.3981,8.7025 20.3141,8.7035 20.2321,8.7135 C19.4381,8.8095 18.7901,9.1805 18.2581,9.7645 C17.7071,10.3695 17.3891,11.0895 17.2531,11.8915 C17.2151,12.1155 17.2021,12.3445 17.1771,12.5795 L20.4891,12.5795 Z M20.4231,5.1585 C20.2081,5.2115 20.0261,5.3165 19.8731,5.4805 L19.8731,4.6155 C20.0181,4.7815 20.1931,4.8965 20.4291,4.9445 C20.3541,4.6765 20.1821,4.5025 19.9671,4.3355 L21.1441,4.3355 C20.9351,4.4975 20.7601,4.6755 20.6821,4.9455 C20.9211,4.9005 21.1001,4.7885 21.2471,4.6175 L21.2471,5.4765 C21.0921,5.3155 20.9051,5.2075 20.6751,5.1525 C20.6911,5.3335 20.7541,5.4765 20.8811,5.5855 C21.1251,5.7945 21.6291,5.8405 21.9071,5.6815 C22.0281,5.6125 22.0791,5.5175 22.0581,5.4055 C22.0431,5.3205 21.9951,5.2515 21.9121,5.2535 C21.8541,5.2555 21.7871,5.3015 21.7451,5.3465 C21.7051,5.3885 21.6931,5.4565 21.6701,5.5115 C21.5611,5.3815 21.5291,5.0515 21.6121,4.9075 C21.6831,4.7835 21.8591,4.7595 21.9691,4.8785 C22.0401,4.9555 22.0831,5.0605 22.1321,5.1575 C22.1551,5.2045 22.1621,5.2605 22.1801,5.3305 C22.2201,5.2545 22.2461,5.1915 22.2841,5.1375 C22.3321,5.0685 22.3841,5.0015 22.4441,4.9445 C22.5291,4.8645 22.6351,4.8305 22.7461,4.8865 C22.8591,4.9425 22.8701,5.0525 22.8571,5.1615 C22.8371,5.3355 22.7731,5.4905 22.6351,5.6135 C22.6301,5.5385 22.6361,5.4705 22.6201,5.4075 C22.5911,5.2895 22.4841,5.2545 22.3821,5.3195 C22.2431,5.4075 22.2401,5.5945 22.3751,5.7115 C22.6481,5.9505 23.1381,5.9655 23.4241,5.7405 C23.4711,5.7035 23.5131,5.6585 23.5691,5.6065 C23.3791,5.5215 23.2161,5.5715 23.0471,5.6425 C23.1251,5.4155 23.2001,5.1955 23.2821,4.9595 C23.3521,5.1515 23.4671,5.3015 23.6411,5.4195 C23.6901,5.1585 23.6361,4.9265 23.5021,4.6765 C23.7371,4.7745 23.9461,4.8615 24.1651,4.9535 C24.0971,5.0495 24.0311,5.1335 23.9731,5.2245 C23.6801,5.6895 23.4651,6.1915 23.2971,6.7145 C23.2881,6.7405 23.2951,6.7895 23.3131,6.8075 C23.5521,7.0385 23.5481,7.4775 23.2171,7.7435 C23.1791,7.7725 23.1411,7.8015 23.0931,7.8395 C23.1281,7.8645 23.1581,7.8875 23.1881,7.9085 C23.7851,8.3275 24.2721,8.8495 24.6631,9.4645 C24.7041,9.5285 24.7121,9.5755 24.6561,9.6365 C24.5841,9.7125 24.5231,9.8005 24.4531,9.8795 C24.3101,10.0385 24.2831,10.2095 24.3831,10.4025 C24.6421,10.9045 24.8931,11.4105 25.1611,11.9085 C25.2321,12.0405 25.3401,12.1585 25.4491,12.2625 C25.5221,12.3305 25.5441,12.3985 25.5451,12.4895 C25.5511,13.1245 25.4871,13.7505 25.3121,14.3615 C24.9961,15.4705 24.4201,16.4135 23.5471,17.1765 C23.3541,17.3455 23.1501,17.3935 22.9221,17.3515 C22.4611,17.2675 22.0031,17.1625 21.5431,17.0645 C21.5331,17.0625 21.5241,17.0545 21.5061,17.0425 C21.5521,16.7235 21.6421,16.4385 21.9641,16.2675 C22.7681,15.8355 23.2901,15.1535 23.6271,14.3195 C23.8111,13.8615 23.8991,13.3825 23.9281,12.8915 C23.9301,12.8625 23.9271,12.8335 23.9261,12.7985 L20.7021,12.7985 L20.7021,12.9085 C20.7021,14.0255 20.7031,15.1435 20.6991,16.2615 C20.6991,16.3685 20.7351,16.3935 20.8351,16.3975 C21.0301,16.4045 21.2251,16.4285 21.4091,16.4425 C21.3441,16.6205 21.2801,16.7925 21.2111,16.9805 C20.8581,16.8515 20.4931,16.7185 20.1161,16.5805 C20.2161,16.4435 20.3451,16.4075 20.4891,16.3865 L20.4891,12.7935 L17.1911,12.7935 C17.1671,12.5545 17.0761,12.3585 16.9451,12.1735 C16.8801,12.0795 16.8431,11.9505 16.8371,11.8355 C16.8251,11.5615 16.7191,11.3325 16.5481,11.1305 C16.3851,10.9385 16.2151,10.7525 16.0421,10.5695 C15.9831,10.5075 15.9741,10.4565 16.0071,10.3775 C16.4211,9.3615 17.0521,8.5185 17.9601,7.8915 C17.9801,7.8765 18.0001,7.8595 18.0191,7.8445 C17.9431,7.7715 17.8611,7.7095 17.7971,7.6335 C17.5871,7.3845 17.5921,7.0755 17.7941,6.8215 C17.8181,6.7915 17.8231,6.7275 17.8101,6.6885 C17.6011,6.0765 17.3531,5.4825 16.9491,4.9555 C17.1651,4.8635 17.3751,4.7745 17.6091,4.6755 C17.4851,4.9185 17.4151,5.1535 17.4711,5.4215 C17.6531,5.3075 17.7701,5.1505 17.8411,4.9595 C17.9201,5.1875 17.9951,5.4085 18.0751,5.6405 C17.9061,5.5745 17.7391,5.5175 17.5521,5.6075 C17.7551,5.8445 18.0051,5.9415 18.2971,5.8895 C18.4431,5.8615 18.5891,5.7975 18.7191,5.7225 C18.8491,5.6465 18.8711,5.5055 18.7991,5.3905 C18.7521,5.3145 18.6771,5.2625 18.5981,5.2985 C18.5451,5.3235 18.5081,5.4005 18.4821,5.4625 C18.4661,5.5015 18.4851,5.5555 18.4881,5.6015 C18.3191,5.5155 18.1951,5.1405 18.2821,4.9715 C18.3371,4.8655 18.4721,4.8175 18.5831,4.8925 C18.6791,4.9585 18.7571,5.0555 18.8331,5.1445 C18.8741,5.1935 18.8941,5.2605 18.9291,5.3295 C18.9561,5.2455 18.9691,5.1665 19.0041,5.0985 C19.0461,5.0155 19.0921,4.9265 19.1591,4.8645 C19.2981,4.7385 19.4861,4.8055 19.5301,4.9875 C19.5741,5.1725 19.5361,5.3485 19.4531,5.5315 C19.4251,5.4635 19.4061,5.4055 19.3771,5.3545 C19.3361,5.2805 19.2781,5.2255 19.1811,5.2555 C19.0881,5.2835 19.0521,5.3545 19.0521,5.4475 C19.0501,5.5545 19.1091,5.6245 19.1951,5.6765 C19.4681,5.8385 19.9781,5.7975 20.2231,5.5935 C20.3571,5.4815 20.4321,5.3205 20.4231,5.1585 L20.4231,5.1585 Z\",\n id: \"Fill-167\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.2635,17.8334 C21.2645,17.6764 21.1385,17.5494 20.9825,17.5474 C20.8285,17.5444 20.6955,17.6744 20.6915,17.8274 C20.6885,17.9814 20.8265,18.1234 20.9815,18.1214 C21.1325,18.1204 21.2635,17.9864 21.2635,17.8334 M19.9045,17.3804 C19.9065,17.2104 19.7645,17.0644 19.5945,17.0634 C19.4205,17.0624 19.2815,17.1994 19.2775,17.3734 C19.2745,17.5434 19.4145,17.6874 19.5875,17.6894 C19.7595,17.6914 19.9015,17.5544 19.9045,17.3804 M19.2175,16.3564 C19.2015,16.1074 18.9175,15.8854 18.6845,15.9254 C18.4895,15.9584 18.3245,16.0594 18.1985,16.1994 C18.0795,16.3294 17.9625,16.3774 17.7995,16.3154 C17.7955,16.3134 17.7875,16.3214 17.7765,16.3284 C17.7935,16.3664 17.8065,16.4104 17.8315,16.4434 C17.8875,16.5154 17.8695,16.5714 17.8305,16.6474 C17.7615,16.7824 17.7075,16.9264 17.6595,17.0704 C17.5655,17.3494 17.8895,17.6824 18.1215,17.6874 C18.1985,17.6884 18.2745,17.6674 18.3505,17.6564 C18.3505,17.6464 18.3515,17.6374 18.3515,17.6274 C18.2555,17.5684 18.1595,17.5124 18.0655,17.4514 C17.9565,17.3834 17.9155,17.2994 17.9595,17.1814 C18.0055,17.0584 18.0755,16.9434 18.1335,16.8304 C18.2235,16.8684 18.2885,16.9004 18.3565,16.9254 C18.4335,16.9534 18.5255,16.9624 18.5585,16.8804 C18.5825,16.8204 18.5705,16.7304 18.5425,16.6694 C18.5135,16.6034 18.4465,16.5544 18.3915,16.4924 C18.4485,16.4294 18.5045,16.3624 18.5625,16.2984 C18.5845,16.2734 18.6085,16.2514 18.6335,16.2294 C18.7645,16.1194 18.8815,16.1144 19.0215,16.2124 C19.0855,16.2584 19.1485,16.3064 19.2175,16.3564 M23.2045,17.5864 C23.1675,17.6094 23.1405,17.6224 23.1185,17.6414 C22.6495,18.0384 22.1335,18.3474 21.5155,18.4404 C21.1905,18.4904 20.8675,18.4344 20.5465,18.3774 C19.8615,18.2554 19.2015,18.0534 18.5775,17.7404 C18.5465,17.7264 18.4925,17.7304 18.4615,17.7474 C18.0555,17.9704 17.5155,17.6604 17.4995,17.1974 C17.4975,17.1474 17.4715,17.0864 17.4355,17.0524 C16.5235,16.1994 15.9615,15.1534 15.7075,13.9364 C15.7055,13.9264 15.7065,13.9164 15.7045,13.8914 C15.9695,13.9694 16.2225,13.9924 16.4355,13.7314 C16.4555,13.8144 16.4695,13.8714 16.4835,13.9274 C16.8215,13.9274 17.0265,13.7874 17.2235,13.4414 C17.3245,13.7574 17.4135,14.0984 17.5405,14.4234 C17.7415,14.9324 18.0495,15.3744 18.4475,15.7514 C18.4785,15.7804 18.5385,15.8104 18.5755,15.7994 C19.0335,15.6724 19.4175,16.1164 19.3845,16.4814 C19.3835,16.4924 19.3855,16.5034 19.3875,16.5294 C20.6015,17.0314 21.8185,17.5424 23.2045,17.5864\",\n id: \"Fill-168\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.7352,14.1019 C19.7632,13.9189 19.7862,13.7729 19.8072,13.6269 C19.7972,13.6319 19.7872,13.6369 19.7762,13.6419 C19.7412,13.5959 19.6712,13.5399 19.6802,13.5069 C19.6962,13.4549 19.7642,13.4159 19.8102,13.3729 C19.8522,13.2099 19.8142,13.1779 19.6432,13.2419 C19.5142,13.2899 19.3892,13.3469 19.2502,13.4059 C19.4102,13.6349 19.5622,13.8549 19.7352,14.1019 M18.8822,13.5309 C19.1372,13.8959 19.3872,14.2539 19.6492,14.6289 C19.6692,14.5169 19.6862,14.4349 19.6942,14.3519 C19.6982,14.3159 19.6902,14.2709 19.6712,14.2419 C19.5022,13.9949 19.3312,13.7489 19.1562,13.5069 C19.1392,13.4849 19.0912,13.4719 19.0602,13.4769 C19.0052,13.4849 18.9502,13.5089 18.8822,13.5309 M19.5502,15.1089 L19.5942,15.1059 C19.5892,14.9919 19.6272,14.8509 19.5742,14.7669 C19.3212,14.3719 19.0442,13.9909 18.7732,13.6059 C18.7562,13.5829 18.7252,13.5579 18.7002,13.5579 C18.6322,13.5549 18.5652,13.5659 18.4832,13.5729 C18.8442,14.0929 19.1982,14.6009 19.5502,15.1089 M18.3312,13.5849 C18.2482,14.4279 18.8812,15.0709 19.5102,15.2829 C19.1172,14.7159 18.7312,14.1619 18.3312,13.5849 M19.9492,15.6139 C19.9342,15.8379 19.7942,15.9599 19.5892,15.9339 C19.4752,15.9179 19.3892,15.8149 19.3982,15.7059 C19.4062,15.6149 19.4832,15.5439 19.5792,15.5539 C19.6122,15.5579 19.6412,15.5909 19.6732,15.6099 C19.6492,15.6309 19.6262,15.6519 19.6032,15.6729 C19.5852,15.6919 19.5682,15.7099 19.5492,15.7289 C19.5712,15.7479 19.5892,15.7739 19.6142,15.7809 C19.6932,15.8039 19.7592,15.7559 19.7712,15.6729 C19.7862,15.5679 19.7272,15.4849 19.6182,15.4969 C19.4162,15.5179 19.2462,15.4359 19.0832,15.3419 C18.4212,14.9619 18.0342,14.4019 17.9782,13.6279 C17.9742,13.5649 18.0142,13.4899 17.9352,13.4399 C17.9252,13.4329 17.9472,13.3799 17.9552,13.3409 C17.8732,13.3489 17.7862,13.3439 17.7742,13.2449 C17.7682,13.2019 17.7972,13.1329 17.8322,13.1089 C17.9122,13.0529 17.9742,13.1079 18.0242,13.1839 C18.0442,13.1479 18.0592,13.1179 18.0742,13.0899 C18.0842,13.0889 18.0882,13.0879 18.0902,13.0889 C18.5202,13.3419 18.9602,13.3079 19.4052,13.1339 C19.4632,13.1119 19.5202,13.0909 19.5802,13.0719 C19.8882,12.9709 20.0592,13.0859 20.1022,13.3909 C20.1452,13.4429 20.2052,13.4899 20.2212,13.5489 C20.2292,13.5739 20.1462,13.6239 20.1042,13.6649 L20.0542,13.6409 C20.0542,13.8149 20.0572,13.9889 20.0542,14.1619 C20.0482,14.5269 20.0382,14.8909 20.0332,15.2549 C20.0332,15.3009 20.0502,15.3489 20.0702,15.3909 C20.1102,15.4809 20.0612,15.5799 19.9492,15.6139\",\n id: \"Fill-169\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20.5682,21.1283 C20.4682,21.1233 20.3692,21.2183 20.3662,21.3193 C20.3642,21.4183 20.4482,21.5103 20.5482,21.5183 C20.6492,21.5263 20.7492,21.4383 20.7552,21.3333 C20.7622,21.2323 20.6722,21.1343 20.5682,21.1283 M19.5052,20.3823 C19.5262,20.3573 19.5392,20.3413 19.5522,20.3263 C19.6722,20.2003 19.7992,20.2193 19.8732,20.3783 C19.9042,20.4463 19.9212,20.5233 19.9452,20.5953 C19.9782,20.6953 20.0062,20.7983 20.0472,20.8943 C20.0832,20.9783 20.1452,21.0383 20.2472,21.0403 C20.4492,21.0463 20.5332,20.8893 20.4362,20.6863 C20.4042,20.6183 20.3812,20.5383 20.4602,20.5043 C20.5172,20.4783 20.6052,20.4773 20.6632,20.5033 C20.7392,20.5373 20.7202,20.6173 20.6872,20.6853 C20.6752,20.7083 20.6602,20.7293 20.6512,20.7533 C20.6072,20.8703 20.6612,20.9823 20.7802,21.0243 C20.9092,21.0703 21.0232,21.0253 21.0812,20.8843 C21.1382,20.7423 21.1722,20.5923 21.2212,20.4473 C21.3012,20.2123 21.4272,20.1843 21.5982,20.3603 C21.6042,20.3663 21.6162,20.3683 21.6372,20.3773 C21.6612,20.2883 21.6912,20.2053 21.7032,20.1203 C21.7242,19.9603 21.6172,19.8073 21.4632,19.7603 C21.2972,19.7103 21.1482,19.7743 21.0722,19.9353 C21.0352,20.0143 21.0102,20.0983 20.9762,20.1793 C20.9292,20.2913 20.8712,20.3203 20.7862,20.2793 C20.7042,20.2403 20.6812,20.1493 20.7412,20.0563 C20.7882,19.9823 20.8482,19.9173 20.9012,19.8483 C20.9842,19.7383 21.0132,19.6193 20.9602,19.4883 C20.8792,19.2913 20.7182,19.1683 20.5472,19.0253 C20.4292,19.1523 20.3102,19.2633 20.2152,19.3903 C20.0962,19.5483 20.1082,19.6923 20.2262,19.8533 C20.2762,19.9203 20.3332,19.9823 20.3792,20.0533 C20.4392,20.1483 20.4212,20.2373 20.3392,20.2773 C20.2512,20.3213 20.1882,20.2883 20.1422,20.1733 C20.1072,20.0853 20.0812,19.9913 20.0352,19.9103 C19.9112,19.6903 19.5982,19.6913 19.4682,19.9083 C19.3732,20.0693 19.4212,20.2213 19.5052,20.3823 M20.9112,21.2133 C20.9192,21.5103 20.8022,21.6693 20.5782,21.6783 C20.3372,21.6873 20.2192,21.5393 20.2062,21.2053 C20.0022,21.1713 19.9182,21.0163 19.8612,20.8403 C19.8272,20.7323 19.8042,20.6213 19.7682,20.5153 C19.7562,20.4783 19.7192,20.4263 19.6912,20.4253 C19.6602,20.4233 19.6182,20.4643 19.5932,20.4963 C19.5602,20.5423 19.5382,20.5973 19.5032,20.6613 C19.3272,20.4483 19.2092,20.2303 19.2722,19.9563 C19.3282,19.7193 19.5542,19.5663 19.7992,19.5853 C19.8322,19.5873 19.8642,19.5913 19.9092,19.5953 L19.9092,18.5443 C20.3462,18.6103 20.7732,18.6753 21.2132,18.7423 L21.2132,19.5943 C21.4992,19.5553 21.7252,19.6313 21.8322,19.9093 C21.9422,20.2003 21.7982,20.4303 21.6222,20.6643 C21.5832,20.5963 21.5542,20.5343 21.5132,20.4823 C21.4922,20.4533 21.4512,20.4263 21.4182,20.4263 C21.3952,20.4263 21.3632,20.4713 21.3532,20.5013 C21.3162,20.6193 21.2902,20.7413 21.2522,20.8583 C21.1812,21.0743 21.1052,21.1493 20.9112,21.2133\",\n id: \"Fill-170\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.2645,2.3383 C13.2095,2.3913 13.1745,2.4243 13.1245,2.4713 C13.1135,2.3453 13.1025,2.2323 13.0895,2.1003 C13.1485,2.1513 13.1985,2.1933 13.2465,2.2363 C13.2535,2.2333 13.2615,2.2293 13.2685,2.2243 C13.2425,2.1593 13.2155,2.0943 13.1845,2.0163 C13.2625,2.0113 13.3355,2.0053 13.3995,2.0013 L13.3995,2.9053 C12.6585,3.0903 11.9485,3.3783 11.2985,3.7603 C11.0855,3.5453 10.8785,3.3373 10.6615,3.1193 C10.7005,3.0833 10.7565,3.0303 10.8185,2.9733 C10.8495,3.0473 10.8755,3.1113 10.9035,3.1763 L10.9325,3.1703 C10.9365,3.1113 10.9405,3.0533 10.9465,2.9713 C11.0305,3.0733 11.1045,3.1633 11.1895,3.2673 L11.0175,3.2673 C11.0135,3.2783 11.0095,3.2893 11.0055,3.3003 C11.0955,3.3413 11.1815,3.3953 11.2755,3.4173 C11.3905,3.4453 11.4955,3.3423 11.4705,3.2343 C11.4595,3.1893 11.4135,3.1263 11.3745,3.1193 C11.3375,3.1133 11.2885,3.1673 11.2405,3.1973 C11.1395,3.1053 11.1515,3.0243 11.2935,2.9523 C11.2355,2.8913 11.1585,2.8383 11.1225,2.7653 C11.0875,2.6923 11.0945,2.5983 11.0825,2.5113 C11.2665,2.5083 11.3375,2.5853 11.4215,2.8563 C11.5735,2.7693 11.6335,2.7933 11.6695,2.9323 C11.6185,2.9633 11.5455,2.9823 11.5355,3.0193 C11.5095,3.1053 11.5675,3.1603 11.6515,3.1873 C11.7675,3.2233 11.9465,3.1663 12.0275,3.0653 C12.1095,2.9633 12.0865,2.8573 12.0245,2.7153 C11.9595,2.8153 11.9085,2.8933 11.8495,2.9823 C11.8235,2.9323 11.7945,2.8793 11.7675,2.8273 C11.7405,2.7753 11.7135,2.7243 11.6835,2.6643 L11.9805,2.6643 C11.9835,2.6543 11.9865,2.6443 11.9905,2.6343 C11.9065,2.5783 11.8235,2.5243 11.7205,2.4553 C11.8735,2.3943 12.0175,2.3353 12.1745,2.2723 C12.1505,2.3883 12.1295,2.4843 12.1105,2.5813 C12.1205,2.5883 12.1315,2.5963 12.1425,2.6033 C12.2095,2.5373 12.2765,2.4713 12.3495,2.4003 C12.3835,2.5093 12.4185,2.6223 12.4545,2.7393 C12.3555,2.7163 12.2615,2.6933 12.1565,2.6693 C12.2015,2.8453 12.2815,2.9193 12.4035,2.9223 C12.5525,2.9253 12.7325,2.8223 12.7495,2.7043 C12.7585,2.6503 12.7165,2.5893 12.6975,2.5303 C12.6525,2.5463 12.6075,2.5613 12.5405,2.5833 C12.5355,2.5463 12.5095,2.4793 12.5295,2.4303 C12.5445,2.3903 12.6165,2.3713 12.6705,2.3383 C12.5645,2.2073 12.5175,2.0493 12.6375,1.8793 C12.8135,1.9563 12.8565,2.0623 12.8185,2.3193 C12.9935,2.2903 13.0485,2.3343 13.0365,2.4673 C12.9795,2.4793 12.9005,2.4753 12.8875,2.5033 C12.8675,2.5453 12.8775,2.6183 12.9055,2.6603 C12.9485,2.7283 13.0255,2.7443 13.0985,2.7023 C13.2275,2.6283 13.2485,2.5003 13.2645,2.3383\",\n id: \"Fill-171\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.0165,13.2514 C21.0415,13.2534 21.0665,13.2544 21.0945,13.2574 C21.0805,13.2144 21.0695,13.1804 21.0565,13.1394 L20.9775,13.1394 C20.9865,13.0764 20.9955,13.0094 21.0045,12.9334 C21.0335,12.9504 21.0615,12.9684 21.0955,12.9894 C21.1095,12.9714 21.1235,12.9534 21.1485,12.9234 C21.1665,13.0204 21.1625,13.1164 21.2035,13.1824 C21.2455,13.2464 21.3185,13.3194 21.3925,13.2974 C21.4365,13.1724 21.4725,13.0664 21.5075,12.9654 C21.6975,12.9534 21.6975,12.9534 21.8535,13.1284 C21.8405,13.1614 21.8295,13.1954 21.8165,13.2294 C21.8045,13.2584 21.7905,13.2864 21.7725,13.3284 C22.2585,13.2334 22.7415,13.3924 23.2175,13.3154 C23.2195,13.2964 23.2205,13.2764 23.2225,13.2564 C23.1665,13.2474 23.1105,13.2294 23.0545,13.2304 C22.8505,13.2374 22.6475,13.2564 22.4435,13.2614 C22.3415,13.2634 22.2385,13.2524 22.1405,13.2304 C22.1035,13.2224 22.0775,13.1634 22.0465,13.1284 C22.0825,13.1004 22.1205,13.0704 22.1575,13.0424 C22.1595,13.0404 22.1635,13.0404 22.1675,13.0404 C22.4315,13.0294 22.6955,13.0154 22.9585,13.0084 C23.0585,13.0054 23.1595,13.0204 23.2625,13.0264 C23.1385,13.0584 23.0185,13.0904 22.8965,13.1164 C22.7635,13.1464 22.6345,13.1474 22.4985,13.1064 C22.3755,13.0684 22.2405,13.0624 22.1165,13.1164 C22.1145,13.1304 22.1125,13.1434 22.1115,13.1564 C22.1705,13.1694 22.2305,13.1944 22.2885,13.1934 C22.5375,13.1914 22.7855,13.1794 23.0335,13.1754 C23.0975,13.1744 23.1645,13.1844 23.2265,13.2034 C23.2565,13.2134 23.2875,13.2544 23.2945,13.2864 C23.2985,13.3044 23.2545,13.3424 23.2255,13.3534 C23.1625,13.3754 23.0935,13.3864 23.0195,13.4024 C23.1165,13.4194 23.2045,13.4334 23.3015,13.4484 C23.2805,13.5774 23.2605,13.6894 23.2435,13.7974 C23.1955,13.7904 23.1465,13.7834 23.0735,13.7724 C23.0605,13.7504 23.0315,13.6984 22.9945,13.6334 C23.0385,13.6224 23.0835,13.6114 23.1415,13.5984 C23.1445,13.5784 23.1495,13.5474 23.1555,13.5034 C23.0055,13.5244 22.8645,13.5444 22.7165,13.5644 C22.7255,13.5794 22.7405,13.6024 22.7515,13.6264 C22.7785,13.6834 22.7655,13.7084 22.6975,13.7214 C22.6175,13.7354 22.5405,13.7724 22.4305,13.8124 C22.3995,13.7684 22.3505,13.6994 22.3015,13.6294 C22.3645,13.5734 22.4105,13.5444 22.4645,13.6184 C22.4795,13.6384 22.5205,13.6374 22.5635,13.6484 C22.5155,13.5924 22.4825,13.5534 22.4435,13.5064 C22.3245,13.4924 22.1985,13.4964 22.0875,13.5944 C22.0575,13.6214 21.9975,13.6294 21.9535,13.6264 C21.8535,13.6184 21.7795,13.6614 21.7005,13.7144 C21.6295,13.7614 21.5465,13.7824 21.4535,13.7524 C21.3925,13.7324 21.3215,13.7414 21.2545,13.7454 C21.2035,13.7494 21.1535,13.7664 21.0855,13.7794 C21.0585,13.7414 21.0135,13.6794 20.9665,13.6134 C20.9955,13.5884 21.0375,13.5544 21.0975,13.5024 C21.0945,13.5014 21.1385,13.5014 21.1445,13.5174 C21.1935,13.6334 21.2705,13.5994 21.3525,13.5674 C21.3815,13.5564 21.4145,13.5564 21.4635,13.5224 C21.3115,13.4384 21.1605,13.3534 21.0075,13.2684 C21.0105,13.2624 21.0135,13.2564 21.0165,13.2514\",\n id: \"Fill-172\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.0399,14.2885 C21.0889,14.2995 21.1119,14.3045 21.1359,14.3095 C21.1409,14.3025 21.1459,14.2955 21.1509,14.2885 C21.1179,14.2495 21.0839,14.2115 21.0509,14.1735 C21.0439,14.1785 21.0369,14.1845 21.0299,14.1895 C21.0379,14.1315 21.0459,14.0735 21.0559,14.0055 C21.0819,14.0175 21.1119,14.0315 21.1459,14.0485 C21.1559,14.0285 21.1649,14.0095 21.1809,13.9775 C21.2619,14.0705 21.1239,14.3085 21.3669,14.2685 C21.4079,14.1605 21.4479,14.0535 21.4869,13.9475 C21.5899,13.9415 21.6779,13.9275 21.7549,14.0175 C21.8309,14.1055 21.7879,14.1785 21.7399,14.2845 C22.1429,14.2065 22.5299,14.3845 22.9109,14.2635 L22.9109,14.2025 C22.8489,14.2025 22.7859,14.1995 22.7249,14.2025 C22.5499,14.2105 22.3759,14.2215 22.2009,14.2285 C22.1759,14.2295 22.1439,14.2305 22.1269,14.2165 C22.0889,14.1845 22.0589,14.1425 22.0239,14.1055 C22.0609,14.0765 22.0939,14.0275 22.1339,14.0215 C22.3519,13.9865 22.5689,13.9555 22.7909,14.0065 C22.8429,14.0175 22.9009,14.0015 22.9599,14.0205 C22.8339,14.0515 22.7089,14.0965 22.5819,14.1075 C22.4799,14.1175 22.3769,14.0825 22.2729,14.0735 C22.2179,14.0695 22.1599,14.0795 22.1029,14.0865 C22.0999,14.0865 22.0959,14.1225 22.0979,14.1235 C22.1469,14.1415 22.1979,14.1685 22.2479,14.1685 C22.4269,14.1675 22.6049,14.1515 22.7829,14.1505 C22.8599,14.1505 22.9779,14.1215 22.9849,14.2405 C22.9909,14.3435 22.8779,14.3235 22.8089,14.3435 C22.7739,14.3525 22.7379,14.3565 22.6879,14.3665 C22.7969,14.3825 22.8909,14.3945 22.9929,14.4095 C22.9499,14.5355 22.9129,14.6445 22.8809,14.7405 C22.8279,14.7335 22.7849,14.7275 22.7249,14.7205 C22.7139,14.6965 22.6909,14.6485 22.6659,14.5945 C22.6859,14.5175 22.8489,14.6175 22.8329,14.4635 C22.6939,14.4815 22.5559,14.5005 22.4139,14.5195 C22.4249,14.5535 22.4389,14.6005 22.4539,14.6425 C22.3499,14.6795 22.2579,14.7115 22.1349,14.7545 C22.1049,14.7145 22.0579,14.6475 22.0169,14.5905 C22.1059,14.4465 22.1629,14.6295 22.2389,14.5885 C22.2119,14.5445 22.1859,14.5025 22.1559,14.4535 C21.9549,14.4145 21.8149,14.5615 21.6559,14.6585 C21.6319,14.6735 21.6049,14.6845 21.5779,14.6895 C21.5249,14.7015 21.4719,14.7095 21.4019,14.7225 C21.3499,14.6615 21.1129,14.6645 21.0439,14.7495 C21.0019,14.6875 20.9599,14.6265 20.9179,14.5655 C20.9479,14.5385 20.9829,14.5065 21.0359,14.4595 C21.0319,14.4585 21.0699,14.4575 21.0769,14.4715 C21.1349,14.5925 21.2189,14.5465 21.3049,14.5155 C21.3309,14.5065 21.3609,14.5095 21.3989,14.5065 C21.3989,14.4005 21.3189,14.3975 21.2529,14.3865 C21.1819,14.3735 21.1059,14.3765 21.0399,14.2885\",\n id: \"Fill-173\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20.1678,1.224 C20.4208,0.915 20.4458,0.871 20.4488,0.717 C20.2468,0.76 20.0938,0.878 19.9438,1.035 L19.9438,0.256 C20.0938,0.403 20.2468,0.525 20.4608,0.57 C20.4348,0.34 20.2928,0.18 20.1648,-3.77475828e-15 L20.9388,-3.77475828e-15 C20.8158,0.182 20.6708,0.339 20.6458,0.57 C20.8598,0.522 21.0178,0.406 21.1658,0.244 L21.1658,1.034 C21.0158,0.883 20.8618,0.76 20.6438,0.714 C20.6758,0.929 20.7958,1.078 20.9508,1.224 L20.1678,1.224 Z\",\n id: \"Fill-174\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.0096,15.8012 C20.9646,15.7392 20.9246,15.6842 20.8846,15.6272 C20.9126,15.6052 20.9486,15.5752 21.0026,15.5322 C21.0846,15.6272 21.2126,15.6162 21.3626,15.5612 C21.2386,15.4492 21.1206,15.3442 21.0036,15.2392 C21.0166,15.2392 21.0366,15.2412 21.0796,15.2442 C21.0286,15.1972 21.0676,15.0952 20.9596,15.1432 C20.9696,15.0742 20.9786,15.0202 20.9876,14.9562 C21.0246,14.9502 21.0766,15.0612 21.1236,14.9332 C21.0986,15.1122 21.1756,15.2222 21.2866,15.3072 C21.3216,15.1842 21.3576,15.0592 21.3876,14.9502 C21.5546,14.8922 21.6436,14.9642 21.7066,15.0922 C21.6856,15.1452 21.6616,15.2042 21.6426,15.2562 C21.8846,15.2712 22.1286,15.2912 22.3726,15.2992 C22.4466,15.3012 22.5216,15.2682 22.5956,15.2512 C22.5936,15.2392 22.5916,15.2262 22.5896,15.2142 C22.4876,15.2142 22.3846,15.2152 22.2816,15.2132 C22.1916,15.2112 22.0996,15.2122 22.0106,15.1982 C21.9756,15.1942 21.9246,15.1532 21.9216,15.1232 C21.9186,15.0922 21.9556,15.0472 21.9886,15.0242 C22.1336,14.9152 22.2996,14.9562 22.4626,14.9662 C22.5686,14.9732 22.6756,14.9672 22.7826,14.9862 C22.6386,15.0192 22.4956,15.0612 22.3496,15.0802 C22.2626,15.0922 22.1706,15.0652 22.0806,15.0642 C22.0446,15.0632 22.0086,15.0832 21.9726,15.0932 L21.9786,15.1432 C22.0436,15.1472 22.1096,15.1552 22.1756,15.1552 C22.2876,15.1552 22.4026,15.1422 22.5146,15.1502 C22.5686,15.1542 22.6186,15.1932 22.6706,15.2162 C22.6246,15.2552 22.5846,15.3122 22.5306,15.3282 C22.4426,15.3572 22.3456,15.3592 22.2516,15.3722 C22.2506,15.3752 22.2476,15.3852 22.2506,15.3882 C22.3666,15.4852 22.3656,15.5702 22.2416,15.6652 C22.1946,15.7022 22.1406,15.7332 22.0856,15.7692 C22.0726,15.7402 22.0656,15.6912 22.0436,15.6842 C21.9196,15.6452 22.0766,15.5932 22.0336,15.5552 C22.0626,15.5512 22.0896,15.5462 22.1176,15.5442 C22.1466,15.5422 22.1736,15.5442 22.2016,15.5302 C22.1236,15.4172 22.0226,15.4992 21.9256,15.4702 C21.9476,15.5722 21.9676,15.6602 21.9886,15.7562 C21.9196,15.7742 21.8496,15.7802 21.7916,15.8102 C21.6656,15.8752 21.6306,15.8232 21.6316,15.7052 C21.6316,15.7002 21.6206,15.6962 21.6176,15.6892 C21.6156,15.6842 21.6166,15.6772 21.6166,15.6752 C21.6956,15.5522 21.7446,15.7482 21.8186,15.6892 C21.8026,15.6282 21.7876,15.5682 21.7706,15.5002 C21.6936,15.5272 21.5996,15.5302 21.5756,15.6502 C21.5646,15.7092 21.5306,15.7662 21.4456,15.7442 C21.4266,15.7402 21.4026,15.7652 21.3766,15.7792 C21.2776,15.7212 21.0776,15.7312 21.0096,15.8012\",\n id: \"Fill-175\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M34.7176,16.9721 C34.7206,16.6671 34.4826,16.4221 34.1846,16.4210969 C33.8936,16.4201 33.6446,16.6651 33.6406,16.9561 C33.6366,17.2531 33.8806,17.5031 34.1786,17.5071 C34.4686,17.5111 34.7156,17.2661 34.7176,16.9721 M34.1726,17.6971 C33.7606,17.6871 33.4406,17.3581 33.4466,16.9501 C33.4536,16.5491 33.7896,16.2241 34.1916,16.2311 C34.6006,16.2371 34.9226,16.5701 34.9146,16.9781 C34.9076,17.3811 34.5716,17.7051 34.1726,17.6971\",\n id: \"Fill-176\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.2694,2.2152 C21.2044,2.5522 20.8974,2.7922 20.5474,2.7902 C20.2034,2.7882 19.8984,2.5452 19.8354,2.2152 L21.2694,2.2152 Z\",\n id: \"Fill-177\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30.4579,16.8734 C30.4249,16.7794 30.4079,16.6904 30.3639,16.6184 C30.2649,16.4504 30.0779,16.4484 29.9619,16.6054 C29.8529,16.7534 29.8539,16.9934 29.9619,17.1404 C30.0699,17.2854 30.2429,17.2904 30.3449,17.1404 C30.3969,17.0614 30.4209,16.9634 30.4579,16.8734 M30.6579,16.8764 C30.6069,17.0054 30.5779,17.1414 30.5069,17.2484 C30.3319,17.5144 29.9859,17.5074 29.8009,17.2484 C29.6439,17.0294 29.6479,16.6954 29.8119,16.4804 C30.0059,16.2254 30.3599,16.2344 30.5239,16.5114 C30.5869,16.6164 30.6109,16.7454 30.6579,16.8764\",\n id: \"Fill-178\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M31.0594,17.7103 C30.9824,17.7393 30.8984,17.7573 30.8304,17.7993 C30.7114,17.8723 30.6964,18.0133 30.7804,18.1233 C30.9034,18.2873 31.1764,18.3423 31.3544,18.2383 C31.4974,18.1543 31.5244,18.0053 31.4154,17.8793 C31.3244,17.7723 31.2034,17.7293 31.0594,17.7103 M31.1454,18.4783 C30.9774,18.4863 30.8294,18.4343 30.7044,18.3233 C30.5774,18.2113 30.5064,18.0723 30.5454,17.8973 C30.5854,17.7123 30.7124,17.6093 30.8824,17.5603 C31.0894,17.5003 31.2874,17.5353 31.4634,17.6613 C31.6334,17.7823 31.7084,17.9683 31.6634,18.1453 C31.6194,18.3163 31.4434,18.4573 31.2434,18.4773 C31.2104,18.4813 31.1774,18.4783 31.1454,18.4783\",\n id: \"Fill-179\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M26.6542,11.2826 C26.8602,11.2866 26.9822,11.1126 26.8902,10.9286 C26.8192,10.7846 26.6152,10.6656 26.4572,10.6806 C26.3562,10.6906 26.2612,10.7206 26.2172,10.8246 C26.1722,10.9276 26.2092,11.0166 26.2722,11.0976 C26.3662,11.2186 26.4942,11.2716 26.6542,11.2826 M26.6522,11.4736 C26.3722,11.4756 26.1042,11.2926 26.0272,11.0446 C25.9562,10.8136 26.0652,10.5976 26.2942,10.5196 C26.5872,10.4186 26.9612,10.5866 27.0802,10.8726 C27.2082,11.1786 26.9992,11.4716 26.6522,11.4736\",\n id: \"Fill-180\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M26.8817,8.0053 C27.0447,8.0033 27.2177,7.8653 27.2577,7.7053 C27.2917,7.5693 27.2067,7.4583 27.0657,7.4523 C26.9007,7.4463 26.7137,7.5863 26.6737,7.7463 C26.6367,7.8973 26.7257,8.0073 26.8817,8.0053 M26.4757,7.8133 C26.4757,7.4683 26.8547,7.1813 27.1827,7.2763 C27.3547,7.3263 27.4597,7.4703 27.4577,7.6513 C27.4527,7.9843 27.0877,8.2653 26.7647,8.1843 C26.5787,8.1383 26.4757,8.0043 26.4757,7.8133\",\n id: \"Fill-181\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.5379,1.5717 C11.4649,1.6547 11.4119,1.7147 11.3499,1.7867 C11.3029,1.6867 11.2609,1.5967 11.2109,1.4917 C11.3039,1.4807 11.3829,1.4707 11.4859,1.4597 C11.4149,1.3707 11.3549,1.2957 11.2879,1.2107 C11.3839,1.1727 11.4739,1.1357 11.5849,1.0927 C11.5919,1.1987 11.5969,1.2947 11.6029,1.4137 C11.6839,1.3497 11.7519,1.2957 11.8279,1.2347 C11.8659,1.3397 11.9009,1.4327 11.9409,1.5407 C11.8369,1.5337 11.7479,1.5277 11.6599,1.5217 C11.6549,1.5317 11.6489,1.5407 11.6439,1.5497 C11.7299,1.6247 11.8139,1.7007 11.9019,1.7737 C11.9949,1.8507 12.0239,1.9597 11.9719,2.0547 C11.9259,2.1397 11.8509,2.1817 11.7559,2.1727 C11.6589,2.1617 11.5889,2.1077 11.5709,2.0117 C11.5559,1.9257 11.5589,1.8387 11.5529,1.7517 C11.5499,1.7017 11.5449,1.6517 11.5379,1.5717\",\n id: \"Fill-182\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.8075,3.8734 C18.9045,4.0164 18.9885,4.1394 19.0705,4.2634 C19.1485,4.3824 19.1575,4.5084 19.0975,4.6374 C19.0375,4.7654 18.9755,4.8924 18.9115,5.0234 C18.8285,4.9124 18.7495,4.8094 18.6705,4.7054 C18.5665,4.5694 18.5465,4.4184 18.6125,4.2644 C18.6675,4.1344 18.7385,4.0114 18.8075,3.8734\",\n id: \"Fill-183\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.2997,3.8842 C22.6257,4.3742 22.6187,4.4552 22.1977,5.0292 C22.1247,4.8622 22.0367,4.7082 21.9927,4.5442 C21.9707,4.4582 22.0087,4.3422 22.0527,4.2562 C22.1197,4.1252 22.2157,4.0092 22.2997,3.8842\",\n id: \"Fill-184\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20.4168,4.1205 L20.1538,4.1205 L20.1538,3.0425 C20.2318,3.0645 20.3108,3.0855 20.3868,3.1125 C20.4018,3.1185 20.4148,3.1515 20.4158,3.1735 C20.4168,3.4855 20.4168,3.7985 20.4168,4.1205\",\n id: \"Fill-185\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20.9491,4.1205 L20.6971,4.1205 L20.6971,3.1195 C20.7751,3.0955 20.8571,3.0695 20.9491,3.0405 L20.9491,4.1205 Z\",\n id: \"Fill-186\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.8368,1.9144 C19.8218,1.6984 20.1038,1.3524 20.3998,1.3294 C20.4018,1.3544 20.4048,1.3794 20.4048,1.4044 C20.4058,1.5714 20.4048,1.7384 20.4048,1.9144 L19.8368,1.9144 Z\",\n id: \"Fill-187\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.2801,1.9154 L20.7151,1.9154 L20.7151,1.3324 C20.9861,1.3674 21.2141,1.5984 21.2801,1.9154\",\n id: \"Fill-188\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.0497,3.4887 C17.0487,3.6237 16.9377,3.7317 16.8047,3.7277 C16.6747,3.7247 16.5707,3.6187 16.5707,3.4897 C16.5707,3.3537 16.6807,3.2487 16.8157,3.2517 C16.9457,3.2547 17.0497,3.3597 17.0497,3.4887\",\n id: \"Fill-189\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23.2323,2.3715 C23.2293,2.5005 23.1223,2.6075 22.9953,2.6075 C22.8633,2.6075 22.7513,2.4935 22.7533,2.3625 C22.7573,2.2265 22.8653,2.1265 23.0033,2.1305 C23.1313,2.1345 23.2343,2.2415 23.2323,2.3715\",\n id: \"Fill-190\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.5506,2.599 C19.5456,2.732 19.4296,2.838 19.2976,2.83 C19.1686,2.824 19.0696,2.715 19.0716,2.584 C19.0756,2.452 19.1906,2.346 19.3226,2.353 C19.4516,2.361 19.5556,2.472 19.5506,2.599\",\n id: \"Fill-191\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.6131,4.0629 C24.6121,4.1919 24.5081,4.2969 24.3791,4.2989 C24.2451,4.3009 24.1341,4.1919 24.1341,4.0589 C24.1351,3.9319 24.2431,3.8239 24.3711,3.8209 C24.5021,3.8179 24.6131,3.9289 24.6131,4.0629\",\n id: \"Fill-192\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20.0985,2.8539 C20.0965,2.9839 19.9875,3.0909 19.8595,3.0899 C19.7275,3.0889 19.6155,2.9719 19.6205,2.8399 C19.6255,2.7109 19.7365,2.6099 19.8675,2.6129 C19.9965,2.6149 20.1005,2.7229 20.0985,2.8539\",\n id: \"Fill-193\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M23.3417,2.5502 C23.3407,2.4162 23.4407,2.3122 23.5717,2.3092 C23.7067,2.3062 23.8207,2.4162 23.8177,2.5492 C23.8157,2.6792 23.7077,2.7862 23.5787,2.7872 C23.4497,2.7872 23.3437,2.6812 23.3417,2.5502\",\n id: \"Fill-194\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.2909,2.5502 C17.2889,2.4172 17.3899,2.3122 17.5209,2.3092 C17.6589,2.3062 17.7669,2.4122 17.7659,2.5492 C17.7639,2.6812 17.6589,2.7862 17.5279,2.7862 C17.3969,2.7872 17.2929,2.6832 17.2909,2.5502\",\n id: \"Fill-195\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.2596,4.391 C24.3886,4.392 24.4976,4.5 24.4996,4.628 C24.5016,4.761 24.3886,4.872 24.2536,4.869 C24.1226,4.866 24.0196,4.758 24.0216,4.627 C24.0236,4.496 24.1306,4.391 24.2596,4.391\",\n id: \"Fill-196\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.0301,2.5883 C22.0321,2.7223 21.9331,2.8273 21.8011,2.8303 C21.6681,2.8343 21.5561,2.7253 21.5561,2.5903 C21.5571,2.4613 21.6641,2.3543 21.7941,2.3543 C21.9261,2.3533 22.0291,2.4543 22.0301,2.5883\",\n id: \"Fill-197\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.9686,4.0648 C16.9676,4.1958 16.8616,4.2998 16.7306,4.2988 C16.5996,4.2978 16.4936,4.1928 16.4936,4.0618 C16.4946,3.9298 16.5986,3.8238 16.7276,3.8208 C16.8626,3.8188 16.9706,3.9288 16.9686,4.0648\",\n id: \"Fill-198\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.245,2.6127 C21.377,2.6117 21.481,2.7147 21.482,2.8467 C21.483,2.9787 21.381,3.0877 21.252,3.0917 C21.12,3.0937 21.007,2.9807 21.009,2.8467 C21.011,2.7147 21.112,2.6127 21.245,2.6127\",\n id: \"Fill-199\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.1151,2.1303 C18.2481,2.1313 18.3491,2.2343 18.3491,2.3663 C18.3481,2.5003 18.2461,2.6063 18.1161,2.6073 C17.9821,2.6093 17.8731,2.4973 17.8751,2.3623 C17.8781,2.2323 17.9841,2.1293 18.1151,2.1303\",\n id: \"Fill-200\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.3827,2.6596 C22.2487,2.6606 22.1447,2.5626 22.1407,2.4306 C22.1367,2.2956 22.2447,2.1846 22.3787,2.1856 C22.5097,2.1866 22.6167,2.2936 22.6177,2.42260044 C22.6177,2.5526 22.5147,2.6576 22.3827,2.6596\",\n id: \"Fill-201\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.9627,2.42230043 C18.9637,2.5563 18.8627,2.6583 18.7307,2.6593 C18.5977,2.6603 18.4917,2.5613 18.4877,2.4303 C18.4837,2.2963 18.5947,2.1843 18.7287,2.1853 C18.8597,2.1863 18.9617,2.2893 18.9627,2.42230043\",\n id: \"Fill-202\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.0624,3.1859 C16.9284,3.1829 16.8294,3.0819 16.8314,2.9479 C16.8334,2.8139 16.9354,2.7119 17.0684,2.7119 C17.1994,2.7119 17.3054,2.8179 17.3054,2.9479 C17.3054,3.0879 17.2044,3.1879 17.0624,3.1859\",\n id: \"Fill-203\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.6112,4.6351 C16.6092,4.5031 16.7102,4.3961 16.8402,4.3911 C16.9712,4.3861 17.0842,4.4971 17.0852,4.6321 C17.0862,4.7611 16.9792,4.8681 16.8482,4.8691 C16.7172,4.8691 16.6132,4.7661 16.6112,4.6351\",\n id: \"Fill-204\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.0438,3.1859 C23.9048,3.1869 23.8048,3.0919 23.8028,2.9579 C23.7998,2.8199 23.9018,2.7119 24.0388,2.7119 C24.1678,2.7119 24.2768,2.8209 24.2788,2.94890391 C24.2798,3.0779 24.1748,3.1839 24.0438,3.1859\",\n id: \"Fill-205\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.5331,3.4916 C24.5311,3.6216 24.4251,3.7286 24.2961,3.7286 C24.1621,3.7286 24.0581,3.6186 24.0611,3.4806 C24.0641,3.3476 24.1711,3.2466 24.3021,3.2496 C24.4311,3.2536 24.5341,3.3606 24.5331,3.4916\",\n id: \"Fill-206\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.9608,2.0502 C10.9588,2.1462 10.8778,2.2212 10.7818,2.2172 C10.6908,2.2142 10.6168,2.1372 10.6158,2.0462 C10.6148,1.9542 10.6998,1.8702 10.7918,1.8712 C10.8848,1.8722 10.9638,1.9552 10.9608,2.0502\",\n id: \"Fill-207\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.3856,1.3109 C12.3896,1.2139 12.4726,1.1379 12.5666,1.1449 C12.6566,1.1519 12.7306,1.2299 12.7306,1.3199 C12.7296,1.4129 12.6466,1.4929 12.5526,1.4909 C12.4566,1.4889 12.3816,1.4079 12.3856,1.3109\",\n id: \"Fill-208\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.41,2.0121 C11.413,2.1111 11.34,2.1851 11.241,2.1851 C11.143,2.1841 11.075,2.1191 11.071,2.0241 C11.067,1.9241 11.137,1.8481 11.234,1.8451 C11.333,1.8431 11.408,1.9131 11.41,2.0121\",\n id: \"Fill-209\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.1776,1.7758 C12.0816,1.7788 12.0036,1.7018 12.0026,1.6048 C12.0026,1.5108 12.0726,1.4358 12.1636,1.4308 C12.2596,1.4248 12.3406,1.5008 12.3446,1.5958 C12.3476,1.6928 12.2736,1.7728 12.1776,1.7758\",\n id: \"Fill-210\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.2792,1.5824 C13.3782,1.5814 13.4552,1.6544 13.4562,1.7514 C13.4562,1.8474 13.3792,1.9224 13.2802,1.9224 C13.1892,1.9214 13.1122,1.8474 13.1102,1.7574 C13.1072,1.6594 13.1802,1.5834 13.2792,1.5824\",\n id: \"Fill-211\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.0057,1.2211 C13.1037,1.2221 13.1787,1.2971 13.1767,1.3941 C13.1757,1.4921 13.0987,1.5651 13.0007,1.5621 C12.9067,1.5591 12.8357,1.4881 12.8337,1.3951 C12.8317,1.2971 12.9067,1.2211 13.0057,1.2211\",\n id: \"Fill-212\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.3514,2.4066 C10.3564,2.3116 10.4414,2.2356 10.5344,2.2416 C10.6234,2.2486 10.6984,2.3286 10.6964,2.4176 C10.6954,2.5106 10.6134,2.5896 10.5184,2.5866 C10.4234,2.5836 10.3474,2.5016 10.3514,2.4066\",\n id: \"Fill-213\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.7528,2.8627 C10.7538,2.9627 10.6818,3.0367 10.5828,3.0357 C10.4838,3.0357 10.4118,2.9617 10.4138,2.8627 C10.4148,2.7677 10.4828,2.6987 10.5778,2.6967 C10.6788,2.6937 10.7518,2.7627 10.7528,2.8627\",\n id: \"Fill-214\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.2967,12.0609 C18.2097,11.9989 18.1437,11.9439 18.0697,11.9019 C17.9977,11.8609 17.9177,11.8319 17.8407,11.7989 C17.8447,11.7899 17.8477,11.7809 17.8517,11.7709 C17.8747,11.7759 17.8997,11.7799 17.9327,11.7859 C17.9187,11.7399 17.9087,11.7049 17.8977,11.6649 L17.8177,11.6649 C17.8267,11.5979 17.8357,11.5349 17.8457,11.4639 C17.8727,11.4789 17.9047,11.4969 17.9427,11.5159 C17.9497,11.4909 17.9557,11.4709 17.9627,11.4509 C17.9707,11.4489 17.9797,11.4469 17.9867,11.4449 C17.9947,11.4859 18.0147,11.5269 18.0097,11.5669 C17.9947,11.7069 18.0987,11.8149 18.2327,11.8089 C18.2727,11.6989 18.3117,11.5949 18.3467,11.4989 C18.5157,11.4449 18.6217,11.5109 18.6917,11.6579 C18.6707,11.7099 18.6467,11.7699 18.6137,11.8499 C19.0997,11.7529 19.5787,11.9189 20.0547,11.8359 C20.0557,11.8199 20.0577,11.8029 20.0597,11.7869 C20.0187,11.7759 19.9767,11.7539 19.9357,11.7549 C19.7607,11.7609 19.5857,11.7789 19.4107,11.7829 C19.2757,11.7859 19.1407,11.7829 19.0077,11.7639 C18.9637,11.7579 18.9257,11.6979 18.8847,11.6629 C18.9257,11.6289 18.9657,11.5949 19.0077,11.5639 C19.0187,11.5559 19.0357,11.5559 19.0507,11.5569 C19.3237,11.5649 19.5957,11.4839 19.8717,11.5489 C19.9567,11.5689 20.0567,11.5199 20.1427,11.5799 C19.9767,11.6079 19.8167,11.6529 19.6557,11.6579 C19.4877,11.6619 19.3187,11.6239 19.1507,11.6119 C19.0847,11.6069 19.0197,11.6229 18.9527,11.6279 C18.9517,11.6439 18.9497,11.6599 18.9487,11.6749 C18.9917,11.6889 19.0357,11.7139 19.0797,11.7139 C19.3197,11.7129 19.5607,11.7029 19.8017,11.7019 C19.8917,11.7019 19.9827,11.7119 20.0697,11.7299 C20.0977,11.7349 20.1357,11.7779 20.1357,11.8029 C20.1367,11.8289 20.1007,11.8649 20.0717,11.8779 C20.0217,11.9019 19.9647,11.9139 19.9007,11.9329 C19.9167,11.9399 19.9197,11.9429 19.9237,11.9429 C20.1507,11.9539 20.1417,11.9849 20.0927,12.1969 C20.0827,12.2379 20.0977,12.2849 20.1007,12.3249 C20.0447,12.3159 20.0007,12.3079 19.9557,12.3009 C19.9537,12.3109 19.9517,12.3199 19.9487,12.3299 C19.9117,12.2769 19.8737,12.2239 19.8257,12.1579 C19.8727,12.1459 19.9217,12.1329 19.9747,12.1209 C19.9947,12.0249 19.9717,12.0039 19.8757,12.0289 C19.7737,12.0549 19.6697,12.0719 19.5627,12.0929 C19.5637,12.0959 19.5737,12.1169 19.5837,12.1379 C19.6117,12.2009 19.6107,12.2339 19.5247,12.2449 C19.4457,12.2549 19.3717,12.2979 19.2707,12.3359 C19.2347,12.2879 19.1887,12.2199 19.1467,12.1629 C19.2417,12.0069 19.3057,12.2179 19.3827,12.1589 C19.3207,12.0439 19.2307,11.9919 19.1017,12.0329 C19.0577,12.0459 19.0177,12.0719 18.9737,12.0879 C18.9137,12.1099 18.8537,12.1289 18.7927,12.1479 C18.7457,12.1619 18.6927,12.1629 18.6507,12.1849 C18.5497,12.2399 18.4517,12.2959 18.3287,12.2789 C18.3057,12.2749 18.2777,12.2989 18.2477,12.3119 C18.1487,12.2319 17.9127,12.2419 17.8497,12.3319 C17.8037,12.2699 17.7557,12.2059 17.7067,12.1389 C17.7347,12.1149 17.7747,12.0779 17.8347,12.0229 C17.8397,12.0249 17.8907,12.0339 17.9027,12.0599 C17.9427,12.1479 18.0007,12.1229 18.0667,12.1029 C18.1287,12.0839 18.1937,12.0789 18.2967,12.0609\",\n id: \"Fill-215\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.5633,11.3041 C18.4633,11.2861 18.3913,11.2621 18.3203,11.2651 C18.2523,11.2671 18.1863,11.2991 18.1073,11.3221 C18.0783,11.2801 18.0273,11.2091 17.9753,11.1381 C18.0063,11.1131 18.0513,11.0751 18.0963,11.0371 C18.0923,11.0271 18.0893,11.0161 18.0853,11.0051 C18.1193,11.0231 18.1713,11.0331 18.1823,11.0591 C18.2173,11.1441 18.2753,11.1231 18.3363,11.1101 C18.3993,11.0961 18.4613,11.0811 18.5373,11.0651 C18.4423,10.9081 18.2563,10.8811 18.1103,10.8041 C18.1163,10.7931 18.1233,10.7831 18.1293,10.7721 C18.1563,10.7771 18.1813,10.7821 18.2143,10.7871 C18.2043,10.7401 18.1943,10.7001 18.1853,10.6621 L18.1023,10.6621 C18.1143,10.5931 18.1263,10.5261 18.1383,10.4501 C18.1673,10.4681 18.1973,10.4851 18.2323,10.5051 C18.2473,10.4821 18.2593,10.4601 18.2733,10.4391 C18.2833,10.4351 18.2923,10.4301 18.3013,10.4261 C18.2943,10.6041 18.2933,10.7801 18.4913,10.8211 C18.5303,10.6981 18.5673,10.5751 18.6003,10.4691 C18.7843,10.4121 18.8973,10.4761 18.9673,10.6391 C18.9493,10.6851 18.9243,10.7471 18.8933,10.8251 C19.3213,10.7431 19.7413,10.9241 20.1563,10.8161 L20.1623,10.7691 C20.1183,10.7581 20.0723,10.7391 20.0283,10.7401 C19.8383,10.7471 19.6493,10.7631 19.4593,10.7701 C19.3873,10.7731 19.3133,10.7701 19.2433,10.7571 C19.1783,10.7451 19.1123,10.7211 19.1133,10.6341 C19.1153,10.5401 19.1913,10.5351 19.2533,10.5301 C19.4463,10.5091 19.6403,10.4941 19.8513,10.4761 C19.8303,10.5051 19.8203,10.5191 19.8033,10.5411 C19.9553,10.5491 20.1093,10.4671 20.2613,10.5781 C20.0593,10.5981 19.8713,10.6241 19.6823,10.6331 C19.5903,10.6371 19.4973,10.6061 19.4043,10.5951 C19.3533,10.5881 19.3013,10.5841 19.2513,10.5891 C19.2293,10.5911 19.2083,10.6171 19.1863,10.6321 C19.2063,10.6511 19.2223,10.6801 19.2463,10.6861 C19.2913,10.6991 19.3383,10.7021 19.3853,10.7001 C19.5833,10.6951 19.7793,10.6811 19.9763,10.6781 C20.0433,10.6771 20.1143,10.6931 20.1793,10.7131 C20.2073,10.7221 20.2363,10.7631 20.2403,10.7921 C20.2433,10.8141 20.2103,10.8521 20.1853,10.8641 C20.1263,10.8901 20.0633,10.9061 20.0003,10.9251 C20.0773,10.9421 20.1503,10.9571 20.2283,10.9741 C20.2173,11.0961 20.2073,11.2171 20.1963,11.3331 C20.1453,11.3251 20.0993,11.3171 20.0523,11.3091 C20.0493,11.3201 20.0453,11.3301 20.0423,11.3411 C20.0023,11.2861 19.9633,11.2331 19.9153,11.1641 C19.9573,11.1531 20.0093,11.1381 20.0723,11.1201 C20.0743,11.1021 20.0773,11.0721 20.0823,11.0211 C19.9293,11.0441 19.7863,11.0671 19.6353,11.0891 C19.6373,11.0951 19.6423,11.1151 19.6513,11.1321 C19.6993,11.2241 19.6893,11.2411 19.5843,11.2481 C19.5643,11.2501 19.5433,11.2551 19.5253,11.2641 C19.4883,11.2811 19.4533,11.2991 19.4173,11.3181 C19.4113,11.3101 19.4053,11.3011 19.3993,11.2931 C19.3913,11.3151 19.3823,11.3361 19.3753,11.3561 C19.2563,11.3321 19.2333,11.2401 19.2113,11.1371 C19.2553,11.1021 19.3023,11.0621 19.3613,11.1461 C19.3753,11.1661 19.4193,11.1631 19.4523,11.1711 C19.4133,11.1151 19.3823,11.0731 19.3443,11.0171 C19.3313,11.0161 19.2933,11.0141 19.2553,11.0121 C19.2263,11.0111 19.1923,11.0021 19.1693,11.0141 C19.0493,11.0761 18.9343,11.1471 18.8143,11.2091 C18.7613,11.2371 18.7023,11.2501 18.6463,11.2721 C18.6113,11.2841 18.5763,11.2991 18.5633,11.3041\",\n id: \"Fill-216\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.8749,9.2045 L19.8749,9.2545 C19.9739,9.2035 20.0759,9.1515 20.1789,9.0995 C20.1839,9.1075 20.1869,9.1175 20.1919,9.1265 C19.9749,9.2725 19.9479,9.4075 19.6909,9.4345 C19.6669,9.4365 19.6329,9.4745 19.6299,9.4985 C19.6269,9.5165 19.6639,9.5555 19.6879,9.5585 C19.7919,9.5775 19.8969,9.5855 20.0019,9.5995 C20.0529,9.6055 20.1099,9.6035 20.1499,9.6295 C20.1979,9.6575 20.2619,9.7105 20.2629,9.7535 C20.2629,9.7965 20.1989,9.8495 20.1519,9.8795 C20.1119,9.9045 20.0559,9.9055 19.9879,9.9215 C20.0279,9.9335 20.0559,9.9515 20.0829,9.9505 C20.1869,9.9485 20.2169,10.0105 20.2119,10.0965 C20.2079,10.1645 20.1909,10.2305 20.1829,10.2885 C20.1359,10.2855 20.0909,10.2825 20.0359,10.2785 C20.0159,10.2475 19.9839,10.2005 19.9469,10.1425 C19.9899,10.1355 20.0299,10.1275 20.0859,10.1165 C20.0809,10.0905 20.0849,10.0525 20.0679,10.0355 C20.0539,10.0215 20.0129,10.0255 19.9869,10.0325 C19.9349,10.0475 19.8839,10.0695 19.8209,10.0935 C19.8279,10.1115 19.8419,10.1525 19.8549,10.1895 C19.7589,10.2315 19.6729,10.2805 19.5809,10.3015 C19.5519,10.3085 19.5009,10.2455 19.4689,10.2075 C19.4529,10.1885 19.4589,10.1535 19.4549,10.1255 C19.5299,10.0095 19.5809,10.1965 19.6539,10.1465 C19.6259,10.1065 19.5989,10.0675 19.5649,10.0195 C19.5039,10.0285 19.4179,9.9805 19.3769,10.1035 C19.3639,10.1415 19.2609,10.1475 19.2009,10.1725 C19.1149,10.2075 19.0319,10.2475 18.9459,10.2855 C18.8749,10.2205 18.6569,10.2255 18.5889,10.2945 C18.5489,10.2395 18.5089,10.1845 18.4809,10.1475 C18.5279,10.1325 18.5809,10.1135 18.6349,10.0955 C18.6099,10.0695 18.5869,10.0445 18.5629,10.0195 C18.6489,10.0125 18.6749,10.1655 18.7959,10.0985 C18.8699,10.0575 18.9699,10.0635 19.0929,10.0425 C19.0309,9.9955 18.9989,9.9655 18.9619,9.9455 C18.9259,9.9275 18.8829,9.9205 18.8439,9.9075 C18.8459,9.8975 18.8489,9.8885 18.8509,9.8775 C18.8709,9.8805 18.8919,9.8825 18.9469,9.8885 C18.9089,9.8335 18.8859,9.7985 18.8609,9.7625 L18.8319,9.7795 C18.8489,9.7265 18.8649,9.6735 18.8849,9.6105 C18.9229,9.6025 18.9759,9.7265 19.0049,9.6005 C19.0949,9.6745 18.9209,9.8045 19.0779,9.8475 C19.1189,9.7255 19.1599,9.6015 19.2009,9.4815 C19.3099,9.4715 19.3949,9.4635 19.4719,9.5635 C19.5549,9.6705 19.4469,9.7305 19.4469,9.7955 C19.5859,9.8155 19.7209,9.8455 19.8559,9.8535 C19.9479,9.8595 20.0429,9.8405 20.1349,9.8235 C20.1599,9.8195 20.1799,9.7825 20.2019,9.7605 C20.1779,9.7365 20.1559,9.6965 20.1289,9.6915 C20.0149,9.6725 19.8969,9.6635 19.7819,9.6475 C19.6889,9.6365 19.5579,9.6395 19.5599,9.5235 C19.5619,9.4435 19.6539,9.3595 19.7199,9.2895 C19.7559,9.2495 19.8179,9.2335 19.8749,9.2045\",\n id: \"Fill-217\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.4071,12.0707 L23.1661,12.0707 C23.1551,12.0217 23.1451,11.9787 23.1351,11.9257 C23.1781,11.9287 23.2091,11.9317 23.2471,11.9347 C23.1721,11.4907 23.0231,11.0827 22.7981,10.7037 C22.7861,10.6837 22.7631,10.6707 22.7441,10.6577 C22.7011,10.6297 22.6571,10.6027 22.6141,10.5767 C22.6171,10.5717 22.6211,10.5657 22.6241,10.5607 L22.4921,10.5607 C22.5121,10.5137 22.5281,10.4777 22.5441,10.4427 C22.5061,10.4077 22.4891,10.3657 22.4741,10.3227 C22.4631,10.2857 22.4661,10.2377 22.4431,10.2107 C22.1731,9.8967 21.8531,9.6467 21.4741,9.4767 C21.4101,9.4477 21.3421,9.4257 21.2721,9.3997 L21.2721,9.5147 C21.2341,9.5097 21.2011,9.5067 21.1651,9.5027 L21.1651,10.4027 C21.2541,10.4247 21.3091,10.4707 21.2571,10.5707 C21.2971,10.5937 21.3341,10.6157 21.3771,10.6407 C21.3491,10.6617 21.3341,10.6767 21.3161,10.6877 C21.2991,10.6987 21.2781,10.7057 21.2611,10.7147 C21.2851,10.8297 21.2831,10.8327 21.1661,10.8957 L21.1661,11.9587 C21.2111,11.9527 21.2521,11.9477 21.2991,11.9427 C21.2891,11.9927 21.2821,12.0307 21.2731,12.0747 C21.4781,12.0747 21.6761,12.0757 21.8721,12.0737 C21.8931,12.0727 21.9161,12.0567 21.9351,12.0447 C21.9831,12.0117 22.0291,11.9777 22.0771,11.9447 C22.0831,11.9527 22.0891,11.9607 22.0951,11.9677 C22.1151,11.9357 22.1351,11.9027 22.1631,11.8557 C22.1941,11.9067 22.2171,11.9417 22.2411,11.9807 C22.3361,11.9337 22.3831,11.9857 22.4071,12.0707 M23.4191,12.0717 C23.4321,12.0357 23.4441,12.0017 23.4641,11.9497 C23.4911,11.9787 23.5421,12.0077 23.5481,12.0437 C23.5531,12.0807 23.5151,12.1247 23.4761,12.1577 C23.4851,12.1987 23.4941,12.2387 23.5071,12.2967 C23.4541,12.2837 23.4171,12.2747 23.3971,12.2697 C23.3491,12.3007 23.3101,12.3457 23.2721,12.3447 C23.2331,12.3447 23.1951,12.2987 23.1401,12.2607 C23.2041,12.2457 23.2391,12.2367 23.2741,12.2287 C23.2731,12.2197 23.2711,12.2107 23.2701,12.2017 L22.2431,12.2017 C22.2231,12.2647 22.2041,12.3307 22.1841,12.3957 C22.1721,12.3957 22.1591,12.3957 22.1451,12.3967 C22.1251,12.3347 22.1031,12.2727 22.0781,12.1997 L21.1721,12.1997 C21.1711,12.2087 21.1691,12.2167 21.1681,12.2257 C21.2001,12.2327 21.2321,12.2397 21.2941,12.2527 C21.2441,12.2917 21.2101,12.3397 21.1731,12.3417 C21.1361,12.3437 21.0951,12.3007 21.0431,12.2697 C21.0261,12.2747 20.9891,12.2857 20.9281,12.3027 C20.9431,12.2427 20.9541,12.1997 20.9591,12.1787 C20.9281,12.1317 20.8841,12.0927 20.8861,12.0597 C20.8891,12.0207 20.9341,11.9857 20.9711,11.9347 C20.9891,11.9977 20.9991,12.0317 21.0091,12.0657 C21.0171,12.0637 21.0251,12.0617 21.0341,12.0597 L21.0341,10.7227 C20.9691,10.7047 20.9021,10.6847 20.8371,10.6667 L20.8371,10.6257 C20.8981,10.6047 20.9601,10.5857 21.0331,10.5617 L21.0331,9.3407 C21.0241,9.3387 21.0161,9.3367 21.0081,9.3347 C20.9991,9.3637 20.9901,9.3927 20.9811,9.4237 C20.8791,9.3927 20.8631,9.3377 20.9191,9.2547 C20.9451,9.2157 20.9381,9.1537 20.9491,9.0917 C20.9851,9.1037 21.0281,9.1187 21.0721,9.1347 C21.1751,9.0477 21.2311,9.0607 21.2641,9.1877 C21.2311,9.1937 21.1971,9.1997 21.1631,9.2057 C21.1621,9.2147 21.1601,9.2237 21.1581,9.2327 C21.7991,9.4167 22.2951,9.7997 22.6891,10.3177 C22.7591,10.2897 22.8231,10.2637 22.8871,10.2387 C22.8971,10.2507 22.9081,10.2617 22.9191,10.2747 C22.8781,10.3297 22.8361,10.3847 22.8011,10.4317 C22.9271,10.6907 23.0741,10.9477 23.1781,11.2217 C23.2801,11.4917 23.3381,11.7777 23.4191,12.0717\",\n id: \"Fill-218\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.7352,11.723 C21.6252,11.701 21.6052,11.609 21.5952,11.507 C21.6462,11.459 21.6902,11.461 21.7562,11.516 C21.7972,11.55 21.8762,11.54 21.9572,11.553 C21.9122,11.445 21.8072,11.363 21.9012,11.262 C21.9962,11.16 22.1172,11.15 22.2742,11.21 C22.1422,11.114 22.0382,11.036 21.9222,10.952 C21.7872,11.008 21.6002,11.046 21.4822,11.203 C21.4252,11.168 21.3562,11.125 21.2852,11.081 C21.3032,11.04 21.3262,10.989 21.3592,10.914 C21.3782,10.919 21.4222,10.942 21.4672,10.946 C21.5062,10.949 21.5542,10.943 21.5822,10.92 C21.6402,10.872 21.6882,10.812 21.7372,10.76 C21.6052,10.61 21.4762,10.46 21.3412,10.307 L21.3972,10.307 L21.3972,10.217 C21.3692,10.219 21.3402,10.222 21.3052,10.224 C21.3142,10.156 21.3242,10.083 21.3342,10.001 C21.3662,10.024 21.3952,10.043 21.4272,10.066 C21.4422,10.042 21.4552,10.022 21.4772,9.985 C21.4922,10.028 21.5182,10.064 21.5102,10.088 C21.4732,10.204 21.5292,10.268 21.6142,10.335 C21.6842,10.39 21.7362,10.468 21.8012,10.541 C21.8662,10.464 21.9252,10.392 21.9862,10.32 C21.9812,10.309 21.9772,10.298 21.9722,10.286 C21.9282,10.286 21.8842,10.291 21.8412,10.286 C21.8122,10.281 21.7852,10.262 21.7572,10.249 C21.7812,10.234 21.8042,10.216 21.8302,10.204 C21.8482,10.196 21.8702,10.194 21.8902,10.189 C21.8892,10.177 21.8882,10.165 21.8872,10.153 C21.8512,10.156 21.8152,10.158 21.7552,10.161 C21.7452,10.143 21.7142,10.106 21.7082,10.065 C21.7062,10.051 21.7662,10.031 21.7952,10.009 C21.9222,9.911 22.0272,9.981 22.1132,10.041 C22.1442,10.103 22.1632,10.152 22.1912,10.195 C22.2562,10.297 22.2942,10.399 22.2512,10.524 C22.1992,10.676 22.2212,10.818 22.3362,10.941 C22.4082,11.018 22.4702,11.104 22.5422,11.181 C22.5702,11.212 22.6102,11.238 22.6502,11.251 C22.6792,11.261 22.7162,11.247 22.7502,11.244 C22.7442,11.212 22.7492,11.168 22.7302,11.15 C22.6702,11.087 22.5912,11.041 22.5352,10.975 C22.4642,10.892 22.3942,10.802 22.3482,10.703 C22.3242,10.65 22.3502,10.574 22.3542,10.507 C22.3632,10.506 22.3732,10.505 22.3812,10.505 C22.4152,10.581 22.4662,10.656 22.4782,10.736 C22.5002,10.873 22.5862,10.953 22.6872,11.028 C22.7222,11.054 22.7652,11.078 22.7842,11.115 C22.8072,11.158 22.8342,11.227 22.8152,11.26 C22.7942,11.299 22.7252,11.328 22.6752,11.331 C22.6232,11.335 22.5672,11.303 22.5142,11.286 C22.5422,11.405 22.6712,11.472 22.7842,11.429 C22.8082,11.42 22.8562,11.417 22.8662,11.431 C22.8932,11.468 22.9242,11.519 22.9202,11.559 C22.9122,11.624 22.8922,11.691 22.8412,11.747 C22.8182,11.775 22.8452,11.846 22.8492,11.896 C22.7882,11.927 22.7332,11.784 22.6732,11.906 C22.6312,11.842 22.5912,11.785 22.5422,11.712 C22.5872,11.7 22.6432,11.684 22.7132,11.665 C22.7142,11.638 22.7152,11.6 22.7162,11.571 C22.6452,11.577 22.5652,11.611 22.5222,11.584 C22.4412,11.536 22.3702,11.46 22.3182,11.38 C22.2762,11.315 22.2402,11.305 22.1782,11.333 C22.1112,11.365 22.0722,11.411 22.1042,11.49 C22.1152,11.516 22.1412,11.542 22.1392,11.568 C22.1382,11.595 22.1172,11.642 22.0982,11.645 C22.0022,11.66 21.9022,11.66 21.8052,11.671 C21.7822,11.674 21.7622,11.702 21.7352,11.723\",\n id: \"Fill-219\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1.454,0.5287 L1.454,61.1567 L-1.42219569e-13,61.1567 C-1.42219569e-13,40.9477 -1.42219569e-13,20.7377 0.001,0.5287 L1.454,0.5287 Z\",\n id: \"Fill-220\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30.7245,34.4994 L31.9605,34.4994 C31.9765,34.8504 31.9915,35.1744 32.0115,35.6524 C32.8195,34.8304 33.6485,34.2684 34.7085,34.2074 C35.8125,34.1444 36.6825,34.5814 37.3285,35.5454 C37.4815,35.4234 37.6355,35.3194 37.7675,35.1914 C38.8235,34.1664 40.0925,34.0974 41.4165,34.4304 C42.4005,34.6784 42.8875,35.2804 42.9025,36.3034 C42.9355,38.6134 42.9125,40.9254 42.9125,43.2764 L41.5785,43.2764 L41.5785,42.5314 C41.5785,40.6954 41.5805,38.8604 41.5785,37.0244 C41.5765,36.2634 41.0245,35.6554 40.2725,35.5704 C38.7035,35.3944 37.8435,36.0464 37.7505,37.5994 C37.6605,39.1154 37.6705,40.6384 37.6265,42.1584 C37.5925,43.3494 37.5675,43.3644 36.1755,43.2554 C36.1755,42.1894 36.1915,41.1104 36.1705,40.0314 C36.1515,39.0194 36.1225,38.0044 36.0415,36.9944 C35.9485,35.8234 35.0985,35.2654 33.9575,35.5684 C32.8925,35.8524 32.3035,36.5034 32.2435,37.6134 C32.1615,39.0824 32.1415,40.5554 32.1075,42.0264 C32.0765,43.3364 32.0815,43.3364 30.7245,43.2834 L30.7245,34.4994 Z\",\n id: \"Fill-221\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.8631,61.1264 L17.3171,61.1264 L17.3171,55.5404 L10.7961,55.5404 L10.7961,61.1064 L9.1981,61.1064 C9.1851,60.9904 9.1611,60.8764 9.1611,60.7634 C9.1671,57.2354 9.1661,53.7094 9.1851,50.1834 C9.1931,48.7514 9.2141,48.7514 10.7841,48.8744 L10.7841,54.1104 L17.2721,54.1104 L17.2721,48.8734 L18.8631,48.8734 L18.8631,61.1264 Z\",\n id: \"Fill-222\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.8758,34.7582 C18.5248,34.7582 18.2128,34.8282 17.9538,34.7392 C17.6558,34.6382 17.2848,34.4592 17.1538,34.2052 C16.3828,32.7132 14.8698,31.9102 13.1848,32.1742 C11.4918,32.4402 10.0388,33.8562 9.9058,35.4912 C9.8188,36.5712 9.8148,37.6662 9.8848,38.7462 C9.9928,40.4432 11.6828,42.0212 13.4128,42.1422 C15.4378,42.2842 16.7968,41.3392 17.2358,39.3872 C17.3608,38.8332 17.6088,38.6692 18.1118,38.6962 C18.3988,38.7112 18.6878,38.6982 18.9768,38.6982 C18.8858,41.6712 16.4208,43.7742 13.3488,43.5252 C10.4988,43.2942 8.7298,41.7162 8.2638,38.8492 C7.8588,36.3622 8.1598,34.0132 10.0938,32.1502 C12.0168,30.2982 15.7718,30.3312 17.6788,32.1892 C18.3458,32.8382 18.7428,33.6732 18.8758,34.7582\",\n id: \"Fill-223\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M46.6454,38.7777 C46.8644,39.5297 46.9654,40.3417 47.3254,41.0187 C48.1044,42.4817 50.5054,42.5657 51.4524,41.2297 C52.3284,39.9937 52.3834,37.9007 51.5744,36.6377 C51.0684,35.8487 49.9854,35.3817 49.0634,35.5527 C47.5094,35.8437 46.7814,36.8637 46.6454,38.7777 M46.6504,42.1667 L46.6504,46.6127 L45.2694,46.6127 L45.2694,34.5167 L46.7874,34.5167 C46.8024,34.7677 46.8184,35.0187 46.8294,35.1907 C47.4794,34.8947 48.0934,34.4717 48.7674,34.3357 C51.1704,33.8497 53.1364,35.2187 53.5014,37.6397 C53.6324,38.5067 53.6414,39.4347 53.4844,40.2957 C52.9494,43.2207 49.5564,44.4407 47.2174,42.5997 C47.0614,42.4767 46.9024,42.3587 46.6504,42.1667\",\n id: \"Fill-224\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M60.7782,38.8002 C59.6232,39.0592 58.5092,39.2722 57.4192,39.5672 C56.7422,39.7502 56.5142,40.2922 56.5502,40.9792 C56.5862,41.6632 57.0222,41.9482 57.5962,42.1002 C59.6572,42.6422 61.3312,40.9662 60.7782,38.8002 M61.0132,42.4742 C60.1422,42.7932 59.3522,43.1502 58.5252,43.3592 C58.0552,43.4772 57.5122,43.4132 57.0222,43.3252 C55.6362,43.0752 55.0492,42.3892 54.9652,41.0252 C54.8962,39.9092 55.5492,38.9692 56.7382,38.6062 C57.4742,38.3802 58.2452,38.2682 59.0002,38.1022 C59.3532,38.0242 59.7142,37.9642 60.0542,37.8492 C60.9842,37.5342 61.1512,36.7672 60.4582,36.0702 C59.4182,35.0242 57.3012,35.4202 56.7462,36.7972 C56.4702,37.4832 55.9422,37.2502 55.5322,37.1582 C55.0312,37.0462 55.2752,36.6292 55.3802,36.3242 C55.7282,35.3112 56.3982,34.5712 57.4822,34.4622 C58.4982,34.3612 59.5572,34.3292 60.5562,34.5032 C61.7312,34.7072 62.1642,35.3632 62.1952,36.5542 C62.2342,38.0492 62.2112,39.5472 62.2602,41.0422 C62.2762,41.5322 62.1872,42.1642 63.0122,42.2092 C63.0982,42.2142 63.2522,42.6642 63.2102,42.8752 C63.1682,43.0832 62.9522,43.3522 62.7542,43.4162 C61.9772,43.6702 61.3232,43.2652 61.0132,42.4742\",\n id: \"Fill-225\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M79.0711,37.8402 L84.0551,37.8402 C83.8851,36.4972 82.9721,35.5842 81.6891,35.5112 C80.4491,35.4402 79.4311,36.2902 79.0711,37.8402 M85.8461,39.2512 L79.1611,39.2512 C78.9911,40.5392 79.6901,41.7442 80.8831,42.0372 C82.1421,42.3482 83.3721,42.1832 83.9031,41.0262 C84.2541,40.2612 84.8621,40.6442 85.5031,40.5842 C85.1701,41.8512 84.5141,42.7122 83.3891,43.1662 C80.6101,44.2872 77.8591,42.5712 77.6251,39.5992 C77.5061,38.0832 77.6721,36.6532 78.7741,35.4862 C80.8161,33.3252 84.3511,34.0592 85.3071,36.8622 C85.5601,37.6032 85.6581,38.3952 85.8461,39.2512\",\n id: \"Fill-226\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M55.3817,55.6801 C55.0377,54.1821 53.9187,53.2621 52.7367,53.3401 C51.7277,53.4081 50.3437,54.4551 50.3627,55.6801 L55.3817,55.6801 Z M57.0447,57.1721 L50.4197,57.1721 C50.2967,58.2701 51.0417,59.5131 51.9277,59.8381 C53.2597,60.3261 54.4357,59.9541 55.2527,58.7851 C55.5407,58.3731 55.8347,58.3151 56.6857,58.5001 C56.6747,59.4921 55.8367,60.5401 54.6967,60.9881 C51.9817,62.0531 49.4737,60.6291 48.9557,57.7401 C48.7607,56.6441 48.7907,55.5801 49.2727,54.5541 C50.1087,52.7711 51.5967,51.9381 53.5597,52.1621 C55.1487,52.3441 56.4627,53.6481 56.8177,55.4271 C56.9207,55.9441 56.9557,56.4731 57.0447,57.1721 L57.0447,57.1721 Z\",\n id: \"Fill-227\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.8631,38.767 C21.9351,39.243 21.9631,39.73 22.0881,40.191 C22.4261,41.444 23.3451,42.123 24.6361,42.132055 C25.8281,42.139 26.7301,41.477 27.1011,40.269 C27.4541,39.12 27.4171,37.971 26.8501,36.894 C26.0231,35.317 23.9601,35.07 22.7481,36.374 C22.1201,37.05 21.8581,37.851 21.8631,38.767 M28.8211,38.744 C28.9701,40.791 27.9151,42.581 26.1951,43.197 C24.2871,43.879 22.2821,43.306 21.1381,41.753 C19.2541,39.191 20.6021,35.009 23.5191,34.373 C26.4681,33.731 28.5811,35.472 28.8211,38.744\",\n id: \"Fill-228\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M27.9598,56.6303 C27.9408,56.6273 27.9228,56.6253 27.9028,56.6223 C27.9028,56.4303 27.9198,56.2353 27.9008,56.0443 C27.7398,54.4423 26.7408,53.3943 25.3218,53.3293 C23.9428,53.2673 22.8628,54.1573 22.5908,55.6843 C22.4818,56.2903 22.4818,56.9393 22.5638,57.5503 C22.7308,58.7843 23.8218,59.8573 24.8638,59.9193 C26.3258,60.0073 27.3558,59.2743 27.7508,57.8333 C27.8578,57.4423 27.8928,57.0313 27.9598,56.6303 M25.2418,61.1563012 C22.2728,61.1583 20.4298,58.7533 20.9988,55.6173 C21.6098,52.2523 25.4778,50.8463 28.1038,53.0643 C28.5088,53.4063 28.8248,53.9163 29.0408,54.4103 C29.5658,55.6173 29.6278,56.8853 29.2788,58.1603 C28.7298,60.1773 27.4058,61.1553 25.2418,61.1563012\",\n id: \"Fill-229\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M40.1542,58.3275 C40.9102,58.2385 41.5962,58.1005 41.8672,59.0745 C41.9402,59.3385 42.3172,59.5745 42.6082,59.7115 C43.4512,60.1105 44.3442,60.1025 45.2252,59.8405 C45.7202,59.6925 46.0492,59.3635 46.0882,58.8015 C46.1282,58.2205 45.8142,57.8805 45.3232,57.7075 C44.6652,57.4735 43.9842,57.3045 43.3182,57.0925 C42.7202,56.9025 42.0982,56.7585 41.5432,56.4815 C40.3012,55.8655 39.9992,54.2965 40.8612,53.2145 C42.0382,51.7395 45.3272,51.6295 46.5842,53.0305 C46.7752,53.2445 46.9852,53.4845 47.0582,53.7485 C47.1452,54.0575 47.0912,54.4065 47.0982,54.7395 C46.6172,54.7315 46.1012,54.9755 45.7202,54.4185 C44.9872,53.3475 43.6312,53.0225 42.4702,53.6005 C41.7932,53.9375 41.6842,54.6825 42.3262,55.0945 C42.8222,55.4125 43.4172,55.5925 43.9842,55.7815 C44.6932,56.0185 45.4302,56.1725 46.1352,56.4175 C47.0032,56.7205 47.5702,57.3215 47.6332,58.2715 C47.6952,59.2195 47.3912,60.0265 46.5812,60.5955 C45.2962,61.4955 42.7642,61.5505 41.4572,60.7045 C40.6152,60.1605 40.2762,59.3425 40.1542,58.3275\",\n id: \"Fill-230\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M90.1454,34.1957 C90.7164,34.2807 91.2964,34.3307 91.8584,34.4587 C92.6674,34.6427 93.2514,35.1427 93.5054,35.9367 C93.5994,36.2297 93.5864,36.8417 93.5294,36.8537 C93.0534,36.9517 92.4974,37.1257 92.1844,36.5307 C91.8184,35.8317 91.1964,35.5357 90.4634,35.5117 C89.9944,35.4977 89.4944,35.5747 89.0544,35.7377 C88.7914,35.8357 88.4624,36.1697 88.4494,36.4137 C88.4324,36.7147 88.6314,37.1567 88.8804,37.3157 C89.3364,37.6077 89.8914,37.7557 90.4164,37.9287 C91.1694,38.1797 91.9414,38.3827 92.6944,38.6377 C94.5554,39.2697 94.3074,41.6847 93.2544,42.5827 C91.7874,43.8327 88.6924,43.7167 87.3544,42.3297 C87.1404,42.1077 86.9014,41.8427 86.8374,41.5607 C86.7574,41.2117 86.7034,40.6807 86.8974,40.4847 C87.2264,40.1527 87.9474,40.4907 88.1894,40.9827 C88.5594,41.7337 89.2214,42.0627 90.0044,42.1147 C90.5264,42.1487 91.0644,42.0857 91.5834,41.9947 C92.1234,41.9007 92.6144,41.5557 92.5494,41.0007 C92.5024,40.5957 92.1734,40.0837 91.8204,39.8847 C91.2464,39.5617 90.5464,39.4647 89.9044,39.2567 C89.2854,39.0567 88.6384,38.9037 88.0614,38.6167 C86.5244,37.8497 86.3864,35.9877 87.7564,34.9417 C88.4594,34.4047 89.2534,34.1737 90.1454,34.1957\",\n id: \"Fill-231\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M71.8065,43.3031 L70.5095,43.3031 C70.5095,43.0631 70.5105,42.8331 70.5085,42.6041 C70.5005,40.9611 70.5105,39.3181 70.4795,37.6761 C70.4525,36.2351 69.8695,35.5541 68.6935,35.5101 C67.4055,35.4611 66.3555,36.3181 66.2765,37.5881 C66.1695,39.3231 66.1395,41.0611 66.0755,42.7971 C66.0715,42.9141 66.0505,43.0311 66.0325,43.1941 L64.6415,43.1941 L64.6415,34.5071 L65.9965,34.5071 L65.9965,35.6411 C66.2045,35.4871 66.3465,35.4111 66.4495,35.3011 C67.6265,34.0291 69.0345,34.0391 70.5155,34.6001 C71.2495,34.8781 71.7655,35.4661 71.7855,36.2311 C71.8435,38.5651 71.8065,40.9011 71.8065,43.3031\",\n id: \"Fill-232\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M31.2645,52.3373 L32.5895,52.3373 C32.5895,52.6003 32.5855,52.8543 32.5905,53.1083 C32.6235,54.8693 32.6415,56.6313 32.7015,58.3923 C32.7355,59.3853 33.3175,59.9353 34.3005,60.0013 C35.7675,60.1003 36.8675,59.2353 36.9705,57.7683 C37.0765,56.2763 37.0605,54.7773 37.0945,53.2813 C37.1015,52.9943 37.0955,52.7083 37.0955,52.3653 L38.5075,52.3653 L38.5075,61.1173 L37.2265,61.1173 C37.1655,60.7443 37.1105,60.4033 37.0335,59.9303 C35.9585,61.2283 34.6605,61.5123 33.1795,61.1753 C32.1395,60.9383 31.3085,60.1213 31.2825,59.0693 C31.2255,56.8543 31.2645,54.6363 31.2645,52.3373\",\n id: \"Fill-233\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n id: \"Fill-234\",\n points: \"74.3276 43.2841 75.6936 43.2841 75.6936 34.5011 74.3276 34.5011\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M75.6805,32.8383 L74.3275,32.8383 L74.3275,31.0473 C75.7655,30.9143 75.8785,31.0643 75.6805,32.8383\",\n id: \"Fill-235\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgGroup34);\nexport default __webpack_public_path__ + \"static/media/Group 34.984a2461096253c308234df7e9ad6f3e.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgGroup35(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"72px\",\n height: \"31px\",\n viewBox: \"0 0 72 31\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"Group 35\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Final-design-tweak\",\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group-35\",\n transform: \"translate(0.447300, 0.717721)\",\n fill: \"#0AEDC2\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.298,20.4576789 C13.057,20.7076789 12.392,20.8076789 12.209,21.0986789 C11.796,21.7876789 11.314,22.4336789 10.771,23.0256789 C9.109,24.5716789 5.652,25.3536789 3.931,23.8566789 C3.815,23.8566789 3.881,23.9326789 4.014,24.3556789 C4.139,25.1866789 4.787,27.0406789 4.546,27.5216789 C4.704,28.0546789 4.861,27.8626789 5.161,28.1536789 C5.46,28.4446789 5.444,28.8766789 5.668,28.9846789 L6.499,28.9356789 C6.549,29.0766789 6.599,29.2266789 6.641,29.3756789 L7.654,29.3016789 C7.846,29.3426789 8.419,29.6416789 8.585,29.6836789 L9.707,29.6076789 C10.535,29.7606789 11.389,29.5346789 12.034,28.9936789 C12.442,28.7196789 12.865,28.7606789 13.239,28.4526789 C13.828,27.9126789 14.338,27.2916789 14.752,26.6076789 C15.583,25.1286789 15.292,21.6216789 14.553,20.7246789 C14.27,20.3916789 13.929,20.3836789 13.298,20.4576789 L13.298,20.4576789 Z M20.079,19.4856789 C19.473,19.9506789 19.248,19.8346789 18.858,20.5576789 C18.858,20.5576789 18.916,20.6656789 18.858,20.6656789 C19.224,21.3886789 20.055,21.6796789 20.669,22.1866789 C20.86,22.3536789 21.376,23.2416789 21.617,23.3086789 C21.892,23.6326789 22.074,24.5466789 22.249,24.5466789 C22.44,24.7966789 22.249,25.3786789 22.423,25.6356789 C22.423,26.7076789 22.282,26.7906789 22.099,26.9906789 C22.099,27.0646789 22.198,27.2646789 22.198,27.3396789 C22.198,27.4146789 22.681,27.6966789 22.872,27.6546789 C23.454,27.6546789 25.856,29.5506789 26.047,29.9156789 C27.768,30.0406789 27.643,29.5176789 28.831,29.0106789 C29.155,28.8766789 29.413,29.0106789 29.662,28.7856789 C29.911,28.5616789 29.903,28.1126789 30.1110083,27.8886789 C30.119,23.6486789 24.352,19.6356789 20.079,19.4856789 L20.079,19.4856789 Z M24.759,10.5596789 C23.239,10.7386789 21.784,11.2736789 20.512,12.1216789 C20.186,12.3456789 19.904,12.6266789 19.681,12.9526789 C19.527,13.2336789 19.477,13.5616789 19.539,13.8756789 C19.575,14.2736789 19.774,14.6416789 20.088,14.8896789 C22.714,14.6976789 27.26,14.5316789 28.15,16.7336789 C28.182,16.9246789 28.223,17.1136789 28.275,17.2996789 C29.106,17.0836789 28.507,17.1586789 29.778,17.3576789 C30.285,17.3486789 30.789,17.2696789 31.275,17.1246789 C31.414,17.0846789 31.534,16.9966789 31.615,16.8756789 C31.602,16.7686789 31.602,16.6586789 31.615,16.5516789 C31.832,16.5726789 32.05,16.5356789 32.247,16.4436789 C33.46,16.2526789 32.82,15.6796789 33.394,15.0386789 C33.003,10.8756789 28.781,9.91967894 24.783,10.5346789 L24.759,10.5596789 Z M8.51,18.0396789 C9.073,17.9516789 9.629,17.8216789 10.173,17.6486789 C10.837,17.3156789 13.131,15.7036789 12.4,14.3986789 C12.176,11.6476789 8.86,13.9756789 7.413,13.0116789 C6.033,12.8286789 4.43,10.1186789 4.006,8.96367894 C3.944,8.72067894 3.831,8.49367894 3.673,8.29867894 C3.673,8.25767894 3.532,8.42367894 3.532,8.38167894 C3.116,8.87167894 3.183,9.29667894 3.125,10.4846789 L2.56,10.4846789 C2.571,10.8026789 2.472,11.1136789 2.277,11.3656789 L2.152,11.5816789 C1.795,11.4656789 1.978,11.6316789 1.828,11.3406789 C0.507,11.3736789 0.598,12.6946789 1.10134124e-13,13.4516789 C0.025,15.9196789 4.92,18.9706789 8.51,18.0396789 L8.51,18.0396789 Z M18.035,4.60067894 C18.152,3.66067894 18.035,2.29867894 18.75,1.65767894 C18.966,0.660678941 20.536,0.893678941 20.287,0.253678941 C20.138,-0.137321059 19.398,0.0126789412 19.099,0.120678941 C18.047,0.452678941 16.98,0.729678941 15.899,0.951678941 L14.852,0.651678941 C13.497,0.835678941 12.716,1.90767894 11.968,2.76367894 C11.336,3.47867894 10.488,5.25667894 11.137,6.27867894 C11.137,6.51167894 11.062,6.73567894 11.028,6.96967894 L12.558,9.21267894 C13.09,9.58667894 13.156,9.86967894 13.73,10.2436789 L14.079,10.7746789 C14.736,11.0596789 15.474,11.0976789 16.156,10.8836789 C18.36,11.0916789 18.126,6.61167894 18.824,5.67267894 C18.703,5.22867894 18.422,4.84767894 18.035,4.60067894 L18.035,4.60067894 Z\",\n id: \"Fill-103\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M39.5275,15.6539789 C39.5775,14.9149789 39.8425,13.1609789 41.7135,13.1609789 C43.5835,13.1609789 43.7325,14.7819789 43.7325,15.6539789 L43.7325,15.8029789 L39.5195,15.8029789 L39.5275,15.6539789 Z M42.3865,21.0229789 C40.9025,21.1159789 39.6245,19.9879789 39.5315,18.5039789 C39.5255,18.4179789 39.5245,18.3329789 39.5275,18.2469789 L39.5275,18.1059789 C39.5275,18.1059789 42.5275,18.0309789 43.5425,18.0309789 C45.2705,18.0309789 45.9855,18.0309789 47.3395,17.9899789 L47.3395,17.0249789 C47.3395,12.6709789 45.4955,10.5509789 41.6885,10.5509789 C39.9345,10.5509789 35.8705,11.2079789 35.8705,17.3159789 C35.8705,21.3809789 37.9315,23.8159789 41.5225,23.8159789 C43.5915,23.9249789 45.6395,23.3399789 47.3395,22.1529789 C47.2075,21.9459789 46.1515,20.0589789 46.0185,19.8509789 C44.9675,20.6269789 43.6925,21.0379789 42.3865,21.0229789 L42.3865,21.0229789 Z M65.6245,21.6219789 C65.6245,22.5519789 65.6735,23.5749789 65.6735,23.5749789 L62.2425,23.5749789 L62.2425,12.7869789 L62.2425,10.8249789 L70.3445,10.8249789 L70.3445,13.3189789 C70.3445,13.3189789 68.5335,13.2769789 67.9185,13.2769789 L65.6245,13.2769789 L65.6245,15.8029789 L69.8305,15.8029789 L69.8305,18.1559789 L65.6245,18.1559789 L65.6245,21.6219789 Z M53.6155,21.1809789 C55.5765,21.1809789 57.1645,20.5329789 57.1645,17.0749789 C57.1645,14.1329789 55.5765,13.1519789 53.6155,13.1519789 L52.5845,13.1519789 L52.5845,21.1809789 L53.6155,21.1809789 Z M54.6535,10.8169789 C58.2025,10.8169789 60.5955,13.0609789 60.5955,17.0669789 C60.5955,22.1119789 57.2715,23.5989789 53.8475,23.5989789 L49.2265,23.5989789 L49.2265,12.7869789 L49.2265,10.8249789 L54.6535,10.8169789 Z\",\n id: \"Fill-105\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgGroup35);\nexport default __webpack_public_path__ + \"static/media/Group 35.ffa3cf4ce2ea6f693a5732daca9f1acd.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgGroup37(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"138px\",\n height: \"60px\",\n viewBox: \"0 0 138 60\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"Group 37\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Final-design-tweak\",\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group-37\",\n transform: \"translate(0.000000, 0.383400)\",\n fill: \"#0AEDC2\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M85.2219,18.4444 C82.6589,18.4444 80.8029,20.3574 80.8029,23.1164 C80.8029,25.8754 82.6619,27.7864 85.2219,27.7864 C87.7849,27.7864 89.6399,25.8734 89.6399,23.1164 C89.6399,20.3594 87.7849,18.4444 85.2219,18.4444\",\n id: \"Fill-107\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M69.0578,44.67 C68.2188,44.703 67.5608,45.404 67.5808,46.244 L67.5808,46.263 C67.5478,47.104 68.2038,47.812 69.0428,47.844 L69.0578,47.844 C69.8538,47.852 70.5008,47.26 70.5008,46.277 L70.5008,46.271 L70.5008,46.255 C70.5008,45.288 69.8348,44.67 69.0578,44.67\",\n id: \"Fill-109\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M72.5969,47.0772 L72.5969,47.0932 C72.5969,47.6052 73.0719,47.9102 73.6219,47.9102 C74.3789,47.9102 74.9869,47.4592 74.9869,46.8072 L74.9869,46.8062 L74.9869,46.4272 C74.5989,46.3112 74.1969,46.2532 73.7909,46.2522 C73.0229,46.2522 72.5969,46.5862 72.5969,47.0772\",\n id: \"Fill-111\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M56.1867,44.6709 L56.1417,44.6709 C55.3097,44.6769 54.6387,45.3559 54.6436722,46.1889 C54.6436722,46.2099 54.6436722,46.2309 54.6457,46.2519 L54.6457,46.2699 C54.6167,47.1179 55.2807,47.8309 56.1297,47.8599 L56.1317,47.8599 L56.1567,47.8599 C56.9907,47.8589 57.6647,47.1809 57.6627,46.3469 L57.6627,46.3459 C57.6637,46.3259 57.6637,46.3059 57.6627,46.2849 L57.6627,46.2709 C57.6967,45.4209 57.0357,44.7049 56.1867,44.6709\",\n id: \"Fill-113\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n id: \"Fill-115\",\n points: \"16.9084 46.2852 19.4334 46.2852 18.1754 43.4652\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M115.715,30.128 C112.177,30.128 110.979,27.018 110.979,27.018 C111.88,27.638 113.261,28.2 114.384,28.2 C117.065,28.2 118.837,26.313 118.837,23.554 C118.837,20.794 116.979,18.848 114.33,18.848 C111.963,18.848 109.991,20.65 109.991,24.368 L109.991,36.49 L110.005,36.487 L110.005,36.541 L110.005,36.654 C109.947,37.292 109.412,37.78 108.771,37.78 C108.088,37.779 107.534,37.225 107.534999,36.541 L107.534999,23.925 C107.534999,19.476 110.379,16.488 114.351,16.488 C118.734,16.488 121.328,19.863 121.319023,23.863 C121.319023,27.638 118.398,30.128 115.715,30.128 L115.715,30.128 Z M105.767,24.242 C105.767,27.778 103.29,30.14 100,30.14 C96.71,30.14 94.236,27.786 94.236,24.242 L94.236,17.605 L94.236,17.491 C94.267,16.808 94.846,16.279 95.529,16.311 C96.212,16.342 96.74,16.921 96.71,17.605 L96.71,24.242 C96.71,26.325 98.226,27.786 100,27.786 C101.775,27.786 103.292,26.324 103.292,24.242 L103.292,17.603 C103.293,16.92 103.847,16.366 104.529,16.365 L104.533,16.367 C105.215,16.369 105.767,16.923 105.767,17.605 L105.767,24.242 Z M92.23,22.92 L92.23,23.116 C92.255,26.986 89.138,30.145 85.267,30.17 C81.397,30.195 78.238,27.078 78.213,23.207 L78.213,23.116 C78.152,19.293 81.2,16.145 85.024,16.083 L85.026,16.083 L85.222,16.083 L85.221,16.082 C89.044,16.035 92.182,19.096 92.23,22.918 L92.23,22.92 Z M83.546,48.443 C83.197,49.29 82.8,49.597 82.182,49.597 C81.88,49.601 81.582,49.532 81.313,49.397 L81.519,48.914 C81.716,49.019 81.937,49.068 82.159,49.062 C82.524,49.062 82.752,48.872 82.998,48.292 L81.139,44.215 L81.811,44.215 L83.301,47.625 L84.613,44.215 L85.262,44.215 L83.546,48.443 Z M80.489,48.312 L79.879,48.312 L79.879,45.921 C79.879,45.152 79.469,44.686 78.746,44.686 C78.08,44.673 77.53,45.202 77.518,45.867 C77.518,45.901 77.518,45.935 77.52,45.968 L77.52,48.312 L76.912,48.312 L76.912,44.219 L77.52,44.219 L77.52,44.932 C77.799,44.422 78.34,44.112 78.92,44.132 C79.912,44.132 80.489,44.796 80.489,45.771 L80.489,48.312 Z M76.417,18.633 C74.233,18.768 72.95,20.261 72.95,23.745 L72.95,29.095 C72.95,29.778 72.396,30.333 71.712,30.333 C71.027,30.333 70.474,29.778 70.474,29.095 L70.474,17.499 C70.474,16.848 71.001,16.319 71.652,16.319 C72.305,16.319 72.832,16.848 72.832,17.499 L72.832,18.086 L72.887,18.086 C73.707,16.802 74.818,16.286 76.4,16.255 L76.496,16.255 L76.494,16.266 C77.105,16.295 77.593,16.783 77.622,17.394 C77.652,18.047 77.148,18.602 76.494,18.633 L76.417,18.633 Z M75.581,48.312 L74.982,48.312 L74.982,47.701 C74.63,48.156 74.081,48.415 73.507,48.399 C72.74,48.398 71.979,47.963 71.979,47.124 L71.979,47.108 C71.979,46.23 72.692,45.771 73.73,45.771 C74.153,45.767 74.575,45.825 74.982,45.944 L74.982,45.819 C74.982,45.088 74.535,44.709 73.769,44.709 C73.338,44.712 72.914,44.812 72.527,45.001 L72.343,44.504 C72.806,44.274 73.316,44.155 73.832,44.155 C74.317,44.124 74.792,44.286 75.155,44.607 C75.456,44.933 75.611,45.368 75.581,45.812 L75.581,48.312 Z M71.126,46.271 C71.126,47.607 70.162,48.399 69.172,48.399 C68.533,48.4 67.941,48.07 67.606,47.527 L67.606,49.578 L66.995,49.578 L66.993,44.219 L67.606,44.219 L67.606,45.042 C67.932,44.484 68.527,44.139 69.172,44.132 C70.154,44.132 71.126,44.901 71.126,46.253 L71.126,46.271 Z M61.203,36.727 C59.688,36.705 58.186,36.44 56.755,35.939 L57.348,33.685 C58.585,34.024 59.824,34.362 61.094,34.362 C63.318,34.362 65.797,33.375 65.797,30.079 L65.797,24.392 C65.797,20.671 63.825,18.868 61.458,18.868 C58.81,18.868 56.951,20.813 56.951,23.574 C56.951,26.335 58.727,28.219 61.401,28.219 C62.529,28.219 63.908,27.655 64.809,27.037 C64.809,27.037 63.611,30.145 60.072,30.145 C57.392,30.145 54.473,27.655 54.473,23.883 C54.473,19.883 57.063,16.5 61.457,16.5 C65.43,16.5 68.274,19.487 68.274,23.937 L68.274,29.233 C68.274,34.306 65.176,36.727 61.203,36.727 L61.203,36.727 Z M65.633,48.319 L65.025,48.319 L65.025,45.929 C65.025,45.137 64.627,44.691 63.965,44.691 C63.346,44.691 62.831,45.15 62.831,45.958 L62.831,48.317 L62.231,48.317 L62.231,45.912 C62.231,45.144 61.826,44.691 61.177,44.691 C60.527,44.691 60.036,45.231 60.036,45.974 L60.036,48.31 L59.428,48.31 L59.427,44.219 L60.035,44.219 L60.035,44.908 C60.302,44.429 60.809,44.134 61.358,44.14 C61.921,44.12 62.44,44.442 62.673,44.955 C62.969,44.441 63.52,44.129 64.112,44.14 C65.055,44.14 65.633,44.773 65.633,45.785 L65.633,48.319 Z M58.2880284,46.271 C58.294,47.444 57.347,48.4 56.173,48.406 L56.143,48.406 C54.985,48.42 54.035,47.491 54.023,46.333 L54.023,46.332 C54.021,46.316 54.021,46.301 54.021,46.285 L54.021,46.271 C54.029,45.092 54.99,44.143 56.169,44.151 C57.329,44.159 58.271,45.092 58.2880284,46.252 L58.2880284,46.271 Z M51.113,48.4 C49.586,48.412 48.339,47.184 48.3269921,45.657 C48.3269921,45.623 48.3269921,45.59 48.328,45.558 L48.328,45.54 C48.287,44 49.502,42.718 51.043,42.677 L51.131,42.677 C51.944,42.652 52.729,42.972 53.293,43.557 L52.864,44.016 C52.414,43.531 51.785,43.253 51.123,43.246 C49.923,43.261 48.961,44.245 48.975,45.446 C48.976,45.47 48.977,45.494 48.978,45.519 L48.978,45.533 C48.978,46.815 49.905,47.823 51.123,47.823 C51.809,47.824 52.461,47.533 52.919,47.024 L53.328,47.426 C52.77,48.061 51.959,48.417 51.113,48.4 L51.113,48.4 Z M46.579,10.283 L46.579,29.054 C46.536,29.735 45.948,30.253 45.266,30.21 C44.645,30.17 44.15,29.675 44.11,29.054 L44.11,10.283 C44.11,9.6 44.662,9.04499847 45.346,9.04499847 C45.986,9.044 46.522,9.532 46.579,10.171 C46.581,10.208 46.581,10.246 46.579,10.283 L46.579,10.283 Z M44.713,47.564 C44.1,48.107 43.309,48.408 42.489,48.409 C40.756,48.406 39.671,47.14 39.671,45.558 L39.671,45.54 C39.625,44.006 40.831,42.724 42.365,42.678 C42.393,42.677 42.421,42.676 42.448,42.676 C43.207,42.644 43.948,42.907 44.516,43.412 L44.11,43.887 C43.654,43.46 43.049,43.232 42.425,43.254 C41.197,43.254 40.32,44.279 40.32,45.525 L40.32,45.541 C40.32,46.864 41.166,47.849 42.513,47.849 C43.092,47.847 43.653,47.651 44.11,47.295 L44.11,45.918 L42.425,45.918 L42.425,45.354 L44.713,45.354 L44.713,47.564 Z M38.651,29.057 L38.651,29.054 L38.651,17.46 C38.694,16.778 39.282,16.261 39.964,16.305 C40.585,16.344 41.08,16.839 41.12,17.46 L41.12,29.077 L41.117,29.054 C41.118,29.734 40.567,30.2880014 39.886,30.2880014 C39.204,30.289 38.652,29.738 38.651,29.057 L38.651,29.057 Z M38.605,46.825 C38.605,47.774 37.812,48.392 36.712,48.392 C35.871,48.405 35.059,48.092 34.445,47.517 L34.832,47.058 C35.334,47.565 36.02,47.848 36.733,47.842 C37.479,47.842 37.97,47.444 37.97,46.899 L37.97,46.884 C37.97,46.371 37.693,46.076 36.528,45.833 C35.246,45.553 34.67,45.143 34.67,44.232 L34.67,44.217 C34.67,43.346 35.439,42.704 36.49,42.704 C37.203,42.678 37.902,42.916 38.449,43.374 L38.085,43.856 C37.643,43.468 37.074,43.254 36.486,43.253 C35.765,43.253 35.307,43.65 35.307,44.149 L35.307,44.163 C35.307,44.676 35.591,44.979 36.809,45.24 C38.027,45.502 38.605,45.961 38.605,46.808 L38.605,46.825 Z M33.512,48.313 L29.473,48.313 L29.473,42.772 L33.474,42.772 L33.474,43.341 L30.091,43.341 L30.091,45.233 L33.117,45.233 L33.117,45.802 L30.091,45.802 L30.091,47.743 L33.512,47.743 L33.512,48.313 Z M29.05,14.23 C29.048,14.192 29.048,14.154 29.05,14.117 C29.081,13.434 29.66,12.905 30.344,12.937 C31.027,12.967 31.556,13.546 31.525,14.23 L31.525,16.365 L35.199,16.365 C35.852,16.365 36.381,16.895 36.381,17.548 C36.381,18.2 35.852,18.73 35.199,18.73 L31.525,18.73 L31.525,25.817 C31.525,27.084 32.109,27.515 33.375,27.515 L35.199,27.515 L35.204,27.507 C35.858,27.507 36.387,28.036 36.387,28.69 C36.387,29.343 35.858,29.872 35.204,29.872 L33.043,29.872 C30.512,29.872 29.05,28.187 29.05,25.512 L29.05,14.23 Z M26.908,24.242 C26.908,27.786 24.425,30.14 21.135,30.14 C17.844,30.14 15.37,27.786 15.37,24.242 L15.37,17.605 L15.37,17.491 C15.401,16.808 15.981,16.279 16.663,16.311 C17.347,16.342 17.875,16.921 17.844,17.605 L17.844,24.242 C17.844,26.325 19.361,27.786 21.136,27.786 C22.91,27.786 24.428,26.324 24.428,24.242 L24.428,17.603 C24.429,16.92 24.983,16.366 25.665,16.365 L25.675,16.367 C26.357,16.369 26.908,16.923 26.908,17.605 L26.908,24.242 Z M25.616,48.312 L25.004,48.312 L25.004,45.921 C25.004,45.152 24.591,44.686 23.87,44.686 C23.205,44.673 22.655,45.202 22.643,45.867 C22.643,45.901 22.643,45.935 22.645,45.968 L22.645,48.312 L22.036,48.312 L22.036,44.219 L22.647,44.219 L22.647,44.932 C22.926,44.422 23.467,44.112 24.047,44.132 C25.037,44.132 25.616,44.796 25.616,45.771 L25.616,48.312 Z M20.333,48.312 L19.686,46.848 L16.667,46.848 L16.011,48.312 L15.369,48.312 L17.896,42.732 L18.48,42.732 L21.011,48.312 L20.333,48.312 Z M49.572,17.46 C49.572,16.779 50.124,16.227 50.805,16.227 C51.486,16.227 52.037,16.777 52.039,17.458 L52.039,29.054 C52.038,29.734 51.486,30.286 50.804,30.2850014 C50.124,30.284 49.572,29.733 49.572,29.054 L49.572,17.46 Z M9.9475983e-14,58.605 L137.117,58.605 L137.117,2.48689958e-14 L9.9475983e-14,2.48689958e-14 L9.9475983e-14,58.605 Z\",\n id: \"Fill-117\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgGroup37);\nexport default __webpack_public_path__ + \"static/media/Group 37.d20c6ac869fc3698666982e914d307af.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgHeaderbackground(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 1111,\n height: 1110,\n viewBox: \"0 0 1111 1110\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M1111 555.5C1111 848.935 883.482 1089.23 595.232 1109.6C660.855 1049.46 702 963.033 702 867C702 845.779 699.991 825.028 696.153 804.926C784.341 755.911 844 661.91 844 554C844 395.494 715.282 267 556.5 267C397.718 267 269 395.494 269 554C269 554.259 269 554.517 269.001 554.776C161.53 590.556 78.7033 680.274 52.6291 791.82C18.8711 720.11 0 640.009 0 555.5C0 248.706 248.706 0 555.5 0C862.294 0 1111 248.706 1111 555.5Z\",\n fill: \"#2B11E1\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgHeaderbackground);\nexport default __webpack_public_path__ + \"static/media/header background .f156bc3fd48ec3658ea99aabfca8bfe3.svg\";\nexport { ForwardRef as ReactComponent };","var _ellipse, _g, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgGroup11(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 32,\n height: 31,\n viewBox: \"0 0 32 31\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ellipse || (_ellipse = /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 16,\n cy: 15.1784,\n rx: 16,\n ry: 15.1784,\n fill: \"#0AEDC2\"\n })), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.3461 14.5H22.6026C21.6396 14.5 20.859 15.2806 20.859 16.2436V17.9872C20.859 18.9501 21.6396 19.7308 22.6026 19.7308C23.5655 19.7308 24.3461 18.9501 24.3461 17.9872V14.5ZM24.3461 14.5C24.3461 10.1667 20.8333 6.65385 16.5 6.65385C12.1667 6.65385 8.65384 10.1667 8.65384 14.5V17.9872C8.65384 18.9501 9.43447 19.7308 10.3974 19.7308C11.3604 19.7308 12.141 18.9501 12.141 17.9872V16.2436C12.141 15.2806 11.3604 14.5 10.3974 14.5H8.65384\",\n stroke: \"#2B11E1\",\n strokeWidth: 2,\n strokeLinecap: \"round\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.3462 16.2436V19.7308C24.3462 21.4744 23.765 22.3462 22.6026 22.3462C21.4402 22.3462 19.9872 22.3462 18.2436 22.3462\",\n stroke: \"#2B11E1\",\n strokeWidth: 2,\n strokeLinecap: \"round\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 17,\n height: 17,\n fill: \"white\",\n transform: \"translate(8 6)\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgGroup11);\nexport default __webpack_public_path__ + \"static/media/Group 11.aa1bc29993d758f2bf7c86cc25c2b9b0.svg\";\nexport { ForwardRef as ReactComponent };","var _ellipse, _g, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgGroup12(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 32,\n height: 31,\n viewBox: \"0 0 32 31\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ellipse || (_ellipse = /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 15.6137,\n cy: 15.18,\n rx: 15.6137,\n ry: 15.18,\n fill: \"#0AEDC2\"\n })), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.5172 7.7619H9.27585C8.36173 7.7619 7.62068 8.67155 7.62068 9.79365V19.9524C7.62068 21.0745 8.36173 21.9841 9.27585 21.9841H22.5172C23.4314 21.9841 24.1724 21.0745 24.1724 19.9524V9.79365C24.1724 8.67155 23.4314 7.7619 22.5172 7.7619Z\",\n stroke: \"#2B11E1\",\n strokeWidth: 2,\n strokeLinecap: \"round\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.62068 16.9048H24.1724\",\n stroke: \"#2B11E1\",\n strokeWidth: 2,\n strokeLinecap: \"round\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 18,\n height: 16,\n fill: \"white\",\n transform: \"translate(7 7)\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgGroup12);\nexport default __webpack_public_path__ + \"static/media/Group 12.8c35e4c4907783a7a4a70a7304b9c2d7.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _rect, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgGroup14(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 74,\n height: 79,\n viewBox: \"0 0 74 79\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.7064 6.58334H61.3772C64.7233 6.58334 67.4306 9.54584 67.4306 13.1667L67.461 72.4167L55.2933 59.25H12.7064C9.36025 59.25 6.62252 56.2875 6.62252 52.6667V13.1667C6.62252 9.54584 9.36025 6.58334 12.7064 6.58334ZM33.9998 46.0833H40.0837V39.5H33.9998V46.0833ZM33.9998 32.9167H40.0837V19.75H33.9998V32.9167Z\",\n fill: \"#0AEDC2\"\n })), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 27.0863,\n y: 13.1667,\n width: 16.5923,\n height: 39.5,\n fill: \"#0AEDC2\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.1309 39.5C24.4315 49.375 32.5433 49.375 34.9769 49.375C37.4104 49.375 44.711 49.375 53.634 39.5\",\n stroke: \"#1D1554\",\n strokeWidth: 3\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgGroup14);\nexport default __webpack_public_path__ + \"static/media/Group 14.0089d4f6820197a615738c6af615786e.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgGroup2(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 33,\n height: 31,\n viewBox: \"0 0 33 31\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M26 16C26 17.6569 27.3431 19 29 19C30.6569 19 32 17.6569 32 16C32 14.3431 30.6569 13 29 13C27.3431 13 26 14.3431 26 16Z\",\n stroke: \"#0AEDC2\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17 30C18.6569 30 20 28.6569 20 27C20 25.3431 18.6569 24 17 24C15.3431 24 14 25.3431 14 27C14 28.6569 15.3431 30 17 30Z\",\n stroke: \"#0AEDC2\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.0246 8.01229C18.6815 8.00547 20.0191 6.65681 20.0123 4.99997C20.0055 3.34313 18.6568 2.00552 17 2.01234C15.3431 2.01915 14.0055 3.36781 14.0123 5.02465C14.0192 6.68149 15.3678 8.0191 17.0246 8.01229Z\",\n stroke: \"#0AEDC2\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2.01883 15.9999C2.00843 17.6568 3.34312 19.0083 4.99994 19.0187C6.65676 19.0291 8.00831 17.6944 8.01871 16.0376C8.02911 14.3808 6.69442 13.0292 5.0376 13.0188C3.38078 13.0084 2.02923 14.3431 2.01883 15.9999Z\",\n stroke: \"#0AEDC2\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25 16.0139L21 16\",\n stroke: \"#0AEDC2\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.0493 19V23\",\n stroke: \"#0AEDC2\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17 8L17.0026 12\",\n stroke: \"#0AEDC2\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.0187 16.0659L9.01874 16.0408\",\n stroke: \"#0AEDC2\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17 19C18.6569 19 20 17.6569 20 16C20 14.3431 18.6569 13 17 13C15.3431 13 14 14.3431 14 16C14 17.6569 15.3431 19 17 19Z\",\n stroke: \"#0AEDC2\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgGroup2);\nexport default __webpack_public_path__ + \"static/media/Group 2.a066da0fe77300fb7e151aafc15c1cf5.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgGroup3Copy3(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"24px\",\n height: \"23px\",\n viewBox: \"0 0 24 23\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"Group 3 Copy 3\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Final-design-tweak\",\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\",\n strokeLinecap: \"square\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Product-page\",\n transform: \"translate(-1174.000000, -2340.000000)\",\n stroke: \"#FDD800\",\n strokeWidth: 2\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group-2\",\n transform: \"translate(1176.000000, 2342.000000)\"\n }, /*#__PURE__*/React.createElement(\"polyline\", {\n id: \"Path\",\n points: \"16 -9.14823772e-14 19.6 3.6 16 7.2\"\n }), /*#__PURE__*/React.createElement(\"polyline\", {\n id: \"Path\",\n points: \"3.6 19.2 1.81854531e-13 15.6 3.6 12\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: 1,\n y1: 3.6,\n x2: 17.8,\n y2: 3.6,\n id: \"Path\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: 19,\n y1: 15.6,\n x2: 2.2,\n y2: 15.6,\n id: \"Path\"\n }))))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgGroup3Copy3);\nexport default __webpack_public_path__ + \"static/media/Group 3 Copy 3.ff30c577ede0ccde0b24ff01fe188868.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgGroup3(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"18px\",\n height: \"21px\",\n viewBox: \"0 0 18 21\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"Group 3\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Final-design-tweak\",\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Product-page\",\n transform: \"translate(-1176.000000, -1571.000000)\",\n stroke: \"#F04F45\",\n strokeWidth: 2\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group-3\",\n transform: \"translate(1177.000000, 1572.000000)\"\n }, /*#__PURE__*/React.createElement(\"line\", {\n x1: 8.5,\n y1: 0,\n x2: 8.5,\n y2: 13,\n id: \"Path\"\n }), /*#__PURE__*/React.createElement(\"polyline\", {\n id: \"Path\",\n points: \"3 9 8 14 13 9\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: 16,\n y1: 18.5,\n x2: 0,\n y2: 18.5,\n id: \"Path\"\n }))))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgGroup3);\nexport default __webpack_public_path__ + \"static/media/Group 3.a2c32815b4058c9bf98175123e2a0e6d.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgGroup(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"20px\",\n height: \"22px\",\n viewBox: \"0 0 20 22\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"Group\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Final-design-tweak\",\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\",\n strokeLinecap: \"square\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Product-page\",\n transform: \"translate(-632.000000, -2341.000000)\",\n stroke: \"#FF7B38\",\n strokeWidth: 2\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group\",\n transform: \"translate(633.000000, 2342.000000)\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle\",\n x: 4.36363636,\n y: 4.44444444,\n width: 13.0909091,\n height: 15.5555556\n }), /*#__PURE__*/React.createElement(\"polyline\", {\n id: \"Path\",\n points: \"13.0909091 0 0 0 0 15.5555556\"\n }))))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgGroup);\nexport default __webpack_public_path__ + \"static/media/Group.2567cea92466843d0d0eb189296a97b3.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgPath(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"20px\",\n height: \"12px\",\n viewBox: \"0 0 20 12\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"Path\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Final-design-tweak\",\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Product-page\",\n transform: \"translate(-632.000000, -1576.000000)\",\n fill: \"#0AEDC2\",\n fillRule: \"nonzero\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M644.105573,1576.55279 C644.467276,1575.82938 645.475823,1575.82232 645.863309,1576.49433 L645.919145,1576.60608 L648.659,1583 L651,1583 C651.512836,1583 651.935507,1583.38604 651.993272,1583.88338 L652,1584 C652,1584.51284 651.61396,1584.93551 651.116621,1584.99327 L651,1585 L648,1585 C647.639975,1585 647.311126,1584.8069 647.134082,1584.50024 L647.080855,1584.39392 L644.93,1579.376 L640.894427,1587.44721 C640.545299,1588.14547 639.582921,1588.18222 639.16924,1587.55746 L639.105573,1587.44721 L636.876,1582.988 L635.83205,1584.5547 C635.669768,1584.79812 635.41043,1584.95649 635.124141,1584.99228 L635,1585 L633,1585 C632.447715,1585 632,1584.55228 632,1584 C632,1583.48716 632.38604,1583.06449 632.883379,1583.00673 L633,1583 L634.464,1583 L636.16795,1580.4453 C636.570199,1579.84193 637.446332,1579.86156 637.83171,1580.44415 L637.894427,1580.55279 L640,1584.763 L644.105573,1576.55279 Z\",\n id: \"Path\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgPath);\nexport default __webpack_public_path__ + \"static/media/Path.a6ed13fea7c8bc01dd60f21a91b97f85.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgVector1(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 19,\n height: 20,\n viewBox: \"0 0 19 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.5 7V1H18.5V7M12.5 7H6.5V12H1V16V19H12.5M12.5 7H18.5M12.5 7V19M18.5 7V19H12.5\",\n stroke: \"#0AEDC2\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgVector1);\nexport default __webpack_public_path__ + \"static/media/Vector 1.8919e6154d62b5fac9090566ab8a8270.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgArrow(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 8,\n height: 14,\n viewBox: \"0 0 8 14\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1 13L7 7L1 1\",\n stroke: \"#0AEDC2\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgArrow);\nexport default __webpack_public_path__ + \"static/media/arrow.0c2db2a610ff456199928c1ac9d51f34.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgTarget(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 22C17.5229 22 22 17.5229 22 12C22 6.47715 17.5229 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5229 6.47715 22 12 22Z\",\n stroke: \"#0AEDC2\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 18C15.3137 18 18 15.3137 18 12C18 8.68629 15.3137 6 12 6C8.68629 6 6 8.68629 6 12C6 15.3137 8.68629 18 12 18Z\",\n stroke: \"#0AEDC2\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgTarget);\nexport default __webpack_public_path__ + \"static/media/target.f15f84adef1d648b462958e245cbcb0e.svg\";\nexport { ForwardRef as ReactComponent };","var _defs, _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgGroup156(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"594px\",\n height: \"360px\",\n viewBox: \"0 0 594 360\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"Group 156\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"polygon\", {\n id: \"path-1\",\n points: \"0.6647 0.6 135.4547 0.6 135.4547 77.8304 0.6647 77.8304\"\n }))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Final-design-tweak\",\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Product-page\",\n transform: \"translate(-717.000000, -216.000000)\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group-156\",\n transform: \"translate(717.000000, 216.000000)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M405.2491,167.9917 C405.2491,176.9477 397.9891,184.2077 389.0331,184.2077 C380.0771,184.2077 372.8161,176.9477 372.8161,167.9917 C372.8161,159.0357 380.0771,151.7757 389.0331,151.7757 C397.9891,151.7757 405.2491,159.0357 405.2491,167.9917\",\n id: \"Fill-1\",\n fill: \"#CFFFF6\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M451.067,109.563 C451.067,113.265 448.066,116.265 444.365,116.265 C440.664,116.265 437.663,113.265 437.663,109.563 C437.663,105.862 440.664,102.862 444.365,102.862 C448.066,102.862 451.067,105.862 451.067,109.563\",\n id: \"Fill-3\",\n fill: \"#0AEDC2\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M211.8614,28.6812 L199.5104,51.6932 C199.0384,52.4392 198.4564,53.0692 197.7924,53.5702 C198.3984,50.6972 197.2034,47.6262 194.5754,45.9652 C193.3754,45.2082 192.0414,44.8472 190.7184,44.8472 C189.1394,44.8472 187.5834,45.3662 186.3134,46.3382 C186.4884,45.5172 186.8084,44.7192 187.2804,43.9672 L199.6314,20.9492 C201.0124,18.7702 203.3544,17.5812 205.7554,17.5812 C207.0774,17.5812 208.4124,17.9432 209.6124,18.7002 C212.9914,20.8322 213.9994,25.3012 211.8614,28.6812\",\n id: \"Fill-5\",\n fill: \"#EFACAB\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M335.4928,78.023 L313.6868,79.698 C309.7578,80 306.3288,77.06 306.0268,73.131 C305.7248,69.203 308.6648,65.774 312.5938,65.472 L334.3998,63.797 C338.3278,63.496 341.7578,66.435 342.0588,70.364 C342.3608,74.292 339.4208,77.721 335.4928,78.023\",\n id: \"Fill-7\",\n fill: \"#EFACAB\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M144.5973,109.563 C140.6263,109.563 137.4063,106.349 137.4063,102.373 C137.4063,98.402 140.6263,95.182 144.5973,95.182 C148.5673,95.182 151.7873,98.402 151.7873,102.373 C151.7873,106.349 148.5673,109.563 144.5973,109.563 M144.9033,87.889 C136.9023,87.889 130.4133,94.372 130.4133,102.373 C130.4133,110.373 136.9023,116.862 144.9033,116.862 C152.9033,116.862 159.3863,110.373 159.3863,102.373 C159.3863,94.372 152.9033,87.889 144.9033,87.889\",\n id: \"Fill-9\",\n fill: \"#FDD800\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M192.484,126.2349 L188.514,142.8119 C188.253,143.9049 189.273,144.8729 190.351,144.5519 L206.692,139.7019 C207.769,139.3809 208.097,138.0149 207.281,137.2419 L194.909,125.5149 C194.093,124.7419 192.746,125.1409 192.484,126.2349\",\n id: \"Fill-11\",\n fill: \"#FCEA90\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M201.8888,136.8442 L197.9188,153.4202 C197.6568,154.5142 198.6768,155.4812 199.7548,155.1602 L216.0958,150.3112 C217.1738,149.9902 217.5008,148.6232 216.6848,147.8502 L204.3138,136.1232 C203.4978,135.3502 202.1508,135.7502 201.8888,136.8442\",\n id: \"Fill-13\",\n fill: \"#FDD800\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M41.4386,164.0698 L41.4216,164.0698 C41.5396,163.4668 41.6056,162.8468 41.6056,162.2118 C41.6056,156.8758 37.2396,152.5098 31.9036,152.5098 L18.9026,152.5098 C13.8796,152.5098 9.7186,156.3808 9.2486,161.2858 C5.3626,162.5528 2.5336,166.2148 2.5336,170.5078 C2.5336,175.8438 6.8986,180.2108 12.2346,180.2108 L21.2096,180.2108 C22.9896,182.2058 25.5696,183.4728 28.4376,183.4728 L41.4386,183.4728 C46.7746,183.4728 51.1406,179.1078 51.1406,173.7718 C51.1406,168.4358 46.7746,164.0698 41.4386,164.0698\",\n id: \"Fill-15\",\n fill: \"#FDD800\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M358.4747,46.1665 L321.0497,49.0415 C314.3077,49.5595 308.4217,44.5145 307.9037,37.7715 C307.3867,31.0295 312.4317,25.1445 319.1737,24.6265 L356.5997,21.7515 C363.3407,21.2325 369.2267,26.2785 369.7447,33.0205 C370.2627,39.7635 365.2167,45.6485 358.4747,46.1665 Z\",\n id: \"Stroke-17\",\n stroke: \"#EFACAB\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M329.1436,36.9439 C329.1436,41.7869 325.2176,45.7129 320.3746,45.7129 C315.5326,45.7129 311.6066,41.7869 311.6066,36.9439 C311.6066,32.1009 315.5326,28.1749 320.3746,28.1749 C325.2176,28.1749 329.1436,32.1009 329.1436,36.9439\",\n id: \"Fill-19\",\n fill: \"#F04F45\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M288.7467,45.2232 C288.7467,59.4032 277.2507,70.8982 263.0707,70.8982 C248.8907,70.8982 237.3947,59.4032 237.3947,45.2232 C237.3947,31.0422 248.8907,19.5472 263.0707,19.5472 C277.2507,19.5472 288.7467,31.0422 288.7467,45.2232\",\n id: \"Fill-21\",\n fill: \"#F04F45\"\n }), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group-29\",\n transform: \"translate(160.000000, 59.400000)\",\n fill: \"#F04F45\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M154.1754,129.2646 L152.6254,201.5836 L152.6254,201.8446 L117.1554,201.8446 L112.0554,183.3146 L98.8054,135.1446 L143.9154,132.1146 C147.1854,131.8946 150.1754,130.8046 152.6754,129.1046 L154.1754,129.2646 Z\",\n id: \"Fill-23\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M66.5055,125.1444 L57.0855,126.6844 C56.3755,126.8044 55.6755,126.8544 54.9855,126.8544 C49.0755,126.8544 43.7955,122.7944 42.4155,116.8644 C40.8555,110.1444 44.8655,103.3844 51.5055,101.5144 L63.5655,98.1234 L69.3055,96.5144 L73.0455,124.0744 L66.5055,125.1444 Z\",\n id: \"Fill-25\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.1559,13.8642 C0.1559,10.2242 1.6259,6.6242 4.4459,4.0052 C9.6559,-0.8458 17.7459,-0.7958 22.9059,4.1142 L32.7959,15.5242 L10.2359,34.1242 L2.1359,20.8852 C0.7959,18.7042 0.1559,16.2742 0.1559,13.8642\",\n id: \"Fill-27\"\n })), /*#__PURE__*/React.createElement(\"polyline\", {\n id: \"Stroke-30\",\n stroke: \"#F04F45\",\n points: \"210.4156 261.2446 215.3956 261.2446 258.8056 261.2446 277.1556 261.2446 312.6256 261.2446 328.2556 261.2446\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M226.5055,184.5142 L226.5055,184.5442 C226.5255,191.8042 232.0955,195.9542 239.0455,196.2442 C239.9155,196.2852 240.8155,196.264288 241.7255,196.1742 L258.8055,194.5442 L303.9155,191.5142 C307.1855,191.2942 310.1755,190.2042 312.6755,188.5042 C318.4155,184.6242 321.6555,177.5142 320.1355,170.1642 L316.3555,141.9742 L316.3455,141.9342\",\n id: \"Stroke-32\",\n stroke: \"#F04F45\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: 229.3058,\n y1: 155.9146,\n x2: 233.0458,\n y2: 183.4746,\n id: \"Stroke-34\",\n stroke: \"#F04F45\"\n }), /*#__PURE__*/React.createElement(\"polyline\", {\n id: \"Stroke-36\",\n stroke: \"#F04F45\",\n points: \"277.1559 261.2446 272.0559 242.7146 258.8059 194.5446\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: 314.1754,\n y1: 188.6646,\n x2: 312.6254,\n y2: 260.9836,\n id: \"Stroke-38\",\n stroke: \"#F04F45\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: 215.3956,\n y1: 260.9839,\n x2: 239.0456,\n y2: 196.2639,\n id: \"Stroke-40\",\n stroke: \"#F04F45\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: 272.0558,\n y1: 242.7144,\n x2: 258.8058,\n y2: 260.9844,\n id: \"Stroke-42\",\n stroke: \"#F04F45\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M247.4557,92.4644 L211.1357,87.8544 C206.2257,87.4644 201.6657,85.1544 198.4457,81.4344 L192.7957,74.9244 L182.9057,63.5144 C177.7457,58.6044 169.6557,58.5544 164.4457,63.4044 C161.6257,66.0244 160.1557,69.6244 160.1557,73.2644 C160.1557,75.6744 160.7957,78.1044 162.1357,80.2844 L170.2357,93.5244 L177.4757,105.3644 C179.6757,108.9644 182.9357,111.8044 186.8057,113.4944 L225.5557,129.3344 L225.9457,129.4944\",\n id: \"Stroke-44\",\n stroke: \"#F04F45\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: 170.2354,\n y1: 93.5239,\n x2: 192.7954,\n y2: 74.9239,\n id: \"Stroke-46\",\n stroke: \"#F04F45\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M277.1559,126.9448 L270.2159,140.6438 C268.7959,143.4548 266.2559,145.5448 263.2259,146.3938 L229.3059,155.9148 L223.5659,157.5238 L211.5059,160.9148 C204.8659,162.7848 200.8559,169.5448 202.4159,176.2638 C203.7959,182.1948 209.0759,186.2548 214.9859,186.2548 C215.6759,186.2548 216.3759,186.2048 217.0859,186.0848 L226.5059,184.5448 L233.0459,183.4738 L284.9159,174.9738 C302.7159,172.7338 314.1359,158.7048 316.3559,141.9738 C317.0459,136.7238 316.8359,131.2148 315.6359,125.7238 C309.6559,98.3938 299.5659,83.7148 274.9959,81.6148 C266.8759,80.9238 256.6659,84.6648 247.4659,92.4738 C237.9259,100.5448 229.4659,112.9838 225.5559,129.3348 C223.5359,137.7048 222.7159,147.1038 223.5459,157.4648\",\n id: \"Stroke-48\",\n stroke: \"#F04F45\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M240.5494,24.1743 C240.5494,24.1743 232.7314,32.2953 240.9574,32.1773 C249.1834,32.0583 270.5824,34.3613 270.5824,45.2233 C270.5824,56.0843 273.5064,53.4563 273.5064,53.4563 C273.5064,53.4563 272.8074,37.4033 278.8274,39.2363 C284.8484,41.0683 288.7464,40.9553 288.7464,40.9553 C288.7464,40.9553 292.3564,1.2743 240.5494,24.1743\",\n id: \"Fill-50\",\n fill: \"#EFACAB\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M144.3951,51.2212 C137.7751,51.2212 132.4051,45.8612 132.4051,39.2312 C132.4051,32.6112 137.7751,27.2422 144.3951,27.2422 C151.0151,27.2422 156.3851,32.6112 156.3851,39.2312 C156.3851,45.8612 151.0151,51.2212 144.3951,51.2212 M144.9051,15.0812 C131.5651,15.0812 120.7451,25.8912 120.7451,39.2312 C120.7451,52.5712 131.5651,63.3912 144.9051,63.3912 C158.2451,63.3912 169.0551,52.5712 169.0551,39.2312 C169.0551,25.8912 158.2451,15.0812 144.9051,15.0812\",\n id: \"Fill-52\",\n fill: \"#F04F45\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M141.3844,151.1187 C141.3844,164.7807 130.3094,175.8557 116.6474,175.8557 C102.9854,175.8557 91.9094,164.7807 91.9094,151.1187 C91.9094,137.4567 102.9854,126.3817 116.6474,126.3817 C130.3094,126.3817 141.3844,137.4567 141.3844,151.1187\",\n id: \"Fill-54\",\n fill: \"#FDD800\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M112.8394,127.7046 C112.8394,127.7046 111.0524,164.4416 144.5144,175.3046 C173.8474,184.8266 192.5704,144.2816 164.6964,135.9756 C136.8214,127.6696 109.2124,100.6306 98.7324,134.0696 L112.8394,127.7046 Z\",\n id: \"Fill-56\",\n fill: \"#FCEA90\"\n }), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group-64\",\n transform: \"translate(27.000000, 110.400000)\",\n fill: \"#FDD800\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1.086,185.3573 C-1.444,126.1973 24.866,63.8473 77.626,108.6873 L74.826,114.3673 C20.076,86.6973 26.346,164.6763 27.806,217.3773 L10.826,204.1973 C4.976,199.6473 1.396,192.7563 1.086,185.3573\",\n id: \"Fill-58\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M60.6861,9.3075 L68.3061,29.5065 L38.3061,39.1475 L34.3261,16.5275 C34.1861,15.7275 34.1161,14.9265 34.1161,14.1375 C34.1161,8.3675 37.7661,3.0975 43.3861,1.1665 C50.3961,-1.2435 58.0661,2.3575 60.6861,9.3075\",\n id: \"Fill-60\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M150.5362,159.8876 L141.6962,163.7066 L124.5062,171.1376 C109.4962,177.6266 97.5262,157.3876 110.4462,147.3576 L114.7662,143.9966 L134.5562,128.6266 L150.5362,159.8876 Z\",\n id: \"Fill-62\"\n })), /*#__PURE__*/React.createElement(\"polyline\", {\n id: \"Stroke-65\",\n stroke: \"#FDD800\",\n points: \"161.2862 238.5073 161.5562 239.0273 177.5362 270.2873 177.5362 270.2973\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M197.5362,272.5972 C196.6762,267.6372 195.6162,262.4772 195.6162,262.4772\",\n id: \"Stroke-67\",\n stroke: \"#FDD800\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M94.4762,340.8169 C95.7262,339.2169 96.7762,337.4269 97.5762,335.4469 L111.6362,300.6169 C111.6362,300.6169 131.4362,324.5069 151.9362,337.3669\",\n id: \"Stroke-69\",\n stroke: \"#FDD800\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M141.7662,254.397 C125.7562,239.757 112.6062,230.217 101.8262,224.767 C47.0762,197.097 53.3462,275.077 54.8062,327.777 C54.9462,332.607 56.6462,337.147 59.5062,340.807\",\n id: \"Stroke-71\",\n stroke: \"#FDD800\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M177.2359,280.3569 C175.3959,279.0269 170.8359,275.6969 168.6959,274.1069\",\n id: \"Stroke-73\",\n stroke: \"#FDD800\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M101.6461,225.1372 L101.8261,224.7672 L104.6261,219.0872 L106.4561,215.3572 L112.5561,202.9672 C117.7661,193.5072 126.5161,186.8072 136.5861,184.0672 C140.7361,182.9272 145.1161,182.4772 149.5561,182.7772 C156.5161,183.2572 163.2261,185.1572 169.2861,188.3072 C175.3461,191.4572 180.7761,195.8372 185.1761,201.2572 L212.7861,235.2472 C218.7061,242.3472 216.3561,253.1272 208.0161,257.1162 L195.6161,262.4772 L177.5361,270.2872 L168.6961,274.1072 L151.5061,281.5372 C136.4961,288.0272 124.5261,267.7872 137.4461,257.7572 L141.7661,254.3972 L161.5561,239.0272 L171.8861,231.0072\",\n id: \"Stroke-75\",\n stroke: \"#FDD800\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M136.586,184.0669 L106.746,164.8069 C104.986,163.6679 103.636,161.9869 102.896,160.0269 L95.306,139.9069 L87.686,119.7079 C85.066,112.7569 77.396,109.1569 70.386,111.5669 C64.766,113.4979 61.116,118.7669 61.116,124.5379 C61.116,125.3269 61.186,126.1279 61.326,126.9269 L65.306,149.5469 L70.226,177.5269 C70.816,180.8669 72.486,183.9269 74.976,186.2369 L106.456,215.3569\",\n id: \"Stroke-77\",\n stroke: \"#FDD800\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: 65.3062,\n y1: 149.5474,\n x2: 95.3062,\n y2: 139.9064,\n id: \"Stroke-79\",\n stroke: \"#FDD800\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M104.6261,219.0874 C51.8661,174.2474 25.5561,236.5974 28.0861,295.7574 C28.3961,303.1564 31.9761,310.0474 37.8261,314.5974 L54.8061,327.7764\",\n id: \"Stroke-81\",\n stroke: \"#FDD800\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M46.9664,76.9028 L1.2484,71.7808 L1.1744,71.7728 L0.9424,71.7468 L20.6154,104.9028 C21.0804,105.6878 22.1084,105.9238 22.8684,105.4218 L32.7264,98.9068 L44.9464,90.8318\",\n id: \"Stroke-83\",\n stroke: \"#FDD800\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M53.7267,85.1646 L62.2927,79.6336 C62.6917,79.3746 62.5477,78.7566 62.0737,78.7036 L46.9667,76.9026\",\n id: \"Stroke-85\",\n stroke: \"#FDD800\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: 51.339,\n y1: 113.9204,\n x2: 44.947,\n y2: 90.8314,\n id: \"Stroke-87\",\n stroke: \"#FDD800\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M52.2857,84.7974 L53.7267,85.1644 L51.6317,113.5054 C51.6157,113.7154 51.5007,113.8804 51.3437,113.9734 C51.1397,114.0974 50.8617,114.0974 50.6497,113.9204 L32.7257,98.9064 L32.7067,98.8914\",\n id: \"Stroke-89\",\n stroke: \"#FDD800\"\n }), /*#__PURE__*/React.createElement(\"polyline\", {\n id: \"Stroke-91\",\n stroke: \"#FDD800\",\n points: \"42.9381 89.9605 1.1741 71.7735 1.1141 71.7465 1.2491 71.7805 52.2861 84.7975\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: 44.9469,\n y1: 90.8315,\n x2: 42.9379,\n y2: 89.9605,\n id: \"Stroke-93\",\n stroke: \"#FDD800\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n id: \"Stroke-95\",\n stroke: \"#0AEDC2\",\n points: \"555.7003 119.9878 483.1493 119.9878 519.8743 67.5388 592.4253 67.5388\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n id: \"Fill-97\",\n fill: \"#0AEDC2\",\n points: \"504.7379 156.3687 430.6109 156.3687 468.1339 102.7787 542.2619 102.7787\"\n }), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group-101\",\n transform: \"translate(377.000000, 0.400000)\"\n }, /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask-2\",\n fill: \"white\"\n }, /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#path-1\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Clip-100\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M135.4547,18.0194 L135.4547,22.5304 C135.4547,32.1504 127.6557,39.9504 118.0347,39.9504 L109.9747,39.9504 C100.3537,39.9504 92.5547,47.7484 92.5547,57.3704 C92.5547,68.6694 83.3937,77.8304 72.0947,77.8304 L21.1247,77.8304 C9.8247,77.8304 0.6647,68.6694 0.6647,57.3704 L0.6647,52.8494 C0.6647,41.5494 9.8247,32.3894 21.1247,32.3894 L21.3867,32.3894 C31.9407,32.3894 39.9547,23.0904 38.6417,12.6194 C37.9627,7.2044 40.7097,3.5724 46.4727,1.5094 C48.2537,0.8734 50.1467,0.5994 52.0377,0.5994 L118.0347,0.5994 C127.6557,0.5994 135.4547,8.3994 135.4547,18.0194\",\n id: \"Fill-99\",\n fill: \"#CFFFF6\",\n mask: \"url(#mask-2)\"\n })), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M420.2286,78.23 C420.2286,92.41 408.7326,103.905 394.5526,103.905 C380.3726,103.905 368.8766,92.41 368.8766,78.23 C368.8766,64.049 380.3726,52.554 394.5526,52.554 C408.7326,52.554 420.2286,64.049 420.2286,78.23\",\n id: \"Fill-102\",\n fill: \"#0AEDC2\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: 268.648,\n y1: 186.0083,\n x2: 509.418,\n y2: 186.0083,\n id: \"Stroke-104\",\n stroke: \"#0AEDC2\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M347.0885,186.0083 L325.5725,235.9043 C320.3175,248.0903 329.2535,261.6753 342.5245,261.6753\",\n id: \"Stroke-106\",\n stroke: \"#0AEDC2\"\n }), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group-112\",\n transform: \"translate(227.000000, 133.400000)\"\n }, /*#__PURE__*/React.createElement(\"polygon\", {\n id: \"Fill-108\",\n fill: \"#CFFFF6\",\n points: \"98.1202 0.498 139.3502 53.208 41.6502 53.208 0.4202 0.498\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M198.38,29.6278 L198.38,52.6068 L177.33,52.6068 C171.93,52.6068 167.55,48.2278 167.55,42.8278 C167.55,39.1878 169.03,35.8878 171.42,33.4978 C173.81,31.1068 177.11,29.6278 180.75,29.6278 L198.38,29.6278 Z\",\n id: \"Fill-110\",\n fill: \"#0AEDC2\"\n })), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M330.5899,140.2876 L351.2299,129.2476 C379.1899,116.0076 404.2699,118.1476 427.6599,129.2476 C459.2899,145.3576 470.8999,160.5876 477.8999,175.9976 C480.0399,180.6976 478.1199,186.0076 472.9599,186.0076 L425.3799,186.0076 L404.3299,186.0076 C398.9299,186.0076 394.5499,181.6276 394.5499,176.2276 C394.5499,172.5876 396.0299,169.2876 398.4199,166.8976 C400.8099,164.5076 404.1099,163.0276 407.7499,163.0276 L425.3799,163.0276 L437.7999,163.0276\",\n id: \"Stroke-113\",\n stroke: \"#0AEDC2\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: 425.38,\n y1: 163.0278,\n x2: 425.38,\n y2: 186.0068,\n id: \"Stroke-115\",\n stroke: \"#0AEDC2\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: 430.0782,\n y1: 186.0083,\n x2: 435.4472,\n y2: 206.2703,\n id: \"Stroke-117\",\n stroke: \"#0AEDC2\"\n }), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group-129\",\n transform: \"translate(183.000000, 188.400000)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M50.0937,35.7062 L45.6437,38.1352 C43.6537,39.1452 41.7337,38.9752 39.5737,37.7352 C38.6337,37.1262 37.3037,37.0062 35.5337,37.4662 C31.8737,38.6562 27.4137,39.4062 22.4537,39.8852 C18.6537,40.0552 15.5337,39.5952 12.8837,38.6762 C9.2637,38.5652 5.5737,39.8152 1.8437,41.8762 L1.7937,41.5462 L1.7937,41.5462 C0.774,34.806 -0.386,28.176 1.124,19.546 L1.124,19.536 C2.094,17.105 3.624,15.406 5.874,14.676 C11.494,14.185 17.264,13.726 18.814,12.386 C23.514,7.046 28.504,3.976 33.564,1.466 C38.014,0.025 41.854,0.466 46.984,3.346 C46.994,3.346 46.994,3.355 47.004,3.355 C51.364,4.266 53.964,4.286 54.684,3.355 C60.284,2.105 63.534,7.435 66.004,14.935 L66.004,14.956 C66.064,22.656 64.044,24.855 61.164,24.786 L61.164,24.796 C63.464,27.666 64.894,30.096 64.384,31.536 C63.994,32.246 62.764,32.886 61.124,33.476 C59.484,34.076 57.434,34.645 55.424,35.206 L53.874,35.445 C53.764,35.326 53.624,35.226 53.454,35.156 C52.8637,34.8952 51.8737,34.9752 50.0937,35.7062 Z\",\n id: \"Combined-Shape\",\n fill: \"#FFBFB0\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M55.0636,152.4062 C54.1336,155.5062 52.1136,158.1162 49.4636,159.9352 C46.2536,162.1352 42.1036,163.1852 37.7636,162.5762 L6.2336,158.0252 L6.2536,157.8852 C6.5336,157.9452 6.7136,157.9962 6.8036,158.0252 L7.6036,152.4062 L10.8736,129.4662 L41.8536,133.8052 C50.5236,135.0362 56.6336,142.4752 55.5036,150.4162 C55.4036,151.0952 55.2636,151.7652 55.0636,152.4062\",\n id: \"Fill-121\",\n fill: \"#FF7B38\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M53.4537,35.1562 C56.2337,39.5762 57.8337,44.7962 57.8337,50.3852 C57.8337,66.2462 44.9837,79.0952 29.1237,79.0952 C13.2637,79.0952 0.4037,66.2462 0.4037,50.3852 C0.4037,47.2962 0.8937,44.3262 1.7937,41.5462 C1.8137,41.6562 1.8237,41.7652 1.8437,41.8762 C5.5737,39.8152 9.2637,38.5652 12.8837,38.6762 C15.5337,39.5952 18.6537,40.0552 22.4537,39.8852 C27.4137,39.4062 31.8737,38.6562 35.5337,37.4662 C37.3037,37.0062 38.6337,37.1262 39.5737,37.7352 C41.7337,38.9752 43.6537,39.1452 45.6437,38.1352 L50.0937,35.7062 C51.8737,34.9752 52.8637,34.8952 53.4537,35.1562\",\n id: \"Fill-123\",\n fill: \"#FF7B38\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.6036,152.4062 L6.8036,158.0252 C6.7136,157.9962 6.5336,157.9452 6.2536,157.8852 L7.0336,152.4062 L10.3136,129.3852 L10.8736,129.4662 L7.6036,152.4062 Z\",\n id: \"Fill-127\",\n fill: \"#FF7B38\"\n })), /*#__PURE__*/React.createElement(\"line\", {\n x1: 308.4039,\n y1: 340.8062,\n x2: 313.2639,\n y2: 340.8062,\n id: \"Stroke-130\",\n stroke: \"#FF7B38\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: 265.0836,\n y1: 308.4653,\n x2: 254.3536,\n y2: 340.8063,\n id: \"Stroke-132\",\n stroke: \"#FF7B38\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M370.1837,279.0357 C372.1837,273.4157 368.0137,267.4957 362.0337,267.4957 L290.3137,267.4957 C283.3637,267.4957 277.1937,271.9557 275.0037,278.5457 L268.2737,298.8457\",\n id: \"Stroke-134\",\n stroke: \"#FF7B38\"\n }), /*#__PURE__*/React.createElement(\"polyline\", {\n id: \"Stroke-136\",\n stroke: \"#FF7B38\",\n points: \"254.3438 340.8062 254.3538 340.8062 308.4038 340.8062\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: 10.3639,\n y1: 340.8062,\n x2: 151.7439,\n y2: 340.8062,\n id: \"Stroke-138\",\n stroke: \"#FF7B38\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M170.6939,314.4858 L180.3539,315.8658 L193.8839,317.7858 L193.8739,317.8658 L190.6039,340.8058 L189.8039,346.4248 C189.7139,346.3958 189.5339,346.3448 189.2539,346.2858 C184.5439,345.3258 153.6839,341.2658 151.7439,340.8058 C152.4939,324.1348 155.4139,308.5558 163.4739,295.5758 C163.5639,295.4358 163.6739,295.3058 163.7739,295.1658 C171.9839,283.0948 180.4139,276.7958 188.9039,274.2558 C189.0639,274.2058 189.2239,274.1058 189.3939,274.0758 C203.9239,270.9558 213.8839,270.8958 228.8939,275.6058 C236.9239,278.1258 244.6539,281.5058 251.9639,285.6748 C261.5939,291.1558 266.2739,295.4558 268.2739,298.8448 L265.0839,308.4648 L254.3439,340.8058 L238.6339,340.8058 L238.0639,340.8058 L235.4039,340.8058\",\n id: \"Stroke-140\",\n stroke: \"#FF7B38\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: 359.6637,\n y1: 340.5562,\n x2: 490.2637,\n y2: 340.5562,\n id: \"Stroke-142\",\n stroke: \"#FF7B38\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M349.1905,351.5425 L318.8315,351.5425 C315.7675,351.5425 313.2595,349.0355 313.2595,345.9715 L313.2595,315.6115 C313.2595,312.5475 315.7675,310.0395 318.8315,310.0395 L349.1905,310.0395 C352.2545,310.0395 354.7625,312.5475 354.7625,315.6115 L354.7625,345.9715 C354.7625,349.0355 352.2545,351.5425 349.1905,351.5425\",\n id: \"Fill-144\",\n fill: \"#FFD6CA\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M355.2398,358.8999 L331.9468,358.8999 C329.5508,358.8999 327.5908,356.9399 327.5908,354.5439 L327.5908,331.2509 C327.5908,328.8549 329.5508,326.8939 331.9468,326.8939 L355.2398,326.8939 C357.6358,326.8939 359.5958,328.8549 359.5958,331.2509 L359.5958,354.5439 C359.5958,356.9399 357.6358,358.8999 355.2398,358.8999 Z\",\n id: \"Stroke-146\",\n stroke: \"#FF7B38\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M373.0602,261.6782 L383.7502,219.5872 C385.7402,211.7282 392.4402,206.2682 400.0802,206.2682 L458.7502,206.2682 C472.1502,206.2682 480.2302,222.0772 472.9602,234.0772 L444.3602,281.2472 L368.0902,281.2472 L373.0602,261.6782 Z\",\n id: \"Fill-148\",\n fill: \"#0AEDC2\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M408.38,340.5874 L444.36,281.2474 L472.96,234.0774 C480.23,222.0774 472.15,206.2684 458.75,206.2684 L400.08,206.2684 C392.44,206.2684 385.74,211.7284 383.75,219.5874 L373.06,261.6784 L368.09,281.2474 L356.7,326.1084 C356.62,326.4284 356.55,326.7574 356.48,327.0774\",\n id: \"Stroke-150\",\n stroke: \"#0AEDC2\"\n }), /*#__PURE__*/React.createElement(\"polyline\", {\n id: \"Stroke-152\",\n stroke: \"#0AEDC2\",\n points: \"373.61 261.6782 373.06 261.6782 342.52 261.6782\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: 368.0899,\n y1: 281.2476,\n x2: 444.3599,\n y2: 281.2476,\n id: \"Stroke-154\",\n stroke: \"#0AEDC2\"\n }))))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgGroup156);\nexport default __webpack_public_path__ + \"static/media/Group 156.e4e2f519c47bd7b9d667cc88e88144ed.svg\";\nexport { ForwardRef as ReactComponent };","var _defs, _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgGroup52(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"350px\",\n height: \"284px\",\n viewBox: \"0 0 350 284\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"Group 52\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"polygon\", {\n id: \"path-1\",\n points: \"0.380900217 0.66766756 37.0587744 0.66766756 37.0587744 37.3210233 0.380900217 37.3210233\"\n }))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Final-design-tweak\",\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Product-page\",\n transform: \"translate(-266.000000, -1917.000000)\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group-52\",\n transform: \"translate(266.000000, 1917.000000)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M265.0282,32.0176185 L265.0282,35.4394147 C265.0282,42.7389938 259.10705,48.6561976 251.802603,48.6561976 L245.684056,48.6561976 C238.37885,48.6561976 232.45846,54.5734013 232.45846,61.8729804 C232.45846,70.4464389 225.502495,77.3962512 216.924837,77.3962512 L178.226681,77.3962512 C169.647505,77.3962512 162.693059,70.4464389 162.693059,61.8729804 L162.693059,58.4435971 C162.693059,49.8701386 169.647505,42.9203263 178.226681,42.9203263 L178.426356,42.9203263 C186.438395,42.9203263 192.523536,35.8650528 191.525922,27.9198088 C191.010412,23.8113772 193.095987,21.0557311 197.472126,19.4912646 C198.823536,19.0087231 200.260738,18.8008357 201.696421,18.8008357 L251.802603,18.8008357 C259.10705,18.8008357 265.0282,24.7180394 265.0282,32.0176185\",\n id: \"Fill-1\",\n fill: \"#CFFFF6\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M195.008764,77.3959477 C195.008764,88.1552587 186.280781,96.8766662 175.515054,96.8766662 C164.749328,96.8766662 156.021345,88.1552587 156.021345,77.3959477 C156.021345,66.6373954 164.749328,57.9159879 175.515054,57.9159879 C186.280781,57.9159879 195.008764,66.6373954 195.008764,77.3959477\",\n id: \"Fill-3\",\n fill: \"#0AEDC2\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M60.8431345,113.633756 L99.0569089,113.633756 C100.163091,113.633756 100.811464,112.389467 100.176757,111.484322 L69.0449783,67.0525633 C68.7891215,66.688381 68.371551,66.4706303 67.9258894,66.4706303 L29.7113557,66.4706303 C28.6051735,66.4706303 27.9575597,67.7149198 28.5915076,68.6200646 L59.7232863,113.051065 C59.9791432,113.416006 60.3967137,113.633756 60.8431345,113.633756\",\n id: \"Fill-5\",\n fill: \"#0AEDC2\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.0462148,83.9835504 L53.0650868,83.9835504 C54.1196421,83.9835504 54.7330911,82.7923708 54.1211605,81.9342662 L30.6817896,49.0948855 C30.2353688,48.4697059 29.5141106,48.0986952 28.7457809,48.0986952 L2.38189805,48.0986952 C0.448926247,48.0986952 -0.676236443,50.2822716 0.44664859,51.8550839 L22.990141,83.4403118 C23.2338503,83.780974 23.6271258,83.9835504 24.0462148,83.9835504\",\n id: \"Fill-7\",\n fill: \"#CFFFF6\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n id: \"Fill-9\",\n fill: \"#CFFFF6\",\n points: \"321.978514 96.8765145 266.895651 96.8765145 294.778731 57.0827692 349.860835 57.0827692\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n id: \"Fill-11\",\n fill: \"#0AEDC2\",\n points: \"283.286508 124.479105 227.007115 124.479105 255.496052 83.8204271 311.775445 83.8204271\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M322.229132,161.470088 C322.229132,168.690003 316.372516,174.541957 309.148547,174.541957 C301.923818,174.541957 296.066443,168.690003 296.066443,161.470088 C296.066443,154.249416 301.923818,148.397461 309.148547,148.397461 C316.372516,148.397461 322.229132,154.249416 322.229132,161.470088\",\n id: \"Fill-13\",\n fill: \"#0AEDC2\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M311.774306,40.5761303 C305.685369,40.5761303 300.743612,35.6444949 300.743612,29.5520284 C300.743612,23.4671491 305.685369,18.5355137 311.774306,18.5355137 C317.864002,18.5355137 322.805759,23.4671491 322.805759,29.5520284 C322.805759,35.6444949 317.864002,40.5761303 311.774306,40.5761303 M311.54654,11.0090794 C301.297082,11.0090794 292.991985,19.3094011 292.991985,29.5520284 C292.991985,39.7946558 301.297082,48.0949775 311.54654,48.0949775 C321.795998,48.0949775 330.102614,39.7946558 330.102614,29.5520284 C330.102614,19.3094011 321.795998,11.0090794 311.54654,11.0090794\",\n id: \"Fill-15\",\n fill: \"#CFFFF6\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M34.4439479,109.180034 C34.4439479,115.975069 28.9320174,121.483327 22.1324512,121.483327 C15.332885,121.483327 9.82095445,115.975069 9.82095445,109.180034 C9.82095445,102.384999 15.332885,96.8767421 22.1324512,96.8767421 C28.9320174,96.8767421 34.4439479,102.384999 34.4439479,109.180034\",\n id: \"Fill-17\",\n fill: \"#CFFFF6\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20.1281128,101.764069 C20.1281128,105.682063 16.9500217,108.858036 13.0294143,108.858036 C9.10880694,108.858036 5.93071584,105.682063 5.93071584,101.764069 C5.93071584,97.846074 9.10880694,94.6701008 13.0294143,94.6701008 C16.9500217,94.6701008 20.1281128,97.846074 20.1281128,101.764069\",\n id: \"Fill-19\",\n fill: \"#0AEDC2\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M67.7046529,182.702979 C67.7046529,185.510976 65.4269957,187.787875 62.6163666,187.787875 C59.8064967,187.787875 57.5280803,185.510976 57.5280803,182.702979 C57.5280803,179.894982 59.8064967,177.618084 62.6163666,177.618084 C65.4269957,177.618084 67.7046529,179.894982 67.7046529,182.702979\",\n id: \"Fill-21\",\n fill: \"#0AEDC2\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M341.72269,126.097289 C341.72269,128.645047 339.655336,130.711023 337.105879,130.711023 C334.556421,130.711023 332.489067,128.645047 332.489067,126.097289 C332.489067,123.54953 334.556421,121.483554 337.105879,121.483554 C339.655336,121.483554 341.72269,123.54953 341.72269,126.097289 Z\",\n id: \"Stroke-23\",\n stroke: \"#0AEDC2\"\n }), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group-27\",\n transform: \"translate(3.796095, 0.091046)\"\n }, /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask-2\",\n fill: \"white\"\n }, /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#path-1\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Clip-26\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.3364317,28.0874845 C13.3104013,28.0874845 9.23339479,24.020782 9.23339479,18.9905139 C9.23339479,13.967833 13.3104013,9.89354343 18.3364317,9.89354343 C23.362462,9.89354343 27.4394685,13.967833 27.4394685,18.9905139 C27.4394685,24.020782 23.362462,28.0874845 18.3364317,28.0874845 M18.7236334,0.667591689 C8.59565076,0.667591689 0.380900217,8.8692807 0.380900217,18.9905139 C0.380900217,29.1117472 8.59565076,37.3210233 18.7236334,37.3210233 C28.8516161,37.3210233 37.0587744,29.1117472 37.0587744,18.9905139 C37.0587744,8.8692807 28.8516161,0.667591689 18.7236334,0.667591689\",\n id: \"Fill-25\",\n fill: \"#0AEDC2\",\n mask: \"url(#mask-2)\"\n })), /*#__PURE__*/React.createElement(\"line\", {\n x1: 22.5169957,\n y1: 159.169518,\n x2: 262.722527,\n y2: 159.169518,\n id: \"Stroke-28\",\n stroke: \"#0AEDC2\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M159.202017,216.582024 L167.310477,184.647788 C168.828915,178.685062 173.908091,174.541729 179.716117,174.541729 L224.251909,174.541729 C234.433037,174.541729 240.567527,186.536984 235.048004,195.634713 L213.334338,231.423212 L155.428698,231.423212 L159.202017,216.582024 Z\",\n id: \"Fill-30\",\n fill: \"#0AEDC2\"\n }), /*#__PURE__*/React.createElement(\"polyline\", {\n id: \"Stroke-32\",\n stroke: \"#0AEDC2\",\n points: \"159.611996 216.582024 159.202017 216.582024 108.827831 216.582024\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M213.334566,231.422833 L235.048232,195.634334 C240.567755,186.537364 234.433265,174.54135 224.252137,174.54135 L179.716345,174.54135 C173.908319,174.54135 168.828391,178.684683 167.309946,184.648168 L159.202245,216.581645 L155.428167,231.422833 L146.781421,265.466291 C144.572093,274.152798 150.721768,282.711841 159.178709,282.711841 L175.221768,282.711841 C179.587278,282.711841 183.648341,280.352243 186.017863,276.452457 L213.334566,231.422833 Z\",\n id: \"Stroke-34\",\n stroke: \"#0AEDC2\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: 155.428547,\n y1: 231.422833,\n x2: 213.334946,\n y2: 231.422833,\n id: \"Stroke-36\",\n stroke: \"#0AEDC2\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M139.479024,159.169518 L123.143666,197.026269 C119.15397,206.271947 125.938351,216.579065 136.013948,216.579065 L159.612755,216.579065\",\n id: \"Stroke-38\",\n stroke: \"#0AEDC2\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M198.916844,141.735429 L198.916844,159.169898 L182.942874,159.169898 C178.843091,159.169898 175.517711,155.847493 175.517711,151.750442 C175.517711,148.981139 176.641356,146.477386 178.455889,144.671649 C180.270423,142.857565 182.775846,141.735429 185.539403,141.735429 L198.916844,141.735429 Z\",\n id: \"Fill-40\",\n fill: \"#0AEDC2\"\n }), /*#__PURE__*/React.createElement(\"polyline\", {\n id: \"Stroke-42\",\n stroke: \"#0AEDC2\",\n points: \"126.95039 124.482064 122.805054 119.17866 48.621757 119.17866 79.9243601 159.170429 154.107657 159.170429 126.957983 124.482064\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M126.95039,124.482064 L126.957983,124.482064 L142.620672,116.098284 C163.85603,106.060509 182.889653,107.684155 200.647787,116.098284 C224.661887,128.32874 233.476421,139.876354 238.798547,151.57571 C240.415683,155.134075 238.965575,159.170429 235.048004,159.170429 L198.916768,159.170429 L182.942798,159.170429 C178.843015,159.170429 175.517636,155.847265 175.517636,151.750214 C175.517636,148.980912 176.64128,146.477158 178.455813,144.671421 C180.270347,142.858097 182.77577,141.735201 185.539328,141.735201 L198.916768,141.735201 L208.346269,141.735201\",\n id: \"Stroke-44\",\n stroke: \"#0AEDC2\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: 198.916844,\n y1: 141.735429,\n x2: 198.916844,\n y2: 159.169898,\n id: \"Stroke-46\",\n stroke: \"#0AEDC2\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M77.8810738,43.0137997 C77.8810738,45.8217971 75.6034165,48.0986952 72.7927874,48.0986952 C69.9829176,48.0986952 67.7045011,45.8217971 67.7045011,43.0137997 C67.7045011,40.2058024 69.9829176,37.9289043 72.7927874,37.9289043 C75.6034165,37.9289043 77.8810738,40.2058024 77.8810738,43.0137997\",\n id: \"Fill-48\",\n fill: \"#CFFFF6\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: 202.486768,\n y1: 159.169518,\n x2: 206.563015,\n y2: 174.542564,\n id: \"Stroke-50\",\n stroke: \"#0AEDC2\"\n }))))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgGroup52);\nexport default __webpack_public_path__ + \"static/media/Group 52.b3c43fa2fd6fe83bde09a2ca73addcb7.svg\";\nexport { ForwardRef as ReactComponent };","var _defs, _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgGroup61(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"350px\",\n height: \"273px\",\n viewBox: \"0 0 350 273\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"Group 61\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"polygon\", {\n id: \"path-1\",\n points: \"0 0.309417722 13.4705696 0.309417722 13.4705696 13.7804304 0 13.7804304\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n id: \"path-3\",\n points: \"0.65578481 0.524822785 150.928861 0.524822785 150.928861 1.41089873 0.65578481 1.41089873\"\n }))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Final-design-tweak\",\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Product-page\",\n transform: \"translate(-265.000000, -2676.000000)\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group-61\",\n transform: \"translate(265.000000, 2676.000000)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M57.8466709,57.2092278 L16.2879367,57.2092278 C13.5721139,57.2092278 11.3507215,54.9878354 11.3507215,52.2720127 L11.3507215,10.7132785 C11.3507215,7.9974557 13.5721139,5.77606329 16.2879367,5.77606329 L57.8466709,5.77606329 C60.5624937,5.77606329 62.7838861,7.9974557 62.7838861,10.7132785 L62.7838861,52.2720127 C62.7838861,54.9878354 60.5624937,57.2092278 57.8466709,57.2092278\",\n id: \"Fill-1\",\n fill: \"#FFD6CA\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M64.0933291,63.7285316 L43.453962,63.7285316 C41.3309241,63.7285316 39.5933291,61.9918228 39.5933291,59.8687848 L39.5933291,39.2294177 C39.5933291,37.1063797 41.3309241,35.3696709 43.453962,35.3696709 L64.0933291,35.3696709 C66.2163671,35.3696709 67.9530759,37.1063797 67.9530759,39.2294177 L67.9530759,59.8687848 C67.9530759,61.9918228 66.2163671,63.7285316 64.0933291,63.7285316\",\n id: \"Fill-3\",\n fill: \"#FF7B38\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M336.329354,220.274494 L309.428975,220.274494 C306.714038,220.274494 304.491759,218.052215 304.491759,215.337278 L304.491759,188.436899 C304.491759,185.721076 306.714038,183.499684 309.428975,183.499684 L336.329354,183.499684 C339.044291,183.499684 341.26657,185.721076 341.26657,188.436899 L341.26657,215.337278 C341.26657,218.052215 339.044291,220.274494 336.329354,220.274494\",\n id: \"Fill-5\",\n fill: \"#FFD6CA\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M341.689494,226.793709 L321.050127,226.793709 C318.927089,226.793709 317.19038,225.056114 317.19038,222.933962 L317.19038,202.294595 C317.19038,200.170671 318.927089,198.433962 321.050127,198.433962 L341.689494,198.433962 C343.812532,198.433962 345.549241,200.170671 345.549241,202.294595 L345.549241,222.933962 C345.549241,225.056114 343.812532,226.793709 341.689494,226.793709 Z\",\n id: \"Stroke-7\",\n stroke: \"#FF7B38\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M26.2087975,131.31043 C20.3429747,131.31043 15.5847468,126.561063 15.5847468,120.68638 C15.5847468,114.820557 20.3429747,110.062329 26.2087975,110.062329 C32.0746203,110.062329 36.8328481,114.820557 36.8328481,120.68638 C36.8328481,126.561063 32.0746203,131.31043 26.2087975,131.31043 M26.6606962,99.2876456 C14.840443,99.2876456 5.25310127,108.866127 5.25310127,120.68638 C5.25310127,132.506633 14.840443,142.093975 26.6606962,142.093975 C38.4809494,142.093975 48.0594304,132.506633 48.0594304,120.68638 C48.0594304,108.866127 38.4809494,99.2876456 26.6606962,99.2876456\",\n id: \"Fill-9\",\n fill: \"#FF7B38\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M335.041266,107.466835 L213.505316,107.466835 C205.56962,107.466835 199.136709,101.033924 199.136709,93.0982278 L199.136709,14.3694937 C199.136709,6.43379747 205.56962,0 213.505316,0 L335.041266,0 C342.976962,0 349.409873,6.43379747 349.409873,14.3694937 L349.409873,93.0982278 C349.409873,101.033924 342.976962,107.466835 335.041266,107.466835\",\n id: \"Fill-11\",\n fill: \"#FFD6CA\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M113.678051,173.264 C113.678051,187.316278 102.286658,198.709443 88.2334937,198.709443 C74.1803291,198.709443 62.7889367,187.316278 62.7889367,173.264 C62.7889367,159.211722 74.1803291,147.819443 88.2334937,147.819443 C102.286658,147.819443 113.678051,159.211722 113.678051,173.264\",\n id: \"Fill-13\",\n fill: \"#FF7B38\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M305.262114,140.634962 L183.726165,140.634962 C175.790468,140.634962 169.357557,134.202051 169.357557,126.266354 L169.357557,47.5376203 C169.357557,39.6019241 175.790468,33.1681266 183.726165,33.1681266 L305.262114,33.1681266 C313.19781,33.1681266 319.630722,39.6019241 319.630722,47.5376203 L319.630722,126.266354 C319.630722,134.202051 313.19781,140.634962 305.262114,140.634962 Z\",\n id: \"Stroke-15\",\n stroke: \"#FF7B38\"\n }), /*#__PURE__*/React.createElement(\"polyline\", {\n id: \"Stroke-17\",\n stroke: \"#FF7B38\",\n points: \"189.713114 153.507253 189.713114 187.633582 213.062101 153.507253\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M143.957392,208.497658 L125.651949,263.668291 L208.871316,263.668291 L228.293215,208.933608 C230.062709,203.945886 226.363342,198.709177 221.071696,198.709177 L157.518785,198.709177 C151.361443,198.709177 145.896127,202.653101 143.957392,208.497658 Z\",\n id: \"Stroke-19\",\n stroke: \"#FF7B38\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: 111.728949,\n y1: 263.668025,\n x2: 334.631101,\n y2: 263.668025,\n id: \"Stroke-21\",\n stroke: \"#FF7B38\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: 13.425415,\n y1: 263.668025,\n x2: 35.0583496,\n y2: 263.668025,\n id: \"Stroke-23\",\n stroke: \"#FF7B38\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M63.4253165,145.936709 C62.0678481,153.708481 63.1488608,159.652278 64.0641772,165.721899 C67.3692405,163.898354 70.6379747,162.788987 73.8455696,162.890886 C76.1918987,163.701646 78.9582278,164.117215 82.3279747,163.966582 C86.7220253,163.54038 90.6739241,162.873165 93.9160759,161.816076 C95.4888608,161.414684 96.6629114,161.520127 97.5002532,162.05443 C99.4097468,163.154051 101.111899,163.306456 102.876076,162.413291 L106.819114,160.262785 C108.853544,159.427215 109.726329,159.545949 110.164051,160.023544 L111.536582,159.816203 C115.098608,158.810506 118.788228,157.817215 119.482911,156.558987 C119.93038,155.28481 118.665063,153.137848 116.623544,150.595696 C116.620886,150.591266 116.623544,150.585949 116.627975,150.585949 C119.177215,150.647975 120.965316,148.692405 120.916582,141.870506 C120.916582,141.866076 120.915696,141.861646 120.91481,141.858101 C118.727975,135.212532 115.850886,130.487975 110.880886,131.590253 C110.25,132.41519 107.94443,132.396582 104.077595,131.591139 C104.074051,131.590253 104.068734,131.588481 104.06519,131.585823 C99.5125316,129.036582 96.1135443,128.645823 92.1713924,129.917342 C87.6851899,132.141392 83.2636709,134.860759 79.1017722,139.594177 C77.7292405,140.785949 72.6139241,141.191772 67.6332911,141.625063 C65.6378481,142.274557 64.2892405,143.779114 63.4270886,145.927848 C63.4262025,145.930506 63.4253165,145.934051 63.4253165,145.936709\",\n id: \"Fill-25\",\n fill: \"#FFBFB0\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M111.609949,261.903582 C111.521342,262.506114 111.397291,263.099785 111.220076,263.665987 C110.396025,266.413709 108.606152,268.725481 106.258051,270.339025 C103.413747,272.288392 99.7365316,273.218772 95.890962,272.67738 L67.9529873,268.645734 L68.6618481,263.665987 L71.5681772,243.269405 L99.5150127,247.185861 C107.197291,248.275734 112.611215,254.868139 111.609949,261.903582\",\n id: \"Fill-27\",\n fill: \"#FF7B38\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M155.856241,138.366519 C155.856241,143.422468 151.758139,147.52057 146.703076,147.52057 C141.648013,147.52057 137.549911,143.422468 137.549911,138.366519 C137.549911,133.311456 141.648013,129.213354 146.703076,129.213354 C151.758139,129.213354 155.856241,133.311456 155.856241,138.366519\",\n id: \"Fill-29\",\n fill: \"#FFBC9F\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M269.639557,216.519924 C269.639557,220.239671 266.624241,223.255873 262.903608,223.255873 C259.184747,223.255873 256.168544,220.239671 256.168544,216.519924 C256.168544,212.800177 259.184747,209.784861 262.903608,209.784861 C266.624241,209.784861 269.639557,212.800177 269.639557,216.519924\",\n id: \"Fill-31\",\n fill: \"#FFBEA1\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M308.218861,124.541962 C308.218861,129.541203 304.165949,133.594114 299.166709,133.594114 C294.167468,133.594114 290.113671,129.541203 290.113671,124.541962 C290.113671,119.542722 294.167468,115.48981 299.166709,115.48981 C304.165949,115.48981 308.218861,119.542722 308.218861,124.541962 Z\",\n id: \"Stroke-33\",\n stroke: \"#FF7B38\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M301.925063,255.87419 C301.925063,257.734063 300.416962,259.241278 298.557975,259.241278 C296.698101,259.241278 295.19,257.734063 295.19,255.87419 C295.19,254.01343 296.698101,252.506215 298.557975,252.506215 C300.416962,252.506215 301.925063,254.01343 301.925063,255.87419\",\n id: \"Fill-35\",\n fill: \"#FF7B38\"\n }), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group-39\",\n transform: \"translate(0.000000, 198.399494)\"\n }, /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask-2\",\n fill: \"white\"\n }, /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#path-1\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Clip-38\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.4705696,7.04448101 C13.4705696,10.7642278 10.4552532,13.7804304 6.73550633,13.7804304 C3.01575949,13.7804304 -0.000443037975,10.7642278 -0.000443037975,7.04448101 C-0.000443037975,3.32473418 3.01575949,0.309417722 6.73550633,0.309417722 C10.4552532,0.309417722 13.4705696,3.32473418 13.4705696,7.04448101\",\n id: \"Fill-37\",\n fill: \"#FFBEA1\",\n mask: \"url(#mask-2)\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group-42\",\n transform: \"translate(198.481013, 21.184304)\"\n }, /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask-4\",\n fill: \"white\"\n }, /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#path-3\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Clip-41\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: 0.65578481,\n y1: 0.967860759,\n x2: 150.928949,\n y2: 0.967860759,\n id: \"Stroke-40\",\n stroke: \"#FFFFFF\",\n mask: \"url(#mask-4)\"\n })), /*#__PURE__*/React.createElement(\"line\", {\n x1: 169.357203,\n y1: 55.9191013,\n x2: 319.631253,\n y2: 55.9191013,\n id: \"Stroke-43\",\n stroke: \"#FF7B38\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M72.0770506,243.269228 L60.0857848,241.561759 L51.5280633,240.342519 L72.0770506,243.269228 L69.1707215,263.666696 L68.4618608,268.646443 L34.7378101,263.666696 C35.4023671,248.89581 37.9897089,235.090747 45.131481,223.589481 C45.2112278,223.46543 45.3086962,223.350241 45.3973038,223.22619 C52.6719873,212.531253 60.1416076,206.948975 67.6643924,204.698342 C67.8061646,204.654038 67.9479367,204.56543 68.0985696,204.538848 C80.9750253,201.768975 89.7923671,201.719354 103.095911,205.890114 C110.208443,208.119481 117.063127,211.122392 123.539456,214.811127 C132.074139,219.672139 136.218316,223.478722 137.992241,226.486949 L125.649203,263.666696 L108.86781,263.666696\",\n id: \"Stroke-45\",\n stroke: \"#FF7B38\"\n }), /*#__PURE__*/React.createElement(\"polygon\", {\n id: \"Fill-47\",\n fill: \"#FF7B38\",\n points: \"36.0404304 263.666253 35.9872658 264.012709 35.9784051 264.012709 36.0315696 263.666253\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M307.058101,42.875 C307.058101,44.2927215 305.909747,45.4410759 304.492025,45.4410759 C303.074304,45.4410759 301.925063,44.2927215 301.925063,42.875 C301.925063,41.4572785 303.074304,40.3089241 304.492025,40.3089241 C305.909747,40.3089241 307.058101,41.4572785 307.058101,42.875\",\n id: \"Fill-49\",\n fill: \"#FFFFFF\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M298.848076,42.875 C298.848076,44.2927215 297.698835,45.4410759 296.282,45.4410759 C294.864278,45.4410759 293.715038,44.2927215 293.715038,42.875 C293.715038,41.4572785 294.864278,40.3089241 296.282,40.3089241 C297.698835,40.3089241 298.848076,41.4572785 298.848076,42.875\",\n id: \"Fill-51\",\n fill: \"#FFFFFF\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M290.114025,42.875 C290.114025,44.2927215 288.965671,45.4410759 287.547949,45.4410759 C286.130228,45.4410759 284.980987,44.2927215 284.980987,42.875 C284.980987,41.4572785 286.130228,40.3089241 287.547949,40.3089241 C288.965671,40.3089241 290.114025,41.4572785 290.114025,42.875\",\n id: \"Fill-53\",\n fill: \"#FFFFFF\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M334.630747,11.2280886 C334.630747,12.6458101 333.481506,13.7941646 332.064671,13.7941646 C330.646949,13.7941646 329.497709,12.6458101 329.497709,11.2280886 C329.497709,9.81036709 330.646949,8.66201266 332.064671,8.66201266 C333.481506,8.66201266 334.630747,9.81036709 334.630747,11.2280886\",\n id: \"Fill-55\",\n fill: \"#FFFFFF\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M326.420633,11.2280886 C326.420633,12.6458101 325.271392,13.7941646 323.854557,13.7941646 C322.436835,13.7941646 321.287595,12.6458101 321.287595,11.2280886 C321.287595,9.81036709 322.436835,8.66201266 323.854557,8.66201266 C325.271392,8.66201266 326.420633,9.81036709 326.420633,11.2280886\",\n id: \"Fill-57\",\n fill: \"#FFFFFF\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M317.686671,11.2280886 C317.686671,12.6458101 316.53743,13.7941646 315.120595,13.7941646 C313.702873,13.7941646 312.553633,12.6458101 312.553633,11.2280886 C312.553633,9.81036709 313.702873,8.66201266 315.120595,8.66201266 C316.53743,8.66201266 317.686671,9.81036709 317.686671,11.2280886\",\n id: \"Fill-59\",\n fill: \"#FFFFFF\"\n }))))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgGroup61);\nexport default __webpack_public_path__ + \"static/media/Group 61.c37546c10f98460a119cc5f78d671344.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgGroup62(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"331px\",\n height: \"356px\",\n viewBox: \"0 0 331 356\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"Group 62\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Final-design-tweak\",\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Product-page\",\n transform: \"translate(-818.000000, -1844.000000)\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group-62\",\n transform: \"translate(819.000000, 1844.000000)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M62.4925115,183.784664 L44.6935038,216.94556 C44.0133511,218.019438 43.1736565,218.92623 42.2172443,219.649145 C43.0905267,215.508966 41.368313,211.084994 37.5812901,208.69207 C35.8515191,207.599721 33.9286183,207.079994 32.0225115,207.079994 C29.7469389,207.079994 27.5049542,207.827258 25.6744198,209.229428 C25.9263282,208.04556 26.3881603,206.894438 27.068313,205.811325 L44.8673206,172.642032 C46.8573969,169.501843 50.2329695,167.789013 53.6925115,167.789013 C55.5986183,167.789013 57.5215191,168.309579 59.2512901,169.401089 C64.1215191,172.474108 65.5741908,178.914013 62.4925115,183.784664\",\n id: \"Fill-1\",\n fill: \"#EFACAB\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M212.278756,115.835095 L180.853183,118.24901 C175.191962,118.684775 170.250359,114.448039 169.815397,108.786463 C169.380435,103.125727 173.617534,98.1845481 179.278756,97.7496236 L210.704328,95.3357085 C216.36555,94.900784 221.307153,99.1375198 221.742954,104.798256 C222.177076,110.458992 217.939977,115.400171 212.278756,115.835095\",\n id: \"Fill-3\",\n fill: \"#EFACAB\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M131.951802,336.509084 L100.526229,338.922999 C94.8650076,339.357924 89.9234046,335.121188 89.4884427,329.459612 C89.0534809,323.798876 93.2905802,318.858537 98.9518015,318.422773 L130.377374,316.008858 C136.038595,315.573933 140.980198,319.810669 141.41516,325.471405 C141.850122,331.13298 137.613023,336.07332 131.951802,336.509084\",\n id: \"Fill-5\",\n fill: \"#F04F45\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M65.884542,280.768468 L34.4589695,283.182383 C28.7977481,283.618147 23.8553053,279.381411 23.4211832,273.719836 C22.9862214,268.0591 27.2233206,263.117921 32.8837023,262.682996 L64.3101145,260.269081 C69.9713359,259.834157 74.9129389,264.070892 75.3479008,269.730789 C75.7828626,275.392364 71.5457634,280.333543 65.884542,280.768468 Z\",\n id: \"Stroke-7\",\n stroke: \"#EFACAB\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M112.967649,234.336748 C112.967649,238.622182 109.493832,242.094861 105.20887,242.094861 C100.923908,242.094861 97.4500916,238.622182 97.4500916,234.336748 C97.4500916,230.052154 100.923908,226.579475 105.20887,226.579475 C109.493832,226.579475 112.967649,230.052154 112.967649,234.336748\",\n id: \"Fill-9\",\n fill: \"#EFACAB\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M41.255374,273.025804 C41.255374,277.091257 37.9587328,280.387615 33.8929313,280.387615 C29.8262901,280.387615 26.5296489,277.091257 26.5296489,273.025804 C26.5296489,268.959511 29.8262901,265.663153 33.8929313,265.663153 C37.9587328,265.663153 41.255374,268.959511 41.255374,273.025804\",\n id: \"Fill-11\",\n fill: \"#F04F45\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M255.800214,107.632402 C255.800214,110.28393 253.649756,112.433364 250.998,112.433364 C248.346244,112.433364 246.196626,110.28393 246.196626,107.632402 C246.196626,104.980874 248.346244,102.8306 250.998,102.8306 C253.649756,102.8306 255.800214,104.980874 255.800214,107.632402\",\n id: \"Fill-13\",\n fill: \"#F04F45\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M255.800214,107.632402 C255.800214,110.28393 253.649756,112.433364 250.998,112.433364 C248.346244,112.433364 246.196626,110.28393 246.196626,107.632402 C246.196626,104.980874 248.346244,102.8306 250.998,102.8306 C253.649756,102.8306 255.800214,104.980874 255.800214,107.632402 Z\",\n id: \"Stroke-15\",\n stroke: \"#F04F45\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M329.466206,225.083603 C329.466206,231.183461 324.520405,236.127999 318.420863,236.127999 C312.319641,236.127999 307.37384,231.183461 307.37384,225.083603 C307.37384,218.982905 312.319641,214.038367 318.420863,214.038367 C324.520405,214.038367 329.466206,218.982905 329.466206,225.083603\",\n id: \"Fill-17\",\n fill: \"#F04F45\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M329.466206,225.083603 C329.466206,231.183461 324.520405,236.127999 318.420863,236.127999 C312.319641,236.127999 307.37384,231.183461 307.37384,225.083603 C307.37384,218.982905 312.319641,214.038367 318.420863,214.038367 C324.520405,214.038367 329.466206,218.982905 329.466206,225.083603 Z\",\n id: \"Stroke-19\",\n stroke: \"#F04F45\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.417412214,36.1193066 C0.417412214,36.1193066 12.0597786,144.036844 66.6777176,169.896382 L164.557565,117.037099 C164.557565,117.037099 120.582756,34.7683538 122.001,0.0172122642\",\n id: \"Stroke-21\",\n stroke: \"#F04F45\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M259.327099,173.47964 C259.327099,185.386328 249.674809,195.037791 237.767099,195.037791 C225.861069,195.037791 216.207099,185.386328 216.207099,173.47964 C216.207099,161.572951 225.861069,151.921489 237.767099,151.921489 C249.674809,151.921489 259.327099,161.572951 259.327099,173.47964\",\n id: \"Fill-23\",\n fill: \"#F04F45\"\n }), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group-31\",\n transform: \"translate(151.145038, 185.674151)\",\n fill: \"#F04F45\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M129.53113,108.243815 L128.23884,168.965325 L128.23884,169.183626 L98.4456336,169.183626 L94.1724275,153.634655 L94.1724275,153.626258 L83.0464733,113.181636 L120.915863,110.629183 C123.662504,110.443626 126.163954,109.536834 128.271588,108.110315 L129.53113,108.243815 Z\",\n id: \"Fill-25\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M55.9156031,104.785242 L48.0056794,106.07826 C47.4094962,106.178175 46.8217099,106.220996 46.2423206,106.220996 C41.2881221,106.220996 36.8545344,102.811289 35.6957557,97.833166 C34.3858321,92.1909019 37.7446107,86.5142132 43.3201832,84.9441189 L53.4552977,82.0977981 L58.275145,80.7460057 L61.4156031,103.878449 L61.4156031,103.886845 L55.9156031,104.785242 Z\",\n id: \"Fill-27\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.3048321,3.15731698 L27.6094122,12.7458075 L8.66590076,28.3627887 L1.86437405,17.2453453 C0.747580153,15.4158075 0.201778626,13.3755245 0.201778626,11.3436377 C0.201778626,8.29496792 1.43612977,5.27316604 3.8040687,3.06495849 C8.18727481,-0.998815094 14.9804046,-0.965230189 19.3048321,3.15731698\",\n id: \"Fill-29\"\n })), /*#__PURE__*/React.createElement(\"polyline\", {\n id: \"Stroke-32\",\n stroke: \"#F04F45\",\n points: \"176.663527 354.857777 197.731466 354.857777 234.191008 354.857777 249.591008 354.857777 279.384214 354.857777 309.956656 354.857777\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M207.060641,290.434036 L207.060641,290.459225 C207.077435,296.563281 211.754534,300.038479 217.598809,300.274413 C218.328504,300.307998 219.076672,300.290878 219.840794,300.2148 L234.191176,298.855451 L272.061405,296.302998 C274.807206,296.118281 277.309496,295.210649 279.41629,293.78413 C284.236977,290.525555 286.957588,284.556677 285.681252,278.377055 L282.507206,254.682904\",\n id: \"Stroke-34\",\n stroke: \"#F04F45\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: 209.420267,\n y1: 266.420325,\n x2: 212.560725,\n y2: 289.552768,\n id: \"Stroke-36\",\n stroke: \"#F04F45\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: 245.317214,\n y1: 339.300242,\n x2: 234.19126,\n y2: 298.855619,\n id: \"Stroke-38\",\n stroke: \"#F04F45\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: 249.591092,\n y1: 354.857777,\n x2: 245.317046,\n y2: 339.307966,\n id: \"Stroke-40\",\n stroke: \"#F04F45\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: 280.676168,\n y1: 293.917966,\n x2: 279.383878,\n y2: 354.639475,\n id: \"Stroke-42\",\n stroke: \"#F04F45\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: 197.731718,\n y1: 354.639727,\n x2: 217.598893,\n y2: 300.291793,\n id: \"Stroke-44\",\n stroke: \"#F04F45\"\n }), /*#__PURE__*/React.createElement(\"polyline\", {\n id: \"Stroke-46\",\n stroke: \"#F04F45\",\n points: \"245.317214 339.300242 245.317214 339.308638 234.19126 354.640147\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M224.660221,213.14694 L194.154115,209.276279 C190.04045,208.948826 186.210603,207.008458 183.498389,203.885902 L178.754954,198.419958 L170.449534,188.831468 C166.125947,184.708921 159.331977,184.675336 154.948771,188.739109 C152.581672,190.947317 151.346481,193.969119 151.346481,197.017789 C151.346481,199.049675 151.892282,201.089958 153.009076,202.919496 L159.811443,214.03694 L165.889992,223.969675 C167.737321,227.000713 170.474725,229.385242 173.724344,230.803364 L206.262511,244.103826 L206.589992,244.237326\",\n id: \"Stroke-48\",\n stroke: \"#F04F45\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: 159.811023,\n y1: 214.03652,\n x2: 178.754534,\n y2: 198.419539,\n id: \"Stroke-50\",\n stroke: \"#F04F45\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M249.591092,242.096625 L243.763611,253.599455 C242.571244,255.958794 240.43842,257.714445 237.894145,258.427285 L209.420099,266.420492 L204.600252,267.772285 L194.465137,270.618606 C188.889565,272.1887 185.530786,277.865389 186.84071,283.506813 C187.999489,288.485775 192.433076,291.895483 197.387275,291.895483 C197.966664,291.895483 198.55445,291.852662 199.150634,291.752747 L207.060557,290.459728 L212.560557,289.560492 L212.560557,289.552936 L256.107122,282.4237 C271.070481,280.542945 280.659794,268.746247 282.507122,254.682568 C283.086511,250.291342 282.910176,245.673417 281.902542,241.072285 C276.889565,218.117002 268.417046,205.800577 247.777351,204.03653 C240.959031,203.448794 232.385748,206.597379 224.660557,213.147275 C216.64987,219.931426 209.55445,230.375492 206.262847,244.104162 C204.575061,251.130964 203.886511,259.023417 204.583458,267.722747\",\n id: \"Stroke-52\",\n stroke: \"#F04F45\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M218.856168,155.80743 C218.856168,155.80743 212.291435,162.626006 219.198763,162.526091 C226.106931,162.427015 244.074718,164.359826 244.074718,173.479808 C244.074718,182.599789 246.529985,180.39326 246.529985,180.39326 C246.529985,180.39326 245.943038,166.914798 250.998,168.453826 C256.053802,169.992015 259.326931,169.896298 259.326931,169.896298 C259.326931,169.896298 262.358229,136.580072 218.856168,155.80743\",\n id: \"Fill-54\",\n fill: \"#EFACAB\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M94.7449313,112.803806 C89.1861527,112.803806 84.6769924,108.303428 84.6769924,102.73673 C84.6769924,97.1784283 89.1861527,92.6696547 94.7449313,92.6696547 C100.30371,92.6696547 104.81287,97.1784283 104.81287,102.73673 C104.81287,108.303428 100.30371,112.803806 94.7449313,112.803806 M95.1731756,82.4598434 C83.9716489,82.4598434 74.8861527,91.5361642 74.8861527,102.73673 C74.8861527,113.937296 83.9716489,123.022013 95.1731756,123.022013 C106.374702,123.022013 115.451802,113.937296 115.451802,102.73673 C115.451802,91.5361642 106.374702,82.4598434 95.1731756,82.4598434\",\n id: \"Fill-56\",\n fill: \"#EFACAB\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M138.115916,178.51578 C132.557137,178.51578 128.047977,174.016242 128.047977,168.449544 C128.047977,162.891242 132.557137,158.382469 138.115916,158.382469 C143.674695,158.382469 148.183855,162.891242 148.183855,168.449544 C148.183855,174.016242 143.674695,178.51578 138.115916,178.51578 M138.54416,148.171818 C127.342634,148.171818 118.257137,157.248139 118.257137,168.449544 C118.257137,179.65011 127.342634,188.733988 138.54416,188.733988 C149.745687,188.733988 158.822786,179.65011 158.822786,168.449544 C158.822786,157.248139 149.745687,148.171818 138.54416,148.171818\",\n id: \"Fill-58\",\n fill: \"#F04F45\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M61.0931603,29.0948557 C61.0931603,29.0948557 61.2065191,54.9031764 77.9752214,73.7871292\",\n id: \"Stroke-60\",\n stroke: \"#EFACAB\"\n }))))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgGroup62);\nexport default __webpack_public_path__ + \"static/media/Group 62.25bb1ad82e49dd7d2620053684eb97f5.svg\";\nexport { ForwardRef as ReactComponent };","var _defs, _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgGroup65(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"350px\",\n height: \"282px\",\n viewBox: \"0 0 350 282\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"Group 65\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"polygon\", {\n id: \"path-1\",\n points: \"0.193778539 0.60590625 38.7976598 0.60590625 38.7976598 39.1714 0.193778539 39.1714\"\n }))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Final-design-tweak\",\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Product-page\",\n transform: \"translate(-809.000000, -2668.000000)\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group-65\",\n transform: \"translate(809.000000, 2668.000000)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M229.54734,68.458625 C229.54734,79.3649375 220.697454,88.2060597 209.780331,88.2060597 C198.863208,88.2060597 190.012523,79.3649375 190.012523,68.458625 C190.012523,57.5523125 198.863208,48.7111903 209.780331,48.7111903 C220.697454,48.7111903 229.54734,57.5523125 229.54734,68.458625\",\n id: \"Fill-1\",\n fill: \"#FDD800\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M206.737888,49.7673352 C206.737888,49.7673352 205.309121,79.0943153 232.048162,87.7661989 C255.487774,95.3675682 270.449874,63.000679 248.17613,56.3700369 C225.901587,49.7393949 203.838801,28.1542841 195.465171,54.8492841 L206.737888,49.7673352 Z\",\n id: \"Fill-3\",\n fill: \"#FCEA90\"\n }), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group-11\",\n transform: \"translate(115.068493, 36.115685)\",\n fill: \"#FDD800\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M83.5797603,122.509055 C84.2430023,120.680958 85.465605,118.940674 87.3594406,117.471811 L90.8114954,114.789538 L90.8194863,114.789538 L106.625422,102.519737 L119.394829,127.475251 L112.330902,130.523941 L106.801221,132.910845 L98.5946005,136.456075 C88.7977968,140.687041 80.6231393,130.6836 83.5797603,122.509055\",\n id: \"Fill-5\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M47.5966438,7.26760199 L53.6856849,23.3923719 L29.7130822,31.0887384 L26.5327169,13.0312952 C26.4208447,12.3926588 26.3649087,11.7540224 26.3649087,11.123369 C26.3649087,6.51720426 29.2815753,2.31018722 33.7724429,0.768678693 C39.3740411,-1.15521335 45.5030365,1.71944858 47.5966438,7.26760199\",\n id: \"Fill-7\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M61.1331735,86.6021244 L58.9436758,91.0406472 C44.9996119,83.3770108 31.7028082,81.0691386 31.4550913,99.9248773 L0.746187215,86.6260733 C1.64915525,80.135133 3.57495434,75.5377494 6.1959589,72.4156159 C21.5943607,54.0548205 61.1331735,86.6021244 61.1331735,86.6021244\",\n id: \"Fill-9\"\n })), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M155.41758,99.1836599 L28.3707763,84.7345122 L28.0191781,84.6953957 L26.9324201,84.5748531 L118.252055,238.326558 C120.409589,241.966785 125.180137,243.06045 128.7121,240.730225 L174.467808,210.522725 L231.194977,173.074686\",\n id: \"Stroke-12\",\n stroke: \"#FDD800\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M271.948482,146.79448 L311.711039,121.145247 C313.56492,119.947804 312.893687,117.081125 310.696199,116.834451 L240.568345,108.484281\",\n id: \"Stroke-14\",\n stroke: \"#FDD800\"\n }), /*#__PURE__*/React.createElement(\"polyline\", {\n id: \"Stroke-16\",\n stroke: \"#FDD800\",\n points: \"260.865068 280.141832 244.379909 220.652057 231.194977 173.074446\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M265.260046,145.09419 L271.948402,146.79456 L262.223516,278.21794 C262.151598,279.191063 261.61621,279.957426 260.889041,280.388506 C259.938128,280.963278 258.651598,280.963278 257.668721,280.141832 L174.467808,210.522486 L174.379909,210.449841\",\n id: \"Stroke-18\",\n stroke: \"#FDD800\"\n }), /*#__PURE__*/React.createElement(\"polyline\", {\n id: \"Stroke-20\",\n stroke: \"#FDD800\",\n points: \"199.343539 158.927932 198.648333 158.62458 146.523904 136.040801 115.815 122.741997 28.0193379 84.6952361 27.7316667 84.5746935 28.3709361 84.7351509 121.264772 108.53154\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: 231.195057,\n y1: 173.074286,\n x2: 221.869715,\n y2: 169.034113,\n id: \"Stroke-22\",\n stroke: \"#FDD800\"\n }), /*#__PURE__*/React.createElement(\"polyline\", {\n id: \"Stroke-24\",\n stroke: \"#FDD800\",\n points: \"221.478002 138.220627 221.693756 138.635741 234.463162 163.590457 234.463162 163.598439\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M248.910731,157.35553 C248.910731,157.35553 250.28516,164.707831 251.252055,174.478967 C252.86621,190.788143 253.345662,213.834933 244.379909,220.652376\",\n id: \"Stroke-26\",\n stroke: \"#FDD800\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M205.879829,150.905222 C204.825034,149.89937 189.03508,135.410308 174.012249,127.155933 C160.068185,119.492296 146.771381,117.185222 146.523664,136.040961 C146.515674,136.153521 146.515674,136.264484 146.515674,136.385026\",\n id: \"Stroke-28\",\n stroke: \"#FDD800\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M205.888059,150.905222 C205.904041,150.929171 205.912032,150.937154 205.920023,150.937154 C205.928014,150.945137 205.936005,150.953918 205.936005,150.953918\",\n id: \"Stroke-30\",\n stroke: \"#FDD800\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M251.252215,174.471303 L251.252215,174.479286 C249.078699,181.336644 243.565,178.62244 227.399475,166.639227\",\n id: \"Stroke-32\",\n stroke: \"#FDD800\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M173.820388,127.547337 L174.012169,127.156172 L176.201667,122.717649 L177.663995,119.740007 L182.538425,109.849127 C186.701667,102.297252 193.693676,96.9486722 201.740479,94.7613426 C205.056689,93.8512858 208.556689,93.4920528 212.104635,93.7315415 C217.666279,94.1147233 223.028151,95.6314847 227.870616,98.1461153 C232.713082,100.660746 237.052123,104.15728 240.568105,108.484041 L262.63089,135.618104 C264.940251,138.388189 265.675411,141.860774 265.036142,145.053956 C264.38089,148.398814 262.223356,151.448303 258.819247,153.076826 L248.910571,157.355689 L234.463082,163.590377 L227.399155,166.639865 L221.869475,169.026769 L213.662854,172.571201 C203.86605,176.802166 195.691393,166.799524 198.648014,158.624979 C199.311256,156.796882 200.533858,155.056598 202.427694,153.587735 L205.879749,150.905462 L205.88774,150.905462 L221.693676,138.635661 L229.948242,132.233331\",\n id: \"Stroke-34\",\n stroke: \"#FDD800\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M201.740799,94.7611031 L177.89605,79.3859327 C176.489658,78.4766741 175.41089,77.1347395 174.819566,75.5700804 L168.754498,59.5083759 L162.665457,43.383606 C160.571849,37.8346543 154.442854,34.9607906 148.841256,36.8846827 C144.350388,38.4261912 141.433721,42.6324099 141.433721,47.239373 C141.433721,47.8700264 141.489658,48.5086628 141.60153,49.1465009 L144.781895,67.203944 L148.713402,89.5402509 C149.184863,92.207356 150.519338,94.6493418 152.509064,96.4934043 L155.41774,99.1836599 L177.664315,119.739768\",\n id: \"Stroke-36\",\n stroke: \"#FDD800\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: 144.781735,\n y1: 67.2042634,\n x2: 168.754338,\n y2: 59.5078969,\n id: \"Stroke-38\",\n stroke: \"#FDD800\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M176.201667,122.717809 C176.201667,122.717809 136.662854,90.1705051 121.264452,108.531301 C118.643447,111.653434 116.717648,116.250818 115.81468,122.741758 C115.798699,122.845536 115.782717,122.957298 115.766735,123.061076\",\n id: \"Stroke-40\",\n stroke: \"#FDD800\"\n }), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group-44\",\n transform: \"translate(252.511416, 0.192389)\"\n }, /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask-2\",\n fill: \"white\"\n }, /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#path-1\"\n })), /*#__PURE__*/React.createElement(\"g\", {\n id: \"Clip-43\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.0921804,29.4561443 C13.802226,29.4561443 9.51113014,25.178079 9.51113014,19.8845818 C9.51113014,14.6006642 13.802226,10.3138176 19.0921804,10.3138176 C24.3821347,10.3138176 28.6732306,14.6006642 28.6732306,19.8845818 C28.6732306,25.178079 24.3821347,29.4561443 19.0921804,29.4561443 M19.4997146,0.605746591 C8.83989726,0.605746591 0.193778539,9.23532045 0.193778539,19.8845818 C0.193778539,30.5346415 8.83989726,39.1714 19.4997146,39.1714 C30.159532,39.1714 38.7976598,30.5346415 38.7976598,19.8845818 C38.7976598,9.23532045 30.159532,0.605746591 19.4997146,0.605746591\",\n id: \"Fill-42\",\n fill: \"#FCEA90\",\n mask: \"url(#mask-2)\"\n })), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.3342466,78.6602821 C8.16107306,78.6602821 5.5880137,76.0937622 5.5880137,72.9197395 C5.5880137,69.7505065 8.16107306,67.1791969 11.3342466,67.1791969 C14.506621,67.1791969 17.0796804,69.7505065 17.0796804,72.9197395 C17.0796804,76.0937622 14.506621,78.6602821 11.3342466,78.6602821 M11.5787671,61.3572281 C5.18527397,61.3572281 0,66.5333759 0,72.9197395 C0,79.3069014 5.18527397,84.4870406 11.5787671,84.4870406 C17.9714612,84.4870406 23.1519406,79.3069014 23.1519406,72.9197395 C23.1519406,66.5333759 17.9714612,61.3572281 11.5787671,61.3572281\",\n id: \"Fill-45\",\n fill: \"#FDD800\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M47.8120776,181.585074 L42.9144749,202.016648 C42.7051142,202.889185 43.5201826,203.660338 44.3815982,203.405682 L64.541758,197.427247 C65.4031735,197.171793 65.6644749,196.080523 65.0124201,195.46344 L49.749863,181.010301 C49.0978082,180.393219 48.0214384,180.711739 47.8120776,181.585074\",\n id: \"Fill-47\",\n fill: \"#FCEA90\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M58.4787671,193.606286 L53.5811644,214.037061 C53.3718037,214.910397 54.1868721,215.68155 55.0482877,215.426894 L75.2084475,209.448459 C76.069863,209.192206 76.3311644,208.101735 75.6791096,207.484652 L60.4165525,193.031513 C59.7644977,192.414431 58.6881279,192.732951 58.4787671,193.606286\",\n id: \"Fill-49\",\n fill: \"#FDD800\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M134.046724,12.1413554 L128.060765,37.1128355 C127.867386,37.9207105 128.621724,38.6351849 129.419212,38.3988895 L154.059053,31.0920912 C154.856541,30.8549974 155.098664,29.845952 154.495354,29.2743724 L135.840674,11.6096906 C135.237363,11.0381111 134.240902,11.3334804 134.046724,12.1413554\",\n id: \"Fill-51\",\n fill: \"#FCEA90\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M336.487203,63.8340994 L336.464829,63.8340994 C336.623048,63.027821 336.711747,62.1967955 336.711747,61.3458125 C336.711747,54.2002699 330.859235,48.3527557 323.705011,48.3527557 L306.27613,48.3527557 C299.542226,48.3527557 293.9646,53.5360881 293.333322,60.1052614 C288.124874,61.8032358 284.330811,66.7063665 284.330811,72.4572869 L284.330811,72.4580852 C284.330811,79.6036278 290.184121,85.4503437 297.337546,85.4503437 L309.368596,85.4503437 C311.755468,88.1222386 315.213116,89.8210114 319.057523,89.8210114 L336.487203,89.8210114 C343.640628,89.8210114 349.493139,83.9742955 349.493139,76.8271562 C349.493139,69.6808153 343.640628,63.8340994 336.487203,63.8340994\",\n id: \"Fill-53\",\n fill: \"#FCEA90\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M329.266975,83.787654 C329.266975,88.3419295 325.571199,92.034046 321.012409,92.034046 C316.453619,92.034046 312.757842,88.3419295 312.757842,83.787654 C312.757842,79.2333784 316.453619,75.5412619 321.012409,75.5412619 C325.571199,75.5412619 329.266975,79.2333784 329.266975,83.787654\",\n id: \"Fill-55\",\n fill: \"#FDD800\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.8129795,127.636187 C25.8129795,132.190463 22.1172032,135.882579 17.5584132,135.882579 C12.9996233,135.882579 9.30384703,132.190463 9.30384703,127.636187 C9.30384703,123.081912 12.9996233,119.389795 17.5584132,119.389795 C22.1172032,119.389795 25.8129795,123.081912 25.8129795,127.636187\",\n id: \"Fill-57\",\n fill: \"#FCEA90\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M318.730137,158.764282 C318.730137,162.041284 316.069977,164.699608 312.788927,164.699608 C309.507877,164.699608 306.847717,162.041284 306.847717,158.764282 C306.847717,155.48648 309.507877,152.828955 312.788927,152.828955 C316.069977,152.828955 318.730137,155.48648 318.730137,158.764282 Z\",\n id: \"Stroke-59\",\n stroke: \"#FDD800\",\n strokeWidth: 2\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M319.949463,143.852362 C319.949463,145.527984 318.589418,146.886683 316.912135,146.886683 C315.234852,146.886683 313.874806,145.527984 313.874806,143.852362 C313.874806,142.175941 315.234852,140.818041 316.912135,140.818041 C318.589418,140.818041 319.949463,142.175941 319.949463,143.852362\",\n id: \"Fill-61\",\n fill: \"#FDD800\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M80.5473059,24.3964679 L80.5249315,24.3964679 C80.6831507,23.5893912 80.7718493,22.7591639 80.7718493,21.908181 C80.7718493,14.7618401 74.9193379,8.91432585 67.7651142,8.91432585 L50.3362329,8.91432585 C43.6023288,8.91432585 38.0247032,14.0984565 37.3934247,20.6668315 C32.1849772,22.364806 28.3909132,27.2687349 28.3909132,33.0196554 C28.3909132,40.1659963 34.2442237,46.0127122 41.3976484,46.0127122 L53.4286986,46.0127122 C55.8155708,48.6846071 59.2732192,50.3825815 63.1176256,50.3825815 L80.5473059,50.3825815 C87.7007306,50.3825815 93.553242,44.5358656 93.553242,37.3895247 C93.553242,30.2431838 87.7007306,24.3964679 80.5473059,24.3964679\",\n id: \"Fill-63\",\n fill: \"#FDD800\"\n }))))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgGroup65);\nexport default __webpack_public_path__ + \"static/media/Group 65.47a4bc228b326097a679f74c97fb7f92.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgParticle1(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"46px\",\n height: \"46px\",\n viewBox: \"0 0 46 46\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"Combined Shape Copy 2\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Final-design-tweak\",\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Product-page\",\n transform: \"translate(-512.000000, -5369.000000)\",\n fill: \"#C9F6EE\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M535,5369 C547.702549,5369 558,5379.29745 558,5392 C558,5404.70255 547.702549,5415 535,5415 C522.297451,5415 512,5404.70255 512,5392 C512,5379.29745 522.297451,5369 535,5369 Z M535,5380 C528.372583,5380 523,5385.37258 523,5392 C523,5398.62742 528.372583,5404 535,5404 C541.627417,5404 547,5398.62742 547,5392 C547,5385.37258 541.627417,5380 535,5380 Z\",\n id: \"Combined-Shape-Copy-2\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgParticle1);\nexport default __webpack_public_path__ + \"static/media/particle 1.08d761261653036f6f2d08ef60dfb7a1.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgParticle2(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"30px\",\n height: \"30px\",\n viewBox: \"0 0 30 30\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"Oval\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Final-design-tweak\",\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Product-page\",\n transform: \"translate(-1093.000000, -4991.000000)\",\n fill: \"#0AEDC2\"\n }, /*#__PURE__*/React.createElement(\"circle\", {\n id: \"Oval\",\n cx: 1108,\n cy: 5006,\n r: 15\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgParticle2);\nexport default __webpack_public_path__ + \"static/media/particle 2.3e91d5847b01f92ff0951a97f489cdec.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgParticle3(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"20px\",\n height: \"20px\",\n viewBox: \"0 0 20 20\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"Oval Copy\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Final-design-tweak\",\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Product-page\",\n transform: \"translate(-221.000000, -5091.000000)\",\n fill: \"#0AEDC2\"\n }, /*#__PURE__*/React.createElement(\"circle\", {\n id: \"Oval-Copy\",\n cx: 231,\n cy: 5101,\n r: 10\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgParticle3);\nexport default __webpack_public_path__ + \"static/media/particle 3.33955c7ae8d68cd4b1dbcbea3cb48dd6.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgParticle4(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"32px\",\n height: \"32px\",\n viewBox: \"0 0 32 32\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"Oval Copy 17\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Final-design-tweak\",\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Product-page\",\n transform: \"translate(-360.000000, -5232.000000)\",\n stroke: \"#FF7B38\",\n strokeWidth: 2\n }, /*#__PURE__*/React.createElement(\"circle\", {\n id: \"Oval-Copy-17\",\n cx: 376,\n cy: 5248,\n r: 15\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgParticle4);\nexport default __webpack_public_path__ + \"static/media/particle 4.973fc265122f56e904b65db7cf8c3718.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgParticle5(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"20px\",\n height: \"20px\",\n viewBox: \"0 0 20 20\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"Oval Copy 3\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Final-design-tweak\",\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Product-page\",\n transform: \"translate(-632.000000, -4971.000000)\",\n fill: \"#F04F45\"\n }, /*#__PURE__*/React.createElement(\"circle\", {\n id: \"Oval-Copy-3\",\n cx: 642,\n cy: 4981,\n r: 10\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgParticle5);\nexport default __webpack_public_path__ + \"static/media/particle 5.bc42eb23b5cc8bff6c8ddd7ae4b2edd2.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgParticle6(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"20px\",\n height: \"20px\",\n viewBox: \"0 0 20 20\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"Oval Copy 2\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Final-design-tweak\",\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Product-page\",\n transform: \"translate(-960.000000, -5326.000000)\",\n fill: \"#F04F45\"\n }, /*#__PURE__*/React.createElement(\"circle\", {\n id: \"Oval-Copy-2\",\n cx: 970,\n cy: 5336,\n r: 10\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgParticle6);\nexport default __webpack_public_path__ + \"static/media/particle 6.097641601ab01701aa06d528fcd8fe40.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgParticle7(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"60px\",\n height: \"60px\",\n viewBox: \"0 0 60 60\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"Combined Shape\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Final-design-tweak\",\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Product-page\",\n transform: \"translate(-1216.000000, -5248.000000)\",\n fill: \"#0AEDC2\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1246,5248 C1262.56854,5248 1276,5261.43146 1276,5278 C1276,5294.56854 1262.56854,5308 1246,5308 C1229.43146,5308 1216,5294.56854 1216,5278 C1216,5261.43146 1229.43146,5248 1246,5248 Z M1246.5,5263 C1237.93959,5263 1231,5269.93959 1231,5278.5 C1231,5287.06041 1237.93959,5294 1246.5,5294 C1255.06041,5294 1262,5287.06041 1262,5278.5 C1262,5269.93959 1255.06041,5263 1246.5,5263 Z\",\n id: \"Combined-Shape\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgParticle7);\nexport default __webpack_public_path__ + \"static/media/particle 7.04e9bf1387be68effd5509366e6cb86b.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgParticle8(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"46px\",\n height: \"46px\",\n viewBox: \"0 0 46 46\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"Combined Shape Copy 3\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Final-design-tweak\",\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Product-page\",\n transform: \"translate(-138.000000, -5292.000000)\",\n fill: \"#81F3DD\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M161,5292 C173.702549,5292 184,5302.29745 184,5315 C184,5327.70255 173.702549,5338 161,5338 C148.297451,5338 138,5327.70255 138,5315 C138,5302.29745 148.297451,5292 161,5292 Z M161,5303 C154.372583,5303 149,5308.37258 149,5315 C149,5321.62742 154.372583,5327 161,5327 C167.627417,5327 173,5321.62742 173,5315 C173,5308.37258 167.627417,5303 161,5303 Z\",\n id: \"Combined-Shape-Copy-3\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgParticle8);\nexport default __webpack_public_path__ + \"static/media/particle 8.1fd85b4580d954db172711c89e37753b.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgGroup(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"823px\",\n height: \"636px\",\n viewBox: \"0 0 823 636\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title === undefined ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, \"Group\") : title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Final-design-tweak\",\n stroke: \"none\",\n strokeWidth: 1,\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"why-sproj-section-1\",\n transform: \"translate(-549.000000, -126.000000)\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Group\",\n transform: \"translate(549.000000, 126.000000)\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle\",\n fill: \"#F8F8FA\",\n x: 0,\n y: 0,\n width: 688,\n height: 492,\n rx: 25\n }), /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle-Copy-9\",\n fill: \"#0AEDC2\",\n x: 46,\n y: 49,\n width: 728,\n height: 587,\n rx: 25\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M46,49 L231,49 C244.807119,49 256,60.1928813 256,74 L256,636 L256,636 L46,636 L46,49 Z\",\n id: \"Rectangle\",\n fill: \"#2B11E1\"\n }), /*#__PURE__*/React.createElement(\"circle\", {\n id: \"Oval\",\n stroke: \"#979797\",\n fill: \"#F8F8FA\",\n cx: 137,\n cy: 108,\n r: 25\n }), /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle\",\n fill: \"#1D1554\",\n x: 84,\n y: 212,\n width: 136,\n height: 34,\n rx: 17\n }), /*#__PURE__*/React.createElement(\"circle\", {\n id: \"Oval-Copy-6\",\n fill: \"#0AEDC2\",\n cx: 107,\n cy: 229,\n r: 10\n }), /*#__PURE__*/React.createElement(\"circle\", {\n id: \"Oval-Copy-7\",\n fill: \"#0AEDC2\",\n cx: 107,\n cy: 289,\n r: 10\n }), /*#__PURE__*/React.createElement(\"circle\", {\n id: \"Oval-Copy-8\",\n fill: \"#0AEDC2\",\n cx: 107,\n cy: 342,\n r: 10\n }), /*#__PURE__*/React.createElement(\"circle\", {\n id: \"Oval-Copy-9\",\n fill: \"#0AEDC2\",\n cx: 107,\n cy: 395,\n r: 10\n }), /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle-Copy-11\",\n fill: \"#FFFFFF\",\n x: 137,\n y: 221,\n width: 75,\n height: 15,\n rx: 7\n }), /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle-Copy-12\",\n fill: \"#FFFFFF\",\n x: 137,\n y: 281,\n width: 75,\n height: 15,\n rx: 7\n }), /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle-Copy-19\",\n fill: \"#FFFFFF\",\n x: 137,\n y: 334,\n width: 75,\n height: 15,\n rx: 7\n }), /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle-Copy-21\",\n fill: \"#FFFFFF\",\n x: 137,\n y: 387,\n width: 75,\n height: 15,\n rx: 7\n }), /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle\",\n fill: \"#FFFFFF\",\n x: 278,\n y: 115,\n width: 175,\n height: 234,\n rx: 11\n }), /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle-Copy-23\",\n fill: \"#FFFFFF\",\n x: 278,\n y: 370,\n width: 545,\n height: 234,\n rx: 11\n }), /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle-Copy-10\",\n fill: \"#FFFFFF\",\n x: 463,\n y: 115,\n width: 175,\n height: 234,\n rx: 11\n }), /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle-Copy-22\",\n fill: \"#FFFFFF\",\n x: 648,\n y: 115,\n width: 175,\n height: 234,\n rx: 11\n }), /*#__PURE__*/React.createElement(\"circle\", {\n id: \"Oval\",\n fill: \"#0AEDC2\",\n cx: 414,\n cy: 155,\n r: 22\n }), /*#__PURE__*/React.createElement(\"circle\", {\n id: \"Oval-Copy-4\",\n fill: \"#0AEDC2\",\n cx: 606,\n cy: 155,\n r: 22\n }), /*#__PURE__*/React.createElement(\"circle\", {\n id: \"Oval-Copy-10\",\n fill: \"#0AEDC2\",\n cx: 789,\n cy: 155,\n r: 22\n }), /*#__PURE__*/React.createElement(\"polyline\", {\n id: \"Path-6\",\n stroke: \"#2B11E1\",\n strokeWidth: 5,\n strokeLinecap: \"round\",\n points: \"399 155.061221 408.959102 165 429 145\"\n }), /*#__PURE__*/React.createElement(\"polyline\", {\n id: \"Path-6-Copy\",\n stroke: \"#2B11E1\",\n strokeWidth: 5,\n strokeLinecap: \"round\",\n points: \"591 155.061221 600.959102 165 621 145\"\n }), /*#__PURE__*/React.createElement(\"polyline\", {\n id: \"Path-6-Copy-2\",\n stroke: \"#2B11E1\",\n strokeWidth: 5,\n strokeLinecap: \"round\",\n points: \"774 155.061221 783.959102 165 804 145\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle\",\n fillOpacity: 0.2,\n fill: \"#0AEDC2\",\n x: 326,\n y: 428,\n width: 127,\n height: 126\n }), /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle\",\n fillOpacity: 0.1,\n fill: \"#1D1554\",\n x: 475,\n y: 428,\n width: 173,\n height: 26,\n rx: 3\n }), /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle-Copy-4\",\n fillOpacity: 0.1,\n fill: \"#1D1554\",\n x: 299,\n y: 248,\n width: 134,\n height: 26,\n rx: 3\n }), /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle-Copy-6\",\n fillOpacity: 0.1,\n fill: \"#1D1554\",\n x: 484,\n y: 248,\n width: 134,\n height: 26,\n rx: 3\n }), /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle-Copy-7\",\n fillOpacity: 0.1,\n fill: \"#1D1554\",\n x: 669,\n y: 248,\n width: 134,\n height: 26,\n rx: 3\n }), /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle-Copy-27\",\n fill: \"#0AEDC2\",\n x: 475,\n y: 528,\n width: 87,\n height: 26,\n rx: 13\n }), /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle-Copy-24\",\n fillOpacity: 0.1,\n fill: \"#1D1554\",\n x: 475,\n y: 474,\n width: 146,\n height: 6,\n rx: 2\n }), /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle-Copy-31\",\n fillOpacity: 0.1,\n fill: \"#1D1554\",\n x: 299,\n y: 294,\n width: 113,\n height: 6,\n rx: 2\n }), /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle-Copy-34\",\n fillOpacity: 0.1,\n fill: \"#1D1554\",\n x: 484,\n y: 294,\n width: 113,\n height: 6,\n rx: 2\n }), /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle-Copy-37\",\n fillOpacity: 0.1,\n fill: \"#1D1554\",\n x: 669,\n y: 294,\n width: 113,\n height: 6,\n rx: 2\n }), /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle-Copy-26\",\n fillOpacity: 0.1,\n fill: \"#1D1554\",\n x: 475,\n y: 504,\n width: 146,\n height: 6,\n rx: 2\n }), /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle-Copy-32\",\n fillOpacity: 0.1,\n fill: \"#1D1554\",\n x: 299,\n y: 324,\n width: 113,\n height: 6,\n rx: 2\n }), /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle-Copy-35\",\n fillOpacity: 0.1,\n fill: \"#1D1554\",\n x: 484,\n y: 324,\n width: 113,\n height: 6,\n rx: 2\n }), /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle-Copy-38\",\n fillOpacity: 0.1,\n fill: \"#1D1554\",\n x: 669,\n y: 324,\n width: 113,\n height: 6,\n rx: 2\n }), /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle-Copy-25\",\n fillOpacity: 0.1,\n fill: \"#1D1554\",\n x: 475,\n y: 489,\n width: 76,\n height: 6,\n rx: 2\n }), /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle-Copy-33\",\n fillOpacity: 0.1,\n fill: \"#1D1554\",\n x: 299,\n y: 309,\n width: 59,\n height: 6,\n rx: 2\n }), /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle-Copy-36\",\n fillOpacity: 0.1,\n fill: \"#1D1554\",\n x: 484,\n y: 309,\n width: 59,\n height: 6,\n rx: 2\n }), /*#__PURE__*/React.createElement(\"rect\", {\n id: \"Rectangle-Copy-39\",\n fillOpacity: 0.1,\n fill: \"#1D1554\",\n x: 669,\n y: 309,\n width: 59,\n height: 6,\n rx: 2\n }))))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgGroup);\nexport default __webpack_public_path__ + \"static/media/Group.611eb902a114d4a1301022b0fadf3386.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgChevronLeft(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15 18L9 12L15 6\",\n stroke: \"black\",\n strokeOpacity: 0.65,\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgChevronLeft);\nexport default __webpack_public_path__ + \"static/media/chevron-left.f1fe186d81cf92a4250a9291ca36b8f6.svg\";\nexport { ForwardRef as ReactComponent };","var _g, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgDownvote(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 512,\n height: 512,\n viewBox: \"0 0 512 512\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M475.781 341.356H446.804C426.802 341.356 410.585 325.139 410.585 305.137V68.1333C410.585 48.1314 426.802 31.9144 446.804 31.9144L475.781 31.9144C495.783 31.9144 512 48.1314 512 68.1333L512 305.137C512 325.139 495.789 341.356 475.781 341.356Z\",\n fill: \"#031F84\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M29.9011 105.207C31.918 92.1253 39.3863 76.0019 48.0687 65.9874L60.4843 51.6548C70.9665 39.567 89.4564 31.1252 105.456 31.1252L342.505 31.1252C365.813 31.1252 384.776 50.0874 384.776 73.3966L384.776 316.069C384.776 332.335 375.605 350.854 362.468 361.108C347.763 372.578 320.353 395.887 301.912 423.147C300.601 425.086 299.128 427.521 297.566 430.077C293.487 436.764 288.862 444.332 283.711 450.135C265.877 470.242 240.495 480.875 210.318 480.875C203.942 480.875 197.39 480.391 190.859 479.44C179.072 477.723 168.813 470.926 162.722 460.801C156.436 450.347 155.236 437.62 159.427 425.882L183.547 358.347L74.0622 358.347C61.673 358.347 45.2744 354.473 34.1856 348.933L26.2996 344.991C8.28824 335.983 -2.55088 315.003 0.517605 295.09L29.9011 105.207ZM59.0513 299.223C62.3622 300.879 70.3653 302.768 74.0668 302.768L208.494 302.768C221.47 302.768 232.958 308.52 240.028 318.547C247.091 328.573 248.648 341.327 244.285 353.542L218.853 424.747C228.757 423.39 236.572 419.54 242.151 413.254C244.019 411.149 247.703 405.113 250.144 401.117C252.205 397.749 254.167 394.563 255.89 392.008C278.46 358.656 310.554 331.163 327.928 317.575C328.379 317.025 328.962 315.947 329.206 315.217L329.206 86.7067L105.923 86.7067C104.879 86.9292 103.022 87.7737 102.166 88.4239L90.0667 102.385C88.2377 104.497 85.2492 110.944 84.826 113.706L56.3324 297.874L59.0513 299.223Z\",\n fill: \"#031F84\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 512,\n height: 512,\n fill: \"white\",\n transform: \"matrix(-1 0 0 1 512 0)\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgDownvote);\nexport default __webpack_public_path__ + \"static/media/downvote.7eac648f279ec3acf366d18859f9822f.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgMessageCircle(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 23,\n height: 24,\n viewBox: \"0 0 23 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20.1547 11.5C20.1579 12.8199 19.8687 14.1219 19.3107 15.3C18.6491 16.7118 17.632 17.8992 16.3733 18.7293C15.1147 19.5594 13.6641 19.9994 12.1842 20C10.9466 20.0035 9.72567 19.6951 8.62095 19.1L3.27605 21L5.05769 15.3C4.49969 14.1219 4.21053 12.8199 4.21376 11.5C4.21433 9.92179 4.62692 8.37488 5.40531 7.03258C6.1837 5.69028 7.29715 4.6056 8.62095 3.90003C9.72567 3.30496 10.9466 2.99659 12.1842 3.00003H12.6531C14.6076 3.11502 16.4536 3.99479 17.8377 5.47089C19.2219 6.94699 20.0468 8.91568 20.1547 11V11.5Z\",\n stroke: \"#031E84\",\n strokeOpacity: 0.5,\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgMessageCircle);\nexport default __webpack_public_path__ + \"static/media/message-circle.d4b6bbde13f374d3ac7e065f4da4a0b8.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgSearch(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 40,\n height: 40,\n viewBox: \"0 0 40 40\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.3333 31.6667C25.6971 31.6667 31.6667 25.6971 31.6667 18.3333C31.6667 10.9695 25.6971 5 18.3333 5C10.9695 5 5 10.9695 5 18.3333C5 25.6971 10.9695 31.6667 18.3333 31.6667Z\",\n stroke: \"#1D1554\",\n strokeWidth: 3,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M35 35L27.75 27.75\",\n stroke: \"#1D1554\",\n strokeWidth: 4,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgSearch);\nexport default __webpack_public_path__ + \"static/media/search.547abc6b419445cd418d4b7e8178805a.svg\";\nexport { ForwardRef as ReactComponent };","var _g, _g2, _g3, _g4, _g5, _g6, _g7, _g8, _g9, _g10, _g11, _g12, _g13, _g14, _g15;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgSort(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n width: 512,\n height: 512,\n x: 0,\n y: 0,\n viewBox: \"0 0 401.998 401.998\",\n style: {\n enableBackground: \"new 0 0 512 512\"\n },\n xmlSpace: \"preserve\",\n className: \"\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"g\", {\n xmlns: \"http://www.w3.org/2000/svg\"\n }, /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M73.092,164.452h255.813c4.949,0,9.233-1.807,12.848-5.424c3.613-3.616,5.427-7.898,5.427-12.847 c0-4.949-1.813-9.229-5.427-12.85L213.846,5.424C210.232,1.812,205.951,0,200.999,0s-9.233,1.812-12.85,5.424L60.242,133.331 c-3.617,3.617-5.424,7.901-5.424,12.85c0,4.948,1.807,9.231,5.424,12.847C63.863,162.645,68.144,164.452,73.092,164.452z\",\n fill: \"#1c1454\",\n \"data-original\": \"#000000\",\n style: {},\n className: \"\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M328.905,237.549H73.092c-4.952,0-9.233,1.808-12.85,5.421c-3.617,3.617-5.424,7.898-5.424,12.847 c0,4.949,1.807,9.233,5.424,12.848L188.149,396.57c3.621,3.617,7.902,5.428,12.85,5.428s9.233-1.811,12.847-5.428l127.907-127.906 c3.613-3.614,5.427-7.898,5.427-12.848c0-4.948-1.813-9.229-5.427-12.847C338.139,239.353,333.854,237.549,328.905,237.549z\",\n fill: \"#1c1454\",\n \"data-original\": \"#000000\",\n style: {},\n className: \"\"\n }))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n xmlns: \"http://www.w3.org/2000/svg\"\n })), _g2 || (_g2 = /*#__PURE__*/React.createElement(\"g\", {\n xmlns: \"http://www.w3.org/2000/svg\"\n })), _g3 || (_g3 = /*#__PURE__*/React.createElement(\"g\", {\n xmlns: \"http://www.w3.org/2000/svg\"\n })), _g4 || (_g4 = /*#__PURE__*/React.createElement(\"g\", {\n xmlns: \"http://www.w3.org/2000/svg\"\n })), _g5 || (_g5 = /*#__PURE__*/React.createElement(\"g\", {\n xmlns: \"http://www.w3.org/2000/svg\"\n })), _g6 || (_g6 = /*#__PURE__*/React.createElement(\"g\", {\n xmlns: \"http://www.w3.org/2000/svg\"\n })), _g7 || (_g7 = /*#__PURE__*/React.createElement(\"g\", {\n xmlns: \"http://www.w3.org/2000/svg\"\n })), _g8 || (_g8 = /*#__PURE__*/React.createElement(\"g\", {\n xmlns: \"http://www.w3.org/2000/svg\"\n })), _g9 || (_g9 = /*#__PURE__*/React.createElement(\"g\", {\n xmlns: \"http://www.w3.org/2000/svg\"\n })), _g10 || (_g10 = /*#__PURE__*/React.createElement(\"g\", {\n xmlns: \"http://www.w3.org/2000/svg\"\n })), _g11 || (_g11 = /*#__PURE__*/React.createElement(\"g\", {\n xmlns: \"http://www.w3.org/2000/svg\"\n })), _g12 || (_g12 = /*#__PURE__*/React.createElement(\"g\", {\n xmlns: \"http://www.w3.org/2000/svg\"\n })), _g13 || (_g13 = /*#__PURE__*/React.createElement(\"g\", {\n xmlns: \"http://www.w3.org/2000/svg\"\n })), _g14 || (_g14 = /*#__PURE__*/React.createElement(\"g\", {\n xmlns: \"http://www.w3.org/2000/svg\"\n })), _g15 || (_g15 = /*#__PURE__*/React.createElement(\"g\", {\n xmlns: \"http://www.w3.org/2000/svg\"\n }))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgSort);\nexport default __webpack_public_path__ + \"static/media/sort.045b20d5695d28f733113ce508812f79.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgThumbsUp(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.45007 22H4.63697C4.13958 22 3.66257 21.7893 3.31086 21.4142C2.95916 21.0391 2.76157 20.5304 2.76157 20V13C2.76157 12.4696 2.95916 11.9609 3.31086 11.5858C3.66257 11.2107 4.13958 11 4.63697 11H7.45007M14.014 9V5C14.014 4.20435 13.7176 3.44129 13.19 2.87868C12.6625 2.31607 11.947 2 11.2009 2L7.45007 11V22H18.0273C18.4796 22.0055 18.9185 21.8364 19.2631 21.524C19.6078 21.2116 19.8349 20.7769 19.9027 20.3L21.1968 11.3C21.2376 11.0134 21.2194 10.7207 21.1436 10.4423C21.0678 10.1638 20.9362 9.90629 20.7578 9.68751C20.5794 9.46873 20.3585 9.29393 20.1105 9.17522C19.8625 9.0565 19.5932 8.99672 19.3214 9H14.014Z\",\n stroke: \"#031E84\",\n strokeOpacity: 0.5,\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgThumbsUp);\nexport default __webpack_public_path__ + \"static/media/thumbs-up.923a9c343258bedd6e724a8afc249a3a.svg\";\nexport { ForwardRef as ReactComponent };","var _g, _g2, _g3, _g4, _g5, _g6, _g7, _g8, _g9, _g10, _g11, _g12, _g13, _g14, _g15;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgUpvote(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n width: 512,\n height: 512,\n x: 0,\n y: 0,\n viewBox: \"0 0 563.805 563.805\",\n style: {\n enableBackground: \"new 0 0 512 512\"\n },\n xmlSpace: \"preserve\",\n className: \"\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"g\", {\n xmlns: \"http://www.w3.org/2000/svg\"\n }, /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M39.884,528.668h31.91c22.026,0,39.884-17.859,39.884-39.885V227.79c0-22.026-17.858-39.884-39.884-39.884h-31.91 C17.858,187.906,0,205.764,0,227.79v260.988C0,510.809,17.858,528.668,39.884,528.668z\",\n fill: \"#031f84\",\n \"data-original\": \"#000000\",\n style: {},\n className: \"\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M186.648,529.529h261.037c17.619,0,37.992-9.301,49.528-22.613l13.666-15.77c9.548-11.018,17.772-28.777,20.007-43.189 l32.344-209.096c3.396-21.922-8.543-45.031-28.391-54.952l-8.678-4.339c-12.21-6.108-30.264-10.367-43.911-10.367H361.686 l26.562-74.364c4.614-12.919,3.298-26.934-3.623-38.446c-6.708-11.157-18.006-18.642-30.992-20.539 c-7.191-1.046-14.4-1.579-21.42-1.579c-33.231,0-61.182,11.708-80.827,33.85c-5.667,6.389-10.753,14.719-15.245,22.069 c-1.726,2.821-3.348,5.508-4.804,7.656c-20.294,30.006-50.49,55.68-66.677,68.317c-14.462,11.285-24.566,31.683-24.566,49.596 v267.225C140.093,508.648,160.974,529.529,186.648,529.529z M201.293,216.688c0.269-0.802,0.912-1.983,1.408-2.589 c19.131-14.969,54.48-45.245,79.315-81.959c1.909-2.821,4.076-6.34,6.347-10.061c2.681-4.394,6.738-11.035,8.794-13.348 c6.139-6.922,14.743-11.157,25.649-12.656l-27.999,78.416c-4.805,13.452-3.091,27.497,4.688,38.538s20.441,17.369,34.726,17.369 h148.03c4.082,0,12.883,2.081,16.542,3.911l2.98,1.493L470.401,438.6c-0.471,3.035-3.758,10.141-5.771,12.467l-13.329,15.379 c-0.937,0.709-2.98,1.646-4.131,1.885H201.293V216.688z\",\n fill: \"#031f84\",\n \"data-original\": \"#000000\",\n style: {},\n className: \"\"\n }))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n xmlns: \"http://www.w3.org/2000/svg\"\n })), _g2 || (_g2 = /*#__PURE__*/React.createElement(\"g\", {\n xmlns: \"http://www.w3.org/2000/svg\"\n })), _g3 || (_g3 = /*#__PURE__*/React.createElement(\"g\", {\n xmlns: \"http://www.w3.org/2000/svg\"\n })), _g4 || (_g4 = /*#__PURE__*/React.createElement(\"g\", {\n xmlns: \"http://www.w3.org/2000/svg\"\n })), _g5 || (_g5 = /*#__PURE__*/React.createElement(\"g\", {\n xmlns: \"http://www.w3.org/2000/svg\"\n })), _g6 || (_g6 = /*#__PURE__*/React.createElement(\"g\", {\n xmlns: \"http://www.w3.org/2000/svg\"\n })), _g7 || (_g7 = /*#__PURE__*/React.createElement(\"g\", {\n xmlns: \"http://www.w3.org/2000/svg\"\n })), _g8 || (_g8 = /*#__PURE__*/React.createElement(\"g\", {\n xmlns: \"http://www.w3.org/2000/svg\"\n })), _g9 || (_g9 = /*#__PURE__*/React.createElement(\"g\", {\n xmlns: \"http://www.w3.org/2000/svg\"\n })), _g10 || (_g10 = /*#__PURE__*/React.createElement(\"g\", {\n xmlns: \"http://www.w3.org/2000/svg\"\n })), _g11 || (_g11 = /*#__PURE__*/React.createElement(\"g\", {\n xmlns: \"http://www.w3.org/2000/svg\"\n })), _g12 || (_g12 = /*#__PURE__*/React.createElement(\"g\", {\n xmlns: \"http://www.w3.org/2000/svg\"\n })), _g13 || (_g13 = /*#__PURE__*/React.createElement(\"g\", {\n xmlns: \"http://www.w3.org/2000/svg\"\n })), _g14 || (_g14 = /*#__PURE__*/React.createElement(\"g\", {\n xmlns: \"http://www.w3.org/2000/svg\"\n })), _g15 || (_g15 = /*#__PURE__*/React.createElement(\"g\", {\n xmlns: \"http://www.w3.org/2000/svg\"\n }))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgUpvote);\nexport default __webpack_public_path__ + \"static/media/upvote.b70995895a50e6e8c7cf2ae33a9c9f9c.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgLogoMain(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 169,\n height: 165,\n viewBox: \"0 0 169 165\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M168.498 31.8552C167.498 13.3059 150.117 -0.544411 133.182 0.0164427C115.322 0.611495 97.4343 0.207954 79.5538 0.0643205C76.665 0.0438015 75.9941 0.850884 76.0215 3.65516C76.1584 16.5822 76.0421 29.5092 76.0215 42.4362C75.0768 41.8343 74.1048 41.2666 73.1875 40.6237C62.1183 32.7991 49.7758 30.3162 36.6598 33.0521C13.7411 37.8331 -0.408581 58.4479 0.00899464 78.7823C0.529253 103.925 20.7167 124.177 46.0587 124.205C50.4604 124.211 54.8552 124.034 59.2843 124.642C69.2513 126.017 75.9873 133.158 76.0831 143.116C76.1447 149.464 76.1995 155.818 76.0421 162.158C75.9873 164.47 76.7814 165.051 78.9514 164.955C82.3605 164.798 85.7901 164.743 89.1923 164.976C91.8415 165.154 92.6219 164.374 92.6014 161.659C92.4644 145.339 92.5192 129.027 92.5261 112.707C92.5261 109.677 92.526 106.565 93.8678 103.809C97.6191 96.0593 103.931 92.1402 112.583 92.0718C120.435 92.0102 128.287 91.9965 136.139 91.9692C151.404 91.7161 166.56 78.1188 168.244 62.7706C169.367 52.4905 169.052 42.1421 168.498 31.8552ZM76.0147 90.5739C76.1584 97.8171 76.0489 105.067 76.0489 113.145C66.6021 107.16 56.683 107.461 46.8186 107.762C31.0944 108.241 15.9522 95.2043 16.493 76.8056C16.9174 62.2097 29.3625 49.3785 44.3063 48.544C59.0104 47.7232 72.4276 57.5587 75.3917 72.2914C76.6171 78.3719 75.8915 84.4797 76.0147 90.5739ZM151.972 58.6599C151.404 68.4749 143.231 75.636 133.38 75.7112C128.602 75.7454 123.831 75.7865 119.052 75.8207C119.484 76.915 120.12 77.7973 120.866 78.5565C121.318 79.0148 121.804 79.4252 122.318 79.8219C121.804 79.432 121.318 79.0148 120.866 78.5565C120.12 77.7973 119.484 76.915 119.052 75.8207C110.619 75.3966 102.267 75.4718 94.655 79.8834C92.5945 81.0804 92.704 79.7125 92.6903 78.3514C92.6356 71.3544 92.5671 64.3642 92.5055 57.3672C93.0121 49.0159 92.6493 40.6578 92.6767 32.3066C92.6903 27.895 92.7314 23.4834 92.663 19.0718C92.6356 17.3892 92.8067 16.4043 94.9767 16.418C108.401 16.5138 121.825 16.3086 135.242 16.5274C143.826 16.6711 151.644 24.4957 152.075 33.5651C152.479 41.9095 152.452 50.3155 151.972 58.6599Z\",\n fill: \"url(#paint0_linear)\"\n })), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear\",\n x1: 175.932,\n y1: 11.2882,\n x2: 0.113026,\n y2: 146.175,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.227438,\n stopColor: \"#F79F24\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.880351,\n stopColor: \"#F15D3E\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgLogoMain);\nexport default __webpack_public_path__ + \"static/media/logo-main.b1d9d2b98209cab16841187ee743ed66.svg\";\nexport { ForwardRef as ReactComponent };","interface EventType {\n readonly callback: Function;\n readonly once: boolean;\n}\n\ntype EventsType = Record;\n\nconst WILDCARD = '*';\n\n/* event-emitter */\nexport default class EventEmitter {\n private _events: EventsType = {};\n\n /**\n * 监听一个事件\n * @param evt\n * @param callback\n * @param once\n */\n on(evt: string, callback: Function, once?: boolean) {\n if (!this._events[evt]) {\n this._events[evt] = [];\n }\n this._events[evt].push({\n callback,\n once: !!once,\n });\n return this;\n }\n\n /**\n * 监听一个事件一次\n * @param evt\n * @param callback\n */\n once(evt: string, callback: Function) {\n return this.on(evt, callback, true);\n }\n\n /**\n * 触发一个事件\n * @param evt\n * @param args\n */\n emit(evt: string, ...args: any[]) {\n const events = this._events[evt] || [];\n const wildcardEvents = this._events[WILDCARD] || [];\n\n // 实际的处理 emit 方法\n const doEmit = (es: EventType[]) => {\n let length = es.length;\n for (let i = 0; i < length; i++) {\n if (!es[i]) {\n continue;\n }\n const { callback, once } = es[i];\n\n if (once) {\n es.splice(i, 1);\n\n if (es.length === 0) {\n delete this._events[evt];\n }\n\n length--;\n i--;\n }\n\n callback.apply(this, args);\n }\n };\n\n doEmit(events);\n doEmit(wildcardEvents);\n }\n\n /**\n * 取消监听一个事件,或者一个channel\n * @param evt\n * @param callback\n */\n off(evt?: string, callback?: Function) {\n if (!evt) {\n // evt 为空全部清除\n this._events = {};\n } else {\n if (!callback) {\n // evt 存在,callback 为空,清除事件所有方法\n delete this._events[evt];\n } else {\n // evt 存在,callback 存在,清除匹配的\n const events = this._events[evt] || [];\n\n let length = events.length;\n for (let i = 0; i < length; i++) {\n if (events[i].callback === callback) {\n events.splice(i, 1);\n length--;\n i--;\n }\n }\n\n if (events.length === 0) {\n delete this._events[evt];\n }\n }\n }\n\n return this;\n }\n\n /* 当前所有的事件 */\n getEvents() {\n return this._events;\n }\n}\n","import EE from '@antv/event-emitter';\nimport { IBase } from '../interfaces';\nimport { mix } from '../util/util';\nimport { LooseObject } from '../types';\nabstract class Base extends EE implements IBase {\n /**\n * 内部属性,用于 get,set,但是可以用于优化性能使用\n * @type {object}\n */\n cfg: LooseObject;\n\n /**\n * 是否被销毁\n * @type {boolean}\n */\n destroyed: boolean = false;\n\n /**\n * @protected\n * 默认的配置项\n * @returns {object} 默认的配置项\n */\n getDefaultCfg() {\n return {};\n }\n\n constructor(cfg) {\n super();\n const defaultCfg = this.getDefaultCfg();\n this.cfg = mix(defaultCfg, cfg);\n }\n\n // 实现接口的方法\n get(name) {\n return this.cfg[name];\n }\n // 实现接口的方法\n set(name, value) {\n this.cfg[name] = value;\n }\n\n // 实现接口的方法\n destroy() {\n this.cfg = {\n destroyed: true,\n };\n this.off();\n this.destroyed = true;\n }\n}\n\nexport default Base;\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","import { isEqual, isNumber, isFunction } from '@antv/util';\nimport * as d3Timer from 'd3-timer';\nimport { interpolate, interpolateArray } from 'd3-interpolate'; // 目前整体动画只需要数值和数组的差值计算\nimport { getEasing } from './register';\nimport * as PathUtil from '../util/path';\nimport { isColorProp, isGradientColor } from '../util/color';\nimport { ICanvas, IElement } from '../interfaces';\nimport { Animation } from '../types';\n\nconst IDENTITY_MATRIX = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n\n/**\n * 使用 ratio 进行插值计算来更新属性\n * @param {IElement} shape 元素\n * @param {Animation} animation 动画\n * @param {number} ratio 比例\n * @return {boolean} 动画是否执行完成\n */\nfunction _update(shape: IElement, animation: Animation, ratio: number) {\n const cProps = {}; // 此刻属性\n const { fromAttrs, toAttrs } = animation;\n if (shape.destroyed) {\n return;\n }\n let interf; // 差值函数\n for (const k in toAttrs) {\n if (!isEqual(fromAttrs[k], toAttrs[k])) {\n if (k === 'path') {\n let toPath = toAttrs[k];\n let fromPath = fromAttrs[k];\n if (toPath.length > fromPath.length) {\n toPath = PathUtil.parsePathString(toAttrs[k]); // 终点状态\n fromPath = PathUtil.parsePathString(fromAttrs[k]); // 起始状态\n fromPath = PathUtil.fillPathByDiff(fromPath, toPath);\n fromPath = PathUtil.formatPath(fromPath, toPath);\n animation.fromAttrs.path = fromPath;\n animation.toAttrs.path = toPath;\n } else if (!animation.pathFormatted) {\n toPath = PathUtil.parsePathString(toAttrs[k]);\n fromPath = PathUtil.parsePathString(fromAttrs[k]);\n fromPath = PathUtil.formatPath(fromPath, toPath);\n animation.fromAttrs.path = fromPath;\n animation.toAttrs.path = toPath;\n animation.pathFormatted = true;\n }\n cProps[k] = [];\n for (let i = 0; i < toPath.length; i++) {\n const toPathPoint = toPath[i];\n const fromPathPoint = fromPath[i];\n const cPathPoint = [];\n for (let j = 0; j < toPathPoint.length; j++) {\n if (isNumber(toPathPoint[j]) && fromPathPoint && isNumber(fromPathPoint[j])) {\n interf = interpolate(fromPathPoint[j], toPathPoint[j]);\n cPathPoint.push(interf(ratio));\n } else {\n cPathPoint.push(toPathPoint[j]);\n }\n }\n cProps[k].push(cPathPoint);\n }\n } else if (k === 'matrix') {\n /* \n 对矩阵进行插值时,需要保证矩阵不为空,为空则使用单位矩阵\n TODO: 二维和三维场景下单位矩阵不同,之后 WebGL 版需要做进一步处理\n */\n const matrixFn = interpolateArray(fromAttrs[k] || IDENTITY_MATRIX, toAttrs[k] || IDENTITY_MATRIX);\n const currentMatrix = matrixFn(ratio);\n cProps[k] = currentMatrix;\n } else if (isColorProp(k) && isGradientColor(toAttrs[k])) {\n cProps[k] = toAttrs[k];\n } else if (!isFunction(toAttrs[k])) {\n // 非函数类型的值才能做插值\n interf = interpolate(fromAttrs[k], toAttrs[k]);\n cProps[k] = interf(ratio);\n }\n }\n }\n shape.attr(cProps);\n}\n\n/**\n * 根据自定义帧动画函数 onFrame 来更新属性\n * @param {IElement} shape 元素\n * @param {Animation} animation 动画\n * @param {number} elapsed 动画执行时间(毫秒)\n * @return {boolean} 动画是否执行完成\n */\nfunction update(shape: IElement, animation: Animation, elapsed: number) {\n const { startTime, delay } = animation;\n // 如果还没有开始执行或暂停,先不更新\n if (elapsed < startTime + delay || animation._paused) {\n return false;\n }\n let ratio;\n const duration = animation.duration;\n const easing = animation.easing;\n const easeFn = getEasing(easing);\n\n // 已执行时间\n elapsed = elapsed - startTime - animation.delay;\n if (animation.repeat) {\n // 如果动画重复执行,则 elapsed > duration,计算 ratio 时需取模\n ratio = (elapsed % duration) / duration;\n ratio = easeFn(ratio);\n } else {\n ratio = elapsed / duration;\n if (ratio < 1) {\n // 动画未执行完\n ratio = easeFn(ratio);\n } else {\n // 动画已执行完\n if (animation.onFrame) {\n shape.attr(animation.onFrame(1));\n } else {\n shape.attr(animation.toAttrs);\n }\n return true;\n }\n }\n if (animation.onFrame) {\n const attrs = animation.onFrame(ratio);\n shape.attr(attrs);\n } else {\n _update(shape, animation, ratio);\n }\n return false;\n}\n\nclass Timeline {\n /**\n * 画布\n * @type {ICanvas}\n */\n canvas: ICanvas;\n /**\n * 执行动画的元素列表\n * @type {IElement[]}\n */\n animators: IElement[] = [];\n /**\n * 当前时间\n * @type {number}\n */\n current: number = 0;\n /**\n * 定时器\n * @type {d3Timer.Timer}\n */\n timer: d3Timer.Timer = null;\n\n /**\n * 时间轴构造函数,依赖于画布\n * @param {}\n */\n constructor(canvas: ICanvas) {\n this.canvas = canvas;\n }\n\n /**\n * 初始化定时器\n */\n initTimer() {\n let isFinished = false;\n let shape: IElement;\n let animations: Animation[];\n let animation: Animation;\n this.timer = d3Timer.timer((elapsed) => {\n this.current = elapsed;\n if (this.animators.length > 0) {\n for (let i = this.animators.length - 1; i >= 0; i--) {\n shape = this.animators[i];\n if (shape.destroyed) {\n // 如果已经被销毁,直接移出队列\n this.removeAnimator(i);\n continue;\n }\n if (!shape.isAnimatePaused()) {\n animations = shape.get('animations');\n for (let j = animations.length - 1; j >= 0; j--) {\n animation = animations[j];\n isFinished = update(shape, animation, elapsed);\n if (isFinished) {\n animations.splice(j, 1);\n isFinished = false;\n if (animation.callback) {\n animation.callback();\n }\n }\n }\n }\n if (animations.length === 0) {\n this.removeAnimator(i);\n }\n }\n const autoDraw = this.canvas.get('autoDraw');\n // 非自动渲染模式下,手动调用 canvas.draw() 重新渲染\n if (!autoDraw) {\n this.canvas.draw();\n }\n }\n });\n }\n\n /**\n * 增加动画元素\n */\n addAnimator(shape) {\n this.animators.push(shape);\n }\n\n /**\n * 移除动画元素\n */\n removeAnimator(index) {\n this.animators.splice(index, 1);\n }\n\n /**\n * 是否有动画在执行\n */\n isAnimating() {\n return !!this.animators.length;\n }\n\n /**\n * 停止定时器\n */\n stop() {\n if (this.timer) {\n this.timer.stop();\n }\n }\n\n /**\n * 停止时间轴上所有元素的动画,并置空动画元素列表\n * @param {boolean} toEnd 是否到动画的最终状态,用来透传给动画元素的 stopAnimate 方法\n */\n stopAllAnimations(toEnd = true) {\n this.animators.forEach((animator) => {\n animator.stopAnimate(toEnd);\n });\n this.animators = [];\n this.canvas.draw();\n }\n\n /**\n * 获取当前时间\n */\n getTime() {\n return this.current;\n }\n}\n\nexport default Timeline;\n","export const isColorProp = (prop) => ['fill', 'stroke', 'fillStyle', 'strokeStyle'].includes(prop);\n\nexport const isGradientColor = (val) => /^[r,R,L,l]{1}[\\s]*\\(/.test(val);\n","/**\n * @fileoverview 事件处理器\n * @author dxq613@gmail.com\n */\nimport GraphEvent from './graph-event';\nimport { ICanvas, IShape } from '../interfaces';\nimport { each, isParent } from '../util/util';\nconst CLICK_OFFSET = 40;\nconst LEFT_BTN_CODE = 0;\nconst DELEGATION_SPLIT = ':';\n\nconst EVENTS = [\n 'mousedown',\n 'mouseup',\n 'dblclick',\n 'mouseout',\n 'mouseover',\n 'mousemove',\n 'mouseleave',\n 'mouseenter',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'dragenter',\n 'dragover',\n 'dragleave',\n 'drop',\n 'contextmenu',\n 'mousewheel',\n];\n\n// 是否有委托事件监听\nfunction hasDelegation(events, type) {\n for (const key in events) {\n if (events.hasOwnProperty(key) && key.indexOf(DELEGATION_SPLIT + type) >= 0) {\n return true;\n }\n }\n return false;\n}\n\n// 触发目标事件,目标只能是 shape 或 canvas\nfunction emitTargetEvent(target, type, eventObj) {\n eventObj.name = type;\n eventObj.target = target;\n eventObj.currentTarget = target;\n eventObj.delegateTarget = target;\n target.emit(type, eventObj);\n}\n\n// 事件冒泡, enter 和 leave 需要对 fromShape 和 toShape 进行判同\nfunction bubbleEvent(container, type, eventObj) {\n if (eventObj.bubbles) {\n let relativeShape;\n let isOverEvent = false;\n if (type === 'mouseenter') {\n relativeShape = eventObj.fromShape;\n isOverEvent = true;\n } else if (type === 'mouseleave') {\n isOverEvent = true;\n relativeShape = eventObj.toShape;\n }\n // canvas 上的 mouseenter, mouseleave 事件,仅当进入或者移出 canvas 时触发\n if (container.isCanvas() && isOverEvent) {\n return;\n }\n // 如果相关图形同当前图形在同一个容器内,不触发事件\n if (relativeShape && isParent(container, relativeShape)) {\n // 阻止继续向上冒泡\n eventObj.bubbles = false;\n return;\n }\n // 事件名称可能在委托过程中被修改,因此事件冒泡时需要重新设置事件名称\n eventObj.name = type;\n eventObj.currentTarget = container;\n eventObj.delegateTarget = container;\n container.emit(type, eventObj);\n }\n}\n\nclass EventController {\n // 画布容器\n private canvas: ICanvas;\n // 正在被拖拽的图形\n private draggingShape: IShape = null;\n private dragging: boolean = false;\n // 当前鼠标/touch所在位置的图形\n private currentShape: IShape = null;\n private mousedownShape: IShape = null;\n private mousedownPoint = null;\n private mousedownTimeStamp;\n\n constructor(cfg) {\n this.canvas = cfg.canvas;\n }\n\n init() {\n this._bindEvents();\n }\n\n // 注册事件\n _bindEvents() {\n const el = this.canvas.get('el');\n each(EVENTS, (eventName) => {\n el.addEventListener(eventName, this._eventCallback);\n });\n\n if (document) {\n // 处理移动到外面没有触发 shape mouse leave 的事件\n // 处理拖拽到外部的问题\n document.addEventListener('mousemove', this._onDocumentMove);\n // 处理拖拽过程中在外部释放鼠标的问题\n document.addEventListener('mouseup', this._onDocumentMouseUp);\n }\n }\n\n // 清理事件\n _clearEvents() {\n const el = this.canvas.get('el');\n each(EVENTS, (eventName) => {\n el.removeEventListener(eventName, this._eventCallback);\n });\n if (document) {\n document.removeEventListener('mousemove', this._onDocumentMove);\n document.removeEventListener('mouseup', this._onDocumentMouseUp);\n }\n }\n\n _getEventObj(type, event, point, target, fromShape, toShape) {\n const eventObj = new GraphEvent(type, event);\n eventObj.fromShape = fromShape;\n eventObj.toShape = toShape;\n eventObj.x = point.x;\n eventObj.y = point.y;\n eventObj.clientX = point.clientX;\n eventObj.clientY = point.clientY;\n\n eventObj.propagationPath.push(target);\n // 事件的x,y应该是基于画布左上角的,与canvas的matrix无关\n return eventObj;\n }\n\n // 统一处理所有的回调\n _eventCallback = (ev) => {\n const type = ev.type;\n this._triggerEvent(type, ev);\n };\n\n // 根据点获取图形,提取成独立方法,便于后续优化\n _getShape(point, ev: Event) {\n return this.canvas.getShape(point.x, point.y, ev);\n }\n // 获取事件的当前点的信息\n _getPointInfo(ev) {\n const canvas = this.canvas;\n const clientPoint = canvas.getClientByEvent(ev);\n const point = canvas.getPointByEvent(ev);\n return {\n x: point.x,\n y: point.y,\n clientX: clientPoint.x,\n clientY: clientPoint.y,\n };\n }\n\n // 触发事件\n _triggerEvent(type, ev) {\n const pointInfo = this._getPointInfo(ev);\n // 每次都获取图形有一定成本,后期可以考虑进行缓存策略\n const shape = this._getShape(pointInfo, ev);\n const method = this[`_on${type}`];\n let leaveCanvas = false;\n if (method) {\n method.call(this, pointInfo, shape, ev);\n } else {\n const preShape = this.currentShape;\n // 如果进入、移出画布时存在图形,则要分别触发事件\n if (type === 'mouseenter' || type === 'dragenter' || type === 'mouseover') {\n this._emitEvent(type, ev, pointInfo, null, null, shape); // 先进入画布\n if (shape) {\n this._emitEvent(type, ev, pointInfo, shape, null, shape); // 再触发图形的事件\n }\n if (type === 'mouseenter' && this.draggingShape) {\n // 如果正在拖拽图形, 则触发 dragleave\n this._emitEvent('dragenter', ev, pointInfo, null);\n }\n } else if (type === 'mouseleave' || type === 'dragleave' || type === 'mouseout') {\n leaveCanvas = true;\n if (preShape) {\n this._emitEvent(type, ev, pointInfo, preShape, preShape, null); // 先触发图形的事件\n }\n this._emitEvent(type, ev, pointInfo, null, preShape, null); // 再触发离开画布事件\n if (type === 'mouseleave' && this.draggingShape) {\n this._emitEvent('dragleave', ev, pointInfo, null);\n }\n } else {\n this._emitEvent(type, ev, pointInfo, shape, null, null); // 一般事件中不需要考虑 from, to\n }\n }\n if (!leaveCanvas) {\n this.currentShape = shape;\n }\n // 当鼠标从画布移动到 shape 或者从 preShape 移动到 shape 时,应用 shape 上的鼠标样式\n if (shape && !shape.get('destroyed')) {\n const canvas = this.canvas;\n const el = canvas.get('el');\n el.style.cursor = shape.attr('cursor') || canvas.get('cursor');\n }\n }\n\n // 在 document 处理拖拽到画布外的事件,处理从图形上移除画布未被捕捉的问题\n _onDocumentMove = (ev: Event) => {\n const canvas = this.canvas;\n const el = canvas.get('el');\n if (el !== ev.target) {\n // 不在 canvas 上移动\n if (this.dragging || this.currentShape) {\n const pointInfo = this._getPointInfo(ev);\n // 还在拖拽过程中\n if (this.dragging) {\n this._emitEvent('drag', ev, pointInfo, this.draggingShape);\n }\n // 说明从某个图形直接移动到了画布外面,\n // 修复了 mouseleave 的 bug 后不再出现这种情况\n // if (this.currentShape) {\n // this._emitEvent('mouseleave', ev, pointInfo, this.currentShape, this.currentShape, null);\n // this.currentShape = null;\n // }\n }\n }\n };\n // 在 document 上处理拖拽到外面,释放鼠标时触发 dragend\n _onDocumentMouseUp = (ev) => {\n const canvas = this.canvas;\n const el = canvas.get('el');\n if (el !== ev.target) {\n // 不在 canvas 上移动\n if (this.dragging) {\n const pointInfo = this._getPointInfo(ev);\n if (this.draggingShape) {\n // 如果存在拖拽的图形,则也触发 drop 事件\n this._emitEvent('drop', ev, pointInfo, null);\n }\n this._emitEvent('dragend', ev, pointInfo, this.draggingShape);\n this._afterDrag(this.draggingShape, pointInfo, ev);\n }\n }\n };\n\n // 记录下点击的位置、图形,便于拖拽事件、click 事件的判定\n _onmousedown(pointInfo, shape, event) {\n // 只有鼠标左键的 mousedown 事件才会设置 mousedownShape 等属性,避免鼠标右键的 mousedown 事件引起其他事件发生\n if (event.button === LEFT_BTN_CODE) {\n this.mousedownShape = shape;\n this.mousedownPoint = pointInfo;\n this.mousedownTimeStamp = event.timeStamp;\n }\n this._emitEvent('mousedown', event, pointInfo, shape, null, null); // mousedown 不考虑fromShape, toShape\n }\n\n // mouseleave 和 mouseenter 都是成对存在的\n // mouseenter 和 mouseover 同时触发\n _emitMouseoverEvents(event, pointInfo, fromShape, toShape) {\n const el = this.canvas.get('el');\n if (fromShape !== toShape) {\n if (fromShape) {\n this._emitEvent('mouseout', event, pointInfo, fromShape, fromShape, toShape);\n this._emitEvent('mouseleave', event, pointInfo, fromShape, fromShape, toShape);\n // 当鼠标从 fromShape 移动到画布上时,重置鼠标样式\n if (!toShape || toShape.get('destroyed')) {\n el.style.cursor = this.canvas.get('cursor');\n }\n }\n if (toShape) {\n this._emitEvent('mouseover', event, pointInfo, toShape, fromShape, toShape);\n this._emitEvent('mouseenter', event, pointInfo, toShape, fromShape, toShape);\n }\n }\n }\n // dragover 不等同于 mouseover,而等同于 mousemove\n _emitDragoverEvents(event, pointInfo, fromShape, toShape, isCanvasEmit) {\n if (toShape) {\n if (toShape !== fromShape) {\n if (fromShape) {\n this._emitEvent('dragleave', event, pointInfo, fromShape, fromShape, toShape);\n }\n this._emitEvent('dragenter', event, pointInfo, toShape, fromShape, toShape);\n }\n if (!isCanvasEmit) {\n this._emitEvent('dragover', event, pointInfo, toShape);\n }\n } else if (fromShape) {\n // TODO: 此处判断有问题,当 drag 图形时,也会触发一次 dragleave 事件,因为此时 toShape 为 null,这不是所期望的\n // 经过空白区域\n this._emitEvent('dragleave', event, pointInfo, fromShape, fromShape, toShape);\n }\n\n if (isCanvasEmit) {\n this._emitEvent('dragover', event, pointInfo, toShape);\n }\n }\n\n // drag 完成后,需要做一些清理工作\n _afterDrag(draggingShape, pointInfo, event) {\n if (draggingShape) {\n draggingShape.set('capture', true); // 恢复可以拾取\n this.draggingShape = null;\n }\n this.dragging = false;\n // drag 完成后,有可能 draggingShape 已经移动到了当前位置,所以不能直接取当前图形\n const shape = this._getShape(pointInfo, event);\n // 拖拽完成后,进行 enter,leave 的判定\n if (shape !== draggingShape) {\n this._emitMouseoverEvents(event, pointInfo, draggingShape, shape);\n }\n this.currentShape = shape; // 更新当前 shape,如果不处理当前图形的 mouseleave 事件可能会出问题\n }\n // 按键抬起时,会终止拖拽、触发点击\n _onmouseup(pointInfo, shape, event) {\n // eevent.button === 0 表示鼠标左键事件,此处加上判断主要是为了避免右键鼠标会触发 mouseup 和 click 事件\n // ref: https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button\n if (event.button === LEFT_BTN_CODE) {\n const draggingShape = this.draggingShape;\n if (this.dragging) {\n // 存在可以拖拽的图形,同时拖拽到其他图形上时触发 drag 事件\n if (draggingShape) {\n this._emitEvent('drop', event, pointInfo, shape);\n }\n this._emitEvent('dragend', event, pointInfo, draggingShape);\n this._afterDrag(draggingShape, pointInfo, event);\n } else {\n this._emitEvent('mouseup', event, pointInfo, shape); // 先触发 mouseup 再触发 click\n if (shape === this.mousedownShape) {\n this._emitEvent('click', event, pointInfo, shape);\n }\n this.mousedownShape = null;\n this.mousedownPoint = null;\n }\n }\n }\n\n // 当触发浏览器的 dragover 事件时,不会再触发 mousemove ,所以这时候的 dragenter, dragleave 事件需要重新处理\n _ondragover(pointInfo, shape, event) {\n event.preventDefault(); // 如果不对 dragover 进行 preventDefault,则不会在 canvas 上触发 drop 事件\n const preShape = this.currentShape;\n this._emitDragoverEvents(event, pointInfo, preShape, shape, true);\n }\n\n // 大量的图形事件,都通过 mousemove 模拟\n _onmousemove(pointInfo, shape, event) {\n const canvas = this.canvas;\n const preShape = this.currentShape;\n let draggingShape = this.draggingShape;\n // 正在拖拽时\n if (this.dragging) {\n // 正在拖拽中\n if (draggingShape) {\n // 如果拖拽了 shape 会触发 dragenter, dragleave, dragover 和 drag 事件\n this._emitDragoverEvents(event, pointInfo, preShape, shape, false);\n }\n // 如果存在 draggingShape 则会在 draggingShape 上触发 drag 事件,冒泡到 canvas 上\n // 否则在 canvas 上触发 drag 事件\n this._emitEvent('drag', event, pointInfo, draggingShape);\n } else {\n const mousedownPoint = this.mousedownPoint;\n if (mousedownPoint) {\n // 当鼠标点击下去,同时移动时,进行 drag 判定\n const mousedownShape = this.mousedownShape;\n const now = event.timeStamp;\n const timeWindow = now - this.mousedownTimeStamp;\n const dx = mousedownPoint.clientX - pointInfo.clientX;\n const dy = mousedownPoint.clientY - pointInfo.clientY;\n const dist = dx * dx + dy * dy;\n if (timeWindow > 120 || dist > CLICK_OFFSET) {\n if (mousedownShape && mousedownShape.get('draggable')) {\n // 设置了 draggable 的 shape 才能触发 drag 相关的事件\n draggingShape = this.mousedownShape; // 拖动鼠标点下时的 shape\n draggingShape.set('capture', false); // 禁止继续拾取,否则无法进行 dragover,dragenter,dragleave,drop的判定\n this.draggingShape = draggingShape;\n this.dragging = true;\n this._emitEvent('dragstart', event, pointInfo, draggingShape);\n // 清理按下鼠标时缓存的值\n this.mousedownShape = null;\n this.mousedownPoint = null;\n } else if (!mousedownShape && canvas.get('draggable')) {\n // 设置了 draggable 的 canvas 才能触发 drag 相关的事件\n this.dragging = true;\n this._emitEvent('dragstart', event, pointInfo, null);\n // 清理按下鼠标时缓存的值\n this.mousedownShape = null;\n this.mousedownPoint = null;\n } else {\n this._emitMouseoverEvents(event, pointInfo, preShape, shape);\n this._emitEvent('mousemove', event, pointInfo, shape);\n }\n } else {\n this._emitMouseoverEvents(event, pointInfo, preShape, shape);\n this._emitEvent('mousemove', event, pointInfo, shape);\n }\n } else {\n // 没有按键按下时,则直接触发 mouse over 相关的各种事件\n this._emitMouseoverEvents(event, pointInfo, preShape, shape);\n // 始终触发移动\n this._emitEvent('mousemove', event, pointInfo, shape);\n }\n }\n }\n\n // 触发事件\n _emitEvent(type, event, pointInfo, shape, fromShape?, toShape?) {\n const eventObj = this._getEventObj(type, event, pointInfo, shape, fromShape, toShape);\n // 存在 shape 触发,则进行冒泡处理\n if (shape) {\n eventObj.shape = shape;\n // 触发 shape 上的事件\n emitTargetEvent(shape, type, eventObj);\n let parent = shape.getParent();\n // 执行冒泡\n while (parent) {\n // 委托事件要先触发\n parent.emitDelegation(type, eventObj);\n // 事件冒泡停止,不能妨碍委托事件\n if (!eventObj.propagationStopped) {\n bubbleEvent(parent, type, eventObj);\n }\n eventObj.propagationPath.push(parent);\n parent = parent.getParent();\n }\n } else {\n // 如果没有 shape 直接在 canvas 上触发\n const canvas = this.canvas;\n // 直接触发 canvas 上的事件\n emitTargetEvent(canvas, type, eventObj);\n }\n }\n\n destroy() {\n // 清理事件\n this._clearEvents();\n // 清理缓存的对象\n this.canvas = null;\n this.currentShape = null;\n this.draggingShape = null;\n this.mousedownPoint = null;\n this.mousedownShape = null;\n this.mousedownTimeStamp = null;\n }\n}\n\nexport default EventController;\n","import { detect } from 'detect-browser';\nimport Container from './container';\nimport { ICanvas } from '../interfaces';\nimport { CanvasCfg, Point, Renderer, Cursor } from '../types';\nimport { isBrowser, isNil, isString } from '../util/util';\nimport Timeline from '../animate/timeline';\nimport EventController from '../event/event-contoller';\n\nconst PX_SUFFIX = 'px';\n\nconst browser = detect();\nconst isFirefox = browser && browser.name === 'firefox';\n\nabstract class Canvas extends Container implements ICanvas {\n constructor(cfg: CanvasCfg) {\n super(cfg);\n this.initContainer();\n this.initDom();\n this.initEvents();\n this.initTimeline();\n }\n\n getDefaultCfg() {\n const cfg = super.getDefaultCfg();\n // set default cursor style for canvas\n cfg['cursor'] = 'default';\n // CSS transform 目前尚未经过长时间验证,为了避免影响上层业务,默认关闭,上层按需开启\n cfg['supportCSSTransform'] = false;\n return cfg;\n }\n\n /**\n * @protected\n * 初始化容器\n */\n initContainer() {\n let container = this.get('container');\n if (isString(container)) {\n container = document.getElementById(container);\n this.set('container', container);\n }\n }\n\n /**\n * @protected\n * 初始化 DOM\n */\n initDom() {\n const el = this.createDom();\n this.set('el', el);\n // 附加到容器\n const container = this.get('container');\n container.appendChild(el);\n // 设置初始宽度\n this.setDOMSize(this.get('width'), this.get('height'));\n }\n\n /**\n * 创建画布容器\n * @return {HTMLElement} 画布容器\n */\n abstract createDom(): HTMLElement | SVGSVGElement;\n\n /**\n * @protected\n * 初始化绑定的事件\n */\n initEvents() {\n const eventController = new EventController({\n canvas: this,\n });\n eventController.init();\n this.set('eventController', eventController);\n }\n\n /**\n * @protected\n * 初始化时间轴\n */\n initTimeline() {\n const timeline = new Timeline(this);\n this.set('timeline', timeline);\n }\n\n /**\n * @protected\n * 修改画布对应的 DOM 的大小\n * @param {number} width 宽度\n * @param {number} height 高度\n */\n setDOMSize(width: number, height: number) {\n const el = this.get('el');\n if (isBrowser) {\n el.style.width = width + PX_SUFFIX;\n el.style.height = height + PX_SUFFIX;\n }\n }\n\n // 实现接口\n changeSize(width: number, height: number) {\n this.setDOMSize(width, height);\n this.set('width', width);\n this.set('height', height);\n this.onCanvasChange('changeSize');\n }\n\n /**\n * 获取当前的渲染引擎\n * @return {Renderer} 返回当前的渲染引擎\n */\n getRenderer(): Renderer {\n return this.get('renderer');\n }\n\n /**\n * 获取画布的 cursor 样式\n * @return {Cursor}\n */\n getCursor(): Cursor {\n return this.get('cursor');\n }\n\n /**\n * 设置画布的 cursor 样式\n * @param {Cursor} cursor cursor 样式\n */\n setCursor(cursor: Cursor) {\n this.set('cursor', cursor);\n const el = this.get('el');\n if (isBrowser && el) {\n // 直接设置样式,不等待鼠标移动时再设置\n el.style.cursor = cursor;\n }\n }\n\n // 实现接口\n getPointByEvent(ev: Event): Point {\n const supportCSSTransform = this.get('supportCSSTransform');\n if (supportCSSTransform) {\n // For Firefox <= 38\n if (isFirefox && !isNil((ev as any).layerX) && (ev as any).layerX !== (ev as MouseEvent).offsetX) {\n return {\n x: (ev as any).layerX,\n y: (ev as any).layerY,\n };\n }\n if (!isNil((ev as MouseEvent).offsetX)) {\n // For IE6+, Firefox >= 39, Chrome, Safari, Opera\n return {\n x: (ev as MouseEvent).offsetX,\n y: (ev as MouseEvent).offsetY,\n };\n }\n }\n // should calculate by self for other cases, like Safari in ios\n // TODO: support CSS transform\n const { x: clientX, y: clientY } = this.getClientByEvent(ev);\n return this.getPointByClient(clientX, clientY);\n }\n\n // 获取 touch 事件的 clientX 和 clientY 需要单独处理\n getClientByEvent(ev: Event) {\n let clientInfo: MouseEvent | Touch = ev as MouseEvent;\n if ((ev as TouchEvent).touches) {\n if (ev.type === 'touchend') {\n clientInfo = (ev as TouchEvent).changedTouches[0];\n } else {\n clientInfo = (ev as TouchEvent).touches[0];\n }\n }\n return {\n x: clientInfo.clientX,\n y: clientInfo.clientY,\n };\n }\n\n // 实现接口\n getPointByClient(clientX: number, clientY: number): Point {\n const el = this.get('el');\n const bbox = el.getBoundingClientRect();\n return {\n x: clientX - bbox.left,\n y: clientY - bbox.top,\n };\n }\n\n // 实现接口\n getClientByPoint(x: number, y: number): Point {\n const el = this.get('el');\n const bbox = el.getBoundingClientRect();\n return {\n x: x + bbox.left,\n y: y + bbox.top,\n };\n }\n\n // 实现接口\n draw() {}\n\n /**\n * @protected\n * 销毁 DOM 容器\n */\n removeDom() {\n const el = this.get('el');\n el.parentNode.removeChild(el);\n }\n\n /**\n * @protected\n * 清理所有的事件\n */\n clearEvents() {\n const eventController = this.get('eventController');\n eventController.destroy();\n }\n\n isCanvas() {\n return true;\n }\n\n getParent() {\n return null;\n }\n\n destroy() {\n const timeline = this.get('timeline');\n if (this.get('destroyed')) {\n return;\n }\n this.clear();\n // 同初始化时相反顺序调用\n if (timeline) {\n // 画布销毁时自动停止动画\n timeline.stop();\n }\n this.clearEvents();\n this.removeDom();\n super.destroy();\n }\n}\n\nexport default Canvas;\n","import { max, min } from '@antv/util';\nimport { IContainer, IShape, IGroup, IElement, ICanvas } from '../interfaces';\nimport { BBox, ElementFilterFn } from '../types';\nimport Timeline from '../animate/timeline';\nimport Element from './element';\nimport { isFunction, isObject, each, removeFromArray, upperFirst, isAllowCapture } from '../util/util';\n\nconst SHAPE_MAP = {};\nconst INDEX = '_INDEX';\n\n/**\n * 设置 canvas\n * @param {IElement} element 元素\n * @param {ICanvas} canvas 画布\n */\nfunction setCanvas(element: IElement, canvas: ICanvas) {\n element.set('canvas', canvas);\n if (element.isGroup()) {\n const children = element.get('children');\n if (children.length) {\n children.forEach((child) => {\n setCanvas(child, canvas);\n });\n }\n }\n}\n\n/**\n * 设置 timeline\n * @param {IElement} element 元素\n * @param {Timeline} timeline 时间轴\n */\nfunction setTimeline(element: IElement, timeline: Timeline) {\n element.set('timeline', timeline);\n if (element.isGroup()) {\n const children = element.get('children');\n if (children.length) {\n children.forEach((child) => {\n setTimeline(child, timeline);\n });\n }\n }\n}\n\nfunction contains(container: IContainer, element: IElement): boolean {\n const children = container.getChildren();\n return children.indexOf(element) >= 0;\n}\n\nfunction removeChild(container: IContainer, element: IElement, destroy: boolean = true) {\n // 不再调用 element.remove() 方法,会出现循环调用\n if (destroy) {\n element.destroy();\n } else {\n element.set('parent', null);\n element.set('canvas', null);\n }\n removeFromArray(container.getChildren(), element);\n}\n\nfunction getComparer(compare: Function) {\n return function (left, right) {\n const result = compare(left, right);\n return result === 0 ? left[INDEX] - right[INDEX] : result;\n };\n}\n\nabstract class Container extends Element implements IContainer {\n isCanvas() {\n return false;\n }\n\n // 根据子节点确定 BBox\n getBBox(): BBox {\n // 所有的值可能在画布的可视区外\n let minX = Infinity;\n let maxX = -Infinity;\n let minY = Infinity;\n let maxY = -Infinity;\n // 将可见元素、图形以及不为空的图形分组筛选出来,用于包围盒合并\n const children = this.getChildren().filter(\n (child) =>\n child.get('visible') && (!child.isGroup() || (child.isGroup() && (child as IGroup).getChildren().length > 0))\n );\n if (children.length > 0) {\n each(children, (child: IElement) => {\n const { minX: childMinX, maxX: childMaxX, minY: childMinY, maxY: childMaxY } = child.getBBox();\n if (childMinX < minX) {\n minX = childMinX;\n }\n if (childMaxX > maxX) {\n maxX = childMaxX;\n }\n if (childMinY < minY) {\n minY = childMinY;\n }\n if (childMaxY > maxY) {\n maxY = childMaxY;\n }\n });\n } else {\n minX = 0;\n maxX = 0;\n minY = 0;\n maxY = 0;\n }\n const box = {\n x: minX,\n y: minY,\n minX,\n minY,\n maxX,\n maxY,\n width: maxX - minX,\n height: maxY - minY,\n };\n return box;\n }\n\n // 获取画布的包围盒\n getCanvasBBox(): BBox {\n let minX = Infinity;\n let maxX = -Infinity;\n let minY = Infinity;\n let maxY = -Infinity;\n // 将可见元素、图形以及不为空的图形分组筛选出来,用于包围盒合并\n const children = this.getChildren().filter(\n (child) =>\n child.get('visible') && (!child.isGroup() || (child.isGroup() && (child as IGroup).getChildren().length > 0))\n );\n if (children.length > 0) {\n each(children, (child: IElement) => {\n const { minX: childMinX, maxX: childMaxX, minY: childMinY, maxY: childMaxY } = child.getCanvasBBox();\n if (childMinX < minX) {\n minX = childMinX;\n }\n if (childMaxX > maxX) {\n maxX = childMaxX;\n }\n if (childMinY < minY) {\n minY = childMinY;\n }\n if (childMaxY > maxY) {\n maxY = childMaxY;\n }\n });\n } else {\n minX = 0;\n maxX = 0;\n minY = 0;\n maxY = 0;\n }\n const box = {\n x: minX,\n y: minY,\n minX,\n minY,\n maxX,\n maxY,\n width: maxX - minX,\n height: maxY - minY,\n };\n return box;\n }\n\n getDefaultCfg() {\n const cfg = super.getDefaultCfg();\n cfg['children'] = [];\n return cfg;\n }\n\n onAttrChange(name, value, originValue) {\n super.onAttrChange(name, value, originValue);\n if (name === 'matrix') {\n const totalMatrix = this.getTotalMatrix();\n this._applyChildrenMarix(totalMatrix);\n }\n }\n\n // 不但应用到自己身上还要应用于子元素\n applyMatrix(matrix: number[]) {\n const preTotalMatrix = this.getTotalMatrix();\n super.applyMatrix(matrix);\n const totalMatrix = this.getTotalMatrix();\n // totalMatrix 没有发生变化时,这里仅考虑两者都为 null 时\n // 不继续向下传递矩阵\n if (totalMatrix === preTotalMatrix) {\n return;\n }\n this._applyChildrenMarix(totalMatrix);\n }\n\n // 在子元素上设置矩阵\n _applyChildrenMarix(totalMatrix) {\n const children = this.getChildren();\n each(children, (child) => {\n child.applyMatrix(totalMatrix);\n });\n }\n\n // 兼容老版本的接口\n addShape(...args): IShape {\n const type = args[0];\n let cfg = args[1];\n if (isObject(type)) {\n cfg = type;\n } else {\n cfg['type'] = type;\n }\n let shapeType = SHAPE_MAP[cfg.type];\n if (!shapeType) {\n shapeType = upperFirst(cfg.type);\n SHAPE_MAP[cfg.type] = shapeType;\n }\n const ShapeBase = this.getShapeBase();\n const shape = new ShapeBase[shapeType](cfg);\n this.add(shape);\n return shape;\n }\n\n addGroup(...args): IGroup {\n const [groupClass, cfg] = args;\n let group;\n if (isFunction(groupClass)) {\n if (cfg) {\n group = new groupClass(cfg);\n } else {\n group = new groupClass({\n // canvas,\n parent: this,\n });\n }\n } else {\n const tmpCfg = groupClass || {};\n const TmpGroupClass = this.getGroupBase();\n group = new TmpGroupClass(tmpCfg);\n }\n this.add(group);\n return group;\n }\n\n getCanvas() {\n let canvas;\n if (this.isCanvas()) {\n canvas = this;\n } else {\n canvas = this.get('canvas');\n }\n return canvas;\n }\n\n getShape(x: number, y: number, ev: Event): IShape {\n // 如果不支持拾取,则直接返回\n if (!isAllowCapture(this)) {\n return null;\n }\n const children = this.getChildren();\n let shape;\n // 如果容器是 group\n if (!this.isCanvas()) {\n let v = [x, y, 1];\n // 将 x, y 转换成对应于 group 的局部坐标\n v = this.invertFromMatrix(v);\n if (!this.isClipped(v[0], v[1])) {\n shape = this._findShape(children, v[0], v[1], ev);\n }\n } else {\n shape = this._findShape(children, x, y, ev);\n }\n return shape;\n }\n\n _findShape(children: IElement[], x: number, y: number, ev: Event) {\n let shape = null;\n for (let i = children.length - 1; i >= 0; i--) {\n const child = children[i];\n if (isAllowCapture(child)) {\n if (child.isGroup()) {\n shape = (child as IGroup).getShape(x, y, ev);\n } else if ((child as IShape).isHit(x, y)) {\n shape = child;\n }\n }\n if (shape) {\n break;\n }\n }\n return shape;\n }\n\n add(element: IElement) {\n const canvas = this.getCanvas();\n const children = this.getChildren();\n const timeline = this.get('timeline');\n const preParent = element.getParent();\n if (preParent) {\n removeChild(preParent, element, false);\n }\n element.set('parent', this);\n if (canvas) {\n setCanvas(element, canvas);\n }\n if (timeline) {\n setTimeline(element, timeline);\n }\n children.push(element);\n element.onCanvasChange('add');\n this._applyElementMatrix(element);\n }\n\n // 将当前容器的矩阵应用到子元素\n _applyElementMatrix(element) {\n const totalMatrix = this.getTotalMatrix();\n // 添加图形或者分组时,需要把当前图元的矩阵设置进去\n if (totalMatrix) {\n element.applyMatrix(totalMatrix);\n }\n }\n\n getChildren(): IElement[] {\n return (this.get('children') || []) as IElement[];\n }\n\n sort() {\n const children = this.getChildren();\n // 稳定排序\n each(children, (child, index) => {\n child[INDEX] = index;\n return child;\n });\n children.sort(\n getComparer((obj1, obj2) => {\n return obj1.get('zIndex') - obj2.get('zIndex');\n })\n );\n this.onCanvasChange('sort');\n }\n\n clear() {\n this.set('clearing', true);\n if (this.destroyed) {\n return;\n }\n const children = this.getChildren();\n for (let i = children.length - 1; i >= 0; i--) {\n children[i].destroy(); // 销毁子元素\n }\n this.set('children', []);\n this.onCanvasChange('clear');\n this.set('clearing', false);\n }\n\n destroy() {\n if (this.get('destroyed')) {\n return;\n }\n this.clear();\n super.destroy();\n }\n\n /**\n * 获取第一个子元素\n * @return {IElement} 第一个元素\n */\n getFirst(): IElement {\n return this.getChildByIndex(0);\n }\n\n /**\n * 获取最后一个子元素\n * @return {IElement} 元素\n */\n getLast(): IElement {\n const children = this.getChildren();\n return this.getChildByIndex(children.length - 1);\n }\n\n /**\n * 根据索引获取子元素\n * @return {IElement} 第一个元素\n */\n getChildByIndex(index: number): IElement {\n const children = this.getChildren();\n return children[index];\n }\n\n /**\n * 子元素的数量\n * @return {number} 子元素数量\n */\n getCount(): number {\n const children = this.getChildren();\n return children.length;\n }\n\n /**\n * 是否包含对应元素\n * @param {IElement} element 元素\n * @return {boolean}\n */\n contain(element: IElement): boolean {\n const children = this.getChildren();\n return children.indexOf(element) > -1;\n }\n\n /**\n * 移除对应子元素\n * @param {IElement} element 子元素\n * @param {boolean} destroy 是否销毁子元素,默认为 true\n */\n removeChild(element: IElement, destroy = true) {\n if (this.contain(element)) {\n element.remove(destroy);\n }\n }\n\n /**\n * 查找所有匹配的元素\n * @param {ElementFilterFn} fn 匹配函数\n * @return {IElement[]} 元素数组\n */\n findAll(fn: ElementFilterFn): IElement[] {\n let rst: IElement[] = [];\n const children = this.getChildren();\n each(children, (element: IElement) => {\n if (fn(element)) {\n rst.push(element);\n }\n if (element.isGroup()) {\n rst = rst.concat((element as IGroup).findAll(fn));\n }\n });\n return rst;\n }\n\n /**\n * 查找元素,找到第一个返回\n * @param {ElementFilterFn} fn 匹配函数\n * @return {IElement|null} 元素,可以为空\n */\n find(fn: ElementFilterFn): IElement {\n let rst: IElement = null;\n const children = this.getChildren();\n each(children, (element: IElement) => {\n if (fn(element)) {\n rst = element;\n } else if (element.isGroup()) {\n rst = (element as IGroup).find(fn);\n }\n if (rst) {\n return false;\n }\n });\n return rst;\n }\n\n /**\n * 根据 ID 查找元素\n * @param {string} id 元素 id\n * @return {IElement|null} 元素\n */\n findById(id: string): IElement {\n return this.find((element) => {\n return element.get('id') === id;\n });\n }\n\n /**\n * 该方法即将废弃,不建议使用\n * 根据 className 查找元素\n * TODO: 该方式定义暂时只给 G6 3.3 以后的版本使用,待 G6 中的 findByClassName 方法移除后,G 也需要同步移除\n * @param {string} className 元素 className\n * @return {IElement | null} 元素\n */\n findByClassName(className: string): IElement {\n return this.find((element) => {\n return element.get('className') === className;\n });\n }\n\n /**\n * 根据 name 查找元素列表\n * @param {string} name 元素名称\n * @return {IElement[]} 元素\n */\n findAllByName(name: string): IElement[] {\n return this.findAll((element) => {\n return element.get('name') === name;\n });\n }\n}\n\nexport default Container;\n","import { each, isEqual, isFunction, isNumber, isObject, isArray, noop, mix, upperFirst, uniqueId } from '@antv/util';\nimport { ext } from '@antv/matrix-util';\nimport { IElement, IShape, IGroup, ICanvas, ICtor } from '../interfaces';\nimport { ClipCfg, ChangeType, OnFrame, ShapeAttrs, AnimateCfg, Animation, BBox, ShapeBase } from '../types';\nimport { removeFromArray, isParent } from '../util/util';\nimport { multiplyMatrix, multiplyVec2, invert } from '../util/matrix';\nimport Base from './base';\nimport GraphEvent from '../event/graph-event';\n\nconst { transform } = ext;\n\nconst MATRIX = 'matrix';\nconst CLONE_CFGS = ['zIndex', 'capture', 'visible', 'type'];\n\n// 可以在 toAttrs 中设置,但不属于绘图属性的字段\nconst RESERVED_PORPS = ['repeat'];\n\nconst DELEGATION_SPLIT = ':';\nconst WILDCARD = '*';\n\n// 需要考虑数组嵌套数组的场景\n// 数组嵌套对象的场景不考虑\nfunction _cloneArrayAttr(arr) {\n const result = [];\n for (let i = 0; i < arr.length; i++) {\n if (isArray(arr[i])) {\n result.push([].concat(arr[i]));\n } else {\n result.push(arr[i]);\n }\n }\n return result;\n}\n\nfunction getFormatFromAttrs(toAttrs, shape) {\n const fromAttrs = {};\n const attrs = shape.attrs;\n for (const k in toAttrs) {\n fromAttrs[k] = attrs[k];\n }\n return fromAttrs;\n}\n\nfunction getFormatToAttrs(props, shape) {\n const toAttrs = {};\n const attrs = shape.attr();\n each(props, (v, k) => {\n if (RESERVED_PORPS.indexOf(k) === -1 && !isEqual(attrs[k], v)) {\n toAttrs[k] = v;\n }\n });\n return toAttrs;\n}\n\nfunction checkExistedAttrs(animations: Animation[], animation: Animation) {\n if (animation.onFrame) {\n return animations;\n }\n const { startTime, delay, duration } = animation;\n const hasOwnProperty = Object.prototype.hasOwnProperty;\n each(animations, (item) => {\n // 后一个动画开始执行的时间 < 前一个动画的结束时间 && 后一个动画的执行时间 > 前一个动画的延迟\n if (startTime + delay < item.startTime + item.delay + item.duration && duration > item.delay) {\n each(animation.toAttrs, (v, k) => {\n if (hasOwnProperty.call(item.toAttrs, k)) {\n delete item.toAttrs[k];\n delete item.fromAttrs[k];\n }\n });\n }\n });\n\n return animations;\n}\n\nabstract class Element extends Base implements IElement {\n /**\n * @protected\n * 图形属性\n * @type {ShapeAttrs}\n */\n attrs: ShapeAttrs = {};\n\n constructor(cfg) {\n super(cfg);\n const attrs = this.getDefaultAttrs();\n mix(attrs, cfg.attrs);\n this.attrs = attrs;\n this.initAttrs(attrs);\n this.initAnimate(); // 初始化动画\n }\n\n // override\n getDefaultCfg() {\n return {\n visible: true,\n capture: true,\n zIndex: 0,\n };\n }\n\n /**\n * @protected\n * 获取默认的属相\n */\n getDefaultAttrs() {\n return {\n matrix: this.getDefaultMatrix(),\n opacity: 1,\n };\n }\n\n abstract getShapeBase(): ShapeBase;\n abstract getGroupBase(): ICtor;\n\n /**\n * @protected\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n onCanvasChange(changeType: ChangeType) {}\n\n /**\n * @protected\n * 初始化属性,有些属性需要加工\n * @param {object} attrs 属性值\n */\n initAttrs(attrs: ShapeAttrs) {}\n\n /**\n * @protected\n * 初始化动画\n */\n initAnimate() {\n this.set('animable', true);\n this.set('animating', false);\n }\n\n isGroup() {\n return false;\n }\n\n getParent(): IGroup {\n return this.get('parent');\n }\n\n getCanvas(): ICanvas {\n return this.get('canvas');\n }\n\n attr(...args) {\n const [name, value] = args;\n if (!name) return this.attrs;\n if (isObject(name)) {\n for (const k in name) {\n this.setAttr(k, name[k]);\n }\n this.afterAttrsChange(name);\n return this;\n }\n if (args.length === 2) {\n this.setAttr(name, value);\n this.afterAttrsChange({\n [name]: value,\n });\n return this;\n }\n return this.attrs[name];\n }\n\n // 在子类上单独实现\n abstract getBBox(): BBox;\n // 子类上单独实现\n abstract getCanvasBBox(): BBox;\n\n // 是否被裁剪,被裁剪则不显示,不参与拾取\n isClipped(refX, refY): boolean {\n const clip = this.getClip();\n return clip && !clip.isHit(refX, refY);\n }\n\n /**\n * 内部设置属性值的接口\n * @param {string} name 属性名\n * @param {any} value 属性值\n */\n setAttr(name: string, value: any) {\n const originValue = this.attrs[name];\n if (originValue !== value) {\n this.attrs[name] = value;\n this.onAttrChange(name, value, originValue);\n }\n }\n\n /**\n * @protected\n * 属性值发生改变\n * @param {string} name 属性名\n * @param {any} value 属性值\n * @param {any} originValue 属性值\n */\n onAttrChange(name: string, value: any, originValue: any) {\n if (name === 'matrix') {\n this.set('totalMatrix', null);\n }\n }\n\n /**\n * 属性更改后需要做的事情\n * @protected\n */\n afterAttrsChange(targetAttrs) {\n if (this.cfg.isClipShape) {\n const applyTo = this.cfg.applyTo;\n if (applyTo) {\n applyTo.onCanvasChange('clip');\n }\n } else {\n this.onCanvasChange('attr');\n }\n }\n\n show() {\n // 不是高频操作直接使用 set\n this.set('visible', true);\n this.onCanvasChange('show');\n return this;\n }\n\n hide() {\n // 不是高频操作直接使用 set\n this.set('visible', false);\n this.onCanvasChange('hide');\n return this;\n }\n\n setZIndex(zIndex: number) {\n this.set('zIndex', zIndex);\n const parent = this.getParent();\n if (parent) {\n // 改变 zIndex 不应该立即触发渲染 (调用 onCanvasChange('zIndex')),需要经过 sort 再触发\n parent.sort();\n }\n return this;\n }\n\n toFront() {\n const parent = this.getParent();\n if (!parent) {\n return;\n }\n const children = parent.getChildren();\n const el = this.get('el');\n const index = children.indexOf(this);\n children.splice(index, 1);\n children.push(this);\n this.onCanvasChange('zIndex');\n }\n\n toBack() {\n const parent = this.getParent();\n if (!parent) {\n return;\n }\n const children = parent.getChildren();\n const el = this.get('el');\n const index = children.indexOf(this);\n children.splice(index, 1);\n children.unshift(this);\n this.onCanvasChange('zIndex');\n }\n\n remove(destroy = true) {\n const parent = this.getParent();\n if (parent) {\n removeFromArray(parent.getChildren(), this);\n if (!parent.get('clearing')) {\n // 如果父元素正在清理,当前元素不触发 remove\n this.onCanvasChange('remove');\n }\n } else {\n this.onCanvasChange('remove');\n }\n if (destroy) {\n this.destroy();\n }\n }\n\n resetMatrix() {\n this.attr(MATRIX, this.getDefaultMatrix());\n this.onCanvasChange('matrix');\n }\n\n getMatrix(): number[] {\n return this.attr(MATRIX);\n }\n\n setMatrix(m: number[]) {\n this.attr(MATRIX, m);\n this.onCanvasChange('matrix');\n }\n\n // 获取总的 matrix\n getTotalMatrix() {\n let totalMatrix = this.cfg.totalMatrix;\n if (!totalMatrix) {\n const currentMatrix = this.attr('matrix');\n const parentMatrix = this.cfg.parentMatrix;\n if (parentMatrix && currentMatrix) {\n totalMatrix = multiplyMatrix(parentMatrix, currentMatrix);\n } else {\n totalMatrix = currentMatrix || parentMatrix;\n }\n this.set('totalMatrix', totalMatrix);\n }\n return totalMatrix;\n }\n\n // 上层分组设置 matrix\n applyMatrix(matrix: number[]) {\n const currentMatrix = this.attr('matrix');\n let totalMatrix = null;\n if (matrix && currentMatrix) {\n totalMatrix = multiplyMatrix(matrix, currentMatrix);\n } else {\n totalMatrix = currentMatrix || matrix;\n }\n this.set('totalMatrix', totalMatrix);\n this.set('parentMatrix', matrix);\n }\n\n /**\n * @protected\n * 获取默认的矩阵\n * @returns {number[]|null} 默认的矩阵\n */\n getDefaultMatrix() {\n return null;\n }\n\n // 将向量应用设置的矩阵\n applyToMatrix(v: number[]): number[] {\n const matrix = this.attr('matrix');\n if (matrix) {\n return multiplyVec2(matrix, v);\n }\n return v;\n }\n\n // 根据设置的矩阵,将向量转换相对于图形/分组的位置\n invertFromMatrix(v: number[]): number[] {\n const matrix = this.attr('matrix');\n if (matrix) {\n const invertMatrix = invert(matrix);\n if (invertMatrix) {\n return multiplyVec2(invertMatrix, v);\n }\n }\n return v;\n }\n\n // 设置 clip\n setClip(clipCfg: ClipCfg) {\n const canvas = this.getCanvas();\n // 应该只设置当前元素的 clip,不应该去修改 clip 本身,方便 clip 被复用\n // TODO: setClip 的传参既 shape 配置,也支持 shape 对象\n // const preShape = this.get('clipShape');\n // if (preShape) {\n // // 将之前的 clipShape 销毁\n // preShape.destroy();\n // }\n let clipShape = null;\n // 如果配置项为 null,则不移除 clipShape\n if (clipCfg) {\n const ShapeBase = this.getShapeBase();\n const shapeType = upperFirst(clipCfg.type);\n const Cons = ShapeBase[shapeType];\n if (Cons) {\n clipShape = new Cons({\n type: clipCfg.type,\n isClipShape: true, // 增加一个标记\n applyTo: this,\n attrs: clipCfg.attrs,\n canvas, // 设置 canvas\n });\n }\n }\n\n this.set('clipShape', clipShape);\n this.onCanvasChange('clip');\n return clipShape;\n }\n\n getClip(): IShape {\n // 高频率调用的地方直接使用 this.cfg.xxx\n const clipShape = this.cfg.clipShape;\n // 未设置时返回 Null,保证一致性\n if (!clipShape) {\n return null;\n }\n return clipShape;\n }\n\n clone() {\n const originAttrs = this.attrs;\n const attrs = {};\n each(originAttrs, (i, k) => {\n if (isArray(originAttrs[k])) {\n attrs[k] = _cloneArrayAttr(originAttrs[k]);\n } else {\n attrs[k] = originAttrs[k];\n }\n });\n const cons = this.constructor;\n // @ts-ignore\n const clone = new cons({ attrs });\n each(CLONE_CFGS, (cfgName) => {\n clone.set(cfgName, this.get(cfgName));\n });\n return clone;\n }\n\n destroy() {\n const destroyed = this.destroyed;\n if (destroyed) {\n return;\n }\n this.attrs = {};\n super.destroy();\n // this.onCanvasChange('destroy');\n }\n\n /**\n * 是否处于动画暂停状态\n * @return {boolean} 是否处于动画暂停状态\n */\n isAnimatePaused() {\n return this.get('_pause').isPaused;\n }\n\n /**\n * 执行动画,支持多种函数签名\n * 1. animate(toAttrs: ElementAttrs, duration: number, easing?: string, callback?: () => void, delay?: number)\n * 2. animate(onFrame: OnFrame, duration: number, easing?: string, callback?: () => void, delay?: number)\n * 3. animate(toAttrs: ElementAttrs, cfg: AnimateCfg)\n * 4. animate(onFrame: OnFrame, cfg: AnimateCfg)\n * 各个参数的含义为:\n * toAttrs 动画最终状态\n * onFrame 自定义帧动画函数\n * duration 动画执行时间\n * easing 动画缓动效果\n * callback 动画执行后的回调\n * delay 动画延迟时间\n */\n animate(...args) {\n if (!this.get('timeline') && !this.get('canvas')) {\n return;\n }\n this.set('animating', true);\n let timeline = this.get('timeline');\n if (!timeline) {\n timeline = this.get('canvas').get('timeline');\n this.set('timeline', timeline);\n }\n let animations = this.get('animations') || [];\n // 初始化 tick\n if (!timeline.timer) {\n timeline.initTimer();\n }\n let [toAttrs, duration, easing = 'easeLinear', callback = noop, delay = 0] = args;\n let onFrame: OnFrame;\n let repeat: boolean;\n let pauseCallback;\n let resumeCallback;\n let animateCfg: AnimateCfg;\n // 第二个参数,既可以是动画最终状态 toAttrs,也可以是自定义帧动画函数 onFrame\n if (isFunction(toAttrs)) {\n onFrame = toAttrs as OnFrame;\n toAttrs = {};\n } else if (isObject(toAttrs) && (toAttrs as any).onFrame) {\n // 兼容 3.0 中的写法,onFrame 和 repeat 可在 toAttrs 中设置\n onFrame = (toAttrs as any).onFrame as OnFrame;\n repeat = (toAttrs as any).repeat;\n }\n // 第二个参数,既可以是执行时间 duration,也可以是动画参数 animateCfg\n if (isObject(duration)) {\n animateCfg = duration as AnimateCfg;\n duration = animateCfg.duration;\n easing = animateCfg.easing || 'easeLinear';\n delay = animateCfg.delay || 0;\n // animateCfg 中的设置优先级更高\n repeat = animateCfg.repeat || repeat || false;\n callback = animateCfg.callback || noop;\n pauseCallback = animateCfg.pauseCallback || noop;\n resumeCallback = animateCfg.resumeCallback || noop;\n } else {\n // 第四个参数,既可以是回调函数 callback,也可以是延迟时间 delay\n if (isNumber(callback)) {\n delay = callback;\n callback = null;\n }\n // 第三个参数,既可以是缓动参数 easing,也可以是回调函数 callback\n if (isFunction(easing)) {\n callback = easing;\n easing = 'easeLinear';\n } else {\n easing = easing || 'easeLinear';\n }\n }\n const formatToAttrs = getFormatToAttrs(toAttrs, this);\n const animation: Animation = {\n fromAttrs: getFormatFromAttrs(formatToAttrs, this),\n toAttrs: formatToAttrs,\n duration,\n easing,\n repeat,\n callback,\n pauseCallback,\n resumeCallback,\n delay,\n startTime: timeline.getTime(),\n id: uniqueId(),\n onFrame,\n pathFormatted: false,\n };\n // 如果动画元素队列中已经有这个图形了\n if (animations.length > 0) {\n // 先检查是否需要合并属性。若有相同的动画,将该属性从前一个动画中删除,直接用后一个动画中\n animations = checkExistedAttrs(animations, animation);\n } else {\n // 否则将图形添加到动画元素队列\n timeline.addAnimator(this);\n }\n animations.push(animation);\n this.set('animations', animations);\n this.set('_pause', { isPaused: false });\n }\n\n /**\n * 停止动画\n * @param {boolean} toEnd 是否到动画的最终状态\n */\n stopAnimate(toEnd = true) {\n const animations = this.get('animations');\n each(animations, (animation: Animation) => {\n // 将动画执行到最后一帧\n if (toEnd) {\n if (animation.onFrame) {\n this.attr(animation.onFrame(1));\n } else {\n this.attr(animation.toAttrs);\n }\n }\n if (animation.callback) {\n // 动画停止时的回调\n animation.callback();\n }\n });\n this.set('animating', false);\n this.set('animations', []);\n }\n\n /**\n * 暂停动画\n */\n pauseAnimate() {\n const timeline = this.get('timeline');\n const animations = this.get('animations');\n const pauseTime = timeline.getTime();\n each(animations, (animation: Animation) => {\n animation._paused = true;\n animation._pauseTime = pauseTime;\n if (animation.pauseCallback) {\n // 动画暂停时的回调\n animation.pauseCallback();\n }\n });\n // 记录下是在什么时候暂停的\n this.set('_pause', {\n isPaused: true,\n pauseTime,\n });\n return this;\n }\n\n /**\n * 恢复动画\n */\n resumeAnimate() {\n const timeline = this.get('timeline');\n const current = timeline.getTime();\n const animations = this.get('animations');\n const pauseTime = this.get('_pause').pauseTime;\n // 之后更新属性需要计算动画已经执行的时长,如果暂停了,就把初始时间调后\n each(animations, (animation: Animation) => {\n animation.startTime = animation.startTime + (current - pauseTime);\n animation._paused = false;\n animation._pauseTime = null;\n if (animation.resumeCallback) {\n animation.resumeCallback();\n }\n });\n this.set('_pause', {\n isPaused: false,\n });\n this.set('animations', animations);\n return this;\n }\n\n /**\n * 触发委托事件\n * @param {string} type 事件类型\n * @param {GraphEvent} eventObj 事件对象\n */\n emitDelegation(type: string, eventObj: GraphEvent) {\n const paths = eventObj.propagationPath;\n const events = this.getEvents();\n let relativeShape;\n if (type === 'mouseenter') {\n relativeShape = eventObj.fromShape;\n } else if (type === 'mouseleave') {\n relativeShape = eventObj.toShape;\n }\n // 至少有一个对象,且第一个对象为 shape\n for (let i = 0; i < paths.length; i++) {\n const element = paths[i];\n // 暂定跟 name 绑定\n const name = element.get('name');\n if (name) {\n // 第一个 mouseenter 和 mouseleave 的停止即可,因为后面的都是前面的 Parent\n if (\n // 只有 element 是 Group 或者 Canvas 的时候,才需要判断 isParent\n (element.isGroup() || (element.isCanvas && element.isCanvas())) &&\n relativeShape &&\n isParent(element, relativeShape)\n ) {\n break;\n }\n if (isArray(name)) {\n each(name, (subName) => {\n this.emitDelegateEvent(element, subName, eventObj);\n });\n } else {\n this.emitDelegateEvent(element, name, eventObj);\n }\n }\n }\n }\n\n private emitDelegateEvent(element, name: string, eventObj: GraphEvent) {\n const events = this.getEvents();\n // 事件委托的形式 name:type\n const eventName = name + DELEGATION_SPLIT + eventObj.type;\n if (events[eventName] || events[WILDCARD]) {\n // 对于通配符 *,事件名称 = 委托事件名称\n eventObj.name = eventName;\n eventObj.currentTarget = element;\n eventObj.delegateTarget = this;\n // 将委托事件的监听对象 delegateObject 挂载到事件对象上\n eventObj.delegateObject = element.get('delegateObject');\n this.emit(eventName, eventObj);\n }\n }\n\n /**\n * 移动元素\n * @param {number} translateX 水平移动距离\n * @param {number} translateY 垂直移动距离\n * @return {IElement} 元素\n */\n translate(translateX: number = 0, translateY: number = 0) {\n const matrix = this.getMatrix();\n const newMatrix = transform(matrix, [['t', translateX, translateY]]);\n this.setMatrix(newMatrix);\n return this;\n }\n\n /**\n * 移动元素到目标位置\n * @param {number} targetX 目标位置的水平坐标\n * @param {number} targetX 目标位置的垂直坐标\n * @return {IElement} 元素\n */\n move(targetX: number, targetY: number) {\n const x = this.attr('x') || 0;\n const y = this.attr('y') || 0;\n this.translate(targetX - x, targetY - y);\n return this;\n }\n\n /**\n * 移动元素到目标位置,等价于 move 方法。由于 moveTo 的语义性更强,因此在文档中推荐使用 moveTo 方法\n * @param {number} targetX 目标位置的 x 轴坐标\n * @param {number} targetY 目标位置的 y 轴坐标\n * @return {IElement} 元素\n */\n moveTo(targetX: number, targetY: number) {\n return this.move(targetX, targetY);\n }\n\n /**\n * 缩放元素\n * @param {number} ratioX 水平缩放比例\n * @param {number} ratioY 垂直缩放比例\n * @return {IElement} 元素\n */\n scale(ratioX: number, ratioY?: number) {\n const matrix = this.getMatrix();\n const newMatrix = transform(matrix, [['s', ratioX, ratioY || ratioX]]);\n this.setMatrix(newMatrix);\n return this;\n }\n\n /**\n * 以画布左上角 (0, 0) 为中心旋转元素\n * @param {number} radian 旋转角度(弧度值)\n * @return {IElement} 元素\n */\n rotate(radian: number) {\n const matrix = this.getMatrix();\n const newMatrix = transform(matrix, [['r', radian]]);\n this.setMatrix(newMatrix);\n return this;\n }\n\n /**\n * 以起始点为中心旋转元素\n * @param {number} radian 旋转角度(弧度值)\n * @return {IElement} 元素\n */\n rotateAtStart(rotate: number): IElement {\n const { x, y } = this.attr();\n const matrix = this.getMatrix();\n const newMatrix = transform(matrix, [\n ['t', -x, -y],\n ['r', rotate],\n ['t', x, y],\n ]);\n this.setMatrix(newMatrix);\n return this;\n }\n\n /**\n * 以任意点 (x, y) 为中心旋转元素\n * @param {number} radian 旋转角度(弧度值)\n * @return {IElement} 元素\n */\n rotateAtPoint(x: number, y: number, rotate: number): IElement {\n const matrix = this.getMatrix();\n const newMatrix = transform(matrix, [\n ['t', -x, -y],\n ['r', rotate],\n ['t', x, y],\n ]);\n this.setMatrix(newMatrix);\n return this;\n }\n}\n\nexport default Element;\n","import { IGroup } from '../interfaces';\nimport Container from './container';\n\nabstract class AbstractGroup extends Container implements IGroup {\n isGroup() {\n return true;\n }\n\n isEntityGroup() {\n return false;\n }\n\n clone() {\n const clone = super.clone();\n // 获取构造函数\n const children = this.getChildren();\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n clone.add(child.clone());\n }\n return clone;\n }\n}\n\nexport default AbstractGroup;\n","import { IShape } from '../interfaces';\nimport { ShapeCfg, ShapeAttrs, BBox } from '../types';\nimport Element from './element';\nimport { multiplyVec2 } from '../util/matrix';\nabstract class AbstractShape extends Element implements IShape {\n constructor(cfg: ShapeCfg) {\n super(cfg);\n }\n\n // 是否在包围盒内\n _isInBBox(refX, refY): boolean {\n const bbox = this.getBBox();\n return bbox.minX <= refX && bbox.maxX >= refX && bbox.minY <= refY && bbox.maxY >= refY;\n }\n\n /**\n * 属性更改后需要做的事情\n * @protected\n * @param {ShapeAttrs} targetAttrs 渲染的图像属性\n */\n afterAttrsChange(targetAttrs: ShapeAttrs) {\n super.afterAttrsChange(targetAttrs);\n this.clearCacheBBox();\n }\n // 计算包围盒时,需要缓存,这是一个高频的操作\n getBBox(): BBox {\n let bbox = this.cfg.bbox;\n if (!bbox) {\n bbox = this.calculateBBox();\n this.set('bbox', bbox);\n }\n return bbox;\n }\n // 计算相对于画布的包围盒\n getCanvasBBox(): BBox {\n let canvasBBox = this.cfg.canvasBBox;\n if (!canvasBBox) {\n canvasBBox = this.calculateCanvasBBox();\n this.set('canvasBBox', canvasBBox);\n }\n return canvasBBox;\n }\n\n /**\n * 计算包围盒的抽象方法\n * @return {BBox} 包围盒\n */\n abstract calculateBBox(): BBox;\n\n applyMatrix(matrix: number[]) {\n super.applyMatrix(matrix);\n // 清理掉缓存的包围盒\n this.set('canvasBBox', null);\n }\n\n /**\n * 计算相对于画布的包围盒,默认等同于 bbox\n * @return {BBox} 包围盒\n */\n calculateCanvasBBox() {\n const bbox = this.getBBox();\n const totalMatrix = this.getTotalMatrix();\n let { minX, minY, maxX, maxY } = bbox;\n if (totalMatrix) {\n const topLeft = multiplyVec2(totalMatrix, [bbox.minX, bbox.minY]);\n const topRight = multiplyVec2(totalMatrix, [bbox.maxX, bbox.minY]);\n const bottomLeft = multiplyVec2(totalMatrix, [bbox.minX, bbox.maxY]);\n const bottomRight = multiplyVec2(totalMatrix, [bbox.maxX, bbox.maxY]);\n minX = Math.min(topLeft[0], topRight[0], bottomLeft[0], bottomRight[0]);\n maxX = Math.max(topLeft[0], topRight[0], bottomLeft[0], bottomRight[0]);\n minY = Math.min(topLeft[1], topRight[1], bottomLeft[1], bottomRight[1]);\n maxY = Math.max(topLeft[1], topRight[1], bottomLeft[1], bottomRight[1]);\n }\n const attrs = this.attrs;\n // 如果存在 shadow 则计算 shadow\n if (attrs.shadowColor) {\n const { shadowBlur = 0, shadowOffsetX = 0, shadowOffsetY = 0 } = attrs;\n const shadowLeft = minX - shadowBlur + shadowOffsetX;\n const shadowRight = maxX + shadowBlur + shadowOffsetX;\n const shadowTop = minY - shadowBlur + shadowOffsetY;\n const shadowBottom = maxY + shadowBlur + shadowOffsetY;\n minX = Math.min(minX, shadowLeft);\n maxX = Math.max(maxX, shadowRight);\n minY = Math.min(minY, shadowTop);\n maxY = Math.max(maxY, shadowBottom);\n }\n return {\n x: minX,\n y: minY,\n minX,\n minY,\n maxX,\n maxY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n\n /**\n * @protected\n * 清理缓存的 bbox\n */\n clearCacheBBox() {\n this.set('bbox', null);\n this.set('canvasBBox', null);\n }\n\n // 实现接口\n isClipShape() {\n return this.get('isClipShape');\n }\n\n /**\n * @protected\n * 不同的图形自己实现是否在图形内部的逻辑,要判断边和填充区域\n * @param {number} refX 相对于图形的坐标 x\n * @param {number} refY 相对于图形的坐标 Y\n * @return {boolean} 点是否在图形内部\n */\n isInShape(refX: number, refY: number): boolean {\n return false;\n }\n\n /**\n * 是否仅仅使用 BBox 检测就可以判定拾取到图形\n * 默认是 false,但是有些图形例如 image、marker 等都可直接使用 BBox 的检测而不需要使用图形拾取\n * @return {Boolean} 仅仅使用 BBox 进行拾取\n */\n isOnlyHitBox() {\n return false;\n }\n\n // 不同的 Shape 各自实现\n isHit(x: number, y: number): boolean {\n const startArrowShape = this.get('startArrowShape');\n const endArrowShape = this.get('endArrowShape');\n let vec = [x, y, 1];\n vec = this.invertFromMatrix(vec);\n const [refX, refY] = vec;\n const inBBox = this._isInBBox(refX, refY);\n // 跳过图形的拾取,在某些图形中可以省略一倍的检测成本\n if (this.isOnlyHitBox()) {\n return inBBox;\n }\n // 被裁减掉的和不在包围盒内的不进行计算\n if (inBBox && !this.isClipped(refX, refY)) {\n // 对图形进行拾取判断\n if (this.isInShape(refX, refY)) {\n return true;\n }\n // 对起始箭头进行拾取判断\n if (startArrowShape && startArrowShape.isHit(refX, refY)) {\n return true;\n }\n // 对结束箭头进行拾取判断\n if (endArrowShape && endArrowShape.isHit(refX, refY)) {\n return true;\n }\n }\n return false;\n }\n}\n\nexport default AbstractShape;\n","export function linear(t) {\n return +t;\n}\n","export function quadIn(t) {\n return t * t;\n}\n\nexport function quadOut(t) {\n return t * (2 - t);\n}\n\nexport function quadInOut(t) {\n return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;\n}\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","var exponent = 3;\n\nexport var polyIn = (function custom(e) {\n e = +e;\n\n function polyIn(t) {\n return Math.pow(t, e);\n }\n\n polyIn.exponent = custom;\n\n return polyIn;\n})(exponent);\n\nexport var polyOut = (function custom(e) {\n e = +e;\n\n function polyOut(t) {\n return 1 - Math.pow(1 - t, e);\n }\n\n polyOut.exponent = custom;\n\n return polyOut;\n})(exponent);\n\nexport var polyInOut = (function custom(e) {\n e = +e;\n\n function polyInOut(t) {\n return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\n }\n\n polyInOut.exponent = custom;\n\n return polyInOut;\n})(exponent);\n","var pi = Math.PI,\n halfPi = pi / 2;\n\nexport function sinIn(t) {\n return (+t === 1) ? 1 : 1 - Math.cos(t * halfPi);\n}\n\nexport function sinOut(t) {\n return Math.sin(t * halfPi);\n}\n\nexport function sinInOut(t) {\n return (1 - Math.cos(pi * t)) / 2;\n}\n","// tpmt is two power minus ten times t scaled to [0,1]\nexport function tpmt(x) {\n return (Math.pow(2, -10 * x) - 0.0009765625) * 1.0009775171065494;\n}\n","import {tpmt} from \"./math.js\";\n\nexport function expIn(t) {\n return tpmt(1 - +t);\n}\n\nexport function expOut(t) {\n return 1 - tpmt(t);\n}\n\nexport function expInOut(t) {\n return ((t *= 2) <= 1 ? tpmt(1 - t) : 2 - tpmt(t - 1)) / 2;\n}\n","export function circleIn(t) {\n return 1 - Math.sqrt(1 - t * t);\n}\n\nexport function circleOut(t) {\n return Math.sqrt(1 - --t * t);\n}\n\nexport function circleInOut(t) {\n return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;\n}\n","var b1 = 4 / 11,\n b2 = 6 / 11,\n b3 = 8 / 11,\n b4 = 3 / 4,\n b5 = 9 / 11,\n b6 = 10 / 11,\n b7 = 15 / 16,\n b8 = 21 / 22,\n b9 = 63 / 64,\n b0 = 1 / b1 / b1;\n\nexport function bounceIn(t) {\n return 1 - bounceOut(1 - t);\n}\n\nexport function bounceOut(t) {\n return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;\n}\n\nexport function bounceInOut(t) {\n return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;\n}\n","var overshoot = 1.70158;\n\nexport var backIn = (function custom(s) {\n s = +s;\n\n function backIn(t) {\n return (t = +t) * t * (s * (t - 1) + t);\n }\n\n backIn.overshoot = custom;\n\n return backIn;\n})(overshoot);\n\nexport var backOut = (function custom(s) {\n s = +s;\n\n function backOut(t) {\n return --t * t * ((t + 1) * s + t) + 1;\n }\n\n backOut.overshoot = custom;\n\n return backOut;\n})(overshoot);\n\nexport var backInOut = (function custom(s) {\n s = +s;\n\n function backInOut(t) {\n return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;\n }\n\n backInOut.overshoot = custom;\n\n return backInOut;\n})(overshoot);\n","import {tpmt} from \"./math.js\";\n\nvar tau = 2 * Math.PI,\n amplitude = 1,\n period = 0.3;\n\nexport var elasticIn = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticIn(t) {\n return a * tpmt(-(--t)) * Math.sin((s - t) / p);\n }\n\n elasticIn.amplitude = function(a) { return custom(a, p * tau); };\n elasticIn.period = function(p) { return custom(a, p); };\n\n return elasticIn;\n})(amplitude, period);\n\nexport var elasticOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticOut(t) {\n return 1 - a * tpmt(t = +t) * Math.sin((t + s) / p);\n }\n\n elasticOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticOut.period = function(p) { return custom(a, p); };\n\n return elasticOut;\n})(amplitude, period);\n\nexport var elasticInOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticInOut(t) {\n return ((t = t * 2 - 1) < 0\n ? a * tpmt(-t) * Math.sin((s - t) / p)\n : 2 - a * tpmt(t) * Math.sin((s + t) / p)) / 2;\n }\n\n elasticInOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticInOut.period = function(p) { return custom(a, p); };\n\n return elasticInOut;\n})(amplitude, period);\n","import * as d3Ease from 'd3-ease';\n\ntype EaseFn = (t: number) => number;\n\ninterface EasingMap {\n [key: string]: EaseFn;\n}\n\nconst EASING_MAP: EasingMap = {};\n\n/**\n * 根据名称获取对应的动画缓动函数\n * @param type 动画缓动函数名称\n */\nexport function getEasing(type: string) {\n // 默认从 d3-ease 中获取\n return EASING_MAP[type.toLowerCase()] || d3Ease[type];\n}\n\n/**\n * 注册动画缓动函数\n * @param type 动画缓动函数名称\n * @param easeFn 动画缓动函数\n */\nexport function registerEasing(type: string, easeFn: EaseFn) {\n EASING_MAP[type.toLowerCase()] = easeFn;\n}\n","import { SimpleBBox } from '../types';\nimport { IShape } from '../interfaces';\ntype BoxMethod = (shape: IShape) => SimpleBBox;\nconst cache: Map = new Map();\n\n/**\n * 注册计算包围盒的算法\n * @param type 方法名\n * @param method 方法\n */\nexport function register(type: string, method: BoxMethod) {\n cache.set(type, method);\n}\n\n/**\n * 获取计算包围盒的算法\n * @param type 方法名\n */\nexport function getMethod(type: string): BoxMethod {\n return cache.get(type);\n}\n","import { SimpleBBox } from '../types';\nimport { IShape } from '../interfaces';\n\nexport default function (shape: IShape): SimpleBBox {\n const attrs = shape.attr();\n const { x, y, width, height } = attrs;\n return {\n x,\n y,\n width,\n height,\n };\n}\n","import { SimpleBBox } from '../types';\nimport { IShape } from '../interfaces';\n\nexport default function (shape: IShape): SimpleBBox {\n const { x, y, r } = shape.attr();\n return {\n x: x - r,\n y: y - r,\n width: r * 2,\n height: r * 2,\n };\n}\n","import { max, min } from '@antv/util';\nimport { BBox } from './types';\n\n/**\n * 两点之间的距离\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @return {number} 距离\n */\nexport function distance(x1: number, y1: number, x2: number, y2: number) {\n const dx = x1 - x2;\n const dy = y1 - y2;\n return Math.sqrt(dx * dx + dy * dy);\n}\n\nexport function isNumberEqual(v1: number, v2: number) {\n return Math.abs(v1 - v2) < 0.001;\n}\n\nexport function getBBoxByArray(xArr: number[], yArr: number[]): BBox {\n const minX = min(xArr);\n const minY = min(yArr);\n const maxX = max(xArr);\n const maxY = max(yArr);\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n}\n\nexport function getBBoxRange(x1: number, y1: number, x2: number, y2: number) {\n return {\n minX: min([x1, x2]),\n maxX: max([x1, x2]),\n minY: min([y1, y2]),\n maxY: max([y1, y2]),\n };\n}\n\nexport function piMod(angle: number) {\n return (angle + Math.PI * 2) % (Math.PI * 2);\n}\n","import line from './line';\nimport { distance, isNumberEqual, getBBoxByArray, piMod } from './util';\nimport { nearestPoint } from './bezier';\nimport { Point } from './types';\n\n// 差值公式\nfunction quadraticAt(p0: number, p1: number, p2: number, t: number) {\n const onet = 1 - t;\n return onet * onet * p0 + 2 * t * onet * p1 + t * t * p2;\n}\n\n// 求极值\nfunction extrema(p0: number, p1: number, p2: number) {\n const a = p0 + p2 - 2 * p1;\n if (isNumberEqual(a, 0)) {\n return [0.5];\n }\n const rst = (p0 - p1) / a;\n if (rst <= 1 && rst >= 0) {\n return [rst];\n }\n return [];\n}\n\nfunction derivativeAt(p0: number, p1: number, p2: number, t: number) {\n return 2 * (1 - t) * (p1 - p0) + 2 * t * (p2 - p1);\n}\n\n// 分割贝塞尔曲线\nfunction divideQuadratic(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, t: number) {\n // 划分点\n const xt = quadraticAt(x1, x2, x3, t);\n const yt = quadraticAt(y1, y2, y3, t);\n\n // 分割的第一条曲线的控制点\n const controlPoint1 = line.pointAt(x1, y1, x2, y2, t);\n // 分割的第二条曲线的控制点\n const controlPoint2 = line.pointAt(x2, y2, x3, y3, t);\n return [\n [x1, y1, controlPoint1.x, controlPoint1.y, xt, yt],\n [xt, yt, controlPoint2.x, controlPoint2.y, x3, y3],\n ];\n}\n\n// 使用迭代法取贝塞尔曲线的长度\nfunction quadraticLength(\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n x3: number,\n y3: number,\n iterationCount: number\n) {\n if (iterationCount === 0) {\n return (distance(x1, y1, x2, y2) + distance(x2, y2, x3, y3) + distance(x1, y1, x3, y3)) / 2;\n }\n const quadratics = divideQuadratic(x1, y1, x2, y2, x3, y3, 0.5);\n const left = quadratics[0];\n const right = quadratics[1];\n left.push(iterationCount - 1);\n right.push(iterationCount - 1);\n return quadraticLength.apply(null, left) + quadraticLength.apply(null, right);\n}\n\nexport default {\n box(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number) {\n const xExtrema = extrema(x1, x2, x3)[0];\n const yExtrema = extrema(y1, y2, y3)[0];\n // 控制点不加入 box 的计算\n const xArr = [x1, x3];\n const yArr = [y1, y3];\n if (xExtrema !== undefined) {\n xArr.push(quadraticAt(x1, x2, x3, xExtrema));\n }\n if (yExtrema !== undefined) {\n yArr.push(quadraticAt(y1, y2, y3, yExtrema));\n }\n return getBBoxByArray(xArr, yArr);\n },\n length(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number) {\n return quadraticLength(x1, y1, x2, y2, x3, y3, 3);\n },\n nearestPoint(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, x0: number, y0: number) {\n return nearestPoint([x1, x2, x3], [y1, y2, y3], x0, y0, quadraticAt);\n },\n pointDistance(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, x0: number, y0: number) {\n const point = this.nearestPoint(x1, y1, x2, y2, x3, y3, x0, y0);\n return distance(point.x, point.y, x0, y0);\n },\n interpolationAt: quadraticAt,\n pointAt(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, t: number): Point {\n return {\n x: quadraticAt(x1, x2, x3, t),\n y: quadraticAt(y1, y2, y3, t),\n };\n },\n divide(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, t: number) {\n return divideQuadratic(x1, y1, x2, y2, x3, y3, t);\n },\n tangentAngle(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, t: number) {\n const dx = derivativeAt(x1, x2, x3, t);\n const dy = derivativeAt(y1, y2, y3, t);\n const angle = Math.atan2(dy, dx);\n return piMod(angle);\n },\n};\n","import { distance, isNumberEqual, getBBoxByArray, piMod } from './util';\nimport line from './line';\nimport { snapLength, nearestPoint } from './bezier';\nimport { Point } from './types';\n\nfunction cubicAt(p0: number, p1: number, p2: number, p3: number, t: number) {\n const onet = 1 - t; // t * t * t 的性能大概是 Math.pow(t, 3) 的三倍\n return onet * onet * onet * p0 + 3 * p1 * t * onet * onet + 3 * p2 * t * t * onet + p3 * t * t * t;\n}\n\nfunction derivativeAt(p0: number, p1: number, p2: number, p3: number, t: number) {\n const onet = 1 - t;\n return 3 * (onet * onet * (p1 - p0) + 2 * onet * t * (p2 - p1) + t * t * (p3 - p2));\n}\n\nfunction extrema(p0: number, p1: number, p2: number, p3: number) {\n const a = -3 * p0 + 9 * p1 - 9 * p2 + 3 * p3;\n const b = 6 * p0 - 12 * p1 + 6 * p2;\n const c = 3 * p1 - 3 * p0;\n const extremas = [];\n let t1: number;\n let t2: number;\n let discSqrt: number;\n\n if (isNumberEqual(a, 0)) {\n if (!isNumberEqual(b, 0)) {\n t1 = -c / b;\n if (t1 >= 0 && t1 <= 1) {\n extremas.push(t1);\n }\n }\n } else {\n const disc = b * b - 4 * a * c;\n if (isNumberEqual(disc, 0)) {\n extremas.push(-b / (2 * a));\n } else if (disc > 0) {\n discSqrt = Math.sqrt(disc);\n t1 = (-b + discSqrt) / (2 * a);\n t2 = (-b - discSqrt) / (2 * a);\n if (t1 >= 0 && t1 <= 1) {\n extremas.push(t1);\n }\n if (t2 >= 0 && t2 <= 1) {\n extremas.push(t2);\n }\n }\n }\n return extremas;\n}\n\n// 分割贝塞尔曲线\nfunction divideCubic(\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n x3: number,\n y3: number,\n x4: number,\n y4: number,\n t: number\n) {\n // 划分点\n const xt = cubicAt(x1, x2, x3, x4, t);\n const yt = cubicAt(y1, y2, y3, y4, t);\n // 计算两点之间的差值点\n const c1 = line.pointAt(x1, y1, x2, y2, t);\n const c2 = line.pointAt(x2, y2, x3, y3, t);\n const c3 = line.pointAt(x3, y3, x4, y4, t);\n const c12 = line.pointAt(c1.x, c1.y, c2.x, c2.y, t);\n const c23 = line.pointAt(c2.x, c2.y, c3.x, c3.y, t);\n return [\n [x1, y1, c1.x, c1.y, c12.x, c12.y, xt, yt],\n [xt, yt, c23.x, c23.y, c3.x, c3.y, x4, y4],\n ];\n}\n\n// 使用迭代法取贝塞尔曲线的长度,二阶和三阶分开写,更清晰和便于调试\nfunction cubicLength(\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n x3: number,\n y3: number,\n x4: number,\n y4: number,\n iterationCount: number\n) {\n if (iterationCount === 0) {\n return snapLength([x1, x2, x3, x4], [y1, y2, y3, y4]);\n }\n const cubics = divideCubic(x1, y1, x2, y2, x3, y3, x4, y4, 0.5);\n const left = cubics[0];\n const right = cubics[1];\n left.push(iterationCount - 1);\n right.push(iterationCount - 1);\n return cubicLength.apply(null, left) + cubicLength.apply(null, right);\n}\n\nexport default {\n extrema,\n box(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, x4: number, y4: number) {\n const xArr = [x1, x4];\n const yArr = [y1, y4];\n const xExtrema = extrema(x1, x2, x3, x4);\n const yExtrema = extrema(y1, y2, y3, y4);\n for (let i = 0; i < xExtrema.length; i++) {\n xArr.push(cubicAt(x1, x2, x3, x4, xExtrema[i]));\n }\n for (let i = 0; i < yExtrema.length; i++) {\n yArr.push(cubicAt(y1, y2, y3, y4, yExtrema[i]));\n }\n return getBBoxByArray(xArr, yArr);\n },\n length(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, x4: number, y4: number) {\n // 迭代三次,划分成 8 段求长度\n return cubicLength(x1, y1, x2, y2, x3, y3, x4, y4, 3);\n },\n nearestPoint(\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n x3: number,\n y3: number,\n x4: number,\n y4: number,\n x0: number,\n y0: number,\n length?: number\n ) {\n return nearestPoint([x1, x2, x3, x4], [y1, y2, y3, y4], x0, y0, cubicAt, length);\n },\n pointDistance(\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n x3: number,\n y3: number,\n x4: number,\n y4: number,\n x0: number,\n y0: number,\n length?: number\n ) {\n const point = this.nearestPoint(x1, y1, x2, y2, x3, y3, x4, y4, x0, y0, length);\n return distance(point.x, point.y, x0, y0);\n },\n interpolationAt: cubicAt,\n pointAt(\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n x3: number,\n y3: number,\n x4: number,\n y4: number,\n t: number\n ): Point {\n return {\n x: cubicAt(x1, x2, x3, x4, t),\n y: cubicAt(y1, y2, y3, y4, t),\n };\n },\n divide(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, x4: number, y4: number, t: number) {\n return divideCubic(x1, y1, x2, y2, x3, y3, x4, y4, t);\n },\n tangentAngle(\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n x3: number,\n y3: number,\n x4: number,\n y4: number,\n t: number\n ) {\n const dx = derivativeAt(x1, x2, x3, x4, t);\n const dy = derivativeAt(y1, y2, y3, y4, t);\n return piMod(Math.atan2(dy, dx));\n },\n};\n","import { distance, piMod } from './util';\nimport ellipse from './ellipse';\nimport { Point, BBox } from './types';\n\n// 偏导数 x\nfunction derivativeXAt(\n cx: number,\n cy: number,\n rx: number,\n ry: number,\n xRotation: number,\n startAngle: number,\n endAngle: number,\n angle: number\n) {\n return -1 * rx * Math.cos(xRotation) * Math.sin(angle) - ry * Math.sin(xRotation) * Math.cos(angle);\n}\n\n// 偏导数 y\nfunction derivativeYAt(\n cx: number,\n cy: number,\n rx: number,\n ry: number,\n xRotation: number,\n startAngle: number,\n endAngle: number,\n angle: number\n) {\n return -1 * rx * Math.sin(xRotation) * Math.sin(angle) + ry * Math.cos(xRotation) * Math.cos(angle);\n}\n\n// x 的极值\nfunction xExtrema(rx: number, ry: number, xRotation: number) {\n return Math.atan((-ry / rx) * Math.tan(xRotation));\n}\n\n// y 的极值\nfunction yExtrema(rx: number, ry: number, xRotation: number) {\n return Math.atan(ry / (rx * Math.tan(xRotation)));\n}\n\n// 根据角度求 x 坐标\nfunction xAt(cx: number, cy: number, rx: number, ry: number, xRotation: number, angle: number) {\n return rx * Math.cos(xRotation) * Math.cos(angle) - ry * Math.sin(xRotation) * Math.sin(angle) + cx;\n}\n\n// 根据角度求 y 坐标\nfunction yAt(cx: number, cy: number, rx: number, ry: number, xRotation: number, angle: number) {\n return rx * Math.sin(xRotation) * Math.cos(angle) + ry * Math.cos(xRotation) * Math.sin(angle) + cy;\n}\n\n// 获取点在椭圆上的角度\nfunction getAngle(rx: number, ry: number, x0: number, y0: number) {\n const angle = Math.atan2(y0 * rx, x0 * ry);\n // 转换到 0 - 2PI 内\n return (angle + Math.PI * 2) % (Math.PI * 2);\n}\n\n// 根据角度获取,x,y\nfunction getPoint(rx: number, ry: number, angle: number): Point {\n return {\n x: rx * Math.cos(angle),\n y: ry * Math.sin(angle),\n };\n}\n\n// 旋转\nfunction rotate(x: number, y: number, angle: number) {\n const cos = Math.cos(angle);\n const sin = Math.sin(angle);\n return [x * cos - y * sin, x * sin + y * cos];\n}\n\nexport default {\n /**\n * 计算包围盒\n * @param {number} cx 圆心 x\n * @param {number} cy 圆心 y\n * @param {number} rx x 轴方向的半径\n * @param {number} ry y 轴方向的半径\n * @param {number} xRotation 旋转角度\n * @param {number} startAngle 起始角度\n * @param {number} endAngle 结束角度\n * @return {object} 包围盒对象\n */\n box(cx: number, cy: number, rx: number, ry: number, xRotation: number, startAngle: number, endAngle: number): BBox {\n const xDim = xExtrema(rx, ry, xRotation);\n let minX = Infinity;\n let maxX = -Infinity;\n const xs = [startAngle, endAngle];\n for (let i = -Math.PI * 2; i <= Math.PI * 2; i += Math.PI) {\n const xAngle = xDim + i;\n if (startAngle < endAngle) {\n if (startAngle < xAngle && xAngle < endAngle) {\n xs.push(xAngle);\n }\n } else {\n if (endAngle < xAngle && xAngle < startAngle) {\n xs.push(xAngle);\n }\n }\n }\n\n for (let i = 0; i < xs.length; i++) {\n const x = xAt(cx, cy, rx, ry, xRotation, xs[i]);\n if (x < minX) {\n minX = x;\n }\n if (x > maxX) {\n maxX = x;\n }\n }\n\n const yDim = yExtrema(rx, ry, xRotation);\n let minY = Infinity;\n let maxY = -Infinity;\n const ys = [startAngle, endAngle];\n for (let i = -Math.PI * 2; i <= Math.PI * 2; i += Math.PI) {\n const yAngle = yDim + i;\n if (startAngle < endAngle) {\n if (startAngle < yAngle && yAngle < endAngle) {\n ys.push(yAngle);\n }\n } else {\n if (endAngle < yAngle && yAngle < startAngle) {\n ys.push(yAngle);\n }\n }\n }\n\n for (let i = 0; i < ys.length; i++) {\n const y = yAt(cx, cy, rx, ry, xRotation, ys[i]);\n if (y < minY) {\n minY = y;\n }\n if (y > maxY) {\n maxY = y;\n }\n }\n\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n },\n /**\n * 获取圆弧的长度,计算圆弧长度时不考虑旋转角度,\n * 仅跟 rx, ry, startAngle, endAngle 相关\n * @param {number} cx 圆心 x\n * @param {number} cy 圆心 y\n * @param {number} rx x 轴方向的半径\n * @param {number} ry y 轴方向的半径\n * @param {number} xRotation 旋转角度\n * @param {number} startAngle 起始角度\n * @param {number} endAngle 结束角度\n */\n length(cx: number, cy: number, rx: number, ry: number, xRotation: number, startAngle: number, endAngle: number) {},\n /**\n * 获取指定点到圆弧的最近距离的点\n * @param {number} cx 圆心 x\n * @param {number} cy 圆心 y\n * @param {number} rx x 轴方向的半径\n * @param {number} ry y 轴方向的半径\n * @param {number} xRotation 旋转角度\n * @param {number} startAngle 起始角度\n * @param {number} endAngle 结束角度\n * @param {number} x0 指定点的 x\n * @param {number} y0 指定点的 y\n * @return {object} 到指定点最近距离的点\n */\n nearestPoint(\n cx: number,\n cy: number,\n rx: number,\n ry: number,\n xRotation: number,\n startAngle: number,\n endAngle: number,\n x0: number,\n y0: number\n ) {\n // 将最近距离问题转换成到椭圆中心 0,0 没有旋转的椭圆问题\n const relativeVector = rotate(x0 - cx, y0 - cy, -xRotation);\n const [x1, y1] = relativeVector;\n // 计算点到椭圆的最近的点\n let relativePoint = ellipse.nearestPoint(0, 0, rx, ry, x1, y1);\n // 获取点在椭圆上的角度\n const angle = getAngle(rx, ry, relativePoint.x, relativePoint.y);\n // 点没有在圆弧上\n if (angle < startAngle) {\n // 小于起始圆弧\n relativePoint = getPoint(rx, ry, startAngle);\n } else if (angle > endAngle) {\n // 大于结束圆弧\n relativePoint = getPoint(rx, ry, endAngle);\n }\n // 旋转到 xRotation 的角度\n const vector = rotate(relativePoint.x, relativePoint.y, xRotation);\n return {\n x: vector[0] + cx,\n y: vector[1] + cy,\n };\n },\n pointDistance(\n cx: number,\n cy: number,\n rx: number,\n ry: number,\n xRotation: number,\n startAngle: number,\n endAngle: number,\n x0: number,\n y0: number\n ) {\n const nearestPoint = this.nearestPoint(cx, cy, rx, ry, x0, y0);\n return distance(nearestPoint.x, nearestPoint.y, x0, y0);\n },\n pointAt(\n cx: number,\n cy: number,\n rx: number,\n ry: number,\n xRotation: number,\n startAngle: number,\n endAngle: number,\n t: number\n ): Point {\n const angle = (endAngle - startAngle) * t + startAngle;\n return {\n x: xAt(cx, cy, rx, ry, xRotation, angle),\n y: yAt(cx, cy, rx, ry, xRotation, angle),\n };\n },\n tangentAngle(\n cx: number,\n cy: number,\n rx: number,\n ry: number,\n xRotation: number,\n startAngle: number,\n endAngle: number,\n t: number\n ) {\n const angle = (endAngle - startAngle) * t + startAngle;\n const dx = derivativeXAt(cx, cy, rx, ry, xRotation, startAngle, endAngle, angle);\n const dy = derivativeYAt(cx, cy, rx, ry, xRotation, startAngle, endAngle, angle);\n return piMod(Math.atan2(dy, dx));\n },\n};\n","import { IShape } from '../interfaces';\n\n// 合并包围盒\nexport function mergeBBox(bbox1, bbox2) {\n if (!bbox1 || !bbox2) {\n return bbox1 || bbox2;\n }\n return {\n minX: Math.min(bbox1.minX, bbox2.minX),\n minY: Math.min(bbox1.minY, bbox2.minY),\n maxX: Math.max(bbox1.maxX, bbox2.maxX),\n maxY: Math.max(bbox1.maxY, bbox2.maxY),\n };\n}\n\n// 合并箭头的包围盒\nexport function mergeArrowBBox(shape: IShape, bbox) {\n const startArrowShape = shape.get('startArrowShape');\n const endArrowShape = shape.get('endArrowShape');\n let startArrowBBox = null;\n let endArrowBBox = null;\n if (startArrowShape) {\n startArrowBBox = startArrowShape.getCanvasBBox();\n bbox = mergeBBox(bbox, startArrowBBox);\n }\n if (endArrowShape) {\n endArrowBBox = endArrowShape.getCanvasBBox();\n bbox = mergeBBox(bbox, endArrowBBox);\n }\n return bbox;\n}\n","import { each, isArray, isString } from '@antv/util';\n\nconst regexTags = /[MLHVQTCSAZ]([^MLHVQTCSAZ]*)/ig;\nconst regexDot = /[^\\s\\,]+/ig;\n\nfunction parsePath(p: string): string[] {\n let path = p || [] as string | string[];\n if (isArray(path)) {\n return path;\n }\n\n if (isString(path)) {\n path = path.match(regexTags);\n each(path, (item, index) => {\n // @ts-ignore\n item = item.match(regexDot);\n if (item[0].length > 1) {\n const tag = item[0].charAt(0);\n // @ts-ignore\n item.splice(1, 0, item[0].substr(1));\n // @ts-ignore\n item[0] = tag;\n }\n // @ts-ignore\n each(item, function (sub, i) {\n if (!isNaN(sub)) {\n // @ts-ignore\n item[i] = +sub;\n }\n });\n // @ts-ignore\n path[index] = item;\n });\n return path;\n }\n}\n\nexport default parsePath;\n","import { isArray } from '@antv/util';\n\nconst SPACES = '\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029';\nconst PATH_COMMAND = new RegExp('([a-z])[' + SPACES + ',]*((-?\\\\d*\\\\.?\\\\d*(?:e[\\\\-+]?\\\\d+)?[' + SPACES + ']*,?[' + SPACES + ']*)+)', 'ig');\nconst PATH_VALUES = new RegExp('(-?\\\\d*\\\\.?\\\\d*(?:e[\\\\-+]?\\\\d+)?)[' + SPACES + ']*,?[' + SPACES + ']*', 'ig');\n\n// Parses given path string into an array of arrays of path segments\nexport default function parsePathString(pathString: string) {\n if (!pathString) {\n return null;\n }\n\n if (isArray(pathString)) {\n return pathString;\n }\n const paramCounts = {\n a: 7,\n c: 6,\n o: 2,\n h: 1,\n l: 2,\n m: 2,\n r: 4,\n q: 4,\n s: 4,\n t: 2,\n v: 1,\n u: 3,\n z: 0,\n };\n const data = [];\n\n String(pathString).replace(PATH_COMMAND, function (a, b, c) {\n const params = [];\n let name = b.toLowerCase();\n c.replace(PATH_VALUES, function (a, b) {\n b && params.push(+b);\n });\n if (name === 'm' && params.length > 2) {\n data.push([ b ].concat(params.splice(0, 2)));\n name = 'l';\n b = b === 'm' ? 'l' : 'L';\n }\n if (name === 'o' && params.length === 1) {\n data.push([ b, params[0] ]);\n }\n if (name === 'r') {\n data.push([ b ].concat(params));\n } else {\n while (params.length >= paramCounts[name]) {\n data.push([ b ].concat(params.splice(0, paramCounts[name])));\n if (!paramCounts[name]) {\n break;\n }\n }\n }\n return '';\n });\n\n return data;\n}\n","const TAU = Math.PI * 2\n\nconst mapToEllipse = ({ x, y }: { x: number, y: number }, rx: number, ry: number, cosphi: number, sinphi: number, centerx: number, centery: number) => {\n x *= rx\n y *= ry\n\n const xp = cosphi * x - sinphi * y\n const yp = sinphi * x + cosphi * y\n\n return {\n x: xp + centerx,\n y: yp + centery\n }\n}\n\nconst approxUnitArc = (ang1: number, ang2: number) => {\n // If 90 degree circular arc, use a constant\n // as derived from http://spencermortensen.com/articles/bezier-circle\n const a = ang2 === 1.5707963267948966\n ? 0.551915024494\n : ang2 === -1.5707963267948966\n ? -0.551915024494\n : 4 / 3 * Math.tan(ang2 / 4)\n\n const x1 = Math.cos(ang1)\n const y1 = Math.sin(ang1)\n const x2 = Math.cos(ang1 + ang2)\n const y2 = Math.sin(ang1 + ang2)\n\n return [\n {\n x: x1 - y1 * a,\n y: y1 + x1 * a\n },\n {\n x: x2 + y2 * a,\n y: y2 - x2 * a\n },\n {\n x: x2,\n y: y2\n }\n ]\n}\n\nconst vectorAngle = (ux: number, uy: number, vx: number, vy: number) => {\n const sign = (ux * vy - uy * vx < 0) ? -1 : 1\n\n let dot = ux * vx + uy * vy\n\n if (dot > 1) {\n dot = 1\n }\n\n if (dot < -1) {\n dot = -1\n }\n\n return sign * Math.acos(dot)\n}\n\nconst getArcCenter = (\n px: any,\n py: any,\n cx: any,\n cy: any,\n rx: number,\n ry: number,\n largeArcFlag: number,\n sweepFlag: number,\n sinphi: number,\n cosphi: number,\n pxp: number,\n pyp: number\n) => {\n const rxsq = Math.pow(rx, 2)\n const rysq = Math.pow(ry, 2)\n const pxpsq = Math.pow(pxp, 2)\n const pypsq = Math.pow(pyp, 2)\n\n let radicant = (rxsq * rysq) - (rxsq * pypsq) - (rysq * pxpsq)\n\n if (radicant < 0) {\n radicant = 0\n }\n\n radicant /= (rxsq * pypsq) + (rysq * pxpsq)\n radicant = Math.sqrt(radicant) * (largeArcFlag === sweepFlag ? -1 : 1)\n\n const centerxp = radicant * rx / ry * pyp\n const centeryp = radicant * -ry / rx * pxp\n\n const centerx = cosphi * centerxp - sinphi * centeryp + (px + cx) / 2\n const centery = sinphi * centerxp + cosphi * centeryp + (py + cy) / 2\n\n const vx1 = (pxp - centerxp) / rx\n const vy1 = (pyp - centeryp) / ry\n const vx2 = (-pxp - centerxp) / rx\n const vy2 = (-pyp - centeryp) / ry\n\n let ang1 = vectorAngle(1, 0, vx1, vy1)\n let ang2 = vectorAngle(vx1, vy1, vx2, vy2)\n\n if (sweepFlag === 0 && ang2 > 0) {\n ang2 -= TAU\n }\n\n if (sweepFlag === 1 && ang2 < 0) {\n ang2 += TAU\n }\n\n return [ centerx, centery, ang1, ang2 ]\n}\n\nconst arcToBezier = ({\n px,\n py,\n cx,\n cy,\n rx,\n ry,\n xAxisRotation = 0,\n largeArcFlag = 0,\n sweepFlag = 0\n}) => {\n const curves = []\n\n if (rx === 0 || ry === 0) {\n return [{ x1: 0, y1: 0, x2: 0, y2: 0, x: cx, y: cy }];\n }\n\n const sinphi = Math.sin(xAxisRotation * TAU / 360)\n const cosphi = Math.cos(xAxisRotation * TAU / 360)\n\n const pxp = cosphi * (px - cx) / 2 + sinphi * (py - cy) / 2\n const pyp = -sinphi * (px - cx) / 2 + cosphi * (py - cy) / 2\n\n if (pxp === 0 && pyp === 0) {\n return [{ x1: 0, y1: 0, x2: 0, y2: 0, x: cx, y: cy }];\n }\n\n rx = Math.abs(rx)\n ry = Math.abs(ry)\n\n const lambda =\n Math.pow(pxp, 2) / Math.pow(rx, 2) +\n Math.pow(pyp, 2) / Math.pow(ry, 2)\n\n if (lambda > 1) {\n rx *= Math.sqrt(lambda)\n ry *= Math.sqrt(lambda)\n }\n\n let [ centerx, centery, ang1, ang2 ] = getArcCenter(\n px,\n py,\n cx,\n cy,\n rx,\n ry,\n largeArcFlag,\n sweepFlag,\n sinphi,\n cosphi,\n pxp,\n pyp\n )\n\n // If 'ang2' == 90.0000000001, then `ratio` will evaluate to\n // 1.0000000001. This causes `segments` to be greater than one, which is an\n // unecessary split, and adds extra points to the bezier curve. To alleviate\n // this issue, we round to 1.0 when the ratio is close to 1.0.\n let ratio = Math.abs(ang2) / (TAU / 4)\n if (Math.abs(1.0 - ratio) < 0.0000001) {\n ratio = 1.0\n }\n\n const segments = Math.max(Math.ceil(ratio), 1)\n\n ang2 /= segments\n\n for (let i = 0; i < segments; i++) {\n curves.push(approxUnitArc(ang1, ang2))\n ang1 += ang2\n }\n\n return curves.map(curve => {\n const { x: x1, y: y1 } = mapToEllipse(curve[ 0 ], rx, ry, cosphi, sinphi, centerx, centery)\n const { x: x2, y: y2 } = mapToEllipse(curve[ 1 ], rx, ry, cosphi, sinphi, centerx, centery)\n const { x, y } = mapToEllipse(curve[ 2 ], rx, ry, cosphi, sinphi, centerx, centery)\n\n return { x1, y1, x2, y2, x, y }\n })\n}\n\nexport function arcToCubic(x1: number, y1: number, rx: number, ry: number, angle: number, LAF: number, SF: number, x2: number, y2: number) {\n const curves = arcToBezier({\n px: x1,\n py: y1,\n cx: x2,\n cy: y2,\n rx,\n ry,\n xAxisRotation: angle,\n largeArcFlag: LAF,\n sweepFlag: SF,\n });\n\n return curves.reduce((prev, cur) => {\n const { x1, y1, x2, y2, x, y } = cur;\n prev.push(x1, y1, x2, y2, x, y);\n return prev;\n }, [] as number[]);\n}\n","import { mod, toRadian } from '@antv/util';\n\n// 向量长度\nfunction vMag(v) {\n return Math.sqrt(v[0] * v[0] + v[1] * v[1]);\n}\n\n// u.v/|u||v|,计算夹角的余弦值\nfunction vRatio(u, v) {\n // 当存在一个向量的长度为 0 时,夹角也为 0,即夹角的余弦值为 1\n return vMag(u) * vMag(v) ? (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v)) : 1;\n}\n\n// 向量角度\nfunction vAngle(u, v) {\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vRatio(u, v));\n}\n\n/**\n * 判断两个点是否重合,点坐标的格式为 [x, y]\n * @param {Array} point1 第一个点\n * @param {Array} point2 第二个点\n */\nexport function isSamePoint(point1, point2) {\n return point1[0] === point2[0] && point1[1] === point2[1];\n}\n\n// A 0:rx 1:ry 2:x-axis-rotation 3:large-arc-flag 4:sweep-flag 5: x 6: y\nexport default function getArcParams(startPoint, params) {\n let rx = params[1];\n let ry = params[2];\n const xRotation = mod(toRadian(params[3]), Math.PI * 2);\n const arcFlag = params[4];\n const sweepFlag = params[5];\n // 弧形起点坐标\n const x1 = startPoint[0];\n const y1 = startPoint[1];\n // 弧形终点坐标\n const x2 = params[6];\n const y2 = params[7];\n const xp = (Math.cos(xRotation) * (x1 - x2)) / 2.0 + (Math.sin(xRotation) * (y1 - y2)) / 2.0;\n const yp = (-1 * Math.sin(xRotation) * (x1 - x2)) / 2.0 + (Math.cos(xRotation) * (y1 - y2)) / 2.0;\n const lambda = (xp * xp) / (rx * rx) + (yp * yp) / (ry * ry);\n\n if (lambda > 1) {\n rx *= Math.sqrt(lambda);\n ry *= Math.sqrt(lambda);\n }\n const diff = rx * rx * (yp * yp) + ry * ry * (xp * xp);\n\n let f = diff ? Math.sqrt((rx * rx * (ry * ry) - diff) / diff) : 1;\n\n if (arcFlag === sweepFlag) {\n f *= -1;\n }\n if (isNaN(f)) {\n f = 0;\n }\n\n // 旋转前的起点坐标,且当长半轴和短半轴的长度为 0 时,坐标按 (0, 0) 处理\n const cxp = ry ? (f * rx * yp) / ry : 0;\n const cyp = rx ? (f * -ry * xp) / rx : 0;\n\n // 椭圆圆心坐标\n const cx = (x1 + x2) / 2.0 + Math.cos(xRotation) * cxp - Math.sin(xRotation) * cyp;\n const cy = (y1 + y2) / 2.0 + Math.sin(xRotation) * cxp + Math.cos(xRotation) * cyp;\n\n // 起始点的单位向量\n const u = [ (xp - cxp) / rx, (yp - cyp) / ry ];\n // 终止点的单位向量\n const v = [ (-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry ];\n // 计算起始点和圆心的连线,与 x 轴正方向的夹角\n const theta = vAngle([ 1, 0 ], u);\n\n // 计算圆弧起始点和终止点与椭圆圆心连线的夹角\n let dTheta = vAngle(u, v);\n\n if (vRatio(u, v) <= -1) {\n dTheta = Math.PI;\n }\n if (vRatio(u, v) >= 1) {\n dTheta = 0;\n }\n if (sweepFlag === 0 && dTheta > 0) {\n dTheta = dTheta - 2 * Math.PI;\n }\n if (sweepFlag === 1 && dTheta < 0) {\n dTheta = dTheta + 2 * Math.PI;\n }\n return {\n cx,\n cy,\n // 弧形的起点和终点相同时,长轴和短轴的长度按 0 处理\n rx: isSamePoint(startPoint, [ x2, y2 ]) ? 0 : rx,\n ry: isSamePoint(startPoint, [ x2, y2 ]) ? 0 : ry,\n startAngle: theta,\n endAngle: theta + dTheta,\n xRotation,\n arcFlag,\n sweepFlag,\n };\n}\n","import getArcParams from './get-arc-params';\nimport { isSamePoint } from './get-arc-params';\nimport parsePath from './parse-path';\n\n// 点对称\nfunction toSymmetry(point, center) {\n return [ center[0] + (center[0] - point[0]), center[1] + (center[1] - point[1]) ];\n}\n\nexport default function getSegments(path) {\n path = parsePath(path);\n const segments = [];\n let currentPoint = null; // 当前图形\n let nextParams = null; // 下一节点的 path 参数\n let startMovePoint = null; // 开始 M 的点,可能会有多个\n let lastStartMovePointIndex = 0; // 最近一个开始点 M 的索引\n const count = path.length;\n for (let i = 0; i < count; i++) {\n const params = path[i];\n nextParams = path[i + 1];\n const command = params[0];\n // 数学定义上的参数,便于后面的计算\n const segment = {\n command,\n prePoint: currentPoint,\n params,\n startTangent: null,\n endTangent: null,\n };\n switch (command) {\n case 'M':\n startMovePoint = [ params[1], params[2] ];\n lastStartMovePointIndex = i;\n break;\n case 'A':\n const arcParams = getArcParams(currentPoint, params);\n segment['arcParams'] = arcParams;\n break;\n default:\n break;\n }\n if (command === 'Z') {\n // 有了 Z 后,当前节点从开始 M 的点开始\n currentPoint = startMovePoint;\n // 如果当前点的命令为 Z,相当于当前点为最近一个 M 点,则下一个点直接指向最近一个 M 点的下一个点\n nextParams = path[lastStartMovePointIndex + 1];\n } else {\n const len = params.length;\n currentPoint = [ params[len - 2], params[len - 1] ];\n }\n if (nextParams && nextParams[0] === 'Z') {\n // 如果下一个点的命令为 Z,则下一个点直接指向最近一个 M 点\n nextParams = path[lastStartMovePointIndex];\n if (segments[lastStartMovePointIndex]) {\n // 如果下一个点的命令为 Z,则最近一个 M 点的前一个点为当前点\n segments[lastStartMovePointIndex].prePoint = currentPoint;\n }\n }\n segment['currentPoint'] = currentPoint;\n // 如果当前点与最近一个 M 点相同,则最近一个 M 点的前一个点为当前点的前一个点\n if (\n segments[lastStartMovePointIndex] &&\n isSamePoint(currentPoint, segments[lastStartMovePointIndex].currentPoint)\n ) {\n segments[lastStartMovePointIndex].prePoint = segment.prePoint;\n }\n const nextPoint = nextParams ? [ nextParams[nextParams.length - 2], nextParams[nextParams.length - 1] ] : null;\n segment['nextPoint'] = nextPoint;\n // Add startTangent and endTangent\n const { prePoint } = segment;\n if ([ 'L', 'H', 'V' ].includes(command)) {\n segment.startTangent = [ prePoint[0] - currentPoint[0], prePoint[1] - currentPoint[1] ];\n segment.endTangent = [ currentPoint[0] - prePoint[0], currentPoint[1] - prePoint[1] ];\n } else if (command === 'Q') {\n // 二次贝塞尔曲线只有一个控制点\n const cp = [ params[1], params[2] ];\n // 二次贝塞尔曲线的终点为 currentPoint\n segment.startTangent = [ prePoint[0] - cp[0], prePoint[1] - cp[1] ];\n segment.endTangent = [ currentPoint[0] - cp[0], currentPoint[1] - cp[1] ];\n } else if (command === 'T') {\n const preSegment = segments[i - 1];\n const cp = toSymmetry(preSegment.currentPoint, prePoint);\n if (preSegment.command === 'Q') {\n segment.command = 'Q';\n segment.startTangent = [ prePoint[0] - cp[0], prePoint[1] - cp[1] ];\n segment.endTangent = [ currentPoint[0] - cp[0], currentPoint[1] - cp[1] ];\n } else {\n segment.command = 'TL';\n segment.startTangent = [ prePoint[0] - currentPoint[0], prePoint[1] - currentPoint[1] ];\n segment.endTangent = [ currentPoint[0] - prePoint[0], currentPoint[1] - prePoint[1] ];\n }\n } else if (command === 'C') {\n // 三次贝塞尔曲线有两个控制点\n const cp1 = [ params[1], params[2] ];\n const cp2 = [ params[3], params[4] ];\n segment.startTangent = [ prePoint[0] - cp1[0], prePoint[1] - cp1[1] ];\n segment.endTangent = [ currentPoint[0] - cp2[0], currentPoint[1] - cp2[1] ];\n\n // horizontal line, eg. ['C', 100, 100, 100, 100, 200, 200]\n if (segment.startTangent[0] === 0 && segment.startTangent[1] === 0) {\n segment.startTangent = [cp1[0] - cp2[0], cp1[1] - cp2[1]];\n }\n if (segment.endTangent[0] === 0 && segment.endTangent[1] === 0) {\n segment.endTangent = [cp2[0] - cp1[0], cp2[1] - cp1[1]];\n }\n } else if (command === 'S') {\n const preSegment = segments[i - 1];\n const cp1 = toSymmetry(preSegment.currentPoint, prePoint);\n const cp2 = [ params[1], params[2] ];\n if (preSegment.command === 'C') {\n segment.command = 'C'; // 将 S 命令变换为 C 命令\n segment.startTangent = [ prePoint[0] - cp1[0], prePoint[1] - cp1[1] ];\n segment.endTangent = [ currentPoint[0] - cp2[0], currentPoint[1] - cp2[1] ];\n } else {\n segment.command = 'SQ'; // 将 S 命令变换为 SQ 命令\n segment.startTangent = [ prePoint[0] - cp2[0], prePoint[1] - cp2[1] ];\n segment.endTangent = [ currentPoint[0] - cp2[0], currentPoint[1] - cp2[1] ];\n }\n } else if (command === 'A') {\n let d = 0.001;\n const {\n cx = 0,\n cy = 0,\n rx = 0,\n ry = 0,\n sweepFlag = 0,\n startAngle = 0,\n endAngle = 0,\n } = segment['arcParams'] || {};\n if (sweepFlag === 0) {\n d *= -1;\n }\n const dx1 = rx * Math.cos(startAngle - d) + cx;\n const dy1 = ry * Math.sin(startAngle - d) + cy;\n segment.startTangent = [ dx1 - startMovePoint[0], dy1 - startMovePoint[1] ];\n const dx2 = rx * Math.cos(startAngle + endAngle + d) + cx;\n const dy2 = ry * Math.sin(startAngle + endAngle - d) + cy;\n segment.endTangent = [ prePoint[0] - dx2, prePoint[1] - dy2 ];\n }\n segments.push(segment);\n }\n return segments;\n}\n","import { Quad as QuadUtil, Cubic as CubicUtil, Arc as EllipseArcUtil } from '@antv/g-math';\nimport { path2Segments } from '@antv/path-util';\nimport { isNumberEqual, max, min } from '@antv/util';\nimport { SimpleBBox } from '../types';\nimport { IShape } from '../interfaces';\nimport { mergeArrowBBox } from './util';\n\nfunction getPathBox(segments, lineWidth) {\n let xArr = [];\n let yArr = [];\n const segmentsWithAngle = [];\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const { currentPoint, params, prePoint } = segment;\n let box;\n switch (segment.command) {\n case 'Q':\n box = QuadUtil.box(prePoint[0], prePoint[1], params[1], params[2], params[3], params[4]);\n break;\n case 'C':\n box = CubicUtil.box(prePoint[0], prePoint[1], params[1], params[2], params[3], params[4], params[5], params[6]);\n break;\n case 'A':\n const arcParams = segment.arcParams;\n box = EllipseArcUtil.box(\n arcParams.cx,\n arcParams.cy,\n arcParams.rx,\n arcParams.ry,\n arcParams.xRotation,\n arcParams.startAngle,\n arcParams.endAngle\n );\n break;\n default:\n xArr.push(currentPoint[0]);\n yArr.push(currentPoint[1]);\n break;\n }\n if (box) {\n segment.box = box;\n xArr.push(box.x, box.x + box.width);\n yArr.push(box.y, box.y + box.height);\n }\n if (lineWidth && (segment.command === 'L' || segment.command === 'M') && segment.prePoint && segment.nextPoint) {\n segmentsWithAngle.push(segment);\n }\n }\n // bbox calculation should ignore NaN for path attribute\n // ref: https://github.com/antvis/g/issues/210\n // ref: https://github.com/antvis/G2/issues/3109\n xArr = xArr.filter((item) => !Number.isNaN(item) && item !== Infinity && item !== -Infinity);\n yArr = yArr.filter((item) => !Number.isNaN(item) && item !== Infinity && item !== -Infinity);\n let minX = min(xArr);\n let minY = min(yArr);\n let maxX = max(xArr);\n let maxY = max(yArr);\n if (segmentsWithAngle.length === 0) {\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n for (let i = 0; i < segmentsWithAngle.length; i++) {\n const segment = segmentsWithAngle[i];\n const { currentPoint } = segment;\n let extra;\n if (currentPoint[0] === minX) {\n extra = getExtraFromSegmentWithAngle(segment, lineWidth);\n minX = minX - extra.xExtra;\n } else if (currentPoint[0] === maxX) {\n extra = getExtraFromSegmentWithAngle(segment, lineWidth);\n maxX = maxX + extra.xExtra;\n }\n if (currentPoint[1] === minY) {\n extra = getExtraFromSegmentWithAngle(segment, lineWidth);\n minY = minY - extra.yExtra;\n } else if (currentPoint[1] === maxY) {\n extra = getExtraFromSegmentWithAngle(segment, lineWidth);\n maxY = maxY + extra.yExtra;\n }\n }\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n}\n\nfunction getExtraFromSegmentWithAngle(segment, lineWidth) {\n const { prePoint, currentPoint, nextPoint } = segment;\n const currentAndPre = Math.pow(currentPoint[0] - prePoint[0], 2) + Math.pow(currentPoint[1] - prePoint[1], 2);\n const currentAndNext = Math.pow(currentPoint[0] - nextPoint[0], 2) + Math.pow(currentPoint[1] - nextPoint[1], 2);\n const preAndNext = Math.pow(prePoint[0] - nextPoint[0], 2) + Math.pow(prePoint[1] - nextPoint[1], 2);\n // 以 currentPoint 为顶点的夹角\n const currentAngle = Math.acos(\n (currentAndPre + currentAndNext - preAndNext) / (2 * Math.sqrt(currentAndPre) * Math.sqrt(currentAndNext))\n );\n // 夹角为空、 0 或 PI 时,不需要计算夹角处的额外宽度\n // 注意: 由于计算精度问题,夹角为 0 的情况计算出来的角度可能是一个很小的值,还需要判断其与 0 是否近似相等\n if (!currentAngle || Math.sin(currentAngle) === 0 || isNumberEqual(currentAngle, 0)) {\n return {\n xExtra: 0,\n yExtra: 0,\n };\n }\n let xAngle = Math.abs(Math.atan2(nextPoint[1] - currentPoint[1], nextPoint[0] - currentPoint[0]));\n let yAngle = Math.abs(Math.atan2(nextPoint[0] - currentPoint[0], nextPoint[1] - currentPoint[1]));\n // 将夹角转为锐角\n xAngle = xAngle > Math.PI / 2 ? Math.PI - xAngle : xAngle;\n yAngle = yAngle > Math.PI / 2 ? Math.PI - yAngle : yAngle;\n // 这里不考虑在水平和垂直方向的投影,直接使用最大差值\n // 由于上层统一加减了二分之一线宽,这里需要进行弥补\n const extra = {\n // 水平方向投影\n xExtra:\n Math.cos(currentAngle / 2 - xAngle) * ((lineWidth / 2) * (1 / Math.sin(currentAngle / 2))) - lineWidth / 2 || 0,\n // 垂直方向投影\n yExtra:\n Math.cos(yAngle - currentAngle / 2) * ((lineWidth / 2) * (1 / Math.sin(currentAngle / 2))) - lineWidth / 2 || 0,\n };\n return extra;\n}\n\nexport default function (shape: IShape): SimpleBBox {\n const attrs = shape.attr();\n const { path, stroke } = attrs;\n const lineWidth = stroke ? attrs.lineWidth : 0; // 只有有 stroke 时,lineWidth 才生效\n const segments = shape.get('segments') || path2Segments(path);\n const { x, y, width, height } = getPathBox(segments, lineWidth);\n let bbox = {\n minX: x,\n minY: y,\n maxX: x + width,\n maxY: y + height,\n };\n bbox = mergeArrowBBox(shape, bbox);\n return {\n x: bbox.minX,\n y: bbox.minY,\n width: bbox.maxX - bbox.minX,\n height: bbox.maxY - bbox.minY,\n };\n}\n","import { register, getMethod } from './register';\nimport rect from './rect';\nimport circle from './circle';\nimport polyline from './polyline';\nimport polygon from './polygon';\nimport text from './text';\nimport path from './path';\nimport line from './line';\nimport ellipse from './ellipse';\n\nregister('rect', rect);\nregister('image', rect); // image 使用 rect 的包围盒计算\nregister('circle', circle);\nregister('marker', circle); // marker 使用 circle 的计算方案\nregister('polyline', polyline);\nregister('polygon', polygon);\nregister('text', text);\nregister('path', path);\nregister('line', line);\nregister('ellipse', ellipse);\n\nexport { getMethod as getBBoxMethod, register as registerBBox };\n","import { Util } from '@antv/g-math';\nimport { SimpleBBox } from '../types';\nimport { IShape } from '../interfaces';\nimport { mergeArrowBBox } from './util';\n\nexport default function (shape: IShape): SimpleBBox {\n const attrs = shape.attr();\n const { points } = attrs;\n const xArr = [];\n const yArr = [];\n for (let i = 0; i < points.length; i++) {\n const point = points[i];\n xArr.push(point[0]);\n yArr.push(point[1]);\n }\n const { x, y, width, height } = Util.getBBoxByArray(xArr, yArr);\n let bbox = {\n minX: x,\n minY: y,\n maxX: x + width,\n maxY: y + height,\n };\n bbox = mergeArrowBBox(shape, bbox);\n return {\n x: bbox.minX,\n y: bbox.minY,\n width: bbox.maxX - bbox.minX,\n height: bbox.maxY - bbox.minY,\n };\n}\n","import { Util } from '@antv/g-math';\nimport { SimpleBBox } from '../types';\nimport { IShape } from '../interfaces';\n\nexport default function (shape: IShape): SimpleBBox {\n const attrs = shape.attr();\n const { points } = attrs;\n const xArr = [];\n const yArr = [];\n for (let i = 0; i < points.length; i++) {\n const point = points[i];\n xArr.push(point[0]);\n yArr.push(point[1]);\n }\n return Util.getBBoxByArray(xArr, yArr);\n}\n","import { SimpleBBox } from '../types';\nimport { IShape } from '../interfaces';\nimport { getTextWidth, getTextHeight, assembleFont } from '../util/text';\n\nexport default function (shape: IShape): SimpleBBox {\n const attrs = shape.attr();\n const { x, y, text, fontSize, lineHeight } = attrs;\n let font = attrs.font;\n if (!font) {\n // 如果未组装 font\n font = assembleFont(attrs);\n }\n const width = getTextWidth(text, font);\n let bbox;\n if (!width) {\n // 如果width不存在,四点共其实点\n bbox = {\n x,\n y,\n width: 0,\n height: 0,\n };\n } else {\n const { textAlign, textBaseline } = attrs;\n const height = getTextHeight(text, fontSize, lineHeight); // attrs.height\n // 默认左右对齐:left, 默认上下对齐 bottom\n const point = {\n x,\n y: y - height,\n };\n if (textAlign) {\n if (textAlign === 'end' || textAlign === 'right') {\n point.x -= width;\n } else if (textAlign === 'center') {\n point.x -= width / 2;\n }\n }\n if (textBaseline) {\n if (textBaseline === 'top') {\n point.y += height;\n } else if (textBaseline === 'middle') {\n point.y += height / 2;\n }\n }\n\n bbox = {\n x: point.x,\n y: point.y,\n width: width,\n height: height,\n };\n }\n return bbox;\n}\n","import { SimpleBBox } from '../types';\nimport { IShape } from '../interfaces';\nimport { mergeArrowBBox } from './util';\n\nexport default function (shape: IShape): SimpleBBox {\n const attrs = shape.attr();\n const { x1, y1, x2, y2 } = attrs;\n const minX = Math.min(x1, x2);\n const maxX = Math.max(x1, x2);\n const minY = Math.min(y1, y2);\n const maxY = Math.max(y1, y2);\n let bbox = {\n minX,\n maxX,\n minY,\n maxY,\n };\n bbox = mergeArrowBBox(shape, bbox);\n return {\n x: bbox.minX,\n y: bbox.minY,\n width: bbox.maxX - bbox.minX,\n height: bbox.maxY - bbox.minY,\n };\n}\n","import { SimpleBBox } from '../types';\nimport { IShape } from '../interfaces';\n\nexport default function (shape: IShape): SimpleBBox {\n const attrs = shape.attr();\n const { x, y, rx, ry } = attrs;\n return {\n x: x - rx,\n y: y - ry,\n width: rx * 2,\n height: ry * 2,\n };\n}\n","import { IShape } from '../interfaces';\nimport { LooseObject } from '../types';\n\nclass GraphEvent {\n /**\n * 事件类型\n * @type {string}\n */\n type: string;\n /**\n * 事件名称\n * @type {string}\n */\n name: string;\n /**\n * 画布上的位置 x\n * @type {number}\n */\n x: number;\n /**\n * 画布上的位置 y\n * @type {number}\n */\n y: number;\n /**\n * 窗口上的位置 x\n * @type {number}\n */\n clientX: number;\n /**\n * 窗口上的位置 y\n * @type {number}\n */\n clientY: number;\n /**\n * 是否允许冒泡\n * @type {boolean}\n */\n bubbles: boolean = true;\n /**\n * 触发对象\n * @type {object}\n */\n target: LooseObject = null;\n /**\n * 监听对象\n * @type {object}\n */\n currentTarget: LooseObject = null;\n /**\n * 委托对象\n * @type {object}\n */\n delegateTarget: LooseObject = null;\n /**\n * 委托事件监听对象的代理对象,即 ev.delegateObject = ev.currentTarget.get('delegateObject')\n * @type {object}\n */\n delegateObject: object = null;\n /**\n * 是否阻止了原生事件\n * @type {boolean}\n */\n defaultPrevented: boolean = false;\n /**\n * 是否阻止传播(向上冒泡)\n * @type {boolean}\n */\n propagationStopped: boolean = false;\n /**\n * 触发事件的图形\n * @type {IShape}\n */\n shape: IShape = null;\n /**\n * 开始触发事件的图形\n * @type {IShape}\n */\n fromShape: IShape = null;\n /**\n * 事件结束时的触发图形\n * @type {IShape}\n */\n toShape: IShape = null;\n\n /**\n * 触发时的时间\n * @type {number}\n */\n timeStamp: number;\n\n /**\n * 触发时的对象\n * @type {object}\n */\n originalEvent: Event;\n\n // 触发事件的路径\n propagationPath: any[] = [];\n\n constructor(type, event) {\n this.type = type;\n this.name = type;\n this.originalEvent = event;\n this.timeStamp = event.timeStamp;\n }\n\n /**\n * 阻止浏览器默认的行为\n */\n preventDefault() {\n this.defaultPrevented = true;\n if (this.originalEvent.preventDefault) {\n this.originalEvent.preventDefault();\n }\n }\n\n /**\n * 阻止冒泡\n */\n stopPropagation() {\n this.propagationStopped = true;\n }\n\n toString() {\n const type = this.type;\n return `[Event (type=${type})]`;\n }\n\n save() {}\n\n restore() {}\n}\n\nexport default GraphEvent;\n","/**\n * @fileoverview G 的基础接口定义和所有的抽象类\n * @author dxq613@gmail.com\n */\n\nimport * as PathUtil from './util/path';\n\nexport * from './types';\nexport * from './interfaces';\nexport { default as Event } from './event/graph-event';\nexport { default as Base } from './abstract/base';\nexport { default as AbstractCanvas } from './abstract/canvas';\nexport { default as AbstractGroup } from './abstract/group';\nexport { default as AbstractShape } from './abstract/shape';\nexport { PathUtil };\n\nexport { getBBoxMethod, registerBBox } from './bbox';\nexport { getTextHeight, assembleFont } from './util/text';\nexport { isAllowCapture } from './util/util';\nexport { multiplyVec2, invert } from './util/matrix';\nexport { getOffScreenContext } from './util/offscreen';\nexport { registerEasing } from './animate/register';\n\nexport const version = '0.5.11';\n","/**\n * @fileoverview 矩阵运算,本来是要引入 gl-matrix, 但是考虑到 g-mobile 对大小有限制,同时 g-webgl 使用的 matrix 不一致\n * 所以,这里仅实现 2D 几个运算,上层自己引入 gl-matrix\n * @author dxq613@gmail.com\n */\n\n/**\n * 3阶矩阵相乘\n * @param {number[]} a 矩阵1\n * @param {number[]} b 矩阵2\n */\nexport function multiplyMatrix(a: number[], b: number[]) {\n const out = [];\n const a00 = a[0];\n const a01 = a[1];\n const a02 = a[2];\n\n const a10 = a[3];\n const a11 = a[4];\n const a12 = a[5];\n const a20 = a[6];\n const a21 = a[7];\n const a22 = a[8];\n\n const b00 = b[0];\n const b01 = b[1];\n const b02 = b[2];\n const b10 = b[3];\n const b11 = b[4];\n const b12 = b[5];\n const b20 = b[6];\n const b21 = b[7];\n const b22 = b[8];\n\n out[0] = b00 * a00 + b01 * a10 + b02 * a20;\n out[1] = b00 * a01 + b01 * a11 + b02 * a21;\n out[2] = b00 * a02 + b01 * a12 + b02 * a22;\n\n out[3] = b10 * a00 + b11 * a10 + b12 * a20;\n out[4] = b10 * a01 + b11 * a11 + b12 * a21;\n out[5] = b10 * a02 + b11 * a12 + b12 * a22;\n\n out[6] = b20 * a00 + b21 * a10 + b22 * a20;\n out[7] = b20 * a01 + b21 * a11 + b22 * a21;\n out[8] = b20 * a02 + b21 * a12 + b22 * a22;\n return out;\n}\n\n/**\n * 3阶矩阵同2阶向量相乘\n * @param {number[]} m 矩阵\n * @param {number[]} v 二阶向量\n */\nexport function multiplyVec2(m: number[], v: number[]) {\n const out = [];\n const x = v[0];\n const y = v[1];\n out[0] = m[0] * x + m[3] * y + m[6];\n out[1] = m[1] * x + m[4] * y + m[7];\n return out;\n}\n\n/**\n * 矩阵的逆\n * @param {number[]} a 矩阵\n */\nexport function invert(a: number[]) {\n const out = [];\n const a00 = a[0];\n const a01 = a[1];\n const a02 = a[2];\n const a10 = a[3];\n const a11 = a[4];\n const a12 = a[5];\n const a20 = a[6];\n const a21 = a[7];\n const a22 = a[8];\n\n const b01 = a22 * a11 - a12 * a21;\n const b11 = -a22 * a10 + a12 * a20;\n const b21 = a21 * a10 - a11 * a20;\n\n // Calculate the determinant\n let det = a00 * b01 + a01 * b11 + a02 * b21;\n\n if (!det) {\n return null;\n }\n det = 1.0 / det;\n\n out[0] = b01 * det;\n out[1] = (-a22 * a01 + a02 * a21) * det;\n out[2] = (a12 * a01 - a02 * a11) * det;\n out[3] = b11 * det;\n out[4] = (a22 * a00 - a02 * a20) * det;\n out[5] = (-a12 * a00 + a02 * a10) * det;\n out[6] = b21 * det;\n out[7] = (-a21 * a00 + a01 * a20) * det;\n out[8] = (a11 * a00 - a01 * a10) * det;\n return out;\n}\n","// 全局设置一个唯一离屏的 ctx,用于计算 isPointInPath\nlet offScreenCtx = null;\nexport function getOffScreenContext() {\n if (!offScreenCtx) {\n const canvas = document.createElement('canvas');\n canvas.width = 1;\n canvas.height = 1;\n offScreenCtx = canvas.getContext('2d');\n }\n return offScreenCtx;\n}\n","import { each, isArray } from '@antv/util';\nimport { PathCommand } from '../types';\n\nconst SPACES =\n '\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029';\nconst PATH_COMMAND = new RegExp(\n `([a-z])[${SPACES},]*((-?\\\\d*\\\\.?\\\\d*(?:e[\\\\-+]?\\\\d+)?[${SPACES}]*,?[${SPACES}]*)+)`,\n 'ig'\n);\nconst PATH_VALUES = new RegExp(`(-?\\\\d*\\\\.?\\\\d*(?:e[\\\\-+]?\\\\d+)?)[${SPACES}]*,?[${SPACES}]*`, 'ig');\n// Parse given path string into an array of arrays of path segments\nconst parsePathString = function (pathString: string): PathCommand[] {\n if (!pathString) {\n return null;\n }\n\n if (isArray(pathString)) {\n return pathString as unknown as PathCommand[];\n }\n const paramCounts = {\n a: 7,\n c: 6,\n o: 2,\n h: 1,\n l: 2,\n m: 2,\n r: 4,\n q: 4,\n s: 4,\n t: 2,\n v: 1,\n u: 3,\n z: 0,\n };\n const data = [];\n\n String(pathString).replace(PATH_COMMAND, (a, b, c) => {\n const params = [];\n let name = b.toLowerCase();\n c.replace(PATH_VALUES, (a, b) => {\n b && params.push(+b);\n });\n if (name === 'm' && params.length > 2) {\n data.push([b].concat(params.splice(0, 2)));\n name = 'l';\n b = b === 'm' ? 'l' : 'L';\n }\n if (name === 'o' && params.length === 1) {\n data.push([b, params[0]]);\n }\n if (name === 'r') {\n data.push([b].concat(params));\n } else {\n while (params.length >= paramCounts[name]) {\n data.push([b].concat(params.splice(0, paramCounts[name])));\n if (!paramCounts[name]) {\n break;\n }\n }\n }\n return pathString;\n });\n\n return data;\n};\n\n// http://schepers.cc/getting-to-the-point\nconst catmullRomToBezier = function (crp, z) {\n const d = [];\n // @ts-ignore\n for (let i = 0, iLen = crp.length; iLen - 2 * !z > i; i += 2) {\n const p = [\n {\n x: +crp[i - 2],\n y: +crp[i - 1],\n },\n {\n x: +crp[i],\n y: +crp[i + 1],\n },\n {\n x: +crp[i + 2],\n y: +crp[i + 3],\n },\n {\n x: +crp[i + 4],\n y: +crp[i + 5],\n },\n ];\n if (z) {\n if (!i) {\n p[0] = {\n x: +crp[iLen - 2],\n y: +crp[iLen - 1],\n };\n } else if (iLen - 4 === i) {\n p[3] = {\n x: +crp[0],\n y: +crp[1],\n };\n } else if (iLen - 2 === i) {\n p[2] = {\n x: +crp[0],\n y: +crp[1],\n };\n p[3] = {\n x: +crp[2],\n y: +crp[3],\n };\n }\n } else {\n if (iLen - 4 === i) {\n p[3] = p[2];\n } else if (!i) {\n p[0] = {\n x: +crp[i],\n y: +crp[i + 1],\n };\n }\n }\n d.push([\n 'C',\n (-p[0].x + 6 * p[1].x + p[2].x) / 6,\n (-p[0].y + 6 * p[1].y + p[2].y) / 6,\n (p[1].x + 6 * p[2].x - p[3].x) / 6,\n (p[1].y + 6 * p[2].y - p[3].y) / 6,\n p[2].x,\n p[2].y,\n ]);\n }\n\n return d;\n};\n\nconst ellipsePath = function (x, y, rx, ry, a?) {\n let res = [];\n if (a === null && ry === null) {\n ry = rx;\n }\n x = +x;\n y = +y;\n rx = +rx;\n ry = +ry;\n if (a !== null) {\n const rad = Math.PI / 180;\n const x1 = x + rx * Math.cos(-ry * rad);\n const x2 = x + rx * Math.cos(-a * rad);\n const y1 = y + rx * Math.sin(-ry * rad);\n const y2 = y + rx * Math.sin(-a * rad);\n res = [\n ['M', x1, y1],\n ['A', rx, rx, 0, +(a - ry > 180), 0, x2, y2],\n ];\n } else {\n res = [['M', x, y], ['m', 0, -ry], ['a', rx, ry, 0, 1, 1, 0, 2 * ry], ['a', rx, ry, 0, 1, 1, 0, -2 * ry], ['z']];\n }\n return res;\n};\n\nconst pathToAbsolute = function (pathArray) {\n pathArray = parsePathString(pathArray);\n\n if (!pathArray || !pathArray.length) {\n return [['M', 0, 0]];\n }\n let res = [];\n let x = 0;\n let y = 0;\n let mx = 0;\n let my = 0;\n let start = 0;\n let pa0;\n let dots;\n if (pathArray[0][0] === 'M') {\n x = +pathArray[0][1];\n y = +pathArray[0][2];\n mx = x;\n my = y;\n start++;\n res[0] = ['M', x, y];\n }\n const crz =\n pathArray.length === 3 &&\n pathArray[0][0] === 'M' &&\n pathArray[1][0].toUpperCase() === 'R' &&\n pathArray[2][0].toUpperCase() === 'Z';\n for (let r, pa, i = start, ii = pathArray.length; i < ii; i++) {\n res.push((r = []));\n pa = pathArray[i];\n pa0 = pa[0];\n if (pa0 !== pa0.toUpperCase()) {\n r[0] = pa0.toUpperCase();\n switch (r[0]) {\n case 'A':\n r[1] = pa[1];\n r[2] = pa[2];\n r[3] = pa[3];\n r[4] = pa[4];\n r[5] = pa[5];\n r[6] = +pa[6] + x;\n r[7] = +pa[7] + y;\n break;\n case 'V':\n r[1] = +pa[1] + y;\n break;\n case 'H':\n r[1] = +pa[1] + x;\n break;\n case 'R':\n dots = [x, y].concat(pa.slice(1));\n for (let j = 2, jj = dots.length; j < jj; j++) {\n dots[j] = +dots[j] + x;\n dots[++j] = +dots[j] + y;\n }\n res.pop();\n res = res.concat(catmullRomToBezier(dots, crz));\n break;\n case 'O':\n res.pop();\n dots = ellipsePath(x, y, pa[1], pa[2]);\n dots.push(dots[0]);\n res = res.concat(dots);\n break;\n case 'U':\n res.pop();\n res = res.concat(ellipsePath(x, y, pa[1], pa[2], pa[3]));\n r = ['U'].concat(res[res.length - 1].slice(-2));\n break;\n case 'M':\n mx = +pa[1] + x;\n my = +pa[2] + y;\n break; // for lint\n default:\n for (let j = 1, jj = pa.length; j < jj; j++) {\n r[j] = +pa[j] + (j % 2 ? x : y);\n }\n }\n } else if (pa0 === 'R') {\n dots = [x, y].concat(pa.slice(1));\n res.pop();\n res = res.concat(catmullRomToBezier(dots, crz));\n r = ['R'].concat(pa.slice(-2));\n } else if (pa0 === 'O') {\n res.pop();\n dots = ellipsePath(x, y, pa[1], pa[2]);\n dots.push(dots[0]);\n res = res.concat(dots);\n } else if (pa0 === 'U') {\n res.pop();\n res = res.concat(ellipsePath(x, y, pa[1], pa[2], pa[3]));\n r = ['U'].concat(res[res.length - 1].slice(-2));\n } else {\n for (let k = 0, kk = pa.length; k < kk; k++) {\n r[k] = pa[k];\n }\n }\n pa0 = pa0.toUpperCase();\n if (pa0 !== 'O') {\n switch (r[0]) {\n case 'Z':\n x = +mx;\n y = +my;\n break;\n case 'H':\n x = r[1];\n break;\n case 'V':\n y = r[1];\n break;\n case 'M':\n mx = r[r.length - 2];\n my = r[r.length - 1];\n break; // for lint\n default:\n x = r[r.length - 2];\n y = r[r.length - 1];\n }\n }\n }\n\n return res;\n};\n\nconst l2c = function (x1, y1, x2, y2) {\n return [x1, y1, x2, y2, x2, y2];\n};\n\nconst q2c = function (x1, y1, ax, ay, x2, y2) {\n const _13 = 1 / 3;\n const _23 = 2 / 3;\n return [_13 * x1 + _23 * ax, _13 * y1 + _23 * ay, _13 * x2 + _23 * ax, _13 * y2 + _23 * ay, x2, y2];\n};\n\nconst a2c = function (x1, y1, rx, ry, angle, large_arc_flag, sweep_flag, x2, y2, recursive) {\n // for more information of where this math came from visit:\n // http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes\n if (rx === ry) {\n rx += 1;\n }\n\n const _120 = (Math.PI * 120) / 180;\n const rad = (Math.PI / 180) * (+angle || 0);\n let res = [];\n let xy;\n let f1;\n let f2;\n let cx;\n let cy;\n const rotate = function (x, y, rad) {\n const X = x * Math.cos(rad) - y * Math.sin(rad);\n const Y = x * Math.sin(rad) + y * Math.cos(rad);\n return {\n x: X,\n y: Y,\n };\n };\n if (!recursive) {\n xy = rotate(x1, y1, -rad);\n x1 = xy.x;\n y1 = xy.y;\n xy = rotate(x2, y2, -rad);\n x2 = xy.x;\n y2 = xy.y;\n if (x1 === x2 && y1 === y2) {\n // 若弧的起始点和终点重叠则错开一点\n x2 += 1;\n y2 += 1;\n }\n // const cos = Math.cos(Math.PI / 180 * angle);\n // const sin = Math.sin(Math.PI / 180 * angle);\n const x = (x1 - x2) / 2;\n const y = (y1 - y2) / 2;\n let h = (x * x) / (rx * rx) + (y * y) / (ry * ry);\n if (h > 1) {\n h = Math.sqrt(h);\n rx = h * rx;\n ry = h * ry;\n }\n const rx2 = rx * rx;\n const ry2 = ry * ry;\n const k =\n (large_arc_flag === sweep_flag ? -1 : 1) *\n Math.sqrt(Math.abs((rx2 * ry2 - rx2 * y * y - ry2 * x * x) / (rx2 * y * y + ry2 * x * x)));\n cx = (k * rx * y) / ry + (x1 + x2) / 2;\n cy = (k * -ry * x) / rx + (y1 + y2) / 2;\n // @ts-ignore\n f1 = Math.asin(((y1 - cy) / ry).toFixed(9));\n // @ts-ignore\n f2 = Math.asin(((y2 - cy) / ry).toFixed(9));\n\n f1 = x1 < cx ? Math.PI - f1 : f1;\n f2 = x2 < cx ? Math.PI - f2 : f2;\n f1 < 0 && (f1 = Math.PI * 2 + f1);\n f2 < 0 && (f2 = Math.PI * 2 + f2);\n if (sweep_flag && f1 > f2) {\n f1 = f1 - Math.PI * 2;\n }\n if (!sweep_flag && f2 > f1) {\n f2 = f2 - Math.PI * 2;\n }\n } else {\n f1 = recursive[0];\n f2 = recursive[1];\n cx = recursive[2];\n cy = recursive[3];\n }\n let df = f2 - f1;\n if (Math.abs(df) > _120) {\n const f2old = f2;\n const x2old = x2;\n const y2old = y2;\n f2 = f1 + _120 * (sweep_flag && f2 > f1 ? 1 : -1);\n x2 = cx + rx * Math.cos(f2);\n y2 = cy + ry * Math.sin(f2);\n res = a2c(x2, y2, rx, ry, angle, 0, sweep_flag, x2old, y2old, [f2, f2old, cx, cy]);\n }\n df = f2 - f1;\n const c1 = Math.cos(f1);\n const s1 = Math.sin(f1);\n const c2 = Math.cos(f2);\n const s2 = Math.sin(f2);\n const t = Math.tan(df / 4);\n const hx = (4 / 3) * rx * t;\n const hy = (4 / 3) * ry * t;\n const m1 = [x1, y1];\n const m2 = [x1 + hx * s1, y1 - hy * c1];\n const m3 = [x2 + hx * s2, y2 - hy * c2];\n const m4 = [x2, y2];\n m2[0] = 2 * m1[0] - m2[0];\n m2[1] = 2 * m1[1] - m2[1];\n if (recursive) {\n return [m2, m3, m4].concat(res);\n }\n res = [m2, m3, m4].concat(res).join().split(',');\n const newres = [];\n for (let i = 0, ii = res.length; i < ii; i++) {\n newres[i] = i % 2 ? rotate(res[i - 1], res[i], rad).y : rotate(res[i], res[i + 1], rad).x;\n }\n return newres;\n};\n\nconst pathToCurve = function (path, path2?) {\n const p = pathToAbsolute(path);\n const p2 = path2 && pathToAbsolute(path2);\n const attrs = {\n x: 0,\n y: 0,\n bx: 0,\n by: 0,\n X: 0,\n Y: 0,\n qx: null,\n qy: null,\n };\n const attrs2 = {\n x: 0,\n y: 0,\n bx: 0,\n by: 0,\n X: 0,\n Y: 0,\n qx: null,\n qy: null,\n };\n const pcoms1 = []; // path commands of original path p\n const pcoms2 = []; // path commands of original path p2\n let pfirst = ''; // temporary holder for original path command\n let pcom = ''; // holder for previous path command of original path\n let ii;\n const processPath = function (path, d, pcom) {\n let nx;\n let ny;\n if (!path) {\n return ['C', d.x, d.y, d.x, d.y, d.x, d.y];\n }\n !(\n path[0] in\n {\n T: 1,\n Q: 1,\n }\n ) && (d.qx = d.qy = null);\n switch (path[0]) {\n case 'M':\n d.X = path[1];\n d.Y = path[2];\n break;\n case 'A':\n path = ['C'].concat(a2c.apply(0, [d.x, d.y].concat(path.slice(1))));\n break;\n case 'S':\n if (pcom === 'C' || pcom === 'S') {\n // In \"S\" case we have to take into account, if the previous command is C/S.\n nx = d.x * 2 - d.bx; // And reflect the previous\n ny = d.y * 2 - d.by; // command's control point relative to the current point.\n } else {\n // or some else or nothing\n nx = d.x;\n ny = d.y;\n }\n path = ['C', nx, ny].concat(path.slice(1));\n break;\n case 'T':\n if (pcom === 'Q' || pcom === 'T') {\n // In \"T\" case we have to take into account, if the previous command is Q/T.\n d.qx = d.x * 2 - d.qx; // And make a reflection similar\n d.qy = d.y * 2 - d.qy; // to case \"S\".\n } else {\n // or something else or nothing\n d.qx = d.x;\n d.qy = d.y;\n }\n path = ['C'].concat(q2c(d.x, d.y, d.qx, d.qy, path[1], path[2]));\n break;\n case 'Q':\n d.qx = path[1];\n d.qy = path[2];\n path = ['C'].concat(q2c(d.x, d.y, path[1], path[2], path[3], path[4]));\n break;\n case 'L':\n path = ['C'].concat(l2c(d.x, d.y, path[1], path[2]));\n break;\n case 'H':\n path = ['C'].concat(l2c(d.x, d.y, path[1], d.y));\n break;\n case 'V':\n path = ['C'].concat(l2c(d.x, d.y, d.x, path[1]));\n break;\n case 'Z':\n path = ['C'].concat(l2c(d.x, d.y, d.X, d.Y));\n break;\n default:\n break;\n }\n return path;\n };\n const fixArc = function (pp, i) {\n if (pp[i].length > 7) {\n pp[i].shift();\n const pi = pp[i];\n while (pi.length) {\n pcoms1[i] = 'A'; // if created multiple C:s, their original seg is saved\n p2 && (pcoms2[i] = 'A'); // the same as above\n pp.splice(i++, 0, ['C'].concat(pi.splice(0, 6)));\n }\n pp.splice(i, 1);\n ii = Math.max(p.length, (p2 && p2.length) || 0);\n }\n };\n const fixM = function (path1, path2, a1, a2, i) {\n if (path1 && path2 && path1[i][0] === 'M' && path2[i][0] !== 'M') {\n path2.splice(i, 0, ['M', a2.x, a2.y]);\n a1.bx = 0;\n a1.by = 0;\n a1.x = path1[i][1];\n a1.y = path1[i][2];\n ii = Math.max(p.length, (p2 && p2.length) || 0);\n }\n };\n ii = Math.max(p.length, (p2 && p2.length) || 0);\n for (let i = 0; i < ii; i++) {\n p[i] && (pfirst = p[i][0]); // save current path command\n\n if (pfirst !== 'C') {\n // C is not saved yet, because it may be result of conversion\n pcoms1[i] = pfirst; // Save current path command\n i && (pcom = pcoms1[i - 1]); // Get previous path command pcom\n }\n p[i] = processPath(p[i], attrs, pcom); // Previous path command is inputted to processPath\n\n if (pcoms1[i] !== 'A' && pfirst === 'C') pcoms1[i] = 'C'; // A is the only command\n // which may produce multiple C:s\n // so we have to make sure that C is also C in original path\n\n fixArc(p, i); // fixArc adds also the right amount of A:s to pcoms1\n\n if (p2) {\n // the same procedures is done to p2\n p2[i] && (pfirst = p2[i][0]);\n if (pfirst !== 'C') {\n pcoms2[i] = pfirst;\n i && (pcom = pcoms2[i - 1]);\n }\n p2[i] = processPath(p2[i], attrs2, pcom);\n\n if (pcoms2[i] !== 'A' && pfirst === 'C') {\n pcoms2[i] = 'C';\n }\n\n fixArc(p2, i);\n }\n fixM(p, p2, attrs, attrs2, i);\n fixM(p2, p, attrs2, attrs, i);\n const seg = p[i];\n const seg2 = p2 && p2[i];\n const seglen = seg.length;\n const seg2len = p2 && seg2.length;\n attrs.x = seg[seglen - 2];\n attrs.y = seg[seglen - 1];\n attrs.bx = parseFloat(seg[seglen - 4]) || attrs.x;\n attrs.by = parseFloat(seg[seglen - 3]) || attrs.y;\n attrs2.bx = p2 && (parseFloat(seg2[seg2len - 4]) || attrs2.x);\n attrs2.by = p2 && (parseFloat(seg2[seg2len - 3]) || attrs2.y);\n attrs2.x = p2 && seg2[seg2len - 2];\n attrs2.y = p2 && seg2[seg2len - 1];\n }\n\n return p2 ? [p, p2] : p;\n};\n\nconst p2s = /,?([a-z]),?/gi;\nconst parsePathArray = function (path) {\n return path.join(',').replace(p2s, '$1');\n};\n\nconst base3 = function (t, p1, p2, p3, p4) {\n const t1 = -3 * p1 + 9 * p2 - 9 * p3 + 3 * p4;\n const t2 = t * t1 + 6 * p1 - 12 * p2 + 6 * p3;\n return t * t2 - 3 * p1 + 3 * p2;\n};\n\nconst bezlen = function (x1, y1, x2, y2, x3, y3, x4, y4, z) {\n if (z === null) {\n z = 1;\n }\n z = z > 1 ? 1 : z < 0 ? 0 : z;\n const z2 = z / 2;\n const n = 12;\n const Tvalues = [\n -0.1252, 0.1252, -0.3678, 0.3678, -0.5873, 0.5873, -0.7699, 0.7699, -0.9041, 0.9041, -0.9816, 0.9816,\n ];\n const Cvalues = [0.2491, 0.2491, 0.2335, 0.2335, 0.2032, 0.2032, 0.1601, 0.1601, 0.1069, 0.1069, 0.0472, 0.0472];\n let sum = 0;\n for (let i = 0; i < n; i++) {\n const ct = z2 * Tvalues[i] + z2;\n const xbase = base3(ct, x1, x2, x3, x4);\n const ybase = base3(ct, y1, y2, y3, y4);\n const comb = xbase * xbase + ybase * ybase;\n sum += Cvalues[i] * Math.sqrt(comb);\n }\n return z2 * sum;\n};\n\nconst curveDim = function (x0, y0, x1, y1, x2, y2, x3, y3) {\n const tvalues = [];\n const bounds = [[], []];\n let a;\n let b;\n let c;\n let t;\n\n for (let i = 0; i < 2; ++i) {\n if (i === 0) {\n b = 6 * x0 - 12 * x1 + 6 * x2;\n a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n c = 3 * x1 - 3 * x0;\n } else {\n b = 6 * y0 - 12 * y1 + 6 * y2;\n a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n c = 3 * y1 - 3 * y0;\n }\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) < 1e-12) {\n continue;\n }\n t = -c / b;\n if (t > 0 && t < 1) {\n tvalues.push(t);\n }\n continue;\n }\n const b2ac = b * b - 4 * c * a;\n const sqrtb2ac = Math.sqrt(b2ac);\n if (b2ac < 0) {\n continue;\n }\n const t1 = (-b + sqrtb2ac) / (2 * a);\n if (t1 > 0 && t1 < 1) {\n tvalues.push(t1);\n }\n const t2 = (-b - sqrtb2ac) / (2 * a);\n if (t2 > 0 && t2 < 1) {\n tvalues.push(t2);\n }\n }\n\n let j = tvalues.length;\n const jlen = j;\n let mt;\n while (j--) {\n t = tvalues[j];\n mt = 1 - t;\n bounds[0][j] = mt * mt * mt * x0 + 3 * mt * mt * t * x1 + 3 * mt * t * t * x2 + t * t * t * x3;\n bounds[1][j] = mt * mt * mt * y0 + 3 * mt * mt * t * y1 + 3 * mt * t * t * y2 + t * t * t * y3;\n }\n\n bounds[0][jlen] = x0;\n bounds[1][jlen] = y0;\n bounds[0][jlen + 1] = x3;\n bounds[1][jlen + 1] = y3;\n bounds[0].length = bounds[1].length = jlen + 2;\n\n return {\n min: {\n x: Math.min.apply(0, bounds[0]),\n y: Math.min.apply(0, bounds[1]),\n },\n max: {\n x: Math.max.apply(0, bounds[0]),\n y: Math.max.apply(0, bounds[1]),\n },\n };\n};\n\nconst intersect = function (x1, y1, x2, y2, x3, y3, x4, y4) {\n if (\n Math.max(x1, x2) < Math.min(x3, x4) ||\n Math.min(x1, x2) > Math.max(x3, x4) ||\n Math.max(y1, y2) < Math.min(y3, y4) ||\n Math.min(y1, y2) > Math.max(y3, y4)\n ) {\n return;\n }\n const nx = (x1 * y2 - y1 * x2) * (x3 - x4) - (x1 - x2) * (x3 * y4 - y3 * x4);\n const ny = (x1 * y2 - y1 * x2) * (y3 - y4) - (y1 - y2) * (x3 * y4 - y3 * x4);\n const denominator = (x1 - x2) * (y3 - y4) - (y1 - y2) * (x3 - x4);\n\n if (!denominator) {\n return;\n }\n const px = nx / denominator;\n const py = ny / denominator;\n const px2 = +px.toFixed(2);\n const py2 = +py.toFixed(2);\n if (\n px2 < +Math.min(x1, x2).toFixed(2) ||\n px2 > +Math.max(x1, x2).toFixed(2) ||\n px2 < +Math.min(x3, x4).toFixed(2) ||\n px2 > +Math.max(x3, x4).toFixed(2) ||\n py2 < +Math.min(y1, y2).toFixed(2) ||\n py2 > +Math.max(y1, y2).toFixed(2) ||\n py2 < +Math.min(y3, y4).toFixed(2) ||\n py2 > +Math.max(y3, y4).toFixed(2)\n ) {\n return;\n }\n return {\n x: px,\n y: py,\n };\n};\n\nconst isPointInsideBBox = function (bbox, x, y) {\n return x >= bbox.x && x <= bbox.x + bbox.width && y >= bbox.y && y <= bbox.y + bbox.height;\n};\n\nconst rectPath = function (x, y, w, h, r?) {\n if (r) {\n return [\n ['M', +x + +r, y],\n ['l', w - r * 2, 0],\n ['a', r, r, 0, 0, 1, r, r],\n ['l', 0, h - r * 2],\n ['a', r, r, 0, 0, 1, -r, r],\n ['l', r * 2 - w, 0],\n ['a', r, r, 0, 0, 1, -r, -r],\n ['l', 0, r * 2 - h],\n ['a', r, r, 0, 0, 1, r, -r],\n ['z'],\n ];\n }\n const res = [['M', x, y], ['l', w, 0], ['l', 0, h], ['l', -w, 0], ['z']];\n // @ts-ignore\n res.parsePathArray = parsePathArray;\n return res;\n};\n\nconst box = function (x?, y?, width?, height?) {\n if (x === null) {\n x = y = width = height = 0;\n }\n if (y === null) {\n y = x.y;\n width = x.width;\n height = x.height;\n x = x.x;\n }\n return {\n x,\n y,\n width,\n w: width,\n height,\n h: height,\n x2: x + width,\n y2: y + height,\n cx: x + width / 2,\n cy: y + height / 2,\n r1: Math.min(width, height) / 2,\n r2: Math.max(width, height) / 2,\n r0: Math.sqrt(width * width + height * height) / 2,\n path: rectPath(x, y, width, height),\n vb: [x, y, width, height].join(' '),\n };\n};\n\nconst isBBoxIntersect = function (bbox1, bbox2) {\n bbox1 = box(bbox1);\n bbox2 = box(bbox2);\n return (\n isPointInsideBBox(bbox2, bbox1.x, bbox1.y) ||\n isPointInsideBBox(bbox2, bbox1.x2, bbox1.y) ||\n isPointInsideBBox(bbox2, bbox1.x, bbox1.y2) ||\n isPointInsideBBox(bbox2, bbox1.x2, bbox1.y2) ||\n isPointInsideBBox(bbox1, bbox2.x, bbox2.y) ||\n isPointInsideBBox(bbox1, bbox2.x2, bbox2.y) ||\n isPointInsideBBox(bbox1, bbox2.x, bbox2.y2) ||\n isPointInsideBBox(bbox1, bbox2.x2, bbox2.y2) ||\n (((bbox1.x < bbox2.x2 && bbox1.x > bbox2.x) || (bbox2.x < bbox1.x2 && bbox2.x > bbox1.x)) &&\n ((bbox1.y < bbox2.y2 && bbox1.y > bbox2.y) || (bbox2.y < bbox1.y2 && bbox2.y > bbox1.y)))\n );\n};\n\nconst bezierBBox = function (p1x, p1y?, c1x?, c1y?, c2x?, c2y?, p2x?, p2y?) {\n if (!isArray(p1x)) {\n p1x = [p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y];\n }\n const bbox = curveDim.apply(null, p1x);\n return box(bbox.min.x, bbox.min.y, bbox.max.x - bbox.min.x, bbox.max.y - bbox.min.y);\n};\n\nconst findDotsAtSegment = function (p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t) {\n const t1 = 1 - t;\n const t13 = Math.pow(t1, 3);\n const t12 = Math.pow(t1, 2);\n const t2 = t * t;\n const t3 = t2 * t;\n const x = t13 * p1x + t12 * 3 * t * c1x + t1 * 3 * t * t * c2x + t3 * p2x;\n const y = t13 * p1y + t12 * 3 * t * c1y + t1 * 3 * t * t * c2y + t3 * p2y;\n const mx = p1x + 2 * t * (c1x - p1x) + t2 * (c2x - 2 * c1x + p1x);\n const my = p1y + 2 * t * (c1y - p1y) + t2 * (c2y - 2 * c1y + p1y);\n const nx = c1x + 2 * t * (c2x - c1x) + t2 * (p2x - 2 * c2x + c1x);\n const ny = c1y + 2 * t * (c2y - c1y) + t2 * (p2y - 2 * c2y + c1y);\n const ax = t1 * p1x + t * c1x;\n const ay = t1 * p1y + t * c1y;\n const cx = t1 * c2x + t * p2x;\n const cy = t1 * c2y + t * p2y;\n const alpha = 90 - (Math.atan2(mx - nx, my - ny) * 180) / Math.PI;\n // (mx > nx || my < ny) && (alpha += 180);\n return {\n x,\n y,\n m: {\n x: mx,\n y: my,\n },\n n: {\n x: nx,\n y: ny,\n },\n start: {\n x: ax,\n y: ay,\n },\n end: {\n x: cx,\n y: cy,\n },\n alpha,\n };\n};\n\nconst interHelper = function (bez1, bez2, justCount) {\n const bbox1 = bezierBBox(bez1);\n const bbox2 = bezierBBox(bez2);\n if (!isBBoxIntersect(bbox1, bbox2)) {\n return justCount ? 0 : [];\n }\n const l1 = bezlen.apply(0, bez1);\n const l2 = bezlen.apply(0, bez2);\n const n1 = ~~(l1 / 8);\n const n2 = ~~(l2 / 8);\n const dots1 = [];\n const dots2 = [];\n const xy = {};\n let res = justCount ? 0 : [];\n for (let i = 0; i < n1 + 1; i++) {\n const d = findDotsAtSegment.apply(0, bez1.concat(i / n1));\n dots1.push({\n x: d.x,\n y: d.y,\n t: i / n1,\n });\n }\n for (let i = 0; i < n2 + 1; i++) {\n const d = findDotsAtSegment.apply(0, bez2.concat(i / n2));\n dots2.push({\n x: d.x,\n y: d.y,\n t: i / n2,\n });\n }\n for (let i = 0; i < n1; i++) {\n for (let j = 0; j < n2; j++) {\n const di = dots1[i];\n const di1 = dots1[i + 1];\n const dj = dots2[j];\n const dj1 = dots2[j + 1];\n const ci = Math.abs(di1.x - di.x) < 0.001 ? 'y' : 'x';\n const cj = Math.abs(dj1.x - dj.x) < 0.001 ? 'y' : 'x';\n const is = intersect(di.x, di.y, di1.x, di1.y, dj.x, dj.y, dj1.x, dj1.y);\n if (is) {\n if (xy[is.x.toFixed(4)] === is.y.toFixed(4)) {\n continue;\n }\n xy[is.x.toFixed(4)] = is.y.toFixed(4);\n const t1 = di.t + Math.abs((is[ci] - di[ci]) / (di1[ci] - di[ci])) * (di1.t - di.t);\n const t2 = dj.t + Math.abs((is[cj] - dj[cj]) / (dj1[cj] - dj[cj])) * (dj1.t - dj.t);\n if (t1 >= 0 && t1 <= 1 && t2 >= 0 && t2 <= 1) {\n if (justCount) {\n // @ts-ignore\n res += 1;\n } else {\n // @ts-ignore\n res.push({\n x: is.x,\n y: is.y,\n t1,\n t2,\n });\n }\n }\n }\n }\n }\n return res;\n};\n\nconst interPathHelper = function (path1, path2, justCount?) {\n path1 = pathToCurve(path1);\n path2 = pathToCurve(path2);\n let x1;\n let y1;\n let x2;\n let y2;\n let x1m;\n let y1m;\n let x2m;\n let y2m;\n let bez1;\n let bez2;\n let res = justCount ? 0 : [];\n for (let i = 0, ii = path1.length; i < ii; i++) {\n const pi = path1[i];\n if (pi[0] === 'M') {\n x1 = x1m = pi[1];\n y1 = y1m = pi[2];\n } else {\n if (pi[0] === 'C') {\n bez1 = [x1, y1].concat(pi.slice(1));\n x1 = bez1[6];\n y1 = bez1[7];\n } else {\n bez1 = [x1, y1, x1, y1, x1m, y1m, x1m, y1m];\n x1 = x1m;\n y1 = y1m;\n }\n for (let j = 0, jj = path2.length; j < jj; j++) {\n const pj = path2[j];\n if (pj[0] === 'M') {\n x2 = x2m = pj[1];\n y2 = y2m = pj[2];\n } else {\n if (pj[0] === 'C') {\n bez2 = [x2, y2].concat(pj.slice(1));\n x2 = bez2[6];\n y2 = bez2[7];\n } else {\n bez2 = [x2, y2, x2, y2, x2m, y2m, x2m, y2m];\n x2 = x2m;\n y2 = y2m;\n }\n const intr = interHelper(bez1, bez2, justCount);\n if (justCount) {\n // @ts-ignore\n res += intr;\n } else {\n // @ts-ignore\n for (let k = 0, kk = intr.length; k < kk; k++) {\n intr[k].segment1 = i;\n intr[k].segment2 = j;\n intr[k].bez1 = bez1;\n intr[k].bez2 = bez2;\n }\n // @ts-ignore\n res = res.concat(intr);\n }\n }\n }\n }\n }\n return res;\n};\n\nconst intersection = function (path1, path2) {\n return interPathHelper(path1, path2);\n};\n\nfunction decasteljau(points, t) {\n const left = [];\n const right = [];\n\n function recurse(points, t) {\n if (points.length === 1) {\n left.push(points[0]);\n right.push(points[0]);\n } else {\n const middlePoints = [];\n for (let i = 0; i < points.length - 1; i++) {\n if (i === 0) {\n left.push(points[0]);\n }\n if (i === points.length - 2) {\n right.push(points[i + 1]);\n }\n middlePoints[i] = [\n (1 - t) * points[i][0] + t * points[i + 1][0],\n (1 - t) * points[i][1] + t * points[i + 1][1],\n ];\n }\n recurse(middlePoints, t);\n }\n }\n if (points.length) {\n recurse(points, t);\n }\n return { left, right: right.reverse() };\n}\n\nfunction splitCurve(start, end, count) {\n const points = [[start[1], start[2]]];\n count = count || 2;\n const segments = [];\n if (end[0] === 'A') {\n points.push(end[6]);\n points.push(end[7]);\n } else if (end[0] === 'C') {\n points.push([end[1], end[2]]);\n points.push([end[3], end[4]]);\n points.push([end[5], end[6]]);\n } else if (end[0] === 'S' || end[0] === 'Q') {\n points.push([end[1], end[2]]);\n points.push([end[3], end[4]]);\n } else {\n points.push([end[1], end[2]]);\n }\n\n let leftSegments = points;\n const t = 1 / count;\n\n for (let i = 0; i < count - 1; i++) {\n const rt = t / (1 - t * i);\n const split = decasteljau(leftSegments, rt);\n segments.push(split.left);\n leftSegments = split.right;\n }\n segments.push(leftSegments);\n const result = segments.map((segment) => {\n let cmd = [];\n if (segment.length === 4) {\n cmd.push('C');\n cmd = cmd.concat(segment[2]);\n }\n if (segment.length >= 3) {\n if (segment.length === 3) {\n cmd.push('Q');\n }\n cmd = cmd.concat(segment[1]);\n }\n if (segment.length === 2) {\n cmd.push('L');\n }\n cmd = cmd.concat(segment[segment.length - 1]);\n return cmd;\n });\n return result;\n}\n\nconst splitSegment = function (start, end, count) {\n if (count === 1) {\n return [[].concat(start)];\n }\n let segments = [];\n if (end[0] === 'L' || end[0] === 'C' || end[0] === 'Q') {\n segments = segments.concat(splitCurve(start, end, count));\n } else {\n const temp = [].concat(start);\n if (temp[0] === 'M') {\n temp[0] = 'L';\n }\n for (let i = 0; i <= count - 1; i++) {\n segments.push(temp);\n }\n }\n return segments;\n};\n\nconst fillPath = function (source, target) {\n if (source.length === 1) {\n return source;\n }\n const sourceLen = source.length - 1;\n const targetLen = target.length - 1;\n const ratio = sourceLen / targetLen;\n const segmentsToFill = [];\n if (source.length === 1 && source[0][0] === 'M') {\n for (let i = 0; i < targetLen - sourceLen; i++) {\n source.push(source[0]);\n }\n return source;\n }\n for (let i = 0; i < targetLen; i++) {\n const index = Math.floor(ratio * i);\n segmentsToFill[index] = (segmentsToFill[index] || 0) + 1;\n }\n const filled = segmentsToFill.reduce((filled, count, i) => {\n if (i === sourceLen) {\n return filled.concat(source[sourceLen]);\n }\n return filled.concat(splitSegment(source[i], source[i + 1], count));\n }, []);\n filled.unshift(source[0]);\n if (target[targetLen] === 'Z' || target[targetLen] === 'z') {\n filled.push('Z');\n }\n return filled;\n};\n\nconst isEqual = function (obj1, obj2) {\n if (obj1.length !== obj2.length) {\n return false;\n }\n let result = true;\n each(obj1, (item, i) => {\n if (item !== obj2[i]) {\n result = false;\n return false;\n }\n });\n return result;\n};\nfunction getMinDiff(del, add, modify) {\n let type = null;\n let min = modify;\n if (add < min) {\n min = add;\n type = 'add';\n }\n if (del < min) {\n min = del;\n type = 'del';\n }\n return {\n type,\n min,\n };\n}\n\n/*\n * https://en.wikipedia.org/wiki/Levenshtein_distance\n * 计算两条path的编辑距离\n */\nconst levenshteinDistance = function (source, target) {\n const sourceLen = source.length;\n const targetLen = target.length;\n let sourceSegment;\n let targetSegment;\n let temp = 0;\n if (sourceLen === 0 || targetLen === 0) {\n return null;\n }\n const dist = [];\n for (let i = 0; i <= sourceLen; i++) {\n dist[i] = [];\n dist[i][0] = { min: i };\n }\n for (let j = 0; j <= targetLen; j++) {\n dist[0][j] = { min: j };\n }\n\n for (let i = 1; i <= sourceLen; i++) {\n sourceSegment = source[i - 1];\n for (let j = 1; j <= targetLen; j++) {\n targetSegment = target[j - 1];\n if (isEqual(sourceSegment, targetSegment)) {\n temp = 0;\n } else {\n temp = 1;\n }\n const del = dist[i - 1][j].min + 1;\n const add = dist[i][j - 1].min + 1;\n const modify = dist[i - 1][j - 1].min + temp;\n dist[i][j] = getMinDiff(del, add, modify);\n }\n }\n return dist;\n};\n\nconst fillPathByDiff = function (source, target) {\n const diffMatrix = levenshteinDistance(source, target);\n let sourceLen = source.length;\n const targetLen = target.length;\n const changes = [];\n let index = 1;\n let minPos = 1;\n // 如果source和target不是完全不相等\n if (diffMatrix[sourceLen][targetLen].min !== sourceLen) {\n // 获取从source到target所需改动\n for (let i = 1; i <= sourceLen; i++) {\n let min = diffMatrix[i][i].min;\n minPos = i;\n for (let j = index; j <= targetLen; j++) {\n if (diffMatrix[i][j].min < min) {\n min = diffMatrix[i][j].min;\n minPos = j;\n }\n }\n index = minPos;\n if (diffMatrix[i][index].type) {\n changes.push({ index: i - 1, type: diffMatrix[i][index].type });\n }\n }\n // 对source进行增删path\n for (let i = changes.length - 1; i >= 0; i--) {\n index = changes[i].index;\n if (changes[i].type === 'add') {\n source.splice(index, 0, [].concat(source[index]));\n } else {\n source.splice(index, 1);\n }\n }\n }\n // source尾部补齐\n sourceLen = source.length;\n const diff = targetLen - sourceLen;\n if (sourceLen < targetLen) {\n for (let i = 0; i < diff; i++) {\n if (source[sourceLen - 1][0] === 'z' || source[sourceLen - 1][0] === 'Z') {\n source.splice(sourceLen - 2, 0, source[sourceLen - 2]);\n } else {\n source.push(source[sourceLen - 1]);\n }\n sourceLen += 1;\n }\n }\n return source;\n};\n\n// 将两个点均分成count个点\nfunction _splitPoints(points, former, count) {\n const result = [].concat(points);\n let index;\n let t = 1 / (count + 1);\n const formerEnd = _getSegmentPoints(former)[0];\n for (let i = 1; i <= count; i++) {\n t *= i;\n index = Math.floor(points.length * t);\n if (index === 0) {\n result.unshift([formerEnd[0] * t + points[index][0] * (1 - t), formerEnd[1] * t + points[index][1] * (1 - t)]);\n } else {\n result.splice(index, 0, [\n formerEnd[0] * t + points[index][0] * (1 - t),\n formerEnd[1] * t + points[index][1] * (1 - t),\n ]);\n }\n }\n return result;\n}\n\n/*\n * 抽取pathSegment中的关键点\n * M,L,A,Q,H,V一个端点\n * Q, S抽取一个端点,一个控制点\n * C抽取一个端点,两个控制点\n */\nfunction _getSegmentPoints(segment) {\n const points = [];\n switch (segment[0]) {\n case 'M':\n points.push([segment[1], segment[2]]);\n break;\n case 'L':\n points.push([segment[1], segment[2]]);\n break;\n case 'A':\n points.push([segment[6], segment[7]]);\n break;\n case 'Q':\n points.push([segment[3], segment[4]]);\n points.push([segment[1], segment[2]]);\n break;\n case 'T':\n points.push([segment[1], segment[2]]);\n break;\n case 'C':\n points.push([segment[5], segment[6]]);\n points.push([segment[1], segment[2]]);\n points.push([segment[3], segment[4]]);\n break;\n case 'S':\n points.push([segment[3], segment[4]]);\n points.push([segment[1], segment[2]]);\n break;\n case 'H':\n points.push([segment[1], segment[1]]);\n break;\n case 'V':\n points.push([segment[1], segment[1]]);\n break;\n default:\n }\n return points;\n}\n\nconst formatPath = function (fromPath, toPath) {\n if (fromPath.length <= 1) {\n return fromPath;\n }\n let points;\n for (let i = 0; i < toPath.length; i++) {\n if (fromPath[i][0] !== toPath[i][0]) {\n // 获取fromPath的pathSegment的端点,根据toPath的指令对其改造\n points = _getSegmentPoints(fromPath[i]);\n switch (toPath[i][0]) {\n case 'M':\n fromPath[i] = ['M'].concat(points[0]);\n break;\n case 'L':\n fromPath[i] = ['L'].concat(points[0]);\n break;\n case 'A':\n fromPath[i] = [].concat(toPath[i]);\n fromPath[i][6] = points[0][0];\n fromPath[i][7] = points[0][1];\n break;\n case 'Q':\n if (points.length < 2) {\n if (i > 0) {\n points = _splitPoints(points, fromPath[i - 1], 1);\n } else {\n fromPath[i] = toPath[i];\n break;\n }\n }\n fromPath[i] = ['Q'].concat(\n points.reduce((arr, i) => {\n return arr.concat(i);\n }, [])\n );\n break;\n case 'T':\n fromPath[i] = ['T'].concat(points[0]);\n break;\n case 'C':\n if (points.length < 3) {\n if (i > 0) {\n points = _splitPoints(points, fromPath[i - 1], 2);\n } else {\n fromPath[i] = toPath[i];\n break;\n }\n }\n fromPath[i] = ['C'].concat(\n points.reduce((arr, i) => {\n return arr.concat(i);\n }, [])\n );\n break;\n case 'S':\n if (points.length < 2) {\n if (i > 0) {\n points = _splitPoints(points, fromPath[i - 1], 1);\n } else {\n fromPath[i] = toPath[i];\n break;\n }\n }\n fromPath[i] = ['S'].concat(\n points.reduce((arr, i) => {\n return arr.concat(i);\n }, [])\n );\n break;\n default:\n fromPath[i] = toPath[i];\n }\n }\n }\n return fromPath;\n};\n\nexport {\n catmullRomToBezier,\n fillPath,\n fillPathByDiff,\n formatPath,\n intersection,\n parsePathArray,\n parsePathString,\n pathToAbsolute,\n pathToCurve,\n rectPath,\n};\n","import { isNil, each, isString } from './util';\nimport { getOffScreenContext } from './offscreen';\nimport { ShapeAttrs } from '../types';\n\n/**\n * 获取文本的高度\n * @param text 文本\n * @param fontSize 字体大小\n * @param lineHeight 行高,可以为空\n */\nexport function getTextHeight(text: string, fontSize: number, lineHeight?: number): number {\n let lineCount = 1;\n if (isString(text)) {\n lineCount = text.split('\\n').length;\n }\n if (lineCount > 1) {\n const spaceingY = getLineSpaceing(fontSize, lineHeight);\n return fontSize * lineCount + spaceingY * (lineCount - 1);\n }\n return fontSize;\n}\n\n/**\n * 获取行间距如果文本多行,需要获取文本间距\n * @param fontSize 字体大小\n * @param lineHeight 行高\n */\nexport function getLineSpaceing(fontSize: number, lineHeight?: number): number {\n return lineHeight ? lineHeight - fontSize : fontSize * 0.14;\n}\n\n/**\n * 字体宽度\n * @param text 文本\n * @param font 字体\n */\nexport function getTextWidth(text: string, font: string) {\n const context = getOffScreenContext(); // 获取离屏的 ctx 进行计算\n let width = 0;\n // null 或者 undefined 时,宽度为 0\n if (isNil(text) || text === '') {\n return width;\n }\n context.save();\n context.font = font;\n if (isString(text) && text.includes('\\n')) {\n const textArr = text.split('\\n');\n each(textArr, (subText) => {\n const measureWidth = context.measureText(subText).width;\n if (width < measureWidth) {\n width = measureWidth;\n }\n });\n } else {\n width = context.measureText(text).width;\n }\n context.restore();\n return width;\n}\n\nexport function assembleFont(attrs: ShapeAttrs) {\n const { fontSize, fontFamily, fontWeight, fontStyle, fontVariant } = attrs;\n return [fontStyle, fontVariant, fontWeight, `${fontSize}px`, fontFamily].join(' ').trim();\n}\n","import { IBase } from '../interfaces';\nexport function removeFromArray(arr: any[], obj: any) {\n const index = arr.indexOf(obj);\n if (index !== -1) {\n arr.splice(index, 1);\n }\n}\n\nexport const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\nexport { isNil, isFunction, isString, isObject, isArray, mix, each, upperFirst } from '@antv/util';\n\n// 是否元素的父容器\nexport function isParent(container, shape) {\n // 所有 shape 都是 canvas 的子元素\n if (container.isCanvas()) {\n return true;\n }\n let parent = shape.getParent();\n let isParent = false;\n while (parent) {\n if (parent === container) {\n isParent = true;\n break;\n }\n parent = parent.getParent();\n }\n return isParent;\n}\n\nexport function isAllowCapture(element: IBase): boolean {\n // @ts-ignore\n return element.cfg.visible && element.cfg.capture;\n}\n","const toString = {}.toString;\n\nconst isType = (value: any, type: string): boolean => toString.call(value) === '[object ' + type + ']';\n\nexport default isType;\n","/**\n * 是否为函数\n * @param {*} fn 对象\n * @return {Boolean} 是否函数\n */\nimport isType from './is-type';\n\nexport default (value: any): value is Function => {\n return isType(value, 'Function');\n};\n","import isType from './is-type';\n\nexport default (value: any): value is Array => {\n return Array.isArray ?\n Array.isArray(value) :\n isType(value, 'Array');\n}\n","export default (value: any): value is T => {\n /**\n * isObject({}) => true\n * isObject([1, 2, 3]) => true\n * isObject(Function) => true\n * isObject(null) => false\n */\n const type = typeof value;\n return value !== null && type === 'object' || type === 'function';\n};\n","import isArray from './is-array';\nimport isObject from './is-object';\n\nfunction each (elements: any[] | object, func: (v: any, k: any) => any): void {\n if (!elements) {\n return;\n }\n let rst;\n if (isArray(elements)) {\n for (let i = 0, len = elements.length; i < len; i++) {\n rst = func(elements[i], i);\n if (rst === false) {\n break;\n }\n }\n } else if (isObject(elements)) {\n for (const k in elements) {\n if (elements.hasOwnProperty(k)) {\n rst = func(elements[k], k);\n if (rst === false) {\n break;\n }\n }\n }\n }\n}\n\nexport default each;\n","import each from './each';\nimport isFunction from './is-function';\n\nconst keys = Object.keys ? obj => Object.keys(obj) : obj => {\n const result = [];\n each(obj, (value, key) => {\n if (!(isFunction(obj) && key === 'prototype')) {\n result.push(key);\n }\n });\n return result;\n};\n\nexport default keys;\n","import isArray from './is-array';\n\n/**\n * Flattens `array` a single level deep.\n *\n * @param {Array} arr The array to flatten.\n * @param {Array} result The array to return.\n * @return {Array} Returns the new flattened array.\n * @example\n *\n * flattenDeep([1, [2, [3, [4]], 5]]); // => [1, 2, 3, 4, 5]\n */\nconst flattenDeep = function(arr: any[], result: any[] = []): any[] {\n if (!isArray(arr)) {\n result.push(arr);\n } else {\n for (let i = 0; i < arr.length; i += 1) {\n flattenDeep(arr[i], result);\n }\n }\n return result;\n};\n\nexport default flattenDeep;\n","import each from './each';\nimport isArray from './is-array';\n\n/**\n * @param {Array} arr The array to iterate over.\n * @return {*} Returns the maximum value.\n * @example\n *\n * max([1, 2]);\n * // => 2\n *\n * max([]);\n * // => undefined\n *\n * const data = new Array(1250010).fill(1).map((d,idx) => idx);\n *\n * max(data);\n * // => 1250010\n * // Math.max(...data) will encounter \"Maximum call stack size exceeded\" error\n */\nexport default (arr: number[]): number | undefined => {\n if (!isArray(arr)) {\n return undefined;\n }\n return arr.reduce((prev, curr) => {\n return Math.max(prev, curr)\n }, arr[0]);\n};\n","import each from './each';\nimport isArray from './is-array';\n\n/**\n * @param {Array} arr The array to iterate over.\n * @return {*} Returns the minimum value.\n * @example\n *\n * min([1, 2]);\n * // => 1\n *\n * min([]);\n * // => undefined\n *\n * const data = new Array(1250010).fill(1).map((d,idx) => idx);\n *\n * min(data);\n * // => 1250010\n * // Math.min(...data) will encounter \"Maximum call stack size exceeded\" error\n */\nexport default (arr: number[]): number | undefined => {\n if (!isArray(arr)) {\n return undefined;\n }\n return arr.reduce((prev, curr) => {\n return Math.min(prev, curr)\n }, arr[0]);\n};\n","const arrPrototype = Array.prototype;\nconst splice = arrPrototype.splice;\nconst indexOf = arrPrototype.indexOf;\n\nconst pull = function(arr: T[], ...values: any[]): T[] {\n for (let i = 0; i < values.length; i++) {\n const value = values[i];\n let fromIndex = -1;\n while ((fromIndex = indexOf.call(arr, value)) > -1) {\n splice.call(arr, fromIndex, 1);\n }\n }\n return arr;\n};\n\nexport default pull;\n","import isArrayLike from './is-array-like';\n\nconst splice = Array.prototype.splice;\n\nconst pullAt = function pullAt (arr: T[], indexes: number[]): T[] {\n if (!isArrayLike(arr)) {\n return [];\n }\n let length = arr ? indexes.length : 0;\n const last = length - 1;\n\n while (length--) {\n let previous;\n const index = indexes[length];\n if (length === last || index !== previous) {\n previous = index;\n splice.call(arr, index, 1);\n }\n }\n return arr;\n};\n\nexport default pullAt;\n","import isArrayLike from './is-array-like';\nimport pullAt from './pull-at';\n\nconst remove = function(arr: T[], predicate: (value: T, idx: number, arr?: T[]) => boolean): T[] {\n /**\n * const arr = [1, 2, 3, 4]\n * const evens = remove(arr, n => n % 2 == 0)\n * console.log(arr) // => [1, 3]\n * console.log(evens) // => [2, 4]\n */\n const result = [];\n if (!isArrayLike(arr)) {\n return result;\n }\n let i = -1;\n const indexes = [];\n const length = arr.length;\n\n while (++i < length) {\n const value = arr[i];\n if (predicate(value, i, arr)) {\n result.push(value);\n indexes.push(i);\n }\n }\n pullAt(arr, indexes);\n return result;\n};\n\nexport default remove;\n","import isType from './is-type';\n\nexport default (str: any): str is string => {\n return isType(str, 'String');\n}\n","import isArray from './is-array';\nimport isFunction from './is-function';\n\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\n\nexport interface ObjectType {\n [key: string]: T[];\n}\n\nfunction groupBy(data: T[], condition: (item: T) => string): ObjectType;\nfunction groupBy(data: T[], condition: string): ObjectType;\nfunction groupBy(data: T[], condition: ((item: T) => string) | string): ObjectType {\n if (!condition || !isArray(data)) {\n return {};\n }\n const result: ObjectType = {};\n\n // 兼容方法和 字符串的写法\n const predicate = isFunction(condition) ? condition : (item) => item[condition];\n\n let key: string;\n for (let i = 0; i < data.length; i++) {\n const item = data[i];\n key = predicate(item);\n if (hasOwnProperty.call(result, key)) {\n result[key].push(item);\n } else {\n result[key] = [ item ];\n }\n }\n\n return result;\n}\n\nexport default groupBy;\n","/**\n * 判断是否数字\n * @return {Boolean} 是否数字\n */\nimport isType from './is-type';\n\nconst isNumber = function(value: any): value is number {\n return isType(value, 'Number');\n};\nexport default isNumber;\n","import isNumber from './is-number';\n\nconst isInteger = Number.isInteger ? Number.isInteger : function(num: any): boolean {\n return isNumber(num) && num % 1 === 0;\n};\n\nexport default isInteger;\n","const PRECISION = 0.00001; // numbers less than this is considered as 0\n\nexport default function isNumberEqual(a: number, b: number, precision: number = PRECISION): boolean {\n return Math.abs((a - b)) < precision;\n};\n","const mod = function(n: number, m: number): number {\n return ((n % m) + m) % m;\n};\n\nexport default mod;\n","const DEGREE = 180 / Math.PI;\n\nconst toDegree = function(radian: number): number {\n return DEGREE * radian;\n};\n\nexport default toDegree;\n","const RADIAN = Math.PI / 180;\n\nconst toRadian = function(degree: number): number {\n return RADIAN * degree;\n};\n\nexport default toRadian;\n","import each from './each';\nimport isFunction from './is-function';\n\n// @ts-ignore\nconst values = Object.values ? obj => Object.values(obj) : obj => {\n const result = [];\n each(obj, (value, key) => {\n if (!(isFunction(obj) && key === 'prototype')) {\n result.push(value);\n }\n });\n return result;\n};\n\nexport default values;\n","// isFinite,\nconst isNil = function(value: any): value is null | undefined {\n /**\n * isNil(null) => true\n * isNil() => true\n */\n return value === null || value === undefined;\n};\n\nexport default isNil;\n","import toString from './to-string';\n\nconst upperFirst = function(value: string): string {\n const str = toString(value);\n return str.charAt(0).toUpperCase() + str.substring(1);\n};\n\nexport default upperFirst;\n","import isNil from './is-nil';\n\nexport default (value: any): string => {\n if (isNil(value)) return '';\n return value.toString();\n}\n","const objectProto = Object.prototype;\n\nconst isPrototype = function(value: any): boolean {\n const Ctor = value && value.constructor;\n const proto = (typeof Ctor === 'function' && Ctor.prototype) || objectProto;\n return value === proto;\n};\n\nexport default isPrototype;\n","import isNil from './is-nil';\nimport isArrayLike from './is-array-like';\nimport getType from './get-type';\nimport isPrototype from './is-prototype';\n\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction isEmpty(value: any): boolean {\n /**\n * isEmpty(null) => true\n * isEmpty() => true\n * isEmpty(true) => true\n * isEmpty(1) => true\n * isEmpty([1, 2, 3]) => false\n * isEmpty('abc') => false\n * isEmpty({ a: 1 }) => false\n */\n if (isNil(value)) {\n return true;\n }\n if (isArrayLike(value)) {\n return !value.length;\n }\n const type = getType(value);\n if (type === 'Map' || type === 'Set') {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !Object.keys(value).length;\n }\n for (const key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n\nexport default isEmpty;\n","const isObjectLike = function(value: any): value is object {\n /**\n * isObjectLike({}) => true\n * isObjectLike([1, 2, 3]) => true\n * isObjectLike(Function) => false\n * isObjectLike(null) => false\n */\n return typeof value === 'object' && value !== null;\n};\n\nexport default isObjectLike;\n","const isArrayLike = function(value: any): boolean {\n /**\n * isArrayLike([1, 2, 3]) => true\n * isArrayLike(document.body.children) => true\n * isArrayLike('abc') => true\n * isArrayLike(Function) => false\n */\n return value !== null && typeof value !== 'function' && isFinite(value.length);\n};\n\nexport default isArrayLike;\n","import isObjectLike from './is-object-like';\nimport isArrayLike from './is-array-like';\nimport isString from './is-string';\n\nconst isEqual = (value: any, other: any): boolean => {\n if (value === other) {\n return true;\n }\n if (!value || !other) {\n return false;\n }\n if (isString(value) || isString(other)) {\n return false;\n }\n if (isArrayLike(value) || isArrayLike(other)) {\n if (value.length !== other.length) {\n return false;\n }\n let rst = true;\n for (let i = 0; i < value.length; i++) {\n rst = isEqual(value[i], other[i]);\n if (!rst) {\n break;\n }\n }\n return rst;\n }\n if (isObjectLike(value) || isObjectLike(other)) {\n const valueKeys = Object.keys(value);\n const otherKeys = Object.keys(other);\n if (valueKeys.length !== otherKeys.length) {\n return false;\n }\n let rst = true;\n for (let i = 0; i < valueKeys.length; i++) {\n rst = isEqual(value[valueKeys[i]], other[valueKeys[i]]);\n if (!rst) {\n break;\n }\n }\n return rst;\n }\n return false;\n};\n\nexport default isEqual;\n","// FIXME: Mutable param should be forbidden in static lang.\nfunction _mix(dist: Base & Source, obj: Source): void {\n for (const key in obj) {\n if (obj.hasOwnProperty(key) && key !== 'constructor' && obj[key] !== undefined) {\n (dist)[key] = obj[key];\n }\n }\n}\n\nexport default function mix(dist: Base & A & B & C, src1?: A, src2?: B, src3?: C): Base & A & B & C {\n if (src1) _mix(dist, src1);\n if (src2) _mix(dist, src2);\n if (src3) _mix(dist, src3);\n return dist;\n}\n","import each from './each';\nimport isPlainObject from './is-plain-object';\n\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\n/**\n * Creates an object composed of the picked `object` properties.\n *\n * @param {Object} object The source object.\n * @param {...(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 * pick(object, ['a', 'c']); // => { 'a': 1, 'c': 3 }\n */\n\nexport interface ObjectType {\n [key: string]: T;\n}\n\nexport default (object: ObjectType, keys: string[]): ObjectType => {\n if (object === null || !isPlainObject(object)) {\n return {};\n }\n const result: ObjectType = {};\n each(keys, key => {\n if (hasOwnProperty.call(object, key)) {\n result[key] = object[key];\n }\n });\n return result;\n};\n","const map = {};\n\nexport default (prefix?: string): string => {\n prefix = prefix || 'g';\n if (!map[prefix]) {\n map[prefix] = 1;\n } else {\n map[prefix] += 1;\n }\n return prefix + map[prefix];\n};\n","export default () => {};\n","import values from './values';\nimport memoize from './memoize';\nimport isString from './is-string';\nimport type { Properties } from 'csstype';\n\nexport type Font = Pick & {\n fontSize?: number;\n};\n\nlet ctx: CanvasRenderingContext2D;\n\n/**\n * 计算文本的宽度\n */\nexport default memoize(\n (text: any, font: Font = {}): number => {\n const { fontSize, fontFamily, fontWeight, fontStyle, fontVariant } = font;\n if (!ctx) {\n ctx = document.createElement('canvas').getContext('2d') as CanvasRenderingContext2D;\n }\n ctx!.font = [fontStyle, fontVariant, fontWeight, `${fontSize}px`, fontFamily].join(' ');\n return ctx!.measureText(isString(text) ? text : '').width;\n },\n (text: any, font: Font = {}) => [text, ...values(font)].join('')\n);\n","import isFunction from './is-function';\n\n/**\n * _.memoize(calColor);\n * _.memoize(calColor, (...args) => args[0]);\n * @param f\n * @param resolver\n */\nexport default (f: Function, resolver?: (...args: any[]) => string) => {\n if (!isFunction(f)) {\n throw new TypeError('Expected a function')\n }\n\n const memoized = function(...args) {\n // 使用方法构造 key,如果不存在 resolver,则直接取第一个参数作为 key\n const key = resolver ? resolver.apply(this, args) : args[0];\n const cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key)\n }\n const result = f.apply(this, args);\n // 缓存起来\n cache.set(key, result);\n return result\n };\n\n memoized.cache = new Map();\n\n return memoized\n}\n","/**\n * k-v 存储\n */\nexport default class {\n map: { [key: string]: T } = {};\n\n has(key: string): boolean {\n return this.map[key] !== undefined;\n }\n\n get(key: string, def?: T): T | undefined {\n const v = this.map[key];\n return v === undefined ? def : v;\n }\n\n set(key: string, value: T): void {\n this.map[key] = value;\n }\n\n clear() {\n this.map = {};\n }\n\n delete(key: string) {\n delete this.map[key];\n }\n\n size(): number {\n return Object.keys(this.map).length;\n }\n}\n","/**\n * @description 扩展方法,提供 gl-matrix 为提供的方法\n * */\nimport { mat3, vec2 } from 'gl-matrix';\n\ntype mat3Type = [number, number, number, number, number, number, number, number, number];\n\nexport function leftTranslate(out, a, v) {\n const transMat: mat3Type = [ 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n mat3.fromTranslation(transMat, v);\n return mat3.multiply(out, transMat, a);\n}\n\nexport function leftRotate(out, a, rad) {\n const rotateMat: mat3Type = [ 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n mat3.fromRotation(rotateMat, rad);\n return mat3.multiply(out, rotateMat, a);\n}\n\nexport function leftScale(out, a, v) {\n const scaleMat: mat3Type = [ 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n mat3.fromScaling(scaleMat, v);\n return mat3.multiply(out, scaleMat, a);\n}\n\nfunction leftMultiply(out, a, a1) {\n return mat3.multiply(out, a1, a);\n}\n/**\n * 根据 actions 来做 transform\n * @param m\n * @param actions\n */\nexport function transform(m: number[], actions: any[][]) {\n const matrix = m ? [].concat(m) : [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ];\n\n for (let i = 0, len = actions.length; i < len; i++) {\n const action = actions[i];\n switch (action[0]) {\n case 't':\n leftTranslate(matrix, matrix, [ action[1], action[2] ]);\n break;\n case 's':\n leftScale(matrix, matrix, [ action[1], action[2] ]);\n break;\n case 'r':\n leftRotate(matrix, matrix, action[1]);\n break;\n case 'm':\n leftMultiply(matrix, matrix, action[1]);\n break;\n default:\n break;\n }\n }\n\n return matrix;\n}\n\n/**\n * 向量 v1 到 向量 v2 夹角的方向\n * @param {Array} v1 向量\n * @param {Array} v2 向量\n * @return {Boolean} >= 0 顺时针 < 0 逆时针\n */\nexport function direction(v1: number[], v2: number[]): number {\n return v1[0] * v2[1] - v2[0] * v1[1];\n}\n\n/**\n * 二维向量 v1 到 v2 的夹角\n * @param v1\n * @param v2\n * @param direct\n */\nexport function angleTo(v1: [number, number], v2: [number, number], direct: boolean): number {\n const ang = vec2.angle(v1, v2);\n const angleLargeThanPI = direction(v1, v2) >= 0;\n if (direct) {\n if (angleLargeThanPI) {\n return Math.PI * 2 - ang;\n }\n return ang;\n }\n\n if (angleLargeThanPI) {\n return ang;\n }\n return Math.PI * 2 - ang;\n}\n\n/**\n * 计算二维向量的垂直向量\n * @param out\n * @param v\n * @param flag\n */\nexport function vertical(out: number[], v: number[], flag: boolean): number[] {\n if (flag) {\n out[0] = v[1];\n out[1] = -1 * v[0];\n } else {\n out[0] = -1 * v[1];\n out[1] = v[0];\n }\n\n return out;\n}\n","/**\n * THIS FILE WAS CREATED VIA CODEGEN DO NOT MODIFY {@see http://go/af-codegen}\n * @codegen <>\n * @codegenCommand yarn build:icon-glyphs\n */\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _react = _interopRequireDefault(require(\"react\"));\nvar _UNSAFE_baseNew = _interopRequireDefault(require(\"@atlaskit/icon/UNSAFE_base-new\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n/**\n * ⚠️ EXPERIMENTAL ⚠️ - New icons are in alpha - and subject to change or removal in future minor or patch releases.\n * Please reach out in #icon-contributions before using these in production.\n *\n * Icon: \"Warning\".\n * Category: single-purpose\n * Location: @atlaskit/icon\n * Usage guidance: Single purpose - Reserved for warning system status.\n * - [Examples](https://atlaskit.atlassian.com/packages/design-system/icon)\n * - [Code](https://atlaskit.atlassian.com/packages/design-system/icon/docs/custom-icons)\n */\nconst WarningIcon = props => /*#__PURE__*/_react.default.createElement(_UNSAFE_baseNew.default, Object.assign({\n dangerouslySetGlyph: ``\n // eslint-disable-next-line @repo/internal/react/no-unsafe-spread-props\n}, props));\nWarningIcon.displayName = 'WarningIcon';\nvar _default = exports.default = WarningIcon;","/**\n * @jsxRuntime classic\n * @jsx jsx\n */\nimport { memo } from 'react';\n\n// eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766\nimport { css, jsx } from '@emotion/react';\nimport { fg } from '@atlaskit/platform-feature-flags';\n\n/**\n * We are hiding this props from consumers as it's reserved\n * for use by Icon Tile.\n */\n\nvar commonSVGStyles = css({\n overflow: 'hidden',\n pointerEvents: 'none',\n /**\n * Stop-color doesn't properly apply in chrome when the inherited/current color changes.\n * We have to initially set stop-color to inherit (either via DOM attribute or an initial CSS\n * rule) and then override it with currentColor for the color changes to be picked up.\n */\n // eslint-disable-next-line @atlaskit/design-system/no-nested-styles, @atlaskit/ui-styling-standard/no-nested-selectors -- Ignored via go/DSP-18766\n stop: {\n stopColor: 'currentColor'\n }\n});\nvar svgStyles = css({\n color: 'currentColor',\n verticalAlign: 'bottom'\n});\nvar iconStyles = css({\n display: 'inline-block',\n boxSizing: 'border-box',\n flexShrink: 0,\n lineHeight: 1,\n paddingInlineEnd: 'var(--ds--button--new-icon-padding-end, 0)',\n paddingInlineStart: 'var(--ds--button--new-icon-padding-start, 0)'\n});\nvar utilityIconStyles = css({\n lineHeight: \"var(--ds-space-150, 12px)\"\n});\nvar scaleStyles = css({\n width: 'inherit',\n height: 'inherit'\n});\n\n/**\n * For windows high contrast mode\n */\nvar baseHcmStyles = css({\n '@media screen and (forced-colors: active)': {\n color: 'CanvasText',\n filter: 'grayscale(1)'\n }\n});\nvar sizeMap = {\n scale: css({\n width: 'inherit',\n height: 'inherit'\n }),\n utility: css({\n width: \"var(--ds-space-150, 12px)\",\n height: \"var(--ds-space-150, 12px)\"\n }),\n none: css({\n width: \"var(--ds-space-200, 16px)\",\n height: \"var(--ds-space-200, 16px)\"\n }),\n spacious: css({\n width: \"var(--ds-space-300, 24px)\",\n height: \"var(--ds-space-300, 24px)\"\n })\n};\nvar baseSizeMap = {\n global: 16,\n utility: 12\n};\n\n/**\n * __Icon__\n *\n * An icon is used as a visual representation of common actions and commands to provide context.\n *\n * - [Examples](https://atlaskit.atlassian.com/packages/design-system/icon)\n * - [Code](https://atlaskit.atlassian.com/packages/design-system/icon/docs/custom-icons)\n */\nexport var Icon = /*#__PURE__*/memo(function Icon(props) {\n var _ref = props,\n providedColor = _ref.color,\n _ref$spacing = _ref.spacing,\n providedSpacing = _ref$spacing === void 0 ? 'none' : _ref$spacing,\n testId = _ref.testId,\n label = _ref.label,\n LEGACY_primaryColor = _ref.LEGACY_primaryColor,\n LEGACY_secondaryColor = _ref.LEGACY_secondaryColor,\n LEGACY_size = _ref.LEGACY_size,\n FallbackIcon = _ref.LEGACY_fallbackIcon,\n _ref$type = _ref.type,\n type = _ref$type === void 0 ? 'global' : _ref$type,\n dangerouslySetGlyph = _ref.dangerouslySetGlyph,\n shouldScale = _ref.shouldScale,\n LEGACY_margin = _ref.LEGACY_margin;\n var fallbackColor = \"var(--ds-icon, #44546F)\";\n if (fg('platform-design-system-new-icon-default-color') || fg('platform-design-system-new-icon-default-color-2')) {\n fallbackColor = 'currentColor';\n }\n var color = providedColor !== null && providedColor !== void 0 ? providedColor : fallbackColor;\n var dangerouslySetInnerHTML = dangerouslySetGlyph ? {\n __html: dangerouslySetGlyph\n } : undefined;\n\n // Fall back to old icon\n if (FallbackIcon && !fg('platform.design-system-team.enable-new-icons')) {\n // parse out unnecessary props\n return jsx(FallbackIcon, {\n primaryColor: LEGACY_primaryColor !== null && LEGACY_primaryColor !== void 0 ? LEGACY_primaryColor : color,\n secondaryColor: LEGACY_secondaryColor,\n size: LEGACY_size,\n label: label,\n testId: testId\n // @ts-ignore-next-line\n ,\n UNSAFE_margin: LEGACY_margin\n });\n }\n\n // Utility icons don't have 'spacing' as a type, but in case it's provided, we default to 'none'\n var spacing = type === 'utility' ? 'none' : providedSpacing;\n var baseSize = baseSizeMap[type];\n var size = type === 'utility' ? 'utility' : shouldScale ? 'scale' : spacing;\n var viewBoxPadding = spacing === 'spacious' ? 4 : 0;\n var viewBoxSize = baseSize + 2 * viewBoxPadding;\n\n // Workaround for the transparency in our disabled icon token.\n // Because we have multiple strokes in icons, opacities overlap\n // This filter has an impact on render performance, but this is\n // acceptable as icons aren't commonly disabled en-masse\n var iconColor = color;\n if (dangerouslySetInnerHTML && color === \"var(--ds-icon-disabled, #091E424F)\") {\n dangerouslySetInnerHTML.__html = \"\\n\\n \\n \\n\\n\\n \".concat(dangerouslySetInnerHTML.__html, \"\\n\");\n iconColor = \"var(--ds-icon, #44546F)\";\n }\n return jsx(\"span\", {\n \"data-testid\": testId,\n role: label ? 'img' : undefined,\n \"aria-label\": label ? label : undefined,\n \"aria-hidden\": label ? undefined : true,\n style: {\n color: iconColor\n },\n css: [iconStyles, baseHcmStyles, shouldScale && scaleStyles, type === 'utility' && utilityIconStyles]\n }, jsx(\"svg\", {\n fill: \"none\"\n // Adjusting the viewBox allows the icon padding to scale with the contents of the SVG, which\n // we want for Icon Tile\n ,\n viewBox: \"\".concat(0 - viewBoxPadding, \" \").concat(0 - viewBoxPadding, \" \").concat(viewBoxSize, \" \").concat(viewBoxSize),\n role: \"presentation\",\n css: [commonSVGStyles, svgStyles, sizeMap[size]],\n dangerouslySetInnerHTML: dangerouslySetInnerHTML\n }));\n});\nexport default Icon;","export var sizes = {\n small: '16px',\n medium: '24px',\n large: '32px',\n xlarge: '48px'\n};\nexport var sizeMap = {\n small: 'small',\n medium: 'medium',\n large: 'large',\n xlarge: 'xlarge'\n};\nexport var dimensions = {\n small: {\n width: sizes.small,\n height: sizes.small\n },\n medium: {\n width: sizes.medium,\n height: sizes.medium\n },\n large: {\n width: sizes.large,\n height: sizes.large\n },\n xlarge: {\n width: sizes.xlarge,\n height: sizes.xlarge\n }\n};","import { dimensions } from '../constants';\n// eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766\nimport { css } from '@emotion/react';\nexport var commonSVGStyles = {\n overflow: 'hidden',\n pointerEvents: 'none',\n /**\n * Stop-color doesn't properly apply in chrome when the inherited/current color changes.\n * We have to initially set stop-color to inherit (either via DOM attribute or an initial CSS\n * rule) and then override it with currentColor for the color changes to be picked up.\n */\n stop: {\n stopColor: 'currentColor'\n }\n};\n\n// eslint-disable-next-line @atlaskit/ui-styling-standard/no-imported-style-values, @atlaskit/ui-styling-standard/no-unsafe-values -- Ignored via go/DSP-18766\nvar smallStyles = css(dimensions.small);\n// eslint-disable-next-line @atlaskit/ui-styling-standard/no-imported-style-values, @atlaskit/ui-styling-standard/no-unsafe-values -- Ignored via go/DSP-18766\nvar mediumStyles = css(dimensions.medium);\n// eslint-disable-next-line @atlaskit/ui-styling-standard/no-imported-style-values, @atlaskit/ui-styling-standard/no-unsafe-values -- Ignored via go/DSP-18766\nvar largeStyles = css(dimensions.large);\n// eslint-disable-next-line @atlaskit/ui-styling-standard/no-imported-style-values, @atlaskit/ui-styling-standard/no-unsafe-values -- Ignored via go/DSP-18766\nvar xlargeStyles = css(dimensions.xlarge);\n\n// pre-built css style-size map\n// eslint-disable-next-line @atlaskit/ui-styling-standard/no-exported-styles -- Ignored via go/DSP-18766\nexport var sizeStyleMap = {\n small: smallStyles,\n medium: mediumStyles,\n large: largeStyles,\n xlarge: xlargeStyles\n};\n\n/**\n * Returns the width of the icon's parent span. This function has\n * special behaviour to deal with icon-file-type specifically.\n *\n * The reality is the SVG still has its own dimensions, so this is\n * a secondary fallback which in 95% of cases is not required.\n * It's only really being kept to maintain backward compatability.\n */\nexport var getIconSize = function getIconSize(_ref) {\n var width = _ref.width,\n height = _ref.height,\n size = _ref.size;\n if (width && height) {\n return {\n width: width,\n height: height\n };\n }\n if (size) {\n return dimensions[size];\n }\n return undefined;\n};","import _extends from \"@babel/runtime/helpers/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n/**\n * @jsxRuntime classic\n * @jsx jsx\n */\nimport { memo } from 'react';\n\n// eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766\nimport { css, jsx } from '@emotion/react';\nimport { commonSVGStyles, getIconSize } from './styles';\nimport { getBackground } from './utils';\n\n/**\n * We are hiding these props from consumers as they're used to\n * hack around icon sizing specifically for icon-file-type.\n */\n\nvar iconStyles = css({\n display: 'inline-block',\n flexShrink: 0,\n lineHeight: 1,\n // eslint-disable-next-line @atlaskit/design-system/no-nested-styles, @atlaskit/ui-styling-standard/no-nested-selectors -- Ignored via go/DSP-18766\n '> svg': _objectSpread(_objectSpread({}, commonSVGStyles), {}, {\n maxWidth: '100%',\n maxHeight: '100%',\n color: 'var(--icon-primary-color)',\n fill: 'var(--icon-secondary-color)',\n verticalAlign: 'bottom'\n })\n});\n/**\n * For windows high contrast mode\n */\nvar baseHcmStyles = css({\n '@media screen and (forced-colors: active)': {\n // eslint-disable-next-line @atlaskit/design-system/no-nested-styles, @atlaskit/ui-styling-standard/no-nested-selectors -- Ignored via go/DSP-18766\n '> svg': {\n filter: 'grayscale(1)',\n '--icon-primary-color': 'CanvasText',\n // foreground\n '--icon-secondary-color': 'Canvas' // background\n }\n }\n});\nvar primaryEqualsSecondaryHcmStyles = css({\n '@media screen and (forced-colors: active)': {\n // eslint-disable-next-line @atlaskit/design-system/no-nested-styles, @atlaskit/ui-styling-standard/no-nested-selectors -- Ignored via go/DSP-18766\n '> svg': {\n // if the primaryColor is the same as the secondaryColor we\n // set the --icon-primary-color to Canvas\n // this is usually to convey state i.e. Checkbox checked -> not checked\n '--icon-primary-color': 'Canvas' // foreground\n }\n }\n});\nvar secondaryTransparentHcmStyles = css({\n '@media screen and (forced-colors: active)': {\n // eslint-disable-next-line @atlaskit/design-system/no-nested-styles, @atlaskit/ui-styling-standard/no-nested-selectors -- Ignored via go/DSP-18766\n '> svg': {\n '--icon-secondary-color': 'transparent' // background\n }\n }\n});\n\n/**\n * __Icon__\n *\n * An icon is used as a visual representation of common actions and commands to provide context.\n *\n * - [Examples](https://atlaskit.atlassian.com/packages/design-system/icon)\n * - [Code](https://atlaskit.atlassian.com/packages/design-system/icon/docs/custom-icons)\n */\nexport var Icon = /*#__PURE__*/memo(function Icon(props) {\n var _ref = props,\n Glyph = _ref.glyph,\n dangerouslySetGlyph = _ref.dangerouslySetGlyph,\n _ref$primaryColor = _ref.primaryColor,\n primaryColor = _ref$primaryColor === void 0 ? 'currentColor' : _ref$primaryColor,\n secondaryColor = _ref.secondaryColor,\n size = _ref.size,\n testId = _ref.testId,\n label = _ref.label,\n width = _ref.width,\n height = _ref.height,\n UNSAFE_margin = _ref.UNSAFE_margin;\n var glyphProps = dangerouslySetGlyph ? {\n dangerouslySetInnerHTML: {\n __html: dangerouslySetGlyph\n }\n } : {\n children: Glyph ? jsx(Glyph, {\n role: \"presentation\"\n }) : null\n };\n var dimensions = getIconSize({\n width: width,\n height: height,\n size: size\n });\n return jsx(\"span\", _extends({\n \"data-testid\": testId,\n \"data-vc\": \"icon-\".concat(testId),\n role: label ? 'img' : undefined,\n \"aria-label\": label ? label : undefined,\n \"aria-hidden\": label ? undefined : true\n // eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop -- Ignored via go/DSP-18766\n ,\n style: _objectSpread({\n '--icon-primary-color': primaryColor,\n // eslint-disable-next-line @atlaskit/ui-styling-standard/no-imported-style-values -- Ignored via go/DSP-18766\n '--icon-secondary-color': secondaryColor || getBackground()\n }, UNSAFE_margin ? {\n margin: UNSAFE_margin\n } : {})\n }, glyphProps, {\n css: [iconStyles, baseHcmStyles, primaryColor === secondaryColor && primaryEqualsSecondaryHcmStyles, secondaryColor === 'transparent' && secondaryTransparentHcmStyles,\n // NB: This can be resolved if this component, composes base SVG / and/or skeleton\n // We could then simplify how common styles are dealt with simply by encapsulating them\n // at their appropriate level and/or having a singular approach to css variables in the package\n dimensions &&\n // eslint-disable-next-line @atlaskit/design-system/consistent-css-prop-usage, @atlaskit/ui-styling-standard/no-imported-style-values -- Ignored via go/DSP-18766\n css({\n // eslint-disable-next-line @atlaskit/ui-styling-standard/no-unsafe-values -- Ignored via go/DSP-18766\n width: dimensions.width,\n // eslint-disable-next-line @atlaskit/ui-styling-standard/no-unsafe-values -- Ignored via go/DSP-18766\n height: dimensions.height,\n // eslint-disable-next-line @atlaskit/ui-styling-standard/no-unsafe-values -- Ignored via go/DSP-18766\n '> svg': dimensions\n })]\n }));\n});\nexport default Icon;","export var getBackground = function getBackground() {\n return \"var(--ds-surface, #FFFFFF)\";\n};","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"dangerouslySetGlyph\"];\nimport React, { memo } from 'react';\nimport { fg } from '@atlaskit/platform-feature-flags';\nimport LegacyIcon from './icon';\nvar sizesEligibleForNewIcons = ['small', 'medium'];\n\n/**\n * `IconFacade` is a component that conditionally renders either a new or legacy icon based on a feature flag.\n *\n * @param {IconFacadeProps} props - The props for the IconFacade component. Includes properties for configuring\n * the icon such as `size`, `spacing`, `primaryColor`, `iconType`, and potentially others depending on the icon.\n * `dangerouslySetGlyph` is a prop specific to the legacy icon component for setting the icon glyph directly.\n * @returns A React element representing either the new or legacy icon based on the feature flag and icon size.\n */\nexport var IconFacade = /*#__PURE__*/memo(function IconFacade(_ref) {\n var _props$size;\n var dangerouslySetGlyph = _ref.dangerouslySetGlyph,\n props = _objectWithoutProperties(_ref, _excluded);\n var NewIcon = props.newIcon;\n\n // By default, the icon size will be medium and spacing will be none for small icons\n var size = (_props$size = props.size) !== null && _props$size !== void 0 ? _props$size : 'medium';\n var spacing = size === 'small' ? 'none' : 'spacious';\n var useNewIcon = !props.isFacadeDisabled &&\n // eslint-disable-next-line @atlaskit/platform/ensure-feature-flag-prefix\n fg('platform-visual-refresh-icons-legacy-facade') && sizesEligibleForNewIcons.includes(size);\n if (useNewIcon && NewIcon) {\n return /*#__PURE__*/React.createElement(NewIcon, _extends({}, props, {\n spacing: spacing,\n color: props.primaryColor || 'currentColor',\n type: props.iconType\n }));\n }\n return /*#__PURE__*/React.createElement(LegacyIcon, _extends({\n dangerouslySetGlyph: dangerouslySetGlyph\n }, props));\n});\nexport default IconFacade;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _react = _interopRequireDefault(require(\"react\"));\nvar _base = require(\"@atlaskit/icon/base\");\nvar _warning = _interopRequireDefault(require(\"@atlaskit/icon/core/warning\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nconst WarningIcon = props => /*#__PURE__*/_react.default.createElement(_base.UNSAFE_IconFacade, Object.assign({\n dangerouslySetGlyph: ``\n}, props, {\n newIcon: _warning.default\n}));\nWarningIcon.displayName = 'WarningIcon';\nvar _default = exports.default = WarningIcon;","var _ref, _process, _process2;\n// We can't rely on NODE_ENV === 'test' if its value is already configured by the consumer to some other value, so better to use JEST_WORKER_ID\n// https://jestjs.io/docs/environment-variables#jest_worker_id\nvar TESTS_MODE = (_ref = (globalThis === null || globalThis === void 0 || (_process = globalThis.process) === null || _process === void 0 || (_process = _process.env) === null || _process === void 0 ? void 0 : _process.JEST_WORKER_ID) !== undefined) !== null && _ref !== void 0 ? _ref : false;\nvar DEBUG_MODE = !TESTS_MODE && (globalThis === null || globalThis === void 0 || (_process2 = globalThis.process) === null || _process2 === void 0 || (_process2 = _process2.env) === null || _process2 === void 0 ? void 0 : _process2.NODE_ENV) !== 'production';\nexport var debug = function debug() {\n var _console;\n if (!DEBUG_MODE) {\n return;\n }\n\n // eslint-disable-next-line no-console\n (_console = console).debug.apply(_console, arguments);\n};","import { debug } from './debug';\nvar pkgName = '@atlaskit/platform-feature-flags';\nexport var PFF_GLOBAL_KEY = '__PLATFORM_FEATURE_FLAGS__';\nvar hasProcessEnv = typeof process !== 'undefined' && typeof process.env !== 'undefined';\n\n// FF global overrides can be configured by test runners or Storybook\nvar ENV_ENABLE_PLATFORM_FF = hasProcessEnv ?\n// Use global \"process\" variable and process.env['FLAG_NAME'] syntax, so it can be replaced by webpack DefinePlugin\nprocess.env['ENABLE_PLATFORM_FF'] === 'true' : false;\n\n// STORYBOOK_ENABLE_PLATFORM_FF is included as storybook only allows env vars prefixed with STORYBOOK\n// https://github.com/storybookjs/storybook/issues/12270\n\nvar ENV_STORYBOOK_ENABLE_PLATFORM_FF = hasProcessEnv ?\n// Use global \"process\" variable and process.env['FLAG_NAME'] syntax, so it can be replaced by webpack DefinePlugin\nprocess.env['STORYBOOK_ENABLE_PLATFORM_FF'] === 'true' : false;\nvar ENABLE_GLOBAL_PLATFORM_FF_OVERRIDE = ENV_ENABLE_PLATFORM_FF || ENV_STORYBOOK_ENABLE_PLATFORM_FF;\nvar DEFAULT_PFF_GLOBAL = {\n // In development mode we want to capture any feature flag checks that happen using the default resolver and log this result when the resolver is replaced.\n // This is because evaluating feature flags when the resolver/FF client is loaded asynchronously could cause unexpected issues.\n earlyResolvedFlags: new Map(),\n booleanResolver: function booleanResolver(flagKey) {\n if (process.env.NODE_ENV !== 'production') {\n var unresolvedFlagCount = this.earlyResolvedFlags.get(flagKey) || 0;\n this.earlyResolvedFlags.set(flagKey, unresolvedFlagCount + 1);\n }\n return false;\n }\n};\nvar globalVar = typeof window !== 'undefined' ? window : globalThis;\nglobalVar[PFF_GLOBAL_KEY] = globalVar[PFF_GLOBAL_KEY] || DEFAULT_PFF_GLOBAL;\nexport function setBooleanResolver(resolver) {\n globalVar[PFF_GLOBAL_KEY].booleanResolver = resolver;\n if (process.env.NODE_ENV !== 'production') {\n var _globalVar$PFF_GLOBAL;\n if (((_globalVar$PFF_GLOBAL = globalVar[PFF_GLOBAL_KEY]) === null || _globalVar$PFF_GLOBAL === void 0 || (_globalVar$PFF_GLOBAL = _globalVar$PFF_GLOBAL.earlyResolvedFlags) === null || _globalVar$PFF_GLOBAL === void 0 ? void 0 : _globalVar$PFF_GLOBAL.size) > 0) {\n debug(\"[%s]: The following list of Feature Flags were called, the following number of times, before setBooleanResolver.\", pkgName, Array.from(globalVar[PFF_GLOBAL_KEY].earlyResolvedFlags.entries()));\n globalVar[PFF_GLOBAL_KEY].earlyResolvedFlags.clear();\n }\n }\n}\nexport function resolveBooleanFlag(flagKey) {\n if (ENABLE_GLOBAL_PLATFORM_FF_OVERRIDE) {\n debug('[%s]: The feature flags were enabled while running tests. The flag \"%s\" will be always enabled.', pkgName, flagKey);\n return true;\n }\n try {\n var _globalVar$PFF_GLOBAL2;\n var result = (_globalVar$PFF_GLOBAL2 = globalVar[PFF_GLOBAL_KEY]) === null || _globalVar$PFF_GLOBAL2 === void 0 ? void 0 : _globalVar$PFF_GLOBAL2.booleanResolver(flagKey);\n if (typeof result !== 'boolean') {\n // eslint-disable-next-line no-console\n console.warn(\"\".concat(flagKey, \" resolved to a non-boolean value, returning false for safety\"));\n return false;\n }\n return result;\n } catch (e) {\n return false;\n }\n}","import { setBooleanResolver, resolveBooleanFlag } from './resolvers';\n\n/**\n * This creates a boolean flag resolver that allows calls to `getBooleanFF` inside of Platform components to use a Product's\n * feature flag client and LD project, rather than installing a feature flag client of their own, or passing those flags in via props.\n *\n * @param flagResolver\n */\nexport function setBooleanFeatureFlagResolver(flagResolver) {\n setBooleanResolver(flagResolver);\n}\n\n/**\n * Returns the value of a feature flag. If the flag does not resolve, it returns the \"false\" as a default value.\n *\n * @deprecated Use {@link fg} function instead.\n * @param name\n */\nexport function getBooleanFF(name) {\n return resolveBooleanFlag(name);\n}\n\n/**\n * Returns the value of a feature flag. If the flag does not resolve, it returns the \"false\" as a default value.\n *\n * @param name\n */\nexport function fg(name) {\n return resolveBooleanFlag(name);\n}","var isDevelopment = false;\n\n/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n return tag.sheet;\n } // this weirdness brought to you by firefox\n\n /* istanbul ignore next */\n\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n if (document.styleSheets[i].ownerNode === tag) {\n return document.styleSheets[i];\n }\n } // this function should always return with a value\n // TS can't understand it though so we make it stop complaining here\n\n\n return undefined;\n}\n\nfunction createStyleElement(options) {\n var tag = document.createElement('style');\n tag.setAttribute('data-emotion', options.key);\n\n if (options.nonce !== undefined) {\n tag.setAttribute('nonce', options.nonce);\n }\n\n tag.appendChild(document.createTextNode(''));\n tag.setAttribute('data-s', '');\n return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\n // Using Node instead of HTMLElement since container may be a ShadowRoot\n function StyleSheet(options) {\n var _this = this;\n\n this._insertTag = function (tag) {\n var before;\n\n if (_this.tags.length === 0) {\n if (_this.insertionPoint) {\n before = _this.insertionPoint.nextSibling;\n } else if (_this.prepend) {\n before = _this.container.firstChild;\n } else {\n before = _this.before;\n }\n } else {\n before = _this.tags[_this.tags.length - 1].nextSibling;\n }\n\n _this.container.insertBefore(tag, before);\n\n _this.tags.push(tag);\n };\n\n this.isSpeedy = options.speedy === undefined ? !isDevelopment : options.speedy;\n this.tags = [];\n this.ctr = 0;\n this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n this.key = options.key;\n this.container = options.container;\n this.prepend = options.prepend;\n this.insertionPoint = options.insertionPoint;\n this.before = null;\n }\n\n var _proto = StyleSheet.prototype;\n\n _proto.hydrate = function hydrate(nodes) {\n nodes.forEach(this._insertTag);\n };\n\n _proto.insert = function insert(rule) {\n // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n // it's 1 in dev because we insert source maps that map a single rule to a location\n // and you can only have one source map per style tag\n if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n this._insertTag(createStyleElement(this));\n }\n\n var tag = this.tags[this.tags.length - 1];\n\n if (this.isSpeedy) {\n var sheet = sheetForTag(tag);\n\n try {\n // this is the ultrafast version, works across browsers\n // the big drawback is that the css won't be editable in devtools\n sheet.insertRule(rule, sheet.cssRules.length);\n } catch (e) {\n }\n } else {\n tag.appendChild(document.createTextNode(rule));\n }\n\n this.ctr++;\n };\n\n _proto.flush = function flush() {\n this.tags.forEach(function (tag) {\n var _tag$parentNode;\n\n return (_tag$parentNode = tag.parentNode) == null ? void 0 : _tag$parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0;\n };\n\n return StyleSheet;\n}();\n\nexport { StyleSheet };\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @return {number}\n */\nexport function indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: ''}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0), root, {length: -root.length}, props)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\nexport var LAYER = '@layer'\n","import {IMPORT, LAYER, COMMENT, RULESET, DECLARATION, KEYFRAMES} from './Enum.js'\nimport {strlen, sizeof} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\tvar length = sizeof(children)\n\n\tfor (var i = 0; i < length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase LAYER: if (element.children.length) break\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: element.value = element.props.join(',')\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f') != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset: if (ampersand == -1) characters = replace(characters, /\\f/g, '')\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule === 99 && charat(characters, 3) === 110 ? 100 : atrule) {\n\t\t\t\t\t\t\t\t\t// d l m s\n\t\t\t\t\t\t\t\t\tcase 100: case 108: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @return {object}\n */\nexport function comment (value, root, parent) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @return {object}\n */\nexport function declaration (value, root, parent, length) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length)\n}\n","import { StyleSheet } from '@emotion/sheet';\nimport { dealloc, alloc, next, token, from, peek, delimit, slice, position, RULESET, combine, match, serialize, copy, replace, WEBKIT, MOZ, MS, KEYFRAMES, DECLARATION, hash, charat, strlen, indexof, stringify, rulesheet, middleware, compile } from 'stylis';\nimport '@emotion/weak-memoize';\nimport '@emotion/memoize';\n\nvar identifierWithPointTracking = function identifierWithPointTracking(begin, points, index) {\n var previous = 0;\n var character = 0;\n\n while (true) {\n previous = character;\n character = peek(); // &\\f\n\n if (previous === 38 && character === 12) {\n points[index] = 1;\n }\n\n if (token(character)) {\n break;\n }\n\n next();\n }\n\n return slice(begin, position);\n};\n\nvar toRules = function toRules(parsed, points) {\n // pretend we've started with a comma\n var index = -1;\n var character = 44;\n\n do {\n switch (token(character)) {\n case 0:\n // &\\f\n if (character === 38 && peek() === 12) {\n // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n // and when it should just concatenate the outer and inner selectors\n // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n points[index] = 1;\n }\n\n parsed[index] += identifierWithPointTracking(position - 1, points, index);\n break;\n\n case 2:\n parsed[index] += delimit(character);\n break;\n\n case 4:\n // comma\n if (character === 44) {\n // colon\n parsed[++index] = peek() === 58 ? '&\\f' : '';\n points[index] = parsed[index].length;\n break;\n }\n\n // fallthrough\n\n default:\n parsed[index] += from(character);\n }\n } while (character = next());\n\n return parsed;\n};\n\nvar getRules = function getRules(value, points) {\n return dealloc(toRules(alloc(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\nvar compat = function compat(element) {\n if (element.type !== 'rule' || !element.parent || // positive .length indicates that this rule contains pseudo\n // negative .length indicates that this rule has been already prefixed\n element.length < 1) {\n return;\n }\n\n var value = element.value,\n parent = element.parent;\n var isImplicitRule = element.column === parent.column && element.line === parent.line;\n\n while (parent.type !== 'rule') {\n parent = parent.parent;\n if (!parent) return;\n } // short-circuit for the simplest case\n\n\n if (element.props.length === 1 && value.charCodeAt(0) !== 58\n /* colon */\n && !fixedElements.get(parent)) {\n return;\n } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n\n if (isImplicitRule) {\n return;\n }\n\n fixedElements.set(element, true);\n var points = [];\n var rules = getRules(value, points);\n var parentRules = parent.props;\n\n for (var i = 0, k = 0; i < rules.length; i++) {\n for (var j = 0; j < parentRules.length; j++, k++) {\n element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n }\n }\n};\nvar removeLabel = function removeLabel(element) {\n if (element.type === 'decl') {\n var value = element.value;\n\n if ( // charcode for l\n value.charCodeAt(0) === 108 && // charcode for b\n value.charCodeAt(2) === 98) {\n // this ignores label\n element[\"return\"] = '';\n element.value = '';\n }\n }\n};\n\n/* eslint-disable no-fallthrough */\n\nfunction prefix(value, length) {\n switch (hash(value, length)) {\n // color-adjust\n case 5103:\n return WEBKIT + 'print-' + value + value;\n // animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\n case 5737:\n case 4201:\n case 3177:\n case 3433:\n case 1641:\n case 4457:\n case 2921: // text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\n case 5572:\n case 6356:\n case 5844:\n case 3191:\n case 6645:\n case 3005: // mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\n case 6391:\n case 5879:\n case 5623:\n case 6135:\n case 4599:\n case 4855: // background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\n case 4215:\n case 6389:\n case 5109:\n case 5365:\n case 5621:\n case 3829:\n return WEBKIT + value + value;\n // appearance, user-select, transform, hyphens, text-size-adjust\n\n case 5349:\n case 4246:\n case 4810:\n case 6968:\n case 2756:\n return WEBKIT + value + MOZ + value + MS + value + value;\n // flex, flex-direction\n\n case 6828:\n case 4268:\n return WEBKIT + value + MS + value + value;\n // order\n\n case 6165:\n return WEBKIT + value + MS + 'flex-' + value + value;\n // align-items\n\n case 5187:\n return WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value;\n // align-self\n\n case 5443:\n return WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/, '') + value;\n // align-content\n\n case 4675:\n return WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/, '') + value;\n // flex-shrink\n\n case 5548:\n return WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value;\n // flex-basis\n\n case 5292:\n return WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value;\n // flex-grow\n\n case 6060:\n return WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value;\n // transition\n\n case 4554:\n return WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value;\n // cursor\n\n case 6187:\n return replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value;\n // background, background-image\n\n case 5495:\n case 3959:\n return replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1');\n // justify-content\n\n case 4968:\n return replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value;\n // (margin|padding)-inline-(start|end)\n\n case 4095:\n case 3583:\n case 4068:\n case 2532:\n return replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value;\n // (min|max)?(width|height|inline-size|block-size)\n\n case 8116:\n case 7059:\n case 5753:\n case 5535:\n case 5445:\n case 5701:\n case 4933:\n case 4677:\n case 5533:\n case 5789:\n case 5021:\n case 4765:\n // stretch, max-content, min-content, fill-available\n if (strlen(value) - 1 - length > 6) switch (charat(value, length + 1)) {\n // (m)ax-content, (m)in-content\n case 109:\n // -\n if (charat(value, length + 4) !== 45) break;\n // (f)ill-available, (f)it-content\n\n case 102:\n return replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value;\n // (s)tretch\n\n case 115:\n return ~indexof(value, 'stretch') ? prefix(replace(value, 'stretch', 'fill-available'), length) + value : value;\n }\n break;\n // position: sticky\n\n case 4949:\n // (s)ticky?\n if (charat(value, length + 1) !== 115) break;\n // display: (flex|inline-flex)\n\n case 6444:\n switch (charat(value, strlen(value) - 3 - (~indexof(value, '!important') && 10))) {\n // stic(k)y\n case 107:\n return replace(value, ':', ':' + WEBKIT) + value;\n // (inline-)?fl(e)x\n\n case 101:\n return replace(value, /(.+:)([^;!]+)(;|!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value;\n }\n\n break;\n // writing-mode\n\n case 5936:\n switch (charat(value, length + 11)) {\n // vertical-l(r)\n case 114:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value;\n // vertical-r(l)\n\n case 108:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value;\n // horizontal(-)tb\n\n case 45:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value;\n }\n\n return WEBKIT + value + MS + value + value;\n }\n\n return value;\n}\n\nvar prefixer = function prefixer(element, index, children, callback) {\n if (element.length > -1) if (!element[\"return\"]) switch (element.type) {\n case DECLARATION:\n element[\"return\"] = prefix(element.value, element.length);\n break;\n\n case KEYFRAMES:\n return serialize([copy(element, {\n value: replace(element.value, '@', '@' + WEBKIT)\n })], callback);\n\n case RULESET:\n if (element.length) return combine(element.props, function (value) {\n switch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n // :read-(only|write)\n case ':read-only':\n case ':read-write':\n return serialize([copy(element, {\n props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]\n })], callback);\n // :placeholder\n\n case '::placeholder':\n return serialize([copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]\n })], callback);\n }\n\n return '';\n });\n }\n};\n\nvar defaultStylisPlugins = [prefixer];\n\nvar createCache = function\n /*: EmotionCache */\ncreateCache(options\n/*: Options */\n) {\n var key = options.key;\n\n if (key === 'css') {\n var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)\n // note this very very intentionally targets all style elements regardless of the key to ensure\n // that creating a cache works inside of render of a React component\n\n Array.prototype.forEach.call(ssrStyles, function (node\n /*: HTMLStyleElement */\n ) {\n // we want to only move elements which have a space in the data-emotion attribute value\n // because that indicates that it is an Emotion 11 server-side rendered style elements\n // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector\n // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)\n // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles\n // will not result in the Emotion 10 styles being destroyed\n var dataEmotionAttribute = node.getAttribute('data-emotion');\n\n if (dataEmotionAttribute.indexOf(' ') === -1) {\n return;\n }\n\n document.head.appendChild(node);\n node.setAttribute('data-s', '');\n });\n }\n\n var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n var inserted = {};\n var container;\n /* : Node */\n\n var nodesToHydrate = [];\n\n {\n container = options.container || document.head;\n Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which\n // means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n document.querySelectorAll(\"style[data-emotion^=\\\"\" + key + \" \\\"]\"), function (node\n /*: HTMLStyleElement */\n ) {\n var attrib = node.getAttribute(\"data-emotion\").split(' ');\n\n for (var i = 1; i < attrib.length; i++) {\n inserted[attrib[i]] = true;\n }\n\n nodesToHydrate.push(node);\n });\n }\n\n var _insert;\n /*: (\n selector: string,\n serialized: SerializedStyles,\n sheet: StyleSheet,\n shouldCache: boolean\n ) => string | void */\n\n\n var omnipresentPlugins = [compat, removeLabel];\n\n {\n var currentSheet;\n var finalizingPlugins = [stringify, rulesheet(function (rule) {\n currentSheet.insert(rule);\n })];\n var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n\n var stylis = function stylis(styles) {\n return serialize(compile(styles), serializer);\n };\n\n _insert = function\n /*: void */\n insert(selector\n /*: string */\n , serialized\n /*: SerializedStyles */\n , sheet\n /*: StyleSheet */\n , shouldCache\n /*: boolean */\n ) {\n currentSheet = sheet;\n\n stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n\n if (shouldCache) {\n cache.inserted[serialized.name] = true;\n }\n };\n }\n\n var cache\n /*: EmotionCache */\n = {\n key: key,\n sheet: new StyleSheet({\n key: key,\n container: container,\n nonce: options.nonce,\n speedy: options.speedy,\n prepend: options.prepend,\n insertionPoint: options.insertionPoint\n }),\n nonce: options.nonce,\n inserted: inserted,\n registered: {},\n insert: _insert\n };\n cache.sheet.hydrate(nodesToHydrate);\n return cache;\n};\n\nexport { createCache as default };\n","import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine} from './Utility.js'\nimport {copy, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\treturn serialize([copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]})], callback)\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\treturn serialize([\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]})\n\t\t\t\t\t\t\t\t\t], callback)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n","var isBrowser = true;\n\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n var rawClassName = '';\n classNames.split(' ').forEach(function (className) {\n if (registered[className] !== undefined) {\n registeredStyles.push(registered[className] + \";\");\n } else {\n rawClassName += className + \" \";\n }\n });\n return rawClassName;\n}\nvar registerStyles = function registerStyles(cache, serialized, isStringTag) {\n var className = cache.key + \"-\" + serialized.name;\n\n if ( // we only need to add the styles to the registered cache if the\n // class name could be used further down\n // the tree but if it's a string tag, we know it won't\n // so we don't have to add it to registered cache.\n // this improves memory usage since we can avoid storing the whole style string\n (isStringTag === false || // we need to always store it if we're in compat mode and\n // in node since emotion-server relies on whether a style is in\n // the registered cache to know whether a style is global or not\n // also, note that this check will be dead code eliminated in the browser\n isBrowser === false ) && cache.registered[className] === undefined) {\n cache.registered[className] = serialized.styles;\n }\n};\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n registerStyles(cache, serialized, isStringTag);\n var className = cache.key + \"-\" + serialized.name;\n\n if (cache.inserted[serialized.name] === undefined) {\n var current = serialized;\n\n do {\n cache.insert(serialized === current ? \".\" + className : '', current, cache.sheet, true);\n\n current = current.next;\n } while (current !== undefined);\n }\n};\n\nexport { getRegisteredStyles, insertStyles, registerStyles };\n","var unitlessKeys = {\n animationIterationCount: 1,\n aspectRatio: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n scale: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport { unitlessKeys as default };\n","function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport { memoize as default };\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar isDevelopment = false;\n\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = /* #__PURE__ */memoize(function (styleName) {\n return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n if (typeof value === 'string') {\n return value.replace(animationRegex, function (match, p1, p2) {\n cursor = {\n name: p1,\n styles: p2,\n next: cursor\n };\n return p1;\n });\n }\n }\n }\n\n if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n return value + 'px';\n }\n\n return value;\n};\n\nvar noComponentSelectorMessage = 'Component selectors can only be used in conjunction with ' + '@emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware ' + 'compiler transform.';\n\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n if (interpolation == null) {\n return '';\n }\n\n var componentSelector = interpolation;\n\n if (componentSelector.__emotion_styles !== undefined) {\n\n return componentSelector;\n }\n\n switch (typeof interpolation) {\n case 'boolean':\n {\n return '';\n }\n\n case 'object':\n {\n var keyframes = interpolation;\n\n if (keyframes.anim === 1) {\n cursor = {\n name: keyframes.name,\n styles: keyframes.styles,\n next: cursor\n };\n return keyframes.name;\n }\n\n var serializedStyles = interpolation;\n\n if (serializedStyles.styles !== undefined) {\n var next = serializedStyles.next;\n\n if (next !== undefined) {\n // not the most efficient thing ever but this is a pretty rare case\n // and there will be very few iterations of this generally\n while (next !== undefined) {\n cursor = {\n name: next.name,\n styles: next.styles,\n next: cursor\n };\n next = next.next;\n }\n }\n\n var styles = serializedStyles.styles + \";\";\n\n return styles;\n }\n\n return createStringFromObject(mergedProps, registered, interpolation);\n }\n\n case 'function':\n {\n if (mergedProps !== undefined) {\n var previousCursor = cursor;\n var result = interpolation(mergedProps);\n cursor = previousCursor;\n return handleInterpolation(mergedProps, registered, result);\n }\n\n break;\n }\n } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n var asString = interpolation;\n\n if (registered == null) {\n return asString;\n }\n\n var cached = registered[asString];\n return cached !== undefined ? cached : asString;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n var string = '';\n\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n }\n } else {\n for (var key in obj) {\n var value = obj[key];\n\n if (typeof value !== 'object') {\n var asString = value;\n\n if (registered != null && registered[asString] !== undefined) {\n string += key + \"{\" + registered[asString] + \"}\";\n } else if (isProcessableValue(asString)) {\n string += processStyleName(key) + \":\" + processStyleValue(key, asString) + \";\";\n }\n } else {\n if (key === 'NO_COMPONENT_SELECTOR' && isDevelopment) {\n throw new Error(noComponentSelectorMessage);\n }\n\n if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n for (var _i = 0; _i < value.length; _i++) {\n if (isProcessableValue(value[_i])) {\n string += processStyleName(key) + \":\" + processStyleValue(key, value[_i]) + \";\";\n }\n }\n } else {\n var interpolated = handleInterpolation(mergedProps, registered, value);\n\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n string += processStyleName(key) + \":\" + interpolated + \";\";\n break;\n }\n\n default:\n {\n\n string += key + \"{\" + interpolated + \"}\";\n }\n }\n }\n }\n }\n }\n\n return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*(;|$)/g;\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\nfunction serializeStyles(args, registered, mergedProps) {\n if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n return args[0];\n }\n\n var stringMode = true;\n var styles = '';\n cursor = undefined;\n var strings = args[0];\n\n if (strings == null || strings.raw === undefined) {\n stringMode = false;\n styles += handleInterpolation(mergedProps, registered, strings);\n } else {\n var asTemplateStringsArr = strings;\n\n styles += asTemplateStringsArr[0];\n } // we start at 1 since we've already handled the first arg\n\n\n for (var i = 1; i < args.length; i++) {\n styles += handleInterpolation(mergedProps, registered, args[i]);\n\n if (stringMode) {\n var templateStringsArr = strings;\n\n styles += templateStringsArr[i];\n }\n }\n\n\n labelPattern.lastIndex = 0;\n var identifierName = '';\n var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n while ((match = labelPattern.exec(styles)) !== null) {\n identifierName += '-' + match[1];\n }\n\n var name = hashString(styles) + identifierName;\n\n return {\n name: name,\n styles: styles,\n next: cursor\n };\n}\n\nexport { serializeStyles };\n","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n // 'm' and 'r' are mixing constants generated offline.\n // They're not really 'magic', they just happen to work well.\n // const m = 0x5bd1e995;\n // const r = 24;\n // Initialize the hash\n var h = 0; // Mix 4 bytes at a time into the hash\n\n var k,\n i = 0,\n len = str.length;\n\n for (; len >= 4; ++i, len -= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n k ^=\n /* k >>> r: */\n k >>> 24;\n h =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Handle the last few bytes of the input array\n\n\n switch (len) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Do a few final mixes of the hash to ensure the last few\n // bytes are well-incorporated.\n\n\n h ^= h >>> 13;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport { murmur2 as default };\n","import * as React from 'react';\n\nvar syncFallback = function syncFallback(create) {\n return create();\n};\n\nvar useInsertionEffect = React['useInsertion' + 'Effect'] ? React['useInsertion' + 'Effect'] : false;\nvar useInsertionEffectAlwaysWithSyncFallback = useInsertionEffect || syncFallback;\nvar useInsertionEffectWithLayoutFallback = useInsertionEffect || React.useLayoutEffect;\n\nexport { useInsertionEffectAlwaysWithSyncFallback, useInsertionEffectWithLayoutFallback };\n","import * as React from 'react';\nimport { useContext, forwardRef } from 'react';\nimport createCache from '@emotion/cache';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport weakMemoize from '@emotion/weak-memoize';\nimport hoistNonReactStatics from '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\nvar isDevelopment = false;\n\n/* import { type EmotionCache } from '@emotion/utils' */\nvar EmotionCacheContext\n/*: React.Context */\n= /* #__PURE__ */React.createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? /* #__PURE__ */createCache({\n key: 'css'\n}) : null);\n\nvar CacheProvider = EmotionCacheContext.Provider;\nvar __unsafe_useEmotionCache = function useEmotionCache()\n/*: EmotionCache | null*/\n{\n return useContext(EmotionCacheContext);\n};\n\nvar withEmotionCache = function withEmotionCache\n/* > */\n(func\n/*: (props: Props, cache: EmotionCache, ref: Ref) => React.Node */\n)\n/*: React.AbstractComponent */\n{\n return /*#__PURE__*/forwardRef(function (props\n /*: Props */\n , ref\n /*: Ref */\n ) {\n // the cache will never be null in the browser\n var cache = useContext(EmotionCacheContext);\n return func(props, cache, ref);\n });\n};\n\nvar ThemeContext = /* #__PURE__ */React.createContext({});\n\nvar useTheme = function useTheme() {\n return React.useContext(ThemeContext);\n};\n\nvar getTheme = function getTheme(outerTheme\n/*: Object */\n, theme\n/*: Object | (Object => Object) */\n) {\n if (typeof theme === 'function') {\n var mergedTheme = theme(outerTheme);\n\n return mergedTheme;\n }\n\n return _extends({}, outerTheme, theme);\n};\n\nvar createCacheWithTheme = /* #__PURE__ */weakMemoize(function (outerTheme) {\n return weakMemoize(function (theme) {\n return getTheme(outerTheme, theme);\n });\n});\n/*\ntype ThemeProviderProps = {\n theme: Object | (Object => Object),\n children: React.Node\n}\n*/\n\nvar ThemeProvider = function ThemeProvider(props\n/*: ThemeProviderProps */\n) {\n var theme = React.useContext(ThemeContext);\n\n if (props.theme !== theme) {\n theme = createCacheWithTheme(theme)(props.theme);\n }\n\n return /*#__PURE__*/React.createElement(ThemeContext.Provider, {\n value: theme\n }, props.children);\n};\nfunction withTheme\n/* */\n(Component\n/*: React.AbstractComponent */\n)\n/*: React.AbstractComponent<$Diff> */\n{\n var componentName = Component.displayName || Component.name || 'Component';\n\n var render = function render(props, ref) {\n var theme = React.useContext(ThemeContext);\n return /*#__PURE__*/React.createElement(Component, _extends({\n theme: theme,\n ref: ref\n }, props));\n };\n\n var WithTheme = /*#__PURE__*/React.forwardRef(render);\n WithTheme.displayName = \"WithTheme(\" + componentName + \")\";\n return hoistNonReactStatics(WithTheme, Component);\n}\n\nvar hasOwn = {}.hasOwnProperty;\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar createEmotionProps = function createEmotionProps(type\n/*: React.ElementType */\n, props\n/*: Object */\n) {\n\n var newProps\n /*: any */\n = {};\n\n for (var key in props) {\n if (hasOwn.call(props, key)) {\n newProps[key] = props[key];\n }\n }\n\n newProps[typePropName] = type; // Runtime labeling is an opt-in feature because:\n\n return newProps;\n};\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serialized = _ref.serialized,\n isStringTag = _ref.isStringTag;\n registerStyles(cache, serialized, isStringTag);\n useInsertionEffectAlwaysWithSyncFallback(function () {\n return insertStyles(cache, serialized, isStringTag);\n });\n\n return null;\n};\n\nvar Emotion = /* #__PURE__ */withEmotionCache(\n/* */\nfunction (props, cache, ref) {\n var cssProp = props.css; // so that using `css` from `emotion` and passing the result to the css prop works\n // not passing the registered cache to serializeStyles because it would\n // make certain babel optimisations not possible\n\n if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n cssProp = cache.registered[cssProp];\n }\n\n var WrappedComponent = props[typePropName];\n var registeredStyles = [cssProp];\n var className = '';\n\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n\n var serialized = serializeStyles(registeredStyles, undefined, React.useContext(ThemeContext));\n\n className += cache.key + \"-\" + serialized.name;\n var newProps = {};\n\n for (var key in props) {\n if (hasOwn.call(props, key) && key !== 'css' && key !== typePropName && (!isDevelopment )) {\n newProps[key] = props[key];\n }\n }\n\n newProps.className = className;\n\n if (ref) {\n newProps.ref = ref;\n }\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n cache: cache,\n serialized: serialized,\n isStringTag: typeof WrappedComponent === 'string'\n }), /*#__PURE__*/React.createElement(WrappedComponent, newProps));\n});\n\nvar Emotion$1 = Emotion;\n\nexport { CacheProvider as C, Emotion$1 as E, ThemeContext as T, __unsafe_useEmotionCache as _, ThemeProvider as a, withTheme as b, createEmotionProps as c, hasOwn as h, isDevelopment as i, useTheme as u, withEmotionCache as w };\n","import { h as hasOwn, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext, i as isDevelopment } from './emotion-element-5486c51c.browser.esm.js';\nexport { C as CacheProvider, T as ThemeContext, a as ThemeProvider, _ as __unsafe_useEmotionCache, u as useTheme, w as withEmotionCache, b as withTheme } from './emotion-element-5486c51c.browser.esm.js';\nimport * as React from 'react';\nimport { insertStyles, registerStyles, getRegisteredStyles } from '@emotion/utils';\nimport { useInsertionEffectWithLayoutFallback, useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\nimport { serializeStyles } from '@emotion/serialize';\nimport '@emotion/cache';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/weak-memoize';\nimport '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport 'hoist-non-react-statics';\n\nvar jsx\n/*: typeof React.createElement */\n= function jsx\n/*: typeof React.createElement */\n(type\n/*: React.ElementType */\n, props\n/*: Object */\n) {\n var args = arguments;\n\n if (props == null || !hasOwn.call(props, 'css')) {\n return React.createElement.apply(undefined, args);\n }\n\n var argsLength = args.length;\n var createElementArgArray = new Array(argsLength);\n createElementArgArray[0] = Emotion;\n createElementArgArray[1] = createEmotionProps(type, props);\n\n for (var i = 2; i < argsLength; i++) {\n createElementArgArray[i] = args[i];\n }\n\n return React.createElement.apply(null, createElementArgArray);\n};\n\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\n\nvar Global\n/*: React.AbstractComponent<\nGlobalProps\n> */\n= /* #__PURE__ */withEmotionCache(function (props\n/*: GlobalProps */\n, cache) {\n\n var styles = props.styles;\n var serialized = serializeStyles([styles], undefined, React.useContext(ThemeContext));\n // but it is based on a constant that will never change at runtime\n // it's effectively like having two implementations and switching them out\n // so it's not actually breaking anything\n\n\n var sheetRef = React.useRef();\n useInsertionEffectWithLayoutFallback(function () {\n var key = cache.key + \"-global\"; // use case of https://github.com/emotion-js/emotion/issues/2675\n\n var sheet = new cache.sheet.constructor({\n key: key,\n nonce: cache.sheet.nonce,\n container: cache.sheet.container,\n speedy: cache.sheet.isSpeedy\n });\n var rehydrating = false;\n var node\n /*: HTMLStyleElement | null*/\n = document.querySelector(\"style[data-emotion=\\\"\" + key + \" \" + serialized.name + \"\\\"]\");\n\n if (cache.sheet.tags.length) {\n sheet.before = cache.sheet.tags[0];\n }\n\n if (node !== null) {\n rehydrating = true; // clear the hash so this node won't be recognizable as rehydratable by other s\n\n node.setAttribute('data-emotion', key);\n sheet.hydrate([node]);\n }\n\n sheetRef.current = [sheet, rehydrating];\n return function () {\n sheet.flush();\n };\n }, [cache]);\n useInsertionEffectWithLayoutFallback(function () {\n var sheetRefCurrent = sheetRef.current;\n var sheet = sheetRefCurrent[0],\n rehydrating = sheetRefCurrent[1];\n\n if (rehydrating) {\n sheetRefCurrent[1] = false;\n return;\n }\n\n if (serialized.next !== undefined) {\n // insert keyframes\n insertStyles(cache, serialized.next, true);\n }\n\n if (sheet.tags.length) {\n // if this doesn't exist then it will be null so the style element will be appended\n var element = sheet.tags[sheet.tags.length - 1].nextElementSibling;\n sheet.before = element;\n sheet.flush();\n }\n\n cache.insert(\"\", serialized, sheet, false);\n }, [cache, serialized.name]);\n return null;\n});\n\n/* import type { Interpolation, SerializedStyles } from '@emotion/utils' */\n\nfunction css()\n/*: SerializedStyles */\n{\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return serializeStyles(args);\n}\n\n/*\ntype Keyframes = {|\n name: string,\n styles: string,\n anim: 1,\n toString: () => string\n|} & string\n*/\n\nvar keyframes = function\n /*: Keyframes */\nkeyframes() {\n var insertable = css.apply(void 0, arguments);\n var name = \"animation-\" + insertable.name;\n return {\n name: name,\n styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n anim: 1,\n toString: function toString() {\n return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n }\n };\n};\n\n/*\ntype ClassNameArg =\n | string\n | boolean\n | { [key: string]: boolean }\n | Array\n | null\n | void\n*/\n\nvar classnames = function\n /*: string */\nclassnames(args\n/*: Array */\n) {\n var len = args.length;\n var i = 0;\n var cls = '';\n\n for (; i < len; i++) {\n var arg = args[i];\n if (arg == null) continue;\n var toAdd = void 0;\n\n switch (typeof arg) {\n case 'boolean':\n break;\n\n case 'object':\n {\n if (Array.isArray(arg)) {\n toAdd = classnames(arg);\n } else {\n\n toAdd = '';\n\n for (var k in arg) {\n if (arg[k] && k) {\n toAdd && (toAdd += ' ');\n toAdd += k;\n }\n }\n }\n\n break;\n }\n\n default:\n {\n toAdd = arg;\n }\n }\n\n if (toAdd) {\n cls && (cls += ' ');\n cls += toAdd;\n }\n }\n\n return cls;\n};\n\nfunction merge(registered\n/*: Object */\n, css\n/*: (...args: Array) => string */\n, className\n/*: string */\n) {\n var registeredStyles = [];\n var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n if (registeredStyles.length < 2) {\n return className;\n }\n\n return rawClassName + css(registeredStyles);\n}\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serializedArr = _ref.serializedArr;\n useInsertionEffectAlwaysWithSyncFallback(function () {\n\n for (var i = 0; i < serializedArr.length; i++) {\n insertStyles(cache, serializedArr[i], false);\n }\n });\n\n return null;\n};\n/*\ntype Props = {\n children: ({\n css: (...args: any) => string,\n cx: (...args: Array) => string,\n theme: Object\n }) => React.Node\n} */\n\n\nvar ClassNames\n/*: React.AbstractComponent*/\n= /* #__PURE__ */withEmotionCache(function (props, cache) {\n var hasRendered = false;\n var serializedArr = [];\n\n var css = function css() {\n if (hasRendered && isDevelopment) {\n throw new Error('css can only be used during render');\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var serialized = serializeStyles(args, cache.registered);\n serializedArr.push(serialized); // registration has to happen here as the result of this might get consumed by `cx`\n\n registerStyles(cache, serialized, false);\n return cache.key + \"-\" + serialized.name;\n };\n\n var cx = function cx() {\n if (hasRendered && isDevelopment) {\n throw new Error('cx can only be used during render');\n }\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return merge(cache.registered, css, classnames(args));\n };\n\n var content = {\n css: css,\n cx: cx,\n theme: React.useContext(ThemeContext)\n };\n var ele = props.children(content);\n hasRendered = true;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n cache: cache,\n serializedArr: serializedArr\n }), ele);\n});\n\nexport { ClassNames, Global, jsx as createElement, css, jsx, keyframes };\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.AOS=t():e.AOS=t()}(this,function(){return function(e){function t(o){if(n[o])return n[o].exports;var i=n[o]={exports:{},id:o,loaded:!1};return e[o].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p=\"dist/\",t(0)}([function(e,t,n){\"use strict\";function o(e){return e&&e.__esModule?e:{default:e}}var i=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]&&arguments[0];if(e&&(k=!0),k)return w=(0,y.default)(w,x),(0,b.default)(w,x.once),w},O=function(){w=(0,h.default)(),j()},M=function(){w.forEach(function(e,t){e.node.removeAttribute(\"data-aos\"),e.node.removeAttribute(\"data-aos-easing\"),e.node.removeAttribute(\"data-aos-duration\"),e.node.removeAttribute(\"data-aos-delay\")})},S=function(e){return e===!0||\"mobile\"===e&&p.default.mobile()||\"phone\"===e&&p.default.phone()||\"tablet\"===e&&p.default.tablet()||\"function\"==typeof e&&e()===!0},_=function(e){x=i(x,e),w=(0,h.default)();var t=document.all&&!window.atob;return S(x.disable)||t?M():(x.disableMutationObserver||d.default.isSupported()||(console.info('\\n aos: MutationObserver is not supported on this browser,\\n code mutations observing has been disabled.\\n You may have to call \"refreshHard()\" by yourself.\\n '),x.disableMutationObserver=!0),document.querySelector(\"body\").setAttribute(\"data-aos-easing\",x.easing),document.querySelector(\"body\").setAttribute(\"data-aos-duration\",x.duration),document.querySelector(\"body\").setAttribute(\"data-aos-delay\",x.delay),\"DOMContentLoaded\"===x.startEvent&&[\"complete\",\"interactive\"].indexOf(document.readyState)>-1?j(!0):\"load\"===x.startEvent?window.addEventListener(x.startEvent,function(){j(!0)}):document.addEventListener(x.startEvent,function(){j(!0)}),window.addEventListener(\"resize\",(0,s.default)(j,x.debounceDelay,!0)),window.addEventListener(\"orientationchange\",(0,s.default)(j,x.debounceDelay,!0)),window.addEventListener(\"scroll\",(0,u.default)(function(){(0,b.default)(w,x.once)},x.throttleDelay)),x.disableMutationObserver||d.default.ready(\"[data-aos]\",O),w)};e.exports={init:_,refresh:j,refreshHard:O}},function(e,t){},,,,,function(e,t){(function(t){\"use strict\";function n(e,t,n){function o(t){var n=b,o=v;return b=v=void 0,k=t,g=e.apply(o,n)}function r(e){return k=e,h=setTimeout(f,t),M?o(e):g}function a(e){var n=e-w,o=e-k,i=t-n;return S?j(i,y-o):i}function c(e){var n=e-w,o=e-k;return void 0===w||n>=t||n<0||S&&o>=y}function f(){var e=O();return c(e)?d(e):void(h=setTimeout(f,a(e)))}function d(e){return h=void 0,_&&b?o(e):(b=v=void 0,g)}function l(){void 0!==h&&clearTimeout(h),k=0,b=w=v=h=void 0}function p(){return void 0===h?g:d(O())}function m(){var e=O(),n=c(e);if(b=arguments,v=this,w=e,n){if(void 0===h)return r(w);if(S)return h=setTimeout(f,t),o(w)}return void 0===h&&(h=setTimeout(f,t)),g}var b,v,y,g,h,w,k=0,M=!1,S=!1,_=!0;if(\"function\"!=typeof e)throw new TypeError(s);return t=u(t)||0,i(n)&&(M=!!n.leading,S=\"maxWait\"in n,y=S?x(u(n.maxWait)||0,t):y,_=\"trailing\"in n?!!n.trailing:_),m.cancel=l,m.flush=p,m}function o(e,t,o){var r=!0,a=!0;if(\"function\"!=typeof e)throw new TypeError(s);return i(o)&&(r=\"leading\"in o?!!o.leading:r,a=\"trailing\"in o?!!o.trailing:a),n(e,t,{leading:r,maxWait:t,trailing:a})}function i(e){var t=\"undefined\"==typeof e?\"undefined\":c(e);return!!e&&(\"object\"==t||\"function\"==t)}function r(e){return!!e&&\"object\"==(\"undefined\"==typeof e?\"undefined\":c(e))}function a(e){return\"symbol\"==(\"undefined\"==typeof e?\"undefined\":c(e))||r(e)&&k.call(e)==d}function u(e){if(\"number\"==typeof e)return e;if(a(e))return f;if(i(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=i(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(l,\"\");var n=m.test(e);return n||b.test(e)?v(e.slice(2),n?2:8):p.test(e)?f:+e}var c=\"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},s=\"Expected a function\",f=NaN,d=\"[object Symbol]\",l=/^\\s+|\\s+$/g,p=/^[-+]0x[0-9a-f]+$/i,m=/^0b[01]+$/i,b=/^0o[0-7]+$/i,v=parseInt,y=\"object\"==(\"undefined\"==typeof t?\"undefined\":c(t))&&t&&t.Object===Object&&t,g=\"object\"==(\"undefined\"==typeof self?\"undefined\":c(self))&&self&&self.Object===Object&&self,h=y||g||Function(\"return this\")(),w=Object.prototype,k=w.toString,x=Math.max,j=Math.min,O=function(){return h.Date.now()};e.exports=o}).call(t,function(){return this}())},function(e,t){(function(t){\"use strict\";function n(e,t,n){function i(t){var n=b,o=v;return b=v=void 0,O=t,g=e.apply(o,n)}function r(e){return O=e,h=setTimeout(f,t),M?i(e):g}function u(e){var n=e-w,o=e-O,i=t-n;return S?x(i,y-o):i}function s(e){var n=e-w,o=e-O;return void 0===w||n>=t||n<0||S&&o>=y}function f(){var e=j();return s(e)?d(e):void(h=setTimeout(f,u(e)))}function d(e){return h=void 0,_&&b?i(e):(b=v=void 0,g)}function l(){void 0!==h&&clearTimeout(h),O=0,b=w=v=h=void 0}function p(){return void 0===h?g:d(j())}function m(){var e=j(),n=s(e);if(b=arguments,v=this,w=e,n){if(void 0===h)return r(w);if(S)return h=setTimeout(f,t),i(w)}return void 0===h&&(h=setTimeout(f,t)),g}var b,v,y,g,h,w,O=0,M=!1,S=!1,_=!0;if(\"function\"!=typeof e)throw new TypeError(c);return t=a(t)||0,o(n)&&(M=!!n.leading,S=\"maxWait\"in n,y=S?k(a(n.maxWait)||0,t):y,_=\"trailing\"in n?!!n.trailing:_),m.cancel=l,m.flush=p,m}function o(e){var t=\"undefined\"==typeof e?\"undefined\":u(e);return!!e&&(\"object\"==t||\"function\"==t)}function i(e){return!!e&&\"object\"==(\"undefined\"==typeof e?\"undefined\":u(e))}function r(e){return\"symbol\"==(\"undefined\"==typeof e?\"undefined\":u(e))||i(e)&&w.call(e)==f}function a(e){if(\"number\"==typeof e)return e;if(r(e))return s;if(o(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=o(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(d,\"\");var n=p.test(e);return n||m.test(e)?b(e.slice(2),n?2:8):l.test(e)?s:+e}var u=\"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},c=\"Expected a function\",s=NaN,f=\"[object Symbol]\",d=/^\\s+|\\s+$/g,l=/^[-+]0x[0-9a-f]+$/i,p=/^0b[01]+$/i,m=/^0o[0-7]+$/i,b=parseInt,v=\"object\"==(\"undefined\"==typeof t?\"undefined\":u(t))&&t&&t.Object===Object&&t,y=\"object\"==(\"undefined\"==typeof self?\"undefined\":u(self))&&self&&self.Object===Object&&self,g=v||y||Function(\"return this\")(),h=Object.prototype,w=h.toString,k=Math.max,x=Math.min,j=function(){return g.Date.now()};e.exports=n}).call(t,function(){return this}())},function(e,t){\"use strict\";function n(e){var t=void 0,o=void 0,i=void 0;for(t=0;te.position?e.node.classList.add(\"aos-animate\"):\"undefined\"!=typeof o&&(\"false\"===o||!n&&\"true\"!==o)&&e.node.classList.remove(\"aos-animate\")},o=function(e,t){var o=window.pageYOffset,i=window.innerHeight;e.forEach(function(e,r){n(e,i+o,t)})};t.default=o},function(e,t,n){\"use strict\";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(12),r=o(i),a=function(e,t){return e.forEach(function(e,n){e.node.classList.add(\"aos-init\"),e.position=(0,r.default)(e.node,t.offset)}),e};t.default=a},function(e,t,n){\"use strict\";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(13),r=o(i),a=function(e,t){var n=0,o=0,i=window.innerHeight,a={offset:e.getAttribute(\"data-aos-offset\"),anchor:e.getAttribute(\"data-aos-anchor\"),anchorPlacement:e.getAttribute(\"data-aos-anchor-placement\")};switch(a.offset&&!isNaN(a.offset)&&(o=parseInt(a.offset)),a.anchor&&document.querySelectorAll(a.anchor)&&(e=document.querySelectorAll(a.anchor)[0]),n=(0,r.default)(e).top,a.anchorPlacement){case\"top-bottom\":break;case\"center-bottom\":n+=e.offsetHeight/2;break;case\"bottom-bottom\":n+=e.offsetHeight;break;case\"top-center\":n+=i/2;break;case\"bottom-center\":n+=i/2+e.offsetHeight;break;case\"center-center\":n+=i/2+e.offsetHeight/2;break;case\"top-top\":n+=i;break;case\"bottom-top\":n+=e.offsetHeight+i;break;case\"center-top\":n+=e.offsetHeight/2+i}return a.anchorPlacement||a.offset||isNaN(t)||(o=t),n+o};t.default=a},function(e,t){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=function(e){for(var t=0,n=0;e&&!isNaN(e.offsetLeft)&&!isNaN(e.offsetTop);)t+=e.offsetLeft-(\"BODY\"!=e.tagName?e.scrollLeft:0),n+=e.offsetTop-(\"BODY\"!=e.tagName?e.scrollTop:0),e=e.offsetParent;return{top:n,left:t}};t.default=n},function(e,t){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=function(e){return e=e||document.querySelectorAll(\"[data-aos]\"),Array.prototype.map.call(e,function(e){return{node:e}})};t.default=n}])});","// https://github.com/HarryStevens/d3-regression#readme Version 1.3.10. Copyright 2022 Harry Stevens.\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (global = global || self, factory(global.d3 = {}));\n}(this, (function (exports) { 'use strict';\n\n function _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();\n }\n\n function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n }\n\n function _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n\n // Adapted from vega-statistics by Jeffrey Heer\n // License: https://github.com/vega/vega/blob/f058b099decad9db78301405dd0d2e9d8ba3d51a/LICENSE\n // Source: https://github.com/vega/vega/blob/f058b099decad9db78301405dd0d2e9d8ba3d51a/packages/vega-statistics/src/regression/points.js\n function points(data, x, y, sort) {\n data = data.filter(function (d, i) {\n var u = x(d, i),\n v = y(d, i);\n return u != null && isFinite(u) && v != null && isFinite(v);\n });\n\n if (sort) {\n data.sort(function (a, b) {\n return x(a) - x(b);\n });\n }\n\n var n = data.length,\n X = new Float64Array(n),\n Y = new Float64Array(n); // extract values, calculate means\n\n var ux = 0,\n uy = 0,\n xv,\n yv,\n d;\n\n for (var i = 0; i < n;) {\n d = data[i];\n X[i] = xv = +x(d, i, data);\n Y[i] = yv = +y(d, i, data);\n ++i;\n ux += (xv - ux) / i;\n uy += (yv - uy) / i;\n } // mean center the data\n\n\n for (var _i = 0; _i < n; ++_i) {\n X[_i] -= ux;\n Y[_i] -= uy;\n }\n\n return [X, Y, ux, uy];\n }\n function visitPoints(data, x, y, cb) {\n var iterations = 0;\n\n for (var i = 0, n = data.length; i < n; i++) {\n var d = data[i],\n dx = +x(d, i, data),\n dy = +y(d, i, data);\n\n if (dx != null && isFinite(dx) && dy != null && isFinite(dy)) {\n cb(dx, dy, iterations++);\n }\n }\n }\n\n // return the coefficient of determination, or R squared.\n\n function determination(data, x, y, uY, predict) {\n var SSE = 0,\n SST = 0;\n visitPoints(data, x, y, function (dx, dy) {\n var sse = dy - predict(dx),\n sst = dy - uY;\n SSE += sse * sse;\n SST += sst * sst;\n });\n return 1 - SSE / SST;\n }\n\n // Returns the angle of a line in degrees.\n function angle(line) {\n return Math.atan2(line[1][1] - line[0][1], line[1][0] - line[0][0]) * 180 / Math.PI;\n } // Returns the midpoint of a line.\n\n function midpoint(line) {\n return [(line[0][0] + line[1][0]) / 2, (line[0][1] + line[1][1]) / 2];\n }\n\n // returns a smooth line.\n\n function interpose(xmin, xmax, predict) {\n var l = Math.log(xmax - xmin) * Math.LOG10E + 1 | 0;\n var precision = 1 * Math.pow(10, -l / 2 - 1),\n maxIter = 1e4;\n var points = [px(xmin), px(xmax)],\n iter = 0;\n\n while (find(points) && iter < maxIter) {\n }\n\n return points;\n\n function px(x) {\n return [x, predict(x)];\n }\n\n function find(points) {\n iter++;\n var n = points.length;\n var found = false;\n\n for (var i = 0; i < n - 1; i++) {\n var p0 = points[i],\n p1 = points[i + 1],\n m = midpoint([p0, p1]),\n mp = px(m[0]),\n a0 = angle([p0, m]),\n a1 = angle([p0, mp]),\n a = Math.abs(a0 - a1);\n\n if (a > precision) {\n points.splice(i + 1, 0, mp);\n found = true;\n }\n }\n\n return found;\n }\n }\n\n // Ordinary Least Squares from vega-statistics by Jeffrey Heer\n // License: https://github.com/vega/vega/blob/f058b099decad9db78301405dd0d2e9d8ba3d51a/LICENSE\n // Source: https://github.com/vega/vega/blob/f058b099decad9db78301405dd0d2e9d8ba3d51a/packages/vega-statistics/src/regression/ols.js\n function ols(uX, uY, uXY, uX2) {\n var delta = uX2 - uX * uX,\n slope = Math.abs(delta) < 1e-24 ? 0 : (uXY - uX * uY) / delta,\n intercept = uY - slope * uX;\n return [intercept, slope];\n }\n\n function exponential () {\n var x = function x(d) {\n return d[0];\n },\n y = function y(d) {\n return d[1];\n },\n domain;\n\n function exponential(data) {\n var n = 0,\n Y = 0,\n YL = 0,\n XY = 0,\n XYL = 0,\n X2Y = 0,\n xmin = domain ? +domain[0] : Infinity,\n xmax = domain ? +domain[1] : -Infinity;\n visitPoints(data, x, y, function (dx, dy) {\n var ly = Math.log(dy),\n xy = dx * dy;\n ++n;\n Y += (dy - Y) / n;\n XY += (xy - XY) / n;\n X2Y += (dx * xy - X2Y) / n;\n YL += (dy * ly - YL) / n;\n XYL += (xy * ly - XYL) / n;\n\n if (!domain) {\n if (dx < xmin) xmin = dx;\n if (dx > xmax) xmax = dx;\n }\n });\n\n var _ols = ols(XY / Y, YL / Y, XYL / Y, X2Y / Y),\n _ols2 = _slicedToArray(_ols, 2),\n a = _ols2[0],\n b = _ols2[1];\n\n a = Math.exp(a);\n\n var fn = function fn(x) {\n return a * Math.exp(b * x);\n },\n out = interpose(xmin, xmax, fn);\n\n out.a = a;\n out.b = b;\n out.predict = fn;\n out.rSquared = determination(data, x, y, Y, fn);\n return out;\n }\n\n exponential.domain = function (arr) {\n return arguments.length ? (domain = arr, exponential) : domain;\n };\n\n exponential.x = function (fn) {\n return arguments.length ? (x = fn, exponential) : x;\n };\n\n exponential.y = function (fn) {\n return arguments.length ? (y = fn, exponential) : y;\n };\n\n return exponential;\n }\n\n function linear () {\n var x = function x(d) {\n return d[0];\n },\n y = function y(d) {\n return d[1];\n },\n domain;\n\n function linear(data) {\n var n = 0,\n X = 0,\n // sum of x\n Y = 0,\n // sum of y\n XY = 0,\n // sum of x * y\n X2 = 0,\n // sum of x * x\n xmin = domain ? +domain[0] : Infinity,\n xmax = domain ? +domain[1] : -Infinity;\n visitPoints(data, x, y, function (dx, dy) {\n ++n;\n X += (dx - X) / n;\n Y += (dy - Y) / n;\n XY += (dx * dy - XY) / n;\n X2 += (dx * dx - X2) / n;\n\n if (!domain) {\n if (dx < xmin) xmin = dx;\n if (dx > xmax) xmax = dx;\n }\n });\n\n var _ols = ols(X, Y, XY, X2),\n _ols2 = _slicedToArray(_ols, 2),\n intercept = _ols2[0],\n slope = _ols2[1],\n fn = function fn(x) {\n return slope * x + intercept;\n },\n out = [[xmin, fn(xmin)], [xmax, fn(xmax)]];\n\n out.a = slope;\n out.b = intercept;\n out.predict = fn;\n out.rSquared = determination(data, x, y, Y, fn);\n return out;\n }\n\n linear.domain = function (arr) {\n return arguments.length ? (domain = arr, linear) : domain;\n };\n\n linear.x = function (fn) {\n return arguments.length ? (x = fn, linear) : x;\n };\n\n linear.y = function (fn) {\n return arguments.length ? (y = fn, linear) : y;\n };\n\n return linear;\n }\n\n // Returns the medium value of an array of numbers.\n function median(arr) {\n arr.sort(function (a, b) {\n return a - b;\n });\n var i = arr.length / 2;\n return i % 1 === 0 ? (arr[i - 1] + arr[i]) / 2 : arr[Math.floor(i)];\n }\n\n var maxiters = 2,\n epsilon = 1e-12;\n function loess () {\n var x = function x(d) {\n return d[0];\n },\n y = function y(d) {\n return d[1];\n },\n bandwidth = .3;\n\n function loess(data) {\n var _points = points(data, x, y, true),\n _points2 = _slicedToArray(_points, 4),\n xv = _points2[0],\n yv = _points2[1],\n ux = _points2[2],\n uy = _points2[3],\n n = xv.length,\n bw = Math.max(2, ~~(bandwidth * n)),\n yhat = new Float64Array(n),\n residuals = new Float64Array(n),\n robustWeights = new Float64Array(n).fill(1);\n\n for (var iter = -1; ++iter <= maxiters;) {\n var interval = [0, bw - 1];\n\n for (var i = 0; i < n; ++i) {\n var dx = xv[i],\n i0 = interval[0],\n i1 = interval[1],\n edge = dx - xv[i0] > xv[i1] - dx ? i0 : i1;\n var W = 0,\n X = 0,\n Y = 0,\n XY = 0,\n X2 = 0,\n denom = 1 / Math.abs(xv[edge] - dx || 1); // Avoid singularity\n\n for (var k = i0; k <= i1; ++k) {\n var xk = xv[k],\n yk = yv[k],\n w = tricube(Math.abs(dx - xk) * denom) * robustWeights[k],\n xkw = xk * w;\n W += w;\n X += xkw;\n Y += yk * w;\n XY += yk * xkw;\n X2 += xk * xkw;\n } // Linear regression fit\n\n\n var _ols = ols(X / W, Y / W, XY / W, X2 / W),\n _ols2 = _slicedToArray(_ols, 2),\n a = _ols2[0],\n b = _ols2[1];\n\n yhat[i] = a + b * dx;\n residuals[i] = Math.abs(yv[i] - yhat[i]);\n updateInterval(xv, i + 1, interval);\n }\n\n if (iter === maxiters) {\n break;\n }\n\n var medianResidual = median(residuals);\n if (Math.abs(medianResidual) < epsilon) break;\n\n for (var _i = 0, arg, _w; _i < n; ++_i) {\n arg = residuals[_i] / (6 * medianResidual); // Default to epsilon (rather than zero) for large deviations\n // Keeping weights tiny but non-zero prevents singularites\n\n robustWeights[_i] = arg >= 1 ? epsilon : (_w = 1 - arg * arg) * _w;\n }\n }\n\n return output(xv, yhat, ux, uy);\n }\n\n loess.bandwidth = function (bw) {\n return arguments.length ? (bandwidth = bw, loess) : bandwidth;\n };\n\n loess.x = function (fn) {\n return arguments.length ? (x = fn, loess) : x;\n };\n\n loess.y = function (fn) {\n return arguments.length ? (y = fn, loess) : y;\n };\n\n return loess;\n } // Weighting kernel for local regression\n\n function tricube(x) {\n return (x = 1 - x * x * x) * x * x;\n } // Advance sliding window interval of nearest neighbors\n\n\n function updateInterval(xv, i, interval) {\n var val = xv[i],\n left = interval[0],\n right = interval[1] + 1;\n if (right >= xv.length) return; // Step right if distance to new right edge is <= distance to old left edge\n // Step when distance is equal to ensure movement over duplicate x values\n\n while (i > left && xv[right] - val <= val - xv[left]) {\n interval[0] = ++left;\n interval[1] = right;\n ++right;\n }\n } // Generate smoothed output points\n // Average points with repeated x values\n\n\n function output(xv, yhat, ux, uy) {\n var n = xv.length,\n out = [];\n var i = 0,\n cnt = 0,\n prev = [],\n v;\n\n for (; i < n; ++i) {\n v = xv[i] + ux;\n\n if (prev[0] === v) {\n // Average output values via online update\n prev[1] += (yhat[i] - prev[1]) / ++cnt;\n } else {\n // Add new output point\n cnt = 0;\n prev[1] += uy;\n prev = [v, yhat[i]];\n out.push(prev);\n }\n }\n\n prev[1] += uy;\n return out;\n }\n\n function logarithmic () {\n var x = function x(d) {\n return d[0];\n },\n y = function y(d) {\n return d[1];\n },\n base = Math.E,\n domain;\n\n function logarithmic(data) {\n var n = 0,\n X = 0,\n Y = 0,\n XY = 0,\n X2 = 0,\n xmin = domain ? +domain[0] : Infinity,\n xmax = domain ? +domain[1] : -Infinity,\n lb = Math.log(base);\n visitPoints(data, x, y, function (dx, dy) {\n var lx = Math.log(dx) / lb;\n ++n;\n X += (lx - X) / n;\n Y += (dy - Y) / n;\n XY += (lx * dy - XY) / n;\n X2 += (lx * lx - X2) / n;\n\n if (!domain) {\n if (dx < xmin) xmin = dx;\n if (dx > xmax) xmax = dx;\n }\n });\n\n var _ols = ols(X, Y, XY, X2),\n _ols2 = _slicedToArray(_ols, 2),\n intercept = _ols2[0],\n slope = _ols2[1],\n fn = function fn(x) {\n return slope * Math.log(x) / lb + intercept;\n },\n out = interpose(xmin, xmax, fn);\n\n out.a = slope;\n out.b = intercept;\n out.predict = fn;\n out.rSquared = determination(data, x, y, Y, fn);\n return out;\n }\n\n logarithmic.domain = function (arr) {\n return arguments.length ? (domain = arr, logarithmic) : domain;\n };\n\n logarithmic.x = function (fn) {\n return arguments.length ? (x = fn, logarithmic) : x;\n };\n\n logarithmic.y = function (fn) {\n return arguments.length ? (y = fn, logarithmic) : y;\n };\n\n logarithmic.base = function (n) {\n return arguments.length ? (base = n, logarithmic) : base;\n };\n\n return logarithmic;\n }\n\n function quad () {\n var x = function x(d) {\n return d[0];\n },\n y = function y(d) {\n return d[1];\n },\n domain;\n\n function quadratic(data) {\n var _points = points(data, x, y),\n _points2 = _slicedToArray(_points, 4),\n xv = _points2[0],\n yv = _points2[1],\n ux = _points2[2],\n uy = _points2[3],\n n = xv.length;\n\n var X2 = 0,\n X3 = 0,\n X4 = 0,\n XY = 0,\n X2Y = 0,\n i,\n dx,\n dy,\n x2;\n\n for (i = 0; i < n;) {\n dx = xv[i];\n dy = yv[i++];\n x2 = dx * dx;\n X2 += (x2 - X2) / i;\n X3 += (x2 * dx - X3) / i;\n X4 += (x2 * x2 - X4) / i;\n XY += (dx * dy - XY) / i;\n X2Y += (x2 * dy - X2Y) / i;\n }\n\n var Y = 0,\n n0 = 0,\n xmin = domain ? +domain[0] : Infinity,\n xmax = domain ? +domain[1] : -Infinity;\n visitPoints(data, x, y, function (dx, dy) {\n n0++;\n Y += (dy - Y) / n0;\n\n if (!domain) {\n if (dx < xmin) xmin = dx;\n if (dx > xmax) xmax = dx;\n }\n });\n\n var X2X2 = X4 - X2 * X2,\n d = X2 * X2X2 - X3 * X3,\n a = (X2Y * X2 - XY * X3) / d,\n b = (XY * X2X2 - X2Y * X3) / d,\n c = -a * X2,\n fn = function fn(x) {\n x = x - ux;\n return a * x * x + b * x + c + uy;\n };\n\n var out = interpose(xmin, xmax, fn);\n out.a = a;\n out.b = b - 2 * a * ux;\n out.c = c - b * ux + a * ux * ux + uy;\n out.predict = fn;\n out.rSquared = determination(data, x, y, Y, fn);\n return out;\n }\n\n quadratic.domain = function (arr) {\n return arguments.length ? (domain = arr, quadratic) : domain;\n };\n\n quadratic.x = function (fn) {\n return arguments.length ? (x = fn, quadratic) : x;\n };\n\n quadratic.y = function (fn) {\n return arguments.length ? (y = fn, quadratic) : y;\n };\n\n return quadratic;\n }\n\n // Source: https://github.com/Tom-Alexander/regression-js/blob/master/src/regression.js#L246\n // License: https://github.com/Tom-Alexander/regression-js/blob/master/LICENSE\n // ...with ideas from vega-statistics by Jeffrey Heer\n // Source: https://github.com/vega/vega/blob/f21cb8792b4e0cbe2b1a3fd44b0f5db370dbaadb/packages/vega-statistics/src/regression/poly.js\n // License: https://github.com/vega/vega/blob/f058b099decad9db78301405dd0d2e9d8ba3d51a/LICENSE\n\n function polynomial () {\n var x = function x(d) {\n return d[0];\n },\n y = function y(d) {\n return d[1];\n },\n order = 3,\n domain;\n\n function polynomial(data) {\n // Use more efficient methods for lower orders\n if (order === 1) {\n var o = linear().x(x).y(y).domain(domain)(data);\n o.coefficients = [o.b, o.a];\n delete o.a;\n delete o.b;\n return o;\n }\n\n if (order === 2) {\n var _o = quad().x(x).y(y).domain(domain)(data);\n\n _o.coefficients = [_o.c, _o.b, _o.a];\n delete _o.a;\n delete _o.b;\n delete _o.c;\n return _o;\n }\n\n var _points = points(data, x, y),\n _points2 = _slicedToArray(_points, 4),\n xv = _points2[0],\n yv = _points2[1],\n ux = _points2[2],\n uy = _points2[3],\n n = xv.length,\n lhs = [],\n rhs = [],\n k = order + 1;\n\n var Y = 0,\n n0 = 0,\n xmin = domain ? +domain[0] : Infinity,\n xmax = domain ? +domain[1] : -Infinity;\n visitPoints(data, x, y, function (dx, dy) {\n ++n0;\n Y += (dy - Y) / n0;\n\n if (!domain) {\n if (dx < xmin) xmin = dx;\n if (dx > xmax) xmax = dx;\n }\n });\n var i, j, l, v, c;\n\n for (i = 0; i < k; ++i) {\n for (l = 0, v = 0; l < n; ++l) {\n v += Math.pow(xv[l], i) * yv[l];\n }\n\n lhs.push(v);\n c = new Float64Array(k);\n\n for (j = 0; j < k; ++j) {\n for (l = 0, v = 0; l < n; ++l) {\n v += Math.pow(xv[l], i + j);\n }\n\n c[j] = v;\n }\n\n rhs.push(c);\n }\n\n rhs.push(lhs);\n\n var coef = gaussianElimination(rhs),\n fn = function fn(x) {\n x -= ux;\n var y = uy + coef[0] + coef[1] * x + coef[2] * x * x;\n\n for (i = 3; i < k; ++i) {\n y += coef[i] * Math.pow(x, i);\n }\n\n return y;\n },\n out = interpose(xmin, xmax, fn);\n\n out.coefficients = uncenter(k, coef, -ux, uy);\n out.predict = fn;\n out.rSquared = determination(data, x, y, Y, fn);\n return out;\n }\n\n polynomial.domain = function (arr) {\n return arguments.length ? (domain = arr, polynomial) : domain;\n };\n\n polynomial.x = function (fn) {\n return arguments.length ? (x = fn, polynomial) : x;\n };\n\n polynomial.y = function (fn) {\n return arguments.length ? (y = fn, polynomial) : y;\n };\n\n polynomial.order = function (n) {\n return arguments.length ? (order = n, polynomial) : order;\n };\n\n return polynomial;\n }\n\n function uncenter(k, a, x, y) {\n var z = Array(k);\n var i, j, v, c; // initialize to zero\n\n for (i = 0; i < k; ++i) {\n z[i] = 0;\n } // polynomial expansion\n\n\n for (i = k - 1; i >= 0; --i) {\n v = a[i];\n c = 1;\n z[i] += v;\n\n for (j = 1; j <= i; ++j) {\n c *= (i + 1 - j) / j; // binomial coefficent\n\n z[i - j] += v * Math.pow(x, j) * c;\n }\n } // bias term\n\n\n z[0] += y;\n return z;\n } // Given an array for a two-dimensional matrix and the polynomial order,\n // solve A * x = b using Gaussian elimination.\n\n\n function gaussianElimination(matrix) {\n var n = matrix.length - 1,\n coef = [];\n var i, j, k, r, t;\n\n for (i = 0; i < n; ++i) {\n r = i; // max row\n\n for (j = i + 1; j < n; ++j) {\n if (Math.abs(matrix[i][j]) > Math.abs(matrix[i][r])) {\n r = j;\n }\n }\n\n for (k = i; k < n + 1; ++k) {\n t = matrix[k][i];\n matrix[k][i] = matrix[k][r];\n matrix[k][r] = t;\n }\n\n for (j = i + 1; j < n; ++j) {\n for (k = n; k >= i; k--) {\n matrix[k][j] -= matrix[k][i] * matrix[i][j] / matrix[i][i];\n }\n }\n }\n\n for (j = n - 1; j >= 0; --j) {\n t = 0;\n\n for (k = j + 1; k < n; ++k) {\n t += matrix[k][j] * coef[k];\n }\n\n coef[j] = (matrix[n][j] - t) / matrix[j][j];\n }\n\n return coef;\n }\n\n function power () {\n var x = function x(d) {\n return d[0];\n },\n y = function y(d) {\n return d[1];\n },\n domain;\n\n function power(data) {\n var n = 0,\n X = 0,\n Y = 0,\n XY = 0,\n X2 = 0,\n YS = 0,\n xmin = domain ? +domain[0] : Infinity,\n xmax = domain ? +domain[1] : -Infinity;\n visitPoints(data, x, y, function (dx, dy) {\n var lx = Math.log(dx),\n ly = Math.log(dy);\n ++n;\n X += (lx - X) / n;\n Y += (ly - Y) / n;\n XY += (lx * ly - XY) / n;\n X2 += (lx * lx - X2) / n;\n YS += (dy - YS) / n;\n\n if (!domain) {\n if (dx < xmin) xmin = dx;\n if (dx > xmax) xmax = dx;\n }\n });\n\n var _ols = ols(X, Y, XY, X2),\n _ols2 = _slicedToArray(_ols, 2),\n a = _ols2[0],\n b = _ols2[1];\n\n a = Math.exp(a);\n\n var fn = function fn(x) {\n return a * Math.pow(x, b);\n },\n out = interpose(xmin, xmax, fn);\n\n out.a = a;\n out.b = b;\n out.predict = fn;\n out.rSquared = determination(data, x, y, YS, fn);\n return out;\n }\n\n power.domain = function (arr) {\n return arguments.length ? (domain = arr, power) : domain;\n };\n\n power.x = function (fn) {\n return arguments.length ? (x = fn, power) : x;\n };\n\n power.y = function (fn) {\n return arguments.length ? (y = fn, power) : y;\n };\n\n return power;\n }\n\n exports.regressionExp = exponential;\n exports.regressionLinear = linear;\n exports.regressionLoess = loess;\n exports.regressionLog = logarithmic;\n exports.regressionPoly = polynomial;\n exports.regressionPow = power;\n exports.regressionQuad = quad;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar BrowserInfo = /** @class */ (function () {\n function BrowserInfo(name, version, os) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.type = 'browser';\n }\n return BrowserInfo;\n}());\nexport { BrowserInfo };\nvar NodeInfo = /** @class */ (function () {\n function NodeInfo(version) {\n this.version = version;\n this.type = 'node';\n this.name = 'node';\n this.os = process.platform;\n }\n return NodeInfo;\n}());\nexport { NodeInfo };\nvar SearchBotDeviceInfo = /** @class */ (function () {\n function SearchBotDeviceInfo(name, version, os, bot) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.bot = bot;\n this.type = 'bot-device';\n }\n return SearchBotDeviceInfo;\n}());\nexport { SearchBotDeviceInfo };\nvar BotInfo = /** @class */ (function () {\n function BotInfo() {\n this.type = 'bot';\n this.bot = true; // NOTE: deprecated test name instead\n this.name = 'bot';\n this.version = null;\n this.os = null;\n }\n return BotInfo;\n}());\nexport { BotInfo };\nvar ReactNativeInfo = /** @class */ (function () {\n function ReactNativeInfo() {\n this.type = 'react-native';\n this.name = 'react-native';\n this.version = null;\n this.os = null;\n }\n return ReactNativeInfo;\n}());\nexport { ReactNativeInfo };\n// tslint:disable-next-line:max-line-length\nvar SEARCHBOX_UA_REGEX = /alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/;\nvar SEARCHBOT_OS_REGEX = /(nuhk|curl|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\\ Jeeves\\/Teoma|ia_archiver)/;\nvar REQUIRED_VERSION_PARTS = 3;\nvar userAgentRules = [\n ['aol', /AOLShield\\/([0-9\\._]+)/],\n ['edge', /Edge\\/([0-9\\._]+)/],\n ['edge-ios', /EdgiOS\\/([0-9\\._]+)/],\n ['yandexbrowser', /YaBrowser\\/([0-9\\._]+)/],\n ['kakaotalk', /KAKAOTALK\\s([0-9\\.]+)/],\n ['samsung', /SamsungBrowser\\/([0-9\\.]+)/],\n ['silk', /\\bSilk\\/([0-9._-]+)\\b/],\n ['miui', /MiuiBrowser\\/([0-9\\.]+)$/],\n ['beaker', /BeakerBrowser\\/([0-9\\.]+)/],\n ['edge-chromium', /EdgA?\\/([0-9\\.]+)/],\n [\n 'chromium-webview',\n /(?!Chrom.*OPR)wv\\).*Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/,\n ],\n ['chrome', /(?!Chrom.*OPR)Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/],\n ['phantomjs', /PhantomJS\\/([0-9\\.]+)(:?\\s|$)/],\n ['crios', /CriOS\\/([0-9\\.]+)(:?\\s|$)/],\n ['firefox', /Firefox\\/([0-9\\.]+)(?:\\s|$)/],\n ['fxios', /FxiOS\\/([0-9\\.]+)/],\n ['opera-mini', /Opera Mini.*Version\\/([0-9\\.]+)/],\n ['opera', /Opera\\/([0-9\\.]+)(?:\\s|$)/],\n ['opera', /OPR\\/([0-9\\.]+)(:?\\s|$)/],\n ['pie', /^Microsoft Pocket Internet Explorer\\/(\\d+\\.\\d+)$/],\n ['pie', /^Mozilla\\/\\d\\.\\d+\\s\\(compatible;\\s(?:MSP?IE|MSInternet Explorer) (\\d+\\.\\d+);.*Windows CE.*\\)$/],\n ['netfront', /^Mozilla\\/\\d\\.\\d+.*NetFront\\/(\\d.\\d)/],\n ['ie', /Trident\\/7\\.0.*rv\\:([0-9\\.]+).*\\).*Gecko$/],\n ['ie', /MSIE\\s([0-9\\.]+);.*Trident\\/[4-7].0/],\n ['ie', /MSIE\\s(7\\.0)/],\n ['bb10', /BB10;\\sTouch.*Version\\/([0-9\\.]+)/],\n ['android', /Android\\s([0-9\\.]+)/],\n ['ios', /Version\\/([0-9\\._]+).*Mobile.*Safari.*/],\n ['safari', /Version\\/([0-9\\._]+).*Safari/],\n ['facebook', /FB[AS]V\\/([0-9\\.]+)/],\n ['instagram', /Instagram\\s([0-9\\.]+)/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Mobile/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Gecko\\)$/],\n ['curl', /^curl\\/([0-9\\.]+)$/],\n ['searchbot', SEARCHBOX_UA_REGEX],\n];\nvar operatingSystemRules = [\n ['iOS', /iP(hone|od|ad)/],\n ['Android OS', /Android/],\n ['BlackBerry OS', /BlackBerry|BB10/],\n ['Windows Mobile', /IEMobile/],\n ['Amazon OS', /Kindle/],\n ['Windows 3.11', /Win16/],\n ['Windows 95', /(Windows 95)|(Win95)|(Windows_95)/],\n ['Windows 98', /(Windows 98)|(Win98)/],\n ['Windows 2000', /(Windows NT 5.0)|(Windows 2000)/],\n ['Windows XP', /(Windows NT 5.1)|(Windows XP)/],\n ['Windows Server 2003', /(Windows NT 5.2)/],\n ['Windows Vista', /(Windows NT 6.0)/],\n ['Windows 7', /(Windows NT 6.1)/],\n ['Windows 8', /(Windows NT 6.2)/],\n ['Windows 8.1', /(Windows NT 6.3)/],\n ['Windows 10', /(Windows NT 10.0)/],\n ['Windows ME', /Windows ME/],\n ['Windows CE', /Windows CE|WinCE|Microsoft Pocket Internet Explorer/],\n ['Open BSD', /OpenBSD/],\n ['Sun OS', /SunOS/],\n ['Chrome OS', /CrOS/],\n ['Linux', /(Linux)|(X11)/],\n ['Mac OS', /(Mac_PowerPC)|(Macintosh)/],\n ['QNX', /QNX/],\n ['BeOS', /BeOS/],\n ['OS/2', /OS\\/2/],\n];\nexport function detect(userAgent) {\n if (!!userAgent) {\n return parseUserAgent(userAgent);\n }\n if (typeof document === 'undefined' &&\n typeof navigator !== 'undefined' &&\n navigator.product === 'ReactNative') {\n return new ReactNativeInfo();\n }\n if (typeof navigator !== 'undefined') {\n return parseUserAgent(navigator.userAgent);\n }\n return getNodeVersion();\n}\nfunction matchUserAgent(ua) {\n // opted for using reduce here rather than Array#first with a regex.test call\n // this is primarily because using the reduce we only perform the regex\n // execution once rather than once for the test and for the exec again below\n // probably something that needs to be benchmarked though\n return (ua !== '' &&\n userAgentRules.reduce(function (matched, _a) {\n var browser = _a[0], regex = _a[1];\n if (matched) {\n return matched;\n }\n var uaMatch = regex.exec(ua);\n return !!uaMatch && [browser, uaMatch];\n }, false));\n}\nexport function browserName(ua) {\n var data = matchUserAgent(ua);\n return data ? data[0] : null;\n}\nexport function parseUserAgent(ua) {\n var matchedRule = matchUserAgent(ua);\n if (!matchedRule) {\n return null;\n }\n var name = matchedRule[0], match = matchedRule[1];\n if (name === 'searchbot') {\n return new BotInfo();\n }\n // Do not use RegExp for split operation as some browser do not support it (See: http://blog.stevenlevithan.com/archives/cross-browser-split)\n var versionParts = match[1] && match[1].split('.').join('_').split('_').slice(0, 3);\n if (versionParts) {\n if (versionParts.length < REQUIRED_VERSION_PARTS) {\n versionParts = __spreadArray(__spreadArray([], versionParts, true), createVersionParts(REQUIRED_VERSION_PARTS - versionParts.length), true);\n }\n }\n else {\n versionParts = [];\n }\n var version = versionParts.join('.');\n var os = detectOS(ua);\n var searchBotMatch = SEARCHBOT_OS_REGEX.exec(ua);\n if (searchBotMatch && searchBotMatch[1]) {\n return new SearchBotDeviceInfo(name, version, os, searchBotMatch[1]);\n }\n return new BrowserInfo(name, version, os);\n}\nexport function detectOS(ua) {\n for (var ii = 0, count = operatingSystemRules.length; ii < count; ii++) {\n var _a = operatingSystemRules[ii], os = _a[0], regex = _a[1];\n var match = regex.exec(ua);\n if (match) {\n return os;\n }\n }\n return null;\n}\nexport function getNodeVersion() {\n var isNode = typeof process !== 'undefined' && process.version;\n return isNode ? new NodeInfo(process.version.slice(1)) : null;\n}\nfunction createVersionParts(count) {\n var output = [];\n for (var ii = 0; ii < count; ii++) {\n output.push('0');\n }\n return output;\n}\n","/*\n* FileSaver.js\n* A saveAs() FileSaver implementation.\n*\n* By Eli Grey, http://eligrey.com\n*\n* License : https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md (MIT)\n* source : http://purl.eligrey.com/github/FileSaver.js\n*/\n\n// The one and only way of getting global scope in all environments\n// https://stackoverflow.com/q/3277182/1008999\nvar _global = typeof window === 'object' && window.window === window\n ? window : typeof self === 'object' && self.self === self\n ? self : typeof global === 'object' && global.global === global\n ? global\n : this\n\nfunction bom (blob, opts) {\n if (typeof opts === 'undefined') opts = { autoBom: false }\n else if (typeof opts !== 'object') {\n console.warn('Deprecated: Expected third argument to be a object')\n opts = { autoBom: !opts }\n }\n\n // prepend BOM for UTF-8 XML and text/* types (including HTML)\n // note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF\n if (opts.autoBom && /^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(blob.type)) {\n return new Blob([String.fromCharCode(0xFEFF), blob], { type: blob.type })\n }\n return blob\n}\n\nfunction download (url, name, opts) {\n var xhr = new XMLHttpRequest()\n xhr.open('GET', url)\n xhr.responseType = 'blob'\n xhr.onload = function () {\n saveAs(xhr.response, name, opts)\n }\n xhr.onerror = function () {\n console.error('could not download file')\n }\n xhr.send()\n}\n\nfunction corsEnabled (url) {\n var xhr = new XMLHttpRequest()\n // use sync to avoid popup blocker\n xhr.open('HEAD', url, false)\n try {\n xhr.send()\n } catch (e) {}\n return xhr.status >= 200 && xhr.status <= 299\n}\n\n// `a.click()` doesn't work for all browsers (#465)\nfunction click (node) {\n try {\n node.dispatchEvent(new MouseEvent('click'))\n } catch (e) {\n var evt = document.createEvent('MouseEvents')\n evt.initMouseEvent('click', true, true, window, 0, 0, 0, 80,\n 20, false, false, false, false, 0, null)\n node.dispatchEvent(evt)\n }\n}\n\n// Detect WebView inside a native macOS app by ruling out all browsers\n// We just need to check for 'Safari' because all other browsers (besides Firefox) include that too\n// https://www.whatismybrowser.com/guides/the-latest-user-agent/macos\nvar isMacOSWebView = _global.navigator && /Macintosh/.test(navigator.userAgent) && /AppleWebKit/.test(navigator.userAgent) && !/Safari/.test(navigator.userAgent)\n\nvar saveAs = _global.saveAs || (\n // probably in some web worker\n (typeof window !== 'object' || window !== _global)\n ? function saveAs () { /* noop */ }\n\n // Use download attribute first if possible (#193 Lumia mobile) unless this is a macOS WebView\n : ('download' in HTMLAnchorElement.prototype && !isMacOSWebView)\n ? function saveAs (blob, name, opts) {\n var URL = _global.URL || _global.webkitURL\n var a = document.createElement('a')\n name = name || blob.name || 'download'\n\n a.download = name\n a.rel = 'noopener' // tabnabbing\n\n // TODO: detect chrome extensions & packaged apps\n // a.target = '_blank'\n\n if (typeof blob === 'string') {\n // Support regular links\n a.href = blob\n if (a.origin !== location.origin) {\n corsEnabled(a.href)\n ? download(blob, name, opts)\n : click(a, a.target = '_blank')\n } else {\n click(a)\n }\n } else {\n // Support blobs\n a.href = URL.createObjectURL(blob)\n setTimeout(function () { URL.revokeObjectURL(a.href) }, 4E4) // 40s\n setTimeout(function () { click(a) }, 0)\n }\n }\n\n // Use msSaveOrOpenBlob as a second approach\n : 'msSaveOrOpenBlob' in navigator\n ? function saveAs (blob, name, opts) {\n name = name || blob.name || 'download'\n\n if (typeof blob === 'string') {\n if (corsEnabled(blob)) {\n download(blob, name, opts)\n } else {\n var a = document.createElement('a')\n a.href = blob\n a.target = '_blank'\n setTimeout(function () { click(a) })\n }\n } else {\n navigator.msSaveOrOpenBlob(bom(blob, opts), name)\n }\n }\n\n // Fallback to using FileReader and a popup\n : function saveAs (blob, name, opts, popup) {\n // Open a popup immediately do go around popup blocker\n // Mostly only available on user interaction and the fileReader is async so...\n popup = popup || open('', '_blank')\n if (popup) {\n popup.document.title =\n popup.document.body.innerText = 'downloading...'\n }\n\n if (typeof blob === 'string') return download(blob, name, opts)\n\n var force = blob.type === 'application/octet-stream'\n var isSafari = /constructor/i.test(_global.HTMLElement) || _global.safari\n var isChromeIOS = /CriOS\\/[\\d]+/.test(navigator.userAgent)\n\n if ((isChromeIOS || (force && isSafari) || isMacOSWebView) && typeof FileReader !== 'undefined') {\n // Safari doesn't allow downloading of blob URLs\n var reader = new FileReader()\n reader.onloadend = function () {\n var url = reader.result\n url = isChromeIOS ? url : url.replace(/^data:[^;]*;/, 'data:attachment/file;')\n if (popup) popup.location.href = url\n else location = url\n popup = null // reverse-tabnabbing #460\n }\n reader.readAsDataURL(blob)\n } else {\n var URL = _global.URL || _global.webkitURL\n var url = URL.createObjectURL(blob)\n if (popup) popup.location = url\n else location.href = url\n popup = null // reverse-tabnabbing #460\n setTimeout(function () { URL.revokeObjectURL(url) }, 4E4) // 40s\n }\n }\n)\n\n_global.saveAs = saveAs.saveAs = saveAs\n\nif (typeof module !== 'undefined') {\n module.exports = saveAs;\n}\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (factory((global.fmin = global.fmin || {})));\n}(this, function (exports) { 'use strict';\n\n /** finds the zeros of a function, given two starting points (which must\n * have opposite signs */\n function bisect(f, a, b, parameters) {\n parameters = parameters || {};\n var maxIterations = parameters.maxIterations || 100,\n tolerance = parameters.tolerance || 1e-10,\n fA = f(a),\n fB = f(b),\n delta = b - a;\n\n if (fA * fB > 0) {\n throw \"Initial bisect points must have opposite signs\";\n }\n\n if (fA === 0) return a;\n if (fB === 0) return b;\n\n for (var i = 0; i < maxIterations; ++i) {\n delta /= 2;\n var mid = a + delta,\n fMid = f(mid);\n\n if (fMid * fA >= 0) {\n a = mid;\n }\n\n if ((Math.abs(delta) < tolerance) || (fMid === 0)) {\n return mid;\n }\n }\n return a + delta;\n }\n\n // need some basic operations on vectors, rather than adding a dependency,\n // just define here\n function zeros(x) { var r = new Array(x); for (var i = 0; i < x; ++i) { r[i] = 0; } return r; }\n function zerosM(x,y) { return zeros(x).map(function() { return zeros(y); }); }\n\n function dot(a, b) {\n var ret = 0;\n for (var i = 0; i < a.length; ++i) {\n ret += a[i] * b[i];\n }\n return ret;\n }\n\n function norm2(a) {\n return Math.sqrt(dot(a, a));\n }\n\n function scale(ret, value, c) {\n for (var i = 0; i < value.length; ++i) {\n ret[i] = value[i] * c;\n }\n }\n\n function weightedSum(ret, w1, v1, w2, v2) {\n for (var j = 0; j < ret.length; ++j) {\n ret[j] = w1 * v1[j] + w2 * v2[j];\n }\n }\n\n /** minimizes a function using the downhill simplex method */\n function nelderMead(f, x0, parameters) {\n parameters = parameters || {};\n\n var maxIterations = parameters.maxIterations || x0.length * 200,\n nonZeroDelta = parameters.nonZeroDelta || 1.05,\n zeroDelta = parameters.zeroDelta || 0.001,\n minErrorDelta = parameters.minErrorDelta || 1e-6,\n minTolerance = parameters.minErrorDelta || 1e-5,\n rho = (parameters.rho !== undefined) ? parameters.rho : 1,\n chi = (parameters.chi !== undefined) ? parameters.chi : 2,\n psi = (parameters.psi !== undefined) ? parameters.psi : -0.5,\n sigma = (parameters.sigma !== undefined) ? parameters.sigma : 0.5,\n maxDiff;\n\n // initialize simplex.\n var N = x0.length,\n simplex = new Array(N + 1);\n simplex[0] = x0;\n simplex[0].fx = f(x0);\n simplex[0].id = 0;\n for (var i = 0; i < N; ++i) {\n var point = x0.slice();\n point[i] = point[i] ? point[i] * nonZeroDelta : zeroDelta;\n simplex[i+1] = point;\n simplex[i+1].fx = f(point);\n simplex[i+1].id = i+1;\n }\n\n function updateSimplex(value) {\n for (var i = 0; i < value.length; i++) {\n simplex[N][i] = value[i];\n }\n simplex[N].fx = value.fx;\n }\n\n var sortOrder = function(a, b) { return a.fx - b.fx; };\n\n var centroid = x0.slice(),\n reflected = x0.slice(),\n contracted = x0.slice(),\n expanded = x0.slice();\n\n for (var iteration = 0; iteration < maxIterations; ++iteration) {\n simplex.sort(sortOrder);\n\n if (parameters.history) {\n // copy the simplex (since later iterations will mutate) and\n // sort it to have a consistent order between iterations\n var sortedSimplex = simplex.map(function (x) {\n var state = x.slice();\n state.fx = x.fx;\n state.id = x.id;\n return state;\n });\n sortedSimplex.sort(function(a,b) { return a.id - b.id; });\n\n parameters.history.push({x: simplex[0].slice(),\n fx: simplex[0].fx,\n simplex: sortedSimplex});\n }\n\n maxDiff = 0;\n for (i = 0; i < N; ++i) {\n maxDiff = Math.max(maxDiff, Math.abs(simplex[0][i] - simplex[1][i]));\n }\n\n if ((Math.abs(simplex[0].fx - simplex[N].fx) < minErrorDelta) &&\n (maxDiff < minTolerance)) {\n break;\n }\n\n // compute the centroid of all but the worst point in the simplex\n for (i = 0; i < N; ++i) {\n centroid[i] = 0;\n for (var j = 0; j < N; ++j) {\n centroid[i] += simplex[j][i];\n }\n centroid[i] /= N;\n }\n\n // reflect the worst point past the centroid and compute loss at reflected\n // point\n var worst = simplex[N];\n weightedSum(reflected, 1+rho, centroid, -rho, worst);\n reflected.fx = f(reflected);\n\n // if the reflected point is the best seen, then possibly expand\n if (reflected.fx < simplex[0].fx) {\n weightedSum(expanded, 1+chi, centroid, -chi, worst);\n expanded.fx = f(expanded);\n if (expanded.fx < reflected.fx) {\n updateSimplex(expanded);\n } else {\n updateSimplex(reflected);\n }\n }\n\n // if the reflected point is worse than the second worst, we need to\n // contract\n else if (reflected.fx >= simplex[N-1].fx) {\n var shouldReduce = false;\n\n if (reflected.fx > worst.fx) {\n // do an inside contraction\n weightedSum(contracted, 1+psi, centroid, -psi, worst);\n contracted.fx = f(contracted);\n if (contracted.fx < worst.fx) {\n updateSimplex(contracted);\n } else {\n shouldReduce = true;\n }\n } else {\n // do an outside contraction\n weightedSum(contracted, 1-psi * rho, centroid, psi*rho, worst);\n contracted.fx = f(contracted);\n if (contracted.fx < reflected.fx) {\n updateSimplex(contracted);\n } else {\n shouldReduce = true;\n }\n }\n\n if (shouldReduce) {\n // if we don't contract here, we're done\n if (sigma >= 1) break;\n\n // do a reduction\n for (i = 1; i < simplex.length; ++i) {\n weightedSum(simplex[i], 1 - sigma, simplex[0], sigma, simplex[i]);\n simplex[i].fx = f(simplex[i]);\n }\n }\n } else {\n updateSimplex(reflected);\n }\n }\n\n simplex.sort(sortOrder);\n return {fx : simplex[0].fx,\n x : simplex[0]};\n }\n\n /// searches along line 'pk' for a point that satifies the wolfe conditions\n /// See 'Numerical Optimization' by Nocedal and Wright p59-60\n /// f : objective function\n /// pk : search direction\n /// current: object containing current gradient/loss\n /// next: output: contains next gradient/loss\n /// returns a: step size taken\n function wolfeLineSearch(f, pk, current, next, a, c1, c2) {\n var phi0 = current.fx, phiPrime0 = dot(current.fxprime, pk),\n phi = phi0, phi_old = phi0,\n phiPrime = phiPrime0,\n a0 = 0;\n\n a = a || 1;\n c1 = c1 || 1e-6;\n c2 = c2 || 0.1;\n\n function zoom(a_lo, a_high, phi_lo) {\n for (var iteration = 0; iteration < 16; ++iteration) {\n a = (a_lo + a_high)/2;\n weightedSum(next.x, 1.0, current.x, a, pk);\n phi = next.fx = f(next.x, next.fxprime);\n phiPrime = dot(next.fxprime, pk);\n\n if ((phi > (phi0 + c1 * a * phiPrime0)) ||\n (phi >= phi_lo)) {\n a_high = a;\n\n } else {\n if (Math.abs(phiPrime) <= -c2 * phiPrime0) {\n return a;\n }\n\n if (phiPrime * (a_high - a_lo) >=0) {\n a_high = a_lo;\n }\n\n a_lo = a;\n phi_lo = phi;\n }\n }\n\n return 0;\n }\n\n for (var iteration = 0; iteration < 10; ++iteration) {\n weightedSum(next.x, 1.0, current.x, a, pk);\n phi = next.fx = f(next.x, next.fxprime);\n phiPrime = dot(next.fxprime, pk);\n if ((phi > (phi0 + c1 * a * phiPrime0)) ||\n (iteration && (phi >= phi_old))) {\n return zoom(a0, a, phi_old);\n }\n\n if (Math.abs(phiPrime) <= -c2 * phiPrime0) {\n return a;\n }\n\n if (phiPrime >= 0 ) {\n return zoom(a, a0, phi);\n }\n\n phi_old = phi;\n a0 = a;\n a *= 2;\n }\n\n return a;\n }\n\n function conjugateGradient(f, initial, params) {\n // allocate all memory up front here, keep out of the loop for perfomance\n // reasons\n var current = {x: initial.slice(), fx: 0, fxprime: initial.slice()},\n next = {x: initial.slice(), fx: 0, fxprime: initial.slice()},\n yk = initial.slice(),\n pk, temp,\n a = 1,\n maxIterations;\n\n params = params || {};\n maxIterations = params.maxIterations || initial.length * 20;\n\n current.fx = f(current.x, current.fxprime);\n pk = current.fxprime.slice();\n scale(pk, current.fxprime,-1);\n\n for (var i = 0; i < maxIterations; ++i) {\n a = wolfeLineSearch(f, pk, current, next, a);\n\n // todo: history in wrong spot?\n if (params.history) {\n params.history.push({x: current.x.slice(),\n fx: current.fx,\n fxprime: current.fxprime.slice(),\n alpha: a});\n }\n\n if (!a) {\n // faiiled to find point that satifies wolfe conditions.\n // reset direction for next iteration\n scale(pk, current.fxprime, -1);\n\n } else {\n // update direction using Polak–Ribiere CG method\n weightedSum(yk, 1, next.fxprime, -1, current.fxprime);\n\n var delta_k = dot(current.fxprime, current.fxprime),\n beta_k = Math.max(0, dot(yk, next.fxprime) / delta_k);\n\n weightedSum(pk, beta_k, pk, -1, next.fxprime);\n\n temp = current;\n current = next;\n next = temp;\n }\n\n if (norm2(current.fxprime) <= 1e-5) {\n break;\n }\n }\n\n if (params.history) {\n params.history.push({x: current.x.slice(),\n fx: current.fx,\n fxprime: current.fxprime.slice(),\n alpha: a});\n }\n\n return current;\n }\n\n function gradientDescent(f, initial, params) {\n params = params || {};\n var maxIterations = params.maxIterations || initial.length * 100,\n learnRate = params.learnRate || 0.001,\n current = {x: initial.slice(), fx: 0, fxprime: initial.slice()};\n\n for (var i = 0; i < maxIterations; ++i) {\n current.fx = f(current.x, current.fxprime);\n if (params.history) {\n params.history.push({x: current.x.slice(),\n fx: current.fx,\n fxprime: current.fxprime.slice()});\n }\n\n weightedSum(current.x, 1, current.x, -learnRate, current.fxprime);\n if (norm2(current.fxprime) <= 1e-5) {\n break;\n }\n }\n\n return current;\n }\n\n function gradientDescentLineSearch(f, initial, params) {\n params = params || {};\n var current = {x: initial.slice(), fx: 0, fxprime: initial.slice()},\n next = {x: initial.slice(), fx: 0, fxprime: initial.slice()},\n maxIterations = params.maxIterations || initial.length * 100,\n learnRate = params.learnRate || 1,\n pk = initial.slice(),\n c1 = params.c1 || 1e-3,\n c2 = params.c2 || 0.1,\n temp,\n functionCalls = [];\n\n if (params.history) {\n // wrap the function call to track linesearch samples\n var inner = f;\n f = function(x, fxprime) {\n functionCalls.push(x.slice());\n return inner(x, fxprime);\n };\n }\n\n current.fx = f(current.x, current.fxprime);\n for (var i = 0; i < maxIterations; ++i) {\n scale(pk, current.fxprime, -1);\n learnRate = wolfeLineSearch(f, pk, current, next, learnRate, c1, c2);\n\n if (params.history) {\n params.history.push({x: current.x.slice(),\n fx: current.fx,\n fxprime: current.fxprime.slice(),\n functionCalls: functionCalls,\n learnRate: learnRate,\n alpha: learnRate});\n functionCalls = [];\n }\n\n\n temp = current;\n current = next;\n next = temp;\n\n if ((learnRate === 0) || (norm2(current.fxprime) < 1e-5)) break;\n }\n\n return current;\n }\n\n exports.bisect = bisect;\n exports.nelderMead = nelderMead;\n exports.conjugateGradient = conjugateGradient;\n exports.gradientDescent = gradientDescent;\n exports.gradientDescentLineSearch = gradientDescentLineSearch;\n exports.zeros = zeros;\n exports.zerosM = zerosM;\n exports.norm2 = norm2;\n exports.weightedSum = weightedSum;\n exports.scale = scale;\n\n}));","/**\n * Common utilities\n * @module glMatrix\n */\n// Configuration Constants\nexport var EPSILON = 0.000001;\nexport var ARRAY_TYPE = typeof Float32Array !== 'undefined' ? Float32Array : Array;\nexport var RANDOM = Math.random;\n/**\n * Sets the type of array used when creating new vectors and matrices\n *\n * @param {Float32ArrayConstructor | ArrayConstructor} type Array type, such as Float32Array or Array\n */\n\nexport function setMatrixArrayType(type) {\n ARRAY_TYPE = type;\n}\nvar degree = Math.PI / 180;\n/**\n * Convert Degree To Radian\n *\n * @param {Number} a Angle in Degrees\n */\n\nexport function toRadian(a) {\n return a * degree;\n}\n/**\n * Tests whether or not the arguments have approximately the same value, within an absolute\n * or relative tolerance of glMatrix.EPSILON (an absolute tolerance is used for values less\n * than or equal to 1.0, and a relative tolerance is used for larger values)\n *\n * @param {Number} a The first number to test.\n * @param {Number} b The second number to test.\n * @returns {Boolean} True if the numbers are approximately equal, false otherwise.\n */\n\nexport function equals(a, b) {\n return Math.abs(a - b) <= EPSILON * Math.max(1.0, Math.abs(a), Math.abs(b));\n}\nif (!Math.hypot) Math.hypot = function () {\n var y = 0,\n i = arguments.length;\n\n while (i--) {\n y += arguments[i] * arguments[i];\n }\n\n return Math.sqrt(y);\n};","import * as glMatrix from \"./common.js\";\n/**\n * 3x3 Matrix\n * @module mat3\n */\n\n/**\n * Creates a new identity mat3\n *\n * @returns {mat3} a new 3x3 matrix\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(9);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n }\n\n out[0] = 1;\n out[4] = 1;\n out[8] = 1;\n return out;\n}\n/**\n * Copies the upper-left 3x3 values into the given mat3.\n *\n * @param {mat3} out the receiving 3x3 matrix\n * @param {ReadonlyMat4} a the source 4x4 matrix\n * @returns {mat3} out\n */\n\nexport function fromMat4(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[4];\n out[4] = a[5];\n out[5] = a[6];\n out[6] = a[8];\n out[7] = a[9];\n out[8] = a[10];\n return out;\n}\n/**\n * Creates a new mat3 initialized with values from an existing matrix\n *\n * @param {ReadonlyMat3} a matrix to clone\n * @returns {mat3} a new 3x3 matrix\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(9);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n}\n/**\n * Copy the values from one mat3 to another\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n out[3] = a[3];\n out[4] = a[4];\n out[5] = a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n}\n/**\n * Create a new mat3 with the given values\n *\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m10 Component in column 1, row 0 position (index 3)\n * @param {Number} m11 Component in column 1, row 1 position (index 4)\n * @param {Number} m12 Component in column 1, row 2 position (index 5)\n * @param {Number} m20 Component in column 2, row 0 position (index 6)\n * @param {Number} m21 Component in column 2, row 1 position (index 7)\n * @param {Number} m22 Component in column 2, row 2 position (index 8)\n * @returns {mat3} A new mat3\n */\n\nexport function fromValues(m00, m01, m02, m10, m11, m12, m20, m21, m22) {\n var out = new glMatrix.ARRAY_TYPE(9);\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m10;\n out[4] = m11;\n out[5] = m12;\n out[6] = m20;\n out[7] = m21;\n out[8] = m22;\n return out;\n}\n/**\n * Set the components of a mat3 to the given values\n *\n * @param {mat3} out the receiving matrix\n * @param {Number} m00 Component in column 0, row 0 position (index 0)\n * @param {Number} m01 Component in column 0, row 1 position (index 1)\n * @param {Number} m02 Component in column 0, row 2 position (index 2)\n * @param {Number} m10 Component in column 1, row 0 position (index 3)\n * @param {Number} m11 Component in column 1, row 1 position (index 4)\n * @param {Number} m12 Component in column 1, row 2 position (index 5)\n * @param {Number} m20 Component in column 2, row 0 position (index 6)\n * @param {Number} m21 Component in column 2, row 1 position (index 7)\n * @param {Number} m22 Component in column 2, row 2 position (index 8)\n * @returns {mat3} out\n */\n\nexport function set(out, m00, m01, m02, m10, m11, m12, m20, m21, m22) {\n out[0] = m00;\n out[1] = m01;\n out[2] = m02;\n out[3] = m10;\n out[4] = m11;\n out[5] = m12;\n out[6] = m20;\n out[7] = m21;\n out[8] = m22;\n return out;\n}\n/**\n * Set a mat3 to the identity matrix\n *\n * @param {mat3} out the receiving matrix\n * @returns {mat3} out\n */\n\nexport function identity(out) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 1;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n/**\n * Transpose the values of a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function transpose(out, a) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n if (out === a) {\n var a01 = a[1],\n a02 = a[2],\n a12 = a[5];\n out[1] = a[3];\n out[2] = a[6];\n out[3] = a01;\n out[5] = a[7];\n out[6] = a02;\n out[7] = a12;\n } else {\n out[0] = a[0];\n out[1] = a[3];\n out[2] = a[6];\n out[3] = a[1];\n out[4] = a[4];\n out[5] = a[7];\n out[6] = a[2];\n out[7] = a[5];\n out[8] = a[8];\n }\n\n return out;\n}\n/**\n * Inverts a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function invert(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n var b01 = a22 * a11 - a12 * a21;\n var b11 = -a22 * a10 + a12 * a20;\n var b21 = a21 * a10 - a11 * a20; // Calculate the determinant\n\n var det = a00 * b01 + a01 * b11 + a02 * b21;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = b01 * det;\n out[1] = (-a22 * a01 + a02 * a21) * det;\n out[2] = (a12 * a01 - a02 * a11) * det;\n out[3] = b11 * det;\n out[4] = (a22 * a00 - a02 * a20) * det;\n out[5] = (-a12 * a00 + a02 * a10) * det;\n out[6] = b21 * det;\n out[7] = (-a21 * a00 + a01 * a20) * det;\n out[8] = (a11 * a00 - a01 * a10) * det;\n return out;\n}\n/**\n * Calculates the adjugate of a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the source matrix\n * @returns {mat3} out\n */\n\nexport function adjoint(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n out[0] = a11 * a22 - a12 * a21;\n out[1] = a02 * a21 - a01 * a22;\n out[2] = a01 * a12 - a02 * a11;\n out[3] = a12 * a20 - a10 * a22;\n out[4] = a00 * a22 - a02 * a20;\n out[5] = a02 * a10 - a00 * a12;\n out[6] = a10 * a21 - a11 * a20;\n out[7] = a01 * a20 - a00 * a21;\n out[8] = a00 * a11 - a01 * a10;\n return out;\n}\n/**\n * Calculates the determinant of a mat3\n *\n * @param {ReadonlyMat3} a the source matrix\n * @returns {Number} determinant of a\n */\n\nexport function determinant(a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n return a00 * (a22 * a11 - a12 * a21) + a01 * (-a22 * a10 + a12 * a20) + a02 * (a21 * a10 - a11 * a20);\n}\n/**\n * Multiplies two mat3's\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\n\nexport function multiply(out, a, b) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2];\n var a10 = a[3],\n a11 = a[4],\n a12 = a[5];\n var a20 = a[6],\n a21 = a[7],\n a22 = a[8];\n var b00 = b[0],\n b01 = b[1],\n b02 = b[2];\n var b10 = b[3],\n b11 = b[4],\n b12 = b[5];\n var b20 = b[6],\n b21 = b[7],\n b22 = b[8];\n out[0] = b00 * a00 + b01 * a10 + b02 * a20;\n out[1] = b00 * a01 + b01 * a11 + b02 * a21;\n out[2] = b00 * a02 + b01 * a12 + b02 * a22;\n out[3] = b10 * a00 + b11 * a10 + b12 * a20;\n out[4] = b10 * a01 + b11 * a11 + b12 * a21;\n out[5] = b10 * a02 + b11 * a12 + b12 * a22;\n out[6] = b20 * a00 + b21 * a10 + b22 * a20;\n out[7] = b20 * a01 + b21 * a11 + b22 * a21;\n out[8] = b20 * a02 + b21 * a12 + b22 * a22;\n return out;\n}\n/**\n * Translate a mat3 by the given vector\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to translate\n * @param {ReadonlyVec2} v vector to translate by\n * @returns {mat3} out\n */\n\nexport function translate(out, a, v) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a10 = a[3],\n a11 = a[4],\n a12 = a[5],\n a20 = a[6],\n a21 = a[7],\n a22 = a[8],\n x = v[0],\n y = v[1];\n out[0] = a00;\n out[1] = a01;\n out[2] = a02;\n out[3] = a10;\n out[4] = a11;\n out[5] = a12;\n out[6] = x * a00 + y * a10 + a20;\n out[7] = x * a01 + y * a11 + a21;\n out[8] = x * a02 + y * a12 + a22;\n return out;\n}\n/**\n * Rotates a mat3 by the given angle\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to rotate\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat3} out\n */\n\nexport function rotate(out, a, rad) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a10 = a[3],\n a11 = a[4],\n a12 = a[5],\n a20 = a[6],\n a21 = a[7],\n a22 = a[8],\n s = Math.sin(rad),\n c = Math.cos(rad);\n out[0] = c * a00 + s * a10;\n out[1] = c * a01 + s * a11;\n out[2] = c * a02 + s * a12;\n out[3] = c * a10 - s * a00;\n out[4] = c * a11 - s * a01;\n out[5] = c * a12 - s * a02;\n out[6] = a20;\n out[7] = a21;\n out[8] = a22;\n return out;\n}\n/**\n * Scales the mat3 by the dimensions in the given vec2\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to rotate\n * @param {ReadonlyVec2} v the vec2 to scale the matrix by\n * @returns {mat3} out\n **/\n\nexport function scale(out, a, v) {\n var x = v[0],\n y = v[1];\n out[0] = x * a[0];\n out[1] = x * a[1];\n out[2] = x * a[2];\n out[3] = y * a[3];\n out[4] = y * a[4];\n out[5] = y * a[5];\n out[6] = a[6];\n out[7] = a[7];\n out[8] = a[8];\n return out;\n}\n/**\n * Creates a matrix from a vector translation\n * This is equivalent to (but much faster than):\n *\n * mat3.identity(dest);\n * mat3.translate(dest, dest, vec);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyVec2} v Translation vector\n * @returns {mat3} out\n */\n\nexport function fromTranslation(out, v) {\n out[0] = 1;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = 1;\n out[5] = 0;\n out[6] = v[0];\n out[7] = v[1];\n out[8] = 1;\n return out;\n}\n/**\n * Creates a matrix from a given angle\n * This is equivalent to (but much faster than):\n *\n * mat3.identity(dest);\n * mat3.rotate(dest, dest, rad);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {Number} rad the angle to rotate the matrix by\n * @returns {mat3} out\n */\n\nexport function fromRotation(out, rad) {\n var s = Math.sin(rad),\n c = Math.cos(rad);\n out[0] = c;\n out[1] = s;\n out[2] = 0;\n out[3] = -s;\n out[4] = c;\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n/**\n * Creates a matrix from a vector scaling\n * This is equivalent to (but much faster than):\n *\n * mat3.identity(dest);\n * mat3.scale(dest, dest, vec);\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyVec2} v Scaling vector\n * @returns {mat3} out\n */\n\nexport function fromScaling(out, v) {\n out[0] = v[0];\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = v[1];\n out[5] = 0;\n out[6] = 0;\n out[7] = 0;\n out[8] = 1;\n return out;\n}\n/**\n * Copies the values from a mat2d into a mat3\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat2d} a the matrix to copy\n * @returns {mat3} out\n **/\n\nexport function fromMat2d(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = 0;\n out[3] = a[2];\n out[4] = a[3];\n out[5] = 0;\n out[6] = a[4];\n out[7] = a[5];\n out[8] = 1;\n return out;\n}\n/**\n * Calculates a 3x3 matrix from the given quaternion\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyQuat} q Quaternion to create matrix from\n *\n * @returns {mat3} out\n */\n\nexport function fromQuat(out, q) {\n var x = q[0],\n y = q[1],\n z = q[2],\n w = q[3];\n var x2 = x + x;\n var y2 = y + y;\n var z2 = z + z;\n var xx = x * x2;\n var yx = y * x2;\n var yy = y * y2;\n var zx = z * x2;\n var zy = z * y2;\n var zz = z * z2;\n var wx = w * x2;\n var wy = w * y2;\n var wz = w * z2;\n out[0] = 1 - yy - zz;\n out[3] = yx - wz;\n out[6] = zx + wy;\n out[1] = yx + wz;\n out[4] = 1 - xx - zz;\n out[7] = zy - wx;\n out[2] = zx - wy;\n out[5] = zy + wx;\n out[8] = 1 - xx - yy;\n return out;\n}\n/**\n * Calculates a 3x3 normal matrix (transpose inverse) from the 4x4 matrix\n *\n * @param {mat3} out mat3 receiving operation result\n * @param {ReadonlyMat4} a Mat4 to derive the normal matrix from\n *\n * @returns {mat3} out\n */\n\nexport function normalFromMat4(out, a) {\n var a00 = a[0],\n a01 = a[1],\n a02 = a[2],\n a03 = a[3];\n var a10 = a[4],\n a11 = a[5],\n a12 = a[6],\n a13 = a[7];\n var a20 = a[8],\n a21 = a[9],\n a22 = a[10],\n a23 = a[11];\n var a30 = a[12],\n a31 = a[13],\n a32 = a[14],\n a33 = a[15];\n var b00 = a00 * a11 - a01 * a10;\n var b01 = a00 * a12 - a02 * a10;\n var b02 = a00 * a13 - a03 * a10;\n var b03 = a01 * a12 - a02 * a11;\n var b04 = a01 * a13 - a03 * a11;\n var b05 = a02 * a13 - a03 * a12;\n var b06 = a20 * a31 - a21 * a30;\n var b07 = a20 * a32 - a22 * a30;\n var b08 = a20 * a33 - a23 * a30;\n var b09 = a21 * a32 - a22 * a31;\n var b10 = a21 * a33 - a23 * a31;\n var b11 = a22 * a33 - a23 * a32; // Calculate the determinant\n\n var det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\n if (!det) {\n return null;\n }\n\n det = 1.0 / det;\n out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det;\n out[1] = (a12 * b08 - a10 * b11 - a13 * b07) * det;\n out[2] = (a10 * b10 - a11 * b08 + a13 * b06) * det;\n out[3] = (a02 * b10 - a01 * b11 - a03 * b09) * det;\n out[4] = (a00 * b11 - a02 * b08 + a03 * b07) * det;\n out[5] = (a01 * b08 - a00 * b10 - a03 * b06) * det;\n out[6] = (a31 * b05 - a32 * b04 + a33 * b03) * det;\n out[7] = (a32 * b02 - a30 * b05 - a33 * b01) * det;\n out[8] = (a30 * b04 - a31 * b02 + a33 * b00) * det;\n return out;\n}\n/**\n * Generates a 2D projection matrix with the given bounds\n *\n * @param {mat3} out mat3 frustum matrix will be written into\n * @param {number} width Width of your gl context\n * @param {number} height Height of gl context\n * @returns {mat3} out\n */\n\nexport function projection(out, width, height) {\n out[0] = 2 / width;\n out[1] = 0;\n out[2] = 0;\n out[3] = 0;\n out[4] = -2 / height;\n out[5] = 0;\n out[6] = -1;\n out[7] = 1;\n out[8] = 1;\n return out;\n}\n/**\n * Returns a string representation of a mat3\n *\n * @param {ReadonlyMat3} a matrix to represent as a string\n * @returns {String} string representation of the matrix\n */\n\nexport function str(a) {\n return \"mat3(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \", \" + a[3] + \", \" + a[4] + \", \" + a[5] + \", \" + a[6] + \", \" + a[7] + \", \" + a[8] + \")\";\n}\n/**\n * Returns Frobenius norm of a mat3\n *\n * @param {ReadonlyMat3} a the matrix to calculate Frobenius norm of\n * @returns {Number} Frobenius norm\n */\n\nexport function frob(a) {\n return Math.hypot(a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8]);\n}\n/**\n * Adds two mat3's\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n out[3] = a[3] + b[3];\n out[4] = a[4] + b[4];\n out[5] = a[5] + b[5];\n out[6] = a[6] + b[6];\n out[7] = a[7] + b[7];\n out[8] = a[8] + b[8];\n return out;\n}\n/**\n * Subtracts matrix b from matrix a\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @returns {mat3} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n out[3] = a[3] - b[3];\n out[4] = a[4] - b[4];\n out[5] = a[5] - b[5];\n out[6] = a[6] - b[6];\n out[7] = a[7] - b[7];\n out[8] = a[8] - b[8];\n return out;\n}\n/**\n * Multiply each element of the matrix by a scalar.\n *\n * @param {mat3} out the receiving matrix\n * @param {ReadonlyMat3} a the matrix to scale\n * @param {Number} b amount to scale the matrix's elements by\n * @returns {mat3} out\n */\n\nexport function multiplyScalar(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n out[3] = a[3] * b;\n out[4] = a[4] * b;\n out[5] = a[5] * b;\n out[6] = a[6] * b;\n out[7] = a[7] * b;\n out[8] = a[8] * b;\n return out;\n}\n/**\n * Adds two mat3's after multiplying each element of the second operand by a scalar value.\n *\n * @param {mat3} out the receiving vector\n * @param {ReadonlyMat3} a the first operand\n * @param {ReadonlyMat3} b the second operand\n * @param {Number} scale the amount to scale b's elements by before adding\n * @returns {mat3} out\n */\n\nexport function multiplyScalarAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n out[3] = a[3] + b[3] * scale;\n out[4] = a[4] + b[4] * scale;\n out[5] = a[5] + b[5] * scale;\n out[6] = a[6] + b[6] * scale;\n out[7] = a[7] + b[7] * scale;\n out[8] = a[8] + b[8] * scale;\n return out;\n}\n/**\n * Returns whether or not the matrices have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyMat3} a The first matrix.\n * @param {ReadonlyMat3} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2] && a[3] === b[3] && a[4] === b[4] && a[5] === b[5] && a[6] === b[6] && a[7] === b[7] && a[8] === b[8];\n}\n/**\n * Returns whether or not the matrices have approximately the same elements in the same position.\n *\n * @param {ReadonlyMat3} a The first matrix.\n * @param {ReadonlyMat3} b The second matrix.\n * @returns {Boolean} True if the matrices are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2],\n a3 = a[3],\n a4 = a[4],\n a5 = a[5],\n a6 = a[6],\n a7 = a[7],\n a8 = a[8];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2)) && Math.abs(a3 - b3) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a3), Math.abs(b3)) && Math.abs(a4 - b4) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a4), Math.abs(b4)) && Math.abs(a5 - b5) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a5), Math.abs(b5)) && Math.abs(a6 - b6) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a6), Math.abs(b6)) && Math.abs(a7 - b7) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a7), Math.abs(b7)) && Math.abs(a8 - b8) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a8), Math.abs(b8));\n}\n/**\n * Alias for {@link mat3.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link mat3.subtract}\n * @function\n */\n\nexport var sub = subtract;","import * as glMatrix from \"./common.js\";\n/**\n * 2 Dimensional Vector\n * @module vec2\n */\n\n/**\n * Creates a new, empty vec2\n *\n * @returns {vec2} a new 2D vector\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(2);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n }\n\n return out;\n}\n/**\n * Creates a new vec2 initialized with values from an existing vector\n *\n * @param {ReadonlyVec2} a vector to clone\n * @returns {vec2} a new 2D vector\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(2);\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\n/**\n * Creates a new vec2 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @returns {vec2} a new 2D vector\n */\n\nexport function fromValues(x, y) {\n var out = new glMatrix.ARRAY_TYPE(2);\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\n * Copy the values from one vec2 to another\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the source vector\n * @returns {vec2} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n return out;\n}\n/**\n * Set the components of a vec2 to the given values\n *\n * @param {vec2} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @returns {vec2} out\n */\n\nexport function set(out, x, y) {\n out[0] = x;\n out[1] = y;\n return out;\n}\n/**\n * Adds two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n return out;\n}\n/**\n * Multiplies two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n return out;\n}\n/**\n * Divides two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n return out;\n}\n/**\n * Math.ceil the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to ceil\n * @returns {vec2} out\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n return out;\n}\n/**\n * Math.floor the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to floor\n * @returns {vec2} out\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n return out;\n}\n/**\n * Returns the minimum of two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n return out;\n}\n/**\n * Returns the maximum of two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec2} out\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n return out;\n}\n/**\n * Math.round the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to round\n * @returns {vec2} out\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n return out;\n}\n/**\n * Scales a vec2 by a scalar number\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec2} out\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n return out;\n}\n/**\n * Adds two vec2's after scaling the second operand by a scalar value\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec2} out\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n return out;\n}\n/**\n * Calculates the euclidian distance between two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} distance between a and b\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1];\n return Math.hypot(x, y);\n}\n/**\n * Calculates the squared euclidian distance between two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0],\n y = b[1] - a[1];\n return x * x + y * y;\n}\n/**\n * Calculates the length of a vec2\n *\n * @param {ReadonlyVec2} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nexport function length(a) {\n var x = a[0],\n y = a[1];\n return Math.hypot(x, y);\n}\n/**\n * Calculates the squared length of a vec2\n *\n * @param {ReadonlyVec2} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nexport function squaredLength(a) {\n var x = a[0],\n y = a[1];\n return x * x + y * y;\n}\n/**\n * Negates the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to negate\n * @returns {vec2} out\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n return out;\n}\n/**\n * Returns the inverse of the components of a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to invert\n * @returns {vec2} out\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n return out;\n}\n/**\n * Normalize a vec2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a vector to normalize\n * @returns {vec2} out\n */\n\nexport function normalize(out, a) {\n var x = a[0],\n y = a[1];\n var len = x * x + y * y;\n\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n return out;\n}\n/**\n * Calculates the dot product of two vec2's\n *\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1];\n}\n/**\n * Computes the cross product of two vec2's\n * Note that the cross product must by definition produce a 3D vector\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @returns {vec3} out\n */\n\nexport function cross(out, a, b) {\n var z = a[0] * b[1] - a[1] * b[0];\n out[0] = out[1] = 0;\n out[2] = z;\n return out;\n}\n/**\n * Performs a linear interpolation between two vec2's\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the first operand\n * @param {ReadonlyVec2} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec2} out\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0],\n ay = a[1];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec2} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec2} out\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0;\n var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n out[0] = Math.cos(r) * scale;\n out[1] = Math.sin(r) * scale;\n return out;\n}\n/**\n * Transforms the vec2 with a mat2\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat2} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat2(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[2] * y;\n out[1] = m[1] * x + m[3] * y;\n return out;\n}\n/**\n * Transforms the vec2 with a mat2d\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat2d} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat2d(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[2] * y + m[4];\n out[1] = m[1] * x + m[3] * y + m[5];\n return out;\n}\n/**\n * Transforms the vec2 with a mat3\n * 3rd vector component is implicitly '1'\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat3} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat3(out, a, m) {\n var x = a[0],\n y = a[1];\n out[0] = m[0] * x + m[3] * y + m[6];\n out[1] = m[1] * x + m[4] * y + m[7];\n return out;\n}\n/**\n * Transforms the vec2 with a mat4\n * 3rd vector component is implicitly '0'\n * 4th vector component is implicitly '1'\n *\n * @param {vec2} out the receiving vector\n * @param {ReadonlyVec2} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec2} out\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0];\n var y = a[1];\n out[0] = m[0] * x + m[4] * y + m[12];\n out[1] = m[1] * x + m[5] * y + m[13];\n return out;\n}\n/**\n * Rotate a 2D vector\n * @param {vec2} out The receiving vec2\n * @param {ReadonlyVec2} a The vec2 point to rotate\n * @param {ReadonlyVec2} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec2} out\n */\n\nexport function rotate(out, a, b, rad) {\n //Translate point to the origin\n var p0 = a[0] - b[0],\n p1 = a[1] - b[1],\n sinC = Math.sin(rad),\n cosC = Math.cos(rad); //perform rotation and translate to correct position\n\n out[0] = p0 * cosC - p1 * sinC + b[0];\n out[1] = p0 * sinC + p1 * cosC + b[1];\n return out;\n}\n/**\n * Get the angle between two 2D vectors\n * @param {ReadonlyVec2} a The first operand\n * @param {ReadonlyVec2} b The second operand\n * @returns {Number} The angle in radians\n */\n\nexport function angle(a, b) {\n var x1 = a[0],\n y1 = a[1],\n x2 = b[0],\n y2 = b[1],\n // mag is the product of the magnitudes of a and b\n mag = Math.sqrt(x1 * x1 + y1 * y1) * Math.sqrt(x2 * x2 + y2 * y2),\n // mag &&.. short circuits if mag == 0\n cosine = mag && (x1 * x2 + y1 * y2) / mag; // Math.min(Math.max(cosine, -1), 1) clamps the cosine between -1 and 1\n\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n/**\n * Set the components of a vec2 to zero\n *\n * @param {vec2} out the receiving vector\n * @returns {vec2} out\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec2} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nexport function str(a) {\n return \"vec2(\" + a[0] + \", \" + a[1] + \")\";\n}\n/**\n * Returns whether or not the vectors exactly have the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec2} a The first vector.\n * @param {ReadonlyVec2} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec2} a The first vector.\n * @param {ReadonlyVec2} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1];\n var b0 = b[0],\n b1 = b[1];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1));\n}\n/**\n * Alias for {@link vec2.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Alias for {@link vec2.subtract}\n * @function\n */\n\nexport var sub = subtract;\n/**\n * Alias for {@link vec2.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link vec2.divide}\n * @function\n */\n\nexport var div = divide;\n/**\n * Alias for {@link vec2.distance}\n * @function\n */\n\nexport var dist = distance;\n/**\n * Alias for {@link vec2.squaredDistance}\n * @function\n */\n\nexport var sqrDist = squaredDistance;\n/**\n * Alias for {@link vec2.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec2s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec2. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec2s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 2;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n }\n\n return a;\n };\n}();","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/** @license React v16.13.1\n * react-is.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 b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/*!\n localForage -- Offline Storage, Improved\n Version 1.10.0\n https://localforage.github.io/localForage\n (c) 2013-2017 Mozilla, Apache License 2.0\n*/\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.localforage = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw (f.code=\"MODULE_NOT_FOUND\", f)}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var scriptEl = global.document.createElement('script');\n scriptEl.onreadystatechange = function () {\n nextTick();\n\n scriptEl.onreadystatechange = null;\n scriptEl.parentNode.removeChild(scriptEl);\n scriptEl = null;\n };\n global.document.documentElement.appendChild(scriptEl);\n };\n } else {\n scheduleDrain = function () {\n setTimeout(nextTick, 0);\n };\n }\n}\n\nvar draining;\nvar queue = [];\n//named nextTick for less confusing stack traces\nfunction nextTick() {\n draining = true;\n var i, oldQueue;\n var len = queue.length;\n while (len) {\n oldQueue = queue;\n queue = [];\n i = -1;\n while (++i < len) {\n oldQueue[i]();\n }\n len = queue.length;\n }\n draining = false;\n}\n\nmodule.exports = immediate;\nfunction immediate(task) {\n if (queue.push(task) === 1 && !draining) {\n scheduleDrain();\n }\n}\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],2:[function(_dereq_,module,exports){\n'use strict';\nvar immediate = _dereq_(1);\n\n/* istanbul ignore next */\nfunction INTERNAL() {}\n\nvar handlers = {};\n\nvar REJECTED = ['REJECTED'];\nvar FULFILLED = ['FULFILLED'];\nvar PENDING = ['PENDING'];\n\nmodule.exports = Promise;\n\nfunction Promise(resolver) {\n if (typeof resolver !== 'function') {\n throw new TypeError('resolver must be a function');\n }\n this.state = PENDING;\n this.queue = [];\n this.outcome = void 0;\n if (resolver !== INTERNAL) {\n safelyResolveThenable(this, resolver);\n }\n}\n\nPromise.prototype[\"catch\"] = function (onRejected) {\n return this.then(null, onRejected);\n};\nPromise.prototype.then = function (onFulfilled, onRejected) {\n if (typeof onFulfilled !== 'function' && this.state === FULFILLED ||\n typeof onRejected !== 'function' && this.state === REJECTED) {\n return this;\n }\n var promise = new this.constructor(INTERNAL);\n if (this.state !== PENDING) {\n var resolver = this.state === FULFILLED ? onFulfilled : onRejected;\n unwrap(promise, resolver, this.outcome);\n } else {\n this.queue.push(new QueueItem(promise, onFulfilled, onRejected));\n }\n\n return promise;\n};\nfunction QueueItem(promise, onFulfilled, onRejected) {\n this.promise = promise;\n if (typeof onFulfilled === 'function') {\n this.onFulfilled = onFulfilled;\n this.callFulfilled = this.otherCallFulfilled;\n }\n if (typeof onRejected === 'function') {\n this.onRejected = onRejected;\n this.callRejected = this.otherCallRejected;\n }\n}\nQueueItem.prototype.callFulfilled = function (value) {\n handlers.resolve(this.promise, value);\n};\nQueueItem.prototype.otherCallFulfilled = function (value) {\n unwrap(this.promise, this.onFulfilled, value);\n};\nQueueItem.prototype.callRejected = function (value) {\n handlers.reject(this.promise, value);\n};\nQueueItem.prototype.otherCallRejected = function (value) {\n unwrap(this.promise, this.onRejected, value);\n};\n\nfunction unwrap(promise, func, value) {\n immediate(function () {\n var returnValue;\n try {\n returnValue = func(value);\n } catch (e) {\n return handlers.reject(promise, e);\n }\n if (returnValue === promise) {\n handlers.reject(promise, new TypeError('Cannot resolve promise with itself'));\n } else {\n handlers.resolve(promise, returnValue);\n }\n });\n}\n\nhandlers.resolve = function (self, value) {\n var result = tryCatch(getThen, value);\n if (result.status === 'error') {\n return handlers.reject(self, result.value);\n }\n var thenable = result.value;\n\n if (thenable) {\n safelyResolveThenable(self, thenable);\n } else {\n self.state = FULFILLED;\n self.outcome = value;\n var i = -1;\n var len = self.queue.length;\n while (++i < len) {\n self.queue[i].callFulfilled(value);\n }\n }\n return self;\n};\nhandlers.reject = function (self, error) {\n self.state = REJECTED;\n self.outcome = error;\n var i = -1;\n var len = self.queue.length;\n while (++i < len) {\n self.queue[i].callRejected(error);\n }\n return self;\n};\n\nfunction getThen(obj) {\n // Make sure we only access the accessor once as required by the spec\n var then = obj && obj.then;\n if (obj && (typeof obj === 'object' || typeof obj === 'function') && typeof then === 'function') {\n return function appyThen() {\n then.apply(obj, arguments);\n };\n }\n}\n\nfunction safelyResolveThenable(self, thenable) {\n // Either fulfill, reject or reject with error\n var called = false;\n function onError(value) {\n if (called) {\n return;\n }\n called = true;\n handlers.reject(self, value);\n }\n\n function onSuccess(value) {\n if (called) {\n return;\n }\n called = true;\n handlers.resolve(self, value);\n }\n\n function tryToUnwrap() {\n thenable(onSuccess, onError);\n }\n\n var result = tryCatch(tryToUnwrap);\n if (result.status === 'error') {\n onError(result.value);\n }\n}\n\nfunction tryCatch(func, value) {\n var out = {};\n try {\n out.value = func(value);\n out.status = 'success';\n } catch (e) {\n out.status = 'error';\n out.value = e;\n }\n return out;\n}\n\nPromise.resolve = resolve;\nfunction resolve(value) {\n if (value instanceof this) {\n return value;\n }\n return handlers.resolve(new this(INTERNAL), value);\n}\n\nPromise.reject = reject;\nfunction reject(reason) {\n var promise = new this(INTERNAL);\n return handlers.reject(promise, reason);\n}\n\nPromise.all = all;\nfunction all(iterable) {\n var self = this;\n if (Object.prototype.toString.call(iterable) !== '[object Array]') {\n return this.reject(new TypeError('must be an array'));\n }\n\n var len = iterable.length;\n var called = false;\n if (!len) {\n return this.resolve([]);\n }\n\n var values = new Array(len);\n var resolved = 0;\n var i = -1;\n var promise = new this(INTERNAL);\n\n while (++i < len) {\n allResolver(iterable[i], i);\n }\n return promise;\n function allResolver(value, i) {\n self.resolve(value).then(resolveFromAll, function (error) {\n if (!called) {\n called = true;\n handlers.reject(promise, error);\n }\n });\n function resolveFromAll(outValue) {\n values[i] = outValue;\n if (++resolved === len && !called) {\n called = true;\n handlers.resolve(promise, values);\n }\n }\n }\n}\n\nPromise.race = race;\nfunction race(iterable) {\n var self = this;\n if (Object.prototype.toString.call(iterable) !== '[object Array]') {\n return this.reject(new TypeError('must be an array'));\n }\n\n var len = iterable.length;\n var called = false;\n if (!len) {\n return this.resolve([]);\n }\n\n var i = -1;\n var promise = new this(INTERNAL);\n\n while (++i < len) {\n resolver(iterable[i]);\n }\n return promise;\n function resolver(value) {\n self.resolve(value).then(function (response) {\n if (!called) {\n called = true;\n handlers.resolve(promise, response);\n }\n }, function (error) {\n if (!called) {\n called = true;\n handlers.reject(promise, error);\n }\n });\n }\n}\n\n},{\"1\":1}],3:[function(_dereq_,module,exports){\n(function (global){\n'use strict';\nif (typeof global.Promise !== 'function') {\n global.Promise = _dereq_(2);\n}\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"2\":2}],4:[function(_dereq_,module,exports){\n'use strict';\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction getIDB() {\n /* global indexedDB,webkitIndexedDB,mozIndexedDB,OIndexedDB,msIndexedDB */\n try {\n if (typeof indexedDB !== 'undefined') {\n return indexedDB;\n }\n if (typeof webkitIndexedDB !== 'undefined') {\n return webkitIndexedDB;\n }\n if (typeof mozIndexedDB !== 'undefined') {\n return mozIndexedDB;\n }\n if (typeof OIndexedDB !== 'undefined') {\n return OIndexedDB;\n }\n if (typeof msIndexedDB !== 'undefined') {\n return msIndexedDB;\n }\n } catch (e) {\n return;\n }\n}\n\nvar idb = getIDB();\n\nfunction isIndexedDBValid() {\n try {\n // Initialize IndexedDB; fall back to vendor-prefixed versions\n // if needed.\n if (!idb || !idb.open) {\n return false;\n }\n // We mimic PouchDB here;\n //\n // We test for openDatabase because IE Mobile identifies itself\n // as Safari. Oh the lulz...\n var isSafari = typeof openDatabase !== 'undefined' && /(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent) && !/BlackBerry/.test(navigator.platform);\n\n var hasFetch = typeof fetch === 'function' && fetch.toString().indexOf('[native code') !== -1;\n\n // Safari <10.1 does not meet our requirements for IDB support\n // (see: https://github.com/pouchdb/pouchdb/issues/5572).\n // Safari 10.1 shipped with fetch, we can use that to detect it.\n // Note: this creates issues with `window.fetch` polyfills and\n // overrides; see:\n // https://github.com/localForage/localForage/issues/856\n return (!isSafari || hasFetch) && typeof indexedDB !== 'undefined' &&\n // some outdated implementations of IDB that appear on Samsung\n // and HTC Android devices <4.4 are missing IDBKeyRange\n // See: https://github.com/mozilla/localForage/issues/128\n // See: https://github.com/mozilla/localForage/issues/272\n typeof IDBKeyRange !== 'undefined';\n } catch (e) {\n return false;\n }\n}\n\n// Abstracts constructing a Blob object, so it also works in older\n// browsers that don't support the native Blob constructor. (i.e.\n// old QtWebKit versions, at least).\n// Abstracts constructing a Blob object, so it also works in older\n// browsers that don't support the native Blob constructor. (i.e.\n// old QtWebKit versions, at least).\nfunction createBlob(parts, properties) {\n /* global BlobBuilder,MSBlobBuilder,MozBlobBuilder,WebKitBlobBuilder */\n parts = parts || [];\n properties = properties || {};\n try {\n return new Blob(parts, properties);\n } catch (e) {\n if (e.name !== 'TypeError') {\n throw e;\n }\n var Builder = typeof BlobBuilder !== 'undefined' ? BlobBuilder : typeof MSBlobBuilder !== 'undefined' ? MSBlobBuilder : typeof MozBlobBuilder !== 'undefined' ? MozBlobBuilder : WebKitBlobBuilder;\n var builder = new Builder();\n for (var i = 0; i < parts.length; i += 1) {\n builder.append(parts[i]);\n }\n return builder.getBlob(properties.type);\n }\n}\n\n// This is CommonJS because lie is an external dependency, so Rollup\n// can just ignore it.\nif (typeof Promise === 'undefined') {\n // In the \"nopromises\" build this will just throw if you don't have\n // a global promise object, but it would throw anyway later.\n _dereq_(3);\n}\nvar Promise$1 = Promise;\n\nfunction executeCallback(promise, callback) {\n if (callback) {\n promise.then(function (result) {\n callback(null, result);\n }, function (error) {\n callback(error);\n });\n }\n}\n\nfunction executeTwoCallbacks(promise, callback, errorCallback) {\n if (typeof callback === 'function') {\n promise.then(callback);\n }\n\n if (typeof errorCallback === 'function') {\n promise[\"catch\"](errorCallback);\n }\n}\n\nfunction normalizeKey(key) {\n // Cast the key to a string, as that's all we can set as a key.\n if (typeof key !== 'string') {\n console.warn(key + ' used as a key, but it is not a string.');\n key = String(key);\n }\n\n return key;\n}\n\nfunction getCallback() {\n if (arguments.length && typeof arguments[arguments.length - 1] === 'function') {\n return arguments[arguments.length - 1];\n }\n}\n\n// Some code originally from async_storage.js in\n// [Gaia](https://github.com/mozilla-b2g/gaia).\n\nvar DETECT_BLOB_SUPPORT_STORE = 'local-forage-detect-blob-support';\nvar supportsBlobs = void 0;\nvar dbContexts = {};\nvar toString = Object.prototype.toString;\n\n// Transaction Modes\nvar READ_ONLY = 'readonly';\nvar READ_WRITE = 'readwrite';\n\n// Transform a binary string to an array buffer, because otherwise\n// weird stuff happens when you try to work with the binary string directly.\n// It is known.\n// From http://stackoverflow.com/questions/14967647/ (continues on next line)\n// encode-decode-image-with-base64-breaks-image (2013-04-21)\nfunction _binStringToArrayBuffer(bin) {\n var length = bin.length;\n var buf = new ArrayBuffer(length);\n var arr = new Uint8Array(buf);\n for (var i = 0; i < length; i++) {\n arr[i] = bin.charCodeAt(i);\n }\n return buf;\n}\n\n//\n// Blobs are not supported in all versions of IndexedDB, notably\n// Chrome <37 and Android <5. In those versions, storing a blob will throw.\n//\n// Various other blob bugs exist in Chrome v37-42 (inclusive).\n// Detecting them is expensive and confusing to users, and Chrome 37-42\n// is at very low usage worldwide, so we do a hacky userAgent check instead.\n//\n// content-type bug: https://code.google.com/p/chromium/issues/detail?id=408120\n// 404 bug: https://code.google.com/p/chromium/issues/detail?id=447916\n// FileReader bug: https://code.google.com/p/chromium/issues/detail?id=447836\n//\n// Code borrowed from PouchDB. See:\n// https://github.com/pouchdb/pouchdb/blob/master/packages/node_modules/pouchdb-adapter-idb/src/blobSupport.js\n//\nfunction _checkBlobSupportWithoutCaching(idb) {\n return new Promise$1(function (resolve) {\n var txn = idb.transaction(DETECT_BLOB_SUPPORT_STORE, READ_WRITE);\n var blob = createBlob(['']);\n txn.objectStore(DETECT_BLOB_SUPPORT_STORE).put(blob, 'key');\n\n txn.onabort = function (e) {\n // If the transaction aborts now its due to not being able to\n // write to the database, likely due to the disk being full\n e.preventDefault();\n e.stopPropagation();\n resolve(false);\n };\n\n txn.oncomplete = function () {\n var matchedChrome = navigator.userAgent.match(/Chrome\\/(\\d+)/);\n var matchedEdge = navigator.userAgent.match(/Edge\\//);\n // MS Edge pretends to be Chrome 42:\n // https://msdn.microsoft.com/en-us/library/hh869301%28v=vs.85%29.aspx\n resolve(matchedEdge || !matchedChrome || parseInt(matchedChrome[1], 10) >= 43);\n };\n })[\"catch\"](function () {\n return false; // error, so assume unsupported\n });\n}\n\nfunction _checkBlobSupport(idb) {\n if (typeof supportsBlobs === 'boolean') {\n return Promise$1.resolve(supportsBlobs);\n }\n return _checkBlobSupportWithoutCaching(idb).then(function (value) {\n supportsBlobs = value;\n return supportsBlobs;\n });\n}\n\nfunction _deferReadiness(dbInfo) {\n var dbContext = dbContexts[dbInfo.name];\n\n // Create a deferred object representing the current database operation.\n var deferredOperation = {};\n\n deferredOperation.promise = new Promise$1(function (resolve, reject) {\n deferredOperation.resolve = resolve;\n deferredOperation.reject = reject;\n });\n\n // Enqueue the deferred operation.\n dbContext.deferredOperations.push(deferredOperation);\n\n // Chain its promise to the database readiness.\n if (!dbContext.dbReady) {\n dbContext.dbReady = deferredOperation.promise;\n } else {\n dbContext.dbReady = dbContext.dbReady.then(function () {\n return deferredOperation.promise;\n });\n }\n}\n\nfunction _advanceReadiness(dbInfo) {\n var dbContext = dbContexts[dbInfo.name];\n\n // Dequeue a deferred operation.\n var deferredOperation = dbContext.deferredOperations.pop();\n\n // Resolve its promise (which is part of the database readiness\n // chain of promises).\n if (deferredOperation) {\n deferredOperation.resolve();\n return deferredOperation.promise;\n }\n}\n\nfunction _rejectReadiness(dbInfo, err) {\n var dbContext = dbContexts[dbInfo.name];\n\n // Dequeue a deferred operation.\n var deferredOperation = dbContext.deferredOperations.pop();\n\n // Reject its promise (which is part of the database readiness\n // chain of promises).\n if (deferredOperation) {\n deferredOperation.reject(err);\n return deferredOperation.promise;\n }\n}\n\nfunction _getConnection(dbInfo, upgradeNeeded) {\n return new Promise$1(function (resolve, reject) {\n dbContexts[dbInfo.name] = dbContexts[dbInfo.name] || createDbContext();\n\n if (dbInfo.db) {\n if (upgradeNeeded) {\n _deferReadiness(dbInfo);\n dbInfo.db.close();\n } else {\n return resolve(dbInfo.db);\n }\n }\n\n var dbArgs = [dbInfo.name];\n\n if (upgradeNeeded) {\n dbArgs.push(dbInfo.version);\n }\n\n var openreq = idb.open.apply(idb, dbArgs);\n\n if (upgradeNeeded) {\n openreq.onupgradeneeded = function (e) {\n var db = openreq.result;\n try {\n db.createObjectStore(dbInfo.storeName);\n if (e.oldVersion <= 1) {\n // Added when support for blob shims was added\n db.createObjectStore(DETECT_BLOB_SUPPORT_STORE);\n }\n } catch (ex) {\n if (ex.name === 'ConstraintError') {\n console.warn('The database \"' + dbInfo.name + '\"' + ' has been upgraded from version ' + e.oldVersion + ' to version ' + e.newVersion + ', but the storage \"' + dbInfo.storeName + '\" already exists.');\n } else {\n throw ex;\n }\n }\n };\n }\n\n openreq.onerror = function (e) {\n e.preventDefault();\n reject(openreq.error);\n };\n\n openreq.onsuccess = function () {\n var db = openreq.result;\n db.onversionchange = function (e) {\n // Triggered when the database is modified (e.g. adding an objectStore) or\n // deleted (even when initiated by other sessions in different tabs).\n // Closing the connection here prevents those operations from being blocked.\n // If the database is accessed again later by this instance, the connection\n // will be reopened or the database recreated as needed.\n e.target.close();\n };\n resolve(db);\n _advanceReadiness(dbInfo);\n };\n });\n}\n\nfunction _getOriginalConnection(dbInfo) {\n return _getConnection(dbInfo, false);\n}\n\nfunction _getUpgradedConnection(dbInfo) {\n return _getConnection(dbInfo, true);\n}\n\nfunction _isUpgradeNeeded(dbInfo, defaultVersion) {\n if (!dbInfo.db) {\n return true;\n }\n\n var isNewStore = !dbInfo.db.objectStoreNames.contains(dbInfo.storeName);\n var isDowngrade = dbInfo.version < dbInfo.db.version;\n var isUpgrade = dbInfo.version > dbInfo.db.version;\n\n if (isDowngrade) {\n // If the version is not the default one\n // then warn for impossible downgrade.\n if (dbInfo.version !== defaultVersion) {\n console.warn('The database \"' + dbInfo.name + '\"' + \" can't be downgraded from version \" + dbInfo.db.version + ' to version ' + dbInfo.version + '.');\n }\n // Align the versions to prevent errors.\n dbInfo.version = dbInfo.db.version;\n }\n\n if (isUpgrade || isNewStore) {\n // If the store is new then increment the version (if needed).\n // This will trigger an \"upgradeneeded\" event which is required\n // for creating a store.\n if (isNewStore) {\n var incVersion = dbInfo.db.version + 1;\n if (incVersion > dbInfo.version) {\n dbInfo.version = incVersion;\n }\n }\n\n return true;\n }\n\n return false;\n}\n\n// encode a blob for indexeddb engines that don't support blobs\nfunction _encodeBlob(blob) {\n return new Promise$1(function (resolve, reject) {\n var reader = new FileReader();\n reader.onerror = reject;\n reader.onloadend = function (e) {\n var base64 = btoa(e.target.result || '');\n resolve({\n __local_forage_encoded_blob: true,\n data: base64,\n type: blob.type\n });\n };\n reader.readAsBinaryString(blob);\n });\n}\n\n// decode an encoded blob\nfunction _decodeBlob(encodedBlob) {\n var arrayBuff = _binStringToArrayBuffer(atob(encodedBlob.data));\n return createBlob([arrayBuff], { type: encodedBlob.type });\n}\n\n// is this one of our fancy encoded blobs?\nfunction _isEncodedBlob(value) {\n return value && value.__local_forage_encoded_blob;\n}\n\n// Specialize the default `ready()` function by making it dependent\n// on the current database operations. Thus, the driver will be actually\n// ready when it's been initialized (default) *and* there are no pending\n// operations on the database (initiated by some other instances).\nfunction _fullyReady(callback) {\n var self = this;\n\n var promise = self._initReady().then(function () {\n var dbContext = dbContexts[self._dbInfo.name];\n\n if (dbContext && dbContext.dbReady) {\n return dbContext.dbReady;\n }\n });\n\n executeTwoCallbacks(promise, callback, callback);\n return promise;\n}\n\n// Try to establish a new db connection to replace the\n// current one which is broken (i.e. experiencing\n// InvalidStateError while creating a transaction).\nfunction _tryReconnect(dbInfo) {\n _deferReadiness(dbInfo);\n\n var dbContext = dbContexts[dbInfo.name];\n var forages = dbContext.forages;\n\n for (var i = 0; i < forages.length; i++) {\n var forage = forages[i];\n if (forage._dbInfo.db) {\n forage._dbInfo.db.close();\n forage._dbInfo.db = null;\n }\n }\n dbInfo.db = null;\n\n return _getOriginalConnection(dbInfo).then(function (db) {\n dbInfo.db = db;\n if (_isUpgradeNeeded(dbInfo)) {\n // Reopen the database for upgrading.\n return _getUpgradedConnection(dbInfo);\n }\n return db;\n }).then(function (db) {\n // store the latest db reference\n // in case the db was upgraded\n dbInfo.db = dbContext.db = db;\n for (var i = 0; i < forages.length; i++) {\n forages[i]._dbInfo.db = db;\n }\n })[\"catch\"](function (err) {\n _rejectReadiness(dbInfo, err);\n throw err;\n });\n}\n\n// FF doesn't like Promises (micro-tasks) and IDDB store operations,\n// so we have to do it with callbacks\nfunction createTransaction(dbInfo, mode, callback, retries) {\n if (retries === undefined) {\n retries = 1;\n }\n\n try {\n var tx = dbInfo.db.transaction(dbInfo.storeName, mode);\n callback(null, tx);\n } catch (err) {\n if (retries > 0 && (!dbInfo.db || err.name === 'InvalidStateError' || err.name === 'NotFoundError')) {\n return Promise$1.resolve().then(function () {\n if (!dbInfo.db || err.name === 'NotFoundError' && !dbInfo.db.objectStoreNames.contains(dbInfo.storeName) && dbInfo.version <= dbInfo.db.version) {\n // increase the db version, to create the new ObjectStore\n if (dbInfo.db) {\n dbInfo.version = dbInfo.db.version + 1;\n }\n // Reopen the database for upgrading.\n return _getUpgradedConnection(dbInfo);\n }\n }).then(function () {\n return _tryReconnect(dbInfo).then(function () {\n createTransaction(dbInfo, mode, callback, retries - 1);\n });\n })[\"catch\"](callback);\n }\n\n callback(err);\n }\n}\n\nfunction createDbContext() {\n return {\n // Running localForages sharing a database.\n forages: [],\n // Shared database.\n db: null,\n // Database readiness (promise).\n dbReady: null,\n // Deferred operations on the database.\n deferredOperations: []\n };\n}\n\n// Open the IndexedDB database (automatically creates one if one didn't\n// previously exist), using any options set in the config.\nfunction _initStorage(options) {\n var self = this;\n var dbInfo = {\n db: null\n };\n\n if (options) {\n for (var i in options) {\n dbInfo[i] = options[i];\n }\n }\n\n // Get the current context of the database;\n var dbContext = dbContexts[dbInfo.name];\n\n // ...or create a new context.\n if (!dbContext) {\n dbContext = createDbContext();\n // Register the new context in the global container.\n dbContexts[dbInfo.name] = dbContext;\n }\n\n // Register itself as a running localForage in the current context.\n dbContext.forages.push(self);\n\n // Replace the default `ready()` function with the specialized one.\n if (!self._initReady) {\n self._initReady = self.ready;\n self.ready = _fullyReady;\n }\n\n // Create an array of initialization states of the related localForages.\n var initPromises = [];\n\n function ignoreErrors() {\n // Don't handle errors here,\n // just makes sure related localForages aren't pending.\n return Promise$1.resolve();\n }\n\n for (var j = 0; j < dbContext.forages.length; j++) {\n var forage = dbContext.forages[j];\n if (forage !== self) {\n // Don't wait for itself...\n initPromises.push(forage._initReady()[\"catch\"](ignoreErrors));\n }\n }\n\n // Take a snapshot of the related localForages.\n var forages = dbContext.forages.slice(0);\n\n // Initialize the connection process only when\n // all the related localForages aren't pending.\n return Promise$1.all(initPromises).then(function () {\n dbInfo.db = dbContext.db;\n // Get the connection or open a new one without upgrade.\n return _getOriginalConnection(dbInfo);\n }).then(function (db) {\n dbInfo.db = db;\n if (_isUpgradeNeeded(dbInfo, self._defaultConfig.version)) {\n // Reopen the database for upgrading.\n return _getUpgradedConnection(dbInfo);\n }\n return db;\n }).then(function (db) {\n dbInfo.db = dbContext.db = db;\n self._dbInfo = dbInfo;\n // Share the final connection amongst related localForages.\n for (var k = 0; k < forages.length; k++) {\n var forage = forages[k];\n if (forage !== self) {\n // Self is already up-to-date.\n forage._dbInfo.db = dbInfo.db;\n forage._dbInfo.version = dbInfo.version;\n }\n }\n });\n}\n\nfunction getItem(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.get(key);\n\n req.onsuccess = function () {\n var value = req.result;\n if (value === undefined) {\n value = null;\n }\n if (_isEncodedBlob(value)) {\n value = _decodeBlob(value);\n }\n resolve(value);\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Iterate over all items stored in database.\nfunction iterate(iterator, callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.openCursor();\n var iterationNumber = 1;\n\n req.onsuccess = function () {\n var cursor = req.result;\n\n if (cursor) {\n var value = cursor.value;\n if (_isEncodedBlob(value)) {\n value = _decodeBlob(value);\n }\n var result = iterator(value, cursor.key, iterationNumber++);\n\n // when the iterator callback returns any\n // (non-`undefined`) value, then we stop\n // the iteration immediately\n if (result !== void 0) {\n resolve(result);\n } else {\n cursor[\"continue\"]();\n }\n } else {\n resolve();\n }\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n\n return promise;\n}\n\nfunction setItem(key, value, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n var dbInfo;\n self.ready().then(function () {\n dbInfo = self._dbInfo;\n if (toString.call(value) === '[object Blob]') {\n return _checkBlobSupport(dbInfo.db).then(function (blobSupport) {\n if (blobSupport) {\n return value;\n }\n return _encodeBlob(value);\n });\n }\n return value;\n }).then(function (value) {\n createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n\n // The reason we don't _save_ null is because IE 10 does\n // not support saving the `null` type in IndexedDB. How\n // ironic, given the bug below!\n // See: https://github.com/mozilla/localForage/issues/161\n if (value === null) {\n value = undefined;\n }\n\n var req = store.put(value, key);\n\n transaction.oncomplete = function () {\n // Cast to undefined so the value passed to\n // callback/promise is the same as what one would get out\n // of `getItem()` later. This leads to some weirdness\n // (setItem('foo', undefined) will return `null`), but\n // it's not my fault localStorage is our baseline and that\n // it's weird.\n if (value === undefined) {\n value = null;\n }\n\n resolve(value);\n };\n transaction.onabort = transaction.onerror = function () {\n var err = req.error ? req.error : req.transaction.error;\n reject(err);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction removeItem(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n // We use a Grunt task to make this safe for IE and some\n // versions of Android (including those used by Cordova).\n // Normally IE won't like `.delete()` and will insist on\n // using `['delete']()`, but we have a build step that\n // fixes this for us now.\n var req = store[\"delete\"](key);\n transaction.oncomplete = function () {\n resolve();\n };\n\n transaction.onerror = function () {\n reject(req.error);\n };\n\n // The request will be also be aborted if we've exceeded our storage\n // space.\n transaction.onabort = function () {\n var err = req.error ? req.error : req.transaction.error;\n reject(err);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction clear(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_WRITE, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.clear();\n\n transaction.oncomplete = function () {\n resolve();\n };\n\n transaction.onabort = transaction.onerror = function () {\n var err = req.error ? req.error : req.transaction.error;\n reject(err);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction length(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.count();\n\n req.onsuccess = function () {\n resolve(req.result);\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction key(n, callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n if (n < 0) {\n resolve(null);\n\n return;\n }\n\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var advanced = false;\n var req = store.openKeyCursor();\n\n req.onsuccess = function () {\n var cursor = req.result;\n if (!cursor) {\n // this means there weren't enough keys\n resolve(null);\n\n return;\n }\n\n if (n === 0) {\n // We have the first key, return it if that's what they\n // wanted.\n resolve(cursor.key);\n } else {\n if (!advanced) {\n // Otherwise, ask the cursor to skip ahead n\n // records.\n advanced = true;\n cursor.advance(n);\n } else {\n // When we get here, we've got the nth key.\n resolve(cursor.key);\n }\n }\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction keys(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n createTransaction(self._dbInfo, READ_ONLY, function (err, transaction) {\n if (err) {\n return reject(err);\n }\n\n try {\n var store = transaction.objectStore(self._dbInfo.storeName);\n var req = store.openKeyCursor();\n var keys = [];\n\n req.onsuccess = function () {\n var cursor = req.result;\n\n if (!cursor) {\n resolve(keys);\n return;\n }\n\n keys.push(cursor.key);\n cursor[\"continue\"]();\n };\n\n req.onerror = function () {\n reject(req.error);\n };\n } catch (e) {\n reject(e);\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction dropInstance(options, callback) {\n callback = getCallback.apply(this, arguments);\n\n var currentConfig = this.config();\n options = typeof options !== 'function' && options || {};\n if (!options.name) {\n options.name = options.name || currentConfig.name;\n options.storeName = options.storeName || currentConfig.storeName;\n }\n\n var self = this;\n var promise;\n if (!options.name) {\n promise = Promise$1.reject('Invalid arguments');\n } else {\n var isCurrentDb = options.name === currentConfig.name && self._dbInfo.db;\n\n var dbPromise = isCurrentDb ? Promise$1.resolve(self._dbInfo.db) : _getOriginalConnection(options).then(function (db) {\n var dbContext = dbContexts[options.name];\n var forages = dbContext.forages;\n dbContext.db = db;\n for (var i = 0; i < forages.length; i++) {\n forages[i]._dbInfo.db = db;\n }\n return db;\n });\n\n if (!options.storeName) {\n promise = dbPromise.then(function (db) {\n _deferReadiness(options);\n\n var dbContext = dbContexts[options.name];\n var forages = dbContext.forages;\n\n db.close();\n for (var i = 0; i < forages.length; i++) {\n var forage = forages[i];\n forage._dbInfo.db = null;\n }\n\n var dropDBPromise = new Promise$1(function (resolve, reject) {\n var req = idb.deleteDatabase(options.name);\n\n req.onerror = function () {\n var db = req.result;\n if (db) {\n db.close();\n }\n reject(req.error);\n };\n\n req.onblocked = function () {\n // Closing all open connections in onversionchange handler should prevent this situation, but if\n // we do get here, it just means the request remains pending - eventually it will succeed or error\n console.warn('dropInstance blocked for database \"' + options.name + '\" until all open connections are closed');\n };\n\n req.onsuccess = function () {\n var db = req.result;\n if (db) {\n db.close();\n }\n resolve(db);\n };\n });\n\n return dropDBPromise.then(function (db) {\n dbContext.db = db;\n for (var i = 0; i < forages.length; i++) {\n var _forage = forages[i];\n _advanceReadiness(_forage._dbInfo);\n }\n })[\"catch\"](function (err) {\n (_rejectReadiness(options, err) || Promise$1.resolve())[\"catch\"](function () {});\n throw err;\n });\n });\n } else {\n promise = dbPromise.then(function (db) {\n if (!db.objectStoreNames.contains(options.storeName)) {\n return;\n }\n\n var newVersion = db.version + 1;\n\n _deferReadiness(options);\n\n var dbContext = dbContexts[options.name];\n var forages = dbContext.forages;\n\n db.close();\n for (var i = 0; i < forages.length; i++) {\n var forage = forages[i];\n forage._dbInfo.db = null;\n forage._dbInfo.version = newVersion;\n }\n\n var dropObjectPromise = new Promise$1(function (resolve, reject) {\n var req = idb.open(options.name, newVersion);\n\n req.onerror = function (err) {\n var db = req.result;\n db.close();\n reject(err);\n };\n\n req.onupgradeneeded = function () {\n var db = req.result;\n db.deleteObjectStore(options.storeName);\n };\n\n req.onsuccess = function () {\n var db = req.result;\n db.close();\n resolve(db);\n };\n });\n\n return dropObjectPromise.then(function (db) {\n dbContext.db = db;\n for (var j = 0; j < forages.length; j++) {\n var _forage2 = forages[j];\n _forage2._dbInfo.db = db;\n _advanceReadiness(_forage2._dbInfo);\n }\n })[\"catch\"](function (err) {\n (_rejectReadiness(options, err) || Promise$1.resolve())[\"catch\"](function () {});\n throw err;\n });\n });\n }\n }\n\n executeCallback(promise, callback);\n return promise;\n}\n\nvar asyncStorage = {\n _driver: 'asyncStorage',\n _initStorage: _initStorage,\n _support: isIndexedDBValid(),\n iterate: iterate,\n getItem: getItem,\n setItem: setItem,\n removeItem: removeItem,\n clear: clear,\n length: length,\n key: key,\n keys: keys,\n dropInstance: dropInstance\n};\n\nfunction isWebSQLValid() {\n return typeof openDatabase === 'function';\n}\n\n// Sadly, the best way to save binary data in WebSQL/localStorage is serializing\n// it to Base64, so this is how we store it to prevent very strange errors with less\n// verbose ways of binary <-> string data storage.\nvar BASE_CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\nvar BLOB_TYPE_PREFIX = '~~local_forage_type~';\nvar BLOB_TYPE_PREFIX_REGEX = /^~~local_forage_type~([^~]+)~/;\n\nvar SERIALIZED_MARKER = '__lfsc__:';\nvar SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER.length;\n\n// OMG the serializations!\nvar TYPE_ARRAYBUFFER = 'arbf';\nvar TYPE_BLOB = 'blob';\nvar TYPE_INT8ARRAY = 'si08';\nvar TYPE_UINT8ARRAY = 'ui08';\nvar TYPE_UINT8CLAMPEDARRAY = 'uic8';\nvar TYPE_INT16ARRAY = 'si16';\nvar TYPE_INT32ARRAY = 'si32';\nvar TYPE_UINT16ARRAY = 'ur16';\nvar TYPE_UINT32ARRAY = 'ui32';\nvar TYPE_FLOAT32ARRAY = 'fl32';\nvar TYPE_FLOAT64ARRAY = 'fl64';\nvar TYPE_SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER_LENGTH + TYPE_ARRAYBUFFER.length;\n\nvar toString$1 = Object.prototype.toString;\n\nfunction stringToBuffer(serializedString) {\n // Fill the string into a ArrayBuffer.\n var bufferLength = serializedString.length * 0.75;\n var len = serializedString.length;\n var i;\n var p = 0;\n var encoded1, encoded2, encoded3, encoded4;\n\n if (serializedString[serializedString.length - 1] === '=') {\n bufferLength--;\n if (serializedString[serializedString.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n var buffer = new ArrayBuffer(bufferLength);\n var bytes = new Uint8Array(buffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = BASE_CHARS.indexOf(serializedString[i]);\n encoded2 = BASE_CHARS.indexOf(serializedString[i + 1]);\n encoded3 = BASE_CHARS.indexOf(serializedString[i + 2]);\n encoded4 = BASE_CHARS.indexOf(serializedString[i + 3]);\n\n /*jslint bitwise: true */\n bytes[p++] = encoded1 << 2 | encoded2 >> 4;\n bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;\n bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;\n }\n return buffer;\n}\n\n// Converts a buffer to a string to store, serialized, in the backend\n// storage library.\nfunction bufferToString(buffer) {\n // base64-arraybuffer\n var bytes = new Uint8Array(buffer);\n var base64String = '';\n var i;\n\n for (i = 0; i < bytes.length; i += 3) {\n /*jslint bitwise: true */\n base64String += BASE_CHARS[bytes[i] >> 2];\n base64String += BASE_CHARS[(bytes[i] & 3) << 4 | bytes[i + 1] >> 4];\n base64String += BASE_CHARS[(bytes[i + 1] & 15) << 2 | bytes[i + 2] >> 6];\n base64String += BASE_CHARS[bytes[i + 2] & 63];\n }\n\n if (bytes.length % 3 === 2) {\n base64String = base64String.substring(0, base64String.length - 1) + '=';\n } else if (bytes.length % 3 === 1) {\n base64String = base64String.substring(0, base64String.length - 2) + '==';\n }\n\n return 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 store binary data with localStorage.\nfunction serialize(value, callback) {\n var valueType = '';\n if (value) {\n valueType = toString$1.call(value);\n }\n\n // Cannot use `value instanceof ArrayBuffer` or such here, as these\n // checks fail when running the tests using casper.js...\n //\n // TODO: See why those tests fail and use a better solution.\n if (value && (valueType === '[object ArrayBuffer]' || value.buffer && toString$1.call(value.buffer) === '[object ArrayBuffer]')) {\n // Convert binary arrays to a string and prefix the string with\n // a special marker.\n var buffer;\n var marker = SERIALIZED_MARKER;\n\n if (value instanceof ArrayBuffer) {\n buffer = value;\n marker += TYPE_ARRAYBUFFER;\n } else {\n buffer = value.buffer;\n\n if (valueType === '[object Int8Array]') {\n marker += TYPE_INT8ARRAY;\n } else if (valueType === '[object Uint8Array]') {\n marker += TYPE_UINT8ARRAY;\n } else if (valueType === '[object Uint8ClampedArray]') {\n marker += TYPE_UINT8CLAMPEDARRAY;\n } else if (valueType === '[object Int16Array]') {\n marker += TYPE_INT16ARRAY;\n } else if (valueType === '[object Uint16Array]') {\n marker += TYPE_UINT16ARRAY;\n } else if (valueType === '[object Int32Array]') {\n marker += TYPE_INT32ARRAY;\n } else if (valueType === '[object Uint32Array]') {\n marker += TYPE_UINT32ARRAY;\n } else if (valueType === '[object Float32Array]') {\n marker += TYPE_FLOAT32ARRAY;\n } else if (valueType === '[object Float64Array]') {\n marker += TYPE_FLOAT64ARRAY;\n } else {\n callback(new Error('Failed to get type for BinaryArray'));\n }\n }\n\n callback(marker + bufferToString(buffer));\n } else if (valueType === '[object Blob]') {\n // Conver the blob to a binaryArray and then to a string.\n var fileReader = new FileReader();\n\n fileReader.onload = function () {\n // Backwards-compatible prefix for the blob type.\n var str = BLOB_TYPE_PREFIX + value.type + '~' + bufferToString(this.result);\n\n callback(SERIALIZED_MARKER + TYPE_BLOB + str);\n };\n\n fileReader.readAsArrayBuffer(value);\n } else {\n try {\n callback(JSON.stringify(value));\n } catch (e) {\n console.error(\"Couldn't convert value into a JSON string: \", value);\n\n callback(null, e);\n }\n }\n}\n\n// Deserialize data we've inserted into a value column/field. We place\n// special markers into our strings to mark them as encoded; this isn't\n// as nice as a meta field, but it's the only sane thing we can do whilst\n// keeping 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.\nfunction deserialize(value) {\n // If we haven't marked this string as being specially serialized (i.e.\n // something other than serialized JSON), we can just return it and be\n // done with it.\n if (value.substring(0, SERIALIZED_MARKER_LENGTH) !== SERIALIZED_MARKER) {\n return JSON.parse(value);\n }\n\n // The following code deals with deserializing some kind of Blob or\n // TypedArray. First we separate out the type of data we're dealing\n // with from the data itself.\n var serializedString = value.substring(TYPE_SERIALIZED_MARKER_LENGTH);\n var type = value.substring(SERIALIZED_MARKER_LENGTH, TYPE_SERIALIZED_MARKER_LENGTH);\n\n var blobType;\n // Backwards-compatible blob type serialization strategy.\n // DBs created with older versions of localForage will simply not have the blob type.\n if (type === TYPE_BLOB && BLOB_TYPE_PREFIX_REGEX.test(serializedString)) {\n var matcher = serializedString.match(BLOB_TYPE_PREFIX_REGEX);\n blobType = matcher[1];\n serializedString = serializedString.substring(matcher[0].length);\n }\n var buffer = stringToBuffer(serializedString);\n\n // Return the right type based on the code/type set during\n // serialization.\n switch (type) {\n case TYPE_ARRAYBUFFER:\n return buffer;\n case TYPE_BLOB:\n return createBlob([buffer], { type: blobType });\n case TYPE_INT8ARRAY:\n return new Int8Array(buffer);\n case TYPE_UINT8ARRAY:\n return new Uint8Array(buffer);\n case TYPE_UINT8CLAMPEDARRAY:\n return new Uint8ClampedArray(buffer);\n case TYPE_INT16ARRAY:\n return new Int16Array(buffer);\n case TYPE_UINT16ARRAY:\n return new Uint16Array(buffer);\n case TYPE_INT32ARRAY:\n return new Int32Array(buffer);\n case TYPE_UINT32ARRAY:\n return new Uint32Array(buffer);\n case TYPE_FLOAT32ARRAY:\n return new Float32Array(buffer);\n case TYPE_FLOAT64ARRAY:\n return new Float64Array(buffer);\n default:\n throw new Error('Unkown type: ' + type);\n }\n}\n\nvar localforageSerializer = {\n serialize: serialize,\n deserialize: deserialize,\n stringToBuffer: stringToBuffer,\n bufferToString: bufferToString\n};\n\n/*\n * Includes code from:\n *\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n */\n\nfunction createDbTable(t, dbInfo, callback, errorCallback) {\n t.executeSql('CREATE TABLE IF NOT EXISTS ' + dbInfo.storeName + ' ' + '(id INTEGER PRIMARY KEY, key unique, value)', [], callback, errorCallback);\n}\n\n// Open the WebSQL database (automatically creates one if one didn't\n// previously exist), using any options set in the config.\nfunction _initStorage$1(options) {\n var self = this;\n var dbInfo = {\n db: null\n };\n\n if (options) {\n for (var i in options) {\n dbInfo[i] = typeof options[i] !== 'string' ? options[i].toString() : options[i];\n }\n }\n\n var dbInfoPromise = new Promise$1(function (resolve, reject) {\n // Open the database; the openDatabase API will automatically\n // create it for us if it doesn't exist.\n try {\n dbInfo.db = openDatabase(dbInfo.name, String(dbInfo.version), dbInfo.description, dbInfo.size);\n } catch (e) {\n return reject(e);\n }\n\n // Create our key/value table if it doesn't exist.\n dbInfo.db.transaction(function (t) {\n createDbTable(t, dbInfo, function () {\n self._dbInfo = dbInfo;\n resolve();\n }, function (t, error) {\n reject(error);\n });\n }, reject);\n });\n\n dbInfo.serializer = localforageSerializer;\n return dbInfoPromise;\n}\n\nfunction tryExecuteSql(t, dbInfo, sqlStatement, args, callback, errorCallback) {\n t.executeSql(sqlStatement, args, callback, function (t, error) {\n if (error.code === error.SYNTAX_ERR) {\n t.executeSql('SELECT name FROM sqlite_master ' + \"WHERE type='table' AND name = ?\", [dbInfo.storeName], function (t, results) {\n if (!results.rows.length) {\n // if the table is missing (was deleted)\n // re-create it table and retry\n createDbTable(t, dbInfo, function () {\n t.executeSql(sqlStatement, args, callback, errorCallback);\n }, errorCallback);\n } else {\n errorCallback(t, error);\n }\n }, errorCallback);\n } else {\n errorCallback(t, error);\n }\n }, errorCallback);\n}\n\nfunction getItem$1(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'SELECT * FROM ' + dbInfo.storeName + ' WHERE key = ? LIMIT 1', [key], function (t, results) {\n var result = results.rows.length ? results.rows.item(0).value : null;\n\n // Check to see if this is serialized content we need to\n // unpack.\n if (result) {\n result = dbInfo.serializer.deserialize(result);\n }\n\n resolve(result);\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction iterate$1(iterator, callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'SELECT * FROM ' + dbInfo.storeName, [], function (t, results) {\n var rows = results.rows;\n var length = rows.length;\n\n for (var i = 0; i < length; i++) {\n var item = rows.item(i);\n var result = item.value;\n\n // Check to see if this is serialized content\n // we need to unpack.\n if (result) {\n result = dbInfo.serializer.deserialize(result);\n }\n\n result = iterator(result, item.key, i + 1);\n\n // void(0) prevents problems with redefinition\n // of `undefined`.\n if (result !== void 0) {\n resolve(result);\n return;\n }\n }\n\n resolve();\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction _setItem(key, value, callback, retriesLeft) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n // The localStorage API doesn't return undefined values in an\n // \"expected\" way, so undefined is always cast to null in all\n // drivers. See: https://github.com/mozilla/localForage/pull/42\n if (value === undefined) {\n value = null;\n }\n\n // Save the original value to pass to the callback.\n var originalValue = value;\n\n var dbInfo = self._dbInfo;\n dbInfo.serializer.serialize(value, function (value, error) {\n if (error) {\n reject(error);\n } else {\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'INSERT OR REPLACE INTO ' + dbInfo.storeName + ' ' + '(key, value) VALUES (?, ?)', [key, value], function () {\n resolve(originalValue);\n }, function (t, error) {\n reject(error);\n });\n }, function (sqlError) {\n // The transaction failed; check\n // to see if it's a quota error.\n if (sqlError.code === sqlError.QUOTA_ERR) {\n // We reject the callback outright for now, but\n // it's worth trying to re-run the transaction.\n // Even if the user accepts the prompt to use\n // more storage on Safari, this error will\n // be called.\n //\n // Try to re-run the transaction.\n if (retriesLeft > 0) {\n resolve(_setItem.apply(self, [key, originalValue, callback, retriesLeft - 1]));\n return;\n }\n reject(sqlError);\n }\n });\n }\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction setItem$1(key, value, callback) {\n return _setItem.apply(this, [key, value, callback, 1]);\n}\n\nfunction removeItem$1(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'DELETE FROM ' + dbInfo.storeName + ' WHERE key = ?', [key], function () {\n resolve();\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Deletes every item in the table.\n// TODO: Find out if this resets the AUTO_INCREMENT number.\nfunction clear$1(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'DELETE FROM ' + dbInfo.storeName, [], function () {\n resolve();\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Does a simple `COUNT(key)` to get the number of items stored in\n// localForage.\nfunction length$1(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n // Ahhh, SQL makes this one soooooo easy.\n tryExecuteSql(t, dbInfo, 'SELECT COUNT(key) as c FROM ' + dbInfo.storeName, [], function (t, results) {\n var result = results.rows.item(0).c;\n resolve(result);\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Return the key located at key index X; essentially gets the key from a\n// `WHERE id = ?`. This is the most efficient way I can think to implement\n// this rarely-used (in my experience) part of the API, but it can seem\n// inconsistent, because we do `INSERT OR REPLACE INTO` on `setItem()`, so\n// the ID of each key will change every time it's updated. Perhaps a stored\n// procedure for the `setItem()` SQL would solve this problem?\n// TODO: Don't change ID on `setItem()`.\nfunction key$1(n, callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'SELECT key FROM ' + dbInfo.storeName + ' WHERE id = ? LIMIT 1', [n + 1], function (t, results) {\n var result = results.rows.length ? results.rows.item(0).key : null;\n resolve(result);\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction keys$1(callback) {\n var self = this;\n\n var promise = new Promise$1(function (resolve, reject) {\n self.ready().then(function () {\n var dbInfo = self._dbInfo;\n dbInfo.db.transaction(function (t) {\n tryExecuteSql(t, dbInfo, 'SELECT key FROM ' + dbInfo.storeName, [], function (t, results) {\n var keys = [];\n\n for (var i = 0; i < results.rows.length; i++) {\n keys.push(results.rows.item(i).key);\n }\n\n resolve(keys);\n }, function (t, error) {\n reject(error);\n });\n });\n })[\"catch\"](reject);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// https://www.w3.org/TR/webdatabase/#databases\n// > There is no way to enumerate or delete the databases available for an origin from this API.\nfunction getAllStoreNames(db) {\n return new Promise$1(function (resolve, reject) {\n db.transaction(function (t) {\n t.executeSql('SELECT name FROM sqlite_master ' + \"WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'\", [], function (t, results) {\n var storeNames = [];\n\n for (var i = 0; i < results.rows.length; i++) {\n storeNames.push(results.rows.item(i).name);\n }\n\n resolve({\n db: db,\n storeNames: storeNames\n });\n }, function (t, error) {\n reject(error);\n });\n }, function (sqlError) {\n reject(sqlError);\n });\n });\n}\n\nfunction dropInstance$1(options, callback) {\n callback = getCallback.apply(this, arguments);\n\n var currentConfig = this.config();\n options = typeof options !== 'function' && options || {};\n if (!options.name) {\n options.name = options.name || currentConfig.name;\n options.storeName = options.storeName || currentConfig.storeName;\n }\n\n var self = this;\n var promise;\n if (!options.name) {\n promise = Promise$1.reject('Invalid arguments');\n } else {\n promise = new Promise$1(function (resolve) {\n var db;\n if (options.name === currentConfig.name) {\n // use the db reference of the current instance\n db = self._dbInfo.db;\n } else {\n db = openDatabase(options.name, '', '', 0);\n }\n\n if (!options.storeName) {\n // drop all database tables\n resolve(getAllStoreNames(db));\n } else {\n resolve({\n db: db,\n storeNames: [options.storeName]\n });\n }\n }).then(function (operationInfo) {\n return new Promise$1(function (resolve, reject) {\n operationInfo.db.transaction(function (t) {\n function dropTable(storeName) {\n return new Promise$1(function (resolve, reject) {\n t.executeSql('DROP TABLE IF EXISTS ' + storeName, [], function () {\n resolve();\n }, function (t, error) {\n reject(error);\n });\n });\n }\n\n var operations = [];\n for (var i = 0, len = operationInfo.storeNames.length; i < len; i++) {\n operations.push(dropTable(operationInfo.storeNames[i]));\n }\n\n Promise$1.all(operations).then(function () {\n resolve();\n })[\"catch\"](function (e) {\n reject(e);\n });\n }, function (sqlError) {\n reject(sqlError);\n });\n });\n });\n }\n\n executeCallback(promise, callback);\n return promise;\n}\n\nvar webSQLStorage = {\n _driver: 'webSQLStorage',\n _initStorage: _initStorage$1,\n _support: isWebSQLValid(),\n iterate: iterate$1,\n getItem: getItem$1,\n setItem: setItem$1,\n removeItem: removeItem$1,\n clear: clear$1,\n length: length$1,\n key: key$1,\n keys: keys$1,\n dropInstance: dropInstance$1\n};\n\nfunction isLocalStorageValid() {\n try {\n return typeof localStorage !== 'undefined' && 'setItem' in localStorage &&\n // in IE8 typeof localStorage.setItem === 'object'\n !!localStorage.setItem;\n } catch (e) {\n return false;\n }\n}\n\nfunction _getKeyPrefix(options, defaultConfig) {\n var keyPrefix = options.name + '/';\n\n if (options.storeName !== defaultConfig.storeName) {\n keyPrefix += options.storeName + '/';\n }\n return keyPrefix;\n}\n\n// Check if localStorage throws when saving an item\nfunction checkIfLocalStorageThrows() {\n var localStorageTestKey = '_localforage_support_test';\n\n try {\n localStorage.setItem(localStorageTestKey, true);\n localStorage.removeItem(localStorageTestKey);\n\n return false;\n } catch (e) {\n return true;\n }\n}\n\n// Check if localStorage is usable and allows to save an item\n// This method checks if localStorage is usable in Safari Private Browsing\n// mode, or in any other case where the available quota for localStorage\n// is 0 and there wasn't any saved items yet.\nfunction _isLocalStorageUsable() {\n return !checkIfLocalStorageThrows() || localStorage.length > 0;\n}\n\n// Config the localStorage backend, using options set in the config.\nfunction _initStorage$2(options) {\n var self = this;\n var dbInfo = {};\n if (options) {\n for (var i in options) {\n dbInfo[i] = options[i];\n }\n }\n\n dbInfo.keyPrefix = _getKeyPrefix(options, self._defaultConfig);\n\n if (!_isLocalStorageUsable()) {\n return Promise$1.reject();\n }\n\n self._dbInfo = dbInfo;\n dbInfo.serializer = localforageSerializer;\n\n return Promise$1.resolve();\n}\n\n// Remove all keys from the datastore, effectively destroying all data in\n// the app's key/value store!\nfunction clear$2(callback) {\n var self = this;\n var promise = self.ready().then(function () {\n var keyPrefix = self._dbInfo.keyPrefix;\n\n for (var i = localStorage.length - 1; i >= 0; i--) {\n var key = localStorage.key(i);\n\n if (key.indexOf(keyPrefix) === 0) {\n localStorage.removeItem(key);\n }\n }\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Retrieve an item from the store. Unlike the original async_storage\n// library in Gaia, we don't modify return values at all. If a key's value\n// is `undefined`, we pass that value to the callback function.\nfunction getItem$2(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n var result = localStorage.getItem(dbInfo.keyPrefix + key);\n\n // If a result was found, parse it from the serialized\n // string into a JS object. If result isn't truthy, the key\n // is likely undefined and we'll pass it straight to the\n // callback.\n if (result) {\n result = dbInfo.serializer.deserialize(result);\n }\n\n return result;\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Iterate over all items in the store.\nfunction iterate$2(iterator, callback) {\n var self = this;\n\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n var keyPrefix = dbInfo.keyPrefix;\n var keyPrefixLength = keyPrefix.length;\n var length = localStorage.length;\n\n // We use a dedicated iterator instead of the `i` variable below\n // so other keys we fetch in localStorage aren't counted in\n // the `iterationNumber` argument passed to the `iterate()`\n // callback.\n //\n // See: github.com/mozilla/localForage/pull/435#discussion_r38061530\n var iterationNumber = 1;\n\n for (var i = 0; i < length; i++) {\n var key = localStorage.key(i);\n if (key.indexOf(keyPrefix) !== 0) {\n continue;\n }\n var value = localStorage.getItem(key);\n\n // If a result was found, parse it from the serialized\n // string into a JS object. If result isn't truthy, the\n // key is likely undefined and we'll pass it straight\n // to the iterator.\n if (value) {\n value = dbInfo.serializer.deserialize(value);\n }\n\n value = iterator(value, key.substring(keyPrefixLength), iterationNumber++);\n\n if (value !== void 0) {\n return value;\n }\n }\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Same as localStorage's key() method, except takes a callback.\nfunction key$2(n, callback) {\n var self = this;\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n var result;\n try {\n result = localStorage.key(n);\n } catch (error) {\n result = null;\n }\n\n // Remove the prefix from the key, if a key is found.\n if (result) {\n result = result.substring(dbInfo.keyPrefix.length);\n }\n\n return result;\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction keys$2(callback) {\n var self = this;\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n var length = localStorage.length;\n var keys = [];\n\n for (var i = 0; i < length; i++) {\n var itemKey = localStorage.key(i);\n if (itemKey.indexOf(dbInfo.keyPrefix) === 0) {\n keys.push(itemKey.substring(dbInfo.keyPrefix.length));\n }\n }\n\n return keys;\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Supply the number of keys in the datastore to the callback function.\nfunction length$2(callback) {\n var self = this;\n var promise = self.keys().then(function (keys) {\n return keys.length;\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Remove an item from the store, nice and simple.\nfunction removeItem$2(key, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = self.ready().then(function () {\n var dbInfo = self._dbInfo;\n localStorage.removeItem(dbInfo.keyPrefix + key);\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\n// Set a key's value and run an optional callback once the value is set.\n// Unlike Gaia's implementation, the callback function is passed the value,\n// in case you want to operate on that value only after you're sure it\n// saved, or something like that.\nfunction setItem$2(key, value, callback) {\n var self = this;\n\n key = normalizeKey(key);\n\n var promise = self.ready().then(function () {\n // Convert undefined values to null.\n // https://github.com/mozilla/localForage/pull/42\n if (value === undefined) {\n value = null;\n }\n\n // Save the original value to pass to the callback.\n var originalValue = value;\n\n return new Promise$1(function (resolve, reject) {\n var dbInfo = self._dbInfo;\n dbInfo.serializer.serialize(value, function (value, error) {\n if (error) {\n reject(error);\n } else {\n try {\n localStorage.setItem(dbInfo.keyPrefix + key, value);\n resolve(originalValue);\n } catch (e) {\n // localStorage capacity exceeded.\n // TODO: Make this a specific error/event.\n if (e.name === 'QuotaExceededError' || e.name === 'NS_ERROR_DOM_QUOTA_REACHED') {\n reject(e);\n }\n reject(e);\n }\n }\n });\n });\n });\n\n executeCallback(promise, callback);\n return promise;\n}\n\nfunction dropInstance$2(options, callback) {\n callback = getCallback.apply(this, arguments);\n\n options = typeof options !== 'function' && options || {};\n if (!options.name) {\n var currentConfig = this.config();\n options.name = options.name || currentConfig.name;\n options.storeName = options.storeName || currentConfig.storeName;\n }\n\n var self = this;\n var promise;\n if (!options.name) {\n promise = Promise$1.reject('Invalid arguments');\n } else {\n promise = new Promise$1(function (resolve) {\n if (!options.storeName) {\n resolve(options.name + '/');\n } else {\n resolve(_getKeyPrefix(options, self._defaultConfig));\n }\n }).then(function (keyPrefix) {\n for (var i = localStorage.length - 1; i >= 0; i--) {\n var key = localStorage.key(i);\n\n if (key.indexOf(keyPrefix) === 0) {\n localStorage.removeItem(key);\n }\n }\n });\n }\n\n executeCallback(promise, callback);\n return promise;\n}\n\nvar localStorageWrapper = {\n _driver: 'localStorageWrapper',\n _initStorage: _initStorage$2,\n _support: isLocalStorageValid(),\n iterate: iterate$2,\n getItem: getItem$2,\n setItem: setItem$2,\n removeItem: removeItem$2,\n clear: clear$2,\n length: length$2,\n key: key$2,\n keys: keys$2,\n dropInstance: dropInstance$2\n};\n\nvar sameValue = function sameValue(x, y) {\n return x === y || typeof x === 'number' && typeof y === 'number' && isNaN(x) && isNaN(y);\n};\n\nvar includes = function includes(array, searchElement) {\n var len = array.length;\n var i = 0;\n while (i < len) {\n if (sameValue(array[i], searchElement)) {\n return true;\n }\n i++;\n }\n\n return false;\n};\n\nvar isArray = Array.isArray || function (arg) {\n return Object.prototype.toString.call(arg) === '[object Array]';\n};\n\n// Drivers are stored here when `defineDriver()` is called.\n// They are shared across all instances of localForage.\nvar DefinedDrivers = {};\n\nvar DriverSupport = {};\n\nvar DefaultDrivers = {\n INDEXEDDB: asyncStorage,\n WEBSQL: webSQLStorage,\n LOCALSTORAGE: localStorageWrapper\n};\n\nvar DefaultDriverOrder = [DefaultDrivers.INDEXEDDB._driver, DefaultDrivers.WEBSQL._driver, DefaultDrivers.LOCALSTORAGE._driver];\n\nvar OptionalDriverMethods = ['dropInstance'];\n\nvar LibraryMethods = ['clear', 'getItem', 'iterate', 'key', 'keys', 'length', 'removeItem', 'setItem'].concat(OptionalDriverMethods);\n\nvar DefaultConfig = {\n description: '',\n driver: DefaultDriverOrder.slice(),\n name: 'localforage',\n // Default DB size is _JUST UNDER_ 5MB, as it's the highest size\n // we can use without a prompt.\n size: 4980736,\n storeName: 'keyvaluepairs',\n version: 1.0\n};\n\nfunction callWhenReady(localForageInstance, libraryMethod) {\n localForageInstance[libraryMethod] = function () {\n var _args = arguments;\n return localForageInstance.ready().then(function () {\n return localForageInstance[libraryMethod].apply(localForageInstance, _args);\n });\n };\n}\n\nfunction extend() {\n for (var i = 1; i < arguments.length; i++) {\n var arg = arguments[i];\n\n if (arg) {\n for (var _key in arg) {\n if (arg.hasOwnProperty(_key)) {\n if (isArray(arg[_key])) {\n arguments[0][_key] = arg[_key].slice();\n } else {\n arguments[0][_key] = arg[_key];\n }\n }\n }\n }\n }\n\n return arguments[0];\n}\n\nvar LocalForage = function () {\n function LocalForage(options) {\n _classCallCheck(this, LocalForage);\n\n for (var driverTypeKey in DefaultDrivers) {\n if (DefaultDrivers.hasOwnProperty(driverTypeKey)) {\n var driver = DefaultDrivers[driverTypeKey];\n var driverName = driver._driver;\n this[driverTypeKey] = driverName;\n\n if (!DefinedDrivers[driverName]) {\n // we don't need to wait for the promise,\n // since the default drivers can be defined\n // in a blocking manner\n this.defineDriver(driver);\n }\n }\n }\n\n this._defaultConfig = extend({}, DefaultConfig);\n this._config = extend({}, this._defaultConfig, options);\n this._driverSet = null;\n this._initDriver = null;\n this._ready = false;\n this._dbInfo = null;\n\n this._wrapLibraryMethodsWithReady();\n this.setDriver(this._config.driver)[\"catch\"](function () {});\n }\n\n // Set any config values for localForage; can be called anytime before\n // the first API call (e.g. `getItem`, `setItem`).\n // We loop through options so we don't overwrite existing config\n // values.\n\n\n LocalForage.prototype.config = function config(options) {\n // If the options argument is an object, we use it to set values.\n // Otherwise, we return either a specified config value or all\n // config values.\n if ((typeof options === 'undefined' ? 'undefined' : _typeof(options)) === 'object') {\n // If localforage is ready and fully initialized, we can't set\n // any new configuration values. Instead, we return an error.\n if (this._ready) {\n return new Error(\"Can't call config() after localforage \" + 'has been used.');\n }\n\n for (var i in options) {\n if (i === 'storeName') {\n options[i] = options[i].replace(/\\W/g, '_');\n }\n\n if (i === 'version' && typeof options[i] !== 'number') {\n return new Error('Database version must be a number.');\n }\n\n this._config[i] = options[i];\n }\n\n // after all config options are set and\n // the driver option is used, try setting it\n if ('driver' in options && options.driver) {\n return this.setDriver(this._config.driver);\n }\n\n return true;\n } else if (typeof options === 'string') {\n return this._config[options];\n } else {\n return this._config;\n }\n };\n\n // Used to define a custom driver, shared across all instances of\n // localForage.\n\n\n LocalForage.prototype.defineDriver = function defineDriver(driverObject, callback, errorCallback) {\n var promise = new Promise$1(function (resolve, reject) {\n try {\n var driverName = driverObject._driver;\n var complianceError = new Error('Custom driver not compliant; see ' + 'https://mozilla.github.io/localForage/#definedriver');\n\n // A driver name should be defined and not overlap with the\n // library-defined, default drivers.\n if (!driverObject._driver) {\n reject(complianceError);\n return;\n }\n\n var driverMethods = LibraryMethods.concat('_initStorage');\n for (var i = 0, len = driverMethods.length; i < len; i++) {\n var driverMethodName = driverMethods[i];\n\n // when the property is there,\n // it should be a method even when optional\n var isRequired = !includes(OptionalDriverMethods, driverMethodName);\n if ((isRequired || driverObject[driverMethodName]) && typeof driverObject[driverMethodName] !== 'function') {\n reject(complianceError);\n return;\n }\n }\n\n var configureMissingMethods = function configureMissingMethods() {\n var methodNotImplementedFactory = function methodNotImplementedFactory(methodName) {\n return function () {\n var error = new Error('Method ' + methodName + ' is not implemented by the current driver');\n var promise = Promise$1.reject(error);\n executeCallback(promise, arguments[arguments.length - 1]);\n return promise;\n };\n };\n\n for (var _i = 0, _len = OptionalDriverMethods.length; _i < _len; _i++) {\n var optionalDriverMethod = OptionalDriverMethods[_i];\n if (!driverObject[optionalDriverMethod]) {\n driverObject[optionalDriverMethod] = methodNotImplementedFactory(optionalDriverMethod);\n }\n }\n };\n\n configureMissingMethods();\n\n var setDriverSupport = function setDriverSupport(support) {\n if (DefinedDrivers[driverName]) {\n console.info('Redefining LocalForage driver: ' + driverName);\n }\n DefinedDrivers[driverName] = driverObject;\n DriverSupport[driverName] = support;\n // don't use a then, so that we can define\n // drivers that have simple _support methods\n // in a blocking manner\n resolve();\n };\n\n if ('_support' in driverObject) {\n if (driverObject._support && typeof driverObject._support === 'function') {\n driverObject._support().then(setDriverSupport, reject);\n } else {\n setDriverSupport(!!driverObject._support);\n }\n } else {\n setDriverSupport(true);\n }\n } catch (e) {\n reject(e);\n }\n });\n\n executeTwoCallbacks(promise, callback, errorCallback);\n return promise;\n };\n\n LocalForage.prototype.driver = function driver() {\n return this._driver || null;\n };\n\n LocalForage.prototype.getDriver = function getDriver(driverName, callback, errorCallback) {\n var getDriverPromise = DefinedDrivers[driverName] ? Promise$1.resolve(DefinedDrivers[driverName]) : Promise$1.reject(new Error('Driver not found.'));\n\n executeTwoCallbacks(getDriverPromise, callback, errorCallback);\n return getDriverPromise;\n };\n\n LocalForage.prototype.getSerializer = function getSerializer(callback) {\n var serializerPromise = Promise$1.resolve(localforageSerializer);\n executeTwoCallbacks(serializerPromise, callback);\n return serializerPromise;\n };\n\n LocalForage.prototype.ready = function ready(callback) {\n var self = this;\n\n var promise = self._driverSet.then(function () {\n if (self._ready === null) {\n self._ready = self._initDriver();\n }\n\n return self._ready;\n });\n\n executeTwoCallbacks(promise, callback, callback);\n return promise;\n };\n\n LocalForage.prototype.setDriver = function setDriver(drivers, callback, errorCallback) {\n var self = this;\n\n if (!isArray(drivers)) {\n drivers = [drivers];\n }\n\n var supportedDrivers = this._getSupportedDrivers(drivers);\n\n function setDriverToConfig() {\n self._config.driver = self.driver();\n }\n\n function extendSelfWithDriver(driver) {\n self._extend(driver);\n setDriverToConfig();\n\n self._ready = self._initStorage(self._config);\n return self._ready;\n }\n\n function initDriver(supportedDrivers) {\n return function () {\n var currentDriverIndex = 0;\n\n function driverPromiseLoop() {\n while (currentDriverIndex < supportedDrivers.length) {\n var driverName = supportedDrivers[currentDriverIndex];\n currentDriverIndex++;\n\n self._dbInfo = null;\n self._ready = null;\n\n return self.getDriver(driverName).then(extendSelfWithDriver)[\"catch\"](driverPromiseLoop);\n }\n\n setDriverToConfig();\n var error = new Error('No available storage method found.');\n self._driverSet = Promise$1.reject(error);\n return self._driverSet;\n }\n\n return driverPromiseLoop();\n };\n }\n\n // There might be a driver initialization in progress\n // so wait for it to finish in order to avoid a possible\n // race condition to set _dbInfo\n var oldDriverSetDone = this._driverSet !== null ? this._driverSet[\"catch\"](function () {\n return Promise$1.resolve();\n }) : Promise$1.resolve();\n\n this._driverSet = oldDriverSetDone.then(function () {\n var driverName = supportedDrivers[0];\n self._dbInfo = null;\n self._ready = null;\n\n return self.getDriver(driverName).then(function (driver) {\n self._driver = driver._driver;\n setDriverToConfig();\n self._wrapLibraryMethodsWithReady();\n self._initDriver = initDriver(supportedDrivers);\n });\n })[\"catch\"](function () {\n setDriverToConfig();\n var error = new Error('No available storage method found.');\n self._driverSet = Promise$1.reject(error);\n return self._driverSet;\n });\n\n executeTwoCallbacks(this._driverSet, callback, errorCallback);\n return this._driverSet;\n };\n\n LocalForage.prototype.supports = function supports(driverName) {\n return !!DriverSupport[driverName];\n };\n\n LocalForage.prototype._extend = function _extend(libraryMethodsAndProperties) {\n extend(this, libraryMethodsAndProperties);\n };\n\n LocalForage.prototype._getSupportedDrivers = function _getSupportedDrivers(drivers) {\n var supportedDrivers = [];\n for (var i = 0, len = drivers.length; i < len; i++) {\n var driverName = drivers[i];\n if (this.supports(driverName)) {\n supportedDrivers.push(driverName);\n }\n }\n return supportedDrivers;\n };\n\n LocalForage.prototype._wrapLibraryMethodsWithReady = function _wrapLibraryMethodsWithReady() {\n // Add a stub for each driver API method that delays the call to the\n // corresponding driver method until localForage is ready. These stubs\n // will be replaced by the driver methods as soon as the driver is\n // loaded, so there is no performance impact.\n for (var i = 0, len = LibraryMethods.length; i < len; i++) {\n callWhenReady(this, LibraryMethods[i]);\n }\n };\n\n LocalForage.prototype.createInstance = function createInstance(options) {\n return new LocalForage(options);\n };\n\n return LocalForage;\n}();\n\n// The actual localForage object that we expose as a module or via a\n// global. It's extended by pulling in one of our other libraries.\n\n\nvar localforage_js = new LocalForage();\n\nmodule.exports = localforage_js;\n\n},{\"3\":3}]},{},[4])(4)\n});\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\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 getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\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 */\nfunction 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// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\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 */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\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 */\nfunction 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\nmodule.exports = arrayEach;\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 */\nfunction 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\nmodule.exports = arrayFilter;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\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 * 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 */\nfunction 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\nmodule.exports = arrayLikeKeys;\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","/**\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 */\nfunction 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\nmodule.exports = arraySome;\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 copyObject = require('./_copyObject'),\n keys = require('./keys');\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 */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\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 */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\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 Stack = require('./_Stack'),\n arrayEach = require('./_arrayEach'),\n assignValue = require('./_assignValue'),\n baseAssign = require('./_baseAssign'),\n baseAssignIn = require('./_baseAssignIn'),\n cloneBuffer = require('./_cloneBuffer'),\n copyArray = require('./_copyArray'),\n copySymbols = require('./_copySymbols'),\n copySymbolsIn = require('./_copySymbolsIn'),\n getAllKeys = require('./_getAllKeys'),\n getAllKeysIn = require('./_getAllKeysIn'),\n getTag = require('./_getTag'),\n initCloneArray = require('./_initCloneArray'),\n initCloneByTag = require('./_initCloneByTag'),\n initCloneObject = require('./_initCloneObject'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isMap = require('./isMap'),\n isObject = require('./isObject'),\n isSet = require('./isSet'),\n keys = require('./keys'),\n keysIn = require('./keysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar 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 identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\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 */\nfunction 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\nmodule.exports = baseClone;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\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 */\nvar 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\nmodule.exports = baseCreate;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\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 */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\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","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 baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\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 */\nfunction 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\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\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 * 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 */\nfunction 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\nmodule.exports = baseIsEqualDeep;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\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 */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\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 getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\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 */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar 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 identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\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 */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\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 * 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 */\nfunction 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\nmodule.exports = baseKeys;\n","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\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 * 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 */\nfunction 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\nmodule.exports = baseKeysIn;\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 */\nfunction 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\nmodule.exports = baseTimes;\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 */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\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 */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var Uint8Array = require('./_Uint8Array');\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 */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\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 */\nfunction 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\nmodule.exports = cloneBuffer;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\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 */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\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 */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nmodule.exports = cloneRegExp;\n","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\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 */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\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 */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\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 */\nfunction 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\nmodule.exports = copyArray;\n","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\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 */\nfunction 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\nmodule.exports = copyObject;\n","var copyObject = require('./_copyObject'),\n getSymbols = require('./_getSymbols');\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 */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","var copyObject = require('./_copyObject'),\n getSymbolsIn = require('./_getSymbolsIn');\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 */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\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 SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\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 */\nfunction 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\nmodule.exports = equalArrays;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\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 */\nfunction 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\nmodule.exports = equalByTag;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\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 * 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 */\nfunction 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\nmodule.exports = equalObjects;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\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 */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbolsIn = require('./_getSymbolsIn'),\n keysIn = require('./keysIn');\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 */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\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 overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\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","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\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 */\nvar 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\nmodule.exports = getSymbols;\n","var arrayPush = require('./_arrayPush'),\n getPrototype = require('./_getPrototype'),\n getSymbols = require('./_getSymbols'),\n stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\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 */\nvar 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\nmodule.exports = getSymbolsIn;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\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 */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((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\nmodule.exports = getTag;\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 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","/** 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 * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction 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\nmodule.exports = initCloneArray;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n cloneDataView = require('./_cloneDataView'),\n cloneRegExp = require('./_cloneRegExp'),\n cloneSymbol = require('./_cloneSymbol'),\n cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar 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/**\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 */\nfunction 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\nmodule.exports = initCloneByTag;\n","var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\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 */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\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","/**\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","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\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 */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\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","/**\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 */\nfunction 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\nmodule.exports = mapToArray;\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","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\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 */\nfunction 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\nmodule.exports = nativeKeysIn;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar 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\nmodule.exports = nodeUtil;\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","/**\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 */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\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","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\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 */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\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 {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\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 */\nfunction 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\nmodule.exports = setToArray;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\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 */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\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 */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\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 */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\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 */\nfunction 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\nmodule.exports = stackSet;\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","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\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 */\nfunction cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = cloneDeep;\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 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 isFunction = require('./isFunction'),\n isLength = require('./isLength');\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 */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\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 */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseKeys = require('./_baseKeys'),\n getTag = require('./_getTag'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLike = require('./isArrayLike'),\n isBuffer = require('./isBuffer'),\n isPrototype = require('./_isPrototype'),\n isTypedArray = require('./isTypedArray');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\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 `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 */\nfunction 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\nmodule.exports = isEmpty;\n","var baseIsEqual = require('./_baseIsEqual');\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 */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\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","var baseIsMap = require('./_baseIsMap'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\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 */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\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 baseIsSet = require('./_baseIsSet'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\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 */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\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 */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\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 */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\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 */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\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 */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\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 */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\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', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n };\n\n return hooks;\n\n})));\n","'use strict';\n\nvar self = module.exports;\n\nmodule.exports.isNumber = function (x) {\n return (typeof x === 'number');\n};\n\nmodule.exports.findMin = function (arr) {\n if (arr.length === 0) {\n return Infinity;\n }\n\n var curr = arr[0];\n for (var i = 1; i < arr.length; i++) {\n curr = Math.min(curr, arr[i]);\n }\n return curr;\n};\n\nmodule.exports.findMax = function (arr) {\n if (arr.length === 0) {\n return -Infinity;\n }\n\n var curr = arr[0];\n for (var i = 1; i < arr.length; i++) {\n curr = Math.max(curr, arr[i]);\n }\n return curr;\n};\n\nmodule.exports.findMinMulti = function (arr) {\n var curr = self.findMin(arr[0]);\n for (var i = 1; i < arr.length; i++) {\n curr = Math.min(curr, self.findMin(arr[i]));\n }\n return curr;\n};\n\nmodule.exports.findMaxMulti = function (arr) {\n var curr = self.findMax(arr[0]);\n for (var i = 1; i < arr.length; i++) {\n curr = Math.max(curr, self.findMax(arr[i]));\n }\n return curr;\n};\n\nmodule.exports.inside = function (min, max, x) {\n return (min <= x) && (x <= max);\n};\n","'use strict';\n\nvar DEFAULT_SIZE = 50;\nvar DEFAULT_WIDTH = 2;\n\nvar LN_2 = Math.log(2);\nvar self = module.exports;\n\nvar helper = require('./helper');\n\n// Triangle\nfunction kernel(x) {\n return 1 - Math.abs(x);\n}\n\n/**\n * Get min and max value for the pdf, covering all arr data range while respecting options' data\n * @param arr\n * @param options\n * @returns {*}\n */\nmodule.exports.getUnifiedMinMax = function (arr, options) {\n return self.getUnifiedMinMaxMulti([arr], options);\n};\n\nmodule.exports.getUnifiedMinMaxMulti = function (arrMulti, options) {\n options = options || {};\n\n var relaxMin = false;\n var relaxMax = false;\n\n var width = helper.isNumber(options.width) ? options.width : DEFAULT_WIDTH;\n var size = helper.isNumber(options.size) ? options.size : DEFAULT_SIZE;\n var min = helper.isNumber(options.min) ? options.min : (relaxMin = true, helper.findMinMulti(arrMulti));\n var max = helper.isNumber(options.max) ? options.max : (relaxMax = true, helper.findMaxMulti(arrMulti));\n\n var range = max - min;\n var step = range / (size - 1);\n\n // Relax?\n if (relaxMin) {\n min = min - 2 * width * step;\n }\n if (relaxMax) {\n max = max + 2 * width * step;\n }\n\n return {\n min: min,\n max: max\n };\n};\n\nmodule.exports.create = function (arr, options) {\n options = options || {};\n\n if (!arr || (arr.length === 0)) {\n return [];\n }\n\n var size = helper.isNumber(options.size) ? options.size : DEFAULT_SIZE;\n var width = helper.isNumber(options.width) ? options.width : DEFAULT_WIDTH;\n var normalizedMinMax = self.getUnifiedMinMax(arr, {\n size: size,\n width: width,\n min: options.min,\n max: options.max\n });\n\n var min = normalizedMinMax.min;\n var max = normalizedMinMax.max;\n\n var range = max - min;\n var step = range / (size - 1);\n if (range === 0) {\n // Special case...\n return [{x: min, y: 1}];\n }\n\n // Good to go\n\n var buckets = [];\n for (var i = 0; i < size; i++) {\n buckets.push({\n x: min + i * step,\n y: 0\n });\n }\n\n var xToBucket = function (x) {\n return Math.floor((x - min) / step);\n };\n\n var partialArea = generatePartialAreas(kernel, width);\n var fullArea = partialArea[width];\n var c = partialArea[width-1] - partialArea[width-2];\n\n var initalValue = 0;\n arr.forEach(function (x) {\n var bucket = xToBucket(x);\n\n // Totally outside?\n if ((bucket + width < 0) || (bucket - width >= buckets.length)) {\n return;\n }\n\n var start = Math.max(bucket - width, 0);\n var mid = bucket;\n var end = Math.min(bucket + width, buckets.length - 1);\n\n var leftBlockCount = start - (bucket - width);\n var rightBlockCount = (bucket + width) - end;\n var spilledAreaLeft = partialArea[-width-1 + leftBlockCount] || 0;\n var spilledAreaRight = partialArea[-width-1 + rightBlockCount] || 0;\n var weight = fullArea / (fullArea - spilledAreaLeft - spilledAreaRight);\n\n if (leftBlockCount > 0) {\n initalValue += weight * (leftBlockCount - 1) * c;\n }\n\n // Add grads\n var startGradPos = Math.max(0, bucket-width+1);\n if (helper.inside(0, buckets.length-1, startGradPos)) {\n buckets[startGradPos].y += weight * 1 * c;\n }\n if (helper.inside(0, buckets.length-1, mid + 1)) {\n buckets[mid + 1].y -= weight * 2 * c;\n }\n if (helper.inside(0, buckets.length-1, end + 1)) {\n buckets[end + 1].y += weight * 1 * c;\n }\n });\n\n var accumulator = initalValue;\n var gradAccumulator = 0;\n var area = 0;\n buckets.forEach(function (bucket) {\n gradAccumulator += bucket.y;\n accumulator += gradAccumulator;\n\n bucket.y = accumulator;\n area += accumulator;\n });\n\n // Normalize\n if (area > 0) {\n buckets.forEach(function (bucket) {\n bucket.y /= area;\n });\n }\n\n return buckets;\n};\n\nfunction generatePartialAreas(kernel, width) {\n var partialAreas = {};\n\n var accumulator = 0;\n for (var i = -width; i <= width; i++) {\n accumulator += kernel(i/width);\n partialAreas[i] = accumulator;\n }\n\n return partialAreas;\n}\n\nmodule.exports.getExpectedValueFromPdf = function (pdf) {\n if (!pdf || (pdf.length === 0)) {\n return undefined;\n }\n\n var expected = 0;\n\n pdf.forEach(function (obj) {\n expected += obj.x * obj.y;\n });\n\n return expected;\n};\n\nmodule.exports.getXWithLeftTailArea = function (pdf, area) {\n if (!pdf || (pdf.length === 0)) {\n return undefined;\n }\n\n var accumulator = 0;\n var last = 0;\n for (var i = 0; i < pdf.length; i++) {\n last = i;\n accumulator += pdf[i].y;\n\n if (accumulator >= area) {\n break;\n }\n }\n\n return pdf[last].x;\n};\n\nmodule.exports.getPerplexity = function (pdf) {\n if (!pdf || (pdf.length === 0)) {\n return undefined;\n }\n\n var entropy = 0;\n pdf.forEach(function (obj) {\n var ln = Math.log(obj.y);\n\n if (isFinite(ln)) {\n entropy += obj.y * ln;\n }\n });\n entropy = -entropy / LN_2;\n\n return Math.pow(2, entropy);\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 bigint: 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","/**\n * Based on Kendo UI Core expression code \n */\n'use strict'\n\nfunction Cache(maxSize) {\n this._maxSize = maxSize\n this.clear()\n}\nCache.prototype.clear = function () {\n this._size = 0\n this._values = Object.create(null)\n}\nCache.prototype.get = function (key) {\n return this._values[key]\n}\nCache.prototype.set = function (key, value) {\n this._size >= this._maxSize && this.clear()\n if (!(key in this._values)) this._size++\n\n return (this._values[key] = value)\n}\n\nvar SPLIT_REGEX = /[^.^\\]^[]+|(?=\\[\\]|\\.\\.)/g,\n DIGIT_REGEX = /^\\d+$/,\n LEAD_DIGIT_REGEX = /^\\d/,\n SPEC_CHAR_REGEX = /[~`!#$%\\^&*+=\\-\\[\\]\\\\';,/{}|\\\\\":<>\\?]/g,\n CLEAN_QUOTES_REGEX = /^\\s*(['\"]?)(.*?)(\\1)\\s*$/,\n MAX_CACHE_SIZE = 512\n\nvar pathCache = new Cache(MAX_CACHE_SIZE),\n setCache = new Cache(MAX_CACHE_SIZE),\n getCache = new Cache(MAX_CACHE_SIZE)\n\nvar config\n\nmodule.exports = {\n Cache: Cache,\n\n split: split,\n\n normalizePath: normalizePath,\n\n setter: function (path) {\n var parts = normalizePath(path)\n\n return (\n setCache.get(path) ||\n setCache.set(path, function setter(obj, value) {\n var index = 0\n var len = parts.length\n var data = obj\n\n while (index < len - 1) {\n var part = parts[index]\n if (\n part === '__proto__' ||\n part === 'constructor' ||\n part === 'prototype'\n ) {\n return obj\n }\n\n data = data[parts[index++]]\n }\n data[parts[index]] = value\n })\n )\n },\n\n getter: function (path, safe) {\n var parts = normalizePath(path)\n return (\n getCache.get(path) ||\n getCache.set(path, function getter(data) {\n var index = 0,\n len = parts.length\n while (index < len) {\n if (data != null || !safe) data = data[parts[index++]]\n else return\n }\n return data\n })\n )\n },\n\n join: function (segments) {\n return segments.reduce(function (path, part) {\n return (\n path +\n (isQuoted(part) || DIGIT_REGEX.test(part)\n ? '[' + part + ']'\n : (path ? '.' : '') + part)\n )\n }, '')\n },\n\n forEach: function (path, cb, thisArg) {\n forEach(Array.isArray(path) ? path : split(path), cb, thisArg)\n },\n}\n\nfunction normalizePath(path) {\n return (\n pathCache.get(path) ||\n pathCache.set(\n path,\n split(path).map(function (part) {\n return part.replace(CLEAN_QUOTES_REGEX, '$2')\n })\n )\n )\n}\n\nfunction split(path) {\n return path.match(SPLIT_REGEX) || ['']\n}\n\nfunction forEach(parts, iter, thisArg) {\n var len = parts.length,\n part,\n idx,\n isArray,\n isBracket\n\n for (idx = 0; idx < len; idx++) {\n part = parts[idx]\n\n if (part) {\n if (shouldBeQuoted(part)) {\n part = '\"' + part + '\"'\n }\n\n isBracket = isQuoted(part)\n isArray = !isBracket && /^\\d+$/.test(part)\n\n iter.call(thisArg, part, isBracket, isArray, idx, parts)\n }\n }\n}\n\nfunction isQuoted(str) {\n return (\n typeof str === 'string' && str && [\"'\", '\"'].indexOf(str.charAt(0)) !== -1\n )\n}\n\nfunction hasLeadingNumber(part) {\n return part.match(LEAD_DIGIT_REGEX) && !part.match(DIGIT_REGEX)\n}\n\nfunction hasSpecialChars(part) {\n return SPEC_CHAR_REGEX.test(part)\n}\n\nfunction shouldBeQuoted(part) {\n return !isQuoted(part) && (hasLeadingNumber(part) || hasSpecialChars(part))\n}\n","/**\n * @license React\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 Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){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;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(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(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(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 ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(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 Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(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}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(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 ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(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\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(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 cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!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,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({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 ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(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 wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!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)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=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();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=Xa(a.document)}return b}function Ne(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)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;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}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&Ng(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=Lg(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Tg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Rg(f.type,f.key,f.props,null,a.mode,h),h.ref=Lg(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)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=d.sibling}d=Sg(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);Mg(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=Qg(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Ug=Og(!0),Vg=Og(!1),Wg=Uf(null),Xg=null,Yg=null,Zg=null;function $g(){Zg=Yg=Xg=null}function ah(a){var b=Wg.current;E(Wg);a._currentValue=b}function bh(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}\nfunction ch(a,b){Xg=a;Zg=Yg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(dh=!0),a.firstContext=null)}function eh(a){var b=a._currentValue;if(Zg!==a)if(a={context:a,memoizedValue:b,next:null},null===Yg){if(null===Xg)throw Error(p(308));Yg=a;Xg.dependencies={lanes:0,firstContext:a}}else Yg=Yg.next=a;return b}var fh=null;function gh(a){null===fh?fh=[a]:fh.push(a)}\nfunction hh(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,gh(b)):(c.next=e.next,e.next=c);b.interleaved=c;return ih(a,d)}function ih(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var jh=!1;function kh(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction lh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function mh(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction nh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return ih(a,c)}e=d.interleaved;null===e?(b.next=b,gh(d)):(b.next=e.next,e.next=b);d.interleaved=b;return ih(a,c)}function oh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction ph(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction qh(a,b,c,d){var e=a.updateQueue;jh=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:jh=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);rh|=g;a.lanes=g;a.memoizedState=q}}\nfunction sh(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;bc?c:4;a(!0);var d=Gh.transition;Gh.transition={};try{a(!1),b()}finally{C=c,Gh.transition=d}}function wi(){return Uh().memoizedState}\nfunction xi(a,b,c){var d=yi(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,c);else if(c=hh(a,b,c,d),null!==c){var e=R();gi(c,a,d,e);Bi(c,b,d)}}\nfunction ii(a,b,c){var d=yi(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,gh(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=hh(a,b,e,d);null!==c&&(e=R(),gi(c,a,d,e),Bi(c,b,d))}}\nfunction zi(a){var b=a.alternate;return a===M||null!==b&&b===M}function Ai(a,b){Jh=Ih=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Bi(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar Rh={readContext:eh,useCallback:P,useContext:P,useEffect:P,useImperativeHandle:P,useInsertionEffect:P,useLayoutEffect:P,useMemo:P,useReducer:P,useRef:P,useState:P,useDebugValue:P,useDeferredValue:P,useTransition:P,useMutableSource:P,useSyncExternalStore:P,useId:P,unstable_isNewReconciler:!1},Oh={readContext:eh,useCallback:function(a,b){Th().memoizedState=[a,void 0===b?null:b];return a},useContext:eh,useEffect:mi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ki(4194308,\n4,pi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ki(4194308,4,a,b)},useInsertionEffect:function(a,b){return ki(4,2,a,b)},useMemo:function(a,b){var c=Th();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=xi.bind(null,M,a);return[d.memoizedState,a]},useRef:function(a){var b=\nTh();a={current:a};return b.memoizedState=a},useState:hi,useDebugValue:ri,useDeferredValue:function(a){return Th().memoizedState=a},useTransition:function(){var a=hi(!1),b=a[0];a=vi.bind(null,a[1]);Th().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=M,e=Th();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===Q)throw Error(p(349));0!==(Hh&30)||di(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;mi(ai.bind(null,d,\nf,a),[a]);d.flags|=2048;bi(9,ci.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Th(),b=Q.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Kh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;zj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eGj&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304)}else{if(!d)if(a=Ch(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Dj(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Gj&&1073741824!==c&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=L.current,G(L,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Hj(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(fj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Ij(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return zh(),E(Wf),E(H),Eh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Bh(b),null;case 13:E(L);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(L),null;case 4:return zh(),null;case 10:return ah(b.type._context),null;case 22:case 23:return Hj(),\nnull;case 24:return null;default:return null}}var Jj=!1,U=!1,Kj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Lj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Mj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Nj=!1;\nfunction Oj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Ci(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Nj;Nj=!1;return n}\nfunction Pj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Mj(b,c,f)}e=e.next}while(e!==d)}}function Qj(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)}}function Rj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Sj(a){var b=a.alternate;null!==b&&(a.alternate=null,Sj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Tj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Uj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Tj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Vj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,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=Bf));else if(4!==d&&(a=a.child,null!==a))for(Vj(a,b,c),a=a.sibling;null!==a;)Vj(a,b,c),a=a.sibling}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}var X=null,Xj=!1;function Yj(a,b,c){for(c=c.child;null!==c;)Zj(a,b,c),c=c.sibling}\nfunction Zj(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Lj(c,b);case 6:var d=X,e=Xj;X=null;Yj(a,b,c);X=d;Xj=e;null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Xj;X=c.stateNode.containerInfo;Xj=!0;\nYj(a,b,c);X=d;Xj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Mj(c,b,g):0!==(f&4)&&Mj(c,b,g));e=e.next}while(e!==d)}Yj(a,b,c);break;case 1:if(!U&&(Lj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Yj(a,b,c);break;case 21:Yj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Yj(a,b,c),U=d):Yj(a,b,c);break;default:Yj(a,b,c)}}function ak(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Kj);b.forEach(function(b){var d=bk.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction ck(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*lk(d/1960))-d;if(10a?16:a;if(null===wk)var d=!1;else{a=wk;wk=null;xk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-fk?Kk(a,0):rk|=c);Dk(a,b)}function Yk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=R();a=ih(a,b);null!==a&&(Ac(a,b,c),Dk(a,c))}function uj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Yk(a,c)}\nfunction bk(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Yk(a,c)}var Vk;\nVk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)dh=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return dh=!1,yj(a,b,c);dh=0!==(a.flags&131072)?!0:!1}else dh=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;ij(a,b);a=b.pendingProps;var e=Yf(b,H.current);ch(b,c);e=Nh(null,b,d,a,e,c);var f=Sh();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,kh(b),e.updater=Ei,b.stateNode=e,e._reactInternals=b,Ii(b,d,a,c),b=jj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Xi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{ij(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Zk(d);a=Ci(d,a);switch(e){case 0:b=cj(null,b,d,a,c);break a;case 1:b=hj(null,b,d,a,c);break a;case 11:b=Yi(null,b,d,a,c);break a;case 14:b=$i(null,b,d,Ci(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),cj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),hj(a,b,d,e,c);case 3:a:{kj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;lh(a,b);qh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ji(Error(p(423)),b);b=lj(a,b,d,c,e);break a}else if(d!==e){e=Ji(Error(p(424)),b);b=lj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Vg(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=Zi(a,b,c);break a}Xi(a,b,d,c)}b=b.child}return b;case 5:return Ah(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\ngj(a,b),Xi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return oj(a,b,c);case 4:return yh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Ug(b,null,d,c):Xi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),Yi(a,b,d,e,c);case 7:return Xi(a,b,b.pendingProps,c),b.child;case 8:return Xi(a,b,b.pendingProps.children,c),b.child;case 12:return Xi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Wg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=Zi(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=mh(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);bh(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);bh(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Xi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,ch(b,c),e=eh(e),d=d(e),b.flags|=1,Xi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Ci(d,b.pendingProps),e=Ci(d.type,e),$i(a,b,d,e,c);case 15:return bj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),ij(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,ch(b,c),Gi(b,d,e),Ii(b,d,e,c),jj(null,b,d,!0,a,c);case 19:return xj(a,b,c);case 22:return dj(a,b,c)}throw Error(p(156,b.tag));};function Fk(a,b){return ac(a,b)}\nfunction $k(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.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new $k(a,b,c,d)}function aj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction Zk(a){if(\"function\"===typeof a)return aj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction Pg(a,b){var c=a.alternate;null===c?(c=Bg(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.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Rg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)aj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Tg(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return pj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Tg(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function pj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function Qg(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction Sg(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction al(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function bl(a,b,c,d,e,f,g,h,k){a=new al(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};kh(f);return a}function cl(a,b,c){var d=3>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=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","//\n\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n if (ret !== void 0) {\n return !!ret;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n // Test for A's keys different from B.\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = objA[key];\n var valueB = objB[key];\n\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n if (ret === false || (ret === void 0 && valueA !== valueB)) {\n return false;\n }\n }\n\n return true;\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SizeSensorId = exports.SensorTabIndex = exports.SensorClassName = void 0;\n/**\n * Created by hustcc on 18/6/9.\n * Contract: i@hust.cc\n */\n\nvar SizeSensorId = 'size-sensor-id';\nexports.SizeSensorId = SizeSensorId;\nvar SensorClassName = 'size-sensor-object';\nexports.SensorClassName = SensorClassName;\nvar SensorTabIndex = '-1';\nexports.SensorTabIndex = SensorTabIndex;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n/**\n * Created by hustcc on 18/6/9.\n * Contract: i@hust.cc\n */\nvar _default = function _default(fn) {\n var delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 60;\n var timer = null;\n return function () {\n var _this = this;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n clearTimeout(timer);\n timer = setTimeout(function () {\n fn.apply(_this, args);\n }, delay);\n };\n};\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n/**\n * Created by hustcc on 18/6/9.\n * Contract: i@hust.cc\n */\n\nvar id = 1;\n\n/**\n * generate unique id in application\n * @return {string}\n */\nvar _default = function _default() {\n return \"\".concat(id++);\n};\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ver = exports.clear = exports.bind = void 0;\nvar _sensorPool = require(\"./sensorPool\");\n/**\n * Created by hustcc on 18/6/9.[高考时间]\n * Contract: i@hust.cc\n */\n\n/**\n * bind an element with resize callback function\n * @param {*} element\n * @param {*} cb\n */\nvar bind = function bind(element, cb) {\n var sensor = (0, _sensorPool.getSensor)(element);\n\n // listen with callback\n sensor.bind(cb);\n\n // return unbind function\n return function () {\n sensor.unbind(cb);\n };\n};\n\n/**\n * clear all the listener and sensor of an element\n * @param element\n */\nexports.bind = bind;\nvar clear = function clear(element) {\n var sensor = (0, _sensorPool.getSensor)(element);\n (0, _sensorPool.removeSensor)(sensor);\n};\nexports.clear = clear;\nvar ver = \"1.0.2\";\nexports.ver = ver;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.removeSensor = exports.getSensor = exports.Sensors = void 0;\nvar _id = _interopRequireDefault(require(\"./id\"));\nvar _sensors = require(\"./sensors\");\nvar _constant = require(\"./constant\");\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n/**\n * Created by hustcc on 18/6/9.\n * Contract: i@hust.cc\n */\n\n/**\n * all the sensor objects.\n * sensor pool\n */\nvar Sensors = {};\n\n/**\n * When destroy the sensor, remove it from the pool\n */\nexports.Sensors = Sensors;\nfunction clean(sensorId) {\n // exist, then remove from pool\n if (sensorId && Sensors[sensorId]) {\n delete Sensors[sensorId];\n }\n}\n\n/**\n * get one sensor\n * @param element\n * @returns {*}\n */\nvar getSensor = function getSensor(element) {\n var sensorId = element.getAttribute(_constant.SizeSensorId);\n\n // 1. if the sensor exists, then use it\n if (sensorId && Sensors[sensorId]) {\n return Sensors[sensorId];\n }\n\n // 2. not exist, then create one\n var newId = (0, _id[\"default\"])();\n element.setAttribute(_constant.SizeSensorId, newId);\n var sensor = (0, _sensors.createSensor)(element, function () {\n return clean(newId);\n });\n // add sensor into pool\n Sensors[newId] = sensor;\n return sensor;\n};\n\n/**\n * 移除 sensor\n * @param sensor\n */\nexports.getSensor = getSensor;\nvar removeSensor = function removeSensor(sensor) {\n var sensorId = sensor.element.getAttribute(_constant.SizeSensorId);\n // remove event, dom of the sensor used\n sensor.destroy();\n clean(sensorId);\n};\nexports.removeSensor = removeSensor;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createSensor = void 0;\nvar _object = require(\"./object\");\nvar _resizeObserver = require(\"./resizeObserver\");\n/**\n * Created by hustcc on 18/7/5.\n * Contract: i@hust.cc\n */\n\n/**\n * sensor strategies\n */\n// export const createSensor = createObjectSensor;\nvar createSensor = typeof ResizeObserver !== 'undefined' ? _resizeObserver.createSensor : _object.createSensor;\nexports.createSensor = createSensor;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createSensor = void 0;\nvar _debounce = _interopRequireDefault(require(\"../debounce\"));\nvar _constant = require(\"../constant\");\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n/**\n * Created by hustcc on 18/6/9.\n * Contract: i@hust.cc\n */\n\nvar createSensor = function createSensor(element, whenDestroy) {\n var sensor = undefined;\n // callback\n var listeners = [];\n\n /**\n * create object DOM of sensor\n * @returns {HTMLObjectElement}\n */\n var newSensor = function newSensor() {\n // adjust style\n if (getComputedStyle(element).position === 'static') {\n element.style.position = 'relative';\n }\n var obj = document.createElement('object');\n obj.onload = function () {\n obj.contentDocument.defaultView.addEventListener('resize', resizeListener);\n // 直接触发一次 resize\n resizeListener();\n };\n obj.style.display = 'block';\n obj.style.position = 'absolute';\n obj.style.top = '0';\n obj.style.left = '0';\n obj.style.height = '100%';\n obj.style.width = '100%';\n obj.style.overflow = 'hidden';\n obj.style.pointerEvents = 'none';\n obj.style.zIndex = '-1';\n obj.style.opacity = '0';\n obj.setAttribute('class', _constant.SensorClassName);\n obj.setAttribute('tabindex', _constant.SensorTabIndex);\n obj.type = 'text/html';\n\n // append into dom\n element.appendChild(obj);\n // for ie, should set data attribute delay, or will be white screen\n obj.data = 'about:blank';\n return obj;\n };\n\n /**\n * trigger listeners\n */\n var resizeListener = (0, _debounce[\"default\"])(function () {\n // trigger all listener\n listeners.forEach(function (listener) {\n listener(element);\n });\n });\n\n /**\n * listen with one callback function\n * @param cb\n */\n var bind = function bind(cb) {\n // if not exist sensor, then create one\n if (!sensor) {\n sensor = newSensor();\n }\n if (listeners.indexOf(cb) === -1) {\n listeners.push(cb);\n }\n };\n\n /**\n * destroy all\n */\n var destroy = function destroy() {\n if (sensor && sensor.parentNode) {\n if (sensor.contentDocument) {\n // remote event\n sensor.contentDocument.defaultView.removeEventListener('resize', resizeListener);\n }\n // remove dom\n sensor.parentNode.removeChild(sensor);\n // initial variable\n element.removeAttribute(_constant.SizeSensorId);\n sensor = undefined;\n listeners = [];\n whenDestroy && whenDestroy();\n }\n };\n\n /**\n * cancel listener bind\n * @param cb\n */\n var unbind = function unbind(cb) {\n var idx = listeners.indexOf(cb);\n if (idx !== -1) {\n listeners.splice(idx, 1);\n }\n\n // no listener, and sensor is exist\n // then destroy the sensor\n if (listeners.length === 0 && sensor) {\n destroy();\n }\n };\n return {\n element: element,\n bind: bind,\n destroy: destroy,\n unbind: unbind\n };\n};\nexports.createSensor = createSensor;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createSensor = void 0;\nvar _constant = require(\"../constant\");\nvar _debounce = _interopRequireDefault(require(\"../debounce\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n/**\n * Created by hustcc on 18/7/5.\n * Contract: i@hust.cc\n */\n\nvar createSensor = function createSensor(element, whenDestroy) {\n var sensor = undefined;\n // callback\n var listeners = [];\n\n /**\n * trigger listeners\n */\n var resizeListener = (0, _debounce[\"default\"])(function () {\n // trigger all\n listeners.forEach(function (listener) {\n listener(element);\n });\n });\n\n /**\n * create ResizeObserver sensor\n * @returns\n */\n var newSensor = function newSensor() {\n var s = new ResizeObserver(resizeListener);\n // listen element\n s.observe(element);\n\n // trigger once\n resizeListener();\n return s;\n };\n\n /**\n * listen with callback\n * @param cb\n */\n var bind = function bind(cb) {\n if (!sensor) {\n sensor = newSensor();\n }\n if (listeners.indexOf(cb) === -1) {\n listeners.push(cb);\n }\n };\n\n /**\n * destroy\n */\n var destroy = function destroy() {\n sensor.disconnect();\n listeners = [];\n sensor = undefined;\n element.removeAttribute(_constant.SizeSensorId);\n whenDestroy && whenDestroy();\n };\n\n /**\n * cancel bind\n * @param cb\n */\n var unbind = function unbind(cb) {\n var idx = listeners.indexOf(cb);\n if (idx !== -1) {\n listeners.splice(idx, 1);\n }\n\n // no listener, and sensor is exist\n // then destroy the sensor\n if (listeners.length === 0 && sensor) {\n destroy();\n }\n };\n return {\n element: element,\n bind: bind,\n destroy: destroy,\n unbind: unbind\n };\n};\nexports.createSensor = createSensor;","const reWords = /[A-Z\\xc0-\\xd6\\xd8-\\xde]?[a-z\\xdf-\\xf6\\xf8-\\xff]+(?:['’](?:d|ll|m|re|s|t|ve))?(?=[\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\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]|[A-Z\\xc0-\\xd6\\xd8-\\xde]|$)|(?:[A-Z\\xc0-\\xd6\\xd8-\\xde]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\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\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['’](?:D|LL|M|RE|S|T|VE))?(?=[\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\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]|[A-Z\\xc0-\\xd6\\xd8-\\xde](?:[a-z\\xdf-\\xf6\\xf8-\\xff]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\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\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])|$)|[A-Z\\xc0-\\xd6\\xd8-\\xde]?(?:[a-z\\xdf-\\xf6\\xf8-\\xff]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\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\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['’](?:d|ll|m|re|s|t|ve))?|[A-Z\\xc0-\\xd6\\xd8-\\xde]+(?:['’](?:D|LL|M|RE|S|T|VE))?|\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])|\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])|\\d+|(?:[\\u2700-\\u27bf]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?(?:\\u200d(?:[^\\ud800-\\udfff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?)*/g\n\nconst words = (str) => str.match(reWords) || []\n\nconst upperFirst = (str) => str[0].toUpperCase() + str.slice(1)\n\nconst join = (str, d) => words(str).join(d).toLowerCase()\n\nconst camelCase = (str) =>\n words(str).reduce(\n (acc, next) =>\n `${acc}${\n !acc\n ? next.toLowerCase()\n : next[0].toUpperCase() + next.slice(1).toLowerCase()\n }`,\n '',\n )\n\nconst pascalCase = (str) => upperFirst(camelCase(str))\n\nconst snakeCase = (str) => join(str, '_')\n\nconst kebabCase = (str) => join(str, '-')\n\nconst sentenceCase = (str) => upperFirst(join(str, ' '))\n\nconst titleCase = (str) => words(str).map(upperFirst).join(' ')\n\nmodule.exports = {\n words,\n upperFirst,\n camelCase,\n pascalCase,\n snakeCase,\n kebabCase,\n sentenceCase,\n titleCase,\n}\n","\n/**\n * Topological sorting function\n *\n * @param {Array} edges\n * @returns {Array}\n */\n\nmodule.exports = function(edges) {\n return toposort(uniqueNodes(edges), edges)\n}\n\nmodule.exports.array = toposort\n\nfunction toposort(nodes, edges) {\n var cursor = nodes.length\n , sorted = new Array(cursor)\n , visited = {}\n , i = cursor\n // Better data structures make algorithm much faster.\n , outgoingEdges = makeOutgoingEdges(edges)\n , nodesHash = makeNodesHash(nodes)\n\n // check for unknown nodes\n edges.forEach(function(edge) {\n if (!nodesHash.has(edge[0]) || !nodesHash.has(edge[1])) {\n throw new Error('Unknown node. There is an unknown node in the supplied edges.')\n }\n })\n\n while (i--) {\n if (!visited[i]) visit(nodes[i], i, new Set())\n }\n\n return sorted\n\n function visit(node, i, predecessors) {\n if(predecessors.has(node)) {\n var nodeRep\n try {\n nodeRep = \", node was:\" + JSON.stringify(node)\n } catch(e) {\n nodeRep = \"\"\n }\n throw new Error('Cyclic dependency' + nodeRep)\n }\n\n if (!nodesHash.has(node)) {\n throw new Error('Found unknown node. Make sure to provided all involved nodes. Unknown node: '+JSON.stringify(node))\n }\n\n if (visited[i]) return;\n visited[i] = true\n\n var outgoing = outgoingEdges.get(node) || new Set()\n outgoing = Array.from(outgoing)\n\n if (i = outgoing.length) {\n predecessors.add(node)\n do {\n var child = outgoing[--i]\n visit(child, nodesHash.get(child), predecessors)\n } while (i)\n predecessors.delete(node)\n }\n\n sorted[--cursor] = node\n }\n}\n\nfunction uniqueNodes(arr){\n var res = new Set()\n for (var i = 0, len = arr.length; i < len; i++) {\n var edge = arr[i]\n res.add(edge[0])\n res.add(edge[1])\n }\n return Array.from(res)\n}\n\nfunction makeOutgoingEdges(arr){\n var edges = new Map()\n for (var i = 0, len = arr.length; i < len; i++) {\n var edge = arr[i]\n if (!edges.has(edge[0])) edges.set(edge[0], new Set())\n if (!edges.has(edge[1])) edges.set(edge[1], new Set())\n edges.get(edge[0]).add(edge[1])\n }\n return edges\n}\n\nfunction makeNodesHash(arr){\n var res = new Map()\n for (var i = 0, len = arr.length; i < len; i++) {\n res.set(arr[i], i)\n }\n return res\n}\n","/**\n * @license React\n * use-sync-external-store-with-selector.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'use strict';var g=require(\"react\");function n(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var p=\"function\"===typeof Object.is?Object.is:n,q=g.useSyncExternalStore,r=g.useRef,t=g.useEffect,u=g.useMemo,v=g.useDebugValue;\nexports.useSyncExternalStoreWithSelector=function(a,b,e,l,h){var c=r(null);if(null===c.current){var f={hasValue:!1,value:null};c.current=f}else f=c.current;c=u(function(){function a(a){if(!c){c=!0;d=a;a=l(a);if(void 0!==h&&f.hasValue){var b=f.value;if(h(b,a))return k=b}return k=a}b=k;if(p(d,a))return b;var e=l(a);if(void 0!==h&&h(b,e))return b;d=a;return k=e}var c=!1,d,k,m=void 0===e?null:e;return[function(){return a(b())},null===m?void 0:function(){return a(m())}]},[b,e,l,h]);var d=q(a,c[0],c[1]);\nt(function(){f.hasValue=!0;f.value=d},[d]);v(d);return d};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/use-sync-external-store-with-selector.production.min.js');\n} else {\n module.exports = require('./cjs/use-sync-external-store-with-selector.development.js');\n}\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://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) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\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","function asyncGeneratorStep(n, t, e, r, o, a, c) {\n try {\n var i = n[a](c),\n u = i.value;\n } catch (n) {\n return void e(n);\n }\n i.done ? t(u) : Promise.resolve(u).then(r, o);\n}\nfunction _asyncToGenerator(n) {\n return function () {\n var t = this,\n e = arguments;\n return new Promise(function (r, o) {\n var a = n.apply(t, e);\n function _next(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n);\n }\n function _throw(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n);\n }\n _next(void 0);\n });\n };\n}\nexport { _asyncToGenerator as default };","import toPropertyKey from \"./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}\nexport { _defineProperty as default };","function _extends() {\n return _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 }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nfunction _objectWithoutProperties(e, t) {\n if (null == e) return {};\n var o,\n r,\n i = objectWithoutPropertiesLoose(e, t);\n if (Object.getOwnPropertySymbols) {\n var s = Object.getOwnPropertySymbols(e);\n for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n }\n return i;\n}\nexport { _objectWithoutProperties as default };","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}\nexport { _objectWithoutPropertiesLoose as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import _typeof from \"./typeof.js\";\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}\nexport { toPrimitive as default };","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 };","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\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","// 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};","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};","// 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 \"static/js/\" + chunkId + \".\" + {\"213\":\"32db9461\",\"239\":\"9e271c23\",\"667\":\"3dc1a2a9\"}[chunkId] + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\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))","var inProgress = {};\nvar dataWebpackPrefix = \"migration-demo-frontend:\";\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\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};","// 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};","__webpack_require__.p = \"/\";","// 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\t792: 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 = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\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[\"webpackChunkmigration_demo_frontend\"] = self[\"webpackChunkmigration_demo_frontend\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","const noop = () => {};\n\nlet _WINDOW = {};\nlet _DOCUMENT = {};\nlet _MUTATION_OBSERVER = null;\nlet _PERFORMANCE = {\n mark: noop,\n measure: noop\n};\n\ntry {\n if (typeof window !== 'undefined') _WINDOW = window;\n if (typeof document !== 'undefined') _DOCUMENT = document;\n if (typeof MutationObserver !== 'undefined') _MUTATION_OBSERVER = MutationObserver;\n if (typeof performance !== 'undefined') _PERFORMANCE = performance;\n} catch (e) {}\n\nconst {\n userAgent = ''\n} = _WINDOW.navigator || {};\nconst WINDOW = _WINDOW;\nconst DOCUMENT = _DOCUMENT;\nconst MUTATION_OBSERVER = _MUTATION_OBSERVER;\nconst PERFORMANCE = _PERFORMANCE;\nconst IS_BROWSER = !!WINDOW.document;\nconst IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';\nconst IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');\n\nvar a = \"classic\",\n t = \"duotone\",\n r = \"sharp\",\n o = \"sharp-duotone\",\n c = [a, t, r, o];\n\nvar et$1 = {\n classic: {\n 900: \"fas\",\n 400: \"far\",\n normal: \"far\",\n 300: \"fal\",\n 100: \"fat\"\n },\n sharp: {\n 900: \"fass\",\n 400: \"fasr\",\n 300: \"fasl\",\n 100: \"fast\"\n },\n \"sharp-duotone\": {\n 900: \"fasds\"\n }\n};\nvar bt = {\n kit: {\n fak: \"kit\",\n \"fa-kit\": \"kit\"\n },\n \"kit-duotone\": {\n fakd: \"kit-duotone\",\n \"fa-kit-duotone\": \"kit-duotone\"\n }\n},\n Ct = [\"kit\"];\nvar Dt = /fa(s|r|l|t|d|b|k|kd|ss|sr|sl|st|sds)?[\\-\\ ]/,\n Kt = /Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Sharp Duotone|Sharp|Kit)?.*/i;\nvar ao = {\n \"Font Awesome 5 Free\": {\n 900: \"fas\",\n 400: \"far\"\n },\n \"Font Awesome 5 Pro\": {\n 900: \"fas\",\n 400: \"far\",\n normal: \"far\",\n 300: \"fal\"\n },\n \"Font Awesome 5 Brands\": {\n 400: \"fab\",\n normal: \"fab\"\n },\n \"Font Awesome 5 Duotone\": {\n 900: \"fad\"\n }\n};\nvar eo = {\n \"Font Awesome 6 Free\": {\n 900: \"fas\",\n 400: \"far\"\n },\n \"Font Awesome 6 Pro\": {\n 900: \"fas\",\n 400: \"far\",\n normal: \"far\",\n 300: \"fal\",\n 100: \"fat\"\n },\n \"Font Awesome 6 Brands\": {\n 400: \"fab\",\n normal: \"fab\"\n },\n \"Font Awesome 6 Duotone\": {\n 900: \"fad\"\n },\n \"Font Awesome 6 Sharp\": {\n 900: \"fass\",\n 400: \"fasr\",\n normal: \"fasr\",\n 300: \"fasl\",\n 100: \"fast\"\n },\n \"Font Awesome 6 Sharp Duotone\": {\n 900: \"fasds\"\n }\n},\n lo = {\n classic: {\n \"fa-brands\": \"fab\",\n \"fa-duotone\": \"fad\",\n \"fa-light\": \"fal\",\n \"fa-regular\": \"far\",\n \"fa-solid\": \"fas\",\n \"fa-thin\": \"fat\"\n },\n sharp: {\n \"fa-solid\": \"fass\",\n \"fa-regular\": \"fasr\",\n \"fa-light\": \"fasl\",\n \"fa-thin\": \"fast\"\n },\n \"sharp-duotone\": {\n \"fa-solid\": \"fasds\"\n }\n},\n y = {\n classic: [\"fas\", \"far\", \"fal\", \"fat\"],\n sharp: [\"fass\", \"fasr\", \"fasl\", \"fast\"],\n \"sharp-duotone\": [\"fasds\"]\n},\n no = {\n classic: {\n fab: \"fa-brands\",\n fad: \"fa-duotone\",\n fal: \"fa-light\",\n far: \"fa-regular\",\n fas: \"fa-solid\",\n fat: \"fa-thin\"\n },\n sharp: {\n fass: \"fa-solid\",\n fasr: \"fa-regular\",\n fasl: \"fa-light\",\n fast: \"fa-thin\"\n },\n \"sharp-duotone\": {\n fasds: \"fa-solid\"\n }\n},\n fo = {\n classic: {\n solid: \"fas\",\n regular: \"far\",\n light: \"fal\",\n thin: \"fat\",\n duotone: \"fad\",\n brands: \"fab\"\n },\n sharp: {\n solid: \"fass\",\n regular: \"fasr\",\n light: \"fasl\",\n thin: \"fast\"\n },\n \"sharp-duotone\": {\n solid: \"fasds\"\n }\n},\n ho = {\n classic: {\n fa: \"solid\",\n fas: \"solid\",\n \"fa-solid\": \"solid\",\n far: \"regular\",\n \"fa-regular\": \"regular\",\n fal: \"light\",\n \"fa-light\": \"light\",\n fat: \"thin\",\n \"fa-thin\": \"thin\",\n fad: \"duotone\",\n \"fa-duotone\": \"duotone\",\n fab: \"brands\",\n \"fa-brands\": \"brands\"\n },\n sharp: {\n fa: \"solid\",\n fass: \"solid\",\n \"fa-solid\": \"solid\",\n fasr: \"regular\",\n \"fa-regular\": \"regular\",\n fasl: \"light\",\n \"fa-light\": \"light\",\n fast: \"thin\",\n \"fa-thin\": \"thin\"\n },\n \"sharp-duotone\": {\n fa: \"solid\",\n fasds: \"solid\",\n \"fa-solid\": \"solid\"\n }\n},\n x$1 = [\"solid\", \"regular\", \"light\", \"thin\", \"duotone\", \"brands\"],\n u$1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],\n m$1 = u$1.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]),\n t$1 = {\n GROUP: \"duotone-group\",\n SWAP_OPACITY: \"swap-opacity\",\n PRIMARY: \"primary\",\n SECONDARY: \"secondary\"\n},\n yo = [...Object.keys(y), ...x$1, \"2xs\", \"xs\", \"sm\", \"lg\", \"xl\", \"2xl\", \"beat\", \"border\", \"fade\", \"beat-fade\", \"bounce\", \"flip-both\", \"flip-horizontal\", \"flip-vertical\", \"flip\", \"fw\", \"inverse\", \"layers-counter\", \"layers-text\", \"layers\", \"li\", \"pull-left\", \"pull-right\", \"pulse\", \"rotate-180\", \"rotate-270\", \"rotate-90\", \"rotate-by\", \"shake\", \"spin-pulse\", \"spin-reverse\", \"spin\", \"stack-1x\", \"stack-2x\", \"stack\", \"ul\", t$1.GROUP, t$1.SWAP_OPACITY, t$1.PRIMARY, t$1.SECONDARY].concat(u$1.map(o => \"\".concat(o, \"x\"))).concat(m$1.map(o => \"w-\".concat(o)));\nvar mo = {\n \"Font Awesome Kit\": {\n 400: \"fak\",\n normal: \"fak\"\n },\n \"Font Awesome Kit Duotone\": {\n 400: \"fakd\",\n normal: \"fakd\"\n }\n},\n Io = {\n kit: {\n \"fa-kit\": \"fak\"\n },\n \"kit-duotone\": {\n \"fa-kit-duotone\": \"fakd\"\n }\n},\n Fo = {\n kit: {\n fak: \"fa-kit\"\n },\n \"kit-duotone\": {\n fakd: \"fa-kit-duotone\"\n }\n},\n So = {\n kit: {\n kit: \"fak\"\n },\n \"kit-duotone\": {\n \"kit-duotone\": \"fakd\"\n }\n};\n\nconst NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';\nconst UNITS_IN_GRID = 16;\nconst DEFAULT_CSS_PREFIX = 'fa';\nconst DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa';\nconst DATA_FA_I2SVG = 'data-fa-i2svg';\nconst DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element';\nconst DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending';\nconst DATA_PREFIX = 'data-prefix';\nconst DATA_ICON = 'data-icon';\nconst HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg';\nconst MUTATION_APPROACH_ASYNC = 'async';\nconst TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT'];\nconst PRODUCTION = (() => {\n try {\n return process.env.NODE_ENV === 'production';\n } catch (e$$1) {\n return false;\n }\n})();\nconst FAMILIES = [a, r, o];\n\nfunction familyProxy(obj) {\n // Defaults to the classic family if family is not available\n return new Proxy(obj, {\n get(target, prop) {\n return prop in target ? target[prop] : target[a];\n }\n\n });\n}\n\nconst _PREFIX_TO_STYLE = { ...ho\n};\n_PREFIX_TO_STYLE[a] = { ...ho[a],\n ...bt['kit'],\n ...bt['kit-duotone']\n};\nconst PREFIX_TO_STYLE = familyProxy(_PREFIX_TO_STYLE);\nconst _STYLE_TO_PREFIX = { ...fo\n};\n_STYLE_TO_PREFIX[a] = { ..._STYLE_TO_PREFIX[a],\n ...So['kit'],\n ...So['kit-duotone']\n};\nconst STYLE_TO_PREFIX = familyProxy(_STYLE_TO_PREFIX);\nconst _PREFIX_TO_LONG_STYLE = { ...no\n};\n_PREFIX_TO_LONG_STYLE[a] = { ..._PREFIX_TO_LONG_STYLE[a],\n ...Fo['kit']\n};\nconst PREFIX_TO_LONG_STYLE = familyProxy(_PREFIX_TO_LONG_STYLE);\nconst _LONG_STYLE_TO_PREFIX = { ...lo\n};\n_LONG_STYLE_TO_PREFIX[a] = { ..._LONG_STYLE_TO_PREFIX[a],\n ...Io['kit']\n};\nconst LONG_STYLE_TO_PREFIX = familyProxy(_LONG_STYLE_TO_PREFIX);\nconst ICON_SELECTION_SYNTAX_PATTERN = Dt; // eslint-disable-line no-useless-escape\n\nconst LAYERS_TEXT_CLASSNAME = 'fa-layers-text';\nconst FONT_FAMILY_PATTERN = Kt;\nconst _FONT_WEIGHT_TO_PREFIX = { ...et$1\n};\nconst FONT_WEIGHT_TO_PREFIX = familyProxy(_FONT_WEIGHT_TO_PREFIX);\nconst ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask'];\nconst DUOTONE_CLASSES = t$1;\nconst prefixes = new Set();\nObject.keys(STYLE_TO_PREFIX[a]).map(prefixes.add.bind(prefixes));\nObject.keys(STYLE_TO_PREFIX[r]).map(prefixes.add.bind(prefixes));\nObject.keys(STYLE_TO_PREFIX[o]).map(prefixes.add.bind(prefixes));\nconst RESERVED_CLASSES = [...Ct, ...yo];\n\nconst initial = WINDOW.FontAwesomeConfig || {};\n\nfunction getAttrConfig(attr) {\n var element = DOCUMENT.querySelector('script[' + attr + ']');\n\n if (element) {\n return element.getAttribute(attr);\n }\n}\n\nfunction coerce(val) {\n // Getting an empty string will occur if the attribute is set on the HTML tag but without a value\n // We'll assume that this is an indication that it should be toggled to true\n if (val === '') return true;\n if (val === 'false') return false;\n if (val === 'true') return true;\n return val;\n}\n\nif (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {\n const attrs = [['data-family-prefix', 'familyPrefix'], ['data-css-prefix', 'cssPrefix'], ['data-family-default', 'familyDefault'], ['data-style-default', 'styleDefault'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']];\n attrs.forEach(_ref => {\n let [attr, key] = _ref;\n const val = coerce(getAttrConfig(attr));\n\n if (val !== undefined && val !== null) {\n initial[key] = val;\n }\n });\n}\n\nconst _default = {\n styleDefault: 'solid',\n familyDefault: 'classic',\n cssPrefix: DEFAULT_CSS_PREFIX,\n replacementClass: DEFAULT_REPLACEMENT_CLASS,\n autoReplaceSvg: true,\n autoAddCss: true,\n autoA11y: true,\n searchPseudoElements: false,\n observeMutations: true,\n mutateApproach: 'async',\n keepOriginalSource: true,\n measurePerformance: false,\n showMissingIcons: true\n}; // familyPrefix is deprecated but we must still support it if present\n\nif (initial.familyPrefix) {\n initial.cssPrefix = initial.familyPrefix;\n}\n\nconst _config = { ..._default,\n ...initial\n};\nif (!_config.autoReplaceSvg) _config.observeMutations = false;\nconst config = {};\nObject.keys(_default).forEach(key => {\n Object.defineProperty(config, key, {\n enumerable: true,\n set: function (val) {\n _config[key] = val;\n\n _onChangeCb.forEach(cb => cb(config));\n },\n get: function () {\n return _config[key];\n }\n });\n}); // familyPrefix is deprecated as of 6.2.0 and should be removed in 7.0.0\n\nObject.defineProperty(config, 'familyPrefix', {\n enumerable: true,\n set: function (val) {\n _config.cssPrefix = val;\n\n _onChangeCb.forEach(cb => cb(config));\n },\n get: function () {\n return _config.cssPrefix;\n }\n});\nWINDOW.FontAwesomeConfig = config;\nconst _onChangeCb = [];\nfunction onChange(cb) {\n _onChangeCb.push(cb);\n\n return () => {\n _onChangeCb.splice(_onChangeCb.indexOf(cb), 1);\n };\n}\n\nconst d$2 = UNITS_IN_GRID;\nconst meaninglessTransform = {\n size: 16,\n x: 0,\n y: 0,\n rotate: 0,\n flipX: false,\n flipY: false\n};\nfunction insertCss(css) {\n if (!css || !IS_DOM) {\n return;\n }\n\n const style = DOCUMENT.createElement('style');\n style.setAttribute('type', 'text/css');\n style.innerHTML = css;\n const headChildren = DOCUMENT.head.childNodes;\n let beforeChild = null;\n\n for (let i = headChildren.length - 1; i > -1; i--) {\n const child = headChildren[i];\n const tagName = (child.tagName || '').toUpperCase();\n\n if (['STYLE', 'LINK'].indexOf(tagName) > -1) {\n beforeChild = child;\n }\n }\n\n DOCUMENT.head.insertBefore(style, beforeChild);\n return css;\n}\nconst idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\nfunction nextUniqueId() {\n let size = 12;\n let id = '';\n\n while (size-- > 0) {\n id += idPool[Math.random() * 62 | 0];\n }\n\n return id;\n}\nfunction toArray(obj) {\n const array = [];\n\n for (let i = (obj || []).length >>> 0; i--;) {\n array[i] = obj[i];\n }\n\n return array;\n}\nfunction classArray(node) {\n if (node.classList) {\n return toArray(node.classList);\n } else {\n return (node.getAttribute('class') || '').split(' ').filter(i => i);\n }\n}\nfunction htmlEscape(str) {\n return \"\".concat(str).replace(/&/g, '&').replace(/\"/g, '"').replace(/'/g, ''').replace(//g, '>');\n}\nfunction joinAttributes(attributes) {\n return Object.keys(attributes || {}).reduce((acc, attributeName) => {\n return acc + \"\".concat(attributeName, \"=\\\"\").concat(htmlEscape(attributes[attributeName]), \"\\\" \");\n }, '').trim();\n}\nfunction joinStyles(styles) {\n return Object.keys(styles || {}).reduce((acc, styleName) => {\n return acc + \"\".concat(styleName, \": \").concat(styles[styleName].trim(), \";\");\n }, '');\n}\nfunction transformIsMeaningful(transform) {\n return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;\n}\nfunction transformForSvg(_ref) {\n let {\n transform,\n containerWidth,\n iconWidth\n } = _ref;\n const outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n const innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n const innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n const innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n const inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n const path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n return {\n outer,\n inner,\n path\n };\n}\nfunction transformForCss(_ref2) {\n let {\n transform,\n width = UNITS_IN_GRID,\n height = UNITS_IN_GRID,\n startCentered = false\n } = _ref2;\n let val = '';\n\n if (startCentered && IS_IE) {\n val += \"translate(\".concat(transform.x / d$2 - width / 2, \"em, \").concat(transform.y / d$2 - height / 2, \"em) \");\n } else if (startCentered) {\n val += \"translate(calc(-50% + \".concat(transform.x / d$2, \"em), calc(-50% + \").concat(transform.y / d$2, \"em)) \");\n } else {\n val += \"translate(\".concat(transform.x / d$2, \"em, \").concat(transform.y / d$2, \"em) \");\n }\n\n val += \"scale(\".concat(transform.size / d$2 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / d$2 * (transform.flipY ? -1 : 1), \") \");\n val += \"rotate(\".concat(transform.rotate, \"deg) \");\n return val;\n}\n\nvar baseStyles = \":root, :host {\\n --fa-font-solid: normal 900 1em/1 \\\"Font Awesome 6 Free\\\";\\n --fa-font-regular: normal 400 1em/1 \\\"Font Awesome 6 Free\\\";\\n --fa-font-light: normal 300 1em/1 \\\"Font Awesome 6 Pro\\\";\\n --fa-font-thin: normal 100 1em/1 \\\"Font Awesome 6 Pro\\\";\\n --fa-font-duotone: normal 900 1em/1 \\\"Font Awesome 6 Duotone\\\";\\n --fa-font-brands: normal 400 1em/1 \\\"Font Awesome 6 Brands\\\";\\n --fa-font-sharp-solid: normal 900 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-sharp-regular: normal 400 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-sharp-light: normal 300 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-sharp-thin: normal 100 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-sharp-duotone-solid: normal 900 1em/1 \\\"Font Awesome 6 Sharp Duotone\\\";\\n}\\n\\nsvg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {\\n overflow: visible;\\n box-sizing: content-box;\\n}\\n\\n.svg-inline--fa {\\n display: var(--fa-display, inline-block);\\n height: 1em;\\n overflow: visible;\\n vertical-align: -0.125em;\\n}\\n.svg-inline--fa.fa-2xs {\\n vertical-align: 0.1em;\\n}\\n.svg-inline--fa.fa-xs {\\n vertical-align: 0em;\\n}\\n.svg-inline--fa.fa-sm {\\n vertical-align: -0.0714285705em;\\n}\\n.svg-inline--fa.fa-lg {\\n vertical-align: -0.2em;\\n}\\n.svg-inline--fa.fa-xl {\\n vertical-align: -0.25em;\\n}\\n.svg-inline--fa.fa-2xl {\\n vertical-align: -0.3125em;\\n}\\n.svg-inline--fa.fa-pull-left {\\n margin-right: var(--fa-pull-margin, 0.3em);\\n width: auto;\\n}\\n.svg-inline--fa.fa-pull-right {\\n margin-left: var(--fa-pull-margin, 0.3em);\\n width: auto;\\n}\\n.svg-inline--fa.fa-li {\\n width: var(--fa-li-width, 2em);\\n top: 0.25em;\\n}\\n.svg-inline--fa.fa-fw {\\n width: var(--fa-fw-width, 1.25em);\\n}\\n\\n.fa-layers svg.svg-inline--fa {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n\\n.fa-layers-counter, .fa-layers-text {\\n display: inline-block;\\n position: absolute;\\n text-align: center;\\n}\\n\\n.fa-layers {\\n display: inline-block;\\n height: 1em;\\n position: relative;\\n text-align: center;\\n vertical-align: -0.125em;\\n width: 1em;\\n}\\n.fa-layers svg.svg-inline--fa {\\n transform-origin: center center;\\n}\\n\\n.fa-layers-text {\\n left: 50%;\\n top: 50%;\\n transform: translate(-50%, -50%);\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter {\\n background-color: var(--fa-counter-background-color, #ff253a);\\n border-radius: var(--fa-counter-border-radius, 1em);\\n box-sizing: border-box;\\n color: var(--fa-inverse, #fff);\\n line-height: var(--fa-counter-line-height, 1);\\n max-width: var(--fa-counter-max-width, 5em);\\n min-width: var(--fa-counter-min-width, 1.5em);\\n overflow: hidden;\\n padding: var(--fa-counter-padding, 0.25em 0.5em);\\n right: var(--fa-right, 0);\\n text-overflow: ellipsis;\\n top: var(--fa-top, 0);\\n transform: scale(var(--fa-counter-scale, 0.25));\\n transform-origin: top right;\\n}\\n\\n.fa-layers-bottom-right {\\n bottom: var(--fa-bottom, 0);\\n right: var(--fa-right, 0);\\n top: auto;\\n transform: scale(var(--fa-layers-scale, 0.25));\\n transform-origin: bottom right;\\n}\\n\\n.fa-layers-bottom-left {\\n bottom: var(--fa-bottom, 0);\\n left: var(--fa-left, 0);\\n right: auto;\\n top: auto;\\n transform: scale(var(--fa-layers-scale, 0.25));\\n transform-origin: bottom left;\\n}\\n\\n.fa-layers-top-right {\\n top: var(--fa-top, 0);\\n right: var(--fa-right, 0);\\n transform: scale(var(--fa-layers-scale, 0.25));\\n transform-origin: top right;\\n}\\n\\n.fa-layers-top-left {\\n left: var(--fa-left, 0);\\n right: auto;\\n top: var(--fa-top, 0);\\n transform: scale(var(--fa-layers-scale, 0.25));\\n transform-origin: top left;\\n}\\n\\n.fa-1x {\\n font-size: 1em;\\n}\\n\\n.fa-2x {\\n font-size: 2em;\\n}\\n\\n.fa-3x {\\n font-size: 3em;\\n}\\n\\n.fa-4x {\\n font-size: 4em;\\n}\\n\\n.fa-5x {\\n font-size: 5em;\\n}\\n\\n.fa-6x {\\n font-size: 6em;\\n}\\n\\n.fa-7x {\\n font-size: 7em;\\n}\\n\\n.fa-8x {\\n font-size: 8em;\\n}\\n\\n.fa-9x {\\n font-size: 9em;\\n}\\n\\n.fa-10x {\\n font-size: 10em;\\n}\\n\\n.fa-2xs {\\n font-size: 0.625em;\\n line-height: 0.1em;\\n vertical-align: 0.225em;\\n}\\n\\n.fa-xs {\\n font-size: 0.75em;\\n line-height: 0.0833333337em;\\n vertical-align: 0.125em;\\n}\\n\\n.fa-sm {\\n font-size: 0.875em;\\n line-height: 0.0714285718em;\\n vertical-align: 0.0535714295em;\\n}\\n\\n.fa-lg {\\n font-size: 1.25em;\\n line-height: 0.05em;\\n vertical-align: -0.075em;\\n}\\n\\n.fa-xl {\\n font-size: 1.5em;\\n line-height: 0.0416666682em;\\n vertical-align: -0.125em;\\n}\\n\\n.fa-2xl {\\n font-size: 2em;\\n line-height: 0.03125em;\\n vertical-align: -0.1875em;\\n}\\n\\n.fa-fw {\\n text-align: center;\\n width: 1.25em;\\n}\\n\\n.fa-ul {\\n list-style-type: none;\\n margin-left: var(--fa-li-margin, 2.5em);\\n padding-left: 0;\\n}\\n.fa-ul > li {\\n position: relative;\\n}\\n\\n.fa-li {\\n left: calc(-1 * var(--fa-li-width, 2em));\\n position: absolute;\\n text-align: center;\\n width: var(--fa-li-width, 2em);\\n line-height: inherit;\\n}\\n\\n.fa-border {\\n border-color: var(--fa-border-color, #eee);\\n border-radius: var(--fa-border-radius, 0.1em);\\n border-style: var(--fa-border-style, solid);\\n border-width: var(--fa-border-width, 0.08em);\\n padding: var(--fa-border-padding, 0.2em 0.25em 0.15em);\\n}\\n\\n.fa-pull-left {\\n float: left;\\n margin-right: var(--fa-pull-margin, 0.3em);\\n}\\n\\n.fa-pull-right {\\n float: right;\\n margin-left: var(--fa-pull-margin, 0.3em);\\n}\\n\\n.fa-beat {\\n animation-name: fa-beat;\\n animation-delay: var(--fa-animation-delay, 0s);\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 1s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n}\\n\\n.fa-bounce {\\n animation-name: fa-bounce;\\n animation-delay: var(--fa-animation-delay, 0s);\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 1s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\\n}\\n\\n.fa-fade {\\n animation-name: fa-fade;\\n animation-delay: var(--fa-animation-delay, 0s);\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 1s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n}\\n\\n.fa-beat-fade {\\n animation-name: fa-beat-fade;\\n animation-delay: var(--fa-animation-delay, 0s);\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 1s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n}\\n\\n.fa-flip {\\n animation-name: fa-flip;\\n animation-delay: var(--fa-animation-delay, 0s);\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 1s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n}\\n\\n.fa-shake {\\n animation-name: fa-shake;\\n animation-delay: var(--fa-animation-delay, 0s);\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 1s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, linear);\\n}\\n\\n.fa-spin {\\n animation-name: fa-spin;\\n animation-delay: var(--fa-animation-delay, 0s);\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 2s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, linear);\\n}\\n\\n.fa-spin-reverse {\\n --fa-animation-direction: reverse;\\n}\\n\\n.fa-pulse,\\n.fa-spin-pulse {\\n animation-name: fa-spin;\\n animation-direction: var(--fa-animation-direction, normal);\\n animation-duration: var(--fa-animation-duration, 1s);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-timing-function: var(--fa-animation-timing, steps(8));\\n}\\n\\n@media (prefers-reduced-motion: reduce) {\\n .fa-beat,\\n.fa-bounce,\\n.fa-fade,\\n.fa-beat-fade,\\n.fa-flip,\\n.fa-pulse,\\n.fa-shake,\\n.fa-spin,\\n.fa-spin-pulse {\\n animation-delay: -1ms;\\n animation-duration: 1ms;\\n animation-iteration-count: 1;\\n transition-delay: 0s;\\n transition-duration: 0s;\\n }\\n}\\n@keyframes fa-beat {\\n 0%, 90% {\\n transform: scale(1);\\n }\\n 45% {\\n transform: scale(var(--fa-beat-scale, 1.25));\\n }\\n}\\n@keyframes fa-bounce {\\n 0% {\\n transform: scale(1, 1) translateY(0);\\n }\\n 10% {\\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n }\\n 30% {\\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n }\\n 50% {\\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n }\\n 57% {\\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n }\\n 64% {\\n transform: scale(1, 1) translateY(0);\\n }\\n 100% {\\n transform: scale(1, 1) translateY(0);\\n }\\n}\\n@keyframes fa-fade {\\n 50% {\\n opacity: var(--fa-fade-opacity, 0.4);\\n }\\n}\\n@keyframes fa-beat-fade {\\n 0%, 100% {\\n opacity: var(--fa-beat-fade-opacity, 0.4);\\n transform: scale(1);\\n }\\n 50% {\\n opacity: 1;\\n transform: scale(var(--fa-beat-fade-scale, 1.125));\\n }\\n}\\n@keyframes fa-flip {\\n 50% {\\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n }\\n}\\n@keyframes fa-shake {\\n 0% {\\n transform: rotate(-15deg);\\n }\\n 4% {\\n transform: rotate(15deg);\\n }\\n 8%, 24% {\\n transform: rotate(-18deg);\\n }\\n 12%, 28% {\\n transform: rotate(18deg);\\n }\\n 16% {\\n transform: rotate(-22deg);\\n }\\n 20% {\\n transform: rotate(22deg);\\n }\\n 32% {\\n transform: rotate(-12deg);\\n }\\n 36% {\\n transform: rotate(12deg);\\n }\\n 40%, 100% {\\n transform: rotate(0deg);\\n }\\n}\\n@keyframes fa-spin {\\n 0% {\\n transform: rotate(0deg);\\n }\\n 100% {\\n transform: rotate(360deg);\\n }\\n}\\n.fa-rotate-90 {\\n transform: rotate(90deg);\\n}\\n\\n.fa-rotate-180 {\\n transform: rotate(180deg);\\n}\\n\\n.fa-rotate-270 {\\n transform: rotate(270deg);\\n}\\n\\n.fa-flip-horizontal {\\n transform: scale(-1, 1);\\n}\\n\\n.fa-flip-vertical {\\n transform: scale(1, -1);\\n}\\n\\n.fa-flip-both,\\n.fa-flip-horizontal.fa-flip-vertical {\\n transform: scale(-1, -1);\\n}\\n\\n.fa-rotate-by {\\n transform: rotate(var(--fa-rotate-angle, 0));\\n}\\n\\n.fa-stack {\\n display: inline-block;\\n vertical-align: middle;\\n height: 2em;\\n position: relative;\\n width: 2.5em;\\n}\\n\\n.fa-stack-1x,\\n.fa-stack-2x {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n z-index: var(--fa-stack-z-index, auto);\\n}\\n\\n.svg-inline--fa.fa-stack-1x {\\n height: 1em;\\n width: 1.25em;\\n}\\n.svg-inline--fa.fa-stack-2x {\\n height: 2em;\\n width: 2.5em;\\n}\\n\\n.fa-inverse {\\n color: var(--fa-inverse, #fff);\\n}\\n\\n.sr-only,\\n.fa-sr-only {\\n position: absolute;\\n width: 1px;\\n height: 1px;\\n padding: 0;\\n margin: -1px;\\n overflow: hidden;\\n clip: rect(0, 0, 0, 0);\\n white-space: nowrap;\\n border-width: 0;\\n}\\n\\n.sr-only-focusable:not(:focus),\\n.fa-sr-only-focusable:not(:focus) {\\n position: absolute;\\n width: 1px;\\n height: 1px;\\n padding: 0;\\n margin: -1px;\\n overflow: hidden;\\n clip: rect(0, 0, 0, 0);\\n white-space: nowrap;\\n border-width: 0;\\n}\\n\\n.svg-inline--fa .fa-primary {\\n fill: var(--fa-primary-color, currentColor);\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa .fa-secondary {\\n fill: var(--fa-secondary-color, currentColor);\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-primary {\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa mask .fa-primary,\\n.svg-inline--fa mask .fa-secondary {\\n fill: black;\\n}\\n\\n.fad.fa-inverse,\\n.fa-duotone.fa-inverse {\\n color: var(--fa-inverse, #fff);\\n}\";\n\nfunction css() {\n const dcp = DEFAULT_CSS_PREFIX;\n const drc = DEFAULT_REPLACEMENT_CLASS;\n const fp = config.cssPrefix;\n const rc = config.replacementClass;\n let s = baseStyles;\n\n if (fp !== dcp || rc !== drc) {\n const dPatt = new RegExp(\"\\\\.\".concat(dcp, \"\\\\-\"), 'g');\n const customPropPatt = new RegExp(\"\\\\--\".concat(dcp, \"\\\\-\"), 'g');\n const rPatt = new RegExp(\"\\\\.\".concat(drc), 'g');\n s = s.replace(dPatt, \".\".concat(fp, \"-\")).replace(customPropPatt, \"--\".concat(fp, \"-\")).replace(rPatt, \".\".concat(rc));\n }\n\n return s;\n}\n\nlet _cssInserted = false;\n\nfunction ensureCss() {\n if (config.autoAddCss && !_cssInserted) {\n insertCss(css());\n _cssInserted = true;\n }\n}\n\nvar InjectCSS = {\n mixout() {\n return {\n dom: {\n css,\n insertCss: ensureCss\n }\n };\n },\n\n hooks() {\n return {\n beforeDOMElementCreation() {\n ensureCss();\n },\n\n beforeI2svg() {\n ensureCss();\n }\n\n };\n }\n\n};\n\nconst w$1 = WINDOW || {};\nif (!w$1[NAMESPACE_IDENTIFIER]) w$1[NAMESPACE_IDENTIFIER] = {};\nif (!w$1[NAMESPACE_IDENTIFIER].styles) w$1[NAMESPACE_IDENTIFIER].styles = {};\nif (!w$1[NAMESPACE_IDENTIFIER].hooks) w$1[NAMESPACE_IDENTIFIER].hooks = {};\nif (!w$1[NAMESPACE_IDENTIFIER].shims) w$1[NAMESPACE_IDENTIFIER].shims = [];\nvar namespace = w$1[NAMESPACE_IDENTIFIER];\n\nconst functions = [];\n\nconst listener = function () {\n DOCUMENT.removeEventListener('DOMContentLoaded', listener);\n loaded = 1;\n functions.map(fn => fn());\n};\n\nlet loaded = false;\n\nif (IS_DOM) {\n loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);\n if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);\n}\n\nfunction domready (fn) {\n if (!IS_DOM) return;\n loaded ? setTimeout(fn, 0) : functions.push(fn);\n}\n\nfunction toHtml(abstractNodes) {\n const {\n tag,\n attributes = {},\n children = []\n } = abstractNodes;\n\n if (typeof abstractNodes === 'string') {\n return htmlEscape(abstractNodes);\n } else {\n return \"<\".concat(tag, \" \").concat(joinAttributes(attributes), \">\").concat(children.map(toHtml).join(''), \"\");\n }\n}\n\nfunction iconFromMapping(mapping, prefix, iconName) {\n if (mapping && mapping[prefix] && mapping[prefix][iconName]) {\n return {\n prefix,\n iconName,\n icon: mapping[prefix][iconName]\n };\n }\n}\n\n/**\n * Internal helper to bind a function known to have 4 arguments\n * to a given context.\n */\n\nvar bindInternal4 = function bindInternal4(func, thisContext) {\n return function (a, b, c, d) {\n return func.call(thisContext, a, b, c, d);\n };\n};\n\n/**\n * # Reduce\n *\n * A fast object `.reduce()` implementation.\n *\n * @param {Object} subject The object to reduce over.\n * @param {Function} fn The reducer function.\n * @param {mixed} initialValue The initial value for the reducer, defaults to subject[0].\n * @param {Object} thisContext The context for the reducer.\n * @return {mixed} The final result.\n */\n\n\nvar reduce = function fastReduceObject(subject, fn, initialValue, thisContext) {\n var keys = Object.keys(subject),\n length = keys.length,\n iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,\n i,\n key,\n result;\n\n if (initialValue === undefined) {\n i = 1;\n result = subject[keys[0]];\n } else {\n i = 0;\n result = initialValue;\n }\n\n for (; i < length; i++) {\n key = keys[i];\n result = iterator(result, subject[key], key, subject);\n }\n\n return result;\n};\n\n/**\n * ucs2decode() and codePointAt() are both works of Mathias Bynens and licensed under MIT\n *\n * Copyright Mathias Bynens \n\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\nfunction ucs2decode(string) {\n const output = [];\n let counter = 0;\n const length = string.length;\n\n while (counter < length) {\n const value = string.charCodeAt(counter++);\n\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n const extra = string.charCodeAt(counter++);\n\n if ((extra & 0xFC00) == 0xDC00) {\n // eslint-disable-line eqeqeq\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n\n return output;\n}\n\nfunction toHex(unicode) {\n const decoded = ucs2decode(unicode);\n return decoded.length === 1 ? decoded[0].toString(16) : null;\n}\nfunction codePointAt(string, index) {\n const size = string.length;\n let first = string.charCodeAt(index);\n let second;\n\n if (first >= 0xD800 && first <= 0xDBFF && size > index + 1) {\n second = string.charCodeAt(index + 1);\n\n if (second >= 0xDC00 && second <= 0xDFFF) {\n return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n\n return first;\n}\n\nfunction normalizeIcons(icons) {\n return Object.keys(icons).reduce((acc, iconName) => {\n const icon = icons[iconName];\n const expanded = !!icon.icon;\n\n if (expanded) {\n acc[icon.iconName] = icon.icon;\n } else {\n acc[iconName] = icon;\n }\n\n return acc;\n }, {});\n}\n\nfunction defineIcons(prefix, icons) {\n let params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const {\n skipHooks = false\n } = params;\n const normalized = normalizeIcons(icons);\n\n if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {\n namespace.hooks.addPack(prefix, normalizeIcons(icons));\n } else {\n namespace.styles[prefix] = { ...(namespace.styles[prefix] || {}),\n ...normalized\n };\n }\n /**\n * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction\n * of new styles we needed to differentiate between them. Prefix `fa` is now an alias\n * for `fas` so we'll ease the upgrade process for our users by automatically defining\n * this as well.\n */\n\n\n if (prefix === 'fas') {\n defineIcons('fa', icons);\n }\n}\n\nconst {\n styles,\n shims\n} = namespace;\nconst LONG_STYLE = {\n [a]: Object.values(PREFIX_TO_LONG_STYLE[a]),\n [r]: Object.values(PREFIX_TO_LONG_STYLE[r]),\n [o]: Object.values(PREFIX_TO_LONG_STYLE[o])\n};\nlet _defaultUsablePrefix = null;\nlet _byUnicode = {};\nlet _byLigature = {};\nlet _byOldName = {};\nlet _byOldUnicode = {};\nlet _byAlias = {};\nconst PREFIXES = {\n [a]: Object.keys(PREFIX_TO_STYLE[a]),\n [r]: Object.keys(PREFIX_TO_STYLE[r]),\n [o]: Object.keys(PREFIX_TO_STYLE[o])\n};\n\nfunction isReserved(name) {\n return ~RESERVED_CLASSES.indexOf(name);\n}\n\nfunction getIconName(cssPrefix, cls) {\n const parts = cls.split('-');\n const prefix = parts[0];\n const iconName = parts.slice(1).join('-');\n\n if (prefix === cssPrefix && iconName !== '' && !isReserved(iconName)) {\n return iconName;\n } else {\n return null;\n }\n}\nconst build = () => {\n const lookup = reducer => {\n return reduce(styles, (o$$1, style, prefix) => {\n o$$1[prefix] = reduce(style, reducer, {});\n return o$$1;\n }, {});\n };\n\n _byUnicode = lookup((acc, icon, iconName) => {\n if (icon[3]) {\n acc[icon[3]] = iconName;\n }\n\n if (icon[2]) {\n const aliases = icon[2].filter(a$$1 => {\n return typeof a$$1 === 'number';\n });\n aliases.forEach(alias => {\n acc[alias.toString(16)] = iconName;\n });\n }\n\n return acc;\n });\n _byLigature = lookup((acc, icon, iconName) => {\n acc[iconName] = iconName;\n\n if (icon[2]) {\n const aliases = icon[2].filter(a$$1 => {\n return typeof a$$1 === 'string';\n });\n aliases.forEach(alias => {\n acc[alias] = iconName;\n });\n }\n\n return acc;\n });\n _byAlias = lookup((acc, icon, iconName) => {\n const aliases = icon[2];\n acc[iconName] = iconName;\n aliases.forEach(alias => {\n acc[alias] = iconName;\n });\n return acc;\n }); // If we have a Kit, we can't determine if regular is available since we\n // could be auto-fetching it. We'll have to assume that it is available.\n\n const hasRegular = 'far' in styles || config.autoFetchSvg;\n const shimLookups = reduce(shims, (acc, shim) => {\n const maybeNameMaybeUnicode = shim[0];\n let prefix = shim[1];\n const iconName = shim[2];\n\n if (prefix === 'far' && !hasRegular) {\n prefix = 'fas';\n }\n\n if (typeof maybeNameMaybeUnicode === 'string') {\n acc.names[maybeNameMaybeUnicode] = {\n prefix,\n iconName\n };\n }\n\n if (typeof maybeNameMaybeUnicode === 'number') {\n acc.unicodes[maybeNameMaybeUnicode.toString(16)] = {\n prefix,\n iconName\n };\n }\n\n return acc;\n }, {\n names: {},\n unicodes: {}\n });\n _byOldName = shimLookups.names;\n _byOldUnicode = shimLookups.unicodes;\n _defaultUsablePrefix = getCanonicalPrefix(config.styleDefault, {\n family: config.familyDefault\n });\n};\nonChange(c$$1 => {\n _defaultUsablePrefix = getCanonicalPrefix(c$$1.styleDefault, {\n family: config.familyDefault\n });\n});\nbuild();\nfunction byUnicode(prefix, unicode) {\n return (_byUnicode[prefix] || {})[unicode];\n}\nfunction byLigature(prefix, ligature) {\n return (_byLigature[prefix] || {})[ligature];\n}\nfunction byAlias(prefix, alias) {\n return (_byAlias[prefix] || {})[alias];\n}\nfunction byOldName(name) {\n return _byOldName[name] || {\n prefix: null,\n iconName: null\n };\n}\nfunction byOldUnicode(unicode) {\n const oldUnicode = _byOldUnicode[unicode];\n const newUnicode = byUnicode('fas', unicode);\n return oldUnicode || (newUnicode ? {\n prefix: 'fas',\n iconName: newUnicode\n } : null) || {\n prefix: null,\n iconName: null\n };\n}\nfunction getDefaultUsablePrefix() {\n return _defaultUsablePrefix;\n}\nconst emptyCanonicalIcon = () => {\n return {\n prefix: null,\n iconName: null,\n rest: []\n };\n};\nfunction getCanonicalPrefix(styleOrPrefix) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n family = a\n } = params;\n const style = PREFIX_TO_STYLE[family][styleOrPrefix];\n const prefix = STYLE_TO_PREFIX[family][styleOrPrefix] || STYLE_TO_PREFIX[family][style];\n const defined = styleOrPrefix in namespace.styles ? styleOrPrefix : null;\n const result = prefix || defined || null;\n return result;\n}\nconst PREFIXES_FOR_FAMILY = {\n [a]: Object.keys(PREFIX_TO_LONG_STYLE[a]),\n [r]: Object.keys(PREFIX_TO_LONG_STYLE[r]),\n [o]: Object.keys(PREFIX_TO_LONG_STYLE[o])\n};\nfunction getCanonicalIcon(values) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n skipLookups = false\n } = params;\n const famProps = {\n [a]: \"\".concat(config.cssPrefix, \"-\").concat(a),\n [r]: \"\".concat(config.cssPrefix, \"-\").concat(r),\n [o]: \"\".concat(config.cssPrefix, \"-\").concat(o)\n };\n let givenPrefix = null;\n let family = a;\n const nonDuotoneFamilyIds = c.filter(familyId => familyId !== t);\n nonDuotoneFamilyIds.forEach(familyId => {\n if (values.includes(famProps[familyId]) || values.some(v$$1 => PREFIXES_FOR_FAMILY[familyId].includes(v$$1))) {\n family = familyId;\n }\n });\n const canonical = values.reduce((acc, cls) => {\n const iconName = getIconName(config.cssPrefix, cls);\n\n if (styles[cls]) {\n cls = LONG_STYLE[family].includes(cls) ? LONG_STYLE_TO_PREFIX[family][cls] : cls;\n givenPrefix = cls;\n acc.prefix = cls;\n } else if (PREFIXES[family].indexOf(cls) > -1) {\n givenPrefix = cls;\n acc.prefix = getCanonicalPrefix(cls, {\n family\n });\n } else if (iconName) {\n acc.iconName = iconName;\n } else if (cls !== config.replacementClass && !nonDuotoneFamilyIds.some(familyName => cls === famProps[familyName])) {\n acc.rest.push(cls);\n }\n\n if (!skipLookups && acc.prefix && acc.iconName) {\n const shim = givenPrefix === 'fa' ? byOldName(acc.iconName) : {};\n const aliasIconName = byAlias(acc.prefix, acc.iconName);\n\n if (shim.prefix) {\n givenPrefix = null;\n }\n\n acc.iconName = shim.iconName || aliasIconName || acc.iconName;\n acc.prefix = shim.prefix || acc.prefix;\n\n if (acc.prefix === 'far' && !styles['far'] && styles['fas'] && !config.autoFetchSvg) {\n // Allow a fallback from the regular style to solid if regular is not available\n // but only if we aren't auto-fetching SVGs\n acc.prefix = 'fas';\n }\n }\n\n return acc;\n }, emptyCanonicalIcon());\n\n if (values.includes('fa-brands') || values.includes('fab')) {\n canonical.prefix = 'fab';\n }\n\n if (values.includes('fa-duotone') || values.includes('fad')) {\n canonical.prefix = 'fad';\n }\n\n if (!canonical.prefix && family === r && (styles['fass'] || config.autoFetchSvg)) {\n canonical.prefix = 'fass';\n canonical.iconName = byAlias(canonical.prefix, canonical.iconName) || canonical.iconName;\n }\n\n if (!canonical.prefix && family === o && (styles['fasds'] || config.autoFetchSvg)) {\n canonical.prefix = 'fasds';\n canonical.iconName = byAlias(canonical.prefix, canonical.iconName) || canonical.iconName;\n }\n\n if (canonical.prefix === 'fa' || givenPrefix === 'fa') {\n // The fa prefix is not canonical. So if it has made it through until this point\n // we will shift it to the correct prefix.\n canonical.prefix = getDefaultUsablePrefix() || 'fas';\n }\n\n return canonical;\n}\n\nclass Library {\n constructor() {\n this.definitions = {};\n }\n\n add() {\n for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {\n definitions[_key] = arguments[_key];\n }\n\n const additions = definitions.reduce(this._pullDefinitions, {});\n Object.keys(additions).forEach(key => {\n this.definitions[key] = { ...(this.definitions[key] || {}),\n ...additions[key]\n };\n defineIcons(key, additions[key]); // TODO can we stop doing this? We can't get the icons by 'fa-solid' any longer so this probably needs to change\n\n const longPrefix = PREFIX_TO_LONG_STYLE[a][key];\n if (longPrefix) defineIcons(longPrefix, additions[key]);\n build();\n });\n }\n\n reset() {\n this.definitions = {};\n }\n\n _pullDefinitions(additions, definition) {\n const normalized = definition.prefix && definition.iconName && definition.icon ? {\n 0: definition\n } : definition;\n Object.keys(normalized).map(key => {\n const {\n prefix,\n iconName,\n icon\n } = normalized[key];\n const aliases = icon[2];\n if (!additions[prefix]) additions[prefix] = {};\n\n if (aliases.length > 0) {\n aliases.forEach(alias => {\n if (typeof alias === 'string') {\n additions[prefix][alias] = icon;\n }\n });\n }\n\n additions[prefix][iconName] = icon;\n });\n return additions;\n }\n\n}\n\nlet _plugins = [];\nlet _hooks = {};\nconst providers = {};\nconst defaultProviderKeys = Object.keys(providers);\nfunction registerPlugins(nextPlugins, _ref) {\n let {\n mixoutsTo: obj\n } = _ref;\n _plugins = nextPlugins;\n _hooks = {};\n Object.keys(providers).forEach(k => {\n if (defaultProviderKeys.indexOf(k) === -1) {\n delete providers[k];\n }\n });\n\n _plugins.forEach(plugin => {\n const mixout = plugin.mixout ? plugin.mixout() : {};\n Object.keys(mixout).forEach(tk => {\n if (typeof mixout[tk] === 'function') {\n obj[tk] = mixout[tk];\n }\n\n if (typeof mixout[tk] === 'object') {\n Object.keys(mixout[tk]).forEach(sk => {\n if (!obj[tk]) {\n obj[tk] = {};\n }\n\n obj[tk][sk] = mixout[tk][sk];\n });\n }\n });\n\n if (plugin.hooks) {\n const hooks = plugin.hooks();\n Object.keys(hooks).forEach(hook => {\n if (!_hooks[hook]) {\n _hooks[hook] = [];\n }\n\n _hooks[hook].push(hooks[hook]);\n });\n }\n\n if (plugin.provides) {\n plugin.provides(providers);\n }\n });\n\n return obj;\n}\nfunction chainHooks(hook, accumulator) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n const hookFns = _hooks[hook] || [];\n hookFns.forEach(hookFn => {\n accumulator = hookFn.apply(null, [accumulator, ...args]); // eslint-disable-line no-useless-call\n });\n return accumulator;\n}\nfunction callHooks(hook) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n const hookFns = _hooks[hook] || [];\n hookFns.forEach(hookFn => {\n hookFn.apply(null, args);\n });\n return undefined;\n}\nfunction callProvided() {\n const hook = arguments[0];\n const args = Array.prototype.slice.call(arguments, 1);\n return providers[hook] ? providers[hook].apply(null, args) : undefined;\n}\n\nfunction findIconDefinition(iconLookup) {\n if (iconLookup.prefix === 'fa') {\n iconLookup.prefix = 'fas';\n }\n\n let {\n iconName\n } = iconLookup;\n const prefix = iconLookup.prefix || getDefaultUsablePrefix();\n if (!iconName) return;\n iconName = byAlias(prefix, iconName) || iconName;\n return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);\n}\nconst library = new Library();\nconst noAuto = () => {\n config.autoReplaceSvg = false;\n config.observeMutations = false;\n callHooks('noAuto');\n};\nconst dom = {\n i2svg: function () {\n let params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (IS_DOM) {\n callHooks('beforeI2svg', params);\n callProvided('pseudoElements2svg', params);\n return callProvided('i2svg', params);\n } else {\n return Promise.reject(new Error('Operation requires a DOM of some kind.'));\n }\n },\n watch: function () {\n let params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const {\n autoReplaceSvgRoot\n } = params;\n\n if (config.autoReplaceSvg === false) {\n config.autoReplaceSvg = true;\n }\n\n config.observeMutations = true;\n domready(() => {\n autoReplace({\n autoReplaceSvgRoot\n });\n callHooks('watch', params);\n });\n }\n};\nconst parse = {\n icon: icon => {\n if (icon === null) {\n return null;\n }\n\n if (typeof icon === 'object' && icon.prefix && icon.iconName) {\n return {\n prefix: icon.prefix,\n iconName: byAlias(icon.prefix, icon.iconName) || icon.iconName\n };\n }\n\n if (Array.isArray(icon) && icon.length === 2) {\n const iconName = icon[1].indexOf('fa-') === 0 ? icon[1].slice(3) : icon[1];\n const prefix = getCanonicalPrefix(icon[0]);\n return {\n prefix,\n iconName: byAlias(prefix, iconName) || iconName\n };\n }\n\n if (typeof icon === 'string' && (icon.indexOf(\"\".concat(config.cssPrefix, \"-\")) > -1 || icon.match(ICON_SELECTION_SYNTAX_PATTERN))) {\n const canonicalIcon = getCanonicalIcon(icon.split(' '), {\n skipLookups: true\n });\n return {\n prefix: canonicalIcon.prefix || getDefaultUsablePrefix(),\n iconName: byAlias(canonicalIcon.prefix, canonicalIcon.iconName) || canonicalIcon.iconName\n };\n }\n\n if (typeof icon === 'string') {\n const prefix = getDefaultUsablePrefix();\n return {\n prefix,\n iconName: byAlias(prefix, icon) || icon\n };\n }\n }\n};\nconst api = {\n noAuto,\n config,\n dom,\n parse,\n library,\n findIconDefinition,\n toHtml\n};\n\nconst autoReplace = function () {\n let params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const {\n autoReplaceSvgRoot = DOCUMENT\n } = params;\n if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({\n node: autoReplaceSvgRoot\n });\n};\n\nfunction domVariants(val, abstractCreator) {\n Object.defineProperty(val, 'abstract', {\n get: abstractCreator\n });\n Object.defineProperty(val, 'html', {\n get: function () {\n return val.abstract.map(a => toHtml(a));\n }\n });\n Object.defineProperty(val, 'node', {\n get: function () {\n if (!IS_DOM) return;\n const container = DOCUMENT.createElement('div');\n container.innerHTML = val.html;\n return container.children;\n }\n });\n return val;\n}\n\nfunction asIcon (_ref) {\n let {\n children,\n main,\n mask,\n attributes,\n styles,\n transform\n } = _ref;\n\n if (transformIsMeaningful(transform) && main.found && !mask.found) {\n const {\n width,\n height\n } = main;\n const offset = {\n x: width / height / 2,\n y: 0.5\n };\n attributes['style'] = joinStyles({ ...styles,\n 'transform-origin': \"\".concat(offset.x + transform.x / 16, \"em \").concat(offset.y + transform.y / 16, \"em\")\n });\n }\n\n return [{\n tag: 'svg',\n attributes,\n children\n }];\n}\n\nfunction asSymbol (_ref) {\n let {\n prefix,\n iconName,\n children,\n attributes,\n symbol\n } = _ref;\n const id = symbol === true ? \"\".concat(prefix, \"-\").concat(config.cssPrefix, \"-\").concat(iconName) : symbol;\n return [{\n tag: 'svg',\n attributes: {\n style: 'display: none;'\n },\n children: [{\n tag: 'symbol',\n attributes: { ...attributes,\n id\n },\n children\n }]\n }];\n}\n\nfunction makeInlineSvgAbstract(params) {\n const {\n icons: {\n main,\n mask\n },\n prefix,\n iconName,\n transform,\n symbol,\n title,\n maskId,\n titleId,\n extra,\n watchable = false\n } = params;\n const {\n width,\n height\n } = mask.found ? mask : main;\n const isUploadedIcon = prefix === 'fak';\n const attrClass = [config.replacementClass, iconName ? \"\".concat(config.cssPrefix, \"-\").concat(iconName) : ''].filter(c => extra.classes.indexOf(c) === -1).filter(c => c !== '' || !!c).concat(extra.classes).join(' ');\n let content = {\n children: [],\n attributes: { ...extra.attributes,\n 'data-prefix': prefix,\n 'data-icon': iconName,\n 'class': attrClass,\n 'role': extra.attributes.role || 'img',\n 'xmlns': 'http://www.w3.org/2000/svg',\n 'viewBox': \"0 0 \".concat(width, \" \").concat(height)\n }\n };\n const uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf('fa-fw') ? {\n width: \"\".concat(width / height * 16 * 0.0625, \"em\")\n } : {};\n\n if (watchable) {\n content.attributes[DATA_FA_I2SVG] = '';\n }\n\n if (title) {\n content.children.push({\n tag: 'title',\n attributes: {\n id: content.attributes['aria-labelledby'] || \"title-\".concat(titleId || nextUniqueId())\n },\n children: [title]\n });\n delete content.attributes.title;\n }\n\n const args = { ...content,\n prefix,\n iconName,\n main,\n mask,\n maskId,\n transform,\n symbol,\n styles: { ...uploadedIconWidthStyle,\n ...extra.styles\n }\n };\n const {\n children,\n attributes\n } = mask.found && main.found ? callProvided('generateAbstractMask', args) || {\n children: [],\n attributes: {}\n } : callProvided('generateAbstractIcon', args) || {\n children: [],\n attributes: {}\n };\n args.children = children;\n args.attributes = attributes;\n\n if (symbol) {\n return asSymbol(args);\n } else {\n return asIcon(args);\n }\n}\nfunction makeLayersTextAbstract(params) {\n const {\n content,\n width,\n height,\n transform,\n title,\n extra,\n watchable = false\n } = params;\n const attributes = { ...extra.attributes,\n ...(title ? {\n 'title': title\n } : {}),\n 'class': extra.classes.join(' ')\n };\n\n if (watchable) {\n attributes[DATA_FA_I2SVG] = '';\n }\n\n const styles = { ...extra.styles\n };\n\n if (transformIsMeaningful(transform)) {\n styles['transform'] = transformForCss({\n transform,\n startCentered: true,\n width,\n height\n });\n styles['-webkit-transform'] = styles['transform'];\n }\n\n const styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n const val = [];\n val.push({\n tag: 'span',\n attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\nfunction makeLayersCounterAbstract(params) {\n const {\n content,\n title,\n extra\n } = params;\n const attributes = { ...extra.attributes,\n ...(title ? {\n 'title': title\n } : {}),\n 'class': extra.classes.join(' ')\n };\n const styleString = joinStyles(extra.styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n const val = [];\n val.push({\n tag: 'span',\n attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\n\nconst {\n styles: styles$1\n} = namespace;\nfunction asFoundIcon(icon) {\n const width = icon[0];\n const height = icon[1];\n const [vectorData] = icon.slice(4);\n let element = null;\n\n if (Array.isArray(vectorData)) {\n element = {\n tag: 'g',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.GROUP)\n },\n children: [{\n tag: 'path',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.SECONDARY),\n fill: 'currentColor',\n d: vectorData[0]\n }\n }, {\n tag: 'path',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.PRIMARY),\n fill: 'currentColor',\n d: vectorData[1]\n }\n }]\n };\n } else {\n element = {\n tag: 'path',\n attributes: {\n fill: 'currentColor',\n d: vectorData\n }\n };\n }\n\n return {\n found: true,\n width,\n height,\n icon: element\n };\n}\nconst missingIconResolutionMixin = {\n found: false,\n width: 512,\n height: 512\n};\n\nfunction maybeNotifyMissing(iconName, prefix) {\n if (!PRODUCTION && !config.showMissingIcons && iconName) {\n console.error(\"Icon with name \\\"\".concat(iconName, \"\\\" and prefix \\\"\").concat(prefix, \"\\\" is missing.\"));\n }\n}\n\nfunction findIcon(iconName, prefix) {\n let givenPrefix = prefix;\n\n if (prefix === 'fa' && config.styleDefault !== null) {\n prefix = getDefaultUsablePrefix();\n }\n\n return new Promise((resolve, reject) => {\n if (givenPrefix === 'fa') {\n const shim = byOldName(iconName) || {};\n iconName = shim.iconName || iconName;\n prefix = shim.prefix || prefix;\n }\n\n if (iconName && prefix && styles$1[prefix] && styles$1[prefix][iconName]) {\n const icon = styles$1[prefix][iconName];\n return resolve(asFoundIcon(icon));\n }\n\n maybeNotifyMissing(iconName, prefix);\n resolve({ ...missingIconResolutionMixin,\n icon: config.showMissingIcons && iconName ? callProvided('missingIconAbstract') || {} : {}\n });\n });\n}\n\nconst noop$1 = () => {};\n\nconst p$2 = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {\n mark: noop$1,\n measure: noop$1\n};\nconst preamble = \"FA \\\"6.6.0\\\"\";\n\nconst begin = name => {\n p$2.mark(\"\".concat(preamble, \" \").concat(name, \" begins\"));\n return () => end(name);\n};\n\nconst end = name => {\n p$2.mark(\"\".concat(preamble, \" \").concat(name, \" ends\"));\n p$2.measure(\"\".concat(preamble, \" \").concat(name), \"\".concat(preamble, \" \").concat(name, \" begins\"), \"\".concat(preamble, \" \").concat(name, \" ends\"));\n};\n\nvar perf = {\n begin,\n end\n};\n\nconst noop$2 = () => {};\n\nfunction isWatched(node) {\n const i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;\n return typeof i2svg === 'string';\n}\n\nfunction hasPrefixAndIcon(node) {\n const prefix = node.getAttribute ? node.getAttribute(DATA_PREFIX) : null;\n const icon = node.getAttribute ? node.getAttribute(DATA_ICON) : null;\n return prefix && icon;\n}\n\nfunction hasBeenReplaced(node) {\n return node && node.classList && node.classList.contains && node.classList.contains(config.replacementClass);\n}\n\nfunction getMutator() {\n if (config.autoReplaceSvg === true) {\n return mutators.replace;\n }\n\n const mutator = mutators[config.autoReplaceSvg];\n return mutator || mutators.replace;\n}\n\nfunction createElementNS(tag) {\n return DOCUMENT.createElementNS('http://www.w3.org/2000/svg', tag);\n}\n\nfunction createElement(tag) {\n return DOCUMENT.createElement(tag);\n}\n\nfunction convertSVG(abstractObj) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n ceFn = abstractObj.tag === 'svg' ? createElementNS : createElement\n } = params;\n\n if (typeof abstractObj === 'string') {\n return DOCUMENT.createTextNode(abstractObj);\n }\n\n const tag = ceFn(abstractObj.tag);\n Object.keys(abstractObj.attributes || []).forEach(function (key) {\n tag.setAttribute(key, abstractObj.attributes[key]);\n });\n const children = abstractObj.children || [];\n children.forEach(function (child) {\n tag.appendChild(convertSVG(child, {\n ceFn\n }));\n });\n return tag;\n}\n\nfunction nodeAsComment(node) {\n let comment = \" \".concat(node.outerHTML, \" \");\n /* BEGIN.ATTRIBUTION */\n\n comment = \"\".concat(comment, \"Font Awesome fontawesome.com \");\n /* END.ATTRIBUTION */\n\n return comment;\n}\n\nconst mutators = {\n replace: function (mutation) {\n const node = mutation[0];\n\n if (node.parentNode) {\n mutation[1].forEach(abstract => {\n node.parentNode.insertBefore(convertSVG(abstract), node);\n });\n\n if (node.getAttribute(DATA_FA_I2SVG) === null && config.keepOriginalSource) {\n let comment = DOCUMENT.createComment(nodeAsComment(node));\n node.parentNode.replaceChild(comment, node);\n } else {\n node.remove();\n }\n }\n },\n nest: function (mutation) {\n const node = mutation[0];\n const abstract = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it.\n // Short-circuit to the standard replacement\n\n if (~classArray(node).indexOf(config.replacementClass)) {\n return mutators.replace(mutation);\n }\n\n const forSvg = new RegExp(\"\".concat(config.cssPrefix, \"-.*\"));\n delete abstract[0].attributes.id;\n\n if (abstract[0].attributes.class) {\n const splitClasses = abstract[0].attributes.class.split(' ').reduce((acc, cls) => {\n if (cls === config.replacementClass || cls.match(forSvg)) {\n acc.toSvg.push(cls);\n } else {\n acc.toNode.push(cls);\n }\n\n return acc;\n }, {\n toNode: [],\n toSvg: []\n });\n abstract[0].attributes.class = splitClasses.toSvg.join(' ');\n\n if (splitClasses.toNode.length === 0) {\n node.removeAttribute('class');\n } else {\n node.setAttribute('class', splitClasses.toNode.join(' '));\n }\n }\n\n const newInnerHTML = abstract.map(a => toHtml(a)).join('\\n');\n node.setAttribute(DATA_FA_I2SVG, '');\n node.innerHTML = newInnerHTML;\n }\n};\n\nfunction performOperationSync(op) {\n op();\n}\n\nfunction perform(mutations, callback) {\n const callbackFunction = typeof callback === 'function' ? callback : noop$2;\n\n if (mutations.length === 0) {\n callbackFunction();\n } else {\n let frame = performOperationSync;\n\n if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {\n frame = WINDOW.requestAnimationFrame || performOperationSync;\n }\n\n frame(() => {\n const mutator = getMutator();\n const mark = perf.begin('mutate');\n mutations.map(mutator);\n mark();\n callbackFunction();\n });\n }\n}\nlet disabled = false;\nfunction disableObservation() {\n disabled = true;\n}\nfunction enableObservation() {\n disabled = false;\n}\nlet mo$1 = null;\nfunction observe(options) {\n if (!MUTATION_OBSERVER) {\n return;\n }\n\n if (!config.observeMutations) {\n return;\n }\n\n const {\n treeCallback = noop$2,\n nodeCallback = noop$2,\n pseudoElementsCallback = noop$2,\n observeMutationsRoot = DOCUMENT\n } = options;\n mo$1 = new MUTATION_OBSERVER(objects => {\n if (disabled) return;\n const defaultPrefix = getDefaultUsablePrefix();\n toArray(objects).forEach(mutationRecord => {\n if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {\n if (config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target);\n }\n\n treeCallback(mutationRecord.target);\n }\n\n if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target.parentNode);\n }\n\n if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {\n if (mutationRecord.attributeName === 'class' && hasPrefixAndIcon(mutationRecord.target)) {\n const {\n prefix,\n iconName\n } = getCanonicalIcon(classArray(mutationRecord.target));\n mutationRecord.target.setAttribute(DATA_PREFIX, prefix || defaultPrefix);\n if (iconName) mutationRecord.target.setAttribute(DATA_ICON, iconName);\n } else if (hasBeenReplaced(mutationRecord.target)) {\n nodeCallback(mutationRecord.target);\n }\n }\n });\n });\n if (!IS_DOM) return;\n mo$1.observe(observeMutationsRoot, {\n childList: true,\n attributes: true,\n characterData: true,\n subtree: true\n });\n}\nfunction disconnect() {\n if (!mo$1) return;\n mo$1.disconnect();\n}\n\nfunction styleParser (node) {\n const style = node.getAttribute('style');\n let val = [];\n\n if (style) {\n val = style.split(';').reduce((acc, style) => {\n const styles = style.split(':');\n const prop = styles[0];\n const value = styles.slice(1);\n\n if (prop && value.length > 0) {\n acc[prop] = value.join(':').trim();\n }\n\n return acc;\n }, {});\n }\n\n return val;\n}\n\nfunction classParser (node) {\n const existingPrefix = node.getAttribute('data-prefix');\n const existingIconName = node.getAttribute('data-icon');\n const innerText = node.innerText !== undefined ? node.innerText.trim() : '';\n let val = getCanonicalIcon(classArray(node));\n\n if (!val.prefix) {\n val.prefix = getDefaultUsablePrefix();\n }\n\n if (existingPrefix && existingIconName) {\n val.prefix = existingPrefix;\n val.iconName = existingIconName;\n }\n\n if (val.iconName && val.prefix) {\n return val;\n }\n\n if (val.prefix && innerText.length > 0) {\n val.iconName = byLigature(val.prefix, node.innerText) || byUnicode(val.prefix, toHex(node.innerText));\n }\n\n if (!val.iconName && config.autoFetchSvg && node.firstChild && node.firstChild.nodeType === Node.TEXT_NODE) {\n val.iconName = node.firstChild.data;\n }\n\n return val;\n}\n\nfunction attributesParser (node) {\n const extraAttributes = toArray(node.attributes).reduce((acc, attr) => {\n if (acc.name !== 'class' && acc.name !== 'style') {\n acc[attr.name] = attr.value;\n }\n\n return acc;\n }, {});\n const title = node.getAttribute('title');\n const titleId = node.getAttribute('data-fa-title-id');\n\n if (config.autoA11y) {\n if (title) {\n extraAttributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n extraAttributes['aria-hidden'] = 'true';\n extraAttributes['focusable'] = 'false';\n }\n }\n\n return extraAttributes;\n}\n\nfunction blankMeta() {\n return {\n iconName: null,\n title: null,\n titleId: null,\n prefix: null,\n transform: meaninglessTransform,\n symbol: false,\n mask: {\n iconName: null,\n prefix: null,\n rest: []\n },\n maskId: null,\n extra: {\n classes: [],\n styles: {},\n attributes: {}\n }\n };\n}\nfunction parseMeta(node) {\n let parser = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n styleParser: true\n };\n const {\n iconName,\n prefix,\n rest: extraClasses\n } = classParser(node);\n const extraAttributes = attributesParser(node);\n const pluginMeta = chainHooks('parseNodeAttributes', {}, node);\n let extraStyles = parser.styleParser ? styleParser(node) : [];\n return {\n iconName,\n title: node.getAttribute('title'),\n titleId: node.getAttribute('data-fa-title-id'),\n prefix,\n transform: meaninglessTransform,\n mask: {\n iconName: null,\n prefix: null,\n rest: []\n },\n maskId: null,\n symbol: false,\n extra: {\n classes: extraClasses,\n styles: extraStyles,\n attributes: extraAttributes\n },\n ...pluginMeta\n };\n}\n\nconst {\n styles: styles$2\n} = namespace;\n\nfunction generateMutation(node) {\n const nodeMeta = config.autoReplaceSvg === 'nest' ? parseMeta(node, {\n styleParser: false\n }) : parseMeta(node);\n\n if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {\n return callProvided('generateLayersText', node, nodeMeta);\n } else {\n return callProvided('generateSvgReplacementMutation', node, nodeMeta);\n }\n}\n\nlet knownPrefixes = new Set();\nFAMILIES.map(family => {\n knownPrefixes.add(\"fa-\".concat(family));\n});\nObject.keys(PREFIX_TO_STYLE[a]).map(knownPrefixes.add.bind(knownPrefixes));\nObject.keys(PREFIX_TO_STYLE[r]).map(knownPrefixes.add.bind(knownPrefixes));\nObject.keys(PREFIX_TO_STYLE[o]).map(knownPrefixes.add.bind(knownPrefixes));\nknownPrefixes = [...knownPrefixes];\n\nfunction onTree(root) {\n let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n if (!IS_DOM) return Promise.resolve();\n const htmlClassList = DOCUMENT.documentElement.classList;\n\n const hclAdd = suffix => htmlClassList.add(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n\n const hclRemove = suffix => htmlClassList.remove(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n\n const prefixes = config.autoFetchSvg ? knownPrefixes : FAMILIES.map(f$$1 => \"fa-\".concat(f$$1)).concat(Object.keys(styles$2));\n\n if (!prefixes.includes('fa')) {\n prefixes.push('fa');\n }\n\n const prefixesDomQuery = [\".\".concat(LAYERS_TEXT_CLASSNAME, \":not([\").concat(DATA_FA_I2SVG, \"])\")].concat(prefixes.map(p$$1 => \".\".concat(p$$1, \":not([\").concat(DATA_FA_I2SVG, \"])\"))).join(', ');\n\n if (prefixesDomQuery.length === 0) {\n return Promise.resolve();\n }\n\n let candidates = [];\n\n try {\n candidates = toArray(root.querySelectorAll(prefixesDomQuery));\n } catch (e$$1) {// noop\n }\n\n if (candidates.length > 0) {\n hclAdd('pending');\n hclRemove('complete');\n } else {\n return Promise.resolve();\n }\n\n const mark = perf.begin('onTree');\n const mutations = candidates.reduce((acc, node) => {\n try {\n const mutation = generateMutation(node);\n\n if (mutation) {\n acc.push(mutation);\n }\n } catch (e$$1) {\n if (!PRODUCTION) {\n if (e$$1.name === 'MissingIcon') {\n console.error(e$$1);\n }\n }\n }\n\n return acc;\n }, []);\n return new Promise((resolve, reject) => {\n Promise.all(mutations).then(resolvedMutations => {\n perform(resolvedMutations, () => {\n hclAdd('active');\n hclAdd('complete');\n hclRemove('pending');\n if (typeof callback === 'function') callback();\n mark();\n resolve();\n });\n }).catch(e$$1 => {\n mark();\n reject(e$$1);\n });\n });\n}\n\nfunction onNode(node) {\n let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n generateMutation(node).then(mutation => {\n if (mutation) {\n perform([mutation], callback);\n }\n });\n}\n\nfunction resolveIcons(next) {\n return function (maybeIconDefinition) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});\n let {\n mask\n } = params;\n\n if (mask) {\n mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});\n }\n\n return next(iconDefinition, { ...params,\n mask\n });\n };\n}\n\nconst render = function (iconDefinition) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n transform = meaninglessTransform,\n symbol = false,\n mask = null,\n maskId = null,\n title = null,\n titleId = null,\n classes = [],\n attributes = {},\n styles = {}\n } = params;\n if (!iconDefinition) return;\n const {\n prefix,\n iconName,\n icon\n } = iconDefinition;\n return domVariants({\n type: 'icon',\n ...iconDefinition\n }, () => {\n callHooks('beforeDOMElementCreation', {\n iconDefinition,\n params\n });\n\n if (config.autoA11y) {\n if (title) {\n attributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n attributes['aria-hidden'] = 'true';\n attributes['focusable'] = 'false';\n }\n }\n\n return makeInlineSvgAbstract({\n icons: {\n main: asFoundIcon(icon),\n mask: mask ? asFoundIcon(mask.icon) : {\n found: false,\n width: null,\n height: null,\n icon: {}\n }\n },\n prefix,\n iconName,\n transform: { ...meaninglessTransform,\n ...transform\n },\n symbol,\n title,\n maskId,\n titleId,\n extra: {\n attributes,\n styles,\n classes\n }\n });\n });\n};\nvar ReplaceElements = {\n mixout() {\n return {\n icon: resolveIcons(render)\n };\n },\n\n hooks() {\n return {\n mutationObserverCallbacks(accumulator) {\n accumulator.treeCallback = onTree;\n accumulator.nodeCallback = onNode;\n return accumulator;\n }\n\n };\n },\n\n provides(providers$$1) {\n providers$$1.i2svg = function (params) {\n const {\n node = DOCUMENT,\n callback = () => {}\n } = params;\n return onTree(node, callback);\n };\n\n providers$$1.generateSvgReplacementMutation = function (node, nodeMeta) {\n const {\n iconName,\n title,\n titleId,\n prefix,\n transform,\n symbol,\n mask,\n maskId,\n extra\n } = nodeMeta;\n return new Promise((resolve, reject) => {\n Promise.all([findIcon(iconName, prefix), mask.iconName ? findIcon(mask.iconName, mask.prefix) : Promise.resolve({\n found: false,\n width: 512,\n height: 512,\n icon: {}\n })]).then(_ref => {\n let [main, mask] = _ref;\n resolve([node, makeInlineSvgAbstract({\n icons: {\n main,\n mask\n },\n prefix,\n iconName,\n transform,\n symbol,\n maskId,\n title,\n titleId,\n extra,\n watchable: true\n })]);\n }).catch(reject);\n });\n };\n\n providers$$1.generateAbstractIcon = function (_ref2) {\n let {\n children,\n attributes,\n main,\n transform,\n styles\n } = _ref2;\n const styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n let nextChild;\n\n if (transformIsMeaningful(transform)) {\n nextChild = callProvided('generateAbstractTransformGrouping', {\n main,\n transform,\n containerWidth: main.width,\n iconWidth: main.width\n });\n }\n\n children.push(nextChild || main.icon);\n return {\n children,\n attributes\n };\n };\n }\n\n};\n\nvar Layers = {\n mixout() {\n return {\n layer(assembler) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n classes = []\n } = params;\n return domVariants({\n type: 'layer'\n }, () => {\n callHooks('beforeDOMElementCreation', {\n assembler,\n params\n });\n let children = [];\n assembler(args => {\n Array.isArray(args) ? args.map(a => {\n children = children.concat(a.abstract);\n }) : children = children.concat(args.abstract);\n });\n return [{\n tag: 'span',\n attributes: {\n class: [\"\".concat(config.cssPrefix, \"-layers\"), ...classes].join(' ')\n },\n children\n }];\n });\n }\n\n };\n }\n\n};\n\nvar LayersCounter = {\n mixout() {\n return {\n counter(content) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n title = null,\n classes = [],\n attributes = {},\n styles = {}\n } = params;\n return domVariants({\n type: 'counter',\n content\n }, () => {\n callHooks('beforeDOMElementCreation', {\n content,\n params\n });\n return makeLayersCounterAbstract({\n content: content.toString(),\n title,\n extra: {\n attributes,\n styles,\n classes: [\"\".concat(config.cssPrefix, \"-layers-counter\"), ...classes]\n }\n });\n });\n }\n\n };\n }\n\n};\n\nvar LayersText = {\n mixout() {\n return {\n text(content) {\n let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const {\n transform = meaninglessTransform,\n title = null,\n classes = [],\n attributes = {},\n styles = {}\n } = params;\n return domVariants({\n type: 'text',\n content\n }, () => {\n callHooks('beforeDOMElementCreation', {\n content,\n params\n });\n return makeLayersTextAbstract({\n content,\n transform: { ...meaninglessTransform,\n ...transform\n },\n title,\n extra: {\n attributes,\n styles,\n classes: [\"\".concat(config.cssPrefix, \"-layers-text\"), ...classes]\n }\n });\n });\n }\n\n };\n },\n\n provides(providers$$1) {\n providers$$1.generateLayersText = function (node, nodeMeta) {\n const {\n title,\n transform,\n extra\n } = nodeMeta;\n let width = null;\n let height = null;\n\n if (IS_IE) {\n const computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);\n const boundingClientRect = node.getBoundingClientRect();\n width = boundingClientRect.width / computedFontSize;\n height = boundingClientRect.height / computedFontSize;\n }\n\n if (config.autoA11y && !title) {\n extra.attributes['aria-hidden'] = 'true';\n }\n\n return Promise.resolve([node, makeLayersTextAbstract({\n content: node.innerHTML,\n width,\n height,\n transform,\n title,\n extra,\n watchable: true\n })]);\n };\n }\n\n};\n\nconst CLEAN_CONTENT_PATTERN = new RegExp('\\u{22}', 'ug');\nconst SECONDARY_UNICODE_RANGE = [1105920, 1112319];\nconst _FONT_FAMILY_WEIGHT_TO_PREFIX = { ...{\n FontAwesome: {\n normal: 'fas',\n 400: 'fas'\n }\n },\n ...eo,\n ...ao,\n ...mo\n};\nconst FONT_FAMILY_WEIGHT_TO_PREFIX = Object.keys(_FONT_FAMILY_WEIGHT_TO_PREFIX).reduce((acc, key) => {\n acc[key.toLowerCase()] = _FONT_FAMILY_WEIGHT_TO_PREFIX[key];\n return acc;\n}, {});\nconst FONT_FAMILY_WEIGHT_FALLBACK = Object.keys(FONT_FAMILY_WEIGHT_TO_PREFIX).reduce((acc, fontFamily) => {\n const weights = FONT_FAMILY_WEIGHT_TO_PREFIX[fontFamily];\n acc[fontFamily] = weights[900] || [...Object.entries(weights)][0][1];\n return acc;\n}, {});\nfunction hexValueFromContent(content) {\n const cleaned = content.replace(CLEAN_CONTENT_PATTERN, '');\n const codePoint = codePointAt(cleaned, 0);\n const isPrependTen = codePoint >= SECONDARY_UNICODE_RANGE[0] && codePoint <= SECONDARY_UNICODE_RANGE[1];\n const isDoubled = cleaned.length === 2 ? cleaned[0] === cleaned[1] : false;\n return {\n value: isDoubled ? toHex(cleaned[0]) : toHex(cleaned),\n isSecondary: isPrependTen || isDoubled\n };\n}\nfunction getPrefix(fontFamily, fontWeight) {\n const fontFamilySanitized = fontFamily.replace(/^['\"]|['\"]$/g, '').toLowerCase();\n const fontWeightInteger = parseInt(fontWeight);\n const fontWeightSanitized = isNaN(fontWeightInteger) ? 'normal' : fontWeightInteger;\n return (FONT_FAMILY_WEIGHT_TO_PREFIX[fontFamilySanitized] || {})[fontWeightSanitized] || FONT_FAMILY_WEIGHT_FALLBACK[fontFamilySanitized];\n}\n\nfunction replaceForPosition(node, position) {\n const pendingAttribute = \"\".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));\n return new Promise((resolve, reject) => {\n if (node.getAttribute(pendingAttribute) !== null) {\n // This node is already being processed\n return resolve();\n }\n\n const children = toArray(node.children);\n const alreadyProcessedPseudoElement = children.filter(c => c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position)[0];\n const styles = WINDOW.getComputedStyle(node, position);\n const fontFamily = styles.getPropertyValue('font-family');\n const fontFamilyMatch = fontFamily.match(FONT_FAMILY_PATTERN);\n const fontWeight = styles.getPropertyValue('font-weight');\n const content = styles.getPropertyValue('content');\n\n if (alreadyProcessedPseudoElement && !fontFamilyMatch) {\n // If we've already processed it but the current computed style does not result in a font-family,\n // that probably means that a class name that was previously present to make the icon has been\n // removed. So we now should delete the icon.\n node.removeChild(alreadyProcessedPseudoElement);\n return resolve();\n } else if (fontFamilyMatch && content !== 'none' && content !== '') {\n const content = styles.getPropertyValue('content');\n let prefix = getPrefix(fontFamily, fontWeight);\n const {\n value: hexValue,\n isSecondary\n } = hexValueFromContent(content);\n const isV4 = fontFamilyMatch[0].startsWith('FontAwesome');\n let iconName = byUnicode(prefix, hexValue);\n let iconIdentifier = iconName;\n\n if (isV4) {\n const iconName4 = byOldUnicode(hexValue);\n\n if (iconName4.iconName && iconName4.prefix) {\n iconName = iconName4.iconName;\n prefix = iconName4.prefix;\n }\n } // Only convert the pseudo element in this ::before/::after position into an icon if we haven't\n // already done so with the same prefix and iconName\n\n\n if (iconName && !isSecondary && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {\n node.setAttribute(pendingAttribute, iconIdentifier);\n\n if (alreadyProcessedPseudoElement) {\n // Delete the old one, since we're replacing it with a new one\n node.removeChild(alreadyProcessedPseudoElement);\n }\n\n const meta = blankMeta();\n const {\n extra\n } = meta;\n extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;\n findIcon(iconName, prefix).then(main => {\n const abstract = makeInlineSvgAbstract({ ...meta,\n icons: {\n main,\n mask: emptyCanonicalIcon()\n },\n prefix,\n iconName: iconIdentifier,\n extra,\n watchable: true\n });\n const element = DOCUMENT.createElementNS('http://www.w3.org/2000/svg', 'svg');\n\n if (position === '::before') {\n node.insertBefore(element, node.firstChild);\n } else {\n node.appendChild(element);\n }\n\n element.outerHTML = abstract.map(a => toHtml(a)).join('\\n');\n node.removeAttribute(pendingAttribute);\n resolve();\n }).catch(reject);\n } else {\n resolve();\n }\n } else {\n resolve();\n }\n });\n}\n\nfunction replace(node) {\n return Promise.all([replaceForPosition(node, '::before'), replaceForPosition(node, '::after')]);\n}\n\nfunction processable(node) {\n return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg');\n}\n\nfunction searchPseudoElements(root) {\n if (!IS_DOM) return;\n return new Promise((resolve, reject) => {\n const operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);\n const end = perf.begin('searchPseudoElements');\n disableObservation();\n Promise.all(operations).then(() => {\n end();\n enableObservation();\n resolve();\n }).catch(() => {\n end();\n enableObservation();\n reject();\n });\n });\n}\n\nvar PseudoElements = {\n hooks() {\n return {\n mutationObserverCallbacks(accumulator) {\n accumulator.pseudoElementsCallback = searchPseudoElements;\n return accumulator;\n }\n\n };\n },\n\n provides(providers) {\n providers.pseudoElements2svg = function (params) {\n const {\n node = DOCUMENT\n } = params;\n\n if (config.searchPseudoElements) {\n searchPseudoElements(node);\n }\n };\n }\n\n};\n\nlet _unwatched = false;\nvar MutationObserver$1 = {\n mixout() {\n return {\n dom: {\n unwatch() {\n disableObservation();\n _unwatched = true;\n }\n\n }\n };\n },\n\n hooks() {\n return {\n bootstrap() {\n observe(chainHooks('mutationObserverCallbacks', {}));\n },\n\n noAuto() {\n disconnect();\n },\n\n watch(params) {\n const {\n observeMutationsRoot\n } = params;\n\n if (_unwatched) {\n enableObservation();\n } else {\n observe(chainHooks('mutationObserverCallbacks', {\n observeMutationsRoot\n }));\n }\n }\n\n };\n }\n\n};\n\nconst parseTransformString = transformString => {\n let transform = {\n size: 16,\n x: 0,\n y: 0,\n flipX: false,\n flipY: false,\n rotate: 0\n };\n return transformString.toLowerCase().split(' ').reduce((acc, n) => {\n const parts = n.toLowerCase().split('-');\n const first = parts[0];\n let rest = parts.slice(1).join('-');\n\n if (first && rest === 'h') {\n acc.flipX = true;\n return acc;\n }\n\n if (first && rest === 'v') {\n acc.flipY = true;\n return acc;\n }\n\n rest = parseFloat(rest);\n\n if (isNaN(rest)) {\n return acc;\n }\n\n switch (first) {\n case 'grow':\n acc.size = acc.size + rest;\n break;\n\n case 'shrink':\n acc.size = acc.size - rest;\n break;\n\n case 'left':\n acc.x = acc.x - rest;\n break;\n\n case 'right':\n acc.x = acc.x + rest;\n break;\n\n case 'up':\n acc.y = acc.y - rest;\n break;\n\n case 'down':\n acc.y = acc.y + rest;\n break;\n\n case 'rotate':\n acc.rotate = acc.rotate + rest;\n break;\n }\n\n return acc;\n }, transform);\n};\nvar PowerTransforms = {\n mixout() {\n return {\n parse: {\n transform: transformString => {\n return parseTransformString(transformString);\n }\n }\n };\n },\n\n hooks() {\n return {\n parseNodeAttributes(accumulator, node) {\n const transformString = node.getAttribute('data-fa-transform');\n\n if (transformString) {\n accumulator.transform = parseTransformString(transformString);\n }\n\n return accumulator;\n }\n\n };\n },\n\n provides(providers) {\n providers.generateAbstractTransformGrouping = function (_ref) {\n let {\n main,\n transform,\n containerWidth,\n iconWidth\n } = _ref;\n const outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n const innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n const innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n const innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n const inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n const path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n const operations = {\n outer,\n inner,\n path\n };\n return {\n tag: 'g',\n attributes: { ...operations.outer\n },\n children: [{\n tag: 'g',\n attributes: { ...operations.inner\n },\n children: [{\n tag: main.icon.tag,\n children: main.icon.children,\n attributes: { ...main.icon.attributes,\n ...operations.path\n }\n }]\n }]\n };\n };\n }\n\n};\n\nconst ALL_SPACE = {\n x: 0,\n y: 0,\n width: '100%',\n height: '100%'\n};\n\nfunction fillBlack(abstract) {\n let force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (abstract.attributes && (abstract.attributes.fill || force)) {\n abstract.attributes.fill = 'black';\n }\n\n return abstract;\n}\n\nfunction deGroup(abstract) {\n if (abstract.tag === 'g') {\n return abstract.children;\n } else {\n return [abstract];\n }\n}\n\nvar Masks = {\n hooks() {\n return {\n parseNodeAttributes(accumulator, node) {\n const maskData = node.getAttribute('data-fa-mask');\n const mask = !maskData ? emptyCanonicalIcon() : getCanonicalIcon(maskData.split(' ').map(i => i.trim()));\n\n if (!mask.prefix) {\n mask.prefix = getDefaultUsablePrefix();\n }\n\n accumulator.mask = mask;\n accumulator.maskId = node.getAttribute('data-fa-mask-id');\n return accumulator;\n }\n\n };\n },\n\n provides(providers) {\n providers.generateAbstractMask = function (_ref) {\n let {\n children,\n attributes,\n main,\n mask,\n maskId: explicitMaskId,\n transform\n } = _ref;\n const {\n width: mainWidth,\n icon: mainPath\n } = main;\n const {\n width: maskWidth,\n icon: maskPath\n } = mask;\n const trans = transformForSvg({\n transform,\n containerWidth: maskWidth,\n iconWidth: mainWidth\n });\n const maskRect = {\n tag: 'rect',\n attributes: { ...ALL_SPACE,\n fill: 'white'\n }\n };\n const maskInnerGroupChildrenMixin = mainPath.children ? {\n children: mainPath.children.map(fillBlack)\n } : {};\n const maskInnerGroup = {\n tag: 'g',\n attributes: { ...trans.inner\n },\n children: [fillBlack({\n tag: mainPath.tag,\n attributes: { ...mainPath.attributes,\n ...trans.path\n },\n ...maskInnerGroupChildrenMixin\n })]\n };\n const maskOuterGroup = {\n tag: 'g',\n attributes: { ...trans.outer\n },\n children: [maskInnerGroup]\n };\n const maskId = \"mask-\".concat(explicitMaskId || nextUniqueId());\n const clipId = \"clip-\".concat(explicitMaskId || nextUniqueId());\n const maskTag = {\n tag: 'mask',\n attributes: { ...ALL_SPACE,\n id: maskId,\n maskUnits: 'userSpaceOnUse',\n maskContentUnits: 'userSpaceOnUse'\n },\n children: [maskRect, maskOuterGroup]\n };\n const defs = {\n tag: 'defs',\n children: [{\n tag: 'clipPath',\n attributes: {\n id: clipId\n },\n children: deGroup(maskPath)\n }, maskTag]\n };\n children.push(defs, {\n tag: 'rect',\n attributes: {\n fill: 'currentColor',\n 'clip-path': \"url(#\".concat(clipId, \")\"),\n mask: \"url(#\".concat(maskId, \")\"),\n ...ALL_SPACE\n }\n });\n return {\n children,\n attributes\n };\n };\n }\n\n};\n\nvar MissingIconIndicator = {\n provides(providers) {\n let reduceMotion = false;\n\n if (WINDOW.matchMedia) {\n reduceMotion = WINDOW.matchMedia('(prefers-reduced-motion: reduce)').matches;\n }\n\n providers.missingIconAbstract = function () {\n const gChildren = [];\n const FILL = {\n fill: 'currentColor'\n };\n const ANIMATION_BASE = {\n attributeType: 'XML',\n repeatCount: 'indefinite',\n dur: '2s'\n }; // Ring\n\n gChildren.push({\n tag: 'path',\n attributes: { ...FILL,\n d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'\n }\n });\n const OPACITY_ANIMATE = { ...ANIMATION_BASE,\n attributeName: 'opacity'\n };\n const dot = {\n tag: 'circle',\n attributes: { ...FILL,\n cx: '256',\n cy: '364',\n r: '28'\n },\n children: []\n };\n\n if (!reduceMotion) {\n dot.children.push({\n tag: 'animate',\n attributes: { ...ANIMATION_BASE,\n attributeName: 'r',\n values: '28;14;28;28;14;28;'\n }\n }, {\n tag: 'animate',\n attributes: { ...OPACITY_ANIMATE,\n values: '1;0;1;1;0;1;'\n }\n });\n }\n\n gChildren.push(dot);\n gChildren.push({\n tag: 'path',\n attributes: { ...FILL,\n opacity: '1',\n d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'\n },\n children: reduceMotion ? [] : [{\n tag: 'animate',\n attributes: { ...OPACITY_ANIMATE,\n values: '1;0;0;0;0;1;'\n }\n }]\n });\n\n if (!reduceMotion) {\n // Exclamation\n gChildren.push({\n tag: 'path',\n attributes: { ...FILL,\n opacity: '0',\n d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'\n },\n children: [{\n tag: 'animate',\n attributes: { ...OPACITY_ANIMATE,\n values: '0;0;1;1;0;0;'\n }\n }]\n });\n }\n\n return {\n tag: 'g',\n attributes: {\n 'class': 'missing'\n },\n children: gChildren\n };\n };\n }\n\n};\n\nvar SvgSymbols = {\n hooks() {\n return {\n parseNodeAttributes(accumulator, node) {\n const symbolData = node.getAttribute('data-fa-symbol');\n const symbol = symbolData === null ? false : symbolData === '' ? true : symbolData;\n accumulator['symbol'] = symbol;\n return accumulator;\n }\n\n };\n }\n\n};\n\nvar plugins = [InjectCSS, ReplaceElements, Layers, LayersCounter, LayersText, PseudoElements, MutationObserver$1, PowerTransforms, Masks, MissingIconIndicator, SvgSymbols];\n\nregisterPlugins(plugins, {\n mixoutsTo: api\n});\nconst noAuto$1 = api.noAuto;\nconst config$1 = api.config;\nconst library$1 = api.library;\nconst dom$1 = api.dom;\nconst parse$1 = api.parse;\nconst findIconDefinition$1 = api.findIconDefinition;\nconst toHtml$1 = api.toHtml;\nconst icon = api.icon;\nconst layer = api.layer;\nconst text = api.text;\nconst counter = api.counter;\n\nexport { noAuto$1 as noAuto, config$1 as config, library$1 as library, dom$1 as dom, parse$1 as parse, findIconDefinition$1 as findIconDefinition, toHtml$1 as toHtml, icon, layer, text, counter, api };\n","const prefix = \"fas\";\nconst fa0 = {\n prefix: 'fas',\n iconName: '0',\n icon: [320, 512, [], \"30\", \"M0 192C0 103.6 71.6 32 160 32s160 71.6 160 160l0 128c0 88.4-71.6 160-160 160S0 408.4 0 320L0 192zM160 96c-53 0-96 43-96 96l0 128c0 53 43 96 96 96s96-43 96-96l0-128c0-53-43-96-96-96z\"]\n};\nconst fa1 = {\n prefix: 'fas',\n iconName: '1',\n icon: [256, 512, [], \"31\", \"M160 64c0-11.8-6.5-22.6-16.9-28.2s-23-5-32.8 1.6l-96 64C-.5 111.2-4.4 131 5.4 145.8s29.7 18.7 44.4 8.9L96 123.8 96 416l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0 96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-352z\"]\n};\nconst fa2 = {\n prefix: 'fas',\n iconName: '2',\n icon: [320, 512, [], \"32\", \"M142.9 96c-21.5 0-42.2 8.5-57.4 23.8L54.6 150.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L40.2 74.5C67.5 47.3 104.4 32 142.9 32C223 32 288 97 288 177.1c0 38.5-15.3 75.4-42.5 102.6L109.3 416 288 416c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9L200.2 234.5c15.2-15.2 23.8-35.9 23.8-57.4c0-44.8-36.3-81.1-81.1-81.1z\"]\n};\nconst fa3 = {\n prefix: 'fas',\n iconName: '3',\n icon: [320, 512, [], \"33\", \"M0 64C0 46.3 14.3 32 32 32l240 0c13.2 0 25 8.1 29.8 20.4s1.5 26.3-8.2 35.2L162.3 208l21.7 0c75.1 0 136 60.9 136 136s-60.9 136-136 136l-78.6 0C63 480 24.2 456 5.3 418.1l-1.9-3.8c-7.9-15.8-1.5-35 14.3-42.9s35-1.5 42.9 14.3l1.9 3.8c8.1 16.3 24.8 26.5 42.9 26.5l78.6 0c39.8 0 72-32.2 72-72s-32.2-72-72-72L80 272c-13.2 0-25-8.1-29.8-20.4s-1.5-26.3 8.2-35.2L189.7 96 32 96C14.3 96 0 81.7 0 64z\"]\n};\nconst fa4 = {\n prefix: 'fas',\n iconName: '4',\n icon: [384, 512, [], \"34\", \"M189 77.6c7.5-16 .7-35.1-15.3-42.6s-35.1-.7-42.6 15.3L3 322.4c-4.7 9.9-3.9 21.5 1.9 30.8S21 368 32 368l224 0 0 80c0 17.7 14.3 32 32 32s32-14.3 32-32l0-80 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-144c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 144L82.4 304 189 77.6z\"]\n};\nconst fa5 = {\n prefix: 'fas',\n iconName: '5',\n icon: [320, 512, [], \"35\", \"M32.5 58.3C35.3 43.1 48.5 32 64 32l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L90.7 96 70.3 208 184 208c75.1 0 136 60.9 136 136s-60.9 136-136 136l-83.5 0c-39.4 0-75.4-22.3-93-57.5l-4.1-8.2c-7.9-15.8-1.5-35 14.3-42.9s35-1.5 42.9 14.3l4.1 8.2c6.8 13.6 20.6 22.1 35.8 22.1l83.5 0c39.8 0 72-32.2 72-72s-32.2-72-72-72L32 272c-9.5 0-18.5-4.2-24.6-11.5s-8.6-16.9-6.9-26.2l32-176z\"]\n};\nconst fa6 = {\n prefix: 'fas',\n iconName: '6',\n icon: [320, 512, [], \"36\", \"M232.4 84.7c11.4-13.5 9.7-33.7-3.8-45.1s-33.7-9.7-45.1 3.8L38.6 214.7C14.7 242.9 1.1 278.4 .1 315.2c0 1.4-.1 2.9-.1 4.3l0 .5c0 88.4 71.6 160 160 160s160-71.6 160-160c0-85.5-67.1-155.4-151.5-159.8l63.9-75.6zM256 320A96 96 0 1 1 64 320a96 96 0 1 1 192 0z\"]\n};\nconst fa7 = {\n prefix: 'fas',\n iconName: '7',\n icon: [320, 512, [], \"37\", \"M0 64C0 46.3 14.3 32 32 32l256 0c11.5 0 22 6.1 27.7 16.1s5.7 22.2-.1 32.1l-224 384c-8.9 15.3-28.5 20.4-43.8 11.5s-20.4-28.5-11.5-43.8L232.3 96 32 96C14.3 96 0 81.7 0 64z\"]\n};\nconst fa8 = {\n prefix: 'fas',\n iconName: '8',\n icon: [320, 512, [], \"38\", \"M304 160c0-70.7-57.3-128-128-128l-32 0C73.3 32 16 89.3 16 160c0 34.6 13.7 66 36 89C20.5 272.3 0 309.8 0 352c0 70.7 57.3 128 128 128l64 0c70.7 0 128-57.3 128-128c0-42.2-20.5-79.7-52-103c22.3-23 36-54.4 36-89zM176.1 288l15.9 0c35.3 0 64 28.7 64 64s-28.7 64-64 64l-64 0c-35.3 0-64-28.7-64-64s28.7-64 64-64l15.9 0c0 0 .1 0 .1 0l32 0c0 0 .1 0 .1 0zm0-64c0 0 0 0 0 0l-32 0c0 0 0 0 0 0c-35.3 0-64-28.7-64-64c0-35.3 28.7-64 64-64l32 0c35.3 0 64 28.7 64 64c0 35.3-28.6 64-64 64z\"]\n};\nconst fa9 = {\n prefix: 'fas',\n iconName: '9',\n icon: [320, 512, [], \"39\", \"M64 192a96 96 0 1 0 192 0A96 96 0 1 0 64 192zm87.5 159.8C67.1 347.4 0 277.5 0 192C0 103.6 71.6 32 160 32s160 71.6 160 160c0 2.6-.1 5.3-.2 7.9c-1.7 35.7-15.2 70-38.4 97.4l-145 171.4c-11.4 13.5-31.6 15.2-45.1 3.8s-15.2-31.6-3.8-45.1l63.9-75.6z\"]\n};\nconst faFillDrip = {\n prefix: 'fas',\n iconName: 'fill-drip',\n icon: [576, 512, [], \"f576\", \"M41.4 9.4C53.9-3.1 74.1-3.1 86.6 9.4L168 90.7l53.1-53.1c28.1-28.1 73.7-28.1 101.8 0L474.3 189.1c28.1 28.1 28.1 73.7 0 101.8L283.9 481.4c-37.5 37.5-98.3 37.5-135.8 0L30.6 363.9c-37.5-37.5-37.5-98.3 0-135.8L122.7 136 41.4 54.6c-12.5-12.5-12.5-32.8 0-45.3zm176 221.3L168 181.3 75.9 273.4c-4.2 4.2-7 9.3-8.4 14.6l319.2 0 42.3-42.3c3.1-3.1 3.1-8.2 0-11.3L277.7 82.9c-3.1-3.1-8.2-3.1-11.3 0L213.3 136l49.4 49.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0zM512 512c-35.3 0-64-28.7-64-64c0-25.2 32.6-79.6 51.2-108.7c6-9.4 19.5-9.4 25.5 0C543.4 368.4 576 422.8 576 448c0 35.3-28.7 64-64 64z\"]\n};\nconst faArrowsToCircle = {\n prefix: 'fas',\n iconName: 'arrows-to-circle',\n icon: [640, 512, [], \"e4bd\", \"M9.4 9.4C21.9-3.1 42.1-3.1 54.6 9.4L160 114.7 160 96c0-17.7 14.3-32 32-32s32 14.3 32 32l0 96c0 4.3-.9 8.5-2.4 12.2c-1.6 3.7-3.8 7.3-6.9 10.3l-.1 .1c-3.1 3-6.6 5.3-10.3 6.9c-3.8 1.6-7.9 2.4-12.2 2.4l-96 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l18.7 0L9.4 54.6C-3.1 42.1-3.1 21.9 9.4 9.4zM256 256a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM114.7 352L96 352c-17.7 0-32-14.3-32-32s14.3-32 32-32l96 0s0 0 0 0l.1 0c8.8 0 16.7 3.6 22.5 9.3l.1 .1c3 3.1 5.3 6.6 6.9 10.3c1.6 3.8 2.4 7.9 2.4 12.2l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-18.7L54.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L114.7 352zM416 96c0-17.7 14.3-32 32-32s32 14.3 32 32l0 18.7L585.4 9.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L525.3 160l18.7 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0c-8.8 0-16.8-3.6-22.6-9.3l-.1-.1c-3-3.1-5.3-6.6-6.9-10.3s-2.4-7.8-2.4-12.2l0-.1s0 0 0 0l0-96zM525.3 352L630.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L480 397.3l0 18.7c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96s0 0 0 0l0-.1c0-4.3 .9-8.4 2.4-12.2c1.6-3.8 3.9-7.3 6.9-10.4c5.8-5.8 13.7-9.3 22.5-9.4l.1 0s0 0 0 0l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-18.7 0z\"]\n};\nconst faCircleChevronRight = {\n prefix: 'fas',\n iconName: 'circle-chevron-right',\n icon: [512, 512, [\"chevron-circle-right\"], \"f138\", \"M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM241 377c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l87-87-87-87c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L345 239c9.4 9.4 9.4 24.6 0 33.9L241 377z\"]\n};\nconst faChevronCircleRight = faCircleChevronRight;\nconst faAt = {\n prefix: 'fas',\n iconName: 'at',\n icon: [512, 512, [61946], \"40\", \"M256 64C150 64 64 150 64 256s86 192 192 192c17.7 0 32 14.3 32 32s-14.3 32-32 32C114.6 512 0 397.4 0 256S114.6 0 256 0S512 114.6 512 256l0 32c0 53-43 96-96 96c-29.3 0-55.6-13.2-73.2-33.9C320 371.1 289.5 384 256 384c-70.7 0-128-57.3-128-128s57.3-128 128-128c27.9 0 53.7 8.9 74.7 24.1c5.7-5 13.1-8.1 21.3-8.1c17.7 0 32 14.3 32 32l0 80 0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32c0-106-86-192-192-192zm64 192a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nconst faTrashCan = {\n prefix: 'fas',\n iconName: 'trash-can',\n icon: [448, 512, [61460, \"trash-alt\"], \"f2ed\", \"M135.2 17.7C140.6 6.8 151.7 0 163.8 0L284.2 0c12.1 0 23.2 6.8 28.6 17.7L320 32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64S14.3 32 32 32l96 0 7.2-14.3zM32 128l384 0 0 320c0 35.3-28.7 64-64 64L96 512c-35.3 0-64-28.7-64-64l0-320zm96 64c-8.8 0-16 7.2-16 16l0 224c0 8.8 7.2 16 16 16s16-7.2 16-16l0-224c0-8.8-7.2-16-16-16zm96 0c-8.8 0-16 7.2-16 16l0 224c0 8.8 7.2 16 16 16s16-7.2 16-16l0-224c0-8.8-7.2-16-16-16zm96 0c-8.8 0-16 7.2-16 16l0 224c0 8.8 7.2 16 16 16s16-7.2 16-16l0-224c0-8.8-7.2-16-16-16z\"]\n};\nconst faTrashAlt = faTrashCan;\nconst faTextHeight = {\n prefix: 'fas',\n iconName: 'text-height',\n icon: [576, 512, [], \"f034\", \"M64 128l0-32 64 0 0 320-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-320 64 0 0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-48c0-26.5-21.5-48-48-48L160 32 48 32C21.5 32 0 53.5 0 80l0 48c0 17.7 14.3 32 32 32s32-14.3 32-32zM502.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8l32 0 0 192-32 0c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8l-32 0 0-192 32 0c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64z\"]\n};\nconst faUserXmark = {\n prefix: 'fas',\n iconName: 'user-xmark',\n icon: [640, 512, [\"user-times\"], \"f235\", \"M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304l91.4 0C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7L29.7 512C13.3 512 0 498.7 0 482.3zM471 143c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nconst faUserTimes = faUserXmark;\nconst faStethoscope = {\n prefix: 'fas',\n iconName: 'stethoscope',\n icon: [576, 512, [129658], \"f0f1\", \"M142.4 21.9c5.6 16.8-3.5 34.9-20.2 40.5L96 71.1 96 192c0 53 43 96 96 96s96-43 96-96l0-120.9-26.1-8.7c-16.8-5.6-25.8-23.7-20.2-40.5s23.7-25.8 40.5-20.2l26.1 8.7C334.4 19.1 352 43.5 352 71.1L352 192c0 77.2-54.6 141.6-127.3 156.7C231 404.6 278.4 448 336 448c61.9 0 112-50.1 112-112l0-70.7c-28.3-12.3-48-40.5-48-73.3c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3l0 70.7c0 97.2-78.8 176-176 176c-92.9 0-168.9-71.9-175.5-163.1C87.2 334.2 32 269.6 32 192L32 71.1c0-27.5 17.6-52 43.8-60.7l26.1-8.7c16.8-5.6 34.9 3.5 40.5 20.2zM480 224a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faMessage = {\n prefix: 'fas',\n iconName: 'message',\n icon: [512, 512, [\"comment-alt\"], \"f27a\", \"M64 0C28.7 0 0 28.7 0 64L0 352c0 35.3 28.7 64 64 64l96 0 0 80c0 6.1 3.4 11.6 8.8 14.3s11.9 2.1 16.8-1.5L309.3 416 448 416c35.3 0 64-28.7 64-64l0-288c0-35.3-28.7-64-64-64L64 0z\"]\n};\nconst faCommentAlt = faMessage;\nconst faInfo = {\n prefix: 'fas',\n iconName: 'info',\n icon: [192, 512, [], \"f129\", \"M48 80a48 48 0 1 1 96 0A48 48 0 1 1 48 80zM0 224c0-17.7 14.3-32 32-32l64 0c17.7 0 32 14.3 32 32l0 224 32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0 0-192-32 0c-17.7 0-32-14.3-32-32z\"]\n};\nconst faDownLeftAndUpRightToCenter = {\n prefix: 'fas',\n iconName: 'down-left-and-up-right-to-center',\n icon: [512, 512, [\"compress-alt\"], \"f422\", \"M439 7c9.4-9.4 24.6-9.4 33.9 0l32 32c9.4 9.4 9.4 24.6 0 33.9l-87 87 39 39c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8l-144 0c-13.3 0-24-10.7-24-24l0-144c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l39 39L439 7zM72 272l144 0c13.3 0 24 10.7 24 24l0 144c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-39-39L73 505c-9.4 9.4-24.6 9.4-33.9 0L7 473c-9.4-9.4-9.4-24.6 0-33.9l87-87L55 313c-6.9-6.9-8.9-17.2-5.2-26.2s12.5-14.8 22.2-14.8z\"]\n};\nconst faCompressAlt = faDownLeftAndUpRightToCenter;\nconst faExplosion = {\n prefix: 'fas',\n iconName: 'explosion',\n icon: [576, 512, [], \"e4e9\", \"M499.6 11.3c6.7-10.7 20.5-14.5 31.7-8.5s15.8 19.5 10.6 31L404.8 338.6c2.2 2.3 4.3 4.7 6.3 7.1l97.2-54.7c10.5-5.9 23.6-3.1 30.9 6.4s6.3 23-2.2 31.5l-87 87-71.4 0c-13.2-37.3-48.7-64-90.5-64s-77.4 26.7-90.5 64l-79.6 0L42.3 363.7c-9.7-6.7-13.1-19.6-7.9-30.3s17.4-15.9 28.7-12.4l97.2 30.4c3-3.9 6.1-7.7 9.4-11.3L107.4 236.3c-6.1-10.1-3.9-23.1 5.1-30.7s22.2-7.5 31.1 .1L246 293.6c1.5-.4 3-.8 4.5-1.1l13.6-142.7c1.2-12.3 11.5-21.7 23.9-21.7s22.7 9.4 23.9 21.7l13.5 141.9L499.6 11.3zM64 448s0 0 0 0l448 0s0 0 0 0l32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0zM288 0c13.3 0 24 10.7 24 24l0 48c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-48c0-13.3 10.7-24 24-24z\"]\n};\nconst faFileLines = {\n prefix: 'fas',\n iconName: 'file-lines',\n icon: [384, 512, [128441, 128462, 61686, \"file-alt\", \"file-text\"], \"f15c\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM112 256l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faFileAlt = faFileLines;\nconst faFileText = faFileLines;\nconst faWaveSquare = {\n prefix: 'fas',\n iconName: 'wave-square',\n icon: [640, 512, [], \"f83e\", \"M128 64c0-17.7 14.3-32 32-32l160 0c17.7 0 32 14.3 32 32l0 352 96 0 0-160c0-17.7 14.3-32 32-32l128 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0 0 160c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-352-96 0 0 160c0 17.7-14.3 32-32 32L32 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l96 0 0-160z\"]\n};\nconst faRing = {\n prefix: 'fas',\n iconName: 'ring',\n icon: [512, 512, [], \"f70b\", \"M64 208c0 7.8 4.4 18.7 17.1 30.3C126.5 214.1 188.9 200 256 200s129.5 14.1 174.9 38.3C443.6 226.7 448 215.8 448 208c0-12.3-10.8-32-47.9-50.6C364.9 139.8 314 128 256 128s-108.9 11.8-144.1 29.4C74.8 176 64 195.7 64 208zm192 40c-47 0-89.3 7.6-122.9 19.7C166.3 280.2 208.8 288 256 288s89.7-7.8 122.9-20.3C345.3 255.6 303 248 256 248zM0 208c0-49.6 39.4-85.8 83.3-107.8C129.1 77.3 190.3 64 256 64s126.9 13.3 172.7 36.2c43.9 22 83.3 58.2 83.3 107.8l0 96c0 49.6-39.4 85.8-83.3 107.8C382.9 434.7 321.7 448 256 448s-126.9-13.3-172.7-36.2C39.4 389.8 0 353.6 0 304l0-96z\"]\n};\nconst faBuildingUn = {\n prefix: 'fas',\n iconName: 'building-un',\n icon: [384, 512, [], \"e4d9\", \"M48 0C21.5 0 0 21.5 0 48L0 464c0 26.5 21.5 48 48 48l96 0 0-80c0-26.5 21.5-48 48-48s48 21.5 48 48l0 80 96 0c26.5 0 48-21.5 48-48l0-416c0-26.5-21.5-48-48-48L48 0zM64 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm112-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM237.3 71.1l34.7 52L272 80c0-8.8 7.2-16 16-16s16 7.2 16 16l0 96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4l-34.7-52 0 43.2c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-96c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4zM112 80l0 64c0 8.8 7.2 16 16 16s16-7.2 16-16l0-64c0-8.8 7.2-16 16-16s16 7.2 16 16l0 64c0 26.5-21.5 48-48 48s-48-21.5-48-48l0-64c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nconst faDiceThree = {\n prefix: 'fas',\n iconName: 'dice-three',\n icon: [448, 512, [9858], \"f527\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm64 96a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64 128a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm128 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faCalendarDays = {\n prefix: 'fas',\n iconName: 'calendar-days',\n icon: [448, 512, [\"calendar-alt\"], \"f073\", \"M128 0c17.7 0 32 14.3 32 32l0 32 128 0 0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32 48 0c26.5 0 48 21.5 48 48l0 48L0 160l0-48C0 85.5 21.5 64 48 64l48 0 0-32c0-17.7 14.3-32 32-32zM0 192l448 0 0 272c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 192zm64 80l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm128 0l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM64 400l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm112 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16z\"]\n};\nconst faCalendarAlt = faCalendarDays;\nconst faAnchorCircleCheck = {\n prefix: 'fas',\n iconName: 'anchor-circle-check',\n icon: [640, 512, [], \"e4aa\", \"M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80L224 176c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 208-48 0c-53 0-96-43-96-96l0-6.1 7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7 0 6.1c0 88.4 71.6 160 160 160l80 0 80 0c8.2 0 16.3-.6 24.2-1.8c-22.2-16.2-40.4-37.5-53-62.2L320 448l0-80 0-128 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-10.9 0zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nconst faBuildingCircleArrowRight = {\n prefix: 'fas',\n iconName: 'building-circle-arrow-right',\n icon: [640, 512, [], \"e4d1\", \"M0 48C0 21.5 21.5 0 48 0L336 0c26.5 0 48 21.5 48 48l0 184.2c-39.1 32.3-64 81.1-64 135.8c0 49.5 20.4 94.2 53.3 126.2C364.5 505.1 351.1 512 336 512l-96 0 0-80c0-26.5-21.5-48-48-48s-48 21.5-48 48l0 80-96 0c-26.5 0-48-21.5-48-48L0 48zM80 224c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm80 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm112-16c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM64 112l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16L80 96c-8.8 0-16 7.2-16 16zM176 96c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm80 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm96 256a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm140.7-67.3c-6.2 6.2-6.2 16.4 0 22.6L521.4 352 432 352c-8.8 0-16 7.2-16 16s7.2 16 16 16l89.4 0-28.7 28.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l56-56c6.2-6.2 6.2-16.4 0-22.6l-56-56c-6.2-6.2-16.4-6.2-22.6 0z\"]\n};\nconst faVolleyball = {\n prefix: 'fas',\n iconName: 'volleyball',\n icon: [512, 512, [127952, \"volleyball-ball\"], \"f45f\", \"M511.8 267.4c-26.1 8.7-53.4 13.8-81 15.1c9.2-105.3-31.5-204.2-103.2-272.4C434.1 41.1 512 139.5 512 256c0 3.8-.1 7.6-.2 11.4zm-3.9 34.7c-5.8 32-17.6 62-34.2 88.7c-97.5 48.5-217.7 42.6-311.9-24.5c23.7-36.2 55.4-67.7 94.5-91.8c79.9 43.2 170.1 50.8 251.6 27.6zm-236-55.5c-2.5-90.9-41.1-172.7-101.9-231.7C196.8 5.2 225.8 0 256 0c2.7 0 5.3 0 7.9 .1c90.8 60.2 145.7 167.2 134.7 282.3c-43.1-2.4-86.4-14.1-126.8-35.9zM138 28.8c20.6 18.3 38.7 39.4 53.7 62.6C95.9 136.1 30.6 220.8 7.3 316.9C2.5 297.4 0 277 0 256C0 157.2 56 71.5 138 28.8zm69.6 90.5c19.5 38.6 31 81.9 32.3 127.7C162.5 294.6 110.9 368.9 90.2 451C66 430.4 45.6 405.4 30.4 377.2c6.7-108.7 71.9-209.9 177.1-257.9zM256 512c-50.7 0-98-14.7-137.8-40.2c5.6-27 14.8-53.1 27.4-77.7C232.2 454.6 338.1 468.8 433 441c-46 44-108.3 71-177 71z\"]\n};\nconst faVolleyballBall = faVolleyball;\nconst faArrowsUpToLine = {\n prefix: 'fas',\n iconName: 'arrows-up-to-line',\n icon: [576, 512, [], \"e4c2\", \"M32 96l512 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32C14.3 32 0 46.3 0 64S14.3 96 32 96zM9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L96 237.3 96 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-210.7 41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0l-96 96zm320 45.3c12.5 12.5 32.8 12.5 45.3 0L416 237.3 416 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-210.7 41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3z\"]\n};\nconst faSortDown = {\n prefix: 'fas',\n iconName: 'sort-down',\n icon: [320, 512, [\"sort-desc\"], \"f0dd\", \"M182.6 470.6c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-9.2-9.2-11.9-22.9-6.9-34.9s16.6-19.8 29.6-19.8l256 0c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-128 128z\"]\n};\nconst faSortDesc = faSortDown;\nconst faCircleMinus = {\n prefix: 'fas',\n iconName: 'circle-minus',\n icon: [512, 512, [\"minus-circle\"], \"f056\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM184 232l144 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-144 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nconst faMinusCircle = faCircleMinus;\nconst faDoorOpen = {\n prefix: 'fas',\n iconName: 'door-open',\n icon: [576, 512, [], \"f52b\", \"M320 32c0-9.9-4.5-19.2-12.3-25.2S289.8-1.4 280.2 1l-179.9 45C79 51.3 64 70.5 64 92.5L64 448l-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0 192 0 32 0 0-32 0-448zM256 256c0 17.7-10.7 32-24 32s-24-14.3-24-32s10.7-32 24-32s24 14.3 24 32zm96-128l96 0 0 352c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-320c0-35.3-28.7-64-64-64l-96 0 0 64z\"]\n};\nconst faRightFromBracket = {\n prefix: 'fas',\n iconName: 'right-from-bracket',\n icon: [512, 512, [\"sign-out-alt\"], \"f2f5\", \"M377.9 105.9L500.7 228.7c7.2 7.2 11.3 17.1 11.3 27.3s-4.1 20.1-11.3 27.3L377.9 406.1c-6.4 6.4-15 9.9-24 9.9c-18.7 0-33.9-15.2-33.9-33.9l0-62.1-128 0c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l128 0 0-62.1c0-18.7 15.2-33.9 33.9-33.9c9 0 17.6 3.6 24 9.9zM160 96L96 96c-17.7 0-32 14.3-32 32l0 256c0 17.7 14.3 32 32 32l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-53 0-96-43-96-96L0 128C0 75 43 32 96 32l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32z\"]\n};\nconst faSignOutAlt = faRightFromBracket;\nconst faAtom = {\n prefix: 'fas',\n iconName: 'atom',\n icon: [512, 512, [9883], \"f5d2\", \"M256 398.8c-11.8 5.1-23.4 9.7-34.9 13.5c16.7 33.8 31 35.7 34.9 35.7s18.1-1.9 34.9-35.7c-11.4-3.9-23.1-8.4-34.9-13.5zM446 256c33 45.2 44.3 90.9 23.6 128c-20.2 36.3-62.5 49.3-115.2 43.2c-22 52.1-55.6 84.8-98.4 84.8s-76.4-32.7-98.4-84.8c-52.7 6.1-95-6.8-115.2-43.2C21.7 346.9 33 301.2 66 256c-33-45.2-44.3-90.9-23.6-128c20.2-36.3 62.5-49.3 115.2-43.2C179.6 32.7 213.2 0 256 0s76.4 32.7 98.4 84.8c52.7-6.1 95 6.8 115.2 43.2c20.7 37.1 9.4 82.8-23.6 128zm-65.8 67.4c-1.7 14.2-3.9 28-6.7 41.2c31.8 1.4 38.6-8.7 40.2-11.7c2.3-4.2 7-17.9-11.9-48.1c-6.8 6.3-14 12.5-21.6 18.6zm-6.7-175.9c2.8 13.1 5 26.9 6.7 41.2c7.6 6.1 14.8 12.3 21.6 18.6c18.9-30.2 14.2-44 11.9-48.1c-1.6-2.9-8.4-13-40.2-11.7zM290.9 99.7C274.1 65.9 259.9 64 256 64s-18.1 1.9-34.9 35.7c11.4 3.9 23.1 8.4 34.9 13.5c11.8-5.1 23.4-9.7 34.9-13.5zm-159 88.9c1.7-14.3 3.9-28 6.7-41.2c-31.8-1.4-38.6 8.7-40.2 11.7c-2.3 4.2-7 17.9 11.9 48.1c6.8-6.3 14-12.5 21.6-18.6zM110.2 304.8C91.4 335 96 348.7 98.3 352.9c1.6 2.9 8.4 13 40.2 11.7c-2.8-13.1-5-26.9-6.7-41.2c-7.6-6.1-14.8-12.3-21.6-18.6zM336 256a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zm-80-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faSoap = {\n prefix: 'fas',\n iconName: 'soap',\n icon: [512, 512, [129532], \"e06e\", \"M208 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM320 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM416 32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0 160c0 27.6-11.7 52.5-30.4 70.1C422.1 275.7 448 310.8 448 352c0 53-43 96-96 96l-192 0c-53 0-96-43-96-96s43-96 96-96l88.4 0c-15.2-17-24.4-39.4-24.4-64L96 192c-53 0-96 43-96 96L0 416c0 53 43 96 96 96l320 0c53 0 96-43 96-96l0-128c0-53-43-96-96-96zM160 288c-35.3 0-64 28.7-64 64s28.7 64 64 64l192 0c35.3 0 64-28.7 64-64s-28.7-64-64-64l-32 0-160 0z\"]\n};\nconst faIcons = {\n prefix: 'fas',\n iconName: 'icons',\n icon: [512, 512, [\"heart-music-camera-bolt\"], \"f86d\", \"M500.3 7.3C507.7 13.3 512 22.4 512 32l0 144c0 26.5-28.7 48-64 48s-64-21.5-64-48s28.7-48 64-48l0-57L352 90.2 352 208c0 26.5-28.7 48-64 48s-64-21.5-64-48s28.7-48 64-48l0-96c0-15.3 10.8-28.4 25.7-31.4l160-32c9.4-1.9 19.1 .6 26.6 6.6zM74.7 304l11.8-17.8c5.9-8.9 15.9-14.2 26.6-14.2l61.7 0c10.7 0 20.7 5.3 26.6 14.2L213.3 304l26.7 0c26.5 0 48 21.5 48 48l0 112c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 352c0-26.5 21.5-48 48-48l26.7 0zM192 408a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM478.7 278.3L440.3 368l55.7 0c6.7 0 12.6 4.1 15 10.4s.6 13.3-4.4 17.7l-128 112c-5.6 4.9-13.9 5.3-19.9 .9s-8.2-12.4-5.3-19.2L391.7 400 336 400c-6.7 0-12.6-4.1-15-10.4s-.6-13.3 4.4-17.7l128-112c5.6-4.9 13.9-5.3 19.9-.9s8.2 12.4 5.3 19.2zm-339-59.2c-6.5 6.5-17 6.5-23 0L19.9 119.2c-28-29-26.5-76.9 5-103.9c27-23.5 68.4-19 93.4 6.5l10 10.5 9.5-10.5c25-25.5 65.9-30 93.9-6.5c31 27 32.5 74.9 4.5 103.9l-96.4 99.9z\"]\n};\nconst faHeartMusicCameraBolt = faIcons;\nconst faMicrophoneLinesSlash = {\n prefix: 'fas',\n iconName: 'microphone-lines-slash',\n icon: [640, 512, [\"microphone-alt-slash\"], \"f539\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L472.1 344.7c15.2-26 23.9-56.3 23.9-88.7l0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 24 0 16c0 21.2-5.1 41.1-14.2 58.7L416 300.8l0-44.8-57.1 0-34.5-27c2.9-3.1 7-5 11.6-5l80 0 0-32-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-32-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0c0-53-43-96-96-96s-96 43-96 96l0 54.3L38.8 5.1zm362.5 407l-43.1-33.9C346.1 382 333.3 384 320 384c-70.7 0-128-57.3-128-128l0-8.7L144.7 210c-.5 1.9-.7 3.9-.7 6l0 40c0 89.1 66.2 162.7 152 174.4l0 33.6-48 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l72 0 72 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0 0-33.6c20.4-2.8 39.7-9.1 57.3-18.2z\"]\n};\nconst faMicrophoneAltSlash = faMicrophoneLinesSlash;\nconst faBridgeCircleCheck = {\n prefix: 'fas',\n iconName: 'bridge-circle-check',\n icon: [640, 512, [], \"e4c9\", \"M64 32C46.3 32 32 46.3 32 64s14.3 32 32 32l40 0 0 64-72 0 0 128c53 0 96 43 96 96l0 64c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-64c0-53 43-96 96-96c6.3 0 12.4 .6 18.3 1.7C367.1 231.8 426.9 192 496 192c42.5 0 81.6 15.1 112 40.2l0-72.2-72 0 0-64 40 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L64 32zM488 96l0 64-80 0 0-64 80 0zM360 96l0 64-80 0 0-64 80 0zM232 96l0 64-80 0 0-64 80 0zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nconst faPumpMedical = {\n prefix: 'fas',\n iconName: 'pump-medical',\n icon: [448, 512, [], \"e06a\", \"M128 32l0 96 128 0 0-32 60.1 0c4.2 0 8.3 1.7 11.3 4.7l33.9 33.9c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L372.7 55.4c-15-15-35.4-23.4-56.6-23.4L256 32c0-17.7-14.3-32-32-32L160 0c-17.7 0-32 14.3-32 32zM117.4 160c-33.3 0-61 25.5-63.8 58.7L35 442.7C31.9 480 61.3 512 98.8 512l186.4 0c37.4 0 66.9-32 63.8-69.3l-18.7-224c-2.8-33.2-30.5-58.7-63.8-58.7l-149.1 0zM216 280l0 32 32 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-32 0 0 32c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-32-32 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l32 0 0-32c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nconst faFingerprint = {\n prefix: 'fas',\n iconName: 'fingerprint',\n icon: [512, 512, [], \"f577\", \"M48 256C48 141.1 141.1 48 256 48c63.1 0 119.6 28.1 157.8 72.5c8.6 10.1 23.8 11.2 33.8 2.6s11.2-23.8 2.6-33.8C403.3 34.6 333.7 0 256 0C114.6 0 0 114.6 0 256l0 40c0 13.3 10.7 24 24 24s24-10.7 24-24l0-40zm458.5-52.9c-2.7-13-15.5-21.3-28.4-18.5s-21.3 15.5-18.5 28.4c2.9 13.9 4.5 28.3 4.5 43.1l0 40c0 13.3 10.7 24 24 24s24-10.7 24-24l0-40c0-18.1-1.9-35.8-5.5-52.9zM256 80c-19 0-37.4 3-54.5 8.6c-15.2 5-18.7 23.7-8.3 35.9c7.1 8.3 18.8 10.8 29.4 7.9c10.6-2.9 21.8-4.4 33.4-4.4c70.7 0 128 57.3 128 128l0 24.9c0 25.2-1.5 50.3-4.4 75.3c-1.7 14.6 9.4 27.8 24.2 27.8c11.8 0 21.9-8.6 23.3-20.3c3.3-27.4 5-55 5-82.7l0-24.9c0-97.2-78.8-176-176-176zM150.7 148.7c-9.1-10.6-25.3-11.4-33.9-.4C93.7 178 80 215.4 80 256l0 24.9c0 24.2-2.6 48.4-7.8 71.9C68.8 368.4 80.1 384 96.1 384c10.5 0 19.9-7 22.2-17.3c6.4-28.1 9.7-56.8 9.7-85.8l0-24.9c0-27.2 8.5-52.4 22.9-73.1c7.2-10.4 8-24.6-.2-34.2zM256 160c-53 0-96 43-96 96l0 24.9c0 35.9-4.6 71.5-13.8 106.1c-3.8 14.3 6.7 29 21.5 29c9.5 0 17.9-6.2 20.4-15.4c10.5-39 15.9-79.2 15.9-119.7l0-24.9c0-28.7 23.3-52 52-52s52 23.3 52 52l0 24.9c0 36.3-3.5 72.4-10.4 107.9c-2.7 13.9 7.7 27.2 21.8 27.2c10.2 0 19-7 21-17c7.7-38.8 11.6-78.3 11.6-118.1l0-24.9c0-53-43-96-96-96zm24 96c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 24.9c0 59.9-11 119.3-32.5 175.2l-5.9 15.3c-4.8 12.4 1.4 26.3 13.8 31s26.3-1.4 31-13.8l5.9-15.3C267.9 411.9 280 346.7 280 280.9l0-24.9z\"]\n};\nconst faHandPointRight = {\n prefix: 'fas',\n iconName: 'hand-point-right',\n icon: [512, 512, [], \"f0a4\", \"M480 96c17.7 0 32 14.3 32 32s-14.3 32-32 32l-208 0 0-64 208 0zM320 288c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0zm64-64c0 17.7-14.3 32-32 32l-48 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l48 0c17.7 0 32 14.3 32 32zM288 384c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0zm-88-96l.6 0c-5.4 9.4-8.6 20.3-8.6 32c0 13.2 4 25.4 10.8 35.6C177.9 364.3 160 388.1 160 416c0 11.7 3.1 22.6 8.6 32l-8.6 0C71.6 448 0 376.4 0 288l0-61.7c0-42.4 16.9-83.1 46.9-113.1l11.6-11.6C82.5 77.5 115.1 64 149 64l27 0c35.3 0 64 28.7 64 64l0 88c0 22.1-17.9 40-40 40s-40-17.9-40-40l0-56c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 56c0 39.8 32.2 72 72 72z\"]\n};\nconst faMagnifyingGlassLocation = {\n prefix: 'fas',\n iconName: 'magnifying-glass-location',\n icon: [512, 512, [\"search-location\"], \"f689\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM288 176c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 48.8 46.5 111.6 68.6 138.6c6 7.3 16.8 7.3 22.7 0c22.1-27 68.6-89.8 68.6-138.6zm-112 0a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nconst faSearchLocation = faMagnifyingGlassLocation;\nconst faForwardStep = {\n prefix: 'fas',\n iconName: 'forward-step',\n icon: [320, 512, [\"step-forward\"], \"f051\", \"M52.5 440.6c-9.5 7.9-22.8 9.7-34.1 4.4S0 428.4 0 416L0 96C0 83.6 7.2 72.3 18.4 67s24.5-3.6 34.1 4.4l192 160L256 241l0-145c0-17.7 14.3-32 32-32s32 14.3 32 32l0 320c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-145-11.5 9.6-192 160z\"]\n};\nconst faStepForward = faForwardStep;\nconst faFaceSmileBeam = {\n prefix: 'fas',\n iconName: 'face-smile-beam',\n icon: [512, 512, [128522, \"smile-beam\"], \"f5b8\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM164.1 325.5C182 346.2 212.6 368 256 368s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C349.8 372.1 311.1 400 256 400s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6zm53.5-96.7s0 0 0 0c0 0 0 0 0 0l-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8c0 0 0 0 0 0s0 0 0 0zm160 0c0 0 0 0 0 0l-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8c0 0 0 0 0 0s0 0 0 0s0 0 0 0z\"]\n};\nconst faSmileBeam = faFaceSmileBeam;\nconst faFlagCheckered = {\n prefix: 'fas',\n iconName: 'flag-checkered',\n icon: [448, 512, [127937], \"f11e\", \"M32 0C49.7 0 64 14.3 64 32l0 16 69-17.2c38.1-9.5 78.3-5.1 113.5 12.5c46.3 23.2 100.8 23.2 147.1 0l9.6-4.8C423.8 28.1 448 43.1 448 66.1l0 279.7c0 13.3-8.3 25.3-20.8 30l-34.7 13c-46.2 17.3-97.6 14.6-141.7-7.4c-37.9-19-81.3-23.7-122.5-13.4L64 384l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-80 0-66L0 64 0 32C0 14.3 14.3 0 32 0zM64 187.1l64-13.9 0 65.5L64 252.6 64 318l48.8-12.2c5.1-1.3 10.1-2.4 15.2-3.3l0-63.9 38.9-8.4c8.3-1.8 16.7-2.5 25.1-2.1l0-64c13.6 .4 27.2 2.6 40.4 6.4l23.6 6.9 0 66.7-41.7-12.3c-7.3-2.1-14.8-3.4-22.3-3.8l0 71.4c21.8 1.9 43.3 6.7 64 14.4l0-69.8 22.7 6.7c13.5 4 27.3 6.4 41.3 7.4l0-64.2c-7.8-.8-15.6-2.3-23.2-4.5l-40.8-12 0-62c-13-3.8-25.8-8.8-38.2-15c-8.2-4.1-16.9-7-25.8-8.8l0 72.4c-13-.4-26 .8-38.7 3.6L128 173.2 128 98 64 114l0 73.1zM320 335.7c16.8 1.5 33.9-.7 50-6.8l14-5.2 0-71.7-7.9 1.8c-18.4 4.3-37.3 5.7-56.1 4.5l0 77.4zm64-149.4l0-70.8c-20.9 6.1-42.4 9.1-64 9.1l0 69.4c13.9 1.4 28 .5 41.7-2.6l22.3-5.2z\"]\n};\nconst faFootball = {\n prefix: 'fas',\n iconName: 'football',\n icon: [512, 512, [127944, \"football-ball\"], \"f44e\", \"M247.5 25.4c-13.5 3.3-26.4 7.2-38.6 11.7C142.9 61.6 96.7 103.6 66 153.6C47.8 183.4 35.1 215.9 26.9 249L264.5 486.6c13.5-3.3 26.4-7.2 38.6-11.7c66-24.5 112.2-66.5 142.9-116.5c18.3-29.8 30.9-62.3 39.1-95.3L247.5 25.4zM495.2 205.3c6.1-56.8 1.4-112.2-7.7-156.4c-2.7-12.9-13-22.9-26.1-25.1c-58.2-9.7-109.9-12-155.6-7.9L495.2 205.3zM206.1 496L16.8 306.7c-6.1 56.8-1.4 112.2 7.7 156.4c2.7 12.9 13 22.9 26.1 25.1c58.2 9.7 109.9 12 155.6 7.9zm54.6-331.3c6.2-6.2 16.4-6.2 22.6 0l64 64c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-64-64c-6.2-6.2-6.2-16.4 0-22.6zm-48 48c6.2-6.2 16.4-6.2 22.6 0l64 64c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-64-64c-6.2-6.2-6.2-16.4 0-22.6zm-48 48c6.2-6.2 16.4-6.2 22.6 0l64 64c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-64-64c-6.2-6.2-6.2-16.4 0-22.6z\"]\n};\nconst faFootballBall = faFootball;\nconst faSchoolCircleExclamation = {\n prefix: 'fas',\n iconName: 'school-circle-exclamation',\n icon: [640, 512, [], \"e56c\", \"M337.8 5.4C327-1.8 313-1.8 302.2 5.4L166.3 96 48 96C21.5 96 0 117.5 0 144L0 464c0 26.5 21.5 48 48 48l272 0s0 0 0 0l-64 0 0-96c0-35.3 28.7-64 64-64l.3 0 .5 0c3.4-37.7 18.7-72.1 42.2-99.1C350.2 260 335.6 264 320 264c-48.6 0-88-39.4-88-88s39.4-88 88-88s88 39.4 88 88c0 18.3-5.6 35.3-15.1 49.4c29-21 64.6-33.4 103.1-33.4c59.5 0 112.1 29.6 144 74.8L640 144c0-26.5-21.5-48-48-48L473.7 96 337.8 5.4zM96 192l32 0c8.8 0 16 7.2 16 16l0 64c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-64c0-8.8 7.2-16 16-16zm0 128l32 0c8.8 0 16 7.2 16 16l0 64c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-64c0-8.8 7.2-16 16-16zM320 128c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-16 0 0-16c0-8.8-7.2-16-16-16zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16z\"]\n};\nconst faCrop = {\n prefix: 'fas',\n iconName: 'crop',\n icon: [512, 512, [], \"f125\", \"M448 109.3l54.6-54.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L402.7 64 160 64l0 64 178.7 0L128 338.7 128 32c0-17.7-14.3-32-32-32S64 14.3 64 32l0 32L32 64C14.3 64 0 78.3 0 96s14.3 32 32 32l32 0 0 256c0 35.3 28.7 64 64 64l224 0 0-64-178.7 0L384 173.3 384 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-274.7z\"]\n};\nconst faAnglesDown = {\n prefix: 'fas',\n iconName: 'angles-down',\n icon: [448, 512, [\"angle-double-down\"], \"f103\", \"M246.6 470.6c-12.5 12.5-32.8 12.5-45.3 0l-160-160c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L224 402.7 361.4 265.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-160 160zm160-352l-160 160c-12.5 12.5-32.8 12.5-45.3 0l-160-160c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L224 210.7 361.4 73.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3z\"]\n};\nconst faAngleDoubleDown = faAnglesDown;\nconst faUsersRectangle = {\n prefix: 'fas',\n iconName: 'users-rectangle',\n icon: [640, 512, [], \"e594\", \"M96 0C43 0 0 43 0 96L0 416c0 53 43 96 96 96l448 0c53 0 96-43 96-96l0-320c0-53-43-96-96-96L96 0zM64 96c0-17.7 14.3-32 32-32l448 0c17.7 0 32 14.3 32 32l0 320c0 17.7-14.3 32-32 32L96 448c-17.7 0-32-14.3-32-32L64 96zm159.8 80a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM96 309.3c0 14.7 11.9 26.7 26.7 26.7l56.1 0c8-34.1 32.8-61.7 65.2-73.6c-7.5-4.1-16.2-6.4-25.3-6.4l-69.3 0C119.9 256 96 279.9 96 309.3zM461.2 336l56.1 0c14.7 0 26.7-11.9 26.7-26.7c0-29.5-23.9-53.3-53.3-53.3l-69.3 0c-9.2 0-17.8 2.3-25.3 6.4c32.4 11.9 57.2 39.5 65.2 73.6zM372 289c-3.9-.7-7.9-1-12-1l-80 0c-4.1 0-8.1 .3-12 1c-26 4.4-47.3 22.7-55.9 47c-2.7 7.5-4.1 15.6-4.1 24c0 13.3 10.7 24 24 24l176 0c13.3 0 24-10.7 24-24c0-8.4-1.4-16.5-4.1-24c-8.6-24.3-29.9-42.6-55.9-47zM512 176a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM320 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128z\"]\n};\nconst faPeopleRoof = {\n prefix: 'fas',\n iconName: 'people-roof',\n icon: [640, 512, [], \"e537\", \"M335.5 4l288 160c15.4 8.6 21 28.1 12.4 43.5s-28.1 21-43.5 12.4L320 68.6 47.5 220c-15.4 8.6-34.9 3-43.5-12.4s-3-34.9 12.4-43.5L304.5 4c9.7-5.4 21.4-5.4 31.1 0zM320 160a40 40 0 1 1 0 80 40 40 0 1 1 0-80zM144 256a40 40 0 1 1 0 80 40 40 0 1 1 0-80zm312 40a40 40 0 1 1 80 0 40 40 0 1 1 -80 0zM226.9 491.4L200 441.5l0 38.5c0 17.7-14.3 32-32 32l-48 0c-17.7 0-32-14.3-32-32l0-38.5L61.1 491.4c-6.3 11.7-20.8 16-32.5 9.8s-16-20.8-9.8-32.5l37.9-70.3c15.3-28.5 45.1-46.3 77.5-46.3l19.5 0c16.3 0 31.9 4.5 45.4 12.6l33.6-62.3c15.3-28.5 45.1-46.3 77.5-46.3l19.5 0c32.4 0 62.1 17.8 77.5 46.3l33.6 62.3c13.5-8.1 29.1-12.6 45.4-12.6l19.5 0c32.4 0 62.1 17.8 77.5 46.3l37.9 70.3c6.3 11.7 1.9 26.2-9.8 32.5s-26.2 1.9-32.5-9.8L552 441.5l0 38.5c0 17.7-14.3 32-32 32l-48 0c-17.7 0-32-14.3-32-32l0-38.5-26.9 49.9c-6.3 11.7-20.8 16-32.5 9.8s-16-20.8-9.8-32.5l36.3-67.5c-1.7-1.7-3.2-3.6-4.3-5.8L376 345.5l0 54.5c0 17.7-14.3 32-32 32l-48 0c-17.7 0-32-14.3-32-32l0-54.5-26.9 49.9c-1.2 2.2-2.6 4.1-4.3 5.8l36.3 67.5c6.3 11.7 1.9 26.2-9.8 32.5s-26.2 1.9-32.5-9.8z\"]\n};\nconst faPeopleLine = {\n prefix: 'fas',\n iconName: 'people-line',\n icon: [640, 512, [], \"e534\", \"M360 72a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zM144 208a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l576 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 416zM496 208a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM200 313.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-36.3-67.5c1.7-1.7 3.2-3.6 4.3-5.8L264 217.5l0 54.5c0 17.7 14.3 32 32 32l48 0c17.7 0 32-14.3 32-32l0-54.5 26.9 49.9c1.2 2.2 2.6 4.1 4.3 5.8l-36.3 67.5c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L440 313.5l0 38.5c0 17.7 14.3 32 32 32l48 0c17.7 0 32-14.3 32-32l0-38.5 26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-37.9-70.3c-15.3-28.5-45.1-46.3-77.5-46.3l-19.5 0c-16.3 0-31.9 4.5-45.4 12.6l-33.6-62.3c-15.3-28.5-45.1-46.3-77.5-46.3l-19.5 0c-32.4 0-62.1 17.8-77.5 46.3l-33.6 62.3c-13.5-8.1-29.1-12.6-45.4-12.6l-19.5 0c-32.4 0-62.1 17.8-77.5 46.3L18.9 340.6c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L88 313.5 88 352c0 17.7 14.3 32 32 32l48 0c17.7 0 32-14.3 32-32l0-38.5z\"]\n};\nconst faBeerMugEmpty = {\n prefix: 'fas',\n iconName: 'beer-mug-empty',\n icon: [512, 512, [\"beer\"], \"f0fc\", \"M32 64c0-17.7 14.3-32 32-32l288 0c17.7 0 32 14.3 32 32l0 32 51.2 0c42.4 0 76.8 34.4 76.8 76.8l0 102.1c0 30.4-17.9 57.9-45.6 70.2L384 381.7l0 34.3c0 35.3-28.7 64-64 64L96 480c-35.3 0-64-28.7-64-64L32 64zM384 311.6l56.4-25.1c4.6-2.1 7.6-6.6 7.6-11.7l0-102.1c0-7.1-5.7-12.8-12.8-12.8L384 160l0 151.6zM160 144c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 224c0 8.8 7.2 16 16 16s16-7.2 16-16l0-224zm64 0c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 224c0 8.8 7.2 16 16 16s16-7.2 16-16l0-224zm64 0c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 224c0 8.8 7.2 16 16 16s16-7.2 16-16l0-224z\"]\n};\nconst faBeer = faBeerMugEmpty;\nconst faDiagramPredecessor = {\n prefix: 'fas',\n iconName: 'diagram-predecessor',\n icon: [512, 512, [], \"e477\", \"M448 416l0-64L64 352l0 64 384 0zm0 64L64 480c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64l384 0c35.3 0 64 28.7 64 64l0 64c0 35.3-28.7 64-64 64zM288 160c0 35.3-28.7 64-64 64L64 224c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l144 0 16 0 144 0c44.2 0 80 35.8 80 80l0 16 38.1 0c21.4 0 32.1 25.9 17 41L433 239c-9.4 9.4-24.6 9.4-33.9 0L329 169c-15.1-15.1-4.4-41 17-41l38.1 0 0-16c0-8.8-7.2-16-16-16l-80 0 0 64z\"]\n};\nconst faArrowUpLong = {\n prefix: 'fas',\n iconName: 'arrow-up-long',\n icon: [384, 512, [\"long-arrow-up\"], \"f176\", \"M214.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 109.3 160 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-370.7 73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128z\"]\n};\nconst faLongArrowUp = faArrowUpLong;\nconst faFireFlameSimple = {\n prefix: 'fas',\n iconName: 'fire-flame-simple',\n icon: [384, 512, [\"burn\"], \"f46a\", \"M372.5 256.5l-.7-1.9C337.8 160.8 282 76.5 209.1 8.5l-3.3-3C202.1 2 197.1 0 192 0s-10.1 2-13.8 5.5l-3.3 3C102 76.5 46.2 160.8 12.2 254.6l-.7 1.9C3.9 277.3 0 299.4 0 321.6C0 426.7 86.8 512 192 512s192-85.3 192-190.4c0-22.2-3.9-44.2-11.5-65.1zm-90.8 49.5c4.1 9.3 6.2 19.4 6.2 29.5c0 53-43 96.5-96 96.5s-96-43.5-96-96.5c0-10.1 2.1-20.3 6.2-29.5l1.9-4.3c15.8-35.4 37.9-67.7 65.3-95.1l8.9-8.9c3.6-3.6 8.5-5.6 13.6-5.6s10 2 13.6 5.6l8.9 8.9c27.4 27.4 49.6 59.7 65.3 95.1l1.9 4.3z\"]\n};\nconst faBurn = faFireFlameSimple;\nconst faPerson = {\n prefix: 'fas',\n iconName: 'person',\n icon: [320, 512, [129485, \"male\"], \"f183\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-223.1L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6l29.7 0c33.7 0 64.9 17.7 82.3 46.6l58.3 97c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9L232 256.9 232 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128-16 0z\"]\n};\nconst faMale = faPerson;\nconst faLaptop = {\n prefix: 'fas',\n iconName: 'laptop',\n icon: [640, 512, [128187], \"f109\", \"M128 32C92.7 32 64 60.7 64 96l0 256 64 0 0-256 384 0 0 256 64 0 0-256c0-35.3-28.7-64-64-64L128 32zM19.2 384C8.6 384 0 392.6 0 403.2C0 445.6 34.4 480 76.8 480l486.4 0c42.4 0 76.8-34.4 76.8-76.8c0-10.6-8.6-19.2-19.2-19.2L19.2 384z\"]\n};\nconst faFileCsv = {\n prefix: 'fas',\n iconName: 'file-csv',\n icon: [512, 512, [], \"f6dd\", \"M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 144-208 0c-35.3 0-64 28.7-64 64l0 144-48 0c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zM200 352l16 0c22.1 0 40 17.9 40 40l0 8c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-8c0-4.4-3.6-8-8-8l-16 0c-4.4 0-8 3.6-8 8l0 80c0 4.4 3.6 8 8 8l16 0c4.4 0 8-3.6 8-8l0-8c0-8.8 7.2-16 16-16s16 7.2 16 16l0 8c0 22.1-17.9 40-40 40l-16 0c-22.1 0-40-17.9-40-40l0-80c0-22.1 17.9-40 40-40zm133.1 0l34.9 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-34.9 0c-7.2 0-13.1 5.9-13.1 13.1c0 5.2 3 9.9 7.8 12l37.4 16.6c16.3 7.2 26.8 23.4 26.8 41.2c0 24.9-20.2 45.1-45.1 45.1L304 512c-8.8 0-16-7.2-16-16s7.2-16 16-16l42.9 0c7.2 0 13.1-5.9 13.1-13.1c0-5.2-3-9.9-7.8-12l-37.4-16.6c-16.3-7.2-26.8-23.4-26.8-41.2c0-24.9 20.2-45.1 45.1-45.1zm98.9 0c8.8 0 16 7.2 16 16l0 31.6c0 23 5.5 45.6 16 66c10.5-20.3 16-42.9 16-66l0-31.6c0-8.8 7.2-16 16-16s16 7.2 16 16l0 31.6c0 34.7-10.3 68.7-29.6 97.6l-5.1 7.7c-3 4.5-8 7.1-13.3 7.1s-10.3-2.7-13.3-7.1l-5.1-7.7c-19.3-28.9-29.6-62.9-29.6-97.6l0-31.6c0-8.8 7.2-16 16-16z\"]\n};\nconst faMenorah = {\n prefix: 'fas',\n iconName: 'menorah',\n icon: [640, 512, [], \"f676\", \"M20.8 7.4C22.8 2.9 27.1 0 32 0s9.2 2.9 11.2 7.4L61.3 49.7c1.8 4.1 2.7 8.6 2.7 13.1L64 64c0 17.7-14.3 32-32 32S0 81.7 0 64l0-1.2c0-4.5 .9-8.9 2.7-13.1L20.8 7.4zm96 0C118.8 2.9 123.1 0 128 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1l0 1.2c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-1.2c0-4.5 .9-8.9 2.7-13.1L116.8 7.4zm77.8 42.4L212.8 7.4C214.8 2.9 219.1 0 224 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1l0 1.2c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-1.2c0-4.5 .9-8.9 2.7-13.1zM308.8 7.4C310.8 2.9 315.1 0 320 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1l0 1.2c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-1.2c0-4.5 .9-8.9 2.7-13.1L308.8 7.4zm77.8 42.4L404.8 7.4C406.8 2.9 411.1 0 416 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1l0 1.2c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-1.2c0-4.5 .9-8.9 2.7-13.1zM500.8 7.4C502.8 2.9 507.1 0 512 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1l0 1.2c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-1.2c0-4.5 .9-8.9 2.7-13.1L500.8 7.4zm77.8 42.4L596.8 7.4C598.8 2.9 603.1 0 608 0s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1l0 1.2c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-1.2c0-4.5 .9-8.9 2.7-13.1zM32 128c17.7 0 32 14.3 32 32l0 128c0 17.7 14.3 32 32 32l192 0 0-160c0-17.7 14.3-32 32-32s32 14.3 32 32l0 160 192 0c17.7 0 32-14.3 32-32l0-128c0-17.7 14.3-32 32-32s32 14.3 32 32l0 128c0 53-43 96-96 96l-192 0 0 64 128 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-160 0-160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l128 0 0-64L96 384c-53 0-96-43-96-96L0 160c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32l0 96 0 32-64 0 0-32 0-96c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32l0 96 0 32-64 0 0-32 0-96c0-17.7 14.3-32 32-32zm192 0c17.7 0 32 14.3 32 32l0 96 0 32-64 0 0-32 0-96c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32l0 96 0 32-64 0 0-32 0-96c0-17.7 14.3-32 32-32z\"]\n};\nconst faTruckPlane = {\n prefix: 'fas',\n iconName: 'truck-plane',\n icon: [640, 512, [], \"e58f\", \"M200 0c-30.6 0-56 54.7-56 86.1l0 106.5L7.8 274.3C2.9 277.2 0 282.4 0 288l0 64c0 5.1 2.4 9.8 6.4 12.8s9.3 3.9 14.1 2.5l123.4-37 0 81.2-50 40c-3.8 3-6 7.6-6 12.5l0 32c0 5.1 2.5 10 6.6 13s9.5 3.8 14.4 2.2L200 480.9 290.4 511c-1.6-4.7-2.4-9.8-2.4-15l0-32.6c-18.2-10.5-30.7-29.7-31.9-51.8l-.1-.1 0-3.5 0-82.5L256 184l0-1.1s0 0 0 0l0-96.9C256 54.7 231.5 0 200 0zm88 176l0 224c0 20.9 13.4 38.7 32 45.3l0 42.7c0 13.3 10.7 24 24 24l16 0c13.3 0 24-10.7 24-24l0-40 160 0 0 40c0 13.3 10.7 24 24 24l16 0c13.3 0 24-10.7 24-24l0-42.7c18.6-6.6 32-24.4 32-45.3l0-224c0-26.5-21.5-48-48-48l-256 0c-26.5 0-48 21.5-48 48zm79.8 78.7c3.3-8.7 11.2-14.7 20.5-14.7l151.4 0c9.2 0 17.2 6 20.5 14.7L576 304l-224 0 15.8-49.3zM568 352a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM336 376a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nconst faRecordVinyl = {\n prefix: 'fas',\n iconName: 'record-vinyl',\n icon: [512, 512, [], \"f8d9\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256-96a96 96 0 1 1 0 192 96 96 0 1 1 0-192zm0 224a128 128 0 1 0 0-256 128 128 0 1 0 0 256zm0-96a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faFaceGrinStars = {\n prefix: 'fas',\n iconName: 'face-grin-stars',\n icon: [512, 512, [129321, \"grin-stars\"], \"f587\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm407.4 75.5c5-11.8-7-22.5-19.3-18.7c-39.7 12.2-84.5 19-131.8 19s-92.1-6.8-131.8-19c-12.3-3.8-24.3 6.9-19.3 18.7c25 59.1 83.2 100.5 151.1 100.5s126.2-41.4 151.1-100.5zM160 120c-3.1 0-5.9 1.8-7.2 4.6l-16.6 34.7-38.1 5c-3.1 .4-5.6 2.5-6.6 5.5s-.1 6.2 2.1 8.3l27.9 26.5-7 37.8c-.6 3 .7 6.1 3.2 7.9s5.8 2 8.5 .6L160 232.5l33.8 18.3c2.7 1.5 6 1.3 8.5-.6s3.7-4.9 3.2-7.9l-7-37.8L226.4 178c2.2-2.1 3.1-5.3 2.1-8.3s-3.5-5.1-6.6-5.5l-38.1-5-16.6-34.7c-1.3-2.8-4.1-4.6-7.2-4.6zm192 0c-3.1 0-5.9 1.8-7.2 4.6l-16.6 34.7-38.1 5c-3.1 .4-5.6 2.5-6.6 5.5s-.1 6.2 2.1 8.3l27.9 26.5-7 37.8c-.6 3 .7 6.1 3.2 7.9s5.8 2 8.5 .6L352 232.5l33.8 18.3c2.7 1.5 6 1.3 8.5-.6s3.7-4.9 3.2-7.9l-7-37.8L418.4 178c2.2-2.1 3.1-5.3 2.1-8.3s-3.5-5.1-6.6-5.5l-38.1-5-16.6-34.7c-1.3-2.8-4.1-4.6-7.2-4.6z\"]\n};\nconst faGrinStars = faFaceGrinStars;\nconst faBong = {\n prefix: 'fas',\n iconName: 'bong',\n icon: [448, 512, [], \"f55c\", \"M160 208.5c0 29.1-15.6 53.9-37.2 67.8c-17.2 11.1-31.5 26.1-41.7 43.7l221.8 0c-10.2-17.6-24.5-32.6-41.7-43.7c-21.6-13.9-37.2-38.7-37.2-67.8L224 64l-64 0 0 144.5zM288 64l0 144.5c0 5.7 3.1 10.9 7.9 14c11.2 7.2 21.5 15.5 30.9 24.8L366.1 208l-7-7c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l24 24 24 24c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-7-7-43.3 43.3C374 314.1 384 347.9 384 384c0 39.4-11.9 76.1-32.2 106.5c-9.6 14.4-26.5 21.5-43.8 21.5L76.1 512c-17.3 0-34.2-7.1-43.8-21.5C11.9 460.1 0 423.4 0 384c0-67.8 35.1-127.3 88.1-161.5c4.8-3.1 7.9-8.3 7.9-14L96 64C78.3 64 64 49.7 64 32S78.3 0 96 0l16 0L272 0l16 0c17.7 0 32 14.3 32 32s-14.3 32-32 32z\"]\n};\nconst faSpaghettiMonsterFlying = {\n prefix: 'fas',\n iconName: 'spaghetti-monster-flying',\n icon: [640, 512, [\"pastafarianism\"], \"f67b\", \"M208 64a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 0c0 16.2-6 31.1-16 42.3l15.6 31.2c18.7-6 39.9-9.5 64.4-9.5s45.8 3.5 64.4 9.5L400 106.3C390 95.1 384 80.2 384 64c0-35.3 28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64c-1.7 0-3.4-.1-5.1-.2L427.8 158c21.1 13.6 37.7 30.2 51.4 46.4c7.1 8.3 13.5 16.6 19.3 24l1.4 1.8c6.3 8.1 11.6 14.8 16.7 20.4C527.3 262.3 532.7 264 536 264c2.5 0 4.3-.6 7.1-3.3c3.7-3.5 7.1-8.8 12.5-17.4l.6-.9c4.6-7.4 11-17.6 19.4-25.7c9.7-9.3 22.9-16.7 40.4-16.7c13.3 0 24 10.7 24 24s-10.7 24-24 24c-2.5 0-4.3 .6-7.1 3.3c-3.7 3.5-7.1 8.8-12.5 17.4l-.6 .9c-4.6 7.4-11 17.6-19.4 25.7c-9.7 9.3-22.9 16.7-40.4 16.7c-18.5 0-32.9-8.5-44.3-18.6c-3.1 4-6.6 8.3-10.5 12.7c1.4 4.3 2.8 8.5 4 12.5c.9 3 1.8 5.8 2.6 8.6c3 9.8 5.5 18.2 8.6 25.9c3.9 9.8 7.4 15.4 10.8 18.5c2.6 2.4 5.9 4.3 12.8 4.3c8.7 0 16.9-4.2 33.7-13.2c15-8 35.7-18.8 62.3-18.8c13.3 0 24 10.7 24 24s-10.7 24-24 24c-13.4 0-24.7 5.2-39.7 13.2c-1 .6-2.1 1.1-3.2 1.7C559.9 414 541.4 424 520 424c-18.4 0-33.6-6.1-45.5-17.2c-11.1-10.3-17.9-23.7-22.7-36c-3.6-9-6.7-19.1-9.5-28.5c-16.4 12.3-36.1 23.6-58.9 31.3c3.6 10.8 8.4 23.5 14.4 36.2c7.5 15.9 16.2 30.4 25.8 40.5C433 460.5 441.2 464 448 464c13.3 0 24 10.7 24 24s-10.7 24-24 24c-25.2 0-45-13.5-59.5-28.8c-14.5-15.4-25.7-34.9-34.2-53c-8-17-14.1-33.8-18.3-46.9c-5.2 .4-10.6 .6-16 .6s-10.8-.2-16-.6c-4.2 13-10.3 29.9-18.3 46.9c-8.5 18.1-19.8 37.6-34.2 53C237 498.5 217.2 512 192 512c-13.3 0-24-10.7-24-24s10.7-24 24-24c6.8 0 15-3.5 24.5-13.7c9.5-10.1 18.3-24.6 25.8-40.5c5.9-12.6 10.7-25.4 14.4-36.2c-22.8-7.7-42.5-19-58.9-31.3c-2.9 9.4-6 19.5-9.5 28.5c-4.8 12.2-11.6 25.6-22.7 36C153.6 417.9 138.4 424 120 424c-21.4 0-39.9-10-53.1-17.1c0 0 0 0 0 0c-1.1-.6-2.2-1.2-3.2-1.7c-15-8-26.3-13.2-39.7-13.2c-13.3 0-24-10.7-24-24s10.7-24 24-24c26.6 0 47.3 10.8 62.3 18.8c16.8 9 25 13.2 33.7 13.2c6.8 0 10.2-1.9 12.8-4.3c3.4-3.2 7-8.8 10.8-18.5c3-7.7 5.6-16.1 8.6-25.9c.8-2.7 1.7-5.6 2.6-8.6c1.2-4 2.6-8.2 4-12.5c-3.9-4.5-7.4-8.8-10.5-12.7C136.9 303.5 122.5 312 104 312c-17.5 0-30.7-7.4-40.4-16.7c-8.4-8.1-14.8-18.3-19.4-25.7l-.6-.9c-5.4-8.6-8.8-13.9-12.5-17.4c-2.8-2.7-4.6-3.3-7.1-3.3c-13.3 0-24-10.7-24-24s10.7-24 24-24c17.5 0 30.7 7.4 40.4 16.7c8.4 8.1 14.8 18.3 19.4 25.7l.6 .9c5.4 8.6 8.8 13.9 12.5 17.4c2.8 2.7 4.6 3.3 7.1 3.3c3.3 0 8.7-1.7 19.4-13.4c5.1-5.6 10.4-12.3 16.7-20.4l1.4-1.8c5.8-7.4 12.2-15.7 19.3-24c13.8-16.2 30.3-32.8 51.4-46.4l-15.1-30.2c-1.7 .1-3.4 .2-5.1 .2c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64zm208 0a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nconst faPastafarianism = faSpaghettiMonsterFlying;\nconst faArrowDownUpAcrossLine = {\n prefix: 'fas',\n iconName: 'arrow-down-up-across-line',\n icon: [576, 512, [], \"e4af\", \"M137.4 502.6c12.5 12.5 32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 402.7 192 288l352 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 0 0-114.7 41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L384 109.3 384 224l-192 0-64 0-96 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0 0 114.7L86.6 361.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96zM128 192l64 0 0-128c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 128zM448 320l-64 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128z\"]\n};\nconst faSpoon = {\n prefix: 'fas',\n iconName: 'spoon',\n icon: [512, 512, [129348, 61873, \"utensil-spoon\"], \"f2e5\", \"M245.8 220.9c-14.5-17.6-21.8-39.2-21.8-60.8C224 80 320 0 416 0c53 0 96 43 96 96c0 96-80 192-160.2 192c-21.6 0-43.2-7.3-60.8-21.8L54.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L245.8 220.9z\"]\n};\nconst faUtensilSpoon = faSpoon;\nconst faJarWheat = {\n prefix: 'fas',\n iconName: 'jar-wheat',\n icon: [320, 512, [], \"e517\", \"M32 32C32 14.3 46.3 0 64 0L256 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L64 64C46.3 64 32 49.7 32 32zM0 160c0-35.3 28.7-64 64-64l192 0c35.3 0 64 28.7 64 64l0 288c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 160zm112 0l-42.2 0c-3.2 0-5.8 2.6-5.8 5.8C64 198 90 224 122.2 224l21.8 0 32 0 21.8 0c32.1 0 58.2-26 58.2-58.2c0-3.2-2.6-5.8-5.8-5.8L208 160c-19.1 0-36.3 8.4-48 21.7c-11.7-13.3-28.9-21.7-48-21.7zm48 117.7c-11.7-13.3-28.9-21.7-48-21.7l-42.2 0c-3.2 0-5.8 2.6-5.8 5.8C64 294 90 320 122.2 320l21.8 0 32 0 21.8 0c32.1 0 58.2-26 58.2-58.2c0-3.2-2.6-5.8-5.8-5.8L208 256c-19.1 0-36.3 8.4-48 21.7zM112 352l-42.2 0c-3.2 0-5.8 2.6-5.8 5.8C64 390 90 416 122.2 416l21.8 0 0 32c0 8.8 7.2 16 16 16s16-7.2 16-16l0-32 21.8 0c32.1 0 58.2-26 58.2-58.2c0-3.2-2.6-5.8-5.8-5.8L208 352c-19.1 0-36.3 8.4-48 21.7c-11.7-13.3-28.9-21.7-48-21.7z\"]\n};\nconst faEnvelopesBulk = {\n prefix: 'fas',\n iconName: 'envelopes-bulk',\n icon: [640, 512, [\"mail-bulk\"], \"f674\", \"M128 0C110.3 0 96 14.3 96 32l0 192 96 0 0-32c0-35.3 28.7-64 64-64l224 0 0-96c0-17.7-14.3-32-32-32L128 0zM256 160c-17.7 0-32 14.3-32 32l0 32 96 0c35.3 0 64 28.7 64 64l0 128 192 0c17.7 0 32-14.3 32-32l0-192c0-17.7-14.3-32-32-32l-320 0zm240 64l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM64 256c-17.7 0-32 14.3-32 32l0 13L187.1 415.9c1.4 1 3.1 1.6 4.9 1.6s3.5-.6 4.9-1.6L352 301l0-13c0-17.7-14.3-32-32-32L64 256zm288 84.8L216 441.6c-6.9 5.1-15.3 7.9-24 7.9s-17-2.8-24-7.9L32 340.8 32 480c0 17.7 14.3 32 32 32l256 0c17.7 0 32-14.3 32-32l0-139.2z\"]\n};\nconst faMailBulk = faEnvelopesBulk;\nconst faFileCircleExclamation = {\n prefix: 'fas',\n iconName: 'file-circle-exclamation',\n icon: [576, 512, [], \"e4eb\", \"M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zm48 96a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0-192c-8.8 0-16 7.2-16 16l0 80c0 8.8 7.2 16 16 16s16-7.2 16-16l0-80c0-8.8-7.2-16-16-16z\"]\n};\nconst faCircleH = {\n prefix: 'fas',\n iconName: 'circle-h',\n icon: [512, 512, [9405, \"hospital-symbol\"], \"f47e\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM368 152l0 104 0 104c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-80-128 0 0 80c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-208c0-13.3 10.7-24 24-24s24 10.7 24 24l0 80 128 0 0-80c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nconst faHospitalSymbol = faCircleH;\nconst faPager = {\n prefix: 'fas',\n iconName: 'pager',\n icon: [512, 512, [128223], \"f815\", \"M0 128C0 92.7 28.7 64 64 64l384 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 128zm64 32l0 64c0 17.7 14.3 32 32 32l320 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32L96 128c-17.7 0-32 14.3-32 32zM80 320c-13.3 0-24 10.7-24 24s10.7 24 24 24l56 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-56 0zm136 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l48 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0z\"]\n};\nconst faAddressBook = {\n prefix: 'fas',\n iconName: 'address-book',\n icon: [512, 512, [62138, \"contact-book\"], \"f2b9\", \"M96 0C60.7 0 32 28.7 32 64l0 384c0 35.3 28.7 64 64 64l288 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64L96 0zM208 288l64 0c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16l-192 0c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-32-96a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM512 80c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16s16-7.2 16-16l0-64zM496 192c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16s16-7.2 16-16l0-64c0-8.8-7.2-16-16-16zm16 144c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16s16-7.2 16-16l0-64z\"]\n};\nconst faContactBook = faAddressBook;\nconst faStrikethrough = {\n prefix: 'fas',\n iconName: 'strikethrough',\n icon: [512, 512, [], \"f0cc\", \"M161.3 144c3.2-17.2 14-30.1 33.7-38.6c21.1-9 51.8-12.3 88.6-6.5c11.9 1.9 48.8 9.1 60.1 12c17.1 4.5 34.6-5.6 39.2-22.7s-5.6-34.6-22.7-39.2c-14.3-3.8-53.6-11.4-66.6-13.4c-44.7-7-88.3-4.2-123.7 10.9c-36.5 15.6-64.4 44.8-71.8 87.3c-.1 .6-.2 1.1-.2 1.7c-2.8 23.9 .5 45.6 10.1 64.6c4.5 9 10.2 16.9 16.7 23.9L32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l448 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-209.9 0-.4-.1-1.1-.3c-36-10.8-65.2-19.6-85.2-33.1c-9.3-6.3-15-12.6-18.2-19.1c-3.1-6.1-5.2-14.6-3.8-27.4zM348.9 337.2c2.7 6.5 4.4 15.8 1.9 30.1c-3 17.6-13.8 30.8-33.9 39.4c-21.1 9-51.7 12.3-88.5 6.5c-18-2.9-49.1-13.5-74.4-22.1c-5.6-1.9-11-3.7-15.9-5.4c-16.8-5.6-34.9 3.5-40.5 20.3s3.5 34.9 20.3 40.5c3.6 1.2 7.9 2.7 12.7 4.3c0 0 0 0 0 0s0 0 0 0c24.9 8.5 63.6 21.7 87.6 25.6c0 0 0 0 0 0l.2 0c44.7 7 88.3 4.2 123.7-10.9c36.5-15.6 64.4-44.8 71.8-87.3c3.6-21 2.7-40.4-3.1-58.1l-75.7 0c7 5.6 11.4 11.2 13.9 17.2z\"]\n};\nconst faK = {\n prefix: 'fas',\n iconName: 'k',\n icon: [320, 512, [107], \"4b\", \"M311 86.3c12.3-12.7 12-32.9-.7-45.2s-32.9-12-45.2 .7l-155.2 160L64 249 64 64c0-17.7-14.3-32-32-32S0 46.3 0 64L0 328 0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-107 64.7-66.7 133 192c10.1 14.5 30 18.1 44.5 8.1s18.1-30 8.1-44.5L174.1 227.4 311 86.3z\"]\n};\nconst faLandmarkFlag = {\n prefix: 'fas',\n iconName: 'landmark-flag',\n icon: [512, 512, [], \"e51c\", \"M272 0l80 0c8.8 0 16 7.2 16 16l0 64c0 8.8-7.2 16-16 16l-80 0 0 32 192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L48 192c-17.7 0-32-14.3-32-32s14.3-32 32-32l192 0 0-112c0-8.8 7.2-16 16-16l16 0zM64 224l64 0 0 192 40 0 0-192 64 0 0 192 48 0 0-192 64 0 0 192 40 0 0-192 64 0 0 196.3c.6 .3 1.2 .7 1.8 1.1l48 32c11.7 7.8 17 22.4 12.9 35.9S494.1 512 480 512L32 512c-14.1 0-26.5-9.2-30.6-22.7s1.1-28.1 12.9-35.9l48-32c.6-.4 1.2-.7 1.8-1.1L64 224z\"]\n};\nconst faPencil = {\n prefix: 'fas',\n iconName: 'pencil',\n icon: [512, 512, [9999, 61504, \"pencil-alt\"], \"f303\", \"M410.3 231l11.3-11.3-33.9-33.9-62.1-62.1L291.7 89.8l-11.3 11.3-22.6 22.6L58.6 322.9c-10.4 10.4-18 23.3-22.2 37.4L1 480.7c-2.5 8.4-.2 17.5 6.1 23.7s15.3 8.5 23.7 6.1l120.3-35.4c14.1-4.2 27-11.8 37.4-22.2L387.7 253.7 410.3 231zM160 399.4l-9.1 22.7c-4 3.1-8.5 5.4-13.3 6.9L59.4 452l23-78.1c1.4-4.9 3.8-9.4 6.9-13.3l22.7-9.1 0 32c0 8.8 7.2 16 16 16l32 0zM362.7 18.7L348.3 33.2 325.7 55.8 314.3 67.1l33.9 33.9 62.1 62.1 33.9 33.9 11.3-11.3 22.6-22.6 14.5-14.5c25-25 25-65.5 0-90.5L453.3 18.7c-25-25-65.5-25-90.5 0zm-47.4 168l-144 144c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l144-144c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nconst faPencilAlt = faPencil;\nconst faBackward = {\n prefix: 'fas',\n iconName: 'backward',\n icon: [512, 512, [9194], \"f04a\", \"M459.5 440.6c9.5 7.9 22.8 9.7 34.1 4.4s18.4-16.6 18.4-29l0-320c0-12.4-7.2-23.7-18.4-29s-24.5-3.6-34.1 4.4L288 214.3l0 41.7 0 41.7L459.5 440.6zM256 352l0-96 0-128 0-32c0-12.4-7.2-23.7-18.4-29s-24.5-3.6-34.1 4.4l-192 160C4.2 237.5 0 246.5 0 256s4.2 18.5 11.5 24.6l192 160c9.5 7.9 22.8 9.7 34.1 4.4s18.4-16.6 18.4-29l0-64z\"]\n};\nconst faCaretRight = {\n prefix: 'fas',\n iconName: 'caret-right',\n icon: [256, 512, [], \"f0da\", \"M246.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-9.2-9.2-22.9-11.9-34.9-6.9s-19.8 16.6-19.8 29.6l0 256c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l128-128z\"]\n};\nconst faComments = {\n prefix: 'fas',\n iconName: 'comments',\n icon: [640, 512, [128490, 61670], \"f086\", \"M208 352c114.9 0 208-78.8 208-176S322.9 0 208 0S0 78.8 0 176c0 38.6 14.7 74.3 39.6 103.4c-3.5 9.4-8.7 17.7-14.2 24.7c-4.8 6.2-9.7 11-13.3 14.3c-1.8 1.6-3.3 2.9-4.3 3.7c-.5 .4-.9 .7-1.1 .8l-.2 .2s0 0 0 0s0 0 0 0C1 327.2-1.4 334.4 .8 340.9S9.1 352 16 352c21.8 0 43.8-5.6 62.1-12.5c9.2-3.5 17.8-7.4 25.2-11.4C134.1 343.3 169.8 352 208 352zM448 176c0 112.3-99.1 196.9-216.5 207C255.8 457.4 336.4 512 432 512c38.2 0 73.9-8.7 104.7-23.9c7.5 4 16 7.9 25.2 11.4c18.3 6.9 40.3 12.5 62.1 12.5c6.9 0 13.1-4.5 15.2-11.1c2.1-6.6-.2-13.8-5.8-17.9c0 0 0 0 0 0s0 0 0 0l-.2-.2c-.2-.2-.6-.4-1.1-.8c-1-.8-2.5-2-4.3-3.7c-3.6-3.3-8.5-8.1-13.3-14.3c-5.5-7-10.7-15.4-14.2-24.7c24.9-29 39.6-64.7 39.6-103.4c0-92.8-84.9-168.9-192.6-175.5c.4 5.1 .6 10.3 .6 15.5z\"]\n};\nconst faPaste = {\n prefix: 'fas',\n iconName: 'paste',\n icon: [512, 512, [\"file-clipboard\"], \"f0ea\", \"M160 0c-23.7 0-44.4 12.9-55.4 32L48 32C21.5 32 0 53.5 0 80L0 400c0 26.5 21.5 48 48 48l144 0 0-272c0-44.2 35.8-80 80-80l48 0 0-16c0-26.5-21.5-48-48-48l-56.6 0C204.4 12.9 183.7 0 160 0zM272 128c-26.5 0-48 21.5-48 48l0 272 0 16c0 26.5 21.5 48 48 48l192 0c26.5 0 48-21.5 48-48l0-220.1c0-12.7-5.1-24.9-14.1-33.9l-67.9-67.9c-9-9-21.2-14.1-33.9-14.1L320 128l-48 0zM160 40a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faFileClipboard = faPaste;\nconst faCodePullRequest = {\n prefix: 'fas',\n iconName: 'code-pull-request',\n icon: [512, 512, [], \"e13c\", \"M305.8 2.1C314.4 5.9 320 14.5 320 24l0 40 16 0c70.7 0 128 57.3 128 128l0 166.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3L400 192c0-35.3-28.7-64-64-64l-16 0 0 40c0 9.5-5.6 18.1-14.2 21.9s-18.8 2.3-25.8-4.1l-80-72c-5.1-4.6-7.9-11-7.9-17.8s2.9-13.3 7.9-17.8l80-72c7-6.3 17.2-7.9 25.8-4.1zM104 80A24 24 0 1 0 56 80a24 24 0 1 0 48 0zm8 73.3l0 205.3c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3l0-205.3C19.7 141 0 112.8 0 80C0 35.8 35.8 0 80 0s80 35.8 80 80c0 32.8-19.7 61-48 73.3zM104 432a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm328 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nconst faClipboardList = {\n prefix: 'fas',\n iconName: 'clipboard-list',\n icon: [384, 512, [], \"f46d\", \"M192 0c-41.8 0-77.4 26.7-90.5 64L64 64C28.7 64 0 92.7 0 128L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64l-37.5 0C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM72 272a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm104-16l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zM72 368a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm88 0c0-8.8 7.2-16 16-16l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16z\"]\n};\nconst faTruckRampBox = {\n prefix: 'fas',\n iconName: 'truck-ramp-box',\n icon: [640, 512, [\"truck-loading\"], \"f4de\", \"M640 0l0 400c0 61.9-50.1 112-112 112c-61 0-110.5-48.7-112-109.3L48.4 502.9c-17.1 4.6-34.6-5.4-39.3-22.5s5.4-34.6 22.5-39.3L352 353.8 352 64c0-35.3 28.7-64 64-64L640 0zM576 400a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM23.1 207.7c-4.6-17.1 5.6-34.6 22.6-39.2l46.4-12.4 20.7 77.3c2.3 8.5 11.1 13.6 19.6 11.3l30.9-8.3c8.5-2.3 13.6-11.1 11.3-19.6l-20.7-77.3 46.4-12.4c17.1-4.6 34.6 5.6 39.2 22.6l41.4 154.5c4.6 17.1-5.6 34.6-22.6 39.2L103.7 384.9c-17.1 4.6-34.6-5.6-39.2-22.6L23.1 207.7z\"]\n};\nconst faTruckLoading = faTruckRampBox;\nconst faUserCheck = {\n prefix: 'fas',\n iconName: 'user-check',\n icon: [640, 512, [], \"f4fc\", \"M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304l91.4 0C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7L29.7 512C13.3 512 0 498.7 0 482.3zM625 177L497 305c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L591 143c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nconst faVialVirus = {\n prefix: 'fas',\n iconName: 'vial-virus',\n icon: [512, 512, [], \"e597\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l0 288c0 53 43 96 96 96c28.6 0 54.2-12.5 71.8-32.3c.1-14.2 5.6-28.3 16.4-39.1c.2-.2 .1-.6-.2-.6c-30.9 0-56-25.1-56-56s25.1-56 56-56c.3 0 .4-.4 .2-.6c-21.9-21.9-21.9-57.3 0-79.2c2.4-2.4 5-4.6 7.8-6.5L224 96c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0L96 32 32 32zM96 192l0-96 64 0 0 96-64 0zM216 376c28.8 0 43.2 34.8 22.9 55.2c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0c20.4-20.4 55.2-5.9 55.2 22.9c0 13.3 10.7 24 24 24s24-10.7 24-24c0-28.8 34.8-43.2 55.2-22.9c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9C444.8 410.8 459.2 376 488 376c13.3 0 24-10.7 24-24s-10.7-24-24-24c-28.8 0-43.2-34.8-22.9-55.2c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0C410.8 259.2 376 244.8 376 216c0-13.3-10.7-24-24-24s-24 10.7-24 24c0 28.8-34.8 43.2-55.2 22.9c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9c20.4 20.4 5.9 55.2-22.9 55.2c-13.3 0-24 10.7-24 24s10.7 24 24 24zm104-88a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm40 96a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nconst faSheetPlastic = {\n prefix: 'fas',\n iconName: 'sheet-plastic',\n icon: [384, 512, [], \"e571\", \"M0 448c0 35.3 28.7 64 64 64l160 0 0-128c0-17.7 14.3-32 32-32l128 0 0-288c0-35.3-28.7-64-64-64L64 0C28.7 0 0 28.7 0 64L0 448zM171.3 75.3l-96 96c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l96-96c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6zm96 32l-160 160c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l160-160c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6zM384 384l-128 0 0 128L384 384z\"]\n};\nconst faBlog = {\n prefix: 'fas',\n iconName: 'blog',\n icon: [512, 512, [], \"f781\", \"M192 32c0 17.7 14.3 32 32 32c123.7 0 224 100.3 224 224c0 17.7 14.3 32 32 32s32-14.3 32-32C512 128.9 383.1 0 224 0c-17.7 0-32 14.3-32 32zm0 96c0 17.7 14.3 32 32 32c70.7 0 128 57.3 128 128c0 17.7 14.3 32 32 32s32-14.3 32-32c0-106-86-192-192-192c-17.7 0-32 14.3-32 32zM96 144c0-26.5-21.5-48-48-48S0 117.5 0 144L0 368c0 79.5 64.5 144 144 144s144-64.5 144-144s-64.5-144-144-144l-16 0 0 96 16 0c26.5 0 48 21.5 48 48s-21.5 48-48 48s-48-21.5-48-48l0-224z\"]\n};\nconst faUserNinja = {\n prefix: 'fas',\n iconName: 'user-ninja',\n icon: [448, 512, [129399], \"f504\", \"M224 256c-57.2 0-105.6-37.5-122-89.3c-1.1 1.3-2.2 2.6-3.5 3.8c-15.8 15.8-38.8 20.7-53.6 22.1c-8.1 .8-14.6-5.7-13.8-13.8c1.4-14.7 6.3-37.8 22.1-53.6c5.8-5.8 12.6-10.1 19.6-13.4c-7-3.2-13.8-7.6-19.6-13.4C37.4 82.7 32.6 59.7 31.1 44.9c-.8-8.1 5.7-14.6 13.8-13.8c14.7 1.4 37.8 6.3 53.6 22.1c4.8 4.8 8.7 10.4 11.7 16.1C131.4 28.2 174.4 0 224 0c70.7 0 128 57.3 128 128s-57.3 128-128 128zM0 482.3C0 399.5 56.4 330 132.8 309.9c6-1.6 12.2 .9 15.9 5.8l62.5 83.3c6.4 8.5 19.2 8.5 25.6 0l62.5-83.3c3.7-4.9 9.9-7.4 15.9-5.8C391.6 330 448 399.5 448 482.3c0 16.4-13.3 29.7-29.7 29.7L29.7 512C13.3 512 0 498.7 0 482.3zM160 96c-8.8 0-16 7.2-16 16s7.2 16 16 16l128 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L160 96z\"]\n};\nconst faPersonArrowUpFromLine = {\n prefix: 'fas',\n iconName: 'person-arrow-up-from-line',\n icon: [640, 512, [], \"e539\", \"M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8 352l0-96 16 0 0 96-16 0zm-64 0l-88 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l120 0 80 0 376 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-344 0 0-191.1 28.6 47.5c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-58.3-97c-17.4-28.9-48.6-46.6-82.3-46.6l-29.7 0c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9 120 448zM598.6 121.4l-80-80c-12.5-12.5-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L464 141.3 464 384c0 17.7 14.3 32 32 32s32-14.3 32-32l0-242.7 25.4 25.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3z\"]\n};\nconst faScrollTorah = {\n prefix: 'fas',\n iconName: 'scroll-torah',\n icon: [640, 512, [\"torah\"], \"f6a0\", \"M96 480L96 32C96 14.3 74.5 0 48 0S0 14.3 0 32L0 480c0 17.7 21.5 32 48 32s48-14.3 48-32zM512 32L128 32l0 448 384 0 0-448zM592 0c-26.5 0-48 14.3-48 32l0 448c0 17.7 21.5 32 48 32s48-14.3 48-32l0-448c0-17.7-21.5-32-48-32zM196 313.7c0-3.2 .9-6.4 2.5-9.2L226.7 256l-28.3-48.5c-1.6-2.8-2.5-6-2.5-9.2c0-10.1 8.2-18.3 18.3-18.3l56.7 0 31.4-53.9c3.6-6.3 10.3-10.1 17.6-10.1s13.9 3.8 17.6 10.1L369 180l56.7 0c10.1 0 18.3 8.2 18.3 18.3c0 3.2-.9 6.4-2.5 9.2L413.3 256l28.3 48.5c1.6 2.8 2.5 6 2.5 9.2c0 10.1-8.2 18.3-18.3 18.3L369 332l-31.4 53.9c-3.6 6.3-10.3 10.1-17.6 10.1s-13.9-3.8-17.6-10.1L271 332l-56.7 0c-10.1 0-18.3-8.2-18.3-18.3zm124 54.7L341.2 332l-42.4 0L320 368.4zM254.5 256l30.3 52 70.4 0 30.3-52-30.3-52-70.4 0-30.3 52zm144.9 23.8L383 308l32.8 0-16.4-28.2zM415.8 204L383 204l16.4 28.2L415.8 204zM320 143.6L298.8 180l42.4 0L320 143.6zM224.2 204l16.4 28.2L257 204l-32.8 0zM257 308l-16.4-28.2L224.2 308l32.8 0z\"]\n};\nconst faTorah = faScrollTorah;\nconst faBroomBall = {\n prefix: 'fas',\n iconName: 'broom-ball',\n icon: [576, 512, [\"quidditch\", \"quidditch-broom-ball\"], \"f458\", \"M566.6 9.4c12.5 12.5 12.5 32.8 0 45.3l-192 192 34.7 34.7c4.2 4.2 6.6 10 6.6 16c0 12.5-10.1 22.6-22.6 22.6l-29.1 0L256 211.7l0-29.1c0-12.5 10.1-22.6 22.6-22.6c6 0 11.8 2.4 16 6.6l34.7 34.7 192-192c12.5-12.5 32.8-12.5 45.3 0zm-344 225.5L341.1 353.4c3.7 42.7-11.7 85.2-42.3 115.8C271.4 496.6 234.2 512 195.5 512L22.1 512C9.9 512 0 502.1 0 489.9c0-6.3 2.7-12.3 7.3-16.5L133.7 359.7c4.2-3.7-.4-10.4-5.4-7.9L77.2 377.4c-6.1 3-13.2-1.4-13.2-8.2c0-31.5 12.5-61.7 34.8-84l8-8c30.6-30.6 73.1-45.9 115.8-42.3zM464 352a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nconst faQuidditch = faBroomBall;\nconst faQuidditchBroomBall = faBroomBall;\nconst faToggleOff = {\n prefix: 'fas',\n iconName: 'toggle-off',\n icon: [576, 512, [], \"f204\", \"M384 128c70.7 0 128 57.3 128 128s-57.3 128-128 128l-192 0c-70.7 0-128-57.3-128-128s57.3-128 128-128l192 0zM576 256c0-106-86-192-192-192L192 64C86 64 0 150 0 256S86 448 192 448l192 0c106 0 192-86 192-192zM192 352a96 96 0 1 0 0-192 96 96 0 1 0 0 192z\"]\n};\nconst faBoxArchive = {\n prefix: 'fas',\n iconName: 'box-archive',\n icon: [512, 512, [\"archive\"], \"f187\", \"M32 32l448 0c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32L32 128C14.3 128 0 113.7 0 96L0 64C0 46.3 14.3 32 32 32zm0 128l448 0 0 256c0 35.3-28.7 64-64 64L96 480c-35.3 0-64-28.7-64-64l0-256zm128 80c0 8.8 7.2 16 16 16l160 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-160 0c-8.8 0-16 7.2-16 16z\"]\n};\nconst faArchive = faBoxArchive;\nconst faPersonDrowning = {\n prefix: 'fas',\n iconName: 'person-drowning',\n icon: [576, 512, [], \"e545\", \"M192 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 32.2c0 54.1 23.5 104 62.2 138.3l-21 146.7c7.8 2.1 15.5 3.3 22.8 3.3c21.1 0 42-8.5 59.2-20.3c22.1-15.5 51.6-15.5 73.7 0c12.4 8.5 26.1 14.8 39.7 18l17.7-97.6c10.7-1.2 21.3-3.1 31.9-5.5l105-23.9c17.2-3.9 28-21.1 24.1-38.3s-21.1-28-38.3-24.1L400 216.6c-41 9.3-83.7 7.5-123.7-5.2c-50.2-16-84.3-62.6-84.3-115.3L192 64zM320 192a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM306.5 389.9c-11.1-7.9-25.9-7.9-37 0C247 405.4 219.5 416 192 416c-26.9 0-55.3-10.8-77.4-26.1c0 0 0 0 0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 469.7 159 480 192 480c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7c0 0 0 0 0 0C439.4 405.2 410.9 416 384 416c-27.5 0-55-10.6-77.5-26.1z\"]\n};\nconst faArrowDown91 = {\n prefix: 'fas',\n iconName: 'arrow-down-9-1',\n icon: [576, 512, [\"sort-numeric-desc\", \"sort-numeric-down-alt\"], \"f886\", \"M160 480c9 0 17.5-3.8 23.6-10.4l88-96c11.9-13 11.1-33.3-2-45.2s-33.3-11.1-45.2 2L192 365.7 192 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 301.7L95.6 330.4c-11.9-13-32.2-13.9-45.2-2s-13.9 32.2-2 45.2l88 96C142.5 476.2 151 480 160 480zM450.7 294c-8.3-6-19.1-7.7-28.8-4.4l-48 16c-16.8 5.6-25.8 23.7-20.2 40.5s23.7 25.8 40.5 20.2l5.9-2 0 51.6-16 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l48 0 48 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-16 0 0-96c0-10.3-4.9-19.9-13.3-26zM418.3 91a32 32 0 1 1 27.4 57.9A32 32 0 1 1 418.3 91zM405.1 203.8l-6.8 9.2c-10.5 14.2-7.5 34.2 6.7 44.8s34.2 7.5 44.8-6.7l48.8-65.8c14-18.9 21.5-41.7 21.5-65.2c0-48.6-39.4-88-88-88s-88 39.4-88 88c0 39.2 25.6 72.4 61.1 83.8z\"]\n};\nconst faSortNumericDesc = faArrowDown91;\nconst faSortNumericDownAlt = faArrowDown91;\nconst faFaceGrinTongueSquint = {\n prefix: 'fas',\n iconName: 'face-grin-tongue-squint',\n icon: [512, 512, [128541, \"grin-tongue-squint\"], \"f58a\", \"M0 256C0 368.9 73.1 464.7 174.5 498.8C165.3 484 160 466.6 160 448l0-47.3c-24-17.5-43.1-41.4-54.8-69.2c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19c12.3-3.8 24.3 6.9 19.3 18.7c-11.8 28-31.1 52-55.4 69.6l0 46.9c0 18.6-5.3 36-14.5 50.8C438.9 464.7 512 368.9 512 256C512 114.6 397.4 0 256 0S0 114.6 0 256zM116 141.1c0-9 9.6-14.7 17.5-10.5l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6zm262.5-10.5c7.9-4.2 17.5 1.5 17.5 10.5c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9zM320 448l0-45.4c0-14.7-11.9-26.6-26.6-26.6l-2 0c-11.3 0-21.1 7.9-23.6 18.9c-2.8 12.6-20.8 12.6-23.6 0c-2.5-11.1-12.3-18.9-23.6-18.9l-2 0c-14.7 0-26.6 11.9-26.6 26.6l0 45.4c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nconst faGrinTongueSquint = faFaceGrinTongueSquint;\nconst faSprayCan = {\n prefix: 'fas',\n iconName: 'spray-can',\n icon: [512, 512, [], \"f5bd\", \"M128 0l64 0c17.7 0 32 14.3 32 32l0 96L96 128l0-96c0-17.7 14.3-32 32-32zM0 256c0-53 43-96 96-96l128 0c53 0 96 43 96 96l0 208c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 256zm240 80A80 80 0 1 0 80 336a80 80 0 1 0 160 0zM256 64a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM384 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM448 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM384 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faTruckMonster = {\n prefix: 'fas',\n iconName: 'truck-monster',\n icon: [640, 512, [], \"f63b\", \"M288 64l0 64 128 0L368 64l-80 0zM419.2 25.6L496 128l80 0c17.7 0 32 14.3 32 32l0 64c17.7 0 32 14.3 32 32s-14.3 32-32 32c-29.2-38.9-75.7-64-128-64s-98.8 25.1-128 64l-64 0c-29.2-38.9-75.7-64-128-64s-98.8 25.1-128 64c-17.7 0-32-14.3-32-32s14.3-32 32-32l0-64c0-17.7 14.3-32 32-32l160 0 0-80c0-26.5 21.5-48 48-48l96 0c20.1 0 39.1 9.5 51.2 25.6zM152 256l16 0c12.1 0 22.1 8.9 23.8 20.6c7.6 2.2 14.9 5.3 21.7 9c9.4-7 22.8-6.3 31.3 2.3l11.3 11.3c8.6 8.6 9.3 21.9 2.3 31.3c3.7 6.8 6.8 14.1 9 21.7c11.6 1.7 20.6 11.7 20.6 23.8l0 16c0 12.1-8.9 22.1-20.6 23.8c-2.2 7.6-5.3 14.9-9 21.7c7 9.4 6.3 22.8-2.3 31.3l-11.3 11.3c-8.6 8.6-21.9 9.3-31.3 2.2c-6.8 3.7-14.1 6.8-21.7 9C190.1 503.1 180.1 512 168 512l-16 0c-12.1 0-22.1-8.9-23.8-20.6c-7.6-2.2-14.9-5.3-21.7-9c-9.4 7.1-22.8 6.3-31.3-2.2L63.8 468.9c-8.6-8.6-9.3-21.9-2.3-31.3c-3.7-6.9-6.8-14.1-9-21.8C40.9 414.1 32 404.1 32 392l0-16c0-12.1 8.9-22.1 20.6-23.8c2.2-7.6 5.3-14.9 9-21.8c-7-9.4-6.3-22.8 2.3-31.3l11.3-11.3c8.6-8.6 21.9-9.3 31.3-2.3c6.8-3.7 14.1-6.8 21.7-9c1.7-11.6 11.7-20.6 23.8-20.6zm8 176a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM448.2 276.6c1.7-11.6 11.7-20.6 23.8-20.6l16 0c12.1 0 22.1 8.9 23.8 20.6c7.6 2.2 14.9 5.3 21.8 9c9.4-7 22.8-6.3 31.3 2.3l11.3 11.3c8.6 8.6 9.3 21.9 2.2 31.3c3.7 6.8 6.8 14.1 9 21.7c11.6 1.7 20.6 11.7 20.6 23.8l0 16c0 12.1-8.9 22.1-20.6 23.8c-2.2 7.6-5.3 14.9-9 21.7c7 9.4 6.3 22.8-2.2 31.3l-11.3 11.3c-8.6 8.6-21.9 9.3-31.3 2.2c-6.9 3.7-14.1 6.8-21.8 9C510.1 503.1 500.1 512 488 512l-16 0c-12.1 0-22.1-8.9-23.8-20.6c-7.6-2.2-14.9-5.3-21.7-9c-9.4 7.1-22.8 6.3-31.3-2.2l-11.3-11.3c-8.6-8.6-9.3-21.9-2.2-31.3c-3.7-6.9-6.8-14.1-9-21.8C360.9 414.1 352 404.1 352 392l0-16c0-12.1 8.9-22.1 20.6-23.8c2.2-7.6 5.3-14.9 9-21.8c-7-9.4-6.3-22.8 2.2-31.3l11.3-11.3c8.6-8.6 21.9-9.3 31.3-2.3c6.8-3.7 14.1-6.8 21.7-9zM528 384a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nconst faW = {\n prefix: 'fas',\n iconName: 'w',\n icon: [576, 512, [119], \"57\", \"M20.8 34c16.5-6.2 35 2.2 41.2 18.7l110.2 294L257.3 55c4-13.7 16.5-23 30.7-23s26.7 9.4 30.7 23l85.1 291.7L514 52.8c6.2-16.5 24.6-24.9 41.2-18.7s24.9 24.7 18.7 41.2l-144 384c-4.8 12.9-17.4 21.3-31.2 20.7s-25.7-9.8-29.5-23L288 178.3 206.7 457c-3.9 13.2-15.8 22.5-29.5 23s-26.3-7.8-31.2-20.7L2 75.2C-4.2 58.7 4.2 40.2 20.8 34z\"]\n};\nconst faEarthAfrica = {\n prefix: 'fas',\n iconName: 'earth-africa',\n icon: [512, 512, [127757, \"globe-africa\"], \"f57c\", \"M177.8 63.2l10 17.4c2.8 4.8 4.2 10.3 4.2 15.9l0 41.4c0 3.9 1.6 7.7 4.3 10.4c6.2 6.2 16.5 5.7 22-1.2l13.6-17c4.7-5.9 12.9-7.7 19.6-4.3l15.2 7.6c3.4 1.7 7.2 2.6 11 2.6c6.5 0 12.8-2.6 17.4-7.2l3.9-3.9c2.9-2.9 7.3-3.6 11-1.8l29.2 14.6c7.8 3.9 12.6 11.8 12.6 20.5c0 10.5-7.1 19.6-17.3 22.2l-35.4 8.8c-7.4 1.8-15.1 1.5-22.4-.9l-32-10.7c-3.3-1.1-6.7-1.7-10.2-1.7c-7 0-13.8 2.3-19.4 6.5L176 212c-10.1 7.6-16 19.4-16 32l0 28c0 26.5 21.5 48 48 48l32 0c8.8 0 16 7.2 16 16l0 48c0 17.7 14.3 32 32 32c10.1 0 19.6-4.7 25.6-12.8l25.6-34.1c8.3-11.1 12.8-24.6 12.8-38.4l0-12.1c0-3.9 2.6-7.3 6.4-8.2l5.3-1.3c11.9-3 20.3-13.7 20.3-26c0-7.1-2.8-13.9-7.8-18.9l-33.5-33.5c-3.7-3.7-3.7-9.7 0-13.4c5.7-5.7 14.1-7.7 21.8-5.1l14.1 4.7c12.3 4.1 25.7-1.5 31.5-13c3.5-7 11.2-10.8 18.9-9.2l27.4 5.5C432 112.4 351.5 48 256 48c-27.7 0-54 5.4-78.2 15.2zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"]\n};\nconst faGlobeAfrica = faEarthAfrica;\nconst faRainbow = {\n prefix: 'fas',\n iconName: 'rainbow',\n icon: [640, 512, [127752], \"f75b\", \"M320 96C178.6 96 64 210.6 64 352l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96C0 175.3 143.3 32 320 32s320 143.3 320 320l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96C576 210.6 461.4 96 320 96zm0 192c-35.3 0-64 28.7-64 64l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96c0-70.7 57.3-128 128-128s128 57.3 128 128l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96c0-35.3-28.7-64-64-64zM160 352l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96c0-123.7 100.3-224 224-224s224 100.3 224 224l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96c0-88.4-71.6-160-160-160s-160 71.6-160 160z\"]\n};\nconst faCircleNotch = {\n prefix: 'fas',\n iconName: 'circle-notch',\n icon: [512, 512, [], \"f1ce\", \"M222.7 32.1c5 16.9-4.6 34.8-21.5 39.8C121.8 95.6 64 169.1 64 256c0 106 86 192 192 192s192-86 192-192c0-86.9-57.8-160.4-137.1-184.1c-16.9-5-26.6-22.9-21.5-39.8s22.9-26.6 39.8-21.5C434.9 42.1 512 140 512 256c0 141.4-114.6 256-256 256S0 397.4 0 256C0 140 77.1 42.1 182.9 10.6c16.9-5 34.8 4.6 39.8 21.5z\"]\n};\nconst faTabletScreenButton = {\n prefix: 'fas',\n iconName: 'tablet-screen-button',\n icon: [448, 512, [\"tablet-alt\"], \"f3fa\", \"M0 64C0 28.7 28.7 0 64 0L384 0c35.3 0 64 28.7 64 64l0 384c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zM256 448a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM384 64L64 64l0 320 320 0 0-320z\"]\n};\nconst faTabletAlt = faTabletScreenButton;\nconst faPaw = {\n prefix: 'fas',\n iconName: 'paw',\n icon: [512, 512, [], \"f1b0\", \"M226.5 92.9c14.3 42.9-.3 86.2-32.6 96.8s-70.1-15.6-84.4-58.5s.3-86.2 32.6-96.8s70.1 15.6 84.4 58.5zM100.4 198.6c18.9 32.4 14.3 70.1-10.2 84.1s-59.7-.9-78.5-33.3S-2.7 179.3 21.8 165.3s59.7 .9 78.5 33.3zM69.2 401.2C121.6 259.9 214.7 224 256 224s134.4 35.9 186.8 177.2c3.6 9.7 5.2 20.1 5.2 30.5l0 1.6c0 25.8-20.9 46.7-46.7 46.7c-11.5 0-22.9-1.4-34-4.2l-88-22c-15.3-3.8-31.3-3.8-46.6 0l-88 22c-11.1 2.8-22.5 4.2-34 4.2C84.9 480 64 459.1 64 433.3l0-1.6c0-10.4 1.6-20.8 5.2-30.5zM421.8 282.7c-24.5-14-29.1-51.7-10.2-84.1s54-47.3 78.5-33.3s29.1 51.7 10.2 84.1s-54 47.3-78.5 33.3zM310.1 189.7c-32.3-10.6-46.9-53.9-32.6-96.8s52.1-69.1 84.4-58.5s46.9 53.9 32.6 96.8s-52.1 69.1-84.4 58.5z\"]\n};\nconst faCloud = {\n prefix: 'fas',\n iconName: 'cloud',\n icon: [640, 512, [9729], \"f0c2\", \"M0 336c0 79.5 64.5 144 144 144l368 0c70.7 0 128-57.3 128-128c0-61.9-44-113.6-102.4-125.4c4.1-10.7 6.4-22.4 6.4-34.6c0-53-43-96-96-96c-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32C167.6 32 96 103.6 96 192c0 2.7 .1 5.4 .2 8.1C40.2 219.8 0 273.2 0 336z\"]\n};\nconst faTrowelBricks = {\n prefix: 'fas',\n iconName: 'trowel-bricks',\n icon: [512, 512, [], \"e58a\", \"M240.8 4.8C250.3 10.6 256 20.9 256 32l0 72 89 0c3.6-13.8 16.1-24 31-24l88 0c26.5 0 48 21.5 48 48s-21.5 48-48 48l-88 0c-14.9 0-27.4-10.2-31-24l-89 0 0 72c0 11.1-5.7 21.4-15.2 27.2s-21.2 6.4-31.1 1.4l-192-96C6.8 151.2 0 140.1 0 128s6.8-23.2 17.7-28.6l192-96c9.9-5 21.7-4.4 31.1 1.4zM288 256c0-17.7 14.3-32 32-32l160 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-64zM32 384l96 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32zm192 0l256 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32z\"]\n};\nconst faFaceFlushed = {\n prefix: 'fas',\n iconName: 'face-flushed',\n icon: [512, 512, [128563, \"flushed\"], \"f579\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM176 384c0 8.8 7.2 16 16 16l128 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-128 0c-8.8 0-16 7.2-16 16zm-16-88a72 72 0 1 0 0-144 72 72 0 1 0 0 144zm264-72a72 72 0 1 0 -144 0 72 72 0 1 0 144 0zm-288 0a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm192 0a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nconst faFlushed = faFaceFlushed;\nconst faHospitalUser = {\n prefix: 'fas',\n iconName: 'hospital-user',\n icon: [576, 512, [], \"f80d\", \"M48 0C21.5 0 0 21.5 0 48L0 256l144 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L0 288l0 64 144 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L0 384l0 80c0 26.5 21.5 48 48 48l217.9 0c-6.3-10.2-9.9-22.2-9.9-35.1c0-46.9 25.8-87.8 64-109.2l0-95.9L320 48c0-26.5-21.5-48-48-48L48 0zM152 64l16 0c8.8 0 16 7.2 16 16l0 24 24 0c8.8 0 16 7.2 16 16l0 16c0 8.8-7.2 16-16 16l-24 0 0 24c0 8.8-7.2 16-16 16l-16 0c-8.8 0-16-7.2-16-16l0-24-24 0c-8.8 0-16-7.2-16-16l0-16c0-8.8 7.2-16 16-16l24 0 0-24c0-8.8 7.2-16 16-16zM512 272a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM288 477.1c0 19.3 15.6 34.9 34.9 34.9l218.2 0c19.3 0 34.9-15.6 34.9-34.9c0-51.4-41.7-93.1-93.1-93.1l-101.8 0c-51.4 0-93.1 41.7-93.1 93.1z\"]\n};\nconst faTentArrowLeftRight = {\n prefix: 'fas',\n iconName: 'tent-arrow-left-right',\n icon: [576, 512, [], \"e57f\", \"M488.1 6.2c-9.9-8.9-25-8.1-33.9 1.8s-8.1 25 1.8 33.9L489.5 72 86.5 72l33.5-30.2c9.9-8.9 10.7-24 1.8-33.9S97.8-2.7 87.9 6.2l-80 72C2.9 82.7 0 89.2 0 96s2.9 13.3 7.9 17.8l80 72c9.9 8.9 25 8.1 33.9-1.8s8.1-25-1.8-33.9L86.5 120l402.9 0-33.5 30.2c-9.9 8.9-10.7 24-1.8 33.9s24 10.7 33.9 1.8l80-72c5.1-4.6 7.9-11 7.9-17.8s-2.9-13.3-7.9-17.8l-80-72zM307.4 166.5c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6S86.7 512 96 512l144 0 16 0c17.7 0 32-14.3 32-32l0-118.1c0-5.5 4.4-9.9 9.9-9.9c3.7 0 7.2 2.1 8.8 5.5l68.4 136.8c5.4 10.8 16.5 17.7 28.6 17.7l60.2 0 16 0c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z\"]\n};\nconst faGavel = {\n prefix: 'fas',\n iconName: 'gavel',\n icon: [512, 512, [\"legal\"], \"f0e3\", \"M318.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-120 120c-12.5 12.5-12.5 32.8 0 45.3l16 16c12.5 12.5 32.8 12.5 45.3 0l4-4L325.4 293.4l-4 4c-12.5 12.5-12.5 32.8 0 45.3l16 16c12.5 12.5 32.8 12.5 45.3 0l120-120c12.5-12.5 12.5-32.8 0-45.3l-16-16c-12.5-12.5-32.8-12.5-45.3 0l-4 4L330.6 74.6l4-4c12.5-12.5 12.5-32.8 0-45.3l-16-16zm-152 288c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l48 48c12.5 12.5 32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-1.4-1.4L272 285.3 226.7 240 168 298.7l-1.4-1.4z\"]\n};\nconst faLegal = faGavel;\nconst faBinoculars = {\n prefix: 'fas',\n iconName: 'binoculars',\n icon: [512, 512, [], \"f1e5\", \"M128 32l32 0c17.7 0 32 14.3 32 32l0 32L96 96l0-32c0-17.7 14.3-32 32-32zm64 96l0 320c0 17.7-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32l0-59.1c0-34.6 9.4-68.6 27.2-98.3C40.9 267.8 49.7 242.4 53 216L60.5 156c2-16 15.6-28 31.8-28l99.8 0zm227.8 0c16.1 0 29.8 12 31.8 28L459 216c3.3 26.4 12.1 51.8 25.8 74.6c17.8 29.7 27.2 63.7 27.2 98.3l0 59.1c0 17.7-14.3 32-32 32l-128 0c-17.7 0-32-14.3-32-32l0-320 99.8 0zM320 64c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 32-96 0 0-32zm-32 64l0 160-64 0 0-160 64 0z\"]\n};\nconst faMicrophoneSlash = {\n prefix: 'fas',\n iconName: 'microphone-slash',\n icon: [640, 512, [], \"f131\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L472.1 344.7c15.2-26 23.9-56.3 23.9-88.7l0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40c0 21.2-5.1 41.1-14.2 58.7L416 300.8 416 96c0-53-43-96-96-96s-96 43-96 96l0 54.3L38.8 5.1zM344 430.4c20.4-2.8 39.7-9.1 57.3-18.2l-43.1-33.9C346.1 382 333.3 384 320 384c-70.7 0-128-57.3-128-128l0-8.7L144.7 210c-.5 1.9-.7 3.9-.7 6l0 40c0 89.1 66.2 162.7 152 174.4l0 33.6-48 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l72 0 72 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0 0-33.6z\"]\n};\nconst faBoxTissue = {\n prefix: 'fas',\n iconName: 'box-tissue',\n icon: [512, 512, [], \"e05b\", \"M92.5 0L208 0c40 0 52 24 64 48s24 48 64 48l85.2 0C436 96 448 108 448 122.8c0 3.4-.7 6.8-1.9 10L409.6 224 384 288l-256 0-16-64L64.9 35.4c-.6-2.3-.9-4.6-.9-6.9C64 12.8 76.8 0 92.5 0zM79 224l16 64-15 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l48 0 256 0 48 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-13.5 0 25.6-64 19.9 0c26.5 0 48 21.5 48 48l0 112L0 384 0 272c0-26.5 21.5-48 48-48l31 0zM0 416l512 0 0 48c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48l0-48z\"]\n};\nconst faMotorcycle = {\n prefix: 'fas',\n iconName: 'motorcycle',\n icon: [640, 512, [127949], \"f21c\", \"M280 32c-13.3 0-24 10.7-24 24s10.7 24 24 24l57.7 0 16.4 30.3L256 192l-45.3-45.3c-12-12-28.3-18.7-45.3-18.7L64 128c-17.7 0-32 14.3-32 32l0 32 96 0c88.4 0 160 71.6 160 160c0 11-1.1 21.7-3.2 32l70.4 0c-2.1-10.3-3.2-21-3.2-32c0-52.2 25-98.6 63.7-127.8l15.4 28.6C402.4 276.3 384 312 384 352c0 70.7 57.3 128 128 128s128-57.3 128-128s-57.3-128-128-128c-13.5 0-26.5 2.1-38.7 6L418.2 128l61.8 0c17.7 0 32-14.3 32-32l0-32c0-17.7-14.3-32-32-32l-20.4 0c-7.5 0-14.7 2.6-20.5 7.4L391.7 78.9l-14-26c-7-12.9-20.5-21-35.2-21L280 32zM462.7 311.2l28.2 52.2c6.3 11.7 20.9 16 32.5 9.7s16-20.9 9.7-32.5l-28.2-52.2c2.3-.3 4.7-.4 7.1-.4c35.3 0 64 28.7 64 64s-28.7 64-64 64s-64-28.7-64-64c0-15.5 5.5-29.7 14.7-40.8zM187.3 376c-9.5 23.5-32.5 40-59.3 40c-35.3 0-64-28.7-64-64s28.7-64 64-64c26.9 0 49.9 16.5 59.3 40l66.4 0C242.5 268.8 190.5 224 128 224C57.3 224 0 281.3 0 352s57.3 128 128 128c62.5 0 114.5-44.8 125.8-104l-66.4 0zM128 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faBellConcierge = {\n prefix: 'fas',\n iconName: 'bell-concierge',\n icon: [512, 512, [128718, \"concierge-bell\"], \"f562\", \"M216 64c-13.3 0-24 10.7-24 24s10.7 24 24 24l16 0 0 33.3C119.6 157.2 32 252.4 32 368l448 0c0-115.6-87.6-210.8-200-222.7l0-33.3 16 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-40 0-40 0zM24 400c-13.3 0-24 10.7-24 24s10.7 24 24 24l464 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L24 400z\"]\n};\nconst faConciergeBell = faBellConcierge;\nconst faPenRuler = {\n prefix: 'fas',\n iconName: 'pen-ruler',\n icon: [512, 512, [\"pencil-ruler\"], \"f5ae\", \"M469.3 19.3l23.4 23.4c25 25 25 65.5 0 90.5l-56.4 56.4L322.3 75.7l56.4-56.4c25-25 65.5-25 90.5 0zM44.9 353.2L299.7 98.3 413.7 212.3 158.8 467.1c-6.7 6.7-15.1 11.6-24.2 14.2l-104 29.7c-8.4 2.4-17.4 .1-23.6-6.1s-8.5-15.2-6.1-23.6l29.7-104c2.6-9.2 7.5-17.5 14.2-24.2zM249.4 103.4L103.4 249.4 16 161.9c-18.7-18.7-18.7-49.1 0-67.9L94.1 16c18.7-18.7 49.1-18.7 67.9 0l19.8 19.8c-.3 .3-.7 .6-1 .9l-64 64c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l64-64c.3-.3 .6-.7 .9-1l45.1 45.1zM408.6 262.6l45.1 45.1c-.3 .3-.7 .6-1 .9l-64 64c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l64-64c.3-.3 .6-.7 .9-1L496 350.1c18.7 18.7 18.7 49.1 0 67.9L417.9 496c-18.7 18.7-49.1 18.7-67.9 0l-87.4-87.4L408.6 262.6z\"]\n};\nconst faPencilRuler = faPenRuler;\nconst faPeopleArrows = {\n prefix: 'fas',\n iconName: 'people-arrows',\n icon: [640, 512, [\"people-arrows-left-right\"], \"e068\", \"M64 64a64 64 0 1 1 128 0A64 64 0 1 1 64 64zM25.9 233.4C29.3 191.9 64 160 105.6 160l44.8 0c27 0 51 13.4 65.5 34.1c-2.7 1.9-5.2 4-7.5 6.3l-64 64c-21.9 21.9-21.9 57.3 0 79.2L192 391.2l0 72.8c0 26.5-21.5 48-48 48l-32 0c-26.5 0-48-21.5-48-48l0-115.7c-26.5-9.5-44.7-35.8-42.2-65.6l4.1-49.3zM448 64a64 64 0 1 1 128 0A64 64 0 1 1 448 64zM431.6 200.4c-2.3-2.3-4.9-4.4-7.5-6.3c14.5-20.7 38.6-34.1 65.5-34.1l44.8 0c41.6 0 76.3 31.9 79.7 73.4l4.1 49.3c2.5 29.8-15.7 56.1-42.2 65.6L576 464c0 26.5-21.5 48-48 48l-32 0c-26.5 0-48-21.5-48-48l0-72.8 47.6-47.6c21.9-21.9 21.9-57.3 0-79.2l-64-64zM272 240l0 32 96 0 0-32c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l64 64c9.4 9.4 9.4 24.6 0 33.9l-64 64c-6.9 6.9-17.2 8.9-26.2 5.2s-14.8-12.5-14.8-22.2l0-32-96 0 0 32c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-64-64c-9.4-9.4-9.4-24.6 0-33.9l64-64c6.9-6.9 17.2-8.9 26.2-5.2s14.8 12.5 14.8 22.2z\"]\n};\nconst faPeopleArrowsLeftRight = faPeopleArrows;\nconst faMarsAndVenusBurst = {\n prefix: 'fas',\n iconName: 'mars-and-venus-burst',\n icon: [640, 512, [], \"e523\", \"M504 0c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l39 39-22.2 22.2C475.9 78.4 439.6 64 400 64c-88.4 0-160 71.6-160 160c0 80.2 59.1 146.7 136.1 158.2c0 .6-.1 1.2-.1 1.8l0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .4 0 .3 0 .4 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3 0 .3-24 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l24 0 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .2 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1 0 .1c0 0 0 .1 0 .1s0 .1 0 .1l0 .1c0 0 0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 .1 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 .1s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0l24 0-24 0c0 13.3 10.7 24 24 24s24-10.7 24-24l-24 0 24 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0 0 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1s0-.1 0-.1l0-.1c0 0 0-.1 0-.1s0-.1 0-.1l0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.1 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 0-.2 24 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-24 0 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.3 0-.4 0-.3 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4 0-.4c0-.6 0-1.2-.1-1.8c77-11.6 136.1-78 136.1-158.2c0-31.4-9-60.7-24.7-85.4L560 113.9l39 39c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2l0-112c0-13.3-10.7-24-24-24L504 0zM400 128a96 96 0 1 1 0 192 96 96 0 1 1 0-192zM190.9 18.1C188.4 12 182.6 8 176 8s-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6L176 286.1l58.6 53.9c4.1 3.8 9.9 5.1 15.2 3.6C223.6 310.8 208 269.2 208 224c0-60.8 28.3-115 72.4-150.2L220.3 92.1l-29.4-74z\"]\n};\nconst faSquareCaretRight = {\n prefix: 'fas',\n iconName: 'square-caret-right',\n icon: [448, 512, [\"caret-square-right\"], \"f152\", \"M448 96c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320zM320 256c0 6.7-2.8 13-7.7 17.6l-112 104c-7 6.5-17.2 8.2-25.9 4.4s-14.4-12.5-14.4-22l0-208c0-9.5 5.7-18.2 14.4-22s18.9-2.1 25.9 4.4l112 104c4.9 4.5 7.7 10.9 7.7 17.6z\"]\n};\nconst faCaretSquareRight = faSquareCaretRight;\nconst faScissors = {\n prefix: 'fas',\n iconName: 'scissors',\n icon: [512, 512, [9984, 9986, 9988, \"cut\"], \"f0c4\", \"M256 192l-39.5-39.5c4.9-12.6 7.5-26.2 7.5-40.5C224 50.1 173.9 0 112 0S0 50.1 0 112s50.1 112 112 112c14.3 0 27.9-2.7 40.5-7.5L192 256l-39.5 39.5c-12.6-4.9-26.2-7.5-40.5-7.5C50.1 288 0 338.1 0 400s50.1 112 112 112s112-50.1 112-112c0-14.3-2.7-27.9-7.5-40.5L499.2 76.8c7.1-7.1 7.1-18.5 0-25.6c-28.3-28.3-74.1-28.3-102.4 0L256 192zm22.6 150.6L396.8 460.8c28.3 28.3 74.1 28.3 102.4 0c7.1-7.1 7.1-18.5 0-25.6L342.6 278.6l-64 64zM64 112a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm48 240a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nconst faCut = faScissors;\nconst faSunPlantWilt = {\n prefix: 'fas',\n iconName: 'sun-plant-wilt',\n icon: [640, 512, [], \"e57a\", \"M160 0c-6.3 0-12 3.7-14.6 9.5L120.6 64.9 63.9 43.2c-5.9-2.3-12.6-.8-17 3.6s-5.9 11.1-3.6 17l21.7 56.7L9.5 145.4C3.7 148 0 153.7 0 160s3.7 12 9.5 14.6l55.4 24.8L43.2 256.1c-2.3 5.9-.8 12.6 3.6 17s11.1 5.9 17 3.6l56.7-21.7 24.8 55.4c2.6 5.8 8.3 9.5 14.6 9.5s12-3.7 14.6-9.5l24.8-55.4 56.7 21.7c5.9 2.3 12.6 .8 17-3.6s5.9-11.1 3.6-17l-21.7-56.7 55.4-24.8c5.8-2.6 9.5-8.3 9.5-14.6s-3.7-12-9.5-14.6l-55.4-24.8 21.7-56.7c2.3-5.9 .8-12.6-3.6-17s-11.1-5.9-17-3.6L199.4 64.9 174.6 9.5C172 3.7 166.3 0 160 0zm0 96a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm32 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm312 16c0-17.7 14.3-32 32-32s32 14.3 32 32l0 53.4c-14.8 7.7-24 23.1-24 44.6c0 16.8 16 44 37.4 67.2c5.8 6.2 15.5 6.2 21.2 0C624 318 640 290.7 640 274c0-21.5-9.2-37-24-44.6l0-53.4c0-44.2-35.8-80-80-80s-80 35.8-80 80l0 22.7c-9.8-4.3-20.6-6.7-32-6.7c-44.2 0-80 35.8-80 80l0 21.4c-14.8 7.7-24 23.1-24 44.6c0 16.8 16 44 37.4 67.2c5.8 6.2 15.5 6.2 21.2 0C400 382 416 354.7 416 338c0-21.5-9.2-37-24-44.6l0-21.4c0-17.7 14.3-32 32-32s32 14.3 32 32l0 8 0 168L32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l576 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-104 0 0-168 0-8 0-96z\"]\n};\nconst faToiletsPortable = {\n prefix: 'fas',\n iconName: 'toilets-portable',\n icon: [576, 512, [], \"e584\", \"M32 0L224 0c17.7 0 32 14.3 32 32l0 32L0 64 0 32C0 14.3 14.3 0 32 0zM0 96l24 0 208 0 24 0 0 24 0 368c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-8L48 480l0 8c0 13.3-10.7 24-24 24s-24-10.7-24-24L0 120 0 96zM192 224c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16s16-7.2 16-16l0-64c0-8.8-7.2-16-16-16zM352 0L544 0c17.7 0 32 14.3 32 32l0 32L320 64l0-32c0-17.7 14.3-32 32-32zM320 96l24 0 208 0 24 0 0 24 0 368c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-8-160 0 0 8c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-368 0-24zM512 224c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16s16-7.2 16-16l0-64c0-8.8-7.2-16-16-16z\"]\n};\nconst faHockeyPuck = {\n prefix: 'fas',\n iconName: 'hockey-puck',\n icon: [512, 512, [], \"f453\", \"M256 256C114.6 256 0 213 0 160s114.6-96 256-96s256 43 256 96s-114.6 96-256 96zm192.3 1.8c24.7-9.3 46.9-21 63.7-35.6L512 352c0 53-114.6 96-256 96S0 405 0 352L0 222.3c16.8 14.6 39 26.3 63.7 35.6C114.5 276.9 182.5 288 256 288s141.5-11.1 192.3-30.2z\"]\n};\nconst faTable = {\n prefix: 'fas',\n iconName: 'table',\n icon: [512, 512, [], \"f0ce\", \"M64 256l0-96 160 0 0 96L64 256zm0 64l160 0 0 96L64 416l0-96zm224 96l0-96 160 0 0 96-160 0zM448 256l-160 0 0-96 160 0 0 96zM64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32z\"]\n};\nconst faMagnifyingGlassArrowRight = {\n prefix: 'fas',\n iconName: 'magnifying-glass-arrow-right',\n icon: [512, 512, [], \"e521\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM241 119c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l31 31L120 184c-13.3 0-24 10.7-24 24s10.7 24 24 24l118.1 0-31 31c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l72-72c9.4-9.4 9.4-24.6 0-33.9l-72-72z\"]\n};\nconst faTachographDigital = {\n prefix: 'fas',\n iconName: 'tachograph-digital',\n icon: [640, 512, [\"digital-tachograph\"], \"f566\", \"M64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l512 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 64zm32 64l224 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32L96 256c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32zM64 368c0-8.8 7.2-16 16-16l256 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L80 384c-8.8 0-16-7.2-16-16zm320 0c0-8.8 7.2-16 16-16l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16zM80 288a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm48 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm80-16a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm48 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm80-16a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nconst faDigitalTachograph = faTachographDigital;\nconst faUsersSlash = {\n prefix: 'fas',\n iconName: 'users-slash',\n icon: [640, 512, [], \"e073\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L440.6 320l178.1 0c11.8 0 21.3-9.6 21.3-21.3C640 239.8 592.2 192 533.3 192l-42.7 0c-15.9 0-31 3.5-44.6 9.7c1.3 7.2 1.9 14.7 1.9 22.3c0 30.2-10.5 58-28 79.9l-25.2-19.7C408.1 267.7 416 246.8 416 224c0-53-43-96-96-96c-31.1 0-58.7 14.8-76.3 37.7l-40.6-31.8c13-14.2 20.9-33.1 20.9-53.9c0-44.2-35.8-80-80-80C116.3 0 91.9 14.1 77.5 35.5L38.8 5.1zM106.7 192C47.8 192 0 239.8 0 298.7C0 310.4 9.6 320 21.3 320l213.3 0c.2 0 .4 0 .7 0c-20.6-18.2-35.2-42.8-40.8-70.8L121.8 192l-15.2 0zM261.3 352C187.7 352 128 411.7 128 485.3c0 14.7 11.9 26.7 26.7 26.7l330.7 0c10.5 0 19.5-6 23.9-14.8L324.9 352l-63.6 0zM512 160A80 80 0 1 0 512 0a80 80 0 1 0 0 160z\"]\n};\nconst faClover = {\n prefix: 'fas',\n iconName: 'clover',\n icon: [448, 512, [], \"e139\", \"M216.6 49.9C205.1 38.5 189.5 32 173.3 32C139.4 32 112 59.4 112 93.3l0 4.9c0 12 3.3 23.7 9.4 34l18.8 31.3c1.1 1.8 1.2 3.1 1 4.2c-.2 1.2-.8 2.5-2 3.6s-2.4 1.8-3.6 2c-1 .2-2.4 .1-4.2-1l-31.3-18.8c-10.3-6.2-22-9.4-34-9.4l-4.9 0C27.4 144 0 171.4 0 205.3c0 16.2 6.5 31.8 17.9 43.3l1.2 1.2c3.4 3.4 3.4 9 0 12.4l-1.2 1.2C6.5 274.9 0 290.5 0 306.7C0 340.6 27.4 368 61.3 368l4.9 0c12 0 23.7-3.3 34-9.4l31.3-18.8c1.8-1.1 3.1-1.2 4.2-1c1.2 .2 2.5 .8 3.6 2s1.8 2.4 2 3.6c.2 1 .1 2.4-1 4.2l-18.8 31.3c-6.2 10.3-9.4 22-9.4 34l0 4.9c0 33.8 27.4 61.3 61.3 61.3c16.2 0 31.8-6.5 43.3-17.9l1.2-1.2c3.4-3.4 9-3.4 12.4 0l1.2 1.2c11.5 11.5 27.1 17.9 43.3 17.9c33.8 0 61.3-27.4 61.3-61.3l0-4.9c0-12-3.3-23.7-9.4-34l-18.8-31.3c-1.1-1.8-1.2-3.1-1-4.2c.2-1.2 .8-2.5 2-3.6s2.4-1.8 3.6-2c1-.2 2.4-.1 4.2 1l31.3 18.8c10.3 6.2 22 9.4 34 9.4l4.9 0c33.8 0 61.3-27.4 61.3-61.3c0-16.2-6.5-31.8-17.9-43.3l-1.2-1.2c-3.4-3.4-3.4-9 0-12.4l1.2-1.2c11.5-11.5 17.9-27.1 17.9-43.3c0-33.8-27.4-61.3-61.3-61.3l-4.9 0c-12 0-23.7 3.3-34 9.4l-31.3 18.8c-1.8 1.1-3.1 1.2-4.2 1c-1.2-.2-2.5-.8-3.6-2s-1.8-2.4-2-3.6c-.2-1-.1-2.4 1-4.2l18.8-31.3c6.2-10.3 9.4-22 9.4-34l0-4.9C336 59.4 308.6 32 274.7 32c-16.2 0-31.8 6.5-43.3 17.9l-1.2 1.2c-3.4 3.4-9 3.4-12.4 0l-1.2-1.2z\"]\n};\nconst faReply = {\n prefix: 'fas',\n iconName: 'reply',\n icon: [512, 512, [61714, \"mail-reply\"], \"f3e5\", \"M205 34.8c11.5 5.1 19 16.6 19 29.2l0 64 112 0c97.2 0 176 78.8 176 176c0 113.3-81.5 163.9-100.2 174.1c-2.5 1.4-5.3 1.9-8.1 1.9c-10.9 0-19.7-8.9-19.7-19.7c0-7.5 4.3-14.4 9.8-19.5c9.4-8.8 22.2-26.4 22.2-56.7c0-53-43-96-96-96l-96 0 0 64c0 12.6-7.4 24.1-19 29.2s-25 3-34.4-5.4l-160-144C3.9 225.7 0 217.1 0 208s3.9-17.7 10.6-23.8l160-144c9.4-8.5 22.9-10.6 34.4-5.4z\"]\n};\nconst faMailReply = faReply;\nconst faStarAndCrescent = {\n prefix: 'fas',\n iconName: 'star-and-crescent',\n icon: [512, 512, [9770], \"f699\", \"M0 256C0 114.6 114.6 0 256 0c33 0 64.6 6.3 93.6 17.7c7.4 2.9 11.5 10.7 9.8 18.4s-8.8 13-16.7 12.4c-4.8-.3-9.7-.5-14.6-.5c-114.9 0-208 93.1-208 208s93.1 208 208 208c4.9 0 9.8-.2 14.6-.5c7.9-.5 15 4.7 16.7 12.4s-2.4 15.5-9.8 18.4C320.6 505.7 289 512 256 512C114.6 512 0 397.4 0 256zM375.4 137.4c3.5-7.1 13.7-7.1 17.2 0l31.5 63.8c1.4 2.8 4.1 4.8 7.2 5.3l70.4 10.2c7.9 1.1 11 10.8 5.3 16.4l-50.9 49.6c-2.3 2.2-3.3 5.4-2.8 8.5l12 70.1c1.3 7.8-6.9 13.8-13.9 10.1l-63-33.1c-2.8-1.5-6.1-1.5-8.9 0l-63 33.1c-7 3.7-15.3-2.3-13.9-10.1l12-70.1c.5-3.1-.5-6.3-2.8-8.5L261 233.1c-5.7-5.6-2.6-15.2 5.3-16.4l70.4-10.2c3.1-.5 5.8-2.4 7.2-5.3l31.5-63.8z\"]\n};\nconst faHouseFire = {\n prefix: 'fas',\n iconName: 'house-fire',\n icon: [640, 512, [], \"e50c\", \"M288 350.1l0 1.9-32 0c-17.7 0-32 14.3-32 32l0 64 0 24c0 22.1-17.9 40-40 40l-24 0-31.9 0c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2l-16 0c-22.1 0-40-17.9-40-40l0-112c0-.9 0-1.9 .1-2.8l0-69.7-32 0c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L447.3 128.1c-12.3-1-25 3-34.8 11.7c-35.4 31.6-65.6 67.7-87.3 102.8C304.3 276.5 288 314.9 288 350.1zM480 512c-88.4 0-160-71.6-160-160c0-76.7 62.5-144.7 107.2-179.4c5-3.9 10.9-5.8 16.8-5.8c7.9-.1 16 3.1 22 9.2l46 46 11.3-11.3c11.7-11.7 30.6-12.7 42.3-1C624.5 268 640 320.2 640 352c0 88.4-71.6 160-160 160zm64-111.8c0-36.5-37-73-54.8-88.4c-5.4-4.7-13.1-4.7-18.5 0C453 327.1 416 363.6 416 400.2c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nconst faSquareMinus = {\n prefix: 'fas',\n iconName: 'square-minus',\n icon: [448, 512, [61767, \"minus-square\"], \"f146\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm88 200l144 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-144 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nconst faMinusSquare = faSquareMinus;\nconst faHelicopter = {\n prefix: 'fas',\n iconName: 'helicopter',\n icon: [640, 512, [128641], \"f533\", \"M128 32c0-17.7 14.3-32 32-32L544 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L384 64l0 64 32 0c88.4 0 160 71.6 160 160l0 64c0 17.7-14.3 32-32 32l-160 0-64 0c-20.1 0-39.1-9.5-51.2-25.6l-71.4-95.2c-3.5-4.7-8.3-8.3-13.7-10.5L47.2 198.1c-9.5-3.8-16.7-12-19.2-22L5 83.9C2.4 73.8 10.1 64 20.5 64L48 64c10.1 0 19.6 4.7 25.6 12.8L112 128l208 0 0-64L160 64c-17.7 0-32-14.3-32-32zM384 320l128 0 0-32c0-53-43-96-96-96l-32 0 0 128zM630.6 425.4c12.5 12.5 12.5 32.8 0 45.3l-3.9 3.9c-24 24-56.6 37.5-90.5 37.5L256 512c-17.7 0-32-14.3-32-32s14.3-32 32-32l280.2 0c17 0 33.3-6.7 45.3-18.7l3.9-3.9c12.5-12.5 32.8-12.5 45.3 0z\"]\n};\nconst faCompass = {\n prefix: 'fas',\n iconName: 'compass',\n icon: [512, 512, [129517], \"f14e\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm50.7-186.9L162.4 380.6c-19.4 7.5-38.5-11.6-31-31l55.5-144.3c3.3-8.5 9.9-15.1 18.4-18.4l144.3-55.5c19.4-7.5 38.5 11.6 31 31L325.1 306.7c-3.2 8.5-9.9 15.1-18.4 18.4zM288 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nconst faSquareCaretDown = {\n prefix: 'fas',\n iconName: 'square-caret-down',\n icon: [448, 512, [\"caret-square-down\"], \"f150\", \"M384 480c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0zM224 352c-6.7 0-13-2.8-17.6-7.7l-104-112c-6.5-7-8.2-17.2-4.4-25.9s12.5-14.4 22-14.4l208 0c9.5 0 18.2 5.7 22 14.4s2.1 18.9-4.4 25.9l-104 112c-4.5 4.9-10.9 7.7-17.6 7.7z\"]\n};\nconst faCaretSquareDown = faSquareCaretDown;\nconst faFileCircleQuestion = {\n prefix: 'fas',\n iconName: 'file-circle-question',\n icon: [576, 512, [], \"e4ef\", \"M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zm48 96a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM368 321.6l0 6.4c0 8.8 7.2 16 16 16s16-7.2 16-16l0-6.4c0-5.3 4.3-9.6 9.6-9.6l40.5 0c7.7 0 13.9 6.2 13.9 13.9c0 5.2-2.9 9.9-7.4 12.3l-32 16.8c-5.3 2.8-8.6 8.2-8.6 14.2l0 14.8c0 8.8 7.2 16 16 16s16-7.2 16-16l0-5.1 23.5-12.3c15.1-7.9 24.5-23.6 24.5-40.6c0-25.4-20.6-45.9-45.9-45.9l-40.5 0c-23 0-41.6 18.6-41.6 41.6z\"]\n};\nconst faLaptopCode = {\n prefix: 'fas',\n iconName: 'laptop-code',\n icon: [640, 512, [], \"f5fc\", \"M64 96c0-35.3 28.7-64 64-64l384 0c35.3 0 64 28.7 64 64l0 256-64 0 0-256L128 96l0 256-64 0L64 96zM0 403.2C0 392.6 8.6 384 19.2 384l601.6 0c10.6 0 19.2 8.6 19.2 19.2c0 42.4-34.4 76.8-76.8 76.8L76.8 480C34.4 480 0 445.6 0 403.2zM281 209l-31 31 31 31c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-48-48c-9.4-9.4-9.4-24.6 0-33.9l48-48c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM393 175l48 48c9.4 9.4 9.4 24.6 0 33.9l-48 48c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l31-31-31-31c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z\"]\n};\nconst faSwatchbook = {\n prefix: 'fas',\n iconName: 'swatchbook',\n icon: [512, 512, [], \"f5c3\", \"M0 32C0 14.3 14.3 0 32 0L160 0c17.7 0 32 14.3 32 32l0 384c0 53-43 96-96 96s-96-43-96-96L0 32zM223.6 425.9c.3-3.3 .4-6.6 .4-9.9l0-262 75.4-75.4c12.5-12.5 32.8-12.5 45.3 0l90.5 90.5c12.5 12.5 12.5 32.8 0 45.3L223.6 425.9zM182.8 512l192-192L480 320c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-297.2 0zM128 64L64 64l0 64 64 0 0-64zM64 192l0 64 64 0 0-64-64 0zM96 440a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nconst faPrescriptionBottle = {\n prefix: 'fas',\n iconName: 'prescription-bottle',\n icon: [384, 512, [], \"f485\", \"M0 32C0 14.3 14.3 0 32 0L352 0c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64L0 32zm32 96l320 0 0 320c0 35.3-28.7 64-64 64L96 512c-35.3 0-64-28.7-64-64l0-32 112 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L32 384l0-64 112 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L32 288l0-64 112 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L32 192l0-64z\"]\n};\nconst faBars = {\n prefix: 'fas',\n iconName: 'bars',\n icon: [448, 512, [\"navicon\"], \"f0c9\", \"M0 96C0 78.3 14.3 64 32 64l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 128C14.3 128 0 113.7 0 96zM0 256c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 288c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32L32 448c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0c17.7 0 32 14.3 32 32z\"]\n};\nconst faNavicon = faBars;\nconst faPeopleGroup = {\n prefix: 'fas',\n iconName: 'people-group',\n icon: [640, 512, [], \"e533\", \"M72 88a56 56 0 1 1 112 0A56 56 0 1 1 72 88zM64 245.7C54 256.9 48 271.8 48 288s6 31.1 16 42.3l0-84.7zm144.4-49.3C178.7 222.7 160 261.2 160 304c0 34.3 12 65.8 32 90.5l0 21.5c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-26.8C26.2 371.2 0 332.7 0 288c0-61.9 50.1-112 112-112l32 0c24 0 46.2 7.5 64.4 20.3zM448 416l0-21.5c20-24.7 32-56.2 32-90.5c0-42.8-18.7-81.3-48.4-107.7C449.8 183.5 472 176 496 176l32 0c61.9 0 112 50.1 112 112c0 44.7-26.2 83.2-64 101.2l0 26.8c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32zm8-328a56 56 0 1 1 112 0A56 56 0 1 1 456 88zM576 245.7l0 84.7c10-11.3 16-26.1 16-42.3s-6-31.1-16-42.3zM320 32a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM240 304c0 16.2 6 31 16 42.3l0-84.7c-10 11.3-16 26.1-16 42.3zm144-42.3l0 84.7c10-11.3 16-26.1 16-42.3s-6-31.1-16-42.3zM448 304c0 44.7-26.2 83.2-64 101.2l0 42.8c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-42.8c-37.8-18-64-56.5-64-101.2c0-61.9 50.1-112 112-112l32 0c61.9 0 112 50.1 112 112z\"]\n};\nconst faHourglassEnd = {\n prefix: 'fas',\n iconName: 'hourglass-end',\n icon: [384, 512, [8987, \"hourglass-3\"], \"f253\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64l0 11c0 42.4 16.9 83.1 46.9 113.1L146.7 256 78.9 323.9C48.9 353.9 32 394.6 32 437l0 11c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 256 0 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-11c0-42.4-16.9-83.1-46.9-113.1L237.3 256l67.9-67.9c30-30 46.9-70.7 46.9-113.1l0-11c17.7 0 32-14.3 32-32s-14.3-32-32-32L320 0 64 0 32 0zM96 75l0-11 192 0 0 11c0 25.5-10.1 49.9-28.1 67.9L192 210.7l-67.9-67.9C106.1 124.9 96 100.4 96 75z\"]\n};\nconst faHourglass3 = faHourglassEnd;\nconst faHeartCrack = {\n prefix: 'fas',\n iconName: 'heart-crack',\n icon: [512, 512, [128148, \"heart-broken\"], \"f7a9\", \"M119.4 44.1c23.3-3.9 46.8-1.9 68.6 5.3l49.8 77.5-75.4 75.4c-1.5 1.5-2.4 3.6-2.3 5.8s1 4.2 2.6 5.7l112 104c2.9 2.7 7.4 2.9 10.5 .3s3.8-7 1.7-10.4l-60.4-98.1 90.7-75.6c2.6-2.1 3.5-5.7 2.4-8.8L296.8 61.8c28.5-16.7 62.4-23.2 95.7-17.6C461.5 55.6 512 115.2 512 185.1l0 5.8c0 41.5-17.2 81.2-47.6 109.5L283.7 469.1c-7.5 7-17.4 10.9-27.7 10.9s-20.2-3.9-27.7-10.9L47.6 300.4C17.2 272.1 0 232.4 0 190.9l0-5.8c0-69.9 50.5-129.5 119.4-141z\"]\n};\nconst faHeartBroken = faHeartCrack;\nconst faSquareUpRight = {\n prefix: 'fas',\n iconName: 'square-up-right',\n icon: [448, 512, [8599, \"external-link-square-alt\"], \"f360\", \"M384 32c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l320 0zM160 160c-6.5 0-12.3 3.9-14.8 9.9s-1.1 12.9 3.5 17.4l40 40-71 71C114 302 112 306.9 112 312s2 10 5.7 13.7l36.7 36.7c3.6 3.6 8.5 5.7 13.7 5.7s10-2 13.7-5.7l71-71 40 40c4.6 4.6 11.5 5.9 17.4 3.5s9.9-8.3 9.9-14.8l0-144c0-8.8-7.2-16-16-16l-144 0z\"]\n};\nconst faExternalLinkSquareAlt = faSquareUpRight;\nconst faFaceKissBeam = {\n prefix: 'fas',\n iconName: 'face-kiss-beam',\n icon: [512, 512, [128537, \"kiss-beam\"], \"f597\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm48.7-198.3c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C274.7 443.1 257.4 448 240 448c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9c0 0 0 0 0 0s0 0 0 0s0 0 0 0c0 0 0 0 0 0l.2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7c0 0 0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0c0 0 0 0 0 0l.2-.1 .3-.2 .6-.4c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1l-.4-.3-.5-.3-.2-.1c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4zm-87.1-84.9s0 0 0 0c0 0 0 0 0 0l-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8c0 0 0 0 0 0s0 0 0 0zm160 0c0 0 0 0 0 0l-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8c0 0 0 0 0 0s0 0 0 0s0 0 0 0z\"]\n};\nconst faKissBeam = faFaceKissBeam;\nconst faFilm = {\n prefix: 'fas',\n iconName: 'film',\n icon: [512, 512, [127902], \"f008\", \"M0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zM48 368l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm368-16c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM48 240l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm368-16c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM48 112l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16L64 96c-8.8 0-16 7.2-16 16zM416 96c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM160 128l0 64c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32L192 96c-17.7 0-32 14.3-32 32zm32 160c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-128 0z\"]\n};\nconst faRulerHorizontal = {\n prefix: 'fas',\n iconName: 'ruler-horizontal',\n icon: [640, 512, [], \"f547\", \"M0 336c0 26.5 21.5 48 48 48l544 0c26.5 0 48-21.5 48-48l0-160c0-26.5-21.5-48-48-48l-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0c-26.5 0-48 21.5-48 48L0 336z\"]\n};\nconst faPeopleRobbery = {\n prefix: 'fas',\n iconName: 'people-robbery',\n icon: [576, 512, [], \"e536\", \"M488.2 59.1C478.1 99.6 441.7 128 400 128s-78.1-28.4-88.2-68.9L303 24.2C298.8 7.1 281.4-3.3 264.2 1S236.7 22.6 241 39.8l8.7 34.9c11 44 40.2 79.6 78.3 99.6L328 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128 16 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-305.7c38.1-20 67.3-55.6 78.3-99.6L559 39.8c4.3-17.1-6.1-34.5-23.3-38.8S501.2 7.1 497 24.2l-8.7 34.9zM400 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM80 96A48 48 0 1 0 80 0a48 48 0 1 0 0 96zm-8 32c-35.3 0-64 28.7-64 64l0 96 0 .6L8 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128 16 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-227.3 13 20.5c5.9 9.2 16.1 14.9 27 14.9l48 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-30.4 0-37.4-58.9C157.6 142 132.1 128 104.7 128L72 128z\"]\n};\nconst faLightbulb = {\n prefix: 'fas',\n iconName: 'lightbulb',\n icon: [384, 512, [128161], \"f0eb\", \"M272 384c9.6-31.9 29.5-59.1 49.2-86.2c0 0 0 0 0 0c5.2-7.1 10.4-14.2 15.4-21.4c19.8-28.5 31.4-63 31.4-100.3C368 78.8 289.2 0 192 0S16 78.8 16 176c0 37.3 11.6 71.9 31.4 100.3c5 7.2 10.2 14.3 15.4 21.4c0 0 0 0 0 0c19.8 27.1 39.7 54.4 49.2 86.2l160 0zM192 512c44.2 0 80-35.8 80-80l0-16-160 0 0 16c0 44.2 35.8 80 80 80zM112 176c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-61.9 50.1-112 112-112c8.8 0 16 7.2 16 16s-7.2 16-16 16c-44.2 0-80 35.8-80 80z\"]\n};\nconst faCaretLeft = {\n prefix: 'fas',\n iconName: 'caret-left',\n icon: [256, 512, [], \"f0d9\", \"M9.4 278.6c-12.5-12.5-12.5-32.8 0-45.3l128-128c9.2-9.2 22.9-11.9 34.9-6.9s19.8 16.6 19.8 29.6l0 256c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-128-128z\"]\n};\nconst faCircleExclamation = {\n prefix: 'fas',\n iconName: 'circle-exclamation',\n icon: [512, 512, [\"exclamation-circle\"], \"f06a\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-384c13.3 0 24 10.7 24 24l0 112c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-112c0-13.3 10.7-24 24-24zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nconst faExclamationCircle = faCircleExclamation;\nconst faSchoolCircleXmark = {\n prefix: 'fas',\n iconName: 'school-circle-xmark',\n icon: [640, 512, [], \"e56d\", \"M337.8 5.4C327-1.8 313-1.8 302.2 5.4L166.3 96 48 96C21.5 96 0 117.5 0 144L0 464c0 26.5 21.5 48 48 48l272 0s0 0 0 0l-64 0 0-96c0-35.3 28.7-64 64-64l.3 0 .5 0c3.4-37.7 18.7-72.1 42.2-99.1C350.2 260 335.6 264 320 264c-48.6 0-88-39.4-88-88s39.4-88 88-88s88 39.4 88 88c0 18.3-5.6 35.3-15.1 49.4c29-21 64.6-33.4 103.1-33.4c59.5 0 112.1 29.6 144 74.8L640 144c0-26.5-21.5-48-48-48L473.7 96 337.8 5.4zM96 192l32 0c8.8 0 16 7.2 16 16l0 64c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-64c0-8.8 7.2-16 16-16zm0 128l32 0c8.8 0 16 7.2 16 16l0 64c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-64c0-8.8 7.2-16 16-16zM320 128c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-16 0 0-16c0-8.8-7.2-16-16-16zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm22.6-144l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L518.6 368z\"]\n};\nconst faArrowRightFromBracket = {\n prefix: 'fas',\n iconName: 'arrow-right-from-bracket',\n icon: [512, 512, [\"sign-out\"], \"f08b\", \"M502.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 224 192 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l210.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128zM160 96c17.7 0 32-14.3 32-32s-14.3-32-32-32L96 32C43 32 0 75 0 128L0 384c0 53 43 96 96 96l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0c-17.7 0-32-14.3-32-32l0-256c0-17.7 14.3-32 32-32l64 0z\"]\n};\nconst faSignOut = faArrowRightFromBracket;\nconst faCircleChevronDown = {\n prefix: 'fas',\n iconName: 'circle-chevron-down',\n icon: [512, 512, [\"chevron-circle-down\"], \"f13a\", \"M256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM135 241c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l87 87 87-87c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L273 345c-9.4 9.4-24.6 9.4-33.9 0L135 241z\"]\n};\nconst faChevronCircleDown = faCircleChevronDown;\nconst faUnlockKeyhole = {\n prefix: 'fas',\n iconName: 'unlock-keyhole',\n icon: [448, 512, [\"unlock-alt\"], \"f13e\", \"M224 64c-44.2 0-80 35.8-80 80l0 48 240 0c35.3 0 64 28.7 64 64l0 192c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 256c0-35.3 28.7-64 64-64l16 0 0-48C80 64.5 144.5 0 224 0c57.5 0 107 33.7 130.1 82.3c7.6 16 .8 35.1-15.2 42.6s-35.1 .8-42.6-15.2C283.4 82.6 255.9 64 224 64zm32 320c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0z\"]\n};\nconst faUnlockAlt = faUnlockKeyhole;\nconst faCloudShowersHeavy = {\n prefix: 'fas',\n iconName: 'cloud-showers-heavy',\n icon: [512, 512, [], \"f740\", \"M96 320c-53 0-96-43-96-96c0-42.5 27.6-78.6 65.9-91.2C64.7 126.1 64 119.1 64 112C64 50.1 114.1 0 176 0c43.1 0 80.5 24.3 99.2 60c14.7-17.1 36.5-28 60.8-28c44.2 0 80 35.8 80 80c0 5.5-.6 10.8-1.6 16c.5 0 1.1 0 1.6 0c53 0 96 43 96 96s-43 96-96 96L96 320zM81.5 353.9c12.2 5.2 17.8 19.3 12.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6S-3.3 490.7 1.9 478.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6zm120 0c12.2 5.2 17.8 19.3 12.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6zm244.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6s17.8 19.3 12.6 31.5zM313.5 353.9c12.2 5.2 17.8 19.3 12.6 31.5l-48 112c-5.2 12.2-19.3 17.8-31.5 12.6s-17.8-19.3-12.6-31.5l48-112c5.2-12.2 19.3-17.8 31.5-12.6z\"]\n};\nconst faHeadphonesSimple = {\n prefix: 'fas',\n iconName: 'headphones-simple',\n icon: [512, 512, [\"headphones-alt\"], \"f58f\", \"M256 80C141.1 80 48 173.1 48 288l0 104c0 13.3-10.7 24-24 24s-24-10.7-24-24L0 288C0 146.6 114.6 32 256 32s256 114.6 256 256l0 104c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-104c0-114.9-93.1-208-208-208zM80 352c0-35.3 28.7-64 64-64l16 0c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-16 0c-35.3 0-64-28.7-64-64l0-64zm288-64c35.3 0 64 28.7 64 64l0 64c0 35.3-28.7 64-64 64l-16 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32l16 0z\"]\n};\nconst faHeadphonesAlt = faHeadphonesSimple;\nconst faSitemap = {\n prefix: 'fas',\n iconName: 'sitemap',\n icon: [576, 512, [], \"f0e8\", \"M208 80c0-26.5 21.5-48 48-48l64 0c26.5 0 48 21.5 48 48l0 64c0 26.5-21.5 48-48 48l-8 0 0 40 152 0c30.9 0 56 25.1 56 56l0 32 8 0c26.5 0 48 21.5 48 48l0 64c0 26.5-21.5 48-48 48l-64 0c-26.5 0-48-21.5-48-48l0-64c0-26.5 21.5-48 48-48l8 0 0-32c0-4.4-3.6-8-8-8l-152 0 0 40 8 0c26.5 0 48 21.5 48 48l0 64c0 26.5-21.5 48-48 48l-64 0c-26.5 0-48-21.5-48-48l0-64c0-26.5 21.5-48 48-48l8 0 0-40-152 0c-4.4 0-8 3.6-8 8l0 32 8 0c26.5 0 48 21.5 48 48l0 64c0 26.5-21.5 48-48 48l-64 0c-26.5 0-48-21.5-48-48l0-64c0-26.5 21.5-48 48-48l8 0 0-32c0-30.9 25.1-56 56-56l152 0 0-40-8 0c-26.5 0-48-21.5-48-48l0-64z\"]\n};\nconst faCircleDollarToSlot = {\n prefix: 'fas',\n iconName: 'circle-dollar-to-slot',\n icon: [512, 512, [\"donate\"], \"f4b9\", \"M326.7 403.7c-22.1 8-45.9 12.3-70.7 12.3s-48.7-4.4-70.7-12.3l-.8-.3c-30-11-56.8-28.7-78.6-51.4C70 314.6 48 263.9 48 208C48 93.1 141.1 0 256 0S464 93.1 464 208c0 55.9-22 106.6-57.9 144c-1 1-2 2.1-3 3.1c-21.4 21.4-47.4 38.1-76.3 48.6zM256 91.9c-11.1 0-20.1 9-20.1 20.1l0 6c-5.6 1.2-10.9 2.9-15.9 5.1c-15 6.8-27.9 19.4-31.1 37.7c-1.8 10.2-.8 20 3.4 29c4.2 8.8 10.7 15 17.3 19.5c11.6 7.9 26.9 12.5 38.6 16l2.2 .7c13.9 4.2 23.4 7.4 29.3 11.7c2.5 1.8 3.4 3.2 3.7 4c.3 .8 .9 2.6 .2 6.7c-.6 3.5-2.5 6.4-8 8.8c-6.1 2.6-16 3.9-28.8 1.9c-6-1-16.7-4.6-26.2-7.9c0 0 0 0 0 0s0 0 0 0s0 0 0 0c-2.2-.7-4.3-1.5-6.4-2.1c-10.5-3.5-21.8 2.2-25.3 12.7s2.2 21.8 12.7 25.3c1.2 .4 2.7 .9 4.4 1.5c7.9 2.7 20.3 6.9 29.8 9.1l0 6.4c0 11.1 9 20.1 20.1 20.1s20.1-9 20.1-20.1l0-5.5c5.3-1 10.5-2.5 15.4-4.6c15.7-6.7 28.4-19.7 31.6-38.7c1.8-10.4 1-20.3-3-29.4c-3.9-9-10.2-15.6-16.9-20.5c-12.2-8.8-28.3-13.7-40.4-17.4l-.8-.2c-14.2-4.3-23.8-7.3-29.9-11.4c-2.6-1.8-3.4-3-3.6-3.5c-.2-.3-.7-1.6-.1-5c.3-1.9 1.9-5.2 8.2-8.1c6.4-2.9 16.4-4.5 28.6-2.6c4.3 .7 17.9 3.3 21.7 4.3c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-4.4-1.2-14.4-3.2-21-4.4l0-6.3c0-11.1-9-20.1-20.1-20.1zM48 352l16 0c19.5 25.9 44 47.7 72.2 64L64 416l0 32 192 0 192 0 0-32-72.2 0c28.2-16.3 52.8-38.1 72.2-64l16 0c26.5 0 48 21.5 48 48l0 64c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48l0-64c0-26.5 21.5-48 48-48z\"]\n};\nconst faDonate = faCircleDollarToSlot;\nconst faMemory = {\n prefix: 'fas',\n iconName: 'memory',\n icon: [576, 512, [], \"f538\", \"M64 64C28.7 64 0 92.7 0 128l0 7.4c0 6.8 4.4 12.6 10.1 16.3C23.3 160.3 32 175.1 32 192s-8.7 31.7-21.9 40.3C4.4 236 0 241.8 0 248.6L0 320l576 0 0-71.4c0-6.8-4.4-12.6-10.1-16.3C552.7 223.7 544 208.9 544 192s8.7-31.7 21.9-40.3c5.7-3.7 10.1-9.5 10.1-16.3l0-7.4c0-35.3-28.7-64-64-64L64 64zM576 352L0 352l0 64c0 17.7 14.3 32 32 32l48 0 0-32c0-8.8 7.2-16 16-16s16 7.2 16 16l0 32 96 0 0-32c0-8.8 7.2-16 16-16s16 7.2 16 16l0 32 96 0 0-32c0-8.8 7.2-16 16-16s16 7.2 16 16l0 32 96 0 0-32c0-8.8 7.2-16 16-16s16 7.2 16 16l0 32 48 0c17.7 0 32-14.3 32-32l0-64zM192 160l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32s32 14.3 32 32zm128 0l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32s32 14.3 32 32zm128 0l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nconst faRoadSpikes = {\n prefix: 'fas',\n iconName: 'road-spikes',\n icon: [640, 512, [], \"e568\", \"M64 116.8c0-15.8 20.5-22 29.3-8.9L192 256l0-139.2c0-15.8 20.5-22 29.3-8.9L320 256l0-139.2c0-15.8 20.5-22 29.3-8.9L448 256l0-139.2c0-15.8 20.5-22 29.3-8.9L606.8 302.2c14.2 21.3-1.1 49.7-26.6 49.7L512 352l-64 0-64 0-64 0-64 0-64 0L64 352l0-235.2zM32 384l576 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 448c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faFireBurner = {\n prefix: 'fas',\n iconName: 'fire-burner',\n icon: [640, 512, [], \"e4f1\", \"M345.7 48.3L358 34.5c5.4-6.1 13.3-8.8 20.9-8.9c7.2 0 14.3 2.6 19.9 7.8c19.7 18.3 39.8 43.2 55 70.6C469 131.2 480 162.2 480 192.2C480 280.8 408.7 352 320 352c-89.6 0-160-71.3-160-159.8c0-37.3 16-73.4 36.8-104.5c20.9-31.3 47.5-59 70.9-80.2C273.4 2.3 280.7-.2 288 0c14.1 .3 23.8 11.4 32.7 21.6c0 0 0 0 0 0c2 2.3 4 4.6 6 6.7l19 19.9zM384 240.2c0-36.5-37-73-54.8-88.4c-5.4-4.7-13.1-4.7-18.5 0C293 167.1 256 203.6 256 240.2c0 35.3 28.7 64 64 64s64-28.7 64-64zM32 288c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 64 448 0 0-64c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 96c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l0-96zM320 480a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm160-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM192 480a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faFlag = {\n prefix: 'fas',\n iconName: 'flag',\n icon: [448, 512, [127988, 61725], \"f024\", \"M64 32C64 14.3 49.7 0 32 0S0 14.3 0 32L0 64 0 368 0 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128 64.3-16.1c41.1-10.3 84.6-5.5 122.5 13.4c44.2 22.1 95.5 24.8 141.7 7.4l34.7-13c12.5-4.7 20.8-16.6 20.8-30l0-247.7c0-23-24.2-38-44.8-27.7l-9.6 4.8c-46.3 23.2-100.8 23.2-147.1 0c-35.1-17.6-75.4-22-113.5-12.5L64 48l0-16z\"]\n};\nconst faHanukiah = {\n prefix: 'fas',\n iconName: 'hanukiah',\n icon: [640, 512, [128334], \"f6e6\", \"M314.2 3.3C309.1 12.1 296 36.6 296 56c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7C324.6 1.2 322.4 0 320 0s-4.6 1.2-5.8 3.3zm-288 48C21.1 60.1 8 84.6 8 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7C36.6 49.2 34.4 48 32 48s-4.6 1.2-5.8 3.3zM88 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C101.1 60.1 88 84.6 88 104zm82.2-52.7C165.1 60.1 152 84.6 152 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3zM216 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C229.1 60.1 216 84.6 216 104zM394.2 51.3C389.1 60.1 376 84.6 376 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3zM440 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C453.1 60.1 440 84.6 440 104zm82.2-52.7C517.1 60.1 504 84.6 504 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3zM584 104c0 13.3 10.7 24 24 24s24-10.7 24-24c0-19.4-13.1-43.9-18.2-52.7c-1.2-2.1-3.4-3.3-5.8-3.3s-4.6 1.2-5.8 3.3C597.1 60.1 584 84.6 584 104zM112 160c-8.8 0-16 7.2-16 16l0 96 0 16 32 0 0-16 0-96c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16l0 96 0 16 32 0 0-16 0-96c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16l0 96 0 16 32 0 0-16 0-96c0-8.8-7.2-16-16-16zm160 0c-8.8 0-16 7.2-16 16l0 96 0 16 32 0 0-16 0-96c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16l0 96 0 16 32 0 0-16 0-96c0-8.8-7.2-16-16-16zm64 0c-8.8 0-16 7.2-16 16l0 96 0 16 32 0 0-16 0-96c0-8.8-7.2-16-16-16zM352 144c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 176L96 320c-17.7 0-32-14.3-32-32l0-96c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 96c0 53 43 96 96 96l192 0 0 64-128 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l160 0 160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-128 0 0-64 192 0c53 0 96-43 96-96l0-96c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 96c0 17.7-14.3 32-32 32l-192 0 0-176z\"]\n};\nconst faFeather = {\n prefix: 'fas',\n iconName: 'feather',\n icon: [512, 512, [129718], \"f52d\", \"M278.5 215.6L23 471c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l57-57 68 0c49.7 0 97.9-14.4 139-41c11.1-7.2 5.5-23-7.8-23c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l81-24.3c2.5-.8 4.8-2.1 6.7-4l22.4-22.4c10.1-10.1 2.9-27.3-11.3-27.3l-32.2 0c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l112-33.6c4-1.2 7.4-3.9 9.3-7.7C506.4 207.6 512 184.1 512 160c0-41-16.3-80.3-45.3-109.3l-5.5-5.5C432.3 16.3 393 0 352 0s-80.3 16.3-109.3 45.3L139 149C91 197 64 262.1 64 330l0 55.3L253.6 195.8c6.2-6.2 16.4-6.2 22.6 0c5.4 5.4 6.1 13.6 2.2 19.8z\"]\n};\nconst faVolumeLow = {\n prefix: 'fas',\n iconName: 'volume-low',\n icon: [448, 512, [128264, \"volume-down\"], \"f027\", \"M301.1 34.8C312.6 40 320 51.4 320 64l0 384c0 12.6-7.4 24-18.9 29.2s-25 3.1-34.4-5.3L131.8 352 64 352c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64l67.8 0L266.7 40.1c9.4-8.4 22.9-10.4 34.4-5.3zM412.6 181.5C434.1 199.1 448 225.9 448 256s-13.9 56.9-35.4 74.5c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C393.1 284.4 400 271 400 256s-6.9-28.4-17.7-37.3c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5z\"]\n};\nconst faVolumeDown = faVolumeLow;\nconst faCommentSlash = {\n prefix: 'fas',\n iconName: 'comment-slash',\n icon: [640, 512, [], \"f4b3\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L512.9 376.7C552.2 340.2 576 292.3 576 240C576 125.1 461.4 32 320 32c-67.7 0-129.3 21.4-175.1 56.3L38.8 5.1zm385.2 425L82.9 161.3C70.7 185.6 64 212.2 64 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0s0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9c37 0 72.3-6.4 104.1-17.9z\"]\n};\nconst faCloudSunRain = {\n prefix: 'fas',\n iconName: 'cloud-sun-rain',\n icon: [640, 512, [127782], \"f743\", \"M294.2 1.2c5.1 2.1 8.7 6.7 9.6 12.1l10.4 62.4c-23.3 10.8-42.9 28.4-56 50.3c-14.6-9-31.8-14.1-50.2-14.1c-53 0-96 43-96 96c0 35.5 19.3 66.6 48 83.2c.8 31.8 13.2 60.7 33.1 82.7l-56 39.2c-4.5 3.2-10.3 3.8-15.4 1.6s-8.7-6.7-9.6-12.1L98.1 317.9 13.4 303.8c-5.4-.9-10-4.5-12.1-9.6s-1.5-10.9 1.6-15.4L52.5 208 2.9 137.2c-3.2-4.5-3.8-10.3-1.6-15.4s6.7-8.7 12.1-9.6L98.1 98.1l14.1-84.7c.9-5.4 4.5-10 9.6-12.1s10.9-1.5 15.4 1.6L208 52.5 278.8 2.9c4.5-3.2 10.3-3.8 15.4-1.6zM208 144c13.8 0 26.7 4.4 37.1 11.9c-1.2 4.1-2.2 8.3-3 12.6c-37.9 14.6-67.2 46.6-77.8 86.4C151.8 243.1 144 226.5 144 208c0-35.3 28.7-64 64-64zm69.4 276c11 7.4 14 22.3 6.7 33.3l-32 48c-7.4 11-22.3 14-33.3 6.7s-14-22.3-6.7-33.3l32-48c7.4-11 22.3-14 33.3-6.7zm96 0c11 7.4 14 22.3 6.7 33.3l-32 48c-7.4 11-22.3 14-33.3 6.7s-14-22.3-6.7-33.3l32-48c7.4-11 22.3-14 33.3-6.7zm96 0c11 7.4 14 22.3 6.7 33.3l-32 48c-7.4 11-22.3 14-33.3 6.7s-14-22.3-6.7-33.3l32-48c7.4-11 22.3-14 33.3-6.7zm96 0c11 7.4 14 22.3 6.7 33.3l-32 48c-7.4 11-22.3 14-33.3 6.7s-14-22.3-6.7-33.3l32-48c7.4-11 22.3-14 33.3-6.7zm74.5-116.1c0 44.2-35.8 80-80 80l-271.9 0c-53 0-96-43-96-96c0-47.6 34.6-87 80-94.6l0-1.3c0-53 43-96 96-96c34.9 0 65.4 18.6 82.2 46.4c13-9.1 28.8-14.4 45.8-14.4c44.2 0 80 35.8 80 80c0 5.9-.6 11.7-1.9 17.2c37.4 6.7 65.8 39.4 65.8 78.7z\"]\n};\nconst faCompress = {\n prefix: 'fas',\n iconName: 'compress',\n icon: [448, 512, [], \"f066\", \"M160 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c17.7 0 32-14.3 32-32l0-96zM32 320c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0 0 64c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96c0-17.7-14.3-32-32-32l-96 0zM352 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 96c0 17.7 14.3 32 32 32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-64zM320 320c-17.7 0-32 14.3-32 32l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 0z\"]\n};\nconst faWheatAwn = {\n prefix: 'fas',\n iconName: 'wheat-awn',\n icon: [512, 512, [\"wheat-alt\"], \"e2cd\", \"M505 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L383 95c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l88-88zM305.5 27.3c-6.2-6.2-16.4-6.2-22.6 0L271.5 38.6c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8L101.8 231c-6.2-6.2-16.4-6.2-22.6 0L67.9 242.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4L9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l68.9-68.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-21.8-21.8-49.6-34.1-78.1-36.9l31.9-31.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-21.8-21.8-49.6-34.1-78.1-36.9l31.9-31.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0L486.5 231c6.2-6.2 6.2-16.4 0-22.6L475.2 197c-5.2-5.2-10.6-9.8-16.4-13.9L505 137c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-59.4 59.4c-20.6-4.4-42-3.7-62.3 2.1c6.1-21.3 6.6-43.8 1.4-65.3L409 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L329.1 52.9c-3.7-5-7.8-9.8-12.4-14.3L305.5 27.3z\"]\n};\nconst faWheatAlt = faWheatAwn;\nconst faAnkh = {\n prefix: 'fas',\n iconName: 'ankh',\n icon: [320, 512, [9765], \"f644\", \"M96 128c0-35.3 28.7-64 64-64s64 28.7 64 64c0 41.6-20.7 76.6-46.6 104.1c-5.9 6.2-11.8 11.8-17.4 16.7c-5.6-4.9-11.5-10.5-17.4-16.7C116.7 204.6 96 169.6 96 128zM160 0C89.3 0 32 57.3 32 128c0 52.4 21.5 95.5 46.8 128L32 256c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0 0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160 96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-46.8 0c25.4-32.5 46.8-75.6 46.8-128C288 57.3 230.7 0 160 0z\"]\n};\nconst faHandsHoldingChild = {\n prefix: 'fas',\n iconName: 'hands-holding-child',\n icon: [640, 512, [], \"e4fa\", \"M320 0a40 40 0 1 1 0 80 40 40 0 1 1 0-80zm44.7 164.3L375.8 253c1.6 13.2-7.7 25.1-20.8 26.8s-25.1-7.7-26.8-20.8l-4.4-35-7.6 0-4.4 35c-1.6 13.2-13.6 22.5-26.8 20.8s-22.5-13.6-20.8-26.8l11.1-88.8L255.5 181c-10.1 8.6-25.3 7.3-33.8-2.8s-7.3-25.3 2.8-33.8l27.9-23.6C271.3 104.8 295.3 96 320 96s48.7 8.8 67.6 24.7l27.9 23.6c10.1 8.6 11.4 23.7 2.8 33.8s-23.7 11.4-33.8 2.8l-19.8-16.7zM40 64c22.1 0 40 17.9 40 40l0 40 0 80 0 40.2c0 17 6.7 33.3 18.7 45.3l51.1 51.1c8.3 8.3 21.3 9.6 31 3.1c12.9-8.6 14.7-26.9 3.7-37.8l-15.2-15.2-32-32c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l32 32 15.2 15.2c0 0 0 0 0 0l25.3 25.3c21 21 32.8 49.5 32.8 79.2l0 78.9c0 26.5-21.5 48-48 48l-66.7 0c-17 0-33.3-6.7-45.3-18.7L28.1 393.4C10.1 375.4 0 351 0 325.5L0 224l0-64 0-56C0 81.9 17.9 64 40 64zm560 0c22.1 0 40 17.9 40 40l0 56 0 64 0 101.5c0 25.5-10.1 49.9-28.1 67.9L512 493.3c-12 12-28.3 18.7-45.3 18.7L400 512c-26.5 0-48-21.5-48-48l0-78.9c0-29.7 11.8-58.2 32.8-79.2l25.3-25.3c0 0 0 0 0 0l15.2-15.2 32-32c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-32 32-15.2 15.2c-11 11-9.2 29.2 3.7 37.8c9.7 6.5 22.7 5.2 31-3.1l51.1-51.1c12-12 18.7-28.3 18.7-45.3l0-40.2 0-80 0-40c0-22.1 17.9-40 40-40z\"]\n};\nconst faAsterisk = {\n prefix: 'fas',\n iconName: 'asterisk',\n icon: [384, 512, [10033, 61545], \"2a\", \"M192 32c17.7 0 32 14.3 32 32l0 135.5 111.5-66.9c15.2-9.1 34.8-4.2 43.9 11s4.2 34.8-11 43.9L254.2 256l114.3 68.6c15.2 9.1 20.1 28.7 11 43.9s-28.7 20.1-43.9 11L224 312.5 224 448c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-135.5L48.5 379.4c-15.2 9.1-34.8 4.2-43.9-11s-4.2-34.8 11-43.9L129.8 256 15.5 187.4c-15.2-9.1-20.1-28.7-11-43.9s28.7-20.1 43.9-11L160 199.5 160 64c0-17.7 14.3-32 32-32z\"]\n};\nconst faSquareCheck = {\n prefix: 'fas',\n iconName: 'square-check',\n icon: [448, 512, [9745, 9989, 61510, \"check-square\"], \"f14a\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM337 209L209 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L303 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nconst faCheckSquare = faSquareCheck;\nconst faPesetaSign = {\n prefix: 'fas',\n iconName: 'peseta-sign',\n icon: [384, 512, [], \"e221\", \"M64 32C46.3 32 32 46.3 32 64l0 96c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 96 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96 96 0c77.4 0 142-55 156.8-128l3.2 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-3.2 0C334 87 269.4 32 192 32L64 32zM282.5 160L96 160l0-64 96 0c41.8 0 77.4 26.7 90.5 64zM96 224l186.5 0c-13.2 37.3-48.7 64-90.5 64l-96 0 0-64z\"]\n};\nconst faHeading = {\n prefix: 'fas',\n iconName: 'heading',\n icon: [448, 512, [\"header\"], \"f1dc\", \"M0 64C0 46.3 14.3 32 32 32l48 0 48 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-16 0 0 112 224 0 0-112-16 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l48 0 48 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-16 0 0 144 0 176 16 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-48 0-48 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l16 0 0-144-224 0 0 144 16 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-48 0-48 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l16 0 0-176L48 96 32 96C14.3 96 0 81.7 0 64z\"]\n};\nconst faHeader = faHeading;\nconst faGhost = {\n prefix: 'fas',\n iconName: 'ghost',\n icon: [384, 512, [128123], \"f6e2\", \"M40.1 467.1l-11.2 9c-3.2 2.5-7.1 3.9-11.1 3.9C8 480 0 472 0 462.2L0 192C0 86 86 0 192 0S384 86 384 192l0 270.2c0 9.8-8 17.8-17.8 17.8c-4 0-7.9-1.4-11.1-3.9l-11.2-9c-13.4-10.7-32.8-9-44.1 3.9L269.3 506c-3.3 3.8-8.2 6-13.3 6s-9.9-2.2-13.3-6l-26.6-30.5c-12.7-14.6-35.4-14.6-48.2 0L141.3 506c-3.3 3.8-8.2 6-13.3 6s-9.9-2.2-13.3-6L84.2 471c-11.3-12.9-30.7-14.6-44.1-3.9zM160 192a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm96 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faList = {\n prefix: 'fas',\n iconName: 'list',\n icon: [512, 512, [\"list-squares\"], \"f03a\", \"M40 48C26.7 48 16 58.7 16 72l0 48c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24l0-48c0-13.3-10.7-24-24-24L40 48zM192 64c-17.7 0-32 14.3-32 32s14.3 32 32 32l288 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L192 64zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l288 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-288 0zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l288 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-288 0zM16 232l0 48c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24l0-48c0-13.3-10.7-24-24-24l-48 0c-13.3 0-24 10.7-24 24zM40 368c-13.3 0-24 10.7-24 24l0 48c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24l0-48c0-13.3-10.7-24-24-24l-48 0z\"]\n};\nconst faListSquares = faList;\nconst faSquarePhoneFlip = {\n prefix: 'fas',\n iconName: 'square-phone-flip',\n icon: [448, 512, [\"phone-square-alt\"], \"f87b\", \"M384 32c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l320 0zm-90.7 96.7c-9.7-2.6-19.9 2.3-23.7 11.6l-20 48c-3.4 8.2-1 17.6 5.8 23.2L280 231.7c-16.6 35.2-45.1 63.7-80.3 80.3l-20.2-24.7c-5.6-6.8-15-9.2-23.2-5.8l-48 20c-9.3 3.9-14.2 14-11.6 23.7l12 44C111.1 378 119 384 128 384c123.7 0 224-100.3 224-224c0-9-6-16.9-14.7-19.3l-44-12z\"]\n};\nconst faPhoneSquareAlt = faSquarePhoneFlip;\nconst faCartPlus = {\n prefix: 'fas',\n iconName: 'cart-plus',\n icon: [576, 512, [], \"f217\", \"M0 24C0 10.7 10.7 0 24 0L69.5 0c22 0 41.5 12.8 50.6 32l411 0c26.3 0 45.5 25 38.6 50.4l-41 152.3c-8.5 31.4-37 53.3-69.5 53.3l-288.5 0 5.4 28.5c2.2 11.3 12.1 19.5 23.6 19.5L488 336c13.3 0 24 10.7 24 24s-10.7 24-24 24l-288.3 0c-34.6 0-64.3-24.6-70.7-58.5L77.4 54.5c-.7-3.8-4-6.5-7.9-6.5L24 48C10.7 48 0 37.3 0 24zM128 464a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm336-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM252 160c0 11 9 20 20 20l44 0 0 44c0 11 9 20 20 20s20-9 20-20l0-44 44 0c11 0 20-9 20-20s-9-20-20-20l-44 0 0-44c0-11-9-20-20-20s-20 9-20 20l0 44-44 0c-11 0-20 9-20 20z\"]\n};\nconst faGamepad = {\n prefix: 'fas',\n iconName: 'gamepad',\n icon: [640, 512, [], \"f11b\", \"M192 64C86 64 0 150 0 256S86 448 192 448l256 0c106 0 192-86 192-192s-86-192-192-192L192 64zM496 168a40 40 0 1 1 0 80 40 40 0 1 1 0-80zM392 304a40 40 0 1 1 80 0 40 40 0 1 1 -80 0zM168 200c0-13.3 10.7-24 24-24s24 10.7 24 24l0 32 32 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-32 0 0 32c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-32-32 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l32 0 0-32z\"]\n};\nconst faCircleDot = {\n prefix: 'fas',\n iconName: 'circle-dot',\n icon: [512, 512, [128280, \"dot-circle\"], \"f192\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-352a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nconst faDotCircle = faCircleDot;\nconst faFaceDizzy = {\n prefix: 'fas',\n iconName: 'face-dizzy',\n icon: [512, 512, [\"dizzy\"], \"f567\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-224a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM100.7 132.7c6.2-6.2 16.4-6.2 22.6 0L160 169.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L182.6 192l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L160 214.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L137.4 192l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6zm192 0c6.2-6.2 16.4-6.2 22.6 0L352 169.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6L374.6 192l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L352 214.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L329.4 192l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6z\"]\n};\nconst faDizzy = faFaceDizzy;\nconst faEgg = {\n prefix: 'fas',\n iconName: 'egg',\n icon: [384, 512, [129370], \"f7fb\", \"M192 496C86 496 0 394 0 288C0 176 64 16 192 16s192 160 192 272c0 106-86 208-192 208zM154.8 134c6.5-6 7-16.1 1-22.6s-16.1-7-22.6-1c-23.9 21.8-41.1 52.7-52.3 84.2C69.7 226.1 64 259.7 64 288c0 8.8 7.2 16 16 16s16-7.2 16-16c0-24.5 5-54.4 15.1-82.8c10.1-28.5 25-54.1 43.7-71.2z\"]\n};\nconst faHouseMedicalCircleXmark = {\n prefix: 'fas',\n iconName: 'house-medical-circle-xmark',\n icon: [640, 512, [], \"e513\", \"M320 368c0 59.5 29.5 112.1 74.8 144l-266.7 0c-35.3 0-64-28.7-64-64l0-160.4-32 0c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L522.1 193.9c-8.5-1.3-17.3-1.9-26.1-1.9c-54.7 0-103.5 24.9-135.8 64L320 256l0-48c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16l0 48-48 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l48 0 0 48c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16zM496 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm22.6 144l36.7-36.7c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L496 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L473.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L496 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L518.6 368z\"]\n};\nconst faCampground = {\n prefix: 'fas',\n iconName: 'campground',\n icon: [576, 512, [9978], \"f6bb\", \"M377 52c11-13.8 8.8-33.9-5-45s-33.9-8.8-45 5L288 60.8 249 12c-11-13.8-31.2-16-45-5s-16 31.2-5 45l48 60L12.3 405.4C4.3 415.4 0 427.7 0 440.4L0 464c0 26.5 21.5 48 48 48l240 0 240 0c26.5 0 48-21.5 48-48l0-23.6c0-12.7-4.3-25.1-12.3-35L329 112l48-60zM288 448l-119.5 0L288 291.7 407.5 448 288 448z\"]\n};\nconst faFolderPlus = {\n prefix: 'fas',\n iconName: 'folder-plus',\n icon: [512, 512, [], \"f65e\", \"M512 416c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l128 0c20.1 0 39.1 9.5 51.2 25.6l19.2 25.6c6 8.1 15.5 12.8 25.6 12.8l160 0c35.3 0 64 28.7 64 64l0 256zM232 376c0 13.3 10.7 24 24 24s24-10.7 24-24l0-64 64 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-64 0 0-64c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 64-64 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l64 0 0 64z\"]\n};\nconst faFutbol = {\n prefix: 'fas',\n iconName: 'futbol',\n icon: [512, 512, [9917, \"futbol-ball\", \"soccer-ball\"], \"f1e3\", \"M417.3 360.1l-71.6-4.8c-5.2-.3-10.3 1.1-14.5 4.2s-7.2 7.4-8.4 12.5l-17.6 69.6C289.5 445.8 273 448 256 448s-33.5-2.2-49.2-6.4L189.2 372c-1.3-5-4.3-9.4-8.4-12.5s-9.3-4.5-14.5-4.2l-71.6 4.8c-17.6-27.2-28.5-59.2-30.4-93.6L125 228.3c4.4-2.8 7.6-7 9.2-11.9s1.4-10.2-.5-15l-26.7-66.6C128 109.2 155.3 89 186.7 76.9l55.2 46c4 3.3 9 5.1 14.1 5.1s10.2-1.8 14.1-5.1l55.2-46c31.3 12.1 58.7 32.3 79.6 57.9l-26.7 66.6c-1.9 4.8-2.1 10.1-.5 15s4.9 9.1 9.2 11.9l60.7 38.2c-1.9 34.4-12.8 66.4-30.4 93.6zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm14.1-325.7c-8.4-6.1-19.8-6.1-28.2 0L194 221c-8.4 6.1-11.9 16.9-8.7 26.8l18.3 56.3c3.2 9.9 12.4 16.6 22.8 16.6l59.2 0c10.4 0 19.6-6.7 22.8-16.6l18.3-56.3c3.2-9.9-.3-20.7-8.7-26.8l-47.9-34.8z\"]\n};\nconst faFutbolBall = faFutbol;\nconst faSoccerBall = faFutbol;\nconst faPaintbrush = {\n prefix: 'fas',\n iconName: 'paintbrush',\n icon: [576, 512, [128396, \"paint-brush\"], \"f1fc\", \"M339.3 367.1c27.3-3.9 51.9-19.4 67.2-42.9L568.2 74.1c12.6-19.5 9.4-45.3-7.6-61.2S517.7-4.4 499.1 9.6L262.4 187.2c-24 18-38.2 46.1-38.4 76.1L339.3 367.1zm-19.6 25.4l-116-104.4C143.9 290.3 96 339.6 96 400c0 3.9 .2 7.8 .6 11.6C98.4 429.1 86.4 448 68.8 448L64 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l144 0c61.9 0 112-50.1 112-112c0-2.5-.1-5-.2-7.5z\"]\n};\nconst faPaintBrush = faPaintbrush;\nconst faLock = {\n prefix: 'fas',\n iconName: 'lock',\n icon: [448, 512, [128274], \"f023\", \"M144 144l0 48 160 0 0-48c0-44.2-35.8-80-80-80s-80 35.8-80 80zM80 192l0-48C80 64.5 144.5 0 224 0s144 64.5 144 144l0 48 16 0c35.3 0 64 28.7 64 64l0 192c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 256c0-35.3 28.7-64 64-64l16 0z\"]\n};\nconst faGasPump = {\n prefix: 'fas',\n iconName: 'gas-pump',\n icon: [512, 512, [9981], \"f52f\", \"M32 64C32 28.7 60.7 0 96 0L256 0c35.3 0 64 28.7 64 64l0 192 8 0c48.6 0 88 39.4 88 88l0 32c0 13.3 10.7 24 24 24s24-10.7 24-24l0-154c-27.6-7.1-48-32.2-48-62l0-64L384 64c-8.8-8.8-8.8-23.2 0-32s23.2-8.8 32 0l77.3 77.3c12 12 18.7 28.3 18.7 45.3l0 13.5 0 24 0 32 0 152c0 39.8-32.2 72-72 72s-72-32.2-72-72l0-32c0-22.1-17.9-40-40-40l-8 0 0 144c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32L32 64zM96 80l0 96c0 8.8 7.2 16 16 16l128 0c8.8 0 16-7.2 16-16l0-96c0-8.8-7.2-16-16-16L112 64c-8.8 0-16 7.2-16 16z\"]\n};\nconst faHotTubPerson = {\n prefix: 'fas',\n iconName: 'hot-tub-person',\n icon: [512, 512, [\"hot-tub\"], \"f593\", \"M272 24c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 5.2c0 34 14.4 66.4 39.7 89.2l16.4 14.8c15.2 13.7 23.8 33.1 23.8 53.5l0 13.2c0 13.3 10.7 24 24 24s24-10.7 24-24l0-13.2c0-34-14.4-66.4-39.7-89.2L295.8 82.8C280.7 69.1 272 49.7 272 29.2l0-5.2zM0 320l0 16L0 448c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-128c0-35.3-28.7-64-64-64l-170.7 0c-13.8 0-27.3-4.5-38.4-12.8l-85.3-64C137 166.7 116.8 160 96 160c-53 0-96 43-96 96l0 64zm128 16l0 96c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-96c0-8.8 7.2-16 16-16s16 7.2 16 16zm80-16c8.8 0 16 7.2 16 16l0 96c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-96c0-8.8 7.2-16 16-16zm112 16l0 96c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-96c0-8.8 7.2-16 16-16s16 7.2 16 16zm80-16c8.8 0 16 7.2 16 16l0 96c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-96c0-8.8 7.2-16 16-16zM360 0c-13.3 0-24 10.7-24 24l0 5.2c0 34 14.4 66.4 39.7 89.2l16.4 14.8c15.2 13.7 23.8 33.1 23.8 53.5l0 13.2c0 13.3 10.7 24 24 24s24-10.7 24-24l0-13.2c0-34-14.4-66.4-39.7-89.2L407.8 82.8C392.7 69.1 384 49.7 384 29.2l0-5.2c0-13.3-10.7-24-24-24zM64 128A64 64 0 1 0 64 0a64 64 0 1 0 0 128z\"]\n};\nconst faHotTub = faHotTubPerson;\nconst faMapLocation = {\n prefix: 'fas',\n iconName: 'map-location',\n icon: [576, 512, [\"map-marked\"], \"f59f\", \"M302.8 312C334.9 271.9 408 174.6 408 120C408 53.7 354.3 0 288 0S168 53.7 168 120c0 54.6 73.1 151.9 105.2 192c7.7 9.6 22 9.6 29.6 0zM416 503l144.9-58c9.1-3.6 15.1-12.5 15.1-22.3L576 152c0-17-17.1-28.6-32.9-22.3l-116 46.4c-.5 1.2-1 2.5-1.5 3.7c-2.9 6.8-6.1 13.7-9.6 20.6L416 503zM15.1 187.3C6 191 0 199.8 0 209.6L0 480.4c0 17 17.1 28.6 32.9 22.3L160 451.8l0-251.4c-3.5-6.9-6.7-13.8-9.6-20.6c-5.6-13.2-10.4-27.4-12.8-41.5l-122.6 49zM384 255c-20.5 31.3-42.3 59.6-56.2 77c-20.5 25.6-59.1 25.6-79.6 0c-13.9-17.4-35.7-45.7-56.2-77l0 194.4 192 54.9L384 255z\"]\n};\nconst faMapMarked = faMapLocation;\nconst faHouseFloodWater = {\n prefix: 'fas',\n iconName: 'house-flood-water',\n icon: [576, 512, [], \"e50e\", \"M306.8 6.1C295.6-2 280.4-2 269.2 6.1l-176 128c-11.2 8.2-15.9 22.6-11.6 35.8S98.1 192 112 192l16 0 0 73c1.7 1 3.3 2 4.9 3.1c18 12.4 40.1 20.3 59.2 20.3c21.1 0 42-8.5 59.2-20.3c22.1-15.5 51.6-15.5 73.7 0c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c1.5-1 3-2 4.5-2.9l-.3-73.2 16.6 0c13.9 0 26.1-8.9 30.4-22.1s-.4-27.6-11.6-35.8l-176-128zM269.5 309.9C247 325.4 219.5 336 192 336c-26.9 0-55.3-10.8-77.4-26.1c0 0 0 0 0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 389.7 159 400 192 400c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.5-27.3-10.1-39.2-1.7c0 0 0 0 0 0C439.4 325.2 410.9 336 384 336c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0zM384 448c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1c0 0 0 0 0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7c0 0 0 0 0 0C439.4 437.2 410.9 448 384 448z\"]\n};\nconst faTree = {\n prefix: 'fas',\n iconName: 'tree',\n icon: [448, 512, [127794], \"f1bb\", \"M210.6 5.9L62 169.4c-3.9 4.2-6 9.8-6 15.5C56 197.7 66.3 208 79.1 208l24.9 0L30.6 281.4c-4.2 4.2-6.6 10-6.6 16C24 309.9 34.1 320 46.6 320L80 320 5.4 409.5C1.9 413.7 0 419 0 424.5c0 13 10.5 23.5 23.5 23.5L192 448l0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32 168.5 0c13 0 23.5-10.5 23.5-23.5c0-5.5-1.9-10.8-5.4-15L368 320l33.4 0c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16L344 208l24.9 0c12.7 0 23.1-10.3 23.1-23.1c0-5.7-2.1-11.3-6-15.5L237.4 5.9C234 2.1 229.1 0 224 0s-10 2.1-13.4 5.9z\"]\n};\nconst faBridgeLock = {\n prefix: 'fas',\n iconName: 'bridge-lock',\n icon: [640, 512, [], \"e4cc\", \"M32 64c0-17.7 14.3-32 32-32l512 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-40 0 0 64-8 0c-61.9 0-112 50.1-112 112l0 24.6c-9.9 5.8-18.2 14.1-23.8 24.1c-17.6-20-43.4-32.7-72.2-32.7c-53 0-96 43-96 96l0 64c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-64c0-53-43-96-96-96l0-128 72 0 0-64L64 96C46.3 96 32 81.7 32 64zM408 96l0 64 80 0 0-64-80 0zm-48 64l0-64-80 0 0 64 80 0zM152 96l0 64 80 0 0-64-80 0zM528 240c-17.7 0-32 14.3-32 32l0 48 64 0 0-48c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80l0 48c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32l0-48z\"]\n};\nconst faSackDollar = {\n prefix: 'fas',\n iconName: 'sack-dollar',\n icon: [512, 512, [128176], \"f81d\", \"M320 96L192 96 144.6 24.9C137.5 14.2 145.1 0 157.9 0L354.1 0c12.8 0 20.4 14.2 13.3 24.9L320 96zM192 128l128 0c3.8 2.5 8.1 5.3 13 8.4C389.7 172.7 512 250.9 512 416c0 53-43 96-96 96L96 512c-53 0-96-43-96-96C0 250.9 122.3 172.7 179 136.4c0 0 0 0 0 0s0 0 0 0c4.8-3.1 9.2-5.9 13-8.4zm84 88c0-11-9-20-20-20s-20 9-20 20l0 14c-7.6 1.7-15.2 4.4-22.2 8.5c-13.9 8.3-25.9 22.8-25.8 43.9c.1 20.3 12 33.1 24.7 40.7c11 6.6 24.7 10.8 35.6 14l1.7 .5c12.6 3.8 21.8 6.8 28 10.7c5.1 3.2 5.8 5.4 5.9 8.2c.1 5-1.8 8-5.9 10.5c-5 3.1-12.9 5-21.4 4.7c-11.1-.4-21.5-3.9-35.1-8.5c-2.3-.8-4.7-1.6-7.2-2.4c-10.5-3.5-21.8 2.2-25.3 12.6s2.2 21.8 12.6 25.3c1.9 .6 4 1.3 6.1 2.1c0 0 0 0 0 0s0 0 0 0c8.3 2.9 17.9 6.2 28.2 8.4l0 14.6c0 11 9 20 20 20s20-9 20-20l0-13.8c8-1.7 16-4.5 23.2-9c14.3-8.9 25.1-24.1 24.8-45c-.3-20.3-11.7-33.4-24.6-41.6c-11.5-7.2-25.9-11.6-37.1-15c0 0 0 0 0 0l-.7-.2c-12.8-3.9-21.9-6.7-28.3-10.5c-5.2-3.1-5.3-4.9-5.3-6.7c0-3.7 1.4-6.5 6.2-9.3c5.4-3.2 13.6-5.1 21.5-5c9.6 .1 20.2 2.2 31.2 5.2c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-6.5-1.7-13.7-3.4-21.1-4.7l0-13.9z\"]\n};\nconst faPenToSquare = {\n prefix: 'fas',\n iconName: 'pen-to-square',\n icon: [512, 512, [\"edit\"], \"f044\", \"M471.6 21.7c-21.9-21.9-57.3-21.9-79.2 0L362.3 51.7l97.9 97.9 30.1-30.1c21.9-21.9 21.9-57.3 0-79.2L471.6 21.7zm-299.2 220c-6.1 6.1-10.8 13.6-13.5 21.9l-29.6 88.8c-2.9 8.6-.6 18.1 5.8 24.6s15.9 8.7 24.6 5.8l88.8-29.6c8.2-2.7 15.7-7.4 21.9-13.5L437.7 172.3 339.7 74.3 172.4 241.7zM96 64C43 64 0 107 0 160L0 416c0 53 43 96 96 96l256 0c53 0 96-43 96-96l0-96c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 96c0 17.7-14.3 32-32 32L96 448c-17.7 0-32-14.3-32-32l0-256c0-17.7 14.3-32 32-32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L96 64z\"]\n};\nconst faEdit = faPenToSquare;\nconst faCarSide = {\n prefix: 'fas',\n iconName: 'car-side',\n icon: [640, 512, [128663], \"f5e4\", \"M171.3 96L224 96l0 96-112.7 0 30.4-75.9C146.5 104 158.2 96 171.3 96zM272 192l0-96 81.2 0c9.7 0 18.9 4.4 25 12l67.2 84L272 192zm256.2 1L428.2 68c-18.2-22.8-45.8-36-75-36L171.3 32c-39.3 0-74.6 23.9-89.1 60.3L40.6 196.4C16.8 205.8 0 228.9 0 256L0 368c0 17.7 14.3 32 32 32l33.3 0c7.6 45.4 47.1 80 94.7 80s87.1-34.6 94.7-80l130.7 0c7.6 45.4 47.1 80 94.7 80s87.1-34.6 94.7-80l33.3 0c17.7 0 32-14.3 32-32l0-48c0-65.2-48.8-119-111.8-127zM434.7 368a48 48 0 1 1 90.5 32 48 48 0 1 1 -90.5-32zM160 336a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nconst faShareNodes = {\n prefix: 'fas',\n iconName: 'share-nodes',\n icon: [448, 512, [\"share-alt\"], \"f1e0\", \"M352 224c53 0 96-43 96-96s-43-96-96-96s-96 43-96 96c0 4 .2 8 .7 11.9l-94.1 47C145.4 170.2 121.9 160 96 160c-53 0-96 43-96 96s43 96 96 96c25.9 0 49.4-10.2 66.6-26.9l94.1 47c-.5 3.9-.7 7.8-.7 11.9c0 53 43 96 96 96s96-43 96-96s-43-96-96-96c-25.9 0-49.4 10.2-66.6 26.9l-94.1-47c.5-3.9 .7-7.8 .7-11.9s-.2-8-.7-11.9l94.1-47C302.6 213.8 326.1 224 352 224z\"]\n};\nconst faShareAlt = faShareNodes;\nconst faHeartCircleMinus = {\n prefix: 'fas',\n iconName: 'heart-circle-minus',\n icon: [576, 512, [], \"e4ff\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6l0-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1l0 5.8c0 41.5 17.2 81.2 47.6 109.5zM576 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-64 0c0 8.8-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l128 0c8.8 0 16 7.2 16 16z\"]\n};\nconst faHourglassHalf = {\n prefix: 'fas',\n iconName: 'hourglass-half',\n icon: [384, 512, [\"hourglass-2\"], \"f252\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64l0 11c0 42.4 16.9 83.1 46.9 113.1L146.7 256 78.9 323.9C48.9 353.9 32 394.6 32 437l0 11c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 256 0 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-11c0-42.4-16.9-83.1-46.9-113.1L237.3 256l67.9-67.9c30-30 46.9-70.7 46.9-113.1l0-11c17.7 0 32-14.3 32-32s-14.3-32-32-32L320 0 64 0 32 0zM96 75l0-11 192 0 0 11c0 19-5.6 37.4-16 53L112 128c-10.3-15.6-16-34-16-53zm16 309c3.5-5.3 7.6-10.3 12.1-14.9L192 301.3l67.9 67.9c4.6 4.6 8.6 9.6 12.1 14.9L112 384z\"]\n};\nconst faHourglass2 = faHourglassHalf;\nconst faMicroscope = {\n prefix: 'fas',\n iconName: 'microscope',\n icon: [512, 512, [128300], \"f610\", \"M160 32c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32c17.7 0 32 14.3 32 32l0 224c0 17.7-14.3 32-32 32c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32c-17.7 0-32-14.3-32-32l0-224c0-17.7 14.3-32 32-32zM32 448l288 0c70.7 0 128-57.3 128-128s-57.3-128-128-128l0-64c106 0 192 86 192 192c0 49.2-18.5 94-48.9 128l16.9 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-160 0L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32zm80-64l192 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-192 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faSink = {\n prefix: 'fas',\n iconName: 'sink',\n icon: [512, 512, [], \"e06d\", \"M288 96c0-17.7 14.3-32 32-32s32 14.3 32 32s14.3 32 32 32s32-14.3 32-32c0-53-43-96-96-96s-96 43-96 96l0 192-64 0 0-24c0-30.9-25.1-56-56-56l-48 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l48 0c4.4 0 8 3.6 8 8l0 24-80 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l224 0 224 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-80 0 0-24c0-4.4 3.6-8 8-8l56 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-56 0c-30.9 0-56 25.1-56 56l0 24-64 0 0-192zM480 416l0-32L32 384l0 32c0 53 43 96 96 96l256 0c53 0 96-43 96-96z\"]\n};\nconst faBagShopping = {\n prefix: 'fas',\n iconName: 'bag-shopping',\n icon: [448, 512, [\"shopping-bag\"], \"f290\", \"M160 112c0-35.3 28.7-64 64-64s64 28.7 64 64l0 48-128 0 0-48zm-48 48l-64 0c-26.5 0-48 21.5-48 48L0 416c0 53 43 96 96 96l256 0c53 0 96-43 96-96l0-208c0-26.5-21.5-48-48-48l-64 0 0-48C336 50.1 285.9 0 224 0S112 50.1 112 112l0 48zm24 48a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm152 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nconst faShoppingBag = faBagShopping;\nconst faArrowDownZA = {\n prefix: 'fas',\n iconName: 'arrow-down-z-a',\n icon: [576, 512, [\"sort-alpha-desc\", \"sort-alpha-down-alt\"], \"f881\", \"M183.6 469.6C177.5 476.2 169 480 160 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L128 365.7 128 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 301.7 32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 64c0-17.7 14.3-32 32-32l128 0c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9L429.3 160l50.7 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-128 0c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9L402.7 96 352 96c-17.7 0-32-14.3-32-32zm96 192c12.1 0 23.2 6.8 28.6 17.7l64 128 16 32c7.9 15.8 1.5 35-14.3 42.9s-35 1.5-42.9-14.3L460.2 448l-88.4 0-7.2 14.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9l16-32 64-128c5.4-10.8 16.5-17.7 28.6-17.7zM395.8 400l40.4 0L416 359.6 395.8 400z\"]\n};\nconst faSortAlphaDesc = faArrowDownZA;\nconst faSortAlphaDownAlt = faArrowDownZA;\nconst faMitten = {\n prefix: 'fas',\n iconName: 'mitten',\n icon: [448, 512, [], \"f7b5\", \"M352 384L64 384 5.4 178.9C1.8 166.4 0 153.4 0 140.3C0 62.8 62.8 0 140.3 0l3.4 0c66 0 123.5 44.9 139.5 108.9l31.4 125.8 17.6-20.1C344.8 200.2 362.9 192 382 192l2.8 0c34.9 0 63.3 28.3 63.3 63.3c0 15.9-6 31.2-16.8 42.9L352 384zM32 448c0-17.7 14.3-32 32-32l288 0c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32L64 512c-17.7 0-32-14.3-32-32l0-32z\"]\n};\nconst faPersonRays = {\n prefix: 'fas',\n iconName: 'person-rays',\n icon: [512, 512, [], \"e54d\", \"M208 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-223.1-28.6 47.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6l29.7 0c33.7 0 64.9 17.7 82.3 46.6l58.3 97c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9L328 256.9 328 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128-16 0zM7 7C16.4-2.3 31.6-2.3 41 7l80 80c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L7 41C-2.3 31.6-2.3 16.4 7 7zM471 7c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-80 80c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L471 7zM7 505c-9.4-9.4-9.4-24.6 0-33.9l80-80c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L41 505c-9.4 9.4-24.6 9.4-33.9 0zm464 0l-80-80c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l80 80c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0z\"]\n};\nconst faUsers = {\n prefix: 'fas',\n iconName: 'users',\n icon: [640, 512, [], \"f0c0\", \"M144 0a80 80 0 1 1 0 160A80 80 0 1 1 144 0zM512 0a80 80 0 1 1 0 160A80 80 0 1 1 512 0zM0 298.7C0 239.8 47.8 192 106.7 192l42.7 0c15.9 0 31 3.5 44.6 9.7c-1.3 7.2-1.9 14.7-1.9 22.3c0 38.2 16.8 72.5 43.3 96c-.2 0-.4 0-.7 0L21.3 320C9.6 320 0 310.4 0 298.7zM405.3 320c-.2 0-.4 0-.7 0c26.6-23.5 43.3-57.8 43.3-96c0-7.6-.7-15-1.9-22.3c13.6-6.3 28.7-9.7 44.6-9.7l42.7 0C592.2 192 640 239.8 640 298.7c0 11.8-9.6 21.3-21.3 21.3l-213.3 0zM224 224a96 96 0 1 1 192 0 96 96 0 1 1 -192 0zM128 485.3C128 411.7 187.7 352 261.3 352l117.3 0C452.3 352 512 411.7 512 485.3c0 14.7-11.9 26.7-26.7 26.7l-330.7 0c-14.7 0-26.7-11.9-26.7-26.7z\"]\n};\nconst faEyeSlash = {\n prefix: 'fas',\n iconName: 'eye-slash',\n icon: [640, 512, [], \"f070\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zM223.1 149.5C248.6 126.2 282.7 112 320 112c79.5 0 144 64.5 144 144c0 24.9-6.3 48.3-17.4 68.7L408 294.5c8.4-19.3 10.6-41.4 4.8-63.3c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3c0 10.2-2.4 19.8-6.6 28.3l-90.3-70.8zM373 389.9c-16.4 6.5-34.3 10.1-53 10.1c-79.5 0-144-64.5-144-144c0-6.9 .5-13.6 1.4-20.2L83.1 161.5C60.3 191.2 44 220.8 34.5 243.7c-3.3 7.9-3.3 16.7 0 24.6c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c47.8 0 89.9-12.9 126.2-32.5L373 389.9z\"]\n};\nconst faFlaskVial = {\n prefix: 'fas',\n iconName: 'flask-vial',\n icon: [640, 512, [], \"e4f3\", \"M175 389.4c-9.8 16-15 34.3-15 53.1c-10 3.5-20.8 5.5-32 5.5c-53 0-96-43-96-96L32 64C14.3 64 0 49.7 0 32S14.3 0 32 0L96 0l64 0 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 245.9-49 79.6zM96 64l0 96 64 0 0-96L96 64zM352 0L480 0l32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 150.9L629.7 406.2c6.7 10.9 10.3 23.5 10.3 36.4c0 38.3-31.1 69.4-69.4 69.4l-309.2 0c-38.3 0-69.4-31.1-69.4-69.4c0-12.8 3.6-25.4 10.3-36.4L320 214.9 320 64c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0zm32 64l0 160c0 5.9-1.6 11.7-4.7 16.8L330.5 320l171 0-48.8-79.2c-3.1-5-4.7-10.8-4.7-16.8l0-160-64 0z\"]\n};\nconst faHand = {\n prefix: 'fas',\n iconName: 'hand',\n icon: [512, 512, [129306, 9995, \"hand-paper\"], \"f256\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 208c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-176c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 272c0 1.5 0 3.1 .1 4.6L67.6 283c-16-15.2-41.3-14.6-56.6 1.4s-14.6 41.3 1.4 56.6L124.8 448c43.1 41.1 100.4 64 160 64l19.2 0c97.2 0 176-78.8 176-176l0-208c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 112c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-176c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 176c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-208z\"]\n};\nconst faHandPaper = faHand;\nconst faOm = {\n prefix: 'fas',\n iconName: 'om',\n icon: [512, 512, [128329], \"f679\", \"M379.3 4.7c-6.2-6.2-16.4-6.2-22.6 0l-16 16c-6.2 6.2-6.2 16.4 0 22.6l16 16c6.2 6.2 16.4 6.2 22.6 0l16-16c6.2-6.2 6.2-16.4 0-22.6l-16-16zM281 66.7c-2.2-1.5-4.9-2.5-7.7-2.7c-.6 0-1.3-.1-1.9 0c-3.9 .2-7.4 1.7-10.1 4.2c-.9 .8-1.6 1.7-2.3 2.6c-1.7 2.4-2.7 5.3-2.9 8.5c0 .7 0 1.4 0 2.1c.2 2.2 .9 4.3 1.9 6.2l.3 .6c.3 .6 .8 1.4 1.4 2.4c1.2 2 2.9 4.8 5.1 8.2c4.4 6.7 11.1 15.5 20 24.4C302.4 141.1 330.3 160 368 160c31.2 0 56.6-10.4 73.9-20.2c8.7-5 15.6-9.9 20.4-13.8c2.4-1.9 4.3-3.6 5.7-4.9c.7-.6 1.3-1.2 1.7-1.6l.6-.5 .1-.1 .1-.1s0 0 0 0s0 0 0 0c5.9-5.8 9.5-13.9 9.5-22.8c0-17.7-14.3-32-32-32c-8.7 0-16.7 3.5-22.4 9.2c-.1 .1-.2 .2-.5 .4c-.5 .5-1.5 1.3-2.8 2.4c-2.7 2.2-6.8 5.2-12.1 8.2C399.4 90.4 384.8 96 368 96c-20.8 0-42.4-7-59.5-14.6c-8.4-3.7-15.4-7.5-20.3-10.3c-2.4-1.4-4.3-2.5-5.6-3.3c-.6-.4-1.1-.7-1.4-.9l-.3-.2zM115.2 169.6c8-6 17.9-9.6 28.8-9.6c26.5 0 48 21.5 48 48s-21.5 48-48 48l-34.2 0c-7.6 0-13.8 6.2-13.8 13.8c0 1.5 .2 2.9 .7 4.4l8 24c4.4 13.1 16.6 21.9 30.4 21.9l8.9 0 16 0c35.3 0 64 28.7 64 64s-28.7 64-64 64c-50.8 0-82.7-21.5-102.2-42.8c-9.9-10.8-16.6-21.6-20.9-29.7c-2.1-4-3.6-7.3-4.5-9.6c-.5-1.1-.8-2-1-2.5l-.2-.5c-.3-.9-.7-1.8-1.1-2.6c-1.2-2.2-2.8-4-4.7-5.4c-1.9-1.4-4.1-2.3-6.5-2.8c-1.4-.3-2.9-.3-4.4-.2c-2.5 .2-4.8 1-6.8 2.3c-1.1 .7-2.2 1.5-3.1 2.5c-2.4 2.5-4.1 5.8-4.5 9.5c-.1 .6-.1 1.1-.1 1.7c0 0 0 0 0 0c0 .8 .1 1.7 .2 2.5l0 .1c0 .3 .1 .8 .2 1.3c.2 1.1 .4 2.7 .8 4.6c.8 3.9 2 9.4 3.9 15.9c3.8 13 10.3 30.4 21.3 48C48.7 476.2 89.4 512 160 512c70.7 0 128-57.3 128-128c0-23.3-6.2-45.2-17.1-64l22.6 0c25.5 0 49.9-10.1 67.9-28.1l26.5-26.5c6-6 14.1-9.4 22.6-9.4l5.5 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32c-25.7 0-41.4-12.5-51.2-25.6c-5-6.7-8.4-13.4-10.5-18.6c-1.1-2.5-1.8-4.6-2.2-6c-.2-.7-.4-1.2-.5-1.5l-.1-.2c-.3-1.3-.8-2.6-1.5-3.8c-1.1-2-2.6-3.8-4.4-5.1c-2.7-2-6-3.2-9.6-3.2l-.2 0c-8 .1-14.6 6.1-15.6 13.9c0 0 0 0 0 0c0 .3-.1 .6-.2 1.1c-.1 .9-.3 2.1-.4 3.6c-.3 3-.6 7.3-.6 12.4c0 10.1 1.1 23.9 5.8 38.1c4.8 14.3 13.4 29.3 28.6 40.7C368.7 473.3 389.3 480 416 480c53 0 96-43 96-96l0-96c0-53-43-96-96-96l-5.5 0c-25.5 0-49.9 10.1-67.9 28.1l-26.5 26.5c-6 6-14.1 9.4-22.6 9.4l-48.3 0c6.9-14.5 10.8-30.8 10.8-48c0-61.9-50.1-112-112-112c-25.2 0-48.5 8.3-67.2 22.4c-14.1 10.6-17 30.7-6.4 44.8s30.7 17 44.8 6.4z\"]\n};\nconst faWorm = {\n prefix: 'fas',\n iconName: 'worm',\n icon: [512, 512, [], \"e599\", \"M256 96c0-53 43-96 96-96l38.4 0C439.9 0 480 40.1 480 89.6l0 86.4 0 16 0 184c0 75.1-60.9 136-136 136s-136-60.9-136-136l0-80c0-22.1-17.9-40-40-40s-40 17.9-40 40l0 168c0 26.5-21.5 48-48 48s-48-21.5-48-48l0-168c0-75.1 60.9-136 136-136s136 60.9 136 136l0 80c0 22.1 17.9 40 40 40s40-17.9 40-40l0-184-32 0c-53 0-96-43-96-96zm144-8a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nconst faHouseCircleXmark = {\n prefix: 'fas',\n iconName: 'house-circle-xmark',\n icon: [640, 512, [], \"e50b\", \"M320.7 352c8.1-89.7 83.5-160 175.3-160c8.9 0 17.6 .7 26.1 1.9L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1l32 0 0 69.7c-.1 .9-.1 1.8-.1 2.8l0 112c0 22.1 17.9 40 40 40l16 0c1.2 0 2.4-.1 3.6-.2c1.5 .1 3 .2 4.5 .2l31.9 0 24 0c22.1 0 40-17.9 40-40l0-24 0-64c0-17.7 14.3-32 32-32l64 0 .7 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nconst faPlug = {\n prefix: 'fas',\n iconName: 'plug',\n icon: [384, 512, [128268], \"f1e6\", \"M96 0C78.3 0 64 14.3 64 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 32c0 77.4 55 142 128 156.8l0 67.2c0 17.7 14.3 32 32 32s32-14.3 32-32l0-67.2C297 398 352 333.4 352 256l0-32c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 160z\"]\n};\nconst faChevronUp = {\n prefix: 'fas',\n iconName: 'chevron-up',\n icon: [512, 512, [], \"f077\", \"M233.4 105.4c12.5-12.5 32.8-12.5 45.3 0l192 192c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L256 173.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l192-192z\"]\n};\nconst faHandSpock = {\n prefix: 'fas',\n iconName: 'hand-spock',\n icon: [576, 512, [128406], \"f259\", \"M246.9 23.7C242.3 6.6 224.8-3.5 207.7 1.1s-27.2 22.1-22.6 39.2L238 237.8c2.5 9.2-4.5 18.2-14 18.2c-6.4 0-12-4.2-13.9-10.3L166.6 102.7c-5.1-16.9-23-26.4-39.9-21.3s-26.4 23-21.3 39.9l62.8 206.4c2.4 7.9-7.2 13.8-13.2 8.1L99.6 283c-16-15.2-41.3-14.6-56.6 1.4s-14.6 41.3 1.4 56.6L156.8 448c43.1 41.1 100.4 64 160 64l10.9 0 8.2 0c.1 0 .1-.1 .1-.1s.1-.1 .1-.1c58.3-3.5 108.6-43.2 125.3-99.7l81.2-275c5-16.9-4.7-34.7-21.6-39.8s-34.7 4.7-39.8 21.6L443.5 247.1c-1.6 5.3-6.4 8.9-12 8.9c-7.9 0-13.8-7.3-12.2-15.1l36-170.3c3.7-17.3-7.4-34.3-24.7-37.9s-34.3 7.4-37.9 24.7L355.1 235.1c-2.6 12.2-13.3 20.9-25.8 20.9c-11.9 0-22.4-8-25.4-19.5l-57-212.8z\"]\n};\nconst faStopwatch = {\n prefix: 'fas',\n iconName: 'stopwatch',\n icon: [448, 512, [9201], \"f2f2\", \"M176 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l16 0 0 34.4C92.3 113.8 16 200 16 304c0 114.9 93.1 208 208 208s208-93.1 208-208c0-41.8-12.3-80.7-33.5-113.2l24.1-24.1c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L355.7 143c-28.1-23-62.2-38.8-99.7-44.6L256 64l16 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L224 0 176 0zm72 192l0 128c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-128c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nconst faFaceKiss = {\n prefix: 'fas',\n iconName: 'face-kiss',\n icon: [512, 512, [128535, \"kiss\"], \"f596\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm48.7-198.3c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C274.7 443.1 257.4 448 240 448c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9c0 0 0 0 0 0s0 0 0 0s0 0 0 0c0 0 0 0 0 0l.2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7c0 0 0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0c0 0 0 0 0 0l.2-.1 .3-.2 .6-.4c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1l-.4-.3-.5-.3-.2-.1c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faKiss = faFaceKiss;\nconst faBridgeCircleXmark = {\n prefix: 'fas',\n iconName: 'bridge-circle-xmark',\n icon: [640, 512, [], \"e4cb\", \"M64 32C46.3 32 32 46.3 32 64s14.3 32 32 32l40 0 0 64-72 0 0 128c53 0 96 43 96 96l0 64c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-64c0-53 43-96 96-96c6.3 0 12.4 .6 18.3 1.7C367.1 231.8 426.9 192 496 192c42.5 0 81.6 15.1 112 40.2l0-72.2-72 0 0-64 40 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L64 32zM488 96l0 64-80 0 0-64 80 0zM360 96l0 64-80 0 0-64 80 0zM232 96l0 64-80 0 0-64 80 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nconst faFaceGrinTongue = {\n prefix: 'fas',\n iconName: 'face-grin-tongue',\n icon: [512, 512, [128539, \"grin-tongue\"], \"f589\", \"M0 256C0 368.9 73.1 464.7 174.5 498.8C165.3 484 160 466.6 160 448l0-47.3c-24-17.5-43.1-41.4-54.8-69.2c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19c12.3-3.8 24.3 6.9 19.3 18.7c-11.8 28-31.1 52-55.4 69.6l0 46.9c0 18.6-5.3 36-14.5 50.8C438.9 464.7 512 368.9 512 256C512 114.6 397.4 0 256 0S0 114.6 0 256zm176.4-80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM320 448l0-45.4c0-14.7-11.9-26.6-26.6-26.6l-2 0c-11.3 0-21.1 7.9-23.6 18.9c-2.8 12.6-20.8 12.6-23.6 0c-2.5-11.1-12.3-18.9-23.6-18.9l-2 0c-14.7 0-26.6 11.9-26.6 26.6l0 45.4c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nconst faGrinTongue = faFaceGrinTongue;\nconst faChessBishop = {\n prefix: 'fas',\n iconName: 'chess-bishop',\n icon: [320, 512, [9821], \"f43a\", \"M128 0C110.3 0 96 14.3 96 32c0 16.1 11.9 29.4 27.4 31.7C78.4 106.8 8 190 8 288c0 47.4 30.8 72.3 56 84.7L64 400l192 0 0-27.3c25.2-12.5 56-37.4 56-84.7c0-37.3-10.2-72.4-25.3-104.1l-99.4 99.4c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L270.8 154.6c-23.2-38.1-51.8-69.5-74.2-90.9C212.1 61.4 224 48.1 224 32c0-17.7-14.3-32-32-32L128 0zM48 432L6.6 473.4c-4.2 4.2-6.6 10-6.6 16C0 501.9 10.1 512 22.6 512l274.7 0c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16L272 432 48 432z\"]\n};\nconst faFaceGrinWink = {\n prefix: 'fas',\n iconName: 'face-grin-wink',\n icon: [512, 512, [\"grin-wink\"], \"f58c\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zm-16.9-79.2c-17.6-23.5-52.8-23.5-70.4 0c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faGrinWink = faFaceGrinWink;\nconst faEarDeaf = {\n prefix: 'fas',\n iconName: 'ear-deaf',\n icon: [512, 512, [\"deaf\", \"deafness\", \"hard-of-hearing\"], \"f2a4\", \"M502.6 54.6l-40 40c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l40-40c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zm-320 320l-128 128c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l128-128c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3zM240 128c-57.6 0-105.1 43.6-111.3 99.5c-1.9 17.6-17.8 30.2-35.3 28.3s-30.2-17.8-28.3-35.3C74.8 132.5 149.4 64 240 64c97.2 0 176 78.8 176 176c0 46-17.7 87.9-46.6 119.3c-12 13-17.4 24.8-17.4 34.7l0 6.1c0 61.9-50.1 112-112 112c-17.7 0-32-14.3-32-32s14.3-32 32-32c26.5 0 48-21.5 48-48l0-6.1c0-32.9 17.4-59.6 34.4-78c18.4-20 29.6-46.6 29.6-75.9c0-61.9-50.1-112-112-112zm0 80c-17.7 0-32 14.3-32 32c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-44.2 35.8-80 80-80s80 35.8 80 80c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-17.7-14.3-32-32-32z\"]\n};\nconst faDeaf = faEarDeaf;\nconst faDeafness = faEarDeaf;\nconst faHardOfHearing = faEarDeaf;\nconst faRoadCircleCheck = {\n prefix: 'fas',\n iconName: 'road-circle-check',\n icon: [640, 512, [], \"e564\", \"M213.2 32L288 32l0 64c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 74.8 0c27.1 0 51.3 17.1 60.3 42.6l42.7 120.6c-10.9-2.1-22.2-3.2-33.8-3.2c-59.5 0-112.1 29.6-144 74.8l0-42.8c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32c2.3 0 4.6-.3 6.8-.7c-4.5 15.5-6.8 31.8-6.8 48.7c0 5.4 .2 10.7 .7 16l-.7 0c-17.7 0-32 14.3-32 32l0 64L86.6 480C56.5 480 32 455.5 32 425.4c0-6.2 1.1-12.4 3.1-18.2L152.9 74.6C162 49.1 186.1 32 213.2 32zM352 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L480 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nconst faDiceFive = {\n prefix: 'fas',\n iconName: 'dice-five',\n icon: [448, 512, [9860], \"f523\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm64 96a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM96 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM224 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64-64a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32 160a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faSquareRss = {\n prefix: 'fas',\n iconName: 'square-rss',\n icon: [448, 512, [\"rss-square\"], \"f143\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM96 136c0-13.3 10.7-24 24-24c137 0 248 111 248 248c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-110.5-89.5-200-200-200c-13.3 0-24-10.7-24-24zm0 96c0-13.3 10.7-24 24-24c83.9 0 152 68.1 152 152c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-57.4-46.6-104-104-104c-13.3 0-24-10.7-24-24zm0 120a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nconst faRssSquare = faSquareRss;\nconst faLandMineOn = {\n prefix: 'fas',\n iconName: 'land-mine-on',\n icon: [640, 512, [], \"e51b\", \"M344 24l0 144c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-144c0-13.3 10.7-24 24-24s24 10.7 24 24zM192 320c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32l0 32-256 0 0-32zm-77.3 90.5c8.1-16.3 24.8-26.5 42.9-26.5l324.7 0c18.2 0 34.8 10.3 42.9 26.5l27.6 55.2C563.5 487 548 512 524.2 512l-408.4 0c-23.8 0-39.3-25-28.6-46.3l27.6-55.2zM36.3 138.3c7.5-10.9 22.5-13.6 33.4-6.1l104 72c10.9 7.5 13.6 22.5 6.1 33.4s-22.5 13.6-33.4 6.1l-104-72c-10.9-7.5-13.6-22.5-6.1-33.4zm534.1-6.1c10.9-7.5 25.8-4.8 33.4 6.1s4.8 25.8-6.1 33.4l-104 72c-10.9 7.5-25.8 4.8-33.4-6.1s-4.8-25.8 6.1-33.4l104-72z\"]\n};\nconst faICursor = {\n prefix: 'fas',\n iconName: 'i-cursor',\n icon: [256, 512, [], \"f246\", \"M.1 29.3C-1.4 47 11.7 62.4 29.3 63.9l8 .7C70.5 67.3 96 95 96 128.3L96 224l-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 95.7c0 33.3-25.5 61-58.7 63.8l-8 .7C11.7 449.6-1.4 465 .1 482.7s16.9 30.7 34.5 29.2l8-.7c34.1-2.8 64.2-18.9 85.4-42.9c21.2 24 51.2 40 85.4 42.9l8 .7c17.6 1.5 33.1-11.6 34.5-29.2s-11.6-33.1-29.2-34.5l-8-.7C185.5 444.7 160 417 160 383.7l0-95.7 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-95.7c0-33.3 25.5-61 58.7-63.8l8-.7c17.6-1.5 30.7-16.9 29.2-34.5S239-1.4 221.3 .1l-8 .7C179.2 3.6 149.2 19.7 128 43.7c-21.2-24-51.2-40-85.4-42.9l-8-.7C17-1.4 1.6 11.7 .1 29.3z\"]\n};\nconst faStamp = {\n prefix: 'fas',\n iconName: 'stamp',\n icon: [512, 512, [], \"f5bf\", \"M312 201.8c0-17.4 9.2-33.2 19.9-47C344.5 138.5 352 118.1 352 96c0-53-43-96-96-96s-96 43-96 96c0 22.1 7.5 42.5 20.1 58.8c10.7 13.8 19.9 29.6 19.9 47c0 29.9-24.3 54.2-54.2 54.2L112 256C50.1 256 0 306.1 0 368c0 20.9 13.4 38.7 32 45.3L32 464c0 26.5 21.5 48 48 48l352 0c26.5 0 48-21.5 48-48l0-50.7c18.6-6.6 32-24.4 32-45.3c0-61.9-50.1-112-112-112l-33.8 0c-29.9 0-54.2-24.3-54.2-54.2zM416 416l0 32L96 448l0-32 320 0z\"]\n};\nconst faStairs = {\n prefix: 'fas',\n iconName: 'stairs',\n icon: [576, 512, [], \"e289\", \"M384 64c0-17.7 14.3-32 32-32l128 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0 0 96c0 17.7-14.3 32-32 32l-96 0 0 96c0 17.7-14.3 32-32 32l-96 0 0 96c0 17.7-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l96 0 0-96c0-17.7 14.3-32 32-32l96 0 0-96c0-17.7 14.3-32 32-32l96 0 0-96z\"]\n};\nconst faI = {\n prefix: 'fas',\n iconName: 'i',\n icon: [320, 512, [105], \"49\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l96 0 0 320-96 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 0 0-320 96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L160 32 32 32z\"]\n};\nconst faHryvniaSign = {\n prefix: 'fas',\n iconName: 'hryvnia-sign',\n icon: [384, 512, [8372, \"hryvnia\"], \"f6f2\", \"M121.9 116.2C138.3 103.1 158.7 96 179.6 96L223 96c27.1 0 49 21.9 49 49c0 11.5-4 22.4-11.1 31L32 176c-17.7 0-32 14.3-32 32s14.3 32 32 32l123.5 0-50.6 28.9c-1.7 1-3.4 2-5.1 3.1L32 272c-17.7 0-32 14.3-32 32s14.3 32 32 32l20.3 0c-2.8 9.9-4.3 20.4-4.3 31c0 62.4 50.6 113 113 113l43.4 0c35.5 0 70-12.1 97.7-34.3L308 441c13.8-11 16-31.2 5-45s-31.2-16-45-5l-5.9 4.7c-16.4 13.1-36.7 20.2-57.7 20.2L161 416c-27.1 0-49-21.9-49-49c0-11.5 4-22.4 11.1-31L352 336c17.7 0 32-14.3 32-32s-14.3-32-32-32l-123.5 0 50.6-28.9c1.7-1 3.4-2 5.1-3.1l67.8 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-20.3 0c2.8-10 4.3-20.4 4.3-31c0-62.4-50.6-113-113-113l-43.4 0c-35.5 0-70 12.1-97.7 34.3L76 71c-13.8 11-16 31.2-5 45s31.2 16 45 5l5.9-4.7z\"]\n};\nconst faHryvnia = faHryvniaSign;\nconst faPills = {\n prefix: 'fas',\n iconName: 'pills',\n icon: [576, 512, [], \"f484\", \"M112 96c-26.5 0-48 21.5-48 48l0 112 96 0 0-112c0-26.5-21.5-48-48-48zM0 144C0 82.1 50.1 32 112 32s112 50.1 112 112l0 224c0 61.9-50.1 112-112 112S0 429.9 0 368L0 144zM554.9 399.4c-7.1 12.3-23.7 13.1-33.8 3.1L333.5 214.9c-10-10-9.3-26.7 3.1-33.8C360 167.7 387.1 160 416 160c88.4 0 160 71.6 160 160c0 28.9-7.7 56-21.1 79.4zm-59.5 59.5C472 472.3 444.9 480 416 480c-88.4 0-160-71.6-160-160c0-28.9 7.7-56 21.1-79.4c7.1-12.3 23.7-13.1 33.8-3.1L498.5 425.1c10 10 9.3 26.7-3.1 33.8z\"]\n};\nconst faFaceGrinWide = {\n prefix: 'fas',\n iconName: 'face-grin-wide',\n icon: [512, 512, [128515, \"grin-alt\"], \"f581\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zM208 192c0 35.3-14.3 64-32 64s-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64zm128 64c-17.7 0-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64s-14.3 64-32 64z\"]\n};\nconst faGrinAlt = faFaceGrinWide;\nconst faTooth = {\n prefix: 'fas',\n iconName: 'tooth',\n icon: [448, 512, [129463], \"f5c9\", \"M186.1 52.1C169.3 39.1 148.7 32 127.5 32C74.7 32 32 74.7 32 127.5l0 6.2c0 15.8 3.7 31.3 10.7 45.5l23.5 47.1c4.5 8.9 7.6 18.4 9.4 28.2l36.7 205.8c2 11.2 11.6 19.4 22.9 19.8s21.4-7.4 24-18.4l28.9-121.3C192.2 323.7 207 312 224 312s31.8 11.7 35.8 28.3l28.9 121.3c2.6 11.1 12.7 18.8 24 18.4s20.9-8.6 22.9-19.8l36.7-205.8c1.8-9.8 4.9-19.3 9.4-28.2l23.5-47.1c7.1-14.1 10.7-29.7 10.7-45.5l0-2.1c0-55-44.6-99.6-99.6-99.6c-24.1 0-47.4 8.8-65.6 24.6l-3.2 2.8 19.5 15.2c7 5.4 8.2 15.5 2.8 22.5s-15.5 8.2-22.5 2.8l-24.4-19-37-28.8z\"]\n};\nconst faV = {\n prefix: 'fas',\n iconName: 'v',\n icon: [384, 512, [118], \"56\", \"M19.7 34.5c16.3-6.8 35 .9 41.8 17.2L192 364.8 322.5 51.7c6.8-16.3 25.5-24 41.8-17.2s24 25.5 17.2 41.8l-160 384c-5 11.9-16.6 19.7-29.5 19.7s-24.6-7.8-29.5-19.7L2.5 76.3c-6.8-16.3 .9-35 17.2-41.8z\"]\n};\nconst faBangladeshiTakaSign = {\n prefix: 'fas',\n iconName: 'bangladeshi-taka-sign',\n icon: [384, 512, [], \"e2e6\", \"M36 32.3C18.4 30.1 2.4 42.5 .2 60S10.5 93.6 28 95.8l7.9 1c16 2 28 15.6 28 31.8L64 160l-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 160c0 53 43 96 96 96l32 0c106 0 192-86 192-192l0-32c0-53-43-96-96-96l-16 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l16 0c17.7 0 32 14.3 32 32l0 32c0 70.7-57.3 128-128 128l-32 0c-17.7 0-32-14.3-32-32l0-160 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-31.5c0-48.4-36.1-89.3-84.1-95.3l-7.9-1z\"]\n};\nconst faBicycle = {\n prefix: 'fas',\n iconName: 'bicycle',\n icon: [640, 512, [128690], \"f206\", \"M312 32c-13.3 0-24 10.7-24 24s10.7 24 24 24l25.7 0 34.6 64-149.4 0-27.4-38C191 99.7 183.7 96 176 96l-56 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l43.7 0 22.1 30.7-26.6 53.1c-10-2.5-20.5-3.8-31.2-3.8C57.3 224 0 281.3 0 352s57.3 128 128 128c65.3 0 119.1-48.9 127-112l49 0c8.5 0 16.3-4.5 20.7-11.8l84.8-143.5 21.7 40.1C402.4 276.3 384 312 384 352c0 70.7 57.3 128 128 128s128-57.3 128-128s-57.3-128-128-128c-13.5 0-26.5 2.1-38.7 6L375.4 48.8C369.8 38.4 359 32 347.2 32L312 32zM458.6 303.7l32.3 59.7c6.3 11.7 20.9 16 32.5 9.7s16-20.9 9.7-32.5l-32.3-59.7c3.6-.6 7.4-.9 11.2-.9c39.8 0 72 32.2 72 72s-32.2 72-72 72s-72-32.2-72-72c0-18.6 7-35.5 18.6-48.3zM133.2 368l65 0c-7.3 32.1-36 56-70.2 56c-39.8 0-72-32.2-72-72s32.2-72 72-72c1.7 0 3.4 .1 5.1 .2l-24.2 48.5c-9 18.1 4.1 39.4 24.3 39.4zm33.7-48l50.7-101.3 72.9 101.2-.1 .1-123.5 0zm90.6-128l108.5 0L317 274.8 257.4 192z\"]\n};\nconst faStaffSnake = {\n prefix: 'fas',\n iconName: 'staff-snake',\n icon: [384, 512, [\"rod-asclepius\", \"rod-snake\", \"staff-aesculapius\"], \"e579\", \"M222.6 43.2l-.1 4.8L288 48c53 0 96 43 96 96s-43 96-96 96l-40 0 0-80 40 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-40 0-28 0-4.5 144 40.5 0c53 0 96 43 96 96s-43 96-96 96l-16 0 0-80 16 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-43 0-3.1 99.5L208.5 495l0 1c-.3 8.9-7.6 16-16.5 16s-16.2-7.1-16.5-16l0-1-1-31L136 464c-22.1 0-40-17.9-40-40s17.9-40 40-40l36 0-1-32-19 0c-53 0-96-43-96-96c0-47.6 34.6-87.1 80-94.7l0 94.7c0 8.8 7.2 16 16 16l16.5 0L164 128l-28 0-13.4 0c-9 18.9-28.3 32-50.6 32l-16 0c-30.9 0-56-25.1-56-56S25.1 48 56 48l8 0 8 0 89.5 0-.1-4.8L161 32c0-.7 0-1.3 0-1.9c.5-16.6 14.1-30 31-30s30.5 13.4 31 30c0 .6 0 1.3 0 1.9l-.4 11.2zM64 112a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nconst faRodAsclepius = faStaffSnake;\nconst faRodSnake = faStaffSnake;\nconst faStaffAesculapius = faStaffSnake;\nconst faHeadSideCoughSlash = {\n prefix: 'fas',\n iconName: 'head-side-cough-slash',\n icon: [640, 512, [], \"e062\", \"M448 325.8l44 34.5c8.1 1.4 14.8 6.8 18 14.1L552.9 408c10.6 .4 19.5 7.6 22.2 17.4l39.1 30.6c.6 0 1.2-.1 1.8-.1c11.1 0 20.4 7.5 23.2 17.8l-3.9 0c6.2 8.5 6.4 20.4-.4 29c-8.2 10.4-23.3 12.3-33.7 4.1L9.2 42.9C-1.2 34.7-3.1 19.6 5.1 9.2S28.4-3.1 38.8 5.1L89.6 44.9C127 16.7 173.5 0 224 0l24 0c95.2 0 181.2 69.3 197.3 160.2c2.3 13 6.8 25.7 15.1 36l42 52.6c6.2 7.8 9.6 17.4 9.6 27.4c0 24.2-19.6 43.8-43.8 43.8L448 320s0 0 0 0l0 5.8zM0 224.2c0-38.7 9.8-75.1 27.1-106.9L341.8 365.3l-2.5 .3c-11 1.4-19.2 10.7-19.2 21.8c0 11.6 9 21.2 20.6 21.9l62 3.9 43 33.9C439.3 466.2 421.2 480 400 480l-80 0 0 8c0 13.3-10.7 24-24 24l-40 0s0 0 0 0L96 512c-17.7 0-32-14.3-32-32l0-72.7c0-16.7-6.9-32.5-17.1-45.8C16.6 322.4 0 274.1 0 224.2zM616 360a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm-64-48a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm40-24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nconst faTruckMedical = {\n prefix: 'fas',\n iconName: 'truck-medical',\n icon: [640, 512, [128657, \"ambulance\"], \"f0f9\", \"M0 48C0 21.5 21.5 0 48 0L368 0c26.5 0 48 21.5 48 48l0 48 50.7 0c17 0 33.3 6.7 45.3 18.7L589.3 192c12 12 18.7 28.3 18.7 45.3l0 18.7 0 32 0 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0c0 53-43 96-96 96s-96-43-96-96l-128 0c0 53-43 96-96 96s-96-43-96-96l-16 0c-26.5 0-48-21.5-48-48L0 48zM416 256l128 0 0-18.7L466.7 160 416 160l0 96zM160 464a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm368-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM176 80l0 48-48 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l48 0 0 48c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-48 48 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-48 0 0-48c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16z\"]\n};\nconst faAmbulance = faTruckMedical;\nconst faWheatAwnCircleExclamation = {\n prefix: 'fas',\n iconName: 'wheat-awn-circle-exclamation',\n icon: [640, 512, [], \"e598\", \"M505 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L383 95c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l88-88zM305.5 27.3c-6.2-6.2-16.4-6.2-22.6 0L271.5 38.6c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4-30.5 30.5c-3.4-27.3-15.5-53.8-36.5-74.8L101.8 231c-6.2-6.2-16.4-6.2-22.6 0L67.9 242.3c-37.5 37.5-37.5 98.3 0 135.8l10.4 10.4L9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l68.9-68.9 12.2 12.2c37.5 37.5 98.3 37.5 135.8 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-21.8-21.8-49.6-34.1-78.1-36.9l31.9-31.9 12.2 12.2c22.5 22.5 53.3 31.5 82.4 27c0-1 0-2.1 0-3.1c0-33.1 9.1-64.1 25-90.6c-15.5-8.7-32.5-13.8-49.8-15.5l31.9-31.9 12.2 12.2c6 6 12.6 11.1 19.7 15.2c27.5-34 67.3-57.5 112.6-63.8c-4.1-3.8-8.4-7.3-12.9-10.5L505 137c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-59.4 59.4c-20.6-4.4-42-3.7-62.3 2.1c6.1-21.3 6.6-43.8 1.4-65.3L409 41c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L329.1 52.9c-3.7-5-7.8-9.8-12.4-14.3L305.5 27.3zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16z\"]\n};\nconst faSnowman = {\n prefix: 'fas',\n iconName: 'snowman',\n icon: [512, 512, [9731, 9924], \"f7d0\", \"M341.1 140.6c-2 3.9-1.6 8.6 1.2 12c7 8.5 12.9 18.1 17.2 28.4L408 160.2l0-40.2c0-13.3 10.7-24 24-24s24 10.7 24 24l0 19.6 22.5-9.7c12.2-5.2 26.3 .4 31.5 12.6s-.4 26.3-12.6 31.5l-56 24-73.6 31.5c-.5 9.5-2.1 18.6-4.8 27.3c-1.2 3.8-.1 8 2.8 10.8C396.7 296.9 416 338.2 416 384c0 44.7-18.3 85-47.8 114.1c-9.9 9.7-23.7 13.9-37.5 13.9l-149.3 0c-13.9 0-27.7-4.2-37.5-13.9C114.3 469 96 428.7 96 384c0-45.8 19.3-87.1 50.1-116.3c2.9-2.8 4-6.9 2.8-10.8c-2.7-8.7-4.3-17.9-4.8-27.3L70.5 198.1l-56-24C2.4 168.8-3.3 154.7 1.9 142.5s19.3-17.8 31.5-12.6L56 139.6 56 120c0-13.3 10.7-24 24-24s24 10.7 24 24l0 40.2L152.6 181c4.3-10.3 10.1-19.9 17.2-28.4c2.8-3.4 3.3-8.1 1.2-12C164 127.2 160 112.1 160 96c0-53 43-96 96-96s96 43 96 96c0 16.1-4 31.2-10.9 44.6zM224 96a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm48 128a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-16 80a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm16 48a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zM288 96a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm-48 24l0 3.2c0 3.2 .8 6.3 2.3 9l9 16.9c.9 1.7 2.7 2.8 4.7 2.8s3.8-1.1 4.7-2.8l9-16.9c1.5-2.8 2.3-5.9 2.3-9l0-3.2c0-8.8-7.2-16-16-16s-16 7.2-16 16z\"]\n};\nconst faMortarPestle = {\n prefix: 'fas',\n iconName: 'mortar-pestle',\n icon: [512, 512, [], \"f5a7\", \"M504.3 11.1C493.3-1.6 474.5-3.7 461 6.2L252.3 160l144.9 0L502.6 54.6c11.8-11.8 12.6-30.8 1.6-43.5zM32 192c-17.7 0-32 14.3-32 32s14.3 32 32 32c0 82.5 43.4 147.7 123.9 176.2c-11.1 13.9-19.4 30.3-23.9 48.1C127.6 497.4 142.3 512 160 512l192 0c17.7 0 32.4-14.6 28.1-31.7c-4.5-17.8-12.8-34.1-23.9-48.1C436.6 403.7 480 338.5 480 256c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 192z\"]\n};\nconst faRoadBarrier = {\n prefix: 'fas',\n iconName: 'road-barrier',\n icon: [640, 512, [], \"e562\", \"M32 32C14.3 32 0 46.3 0 64L0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-181.7L149.2 96 64 96l0-32c0-17.7-14.3-32-32-32zM405.2 96l-74.3 0-5.4 10.7L234.8 288l74.3 0 5.4-10.7L405.2 96zM362.8 288l74.3 0 5.4-10.7L533.2 96l-74.3 0-5.4 10.7L362.8 288zM202.8 96l-5.4 10.7L106.8 288l74.3 0 5.4-10.7L277.2 96l-74.3 0zm288 192l85.2 0 0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-384c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 53.7L490.8 288z\"]\n};\nconst faSchool = {\n prefix: 'fas',\n iconName: 'school',\n icon: [640, 512, [127979], \"f549\", \"M337.8 5.4C327-1.8 313-1.8 302.2 5.4L166.3 96 48 96C21.5 96 0 117.5 0 144L0 464c0 26.5 21.5 48 48 48l208 0 0-96c0-35.3 28.7-64 64-64s64 28.7 64 64l0 96 208 0c26.5 0 48-21.5 48-48l0-320c0-26.5-21.5-48-48-48L473.7 96 337.8 5.4zM96 192l32 0c8.8 0 16 7.2 16 16l0 64c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-64c0-8.8 7.2-16 16-16zm400 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 64c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-64zM96 320l32 0c8.8 0 16 7.2 16 16l0 64c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-64c0-8.8 7.2-16 16-16zm400 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 64c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-64zM232 176a88 88 0 1 1 176 0 88 88 0 1 1 -176 0zm88-48c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-16 0 0-16c0-8.8-7.2-16-16-16z\"]\n};\nconst faIgloo = {\n prefix: 'fas',\n iconName: 'igloo',\n icon: [576, 512, [], \"f7ae\", \"M320 33.8L320 160 48.5 160C100.2 82.8 188.1 32 288 32c10.8 0 21.5 .6 32 1.8zM352 160l0-120.9C424.9 55.7 487.2 99.8 527.5 160L352 160zM29.9 192L96 192l0 128L0 320c0-46 10.8-89.4 29.9-128zM192 320l-64 0 0-128 320 0 0 128-64 0 0 32 192 0 0 80c0 26.5-21.5 48-48 48l-176 0 0-128c0-35.3-28.7-64-64-64s-64 28.7-64 64l0 128L48 480c-26.5 0-48-21.5-48-48l0-80 192 0 0-32zm288 0l0-128 66.1 0c19.2 38.6 29.9 82 29.9 128l-96 0z\"]\n};\nconst faJoint = {\n prefix: 'fas',\n iconName: 'joint',\n icon: [640, 512, [], \"f595\", \"M448 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 11c0 55.2 21.9 108.1 60.9 147.1l21 21c9 9 14.1 21.2 14.1 33.9l0 11c0 17.7 14.3 32 32 32s32-14.3 32-32l0-11c0-29.7-11.8-58.2-32.8-79.2l-21-21C463.2 117.8 448 81.2 448 43l0-11zM576 256c0 17.7 14.3 32 32 32s32-14.3 32-32l0-11c0-55.2-21.9-108.1-60.9-147.1l-21-21c-9-9-14.1-21.2-14.1-33.9l0-11c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 11c0 29.7 11.8 58.2 32.8 79.2l21 21c27 27 42.2 63.6 42.2 101.8l0 11zM229.8 360c-4.7-2.3-10-2.7-15.2-2c-37.8 5.6-75.2 14.3-106.9 22.8C81.3 388 58.3 395.1 42 400.4c-8.2 2.7-14.7 4.9-19.2 6.5c-2.3 .8-4 1.4-5.2 1.8l-1.3 .5C6.8 412.5 0 421.4 0 432s6.8 19.5 16.3 22.7l1.3 .5c1.2 .4 3 1.1 5.2 1.8c4.5 1.6 11 3.8 19.2 6.5c16.3 5.4 39.2 12.5 65.7 19.6C160.3 497.3 228.8 512 288 512l67.3 0c4.1 0 6.3-5.1 3.6-8.3L256.5 380.8c-7.4-8.9-16.5-15.9-26.7-20.8zM445 512l19 0 51.3 0c4.1 0 6.3-5.1 3.6-8.3L416.5 380.8C401.3 362.5 378.8 352 355 352l-19 0-48 0c-1.1 0-2.3 0-3.4 0c-4.1 0-6.2 5.1-3.5 8.3L383.5 483.2C398.7 501.5 421.2 512 445 512zm-3.9-151.7L543.5 483.2c14.6 17.5 35.9 27.9 58.6 28.7c21.1-1.1 37.9-18.6 37.9-39.9l0-80c0-22.1-17.9-40-40-40l-155.3 0c-4.1 0-6.3 5.1-3.6 8.3z\"]\n};\nconst faAngleRight = {\n prefix: 'fas',\n iconName: 'angle-right',\n icon: [320, 512, [8250], \"f105\", \"M278.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-160 160c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L210.7 256 73.4 118.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l160 160z\"]\n};\nconst faHorse = {\n prefix: 'fas',\n iconName: 'horse',\n icon: [576, 512, [128014], \"f6f0\", \"M448 238.1l0-78.1 16 0 9.8 19.6c12.5 25.1 42.2 36.4 68.3 26c20.5-8.2 33.9-28 33.9-50.1L576 80c0-19.1-8.4-36.3-21.7-48l5.7 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L480 0 448 0C377.3 0 320 57.3 320 128l-96 0-20.8 0-54.4 0c-30.7 0-57.6 16.3-72.5 40.8C33.2 174.5 0 211.4 0 256l0 56c0 13.3 10.7 24 24 24s24-10.7 24-24l0-56c0-13.4 6.6-25.2 16.7-32.5c1.6 13 6.3 25.4 13.6 36.4l28.2 42.4c8.3 12.4 6.4 28.7-1.2 41.6c-16.5 28-20.6 62.2-10 93.9l17.5 52.4c4.4 13.1 16.6 21.9 30.4 21.9l33.7 0c21.8 0 37.3-21.4 30.4-42.1l-20.8-62.5c-2.1-6.4-.5-13.4 4.3-18.2l12.7-12.7c13.2-13.2 20.6-31.1 20.6-49.7c0-2.3-.1-4.6-.3-6.9l84 24c4.1 1.2 8.2 2.1 12.3 2.8L320 480c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-164.3c19.2-19.2 31.5-45.7 32-75.7c0 0 0 0 0 0l0-1.9zM496 64a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nconst faQ = {\n prefix: 'fas',\n iconName: 'q',\n icon: [448, 512, [113], \"51\", \"M64 256c0 88.4 71.6 160 160 160c28.9 0 56-7.7 79.4-21.1l-72-86.4c-11.3-13.6-9.5-33.8 4.1-45.1s33.8-9.5 45.1 4.1l70.9 85.1C371.9 325.8 384 292.3 384 256c0-88.4-71.6-160-160-160S64 167.6 64 256zM344.9 444.6C310 467 268.5 480 224 480C100.3 480 0 379.7 0 256S100.3 32 224 32s224 100.3 224 224c0 56.1-20.6 107.4-54.7 146.7l47.3 56.8c11.3 13.6 9.5 33.8-4.1 45.1s-33.8 9.5-45.1-4.1l-46.6-55.9z\"]\n};\nconst faG = {\n prefix: 'fas',\n iconName: 'g',\n icon: [448, 512, [103], \"47\", \"M224 96C135.6 96 64 167.6 64 256s71.6 160 160 160c77.4 0 142-55 156.8-128L256 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l144 0c25.8 0 49.6 21.4 47.2 50.6C437.8 389.6 341.4 480 224 480C100.3 480 0 379.7 0 256S100.3 32 224 32c57.4 0 109.7 21.6 149.3 57c13.2 11.8 14.3 32 2.5 45.2s-32 14.3-45.2 2.5C302.3 111.4 265 96 224 96z\"]\n};\nconst faNotesMedical = {\n prefix: 'fas',\n iconName: 'notes-medical',\n icon: [512, 512, [], \"f481\", \"M96 352L96 96c0-35.3 28.7-64 64-64l256 0c35.3 0 64 28.7 64 64l0 197.5c0 17-6.7 33.3-18.7 45.3l-58.5 58.5c-12 12-28.3 18.7-45.3 18.7L160 416c-35.3 0-64-28.7-64-64zM272 128c-8.8 0-16 7.2-16 16l0 48-48 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l48 0 0 48c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-48 48 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-48 0 0-48c0-8.8-7.2-16-16-16l-32 0zm24 336c13.3 0 24 10.7 24 24s-10.7 24-24 24l-160 0C60.9 512 0 451.1 0 376L0 152c0-13.3 10.7-24 24-24s24 10.7 24 24l0 224c0 48.6 39.4 88 88 88l160 0z\"]\n};\nconst faTemperatureHalf = {\n prefix: 'fas',\n iconName: 'temperature-half',\n icon: [320, 512, [127777, \"temperature-2\", \"thermometer-2\", \"thermometer-half\"], \"f2c9\", \"M160 64c-26.5 0-48 21.5-48 48l0 164.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5L208 112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112l0 164.4c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6L48 112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3L144 208c0-8.8 7.2-16 16-16s16 7.2 16 16l0 114.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nconst faTemperature2 = faTemperatureHalf;\nconst faThermometer2 = faTemperatureHalf;\nconst faThermometerHalf = faTemperatureHalf;\nconst faDongSign = {\n prefix: 'fas',\n iconName: 'dong-sign',\n icon: [384, 512, [], \"e169\", \"M288 32c-17.7 0-32 14.3-32 32l-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 49.1c-18.8-10.9-40.7-17.1-64-17.1c-70.7 0-128 57.3-128 128s57.3 128 128 128c24.5 0 47.4-6.9 66.8-18.8c5 11.1 16.2 18.8 29.2 18.8c17.7 0 32-14.3 32-32l0-96 0-160c17.7 0 32-14.3 32-32s-14.3-32-32-32c0-17.7-14.3-32-32-32zM128 288a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l320 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 448z\"]\n};\nconst faCapsules = {\n prefix: 'fas',\n iconName: 'capsules',\n icon: [576, 512, [], \"f46b\", \"M64 144c0-26.5 21.5-48 48-48s48 21.5 48 48l0 112-96 0 0-112zM0 144L0 368c0 61.9 50.1 112 112 112s112-50.1 112-112l0-178.4c1.8 19.1 8.2 38 19.8 54.8L372.3 431.7c35.5 51.7 105.3 64.3 156 28.1s63-107.5 27.5-159.2L427.3 113.3C391.8 61.5 321.9 49 271.3 85.2c-28 20-44.3 50.8-47.3 83l0-24.2c0-61.9-50.1-112-112-112S0 82.1 0 144zm296.6 64.2c-16-23.3-10-55.3 11.9-71c21.2-15.1 50.5-10.3 66 12.2l67 97.6L361.6 303l-65-94.8zM491 407.7c-.8 .6-1.6 1.1-2.4 1.6l4-2.8c-.5 .4-1 .8-1.6 1.2z\"]\n};\nconst faPooStorm = {\n prefix: 'fas',\n iconName: 'poo-storm',\n icon: [448, 512, [\"poo-bolt\"], \"f75a\", \"M236.9 .2c-5.5-.7-11 1.4-14.5 5.7s-4.6 10.1-2.8 15.3c2.8 8.2 4.3 16.9 4.3 26.1c0 21.7-8.5 37.2-21.9 47.6c-13.8 10.8-34 17-57.8 17L128 112c-35.3 0-64 28.7-64 64c0 12.2 3.4 23.5 9.3 33.2C31.7 216.2 0 252.4 0 296c0 40.9 28 75.4 65.8 85.2c-5.3-18.5 1-38.5 16.2-50.7l160-128c17.6-14.1 42.6-14 60.2 .2s22.8 38.6 12.8 58.8L285.7 320l18.3 0c20.4 0 38.5 12.9 45.3 32.1c3.7 10.6 3.5 21.8 0 31.9l10.7 0c48.6 0 88-39.4 88-88c0-43.6-31.7-79.8-73.3-86.8c5.9-9.7 9.3-21.1 9.3-33.2c0-35.3-28.7-64-64-64l-1.4 0c.9-5.4 1.4-10.9 1.4-16.6c0-48.7-36.1-88.9-83.1-95.2zm45.1 227.4c-5.8-4.7-14.2-4.7-20.1-.1l-160 128c-5.3 4.2-7.4 11.4-5.1 17.8s8.3 10.7 15.1 10.7l70.1 0L129.7 488.8c-3.4 6.7-1.6 14.9 4.3 19.6s14.2 4.7 20.1 .1l160-128c5.3-4.2 7.4-11.4 5.1-17.8s-8.3-10.7-15.1-10.7l-70.1 0 52.4-104.8c3.4-6.7 1.6-14.9-4.3-19.6z\"]\n};\nconst faPooBolt = faPooStorm;\nconst faFaceFrownOpen = {\n prefix: 'fas',\n iconName: 'face-frown-open',\n icon: [512, 512, [128550, \"frown-open\"], \"f57a\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm-122 174.5c-12.4 5.2-26.5-4.1-21.1-16.4c16-36.6 52.4-62.1 94.8-62.1s78.8 25.6 94.8 62.1c5.4 12.3-8.7 21.6-21.1 16.4c-22.4-9.5-47.4-14.8-73.7-14.8s-51.3 5.3-73.7 14.8z\"]\n};\nconst faFrownOpen = faFaceFrownOpen;\nconst faHandPointUp = {\n prefix: 'fas',\n iconName: 'hand-point-up',\n icon: [384, 512, [9757], \"f0a6\", \"M32 32C32 14.3 46.3 0 64 0S96 14.3 96 32l0 208-64 0L32 32zM224 192c0-17.7 14.3-32 32-32s32 14.3 32 32l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64zm-64-64c17.7 0 32 14.3 32 32l0 48c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-48c0-17.7 14.3-32 32-32zm160 96c0-17.7 14.3-32 32-32s32 14.3 32 32l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64zm-96 88l0-.6c9.4 5.4 20.3 8.6 32 8.6c13.2 0 25.4-4 35.6-10.8c8.7 24.9 32.5 42.8 60.4 42.8c11.7 0 22.6-3.1 32-8.6l0 8.6c0 88.4-71.6 160-160 160l-61.7 0c-42.4 0-83.1-16.9-113.1-46.9L37.5 453.5C13.5 429.5 0 396.9 0 363l0-27c0-35.3 28.7-64 64-64l88 0c22.1 0 40 17.9 40 40s-17.9 40-40 40l-56 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l56 0c39.8 0 72-32.2 72-72z\"]\n};\nconst faMoneyBill = {\n prefix: 'fas',\n iconName: 'money-bill',\n icon: [576, 512, [], \"f0d6\", \"M64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 64zm64 320l-64 0 0-64c35.3 0 64 28.7 64 64zM64 192l0-64 64 0c0 35.3-28.7 64-64 64zM448 384c0-35.3 28.7-64 64-64l0 64-64 0zm64-192c-35.3 0-64-28.7-64-64l64 0 0 64zM288 160a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nconst faBookmark = {\n prefix: 'fas',\n iconName: 'bookmark',\n icon: [384, 512, [128278, 61591], \"f02e\", \"M0 48V487.7C0 501.1 10.9 512 24.3 512c5 0 9.9-1.5 14-4.4L192 400 345.7 507.6c4.1 2.9 9 4.4 14 4.4c13.4 0 24.3-10.9 24.3-24.3V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48z\"]\n};\nconst faAlignJustify = {\n prefix: 'fas',\n iconName: 'align-justify',\n icon: [448, 512, [], \"f039\", \"M448 64c0-17.7-14.3-32-32-32L32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l384 0c17.7 0 32-14.3 32-32zm0 256c0-17.7-14.3-32-32-32L32 288c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32zM0 192c0 17.7 14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 160c-17.7 0-32 14.3-32 32zM448 448c0-17.7-14.3-32-32-32L32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32z\"]\n};\nconst faUmbrellaBeach = {\n prefix: 'fas',\n iconName: 'umbrella-beach',\n icon: [576, 512, [127958], \"f5ca\", \"M346.3 271.8l-60.1-21.9L214 448 32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l512 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-261.9 0 64.1-176.2zm121.1-.2l-3.3 9.1 67.7 24.6c18.1 6.6 38-4.2 39.6-23.4c6.5-78.5-23.9-155.5-80.8-208.5c2 8 3.2 16.3 3.4 24.8l.2 6c1.8 57-7.3 113.8-26.8 167.4zM462 99.1c-1.1-34.4-22.5-64.8-54.4-77.4c-.9-.4-1.9-.7-2.8-1.1c-33-11.7-69.8-2.4-93.1 23.8l-4 4.5C272.4 88.3 245 134.2 226.8 184l-3.3 9.1L434 269.7l3.3-9.1c18.1-49.8 26.6-102.5 24.9-155.5l-.2-6zM107.2 112.9c-11.1 15.7-2.8 36.8 15.3 43.4l71 25.8 3.3-9.1c19.5-53.6 49.1-103 87.1-145.5l4-4.5c6.2-6.9 13.1-13 20.5-18.2c-79.6 2.5-154.7 42.2-201.2 108z\"]\n};\nconst faHelmetUn = {\n prefix: 'fas',\n iconName: 'helmet-un',\n icon: [512, 512, [], \"e503\", \"M479.5 224C471.2 98.9 367.2 0 240 0C107.5 0 0 107.5 0 240l0 56.3C0 344.8 39.2 384 87.7 384L200 384l14.9 0L343.5 505.4c4.5 4.2 10.4 6.6 16.5 6.6l96 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-86.5 0-1.5-1.5L368 288l80 0 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-.5 0zM320 417.2l-78-73.7L274.4 288l45.6 0 0 129.2zM285.3 103.1l34.7 52 0-43.2c0-8.8 7.2-16 16-16s16 7.2 16 16l0 96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4l-34.7-52 0 43.2c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-96c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4zM160 112l0 64c0 8.8 7.2 16 16 16s16-7.2 16-16l0-64c0-8.8 7.2-16 16-16s16 7.2 16 16l0 64c0 26.5-21.5 48-48 48s-48-21.5-48-48l0-64c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nconst faBullseye = {\n prefix: 'fas',\n iconName: 'bullseye',\n icon: [512, 512, [], \"f140\", \"M448 256A192 192 0 1 0 64 256a192 192 0 1 0 384 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256 80a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm0-224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zM224 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nconst faBacon = {\n prefix: 'fas',\n iconName: 'bacon',\n icon: [576, 512, [129363], \"f7e5\", \"M439.2 1.2c11.2-3.2 23.2-.1 31.4 8.1L518 56.7l-26.5 7.9c-58 16.6-98.1 39.6-129.6 67.4c-31.2 27.5-53.2 59.1-75.1 90.9l-2.3 3.3C241.6 288.7 195 356.6 72.8 417.7L37.9 435.2 9.4 406.6c-7.3-7.3-10.6-17.6-9-27.8s8.1-18.9 17.3-23.5C136.1 296.2 180.9 231 223.3 169.3l2.3-3.4c21.8-31.8 44.9-64.9 77.7-93.9c33.4-29.5 75.8-53.6 135.9-70.8zM61.8 459l25.4-12.7c129.5-64.7 179.9-138.1 223.8-202l2.2-3.3c22.1-32.1 42.1-60.5 69.9-85.1c27.5-24.3 63.4-45.2 117.3-60.6c0 0 0 0 0 0l.2-.1 43.1-12.9 23 23c8 8 11.2 19.7 8.3 30.7s-11.3 19.6-22.2 22.7c-51.9 14.8-85.6 34.7-111.1 57.2c-26.1 23-45.1 49.9-67.3 82.1l-2.2 3.2C327.8 365.9 275.5 442 142.3 508.6c-12.3 6.2-27.2 3.7-36.9-6L61.8 459z\"]\n};\nconst faHandPointDown = {\n prefix: 'fas',\n iconName: 'hand-point-down',\n icon: [384, 512, [], \"f0a7\", \"M32 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-208-64 0 0 208zM224 320c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64zm-64 64c17.7 0 32-14.3 32-32l0-48c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 48c0 17.7 14.3 32 32 32zm160-96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64zm-96-88l0 .6c9.4-5.4 20.3-8.6 32-8.6c13.2 0 25.4 4 35.6 10.8c8.7-24.9 32.5-42.8 60.4-42.8c11.7 0 22.6 3.1 32 8.6l0-8.6C384 71.6 312.4 0 224 0L162.3 0C119.8 0 79.1 16.9 49.1 46.9L37.5 58.5C13.5 82.5 0 115.1 0 149l0 27c0 35.3 28.7 64 64 64l88 0c22.1 0 40-17.9 40-40s-17.9-40-40-40l-56 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l56 0c39.8 0 72 32.2 72 72z\"]\n};\nconst faArrowUpFromBracket = {\n prefix: 'fas',\n iconName: 'arrow-up-from-bracket',\n icon: [448, 512, [], \"e09a\", \"M246.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 109.3 192 320c0 17.7 14.3 32 32 32s32-14.3 32-32l0-210.7 73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128zM64 352c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64c0 53 43 96 96 96l256 0c53 0 96-43 96-96l0-64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64c0 17.7-14.3 32-32 32L96 448c-17.7 0-32-14.3-32-32l0-64z\"]\n};\nconst faFolder = {\n prefix: 'fas',\n iconName: 'folder',\n icon: [512, 512, [128193, 128447, 61716, \"folder-blank\"], \"f07b\", \"M64 480H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H288c-10.1 0-19.6-4.7-25.6-12.8L243.2 57.6C231.1 41.5 212.1 32 192 32H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64z\"]\n};\nconst faFolderBlank = faFolder;\nconst faFileWaveform = {\n prefix: 'fas',\n iconName: 'file-waveform',\n icon: [448, 512, [\"file-medical-alt\"], \"f478\", \"M96 0C60.7 0 32 28.7 32 64l0 224 112 0c6.1 0 11.6 3.4 14.3 8.8L176 332.2l49.7-99.4c2.7-5.4 8.3-8.8 14.3-8.8s11.6 3.4 14.3 8.8L281.9 288l70.1 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-80 0c-6.1 0-11.6-3.4-14.3-8.8L240 275.8l-49.7 99.4c-2.7 5.4-8.3 8.8-14.3 8.8s-11.6-3.4-14.3-8.8L134.1 320 32 320l0 128c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L256 0 96 0zM288 0l0 128 128 0L288 0z\"]\n};\nconst faFileMedicalAlt = faFileWaveform;\nconst faRadiation = {\n prefix: 'fas',\n iconName: 'radiation',\n icon: [512, 512, [], \"f7b9\", \"M216 186.7c-23.9 13.8-40 39.7-40 69.3L32 256C14.3 256-.2 241.6 2 224.1C10.7 154 47.8 92.7 101.3 52c14.1-10.7 33.8-5.3 42.7 10l72 124.7zM256 336c14.6 0 28.2-3.9 40-10.7l72 124.8c8.8 15.3 3.7 35.1-12.6 41.9c-30.6 12.9-64.2 20-99.4 20s-68.9-7.1-99.4-20c-16.3-6.9-21.4-26.6-12.6-41.9l72-124.8c11.8 6.8 25.4 10.7 40 10.7zm224-80l-144 0c0-29.6-16.1-55.5-40-69.3L368 62c8.8-15.3 28.6-20.7 42.7-10c53.6 40.7 90.6 102 99.4 172.1c2.2 17.5-12.4 31.9-30 31.9zM256 208a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nconst faChartSimple = {\n prefix: 'fas',\n iconName: 'chart-simple',\n icon: [448, 512, [], \"e473\", \"M160 80c0-26.5 21.5-48 48-48l32 0c26.5 0 48 21.5 48 48l0 352c0 26.5-21.5 48-48 48l-32 0c-26.5 0-48-21.5-48-48l0-352zM0 272c0-26.5 21.5-48 48-48l32 0c26.5 0 48 21.5 48 48l0 160c0 26.5-21.5 48-48 48l-32 0c-26.5 0-48-21.5-48-48L0 272zM368 96l32 0c26.5 0 48 21.5 48 48l0 288c0 26.5-21.5 48-48 48l-32 0c-26.5 0-48-21.5-48-48l0-288c0-26.5 21.5-48 48-48z\"]\n};\nconst faMarsStroke = {\n prefix: 'fas',\n iconName: 'mars-stroke',\n icon: [512, 512, [9894], \"f229\", \"M376 0c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l33.4 33.4L370.3 96.4 345 71c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l25.4 25.4L307.8 159c-28.4-19.5-62.7-31-99.8-31c-97.2 0-176 78.8-176 176s78.8 176 176 176s176-78.8 176-176c0-37-11.4-71.4-31-99.8l28.6-28.6L407 201c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-25.4-25.4 22.1-22.1L471 153c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2l0-112c0-13.3-10.7-24-24-24L376 0zm88 48s0 0 0 0s0 0 0 0s0 0 0 0zM96 304a112 112 0 1 1 224 0A112 112 0 1 1 96 304z\"]\n};\nconst faVial = {\n prefix: 'fas',\n iconName: 'vial',\n icon: [512, 512, [129514], \"f492\", \"M342.6 9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l9.4 9.4L28.1 342.6C10.1 360.6 0 385 0 410.5L0 416c0 53 43 96 96 96l5.5 0c25.5 0 49.9-10.1 67.9-28.1L448 205.3l9.4 9.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-32-32-96-96-32-32zM205.3 256L352 109.3 402.7 160l-96 96-101.5 0z\"]\n};\nconst faGauge = {\n prefix: 'fas',\n iconName: 'gauge',\n icon: [512, 512, [\"dashboard\", \"gauge-med\", \"tachometer-alt-average\"], \"f624\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm320 96c0-26.9-16.5-49.9-40-59.3L280 88c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 204.7c-23.5 9.5-40 32.5-40 59.3c0 35.3 28.7 64 64 64s64-28.7 64-64zM144 176a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm-16 80a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm288 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM400 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nconst faDashboard = faGauge;\nconst faGaugeMed = faGauge;\nconst faTachometerAltAverage = faGauge;\nconst faWandMagicSparkles = {\n prefix: 'fas',\n iconName: 'wand-magic-sparkles',\n icon: [576, 512, [\"magic-wand-sparkles\"], \"e2ca\", \"M234.7 42.7L197 56.8c-3 1.1-5 4-5 7.2s2 6.1 5 7.2l37.7 14.1L248.8 123c1.1 3 4 5 7.2 5s6.1-2 7.2-5l14.1-37.7L315 71.2c3-1.1 5-4 5-7.2s-2-6.1-5-7.2L277.3 42.7 263.2 5c-1.1-3-4-5-7.2-5s-6.1 2-7.2 5L234.7 42.7zM46.1 395.4c-18.7 18.7-18.7 49.1 0 67.9l34.6 34.6c18.7 18.7 49.1 18.7 67.9 0L529.9 116.5c18.7-18.7 18.7-49.1 0-67.9L495.3 14.1c-18.7-18.7-49.1-18.7-67.9 0L46.1 395.4zM484.6 82.6l-105 105-23.3-23.3 105-105 23.3 23.3zM7.5 117.2C3 118.9 0 123.2 0 128s3 9.1 7.5 10.8L64 160l21.2 56.5c1.7 4.5 6 7.5 10.8 7.5s9.1-3 10.8-7.5L128 160l56.5-21.2c4.5-1.7 7.5-6 7.5-10.8s-3-9.1-7.5-10.8L128 96 106.8 39.5C105.1 35 100.8 32 96 32s-9.1 3-10.8 7.5L64 96 7.5 117.2zm352 256c-4.5 1.7-7.5 6-7.5 10.8s3 9.1 7.5 10.8L416 416l21.2 56.5c1.7 4.5 6 7.5 10.8 7.5s9.1-3 10.8-7.5L480 416l56.5-21.2c4.5-1.7 7.5-6 7.5-10.8s-3-9.1-7.5-10.8L480 352l-21.2-56.5c-1.7-4.5-6-7.5-10.8-7.5s-9.1 3-10.8 7.5L416 352l-56.5 21.2z\"]\n};\nconst faMagicWandSparkles = faWandMagicSparkles;\nconst faE = {\n prefix: 'fas',\n iconName: 'e',\n icon: [320, 512, [101], \"45\", \"M64 32C28.7 32 0 60.7 0 96L0 256 0 416c0 35.3 28.7 64 64 64l224 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L64 416l0-128 160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L64 224 64 96l224 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L64 32z\"]\n};\nconst faPenClip = {\n prefix: 'fas',\n iconName: 'pen-clip',\n icon: [512, 512, [\"pen-alt\"], \"f305\", \"M453.3 19.3l39.4 39.4c25 25 25 65.5 0 90.5l-52.1 52.1s0 0 0 0l-1-1s0 0 0 0l-16-16-96-96-17-17 52.1-52.1c25-25 65.5-25 90.5 0zM241 114.9c-9.4-9.4-24.6-9.4-33.9 0L105 217c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L173.1 81c28.1-28.1 73.7-28.1 101.8 0L288 94.1l17 17 96 96 16 16 1 1-17 17L229.5 412.5c-48 48-109.2 80.8-175.8 94.1l-25 5c-7.9 1.6-16-.9-21.7-6.6s-8.1-13.8-6.6-21.7l5-25c13.3-66.6 46.1-127.8 94.1-175.8L254.1 128 241 114.9z\"]\n};\nconst faPenAlt = faPenClip;\nconst faBridgeCircleExclamation = {\n prefix: 'fas',\n iconName: 'bridge-circle-exclamation',\n icon: [640, 512, [], \"e4ca\", \"M64 32C46.3 32 32 46.3 32 64s14.3 32 32 32l40 0 0 64-72 0 0 128c53 0 96 43 96 96l0 64c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-64c0-53 43-96 96-96c6.3 0 12.4 .6 18.3 1.7C367.1 231.8 426.9 192 496 192c42.5 0 81.6 15.1 112 40.2l0-72.2-72 0 0-64 40 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L64 32zM488 96l0 64-80 0 0-64 80 0zM360 96l0 64-80 0 0-64 80 0zM232 96l0 64-80 0 0-64 80 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16z\"]\n};\nconst faUser = {\n prefix: 'fas',\n iconName: 'user',\n icon: [448, 512, [128100, 62144], \"f007\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512l388.6 0c16.4 0 29.7-13.3 29.7-29.7C448 383.8 368.2 304 269.7 304l-91.4 0z\"]\n};\nconst faSchoolCircleCheck = {\n prefix: 'fas',\n iconName: 'school-circle-check',\n icon: [640, 512, [], \"e56b\", \"M337.8 5.4C327-1.8 313-1.8 302.2 5.4L166.3 96 48 96C21.5 96 0 117.5 0 144L0 464c0 26.5 21.5 48 48 48l272 0s0 0 0 0l-64 0 0-96c0-35.3 28.7-64 64-64l.3 0 .5 0c3.4-37.7 18.7-72.1 42.2-99.1C350.2 260 335.6 264 320 264c-48.6 0-88-39.4-88-88s39.4-88 88-88s88 39.4 88 88c0 18.3-5.6 35.3-15.1 49.4c29-21 64.6-33.4 103.1-33.4c59.5 0 112.1 29.6 144 74.8L640 144c0-26.5-21.5-48-48-48L473.7 96 337.8 5.4zM96 192l32 0c8.8 0 16 7.2 16 16l0 64c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-64c0-8.8 7.2-16 16-16zm0 128l32 0c8.8 0 16 7.2 16 16l0 64c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-64c0-8.8 7.2-16 16-16zM320 128c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-16 0 0-16c0-8.8-7.2-16-16-16zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-99.3-43.3c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7z\"]\n};\nconst faDumpster = {\n prefix: 'fas',\n iconName: 'dumpster',\n icon: [576, 512, [], \"f793\", \"M49.7 32c-10.5 0-19.8 6.9-22.9 16.9L.9 133c-.6 2-.9 4.1-.9 6.1C0 150.7 9.3 160 20.9 160l94 0L140.5 32 49.7 32zM272 160l0-128-98.9 0L147.5 160 272 160zm32 0l124.5 0L402.9 32 304 32l0 128zm157.1 0l94 0c11.5 0 20.9-9.3 20.9-20.9c0-2.1-.3-4.1-.9-6.1L549.2 48.9C546.1 38.9 536.8 32 526.3 32l-90.8 0 25.6 128zM32 192l4 32-4 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l12 0L64 448c0 17.7 14.3 32 32 32s32-14.3 32-32l320 0c0 17.7 14.3 32 32 32s32-14.3 32-32l20-160 12 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-4 0 4-32L32 192z\"]\n};\nconst faVanShuttle = {\n prefix: 'fas',\n iconName: 'van-shuttle',\n icon: [640, 512, [128656, \"shuttle-van\"], \"f5b6\", \"M64 104l0 88 96 0 0-96L72 96c-4.4 0-8 3.6-8 8zm482 88L465.1 96 384 96l0 96 162 0zm-226 0l0-96-96 0 0 96 96 0zM592 384l-16 0c0 53-43 96-96 96s-96-43-96-96l-128 0c0 53-43 96-96 96s-96-43-96-96l-16 0c-26.5 0-48-21.5-48-48L0 104C0 64.2 32.2 32 72 32l120 0 160 0 113.1 0c18.9 0 36.8 8.3 49 22.8L625 186.5c9.7 11.5 15 26.1 15 41.2L640 336c0 26.5-21.5 48-48 48zm-64 0a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM160 432a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nconst faShuttleVan = faVanShuttle;\nconst faBuildingUser = {\n prefix: 'fas',\n iconName: 'building-user',\n icon: [640, 512, [], \"e4da\", \"M48 0C21.5 0 0 21.5 0 48L0 464c0 26.5 21.5 48 48 48l96 0 0-80c0-26.5 21.5-48 48-48s48 21.5 48 48l0 80 89.9 0c-6.3-10.2-9.9-22.2-9.9-35.1c0-46.9 25.8-87.8 64-109.2l0-95.9L384 48c0-26.5-21.5-48-48-48L48 0zM64 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm112-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM80 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM272 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM576 272a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM352 477.1c0 19.3 15.6 34.9 34.9 34.9l218.2 0c19.3 0 34.9-15.6 34.9-34.9c0-51.4-41.7-93.1-93.1-93.1l-101.8 0c-51.4 0-93.1 41.7-93.1 93.1z\"]\n};\nconst faSquareCaretLeft = {\n prefix: 'fas',\n iconName: 'square-caret-left',\n icon: [448, 512, [\"caret-square-left\"], \"f191\", \"M0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416zM128 256c0-6.7 2.8-13 7.7-17.6l112-104c7-6.5 17.2-8.2 25.9-4.4s14.4 12.5 14.4 22l0 208c0 9.5-5.7 18.2-14.4 22s-18.9 2.1-25.9-4.4l-112-104c-4.9-4.5-7.7-10.9-7.7-17.6z\"]\n};\nconst faCaretSquareLeft = faSquareCaretLeft;\nconst faHighlighter = {\n prefix: 'fas',\n iconName: 'highlighter',\n icon: [576, 512, [], \"f591\", \"M315 315l158.4-215L444.1 70.6 229 229 315 315zm-187 5s0 0 0 0l0-71.7c0-15.3 7.2-29.6 19.5-38.6L420.6 8.4C428 2.9 437 0 446.2 0c11.4 0 22.4 4.5 30.5 12.6l54.8 54.8c8.1 8.1 12.6 19 12.6 30.5c0 9.2-2.9 18.2-8.4 25.6L334.4 396.5c-9 12.3-23.4 19.5-38.6 19.5L224 416l-25.4 25.4c-12.5 12.5-32.8 12.5-45.3 0l-50.7-50.7c-12.5-12.5-12.5-32.8 0-45.3L128 320zM7 466.3l63-63 70.6 70.6-31 31c-4.5 4.5-10.6 7-17 7L24 512c-13.3 0-24-10.7-24-24l0-4.7c0-6.4 2.5-12.5 7-17z\"]\n};\nconst faKey = {\n prefix: 'fas',\n iconName: 'key',\n icon: [512, 512, [128273], \"f084\", \"M336 352c97.2 0 176-78.8 176-176S433.2 0 336 0S160 78.8 160 176c0 18.7 2.9 36.8 8.3 53.7L7 391c-4.5 4.5-7 10.6-7 17l0 80c0 13.3 10.7 24 24 24l80 0c13.3 0 24-10.7 24-24l0-40 40 0c13.3 0 24-10.7 24-24l0-40 40 0c6.4 0 12.5-2.5 17-7l33.3-33.3c16.9 5.4 35 8.3 53.7 8.3zM376 96a40 40 0 1 1 0 80 40 40 0 1 1 0-80z\"]\n};\nconst faBullhorn = {\n prefix: 'fas',\n iconName: 'bullhorn',\n icon: [512, 512, [128226, 128363], \"f0a1\", \"M480 32c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9L381.7 53c-48 48-113.1 75-181 75l-8.7 0-32 0-96 0c-35.3 0-64 28.7-64 64l0 96c0 35.3 28.7 64 64 64l0 128c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-128 8.7 0c67.9 0 133 27 181 75l43.6 43.6c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6l0-147.6c18.6-8.8 32-32.5 32-60.4s-13.4-51.6-32-60.4L480 32zm-64 76.7L416 240l0 131.3C357.2 317.8 280.5 288 200.7 288l-8.7 0 0-96 8.7 0c79.8 0 156.5-29.8 215.3-83.3z\"]\n};\nconst faGlobe = {\n prefix: 'fas',\n iconName: 'globe',\n icon: [512, 512, [127760], \"f0ac\", \"M352 256c0 22.2-1.2 43.6-3.3 64l-185.3 0c-2.2-20.4-3.3-41.8-3.3-64s1.2-43.6 3.3-64l185.3 0c2.2 20.4 3.3 41.8 3.3 64zm28.8-64l123.1 0c5.3 20.5 8.1 41.9 8.1 64s-2.8 43.5-8.1 64l-123.1 0c2.1-20.6 3.2-42 3.2-64s-1.1-43.4-3.2-64zm112.6-32l-116.7 0c-10-63.9-29.8-117.4-55.3-151.6c78.3 20.7 142 77.5 171.9 151.6zm-149.1 0l-176.6 0c6.1-36.4 15.5-68.6 27-94.7c10.5-23.6 22.2-40.7 33.5-51.5C239.4 3.2 248.7 0 256 0s16.6 3.2 27.8 13.8c11.3 10.8 23 27.9 33.5 51.5c11.6 26 20.9 58.2 27 94.7zm-209 0L18.6 160C48.6 85.9 112.2 29.1 190.6 8.4C165.1 42.6 145.3 96.1 135.3 160zM8.1 192l123.1 0c-2.1 20.6-3.2 42-3.2 64s1.1 43.4 3.2 64L8.1 320C2.8 299.5 0 278.1 0 256s2.8-43.5 8.1-64zM194.7 446.6c-11.6-26-20.9-58.2-27-94.6l176.6 0c-6.1 36.4-15.5 68.6-27 94.6c-10.5 23.6-22.2 40.7-33.5 51.5C272.6 508.8 263.3 512 256 512s-16.6-3.2-27.8-13.8c-11.3-10.8-23-27.9-33.5-51.5zM135.3 352c10 63.9 29.8 117.4 55.3 151.6C112.2 482.9 48.6 426.1 18.6 352l116.7 0zm358.1 0c-30 74.1-93.6 130.9-171.9 151.6c25.5-34.2 45.2-87.7 55.3-151.6l116.7 0z\"]\n};\nconst faSynagogue = {\n prefix: 'fas',\n iconName: 'synagogue',\n icon: [640, 512, [128333], \"f69b\", \"M309.8 3.7c5.9-4.9 14.6-4.9 20.5 0l121 100.8C469.5 119.7 480 142.2 480 166l0 114.1L480 512l-16 0-112 0 0-96c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 96-112 0-16 0 0-231.9L160 166c0-23.7 10.5-46.3 28.8-61.5L309.8 3.7zM512 512l0-267.5 28.1-31.2c3-3.4 7.4-5.3 11.9-5.3s8.9 1.9 11.9 5.3l63.8 70.9c7.9 8.8 12.3 20.3 12.3 32.1L640 448c0 35.3-28.7 64-64 64l-64 0zM128 244.5L128 512l-64 0c-35.3 0-64-28.7-64-64L0 316.3c0-11.9 4.4-23.3 12.3-32.1l63.8-70.9c3-3.4 7.4-5.3 11.9-5.3s8.9 1.9 11.9 5.3L128 244.5zM327 124.3c-3.1-5.4-10.9-5.4-13.9 0l-15.9 28.1-32.3-.3c-6.2-.1-10.1 6.7-7 12.1L274.3 192l-16.4 27.8c-3.2 5.4 .7 12.1 7 12.1l32.3-.3L313 259.7c3.1 5.4 10.9 5.4 13.9 0l15.9-28.1 32.3 .3c6.2 .1 10.1-6.7 7-12.1L365.7 192l16.4-27.8c3.2-5.4-.7-12.1-7-12.1l-32.3 .3L327 124.3z\"]\n};\nconst faPersonHalfDress = {\n prefix: 'fas',\n iconName: 'person-half-dress',\n icon: [320, 512, [], \"e548\", \"M160 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm8 352l0-224 6.9 0c33.7 0 64.9 17.7 82.3 46.6l58.3 97c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9L232 256.9 232 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128s0 0 0 0zM58.2 182.3c19.9-33.1 55.3-53.5 93.8-54.3l0 256s0 0 0 0l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96-17.8 0c-10.9 0-18.6-10.7-15.2-21.1L93.3 248.1 59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l53.6-89.2z\"]\n};\nconst faRoadBridge = {\n prefix: 'fas',\n iconName: 'road-bridge',\n icon: [640, 512, [], \"e563\", \"M352 0L608 0c17.7 0 32 14.3 32 32l0 448c0 17.7-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32l0-448c0-17.7 14.3-32 32-32zM480 200c-13.3 0-24 10.7-24 24l0 64c0 13.3 10.7 24 24 24s24-10.7 24-24l0-64c0-13.3-10.7-24-24-24zm24 184c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 64c0 13.3 10.7 24 24 24s24-10.7 24-24l0-64zM480 40c-13.3 0-24 10.7-24 24l0 64c0 13.3 10.7 24 24 24s24-10.7 24-24l0-64c0-13.3-10.7-24-24-24zM32 96l256 0 0 64-40 0 0 64 40 0 0 96c-53 0-96 43-96 96l0 64c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-64c0-53-43-96-96-96l0-96 72 0 0-64-40 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zm168 64l-80 0 0 64 80 0 0-64z\"]\n};\nconst faLocationArrow = {\n prefix: 'fas',\n iconName: 'location-arrow',\n icon: [448, 512, [], \"f124\", \"M429.6 92.1c4.9-11.9 2.1-25.6-7-34.7s-22.8-11.9-34.7-7l-352 144c-14.2 5.8-22.2 20.8-19.3 35.8s16.1 25.8 31.4 25.8l176 0 0 176c0 15.3 10.8 28.4 25.8 31.4s30-5.1 35.8-19.3l144-352z\"]\n};\nconst faC = {\n prefix: 'fas',\n iconName: 'c',\n icon: [384, 512, [99], \"43\", \"M329.1 142.9c-62.5-62.5-155.8-62.5-218.3 0s-62.5 163.8 0 226.3s155.8 62.5 218.3 0c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3c-87.5 87.5-221.3 87.5-308.8 0s-87.5-229.3 0-316.8s221.3-87.5 308.8 0c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0z\"]\n};\nconst faTabletButton = {\n prefix: 'fas',\n iconName: 'tablet-button',\n icon: [448, 512, [], \"f10a\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64L64 0zM224 400a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faBuildingLock = {\n prefix: 'fas',\n iconName: 'building-lock',\n icon: [576, 512, [], \"e4d6\", \"M48 0C21.5 0 0 21.5 0 48L0 464c0 26.5 21.5 48 48 48l96 0 0-80c0-26.5 21.5-48 48-48s48 21.5 48 48l0 80 88.6 0c-5.4-9.4-8.6-20.3-8.6-32l0-128c0-23.7 12.9-44.4 32-55.4l0-24.6c0-30.5 12.2-58.2 32-78.4L384 48c0-26.5-21.5-48-48-48L48 0zM64 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm112-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM80 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM272 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM464 240c17.7 0 32 14.3 32 32l0 48-64 0 0-48c0-17.7 14.3-32 32-32zm-80 32l0 48c-17.7 0-32 14.3-32 32l0 128c0 17.7 14.3 32 32 32l160 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32l0-48c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nconst faPizzaSlice = {\n prefix: 'fas',\n iconName: 'pizza-slice',\n icon: [512, 512, [], \"f818\", \"M169.7 .9c-22.8-1.6-41.9 14-47.5 34.7L110.4 80c.5 0 1.1 0 1.6 0c176.7 0 320 143.3 320 320c0 .5 0 1.1 0 1.6l44.4-11.8c20.8-5.5 36.3-24.7 34.7-47.5C498.5 159.5 352.5 13.5 169.7 .9zM399.8 410.2c.1-3.4 .2-6.8 .2-10.2c0-159.1-128.9-288-288-288c-3.4 0-6.8 .1-10.2 .2L.5 491.9c-1.5 5.5 .1 11.4 4.1 15.4s9.9 5.6 15.4 4.1L399.8 410.2zM176 208a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64 128a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM96 384a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nconst faMoneyBillWave = {\n prefix: 'fas',\n iconName: 'money-bill-wave',\n icon: [576, 512, [], \"f53a\", \"M0 112.5L0 422.3c0 18 10.1 35 27 41.3c87 32.5 174 10.3 261-11.9c79.8-20.3 159.6-40.7 239.3-18.9c23 6.3 48.7-9.5 48.7-33.4l0-309.9c0-18-10.1-35-27-41.3C462 15.9 375 38.1 288 60.3C208.2 80.6 128.4 100.9 48.7 79.1C25.6 72.8 0 88.6 0 112.5zM288 352c-44.2 0-80-43-80-96s35.8-96 80-96s80 43 80 96s-35.8 96-80 96zM64 352c35.3 0 64 28.7 64 64l-64 0 0-64zm64-208c0 35.3-28.7 64-64 64l0-64 64 0zM512 304l0 64-64 0c0-35.3 28.7-64 64-64zM448 96l64 0 0 64c-35.3 0-64-28.7-64-64z\"]\n};\nconst faChartArea = {\n prefix: 'fas',\n iconName: 'chart-area',\n icon: [512, 512, [\"area-chart\"], \"f1fe\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64L0 400c0 44.2 35.8 80 80 80l400 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L80 416c-8.8 0-16-7.2-16-16L64 64zm96 288l288 0c17.7 0 32-14.3 32-32l0-68.2c0-7.6-2.7-15-7.7-20.8l-65.8-76.8c-12.1-14.2-33.7-15-46.9-1.8l-21 21c-10 10-26.4 9.2-35.4-1.6l-39.2-47c-12.6-15.1-35.7-15.4-48.7-.6L135.9 215c-5.1 5.8-7.9 13.3-7.9 21.1l0 84c0 17.7 14.3 32 32 32z\"]\n};\nconst faAreaChart = faChartArea;\nconst faHouseFlag = {\n prefix: 'fas',\n iconName: 'house-flag',\n icon: [640, 512, [], \"e50d\", \"M480 0c-17.7 0-32 14.3-32 32l0 160 0 320 64 0 0-320 112 0c8.8 0 16-7.2 16-16l0-128c0-8.8-7.2-16-16-16L512 32c0-17.7-14.3-32-32-32zM416 159L276.8 39.7c-12-10.3-29.7-10.3-41.7 0l-224 192C1 240.4-2.7 254.5 2 267.1S18.6 288 32 288l32 0 0 192c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-96c0-17.7 14.3-32 32-32l64 0c17.7 0 32 14.3 32 32l0 96c0 17.7 14.3 32 32 32l64.7 0 .2 0-1 0 0-353z\"]\n};\nconst faPersonCircleMinus = {\n prefix: 'fas',\n iconName: 'person-circle-minus',\n icon: [576, 512, [], \"e540\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-223.1L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6l29.7 0c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9 232 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128-16 0zm136 16a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm224 0c0-8.8-7.2-16-16-16l-128 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l128 0c8.8 0 16-7.2 16-16z\"]\n};\nconst faBan = {\n prefix: 'fas',\n iconName: 'ban',\n icon: [512, 512, [128683, \"cancel\"], \"f05e\", \"M367.2 412.5L99.5 144.8C77.1 176.1 64 214.5 64 256c0 106 86 192 192 192c41.5 0 79.9-13.1 111.2-35.5zm45.3-45.3C434.9 335.9 448 297.5 448 256c0-106-86-192-192-192c-41.5 0-79.9 13.1-111.2 35.5L412.5 367.2zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"]\n};\nconst faCancel = faBan;\nconst faCameraRotate = {\n prefix: 'fas',\n iconName: 'camera-rotate',\n icon: [640, 512, [], \"e0d8\", \"M213.1 64.8L202.7 96 128 96c-35.3 0-64 28.7-64 64l0 256c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64l-74.7 0L426.9 64.8C420.4 45.2 402.1 32 381.4 32L258.6 32c-20.7 0-39 13.2-45.5 32.8zM448 256c0 8.8-7.2 16-16 16l-76.7 0c-6.2 0-11.3-5.1-11.3-11.3c0-3 1.2-5.9 3.3-8L371 229c-13.6-13.4-31.9-21-51-21c-19.2 0-37.7 7.6-51.3 21.3L249 249c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l19.7-19.7C257.4 172.7 288 160 320 160c31.8 0 62.4 12.6 85 35l23.7-23.7c2.1-2.1 5-3.3 8-3.3c6.2 0 11.3 5.1 11.3 11.3l0 76.7zM192 320c0-8.8 7.2-16 16-16l76.7 0c6.2 0 11.3 5.1 11.3 11.3c0 3-1.2 5.9-3.3 8L269 347c13.6 13.4 31.9 21 51 21c19.2 0 37.7-7.6 51.3-21.3L391 327c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-19.7 19.7C382.6 403.3 352 416 320 416c-31.8 0-62.4-12.6-85-35l-23.7 23.7c-2.1 2.1-5 3.3-8 3.3c-6.2 0-11.3-5.1-11.3-11.3l0-76.7z\"]\n};\nconst faSprayCanSparkles = {\n prefix: 'fas',\n iconName: 'spray-can-sparkles',\n icon: [512, 512, [\"air-freshener\"], \"f5d0\", \"M96 32l0 96 128 0 0-96c0-17.7-14.3-32-32-32L128 0C110.3 0 96 14.3 96 32zm0 128c-53 0-96 43-96 96L0 464c0 26.5 21.5 48 48 48l224 0c26.5 0 48-21.5 48-48l0-208c0-53-43-96-96-96L96 160zm64 96a80 80 0 1 1 0 160 80 80 0 1 1 0-160zM384 48c0-1.4-1-3-2.2-3.6L352 32 339.6 2.2C339 1 337.4 0 336 0s-3 1-3.6 2.2L320 32 290.2 44.4C289 45 288 46.6 288 48c0 1.4 1 3 2.2 3.6L320 64l12.4 29.8C333 95 334.6 96 336 96s3-1 3.6-2.2L352 64l29.8-12.4C383 51 384 49.4 384 48zm76.4 45.8C461 95 462.6 96 464 96s3-1 3.6-2.2L480 64l29.8-12.4C511 51 512 49.4 512 48c0-1.4-1-3-2.2-3.6L480 32 467.6 2.2C467 1 465.4 0 464 0s-3 1-3.6 2.2L448 32 418.2 44.4C417 45 416 46.6 416 48c0 1.4 1 3 2.2 3.6L448 64l12.4 29.8zm7.2 100.4c-.6-1.2-2.2-2.2-3.6-2.2s-3 1-3.6 2.2L448 224l-29.8 12.4c-1.2 .6-2.2 2.2-2.2 3.6c0 1.4 1 3 2.2 3.6L448 256l12.4 29.8c.6 1.2 2.2 2.2 3.6 2.2s3-1 3.6-2.2L480 256l29.8-12.4c1.2-.6 2.2-2.2 2.2-3.6c0-1.4-1-3-2.2-3.6L480 224l-12.4-29.8zM448 144c0-1.4-1-3-2.2-3.6L416 128 403.6 98.2C403 97 401.4 96 400 96s-3 1-3.6 2.2L384 128l-29.8 12.4c-1.2 .6-2.2 2.2-2.2 3.6c0 1.4 1 3 2.2 3.6L384 160l12.4 29.8c.6 1.2 2.2 2.2 3.6 2.2s3-1 3.6-2.2L416 160l29.8-12.4c1.2-.6 2.2-2.2 2.2-3.6z\"]\n};\nconst faAirFreshener = faSprayCanSparkles;\nconst faStar = {\n prefix: 'fas',\n iconName: 'star',\n icon: [576, 512, [11088, 61446], \"f005\", \"M316.9 18C311.6 7 300.4 0 288.1 0s-23.4 7-28.8 18L195 150.3 51.4 171.5c-12 1.8-22 10.2-25.7 21.7s-.7 24.2 7.9 32.7L137.8 329 113.2 474.7c-2 12 3 24.2 12.9 31.3s23 8 33.8 2.3l128.3-68.5 128.3 68.5c10.8 5.7 23.9 4.9 33.8-2.3s14.9-19.3 12.9-31.3L438.5 329 542.7 225.9c8.6-8.5 11.7-21.2 7.9-32.7s-13.7-19.9-25.7-21.7L381.2 150.3 316.9 18z\"]\n};\nconst faRepeat = {\n prefix: 'fas',\n iconName: 'repeat',\n icon: [512, 512, [128257], \"f363\", \"M0 224c0 17.7 14.3 32 32 32s32-14.3 32-32c0-53 43-96 96-96l160 0 0 32c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-9.2-9.2-22.9-11.9-34.9-6.9S320 19.1 320 32l0 32L160 64C71.6 64 0 135.6 0 224zm512 64c0-17.7-14.3-32-32-32s-32 14.3-32 32c0 53-43 96-96 96l-160 0 0-32c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9l-64 64c-12.5 12.5-12.5 32.8 0 45.3l64 64c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6l0-32 160 0c88.4 0 160-71.6 160-160z\"]\n};\nconst faCross = {\n prefix: 'fas',\n iconName: 'cross',\n icon: [384, 512, [128327, 10013], \"f654\", \"M176 0c-26.5 0-48 21.5-48 48l0 80-80 0c-26.5 0-48 21.5-48 48l0 32c0 26.5 21.5 48 48 48l80 0 0 208c0 26.5 21.5 48 48 48l32 0c26.5 0 48-21.5 48-48l0-208 80 0c26.5 0 48-21.5 48-48l0-32c0-26.5-21.5-48-48-48l-80 0 0-80c0-26.5-21.5-48-48-48L176 0z\"]\n};\nconst faBox = {\n prefix: 'fas',\n iconName: 'box',\n icon: [448, 512, [128230], \"f466\", \"M50.7 58.5L0 160l208 0 0-128L93.7 32C75.5 32 58.9 42.3 50.7 58.5zM240 160l208 0L397.3 58.5C389.1 42.3 372.5 32 354.3 32L240 32l0 128zm208 32L0 192 0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-224z\"]\n};\nconst faVenusMars = {\n prefix: 'fas',\n iconName: 'venus-mars',\n icon: [640, 512, [9892], \"f228\", \"M176 288a112 112 0 1 0 0-224 112 112 0 1 0 0 224zM352 176c0 86.3-62.1 158.1-144 173.1l0 34.9 32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0 0-34.9C62.1 334.1 0 262.3 0 176C0 78.8 78.8 0 176 0s176 78.8 176 176zM271.9 360.6c19.3-10.1 36.9-23.1 52.1-38.4c20 18.5 46.7 29.8 76.1 29.8c61.9 0 112-50.1 112-112s-50.1-112-112-112c-7.2 0-14.3 .7-21.1 2c-4.9-21.5-13-41.7-24-60.2C369.3 66 384.4 64 400 64c37 0 71.4 11.4 99.8 31l20.6-20.6L487 41c-6.9-6.9-8.9-17.2-5.2-26.2S494.3 0 504 0L616 0c13.3 0 24 10.7 24 24l0 112c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-33.4-33.4L545 140.2c19.5 28.4 31 62.7 31 99.8c0 97.2-78.8 176-176 176c-50.5 0-96-21.3-128.1-55.4z\"]\n};\nconst faArrowPointer = {\n prefix: 'fas',\n iconName: 'arrow-pointer',\n icon: [320, 512, [\"mouse-pointer\"], \"f245\", \"M0 55.2L0 426c0 12.2 9.9 22 22 22c6.3 0 12.4-2.7 16.6-7.5L121.2 346l58.1 116.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9L179.8 320l118.1 0c12.2 0 22.1-9.9 22.1-22.1c0-6.3-2.7-12.3-7.4-16.5L38.6 37.9C34.3 34.1 28.9 32 23.2 32C10.4 32 0 42.4 0 55.2z\"]\n};\nconst faMousePointer = faArrowPointer;\nconst faMaximize = {\n prefix: 'fas',\n iconName: 'maximize',\n icon: [512, 512, [\"expand-arrows-alt\"], \"f31e\", \"M200 32L56 32C42.7 32 32 42.7 32 56l0 144c0 9.7 5.8 18.5 14.8 22.2s19.3 1.7 26.2-5.2l40-40 79 79-79 79L73 295c-6.9-6.9-17.2-8.9-26.2-5.2S32 302.3 32 312l0 144c0 13.3 10.7 24 24 24l144 0c9.7 0 18.5-5.8 22.2-14.8s1.7-19.3-5.2-26.2l-40-40 79-79 79 79-40 40c-6.9 6.9-8.9 17.2-5.2 26.2s12.5 14.8 22.2 14.8l144 0c13.3 0 24-10.7 24-24l0-144c0-9.7-5.8-18.5-14.8-22.2s-19.3-1.7-26.2 5.2l-40 40-79-79 79-79 40 40c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2l0-144c0-13.3-10.7-24-24-24L312 32c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l40 40-79 79-79-79 40-40c6.9-6.9 8.9-17.2 5.2-26.2S209.7 32 200 32z\"]\n};\nconst faExpandArrowsAlt = faMaximize;\nconst faChargingStation = {\n prefix: 'fas',\n iconName: 'charging-station',\n icon: [576, 512, [], \"f5e7\", \"M96 0C60.7 0 32 28.7 32 64l0 384c-17.7 0-32 14.3-32 32s14.3 32 32 32l288 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-144 16 0c22.1 0 40 17.9 40 40l0 32c0 39.8 32.2 72 72 72s72-32.2 72-72l0-123.7c32.5-10.2 56-40.5 56-76.3l0-32c0-8.8-7.2-16-16-16l-16 0 0-48c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 48-32 0 0-48c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 48-16 0c-8.8 0-16 7.2-16 16l0 32c0 35.8 23.5 66.1 56 76.3L472 376c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-32c0-48.6-39.4-88-88-88l-16 0 0-192c0-35.3-28.7-64-64-64L96 0zM216.9 82.7c6 4 8.5 11.5 6.3 18.3l-25 74.9 57.8 0c6.7 0 12.7 4.2 15 10.4s.5 13.3-4.6 17.7l-112 96c-5.5 4.7-13.4 5.1-19.3 1.1s-8.5-11.5-6.3-18.3l25-74.9L96 208c-6.7 0-12.7-4.2-15-10.4s-.5-13.3 4.6-17.7l112-96c5.5-4.7 13.4-5.1 19.3-1.1z\"]\n};\nconst faShapes = {\n prefix: 'fas',\n iconName: 'shapes',\n icon: [512, 512, [\"triangle-circle-square\"], \"f61f\", \"M315.4 15.5C309.7 5.9 299.2 0 288 0s-21.7 5.9-27.4 15.5l-96 160c-5.9 9.9-6.1 22.2-.4 32.2s16.3 16.2 27.8 16.2l192 0c11.5 0 22.2-6.2 27.8-16.2s5.5-22.3-.4-32.2l-96-160zM288 312l0 144c0 22.1 17.9 40 40 40l144 0c22.1 0 40-17.9 40-40l0-144c0-22.1-17.9-40-40-40l-144 0c-22.1 0-40 17.9-40 40zM128 512a128 128 0 1 0 0-256 128 128 0 1 0 0 256z\"]\n};\nconst faTriangleCircleSquare = faShapes;\nconst faShuffle = {\n prefix: 'fas',\n iconName: 'shuffle',\n icon: [512, 512, [128256, \"random\"], \"f074\", \"M403.8 34.4c12-5 25.7-2.2 34.9 6.9l64 64c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-64 64c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6l0-32-32 0c-10.1 0-19.6 4.7-25.6 12.8L284 229.3 244 176l31.2-41.6C293.3 110.2 321.8 96 352 96l32 0 0-32c0-12.9 7.8-24.6 19.8-29.6zM164 282.7L204 336l-31.2 41.6C154.7 401.8 126.2 416 96 416l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0c10.1 0 19.6-4.7 25.6-12.8L164 282.7zm274.6 188c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6l0-32-32 0c-30.2 0-58.7-14.2-76.8-38.4L121.6 172.8c-6-8.1-15.5-12.8-25.6-12.8l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0c30.2 0 58.7 14.2 76.8 38.4L326.4 339.2c6 8.1 15.5 12.8 25.6 12.8l32 0 0-32c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l64 64c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-64 64z\"]\n};\nconst faRandom = faShuffle;\nconst faPersonRunning = {\n prefix: 'fas',\n iconName: 'person-running',\n icon: [448, 512, [127939, \"running\"], \"f70c\", \"M320 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM125.7 175.5c9.9-9.9 23.4-15.5 37.5-15.5c1.9 0 3.8 .1 5.6 .3L137.6 254c-9.3 28 1.7 58.8 26.8 74.5l86.2 53.9-25.4 88.8c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l28.7-100.4c5.9-20.6-2.6-42.6-20.7-53.9L238 299l30.9-82.4 5.1 12.3C289 264.7 323.9 288 362.7 288l21.3 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-21.3 0c-12.9 0-24.6-7.8-29.5-19.7l-6.3-15c-14.6-35.1-44.1-61.9-80.5-73.1l-48.7-15c-11.1-3.4-22.7-5.2-34.4-5.2c-31 0-60.8 12.3-82.7 34.3L57.4 153.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l23.1-23.1zM91.2 352L32 352c-17.7 0-32 14.3-32 32s14.3 32 32 32l69.6 0c19 0 36.2-11.2 43.9-28.5L157 361.6l-9.5-6c-17.5-10.9-30.5-26.8-37.9-44.9L91.2 352z\"]\n};\nconst faRunning = faPersonRunning;\nconst faMobileRetro = {\n prefix: 'fas',\n iconName: 'mobile-retro',\n icon: [320, 512, [], \"e527\", \"M0 64C0 28.7 28.7 0 64 0L256 0c35.3 0 64 28.7 64 64l0 384c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zm64 96l0 64c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32L96 128c-17.7 0-32 14.3-32 32zM80 352a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm24 56a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm56-56a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm24 56a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm56-56a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm24 56a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM128 48c-8.8 0-16 7.2-16 16s7.2 16 16 16l64 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-64 0z\"]\n};\nconst faGripLinesVertical = {\n prefix: 'fas',\n iconName: 'grip-lines-vertical',\n icon: [192, 512, [], \"f7a5\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64L0 448c0 17.7 14.3 32 32 32s32-14.3 32-32L64 64zm128 0c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 384c0 17.7 14.3 32 32 32s32-14.3 32-32l0-384z\"]\n};\nconst faSpider = {\n prefix: 'fas',\n iconName: 'spider',\n icon: [512, 512, [128375], \"f717\", \"M158.4 32.6c4.8-12.4-1.4-26.3-13.8-31s-26.3 1.4-31 13.8L81.1 100c-7.9 20.7-3 44.1 12.7 59.7l57.4 57.4L70.8 190.3c-2.4-.8-4.3-2.7-5.1-5.1L46.8 128.4C42.6 115.8 29 109 16.4 113.2S-3 131 1.2 143.6l18.9 56.8c5.6 16.7 18.7 29.8 35.4 35.4L116.1 256 55.6 276.2c-16.7 5.6-29.8 18.7-35.4 35.4L1.2 368.4C-3 381 3.8 394.6 16.4 398.8s26.2-2.6 30.4-15.2l18.9-56.8c.8-2.4 2.7-4.3 5.1-5.1l80.4-26.8L93.7 352.3C78.1 368 73.1 391.4 81.1 412l32.5 84.6c4.8 12.4 18.6 18.5 31 13.8s18.5-18.6 13.8-31l-32.5-84.6c-1.1-3-.4-6.3 1.8-8.5L160 353.9c1 52.1 43.6 94.1 96 94.1s95-41.9 96-94.1l32.3 32.3c2.2 2.2 2.9 5.6 1.8 8.5l-32.5 84.6c-4.8 12.4 1.4 26.3 13.8 31s26.3-1.4 31-13.8L430.9 412c7.9-20.7 3-44.1-12.7-59.7l-57.4-57.4 80.4 26.8c2.4 .8 4.3 2.7 5.1 5.1l18.9 56.8c4.2 12.6 17.8 19.4 30.4 15.2s19.4-17.8 15.2-30.4l-18.9-56.8c-5.6-16.7-18.7-29.8-35.4-35.4L395.9 256l60.5-20.2c16.7-5.6 29.8-18.7 35.4-35.4l18.9-56.8c4.2-12.6-2.6-26.2-15.2-30.4s-26.2 2.6-30.4 15.2l-18.9 56.8c-.8 2.4-2.7 4.3-5.1 5.1l-80.4 26.8 57.4-57.4c15.6-15.6 20.6-39 12.7-59.7L398.4 15.4C393.6 3 379.8-3.2 367.4 1.6s-18.5 18.6-13.8 31l32.5 84.6c1.1 3 .4 6.3-1.8 8.5L336 174.1l0-14.1c0-31.8-18.6-59.3-45.5-72.2c-9.1-4.4-18.5 3.3-18.5 13.4l0 10.8c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-10.8c0-10.1-9.4-17.7-18.5-13.4C194.6 100.7 176 128.2 176 160l0 14.1-48.3-48.3c-2.2-2.2-2.9-5.6-1.8-8.5l32.5-84.6z\"]\n};\nconst faHandsBound = {\n prefix: 'fas',\n iconName: 'hands-bound',\n icon: [640, 512, [], \"e4f9\", \"M96 32C96 14.3 81.7 0 64 0S32 14.3 32 32l0 64 0 59.1 0 .7L32 192l0 21.9c0 14.2 5.1 27.9 14.3 38.7L131.6 352l-3.6 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l32 0 128 0 64 0 128 0 32 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-3.6 0 85.3-99.5c9.2-10.8 14.3-24.5 14.3-38.7l0-21.9 0-36.2 0-.7L608 96l0-64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64 0 48.8-69.3 92.4c-5.7 7.6-16.1 9.6-24.2 4.8c-9.7-5.7-12.1-18.7-5.1-27.5L473 180c10.8-13.5 8.9-33.3-4.4-44.5s-33-9.8-44.5 3.2l-46.7 52.5C361 209.7 352 233.4 352 258.1l0 61.9 0 32-64 0 0-32 0-61.9c0-24.6-9-48.4-25.4-66.8l-46.7-52.5c-11.5-13-31.3-14.4-44.5-3.2s-15.2 30.9-4.4 44.5l27.6 34.5c7 8.8 4.7 21.8-5.1 27.5c-8.1 4.8-18.6 2.7-24.2-4.8L96 144.8 96 96l0-64zm64 448l0 32 128 0 0-32 64 0 0 32 128 0 0-32 32 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-32 0-128 0-64 0-128 0-32 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l32 0z\"]\n};\nconst faFileInvoiceDollar = {\n prefix: 'fas',\n iconName: 'file-invoice-dollar',\n icon: [384, 512, [], \"f571\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM64 80c0-8.8 7.2-16 16-16l64 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L80 96c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16l64 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-64 0c-8.8 0-16-7.2-16-16zm128 72c8.8 0 16 7.2 16 16l0 17.3c8.5 1.2 16.7 3.1 24.1 5.1c8.5 2.3 13.6 11 11.3 19.6s-11 13.6-19.6 11.3c-11.1-3-22-5.2-32.1-5.3c-8.4-.1-17.4 1.8-23.6 5.5c-5.7 3.4-8.1 7.3-8.1 12.8c0 3.7 1.3 6.5 7.3 10.1c6.9 4.1 16.6 7.1 29.2 10.9l.5 .1s0 0 0 0s0 0 0 0c11.3 3.4 25.3 7.6 36.3 14.6c12.1 7.6 22.4 19.7 22.7 38.2c.3 19.3-9.6 33.3-22.9 41.6c-7.7 4.8-16.4 7.6-25.1 9.1l0 17.1c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-17.8c-11.2-2.1-21.7-5.7-30.9-8.9c0 0 0 0 0 0c-2.1-.7-4.2-1.4-6.2-2.1c-8.4-2.8-12.9-11.9-10.1-20.2s11.9-12.9 20.2-10.1c2.5 .8 4.8 1.6 7.1 2.4c0 0 0 0 0 0s0 0 0 0s0 0 0 0c13.6 4.6 24.6 8.4 36.3 8.7c9.1 .3 17.9-1.7 23.7-5.3c5.1-3.2 7.9-7.3 7.8-14c-.1-4.6-1.8-7.8-7.7-11.6c-6.8-4.3-16.5-7.4-29-11.2l-1.6-.5s0 0 0 0c-11-3.3-24.3-7.3-34.8-13.7c-12-7.2-22.6-18.9-22.7-37.3c-.1-19.4 10.8-32.8 23.8-40.5c7.5-4.4 15.8-7.2 24.1-8.7l0-17.3c0-8.8 7.2-16 16-16z\"]\n};\nconst faPlaneCircleExclamation = {\n prefix: 'fas',\n iconName: 'plane-circle-exclamation',\n icon: [640, 512, [], \"e556\", \"M256 0c-35 0-64 59.5-64 93.7l0 84.6L8.1 283.4c-5 2.8-8.1 8.2-8.1 13.9l0 65.5c0 10.6 10.2 18.3 20.4 15.4l171.6-49 0 70.9-57.6 43.2c-4 3-6.4 7.8-6.4 12.8l0 42c0 7.8 6.3 14 14 14c1.3 0 2.6-.2 3.9-.5L256 480l110.1 31.5c1.3 .4 2.6 .5 3.9 .5c6 0 11.1-3.7 13.1-9C344.5 470.7 320 422.2 320 368c0-60.6 30.6-114 77.1-145.6L320 178.3l0-84.6C320 59.5 292 0 256 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16z\"]\n};\nconst faXRay = {\n prefix: 'fas',\n iconName: 'x-ray',\n icon: [512, 512, [], \"f497\", \"M0 64C0 46.3 14.3 32 32 32l448 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 320c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32L32 96C14.3 96 0 81.7 0 64zM256 96c-8.8 0-16 7.2-16 16l0 32-80 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l80 0 0 48-112 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l112 0 0 70.6L189.1 307c-5.2-2-10.6-3-16.2-3l-2.1 0c-23.6 0-42.8 19.2-42.8 42.8c0 9.6 3.2 18.9 9.1 26.4l18.2 23.2c9.7 12.4 24.6 19.6 40.3 19.6l120.8 0c15.7 0 30.6-7.2 40.3-19.6l18.2-23.2c5.9-7.5 9.1-16.8 9.1-26.4c0-23.6-19.2-42.8-42.8-42.8l-2.2 0c-5.5 0-11 1-16.2 3L272 326.6l0-70.6 112 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-112 0 0-48 80 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-80 0 0-32c0-8.8-7.2-16-16-16zM208 352a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm80 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nconst faSpellCheck = {\n prefix: 'fas',\n iconName: 'spell-check',\n icon: [576, 512, [], \"f891\", \"M112 0C99.1 0 87.4 7.8 82.5 19.7l-66.7 160-13.3 32c-6.8 16.3 .9 35 17.2 41.8s35-.9 41.8-17.2L66.7 224l90.7 0 5.1 12.3c6.8 16.3 25.5 24 41.8 17.2s24-25.5 17.2-41.8l-13.3-32-66.7-160C136.6 7.8 124.9 0 112 0zm18.7 160l-37.3 0L112 115.2 130.7 160zM256 32l0 96 0 96c0 17.7 14.3 32 32 32l80 0c44.2 0 80-35.8 80-80c0-23.1-9.8-43.8-25.4-58.4c6-11.2 9.4-24 9.4-37.6c0-44.2-35.8-80-80-80L288 0c-17.7 0-32 14.3-32 32zm96 64l-32 0 0-32 32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16zm-32 64l32 0 16 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-48 0 0-32zM566.6 310.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L352 434.7l-73.4-73.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l192-192z\"]\n};\nconst faSlash = {\n prefix: 'fas',\n iconName: 'slash',\n icon: [640, 512, [], \"f715\", \"M5.1 9.2C13.3-1.2 28.4-3.1 38.8 5.1l592 464c10.4 8.2 12.3 23.3 4.1 33.7s-23.3 12.3-33.7 4.1L9.2 42.9C-1.2 34.7-3.1 19.6 5.1 9.2z\"]\n};\nconst faComputerMouse = {\n prefix: 'fas',\n iconName: 'computer-mouse',\n icon: [384, 512, [128433, \"mouse\"], \"f8cc\", \"M0 192l176 0L176 0 160 0C71.6 0 0 71.6 0 160l0 32zm0 32L0 352c0 88.4 71.6 160 160 160l64 0c88.4 0 160-71.6 160-160l0-128-192 0L0 224zm384-32l0-32C384 71.6 312.4 0 224 0L208 0l0 192 176 0z\"]\n};\nconst faMouse = faComputerMouse;\nconst faArrowRightToBracket = {\n prefix: 'fas',\n iconName: 'arrow-right-to-bracket',\n icon: [512, 512, [\"sign-in\"], \"f090\", \"M352 96l64 0c17.7 0 32 14.3 32 32l0 256c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c53 0 96-43 96-96l0-256c0-53-43-96-96-96l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32zm-9.4 182.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L242.7 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l210.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128z\"]\n};\nconst faSignIn = faArrowRightToBracket;\nconst faShopSlash = {\n prefix: 'fas',\n iconName: 'shop-slash',\n icon: [640, 512, [\"store-alt-slash\"], \"e070\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-54.8-43L576 224l-64 0 0 152L384 275.7l0-51.7-64 0 0 1.5L277.2 192l325.9 0c20.3 0 36.8-16.5 36.8-36.8c0-7.3-2.2-14.4-6.2-20.4L558.2 21.4C549.3 8 534.4 0 518.3 0L121.7 0c-16 0-31 8-39.9 21.4L74.1 32.8 38.8 5.1zM36.8 192l85 0L21 112.5 6.2 134.7c-4 6.1-6.2 13.2-6.2 20.4C0 175.5 16.5 192 36.8 192zM320 384l-192 0 0-160-64 0 0 160 0 80c0 26.5 21.5 48 48 48l224 0c26.5 0 48-21.5 48-48l0-65.5-64-50.4 0 35.9z\"]\n};\nconst faStoreAltSlash = faShopSlash;\nconst faServer = {\n prefix: 'fas',\n iconName: 'server',\n icon: [512, 512, [], \"f233\", \"M64 32C28.7 32 0 60.7 0 96l0 64c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-64c0-35.3-28.7-64-64-64L64 32zm280 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm48 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM64 288c-35.3 0-64 28.7-64 64l0 64c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-64c0-35.3-28.7-64-64-64L64 288zm280 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm56 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nconst faVirusCovidSlash = {\n prefix: 'fas',\n iconName: 'virus-covid-slash',\n icon: [640, 512, [], \"e4a9\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L472.1 344.7c11.4-19.5 19.1-41.4 22.3-64.7l33.6 0 0 16c0 13.3 10.7 24 24 24s24-10.7 24-24l0-80c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 16-33.6 0c-4.2-30.7-16.3-58.8-34.1-82.3L484 125.9l11.3 11.3c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L472.7 46.7c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9L450.1 92l-23.8 23.8C402.8 97.9 374.7 85.8 344 81.6L344 48l16 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L280 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l16 0 0 33.6c-30.7 4.2-58.8 16.3-82.3 34.1L189.9 92l11.3-11.3c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L134.1 79.8 38.8 5.1zM149.2 213.5c-1.5 6-2.7 12.2-3.5 18.5L112 232l0-16c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 80c0 13.3 10.7 24 24 24s24-10.7 24-24l0-16 33.6 0c4.2 30.7 16.3 58.8 34.1 82.3L156 386.1l-11.3-11.3c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l56.6 56.6c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L189.9 420l23.8-23.8c23.5 17.9 51.7 29.9 82.3 34.1l0 33.6-16 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l80 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-16 0 0-33.6c20.4-2.8 39.7-9.1 57.3-18.2L149.2 213.5z\"]\n};\nconst faShopLock = {\n prefix: 'fas',\n iconName: 'shop-lock',\n icon: [640, 512, [], \"e4a5\", \"M36.8 192l412.8 0c20.2-19.8 47.9-32 78.4-32c30.5 0 58.1 12.2 78.3 31.9c18.9-1.6 33.7-17.4 33.7-36.7c0-7.3-2.2-14.4-6.2-20.4L558.2 21.4C549.3 8 534.4 0 518.3 0L121.7 0c-16 0-31 8-39.9 21.4L6.2 134.7c-4 6.1-6.2 13.2-6.2 20.4C0 175.5 16.5 192 36.8 192zM384 224l-64 0 0 160-192 0 0-160-64 0 0 160 0 80c0 26.5 21.5 48 48 48l224 0c26.5 0 48-21.5 48-48l0-80 0-32 0-128zm144 16c17.7 0 32 14.3 32 32l0 48-64 0 0-48c0-17.7 14.3-32 32-32zm-80 32l0 48c-17.7 0-32 14.3-32 32l0 128c0 17.7 14.3 32 32 32l160 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32l0-48c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nconst faHourglassStart = {\n prefix: 'fas',\n iconName: 'hourglass-start',\n icon: [384, 512, [\"hourglass-1\"], \"f251\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64l0 11c0 42.4 16.9 83.1 46.9 113.1L146.7 256 78.9 323.9C48.9 353.9 32 394.6 32 437l0 11c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 256 0 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-11c0-42.4-16.9-83.1-46.9-113.1L237.3 256l67.9-67.9c30-30 46.9-70.7 46.9-113.1l0-11c17.7 0 32-14.3 32-32s-14.3-32-32-32L320 0 64 0 32 0zM288 437l0 11L96 448l0-11c0-25.5 10.1-49.9 28.1-67.9L192 301.3l67.9 67.9c18 18 28.1 42.4 28.1 67.9z\"]\n};\nconst faHourglass1 = faHourglassStart;\nconst faBlenderPhone = {\n prefix: 'fas',\n iconName: 'blender-phone',\n icon: [576, 512, [], \"f6b6\", \"M224 352L196.8 52.3C194.2 24.2 216.3 0 244.6 0L534.1 0c21.1 0 36.4 20.1 30.9 40.4L558.5 64 400 64c-8.8 0-16 7.2-16 16s7.2 16 16 16l149.8 0-17.5 64L400 160c-8.8 0-16 7.2-16 16s7.2 16 16 16l123.6 0-17.5 64L400 256c-8.8 0-16 7.2-16 16s7.2 16 16 16l97.5 0L480 352l-256 0zm-16 32l288 0c26.5 0 48 21.5 48 48l0 32c0 26.5-21.5 48-48 48l-288 0c-26.5 0-48-21.5-48-48l0-32c0-26.5 21.5-48 48-48zm144 96a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM147.5 30.7c10.8 6.7 15.3 21 10.6 33.4l-22 57.8c-4.2 10.9-14.5 17.6-25.3 16.4l-33.3-3.6c-13.6 42.2-13.6 88.4 0 130.7l33.3-3.6c10.9-1.2 21.2 5.5 25.3 16.4l22 57.8c4.7 12.4 .2 26.7-10.6 33.4l-44 27.2c-9.7 6-21.9 4.2-29.8-4.3C-24.6 286-24.6 114 73.7 7.8C81.6-.7 93.8-2.5 103.5 3.5l44 27.2z\"]\n};\nconst faBuildingWheat = {\n prefix: 'fas',\n iconName: 'building-wheat',\n icon: [640, 512, [], \"e4db\", \"M0 48C0 21.5 21.5 0 48 0L336 0c26.5 0 48 21.5 48 48l0 416c0 26.5-21.5 48-48 48l-96 0 0-80c0-26.5-21.5-48-48-48s-48 21.5-48 48l0 80-96 0c-26.5 0-48-21.5-48-48L0 48zM80 224c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm80 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm112-16c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM64 112l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16L80 96c-8.8 0-16 7.2-16 16zM176 96c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm80 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm384 80l0 16c0 44.2-35.8 80-80 80l-16 0 0-16c0-44.2 35.8-80 80-80l16 0zm0 128c0 44.2-35.8 80-80 80l-16 0 0-16c0-44.2 35.8-80 80-80l16 0 0 16zm0 112c0 44.2-35.8 80-80 80l-16 0 0-16c0-44.2 35.8-80 80-80l16 0 0 16zM512 496l0 16-16 0c-44.2 0-80-35.8-80-80l0-16 16 0c44.2 0 80 35.8 80 80zm0-96l-16 0c-44.2 0-80-35.8-80-80l0-16 16 0c44.2 0 80 35.8 80 80l0 16zm0-128l0 16-16 0c-44.2 0-80-35.8-80-80l0-16 16 0c44.2 0 80 35.8 80 80zM528 32c13.3 0 24 10.7 24 24l0 104c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-104c0-13.3 10.7-24 24-24zm96 64l0 32c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-32c0-13.3 10.7-24 24-24s24 10.7 24 24zM456 72c13.3 0 24 10.7 24 24l0 32c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-32c0-13.3 10.7-24 24-24z\"]\n};\nconst faPersonBreastfeeding = {\n prefix: 'fas',\n iconName: 'person-breastfeeding',\n icon: [448, 512, [], \"e53a\", \"M224 0a80 80 0 1 1 0 160A80 80 0 1 1 224 0zM436.8 382.8L373.5 462c-16.6 20.7-46.8 24.1-67.5 7.5c-17.6-14.1-22.7-38.1-13.5-57.7l-.8-.1c-38.9-5.6-74.3-25.1-99.7-54.8l0-36.8c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 48c0 .8 0 1.6 .1 2.4l101.4 50.7c23.7 11.9 33.3 40.7 21.5 64.4s-40.7 33.3-64.4 21.5L27.2 427.3c-1.1-.5-2.2-1.1-3.3-1.7c-4.9-2.8-9.2-6.4-12.6-10.6c-4.6-5.4-7.8-11.7-9.6-18.4c-3.3-12-1.9-25.2 4.8-36.6c.6-1.1 1.3-2.2 2-3.2L75.6 256.1c26.7-40.1 71.7-64.1 119.8-64.1l75.2 0c46.5 0 90.1 22.5 117.2 60.3l50.7 70.9c2.2 3 4 6.1 5.5 9.4c2.9 6.7 4.3 13.8 4 20.8c-.3 10.6-4.2 21-11.2 29.4zM320 332a44 44 0 1 0 -88 0 44 44 0 1 0 88 0z\"]\n};\nconst faRightToBracket = {\n prefix: 'fas',\n iconName: 'right-to-bracket',\n icon: [512, 512, [\"sign-in-alt\"], \"f2f6\", \"M217.9 105.9L340.7 228.7c7.2 7.2 11.3 17.1 11.3 27.3s-4.1 20.1-11.3 27.3L217.9 406.1c-6.4 6.4-15 9.9-24 9.9c-18.7 0-33.9-15.2-33.9-33.9l0-62.1L32 320c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l128 0 0-62.1c0-18.7 15.2-33.9 33.9-33.9c9 0 17.6 3.6 24 9.9zM352 416l64 0c17.7 0 32-14.3 32-32l0-256c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0c53 0 96 43 96 96l0 256c0 53-43 96-96 96l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faSignInAlt = faRightToBracket;\nconst faVenus = {\n prefix: 'fas',\n iconName: 'venus',\n icon: [384, 512, [9792], \"f221\", \"M80 176a112 112 0 1 1 224 0A112 112 0 1 1 80 176zM224 349.1c81.9-15 144-86.8 144-173.1C368 78.8 289.2 0 192 0S16 78.8 16 176c0 86.3 62.1 158.1 144 173.1l0 34.9-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-34.9z\"]\n};\nconst faPassport = {\n prefix: 'fas',\n iconName: 'passport',\n icon: [448, 512, [], \"f5ab\", \"M0 64C0 28.7 28.7 0 64 0L384 0c35.3 0 64 28.7 64 64l0 384c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zM183 278.8c-27.9-13.2-48.4-39.4-53.7-70.8l39.1 0c1.6 30.4 7.7 53.8 14.6 70.8zm41.3 9.2l-.3 0-.3 0c-2.4-3.5-5.7-8.9-9.1-16.5c-6-13.6-12.4-34.3-14.2-63.5l47.1 0c-1.8 29.2-8.1 49.9-14.2 63.5c-3.4 7.6-6.7 13-9.1 16.5zm40.7-9.2c6.8-17.1 12.9-40.4 14.6-70.8l39.1 0c-5.3 31.4-25.8 57.6-53.7 70.8zM279.6 176c-1.6-30.4-7.7-53.8-14.6-70.8c27.9 13.2 48.4 39.4 53.7 70.8l-39.1 0zM223.7 96l.3 0 .3 0c2.4 3.5 5.7 8.9 9.1 16.5c6 13.6 12.4 34.3 14.2 63.5l-47.1 0c1.8-29.2 8.1-49.9 14.2-63.5c3.4-7.6 6.7-13 9.1-16.5zM183 105.2c-6.8 17.1-12.9 40.4-14.6 70.8l-39.1 0c5.3-31.4 25.8-57.6 53.7-70.8zM352 192A128 128 0 1 0 96 192a128 128 0 1 0 256 0zM112 384c-8.8 0-16 7.2-16 16s7.2 16 16 16l224 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-224 0z\"]\n};\nconst faThumbtackSlash = {\n prefix: 'fas',\n iconName: 'thumbtack-slash',\n icon: [640, 512, [\"thumb-tack-slash\"], \"e68f\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L481.4 352c9.8-.4 18.9-5.3 24.6-13.3c6-8.3 7.7-19.1 4.4-28.8l-1-3c-13.8-41.5-42.8-74.8-79.5-94.7L418.5 64 448 64c17.7 0 32-14.3 32-32s-14.3-32-32-32L192 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l29.5 0-6.1 79.5L38.8 5.1zM324.9 352L177.1 235.6c-20.9 18.9-37.2 43.3-46.5 71.3l-1 3c-3.3 9.8-1.6 20.5 4.4 28.8s15.7 13.3 26 13.3l164.9 0zM288 384l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96-64 0z\"]\n};\nconst faThumbTackSlash = faThumbtackSlash;\nconst faHeartPulse = {\n prefix: 'fas',\n iconName: 'heart-pulse',\n icon: [512, 512, [\"heartbeat\"], \"f21e\", \"M228.3 469.1L47.6 300.4c-4.2-3.9-8.2-8.1-11.9-12.4l87 0c22.6 0 43-13.6 51.7-34.5l10.5-25.2 49.3 109.5c3.8 8.5 12.1 14 21.4 14.1s17.8-5 22-13.3L320 253.7l1.7 3.4c9.5 19 28.9 31 50.1 31l104.5 0c-3.7 4.3-7.7 8.5-11.9 12.4L283.7 469.1c-7.5 7-17.4 10.9-27.7 10.9s-20.2-3.9-27.7-10.9zM503.7 240l-132 0c-3 0-5.8-1.7-7.2-4.4l-23.2-46.3c-4.1-8.1-12.4-13.3-21.5-13.3s-17.4 5.1-21.5 13.3l-41.4 82.8L205.9 158.2c-3.9-8.7-12.7-14.3-22.2-14.1s-18.1 5.9-21.8 14.8l-31.8 76.3c-1.2 3-4.2 4.9-7.4 4.9L16 240c-2.6 0-5 .4-7.3 1.1C3 225.2 0 208.2 0 190.9l0-5.8c0-69.9 50.5-129.5 119.4-141C165 36.5 211.4 51.4 244 84l12 12 12-12c32.6-32.6 79-47.5 124.6-39.9C461.5 55.6 512 115.2 512 185.1l0 5.8c0 16.9-2.8 33.5-8.3 49.1z\"]\n};\nconst faHeartbeat = faHeartPulse;\nconst faPeopleCarryBox = {\n prefix: 'fas',\n iconName: 'people-carry-box',\n icon: [640, 512, [\"people-carry\"], \"f4ce\", \"M80 48a48 48 0 1 1 96 0A48 48 0 1 1 80 48zm64 193.7l0 65.1 51 51c7.1 7.1 11.8 16.2 13.4 26.1l15.2 90.9c2.9 17.4-8.9 33.9-26.3 36.8s-33.9-8.9-36.8-26.3l-14.3-85.9L66.8 320C54.8 308 48 291.7 48 274.7l0-88.1c0-32.4 26.2-58.6 58.6-58.6c24.1 0 46.5 12 59.9 32l47.4 71.1 10.1 5 0-76.2c0-17.7 14.3-32 32-32l128 0c17.7 0 32 14.3 32 32l0 76.2 10.1-5L473.5 160c13.3-20 35.8-32 59.9-32c32.4 0 58.6 26.2 58.6 58.6l0 88.1c0 17-6.7 33.3-18.7 45.3l-79.4 79.4-14.3 85.9c-2.9 17.4-19.4 29.2-36.8 26.3s-29.2-19.4-26.3-36.8l15.2-90.9c1.6-9.9 6.3-19 13.4-26.1l51-51 0-65.1-19 28.5c-4.6 7-11 12.6-18.5 16.3l-59.6 29.8c-2.4 1.3-4.9 2.2-7.6 2.8c-2.6 .6-5.3 .9-7.9 .8l-126.7 0c-2.5 .1-5-.2-7.5-.7c-2.9-.6-5.6-1.6-8.1-3l-59.5-29.8c-7.5-3.7-13.8-9.4-18.5-16.3l-19-28.5zM2.3 468.1L50.1 348.6l49.2 49.2-37.6 94c-6.6 16.4-25.2 24.4-41.6 17.8S-4.3 484.5 2.3 468.1zM512 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm77.9 348.6l47.8 119.5c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8l-37.6-94 49.2-49.2z\"]\n};\nconst faPeopleCarry = faPeopleCarryBox;\nconst faTemperatureHigh = {\n prefix: 'fas',\n iconName: 'temperature-high',\n icon: [512, 512, [], \"f769\", \"M416 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0 128A96 96 0 1 0 416 0a96 96 0 1 0 0 192zM96 112c0-26.5 21.5-48 48-48s48 21.5 48 48l0 164.5c0 17.3 7.1 31.9 15.3 42.5C217.8 332.6 224 349.5 224 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9C88.9 308.4 96 293.8 96 276.5L96 112zM144 0C82.1 0 32 50.2 32 112l0 164.4c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C11.2 304.2 0 334.8 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.2-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6L256 112C256 50.2 205.9 0 144 0zm0 416c26.5 0 48-21.5 48-48c0-20.9-13.4-38.7-32-45.3L160 112c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 210.7c-18.6 6.6-32 24.4-32 45.3c0 26.5 21.5 48 48 48z\"]\n};\nconst faMicrochip = {\n prefix: 'fas',\n iconName: 'microchip',\n icon: [512, 512, [], \"f2db\", \"M176 24c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40c-35.3 0-64 28.7-64 64l-40 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l40 0 0 56-40 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l40 0 0 56-40 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l40 0c0 35.3 28.7 64 64 64l0 40c0 13.3 10.7 24 24 24s24-10.7 24-24l0-40 56 0 0 40c0 13.3 10.7 24 24 24s24-10.7 24-24l0-40 56 0 0 40c0 13.3 10.7 24 24 24s24-10.7 24-24l0-40c35.3 0 64-28.7 64-64l40 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-40 0 0-56 40 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-40 0 0-56 40 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-40 0c0-35.3-28.7-64-64-64l0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40-56 0 0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40-56 0 0-40zM160 128l192 0c17.7 0 32 14.3 32 32l0 192c0 17.7-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32l0-192c0-17.7 14.3-32 32-32zm192 32l-192 0 0 192 192 0 0-192z\"]\n};\nconst faCrown = {\n prefix: 'fas',\n iconName: 'crown',\n icon: [576, 512, [128081], \"f521\", \"M309 106c11.4-7 19-19.7 19-34c0-22.1-17.9-40-40-40s-40 17.9-40 40c0 14.4 7.6 27 19 34L209.7 220.6c-9.1 18.2-32.7 23.4-48.6 10.7L72 160c5-6.7 8-15 8-24c0-22.1-17.9-40-40-40S0 113.9 0 136s17.9 40 40 40c.2 0 .5 0 .7 0L86.4 427.4c5.5 30.4 32 52.6 63 52.6l277.2 0c30.9 0 57.4-22.1 63-52.6L535.3 176c.2 0 .5 0 .7 0c22.1 0 40-17.9 40-40s-17.9-40-40-40s-40 17.9-40 40c0 9 3 17.3 8 24l-89.1 71.3c-15.9 12.7-39.5 7.5-48.6-10.7L309 106z\"]\n};\nconst faWeightHanging = {\n prefix: 'fas',\n iconName: 'weight-hanging',\n icon: [512, 512, [], \"f5cd\", \"M224 96a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm122.5 32c3.5-10 5.5-20.8 5.5-32c0-53-43-96-96-96s-96 43-96 96c0 11.2 1.9 22 5.5 32L120 128c-22 0-41.2 15-46.6 36.4l-72 288c-3.6 14.3-.4 29.5 8.7 41.2S33.2 512 48 512l416 0c14.8 0 28.7-6.8 37.8-18.5s12.3-26.8 8.7-41.2l-72-288C433.2 143 414 128 392 128l-45.5 0z\"]\n};\nconst faXmarksLines = {\n prefix: 'fas',\n iconName: 'xmarks-lines',\n icon: [640, 512, [], \"e59a\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l576 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32zm0 384c-17.7 0-32 14.3-32 32s14.3 32 32 32l576 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 416zM7 167c-9.4 9.4-9.4 24.6 0 33.9l55 55L7 311c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l55-55 55 55c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-55-55 55-55c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55L41 167c-9.4-9.4-24.6-9.4-33.9 0zM265 167c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l55 55-55 55c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l55-55 55 55c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-55-55 55-55c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55-55-55zM455 167c-9.4 9.4-9.4 24.6 0 33.9l55 55-55 55c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l55-55 55 55c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-55-55 55-55c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-55 55-55-55c-9.4-9.4-24.6-9.4-33.9 0z\"]\n};\nconst faFilePrescription = {\n prefix: 'fas',\n iconName: 'file-prescription',\n icon: [384, 512, [], \"f572\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM104 196l72 0c33.1 0 60 26.9 60 60c0 25.5-15.9 47.2-38.3 55.9l43 40.3 33.8-31c8.1-7.5 20.8-6.9 28.3 1.2s6.9 20.8-1.2 28.3L270 379.7l31.7 29.7c8.1 7.6 8.5 20.2 .9 28.3s-20.2 8.5-28.3 .9l-33.9-31.8-34.9 32c-8.1 7.5-20.8 6.9-28.3-1.2s-6.9-20.8 1.2-28.3l32.6-29.9-64.8-60.8c-.9-.8-1.6-1.7-2.3-2.6l-20 0 0 44c0 11-9 20-20 20s-20-9-20-20l0-64 0-80c0-11 9-20 20-20zm72 80c11 0 20-9 20-20s-9-20-20-20l-52 0 0 40 52 0z\"]\n};\nconst faWeightScale = {\n prefix: 'fas',\n iconName: 'weight-scale',\n icon: [512, 512, [\"weight\"], \"f496\", \"M128 176a128 128 0 1 1 256 0 128 128 0 1 1 -256 0zM391.8 64C359.5 24.9 310.7 0 256 0S152.5 24.9 120.2 64L64 64C28.7 64 0 92.7 0 128L0 448c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64l-56.2 0zM296 224c0-10.6-4.1-20.2-10.9-27.4l33.6-78.3c3.5-8.1-.3-17.5-8.4-21s-17.5 .3-21 8.4L255.7 184c-22 .1-39.7 18-39.7 40c0 22.1 17.9 40 40 40s40-17.9 40-40z\"]\n};\nconst faWeight = faWeightScale;\nconst faUserGroup = {\n prefix: 'fas',\n iconName: 'user-group',\n icon: [640, 512, [128101, \"user-friends\"], \"f500\", \"M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304l91.4 0C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7L29.7 512C13.3 512 0 498.7 0 482.3zM609.3 512l-137.8 0c5.4-9.4 8.6-20.3 8.6-32l0-8c0-60.7-27.1-115.2-69.8-151.8c2.4-.1 4.7-.2 7.1-.2l61.4 0C567.8 320 640 392.2 640 481.3c0 17-13.8 30.7-30.7 30.7zM432 256c-31 0-59-12.6-79.3-32.9C372.4 196.5 384 163.6 384 128c0-26.8-6.6-52.1-18.3-74.3C384.3 40.1 407.2 32 432 32c61.9 0 112 50.1 112 112s-50.1 112-112 112z\"]\n};\nconst faUserFriends = faUserGroup;\nconst faArrowUpAZ = {\n prefix: 'fas',\n iconName: 'arrow-up-a-z',\n icon: [576, 512, [\"sort-alpha-up\"], \"f15e\", \"M183.6 42.4C177.5 35.8 169 32 160 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L128 146.3 128 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-301.7 32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 320c0 17.7 14.3 32 32 32l50.7 0-73.4 73.4c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8l128 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-50.7 0 73.4-73.4c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8l-128 0c-17.7 0-32 14.3-32 32zM416 32c-12.1 0-23.2 6.8-28.6 17.7l-64 128-16 32c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l7.2-14.3 88.4 0 7.2 14.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9l-16-32-64-128C439.2 38.8 428.1 32 416 32zM395.8 176L416 135.6 436.2 176l-40.4 0z\"]\n};\nconst faSortAlphaUp = faArrowUpAZ;\nconst faChessKnight = {\n prefix: 'fas',\n iconName: 'chess-knight',\n icon: [448, 512, [9822], \"f441\", \"M96 48L82.7 61.3C70.7 73.3 64 89.5 64 106.5l0 132.4c0 10.7 5.3 20.7 14.2 26.6l10.6 7c14.3 9.6 32.7 10.7 48.1 3l3.2-1.6c2.6-1.3 5-2.8 7.3-4.5l49.4-37c6.6-5 15.7-5 22.3 0c10.2 7.7 9.9 23.1-.7 30.3L90.4 350C73.9 361.3 64 380 64 400l320 0 28.9-159c2.1-11.3 3.1-22.8 3.1-34.3l0-14.7C416 86 330 0 224 0L83.8 0C72.9 0 64 8.9 64 19.8c0 7.5 4.2 14.3 10.9 17.7L96 48zm24 68a20 20 0 1 1 40 0 20 20 0 1 1 -40 0zM22.6 473.4c-4.2 4.2-6.6 10-6.6 16C16 501.9 26.1 512 38.6 512l370.7 0c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16L384 432 64 432 22.6 473.4z\"]\n};\nconst faFaceLaughSquint = {\n prefix: 'fas',\n iconName: 'face-laugh-squint',\n icon: [512, 512, [\"laugh-squint\"], \"f59b\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1l275.2 0c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zm36.7-199.4l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 125.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"]\n};\nconst faLaughSquint = faFaceLaughSquint;\nconst faWheelchair = {\n prefix: 'fas',\n iconName: 'wheelchair',\n icon: [512, 512, [], \"f193\", \"M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM120.5 247.2c12.4-4.7 18.7-18.5 14-30.9s-18.5-18.7-30.9-14C43.1 225.1 0 283.5 0 352c0 88.4 71.6 160 160 160c61.2 0 114.3-34.3 141.2-84.7c6.2-11.7 1.8-26.2-9.9-32.5s-26.2-1.8-32.5 9.9C240 440 202.8 464 160 464C98.1 464 48 413.9 48 352c0-47.9 30.1-88.8 72.5-104.8zM259.8 176l-1.9-9.7c-4.5-22.3-24-38.3-46.8-38.3c-30.1 0-52.7 27.5-46.8 57l23.1 115.5c6 29.9 32.2 51.4 62.8 51.4l5.1 0c.4 0 .8 0 1.3 0l94.1 0c6.7 0 12.6 4.1 15 10.4L402 459.2c6 16.1 23.8 24.6 40.1 19.1l48-16c16.8-5.6 25.8-23.7 20.2-40.5s-23.7-25.8-40.5-20.2l-18.7 6.2-25.5-68c-11.7-31.2-41.6-51.9-74.9-51.9l-68.5 0-9.6-48 63.4 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-76.2 0z\"]\n};\nconst faCircleArrowUp = {\n prefix: 'fas',\n iconName: 'circle-arrow-up',\n icon: [512, 512, [\"arrow-circle-up\"], \"f0aa\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM385 215c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-71-71L280 392c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-214.1-71 71c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L239 103c9.4-9.4 24.6-9.4 33.9 0L385 215z\"]\n};\nconst faArrowCircleUp = faCircleArrowUp;\nconst faToggleOn = {\n prefix: 'fas',\n iconName: 'toggle-on',\n icon: [576, 512, [], \"f205\", \"M192 64C86 64 0 150 0 256S86 448 192 448l192 0c106 0 192-86 192-192s-86-192-192-192L192 64zm192 96a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nconst faPersonWalking = {\n prefix: 'fas',\n iconName: 'person-walking',\n icon: [320, 512, [128694, \"walking\"], \"f554\", \"M160 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM126.5 199.3c-1 .4-1.9 .8-2.9 1.2l-8 3.5c-16.4 7.3-29 21.2-34.7 38.2l-2.6 7.8c-5.6 16.8-23.7 25.8-40.5 20.2s-25.8-23.7-20.2-40.5l2.6-7.8c11.4-34.1 36.6-61.9 69.4-76.5l8-3.5c20.8-9.2 43.3-14 66.1-14c44.6 0 84.8 26.8 101.9 67.9L281 232.7l21.4 10.7c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3L247 287.3c-10.3-5.2-18.4-13.8-22.8-24.5l-9.6-23-19.3 65.5 49.5 54c5.4 5.9 9.2 13 11.2 20.8l23 92.1c4.3 17.1-6.1 34.5-23.3 38.8s-34.5-6.1-38.8-23.3l-22-88.1-70.7-77.1c-14.8-16.1-20.3-38.6-14.7-59.7l16.9-63.5zM68.7 398l25-62.4c2.1 3 4.5 5.8 7 8.6l40.7 44.4-14.5 36.2c-2.4 6-6 11.5-10.6 16.1L54.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L68.7 398z\"]\n};\nconst faWalking = faPersonWalking;\nconst faL = {\n prefix: 'fas',\n iconName: 'l',\n icon: [320, 512, [108], \"4c\", \"M64 32c17.7 0 32 14.3 32 32l0 352 192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L64 480c-17.7 0-32-14.3-32-32L32 64c0-17.7 14.3-32 32-32z\"]\n};\nconst faFire = {\n prefix: 'fas',\n iconName: 'fire',\n icon: [448, 512, [128293], \"f06d\", \"M159.3 5.4c7.8-7.3 19.9-7.2 27.7 .1c27.6 25.9 53.5 53.8 77.7 84c11-14.4 23.5-30.1 37-42.9c7.9-7.4 20.1-7.4 28 .1c34.6 33 63.9 76.6 84.5 118c20.3 40.8 33.8 82.5 33.8 111.9C448 404.2 348.2 512 224 512C98.4 512 0 404.1 0 276.5c0-38.4 17.8-85.3 45.4-131.7C73.3 97.7 112.7 48.6 159.3 5.4zM225.7 416c25.3 0 47.7-7 68.8-21c42.1-29.4 53.4-88.2 28.1-134.4c-4.5-9-16-9.6-22.5-2l-25.2 29.3c-6.6 7.6-18.5 7.4-24.7-.5c-16.5-21-46-58.5-62.8-79.8c-6.3-8-18.3-8.1-24.7-.1c-33.8 42.5-50.8 69.3-50.8 99.4C112 375.4 162.6 416 225.7 416z\"]\n};\nconst faBedPulse = {\n prefix: 'fas',\n iconName: 'bed-pulse',\n icon: [640, 512, [\"procedures\"], \"f487\", \"M483.2 9.6L524 64l92 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-104 0c-7.6 0-14.7-3.6-19.2-9.6L468.7 70.3l-47 99.9c-3.7 7.8-11.3 13.1-19.9 13.7s-16.9-3.4-21.7-10.6L339.2 112 216 112c-13.3 0-24-10.7-24-24s10.7-24 24-24l136 0c8 0 15.5 4 20 10.7l24.4 36.6 45.9-97.5C445.9 6.2 453.2 1 461.6 .1s16.6 2.7 21.6 9.5zM320 160l12.7 0 20.7 31.1c11.2 16.8 30.6 26.3 50.7 24.8s37.9-13.7 46.5-32L461.9 160l82.1 0c53 0 96 43 96 96l0 224c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-224 0-32 0L64 448l0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32L0 96C0 78.3 14.3 64 32 64s32 14.3 32 32l0 256 224 0 0-160c0-17.7 14.3-32 32-32zm-144 0a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nconst faProcedures = faBedPulse;\nconst faShuttleSpace = {\n prefix: 'fas',\n iconName: 'shuttle-space',\n icon: [640, 512, [\"space-shuttle\"], \"f197\", \"M130 480c40.6 0 80.4-11 115.2-31.9L352 384l-224 0 0 96 2 0zM352 128L245.2 63.9C210.4 43 170.6 32 130 32l-2 0 0 96 224 0zM96 128l0-96L80 32C53.5 32 32 53.5 32 80l0 48 8 0c-22.1 0-40 17.9-40 40l0 16L0 328l0 16c0 22.1 17.9 40 40 40l-8 0 0 48c0 26.5 21.5 48 48 48l16 0 0-96 8 0c26.2 0 49.4-12.6 64-32l288 0c69.3 0 135-22.7 179.2-81.6c6.4-8.5 6.4-20.3 0-28.8C591 182.7 525.3 160 456 160l-288 0c-14.6-19.4-37.8-32-64-32l-8 0zM512 243.6l0 24.9c0 19.6-15.9 35.6-35.6 35.6c-2.5 0-4.4-2-4.4-4.4l0-87.1c0-2.5 2-4.4 4.4-4.4c19.6 0 35.6 15.9 35.6 35.6z\"]\n};\nconst faSpaceShuttle = faShuttleSpace;\nconst faFaceLaugh = {\n prefix: 'fas',\n iconName: 'face-laugh',\n icon: [512, 512, [\"laugh\"], \"f599\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1l275.2 0c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zM144.4 192a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faLaugh = faFaceLaugh;\nconst faFolderOpen = {\n prefix: 'fas',\n iconName: 'folder-open',\n icon: [576, 512, [128194, 128449, 61717], \"f07c\", \"M88.7 223.8L0 375.8 0 96C0 60.7 28.7 32 64 32l117.5 0c17 0 33.3 6.7 45.3 18.7l26.5 26.5c12 12 28.3 18.7 45.3 18.7L416 96c35.3 0 64 28.7 64 64l0 32-336 0c-22.8 0-43.8 12.1-55.3 31.8zm27.6 16.1C122.1 230 132.6 224 144 224l400 0c11.5 0 22 6.1 27.7 16.1s5.7 22.2-.1 32.1l-112 192C453.9 474 443.4 480 432 480L32 480c-11.5 0-22-6.1-27.7-16.1s-5.7-22.2 .1-32.1l112-192z\"]\n};\nconst faHeartCirclePlus = {\n prefix: 'fas',\n iconName: 'heart-circle-plus',\n icon: [576, 512, [], \"e500\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6l0-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1l0 5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm16-208l0 48 48 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-48 0 0 48c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-48-48 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l48 0 0-48c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nconst faCodeFork = {\n prefix: 'fas',\n iconName: 'code-fork',\n icon: [448, 512, [], \"e13b\", \"M80 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm80-24c0 32.8-19.7 61-48 73.3l0 38.7c0 17.7 14.3 32 32 32l160 0c17.7 0 32-14.3 32-32l0-38.7C307.7 141 288 112.8 288 80c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3l0 38.7c0 53-43 96-96 96l-48 0 0 70.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3l0-70.7-48 0c-53 0-96-43-96-96l0-38.7C19.7 141 0 112.8 0 80C0 35.8 35.8 0 80 0s80 35.8 80 80zm208 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM248 432a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nconst faCity = {\n prefix: 'fas',\n iconName: 'city',\n icon: [640, 512, [127961], \"f64f\", \"M480 48c0-26.5-21.5-48-48-48L336 0c-26.5 0-48 21.5-48 48l0 48-64 0 0-72c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 72-64 0 0-72c0-13.3-10.7-24-24-24S64 10.7 64 24l0 72L48 96C21.5 96 0 117.5 0 144l0 96L0 464c0 26.5 21.5 48 48 48l256 0 32 0 96 0 160 0c26.5 0 48-21.5 48-48l0-224c0-26.5-21.5-48-48-48l-112 0 0-144zm96 320l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16zM240 416l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16zM128 400c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32zM560 256c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0zM256 176l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16zM112 160c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0zM256 304c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32zM112 320l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16zm304-48l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16zM400 64c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0zm16 112l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16z\"]\n};\nconst faMicrophoneLines = {\n prefix: 'fas',\n iconName: 'microphone-lines',\n icon: [384, 512, [127897, \"microphone-alt\"], \"f3c9\", \"M96 96l0 160c0 53 43 96 96 96s96-43 96-96l-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-32-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-32-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0c0-53-43-96-96-96S96 43 96 96zM320 240l0 16c0 70.7-57.3 128-128 128s-128-57.3-128-128l0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40c0 89.1 66.2 162.7 152 174.4l0 33.6-48 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l72 0 72 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0 0-33.6c85.8-11.7 152-85.3 152-174.4l0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 24z\"]\n};\nconst faMicrophoneAlt = faMicrophoneLines;\nconst faPepperHot = {\n prefix: 'fas',\n iconName: 'pepper-hot',\n icon: [512, 512, [127798], \"f816\", \"M428.3 3c11.6-6.4 26.2-2.3 32.6 9.3l4.8 8.7c19.3 34.7 19.8 75.7 3.4 110C495.8 159.6 512 197.9 512 240c0 18.5-3.1 36.3-8.9 52.8c-6.1 17.3-28.5 16.3-36.8-.1l-11.7-23.4c-4.1-8.1-12.4-13.3-21.5-13.3L360 256c-13.3 0-24-10.7-24-24l0-80c0-13.3-10.7-24-24-24l-17.1 0c-21.3 0-30-23.9-10.8-32.9C304.7 85.4 327.7 80 352 80c28.3 0 54.8 7.3 77.8 20.2c5.5-18.2 3.7-38.4-6-55.8L419 35.7c-6.4-11.6-2.3-26.2 9.3-32.6zM171.2 345.5L264 160l40 0 0 80c0 26.5 21.5 48 48 48l76.2 0 23.9 47.8C372.3 443.9 244.3 512 103.2 512l-58.8 0C19.9 512 0 492.1 0 467.6c0-20.8 14.5-38.8 34.8-43.3l49.8-11.1c37.6-8.4 69.5-33.2 86.7-67.7z\"]\n};\nconst faUnlock = {\n prefix: 'fas',\n iconName: 'unlock',\n icon: [448, 512, [128275], \"f09c\", \"M144 144c0-44.2 35.8-80 80-80c31.9 0 59.4 18.6 72.3 45.7c7.6 16 26.7 22.8 42.6 15.2s22.8-26.7 15.2-42.6C331 33.7 281.5 0 224 0C144.5 0 80 64.5 80 144l0 48-16 0c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-192c0-35.3-28.7-64-64-64l-240 0 0-48z\"]\n};\nconst faColonSign = {\n prefix: 'fas',\n iconName: 'colon-sign',\n icon: [384, 512, [], \"e140\", \"M255 39.8c4.3-17.1-6.1-34.5-23.3-38.8S197.2 7.1 193 24.2L181.9 68.6C96.1 87.8 32 164.4 32 256c0 58.1 25.8 110.2 66.7 145.4L81 472.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l13-52.1c9 3.4 18.4 6.2 28 8.2L177 472.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l10.4-41.4c33.4-4.4 64.1-17.4 89.8-36.7c14.1-10.6 17-30.7 6.4-44.8s-30.7-17-44.8-6.4c-10.2 7.7-21.7 13.9-34 18.3L321 160c9.4-.3 18.5-4.7 24.6-12.8c10.6-14.1 7.8-34.2-6.4-44.8c-1.1-.8-2.2-1.6-3.3-2.4L351 39.8c4.3-17.1-6.1-34.5-23.3-38.8S293.2 7.1 289 24.2L277.2 71.5c-9.3-2.7-18.8-4.6-28.6-5.9L255 39.8zM163.2 143.3L117.3 326.8C103.9 306.5 96 282.2 96 256c0-48.7 27.2-91 67.2-112.7zm8.6 229.5l61.1-244.6c9.9 .7 19.5 2.5 28.7 5.3l-62 248.1c-9.7-1.9-19-4.8-27.8-8.8z\"]\n};\nconst faHeadset = {\n prefix: 'fas',\n iconName: 'headset',\n icon: [512, 512, [], \"f590\", \"M256 48C141.1 48 48 141.1 48 256l0 40c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-40C0 114.6 114.6 0 256 0S512 114.6 512 256l0 144.1c0 48.6-39.4 88-88.1 88L313.6 488c-8.3 14.3-23.8 24-41.6 24l-32 0c-26.5 0-48-21.5-48-48s21.5-48 48-48l32 0c17.8 0 33.3 9.7 41.6 24l110.4 .1c22.1 0 40-17.9 40-40L464 256c0-114.9-93.1-208-208-208zM144 208l16 0c17.7 0 32 14.3 32 32l0 112c0 17.7-14.3 32-32 32l-16 0c-35.3 0-64-28.7-64-64l0-48c0-35.3 28.7-64 64-64zm224 0c35.3 0 64 28.7 64 64l0 48c0 35.3-28.7 64-64 64l-16 0c-17.7 0-32-14.3-32-32l0-112c0-17.7 14.3-32 32-32l16 0z\"]\n};\nconst faStoreSlash = {\n prefix: 'fas',\n iconName: 'store-slash',\n icon: [640, 512, [], \"e071\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-86.8-68 0-17.1 0-131.4c-4 1-8 1.8-12.3 2.3c0 0 0 0-.1 0c-5.3 .7-10.7 1.1-16.2 1.1c-12.4 0-24.3-1.9-35.4-5.3l0 100.3L301.2 210.7c7-4.4 13.3-9.7 18.8-15.7c15.9 17.6 39.1 29 65.2 29c26.2 0 49.3-11.4 65.2-29c16 17.6 39.1 29 65.2 29c4.1 0 8.1-.3 12.1-.8c55.5-7.4 81.8-72.5 52.1-119.4L522.3 13.1C517.2 5 508.1 0 498.4 0L141.6 0c-9.7 0-18.8 5-23.9 13.1l-22.7 36L38.8 5.1zm73.4 218.1c4 .5 8.1 .8 12.1 .8c11 0 21.4-2 31-5.6L48.9 134.5c-6.1 40.6 19.5 82.8 63.3 88.7zM160 384l0-133.4c-11.2 3.5-23.2 5.4-35.6 5.4c-5.5 0-11-.4-16.3-1.1l-.1 0c-4.1-.6-8.1-1.3-12-2.3L96 384l0 64c0 35.3 28.7 64 64 64l320 0c12.9 0 24.8-3.8 34.9-10.3L365.5 384 160 384z\"]\n};\nconst faRoadCircleXmark = {\n prefix: 'fas',\n iconName: 'road-circle-xmark',\n icon: [640, 512, [], \"e566\", \"M213.2 32L288 32l0 64c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 74.8 0c27.1 0 51.3 17.1 60.3 42.6l42.7 120.6c-10.9-2.1-22.2-3.2-33.8-3.2c-59.5 0-112.1 29.6-144 74.8l0-42.8c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32c2.3 0 4.6-.3 6.8-.7c-4.5 15.5-6.8 31.8-6.8 48.7c0 5.4 .2 10.7 .7 16l-.7 0c-17.7 0-32 14.3-32 32l0 64L86.6 480C56.5 480 32 455.5 32 425.4c0-6.2 1.1-12.4 3.1-18.2L152.9 74.6C162 49.1 186.1 32 213.2 32zM496 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm22.6 144l36.7-36.7c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L496 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L473.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L496 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L518.6 368z\"]\n};\nconst faUserMinus = {\n prefix: 'fas',\n iconName: 'user-minus',\n icon: [640, 512, [], \"f503\", \"M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304l91.4 0C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7L29.7 512C13.3 512 0 498.7 0 482.3zM472 200l144 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-144 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nconst faMarsStrokeUp = {\n prefix: 'fas',\n iconName: 'mars-stroke-up',\n icon: [320, 512, [9896, \"mars-stroke-v\"], \"f22a\", \"M148.7 4.7c6.2-6.2 16.4-6.2 22.6 0l64 64c4.6 4.6 5.9 11.5 3.5 17.4s-8.3 9.9-14.8 9.9l-40 0 0 24 32 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-32 0 0 24c0 .6 0 1.2-.1 1.8c77 11.6 136.1 78 136.1 158.2c0 88.4-71.6 160-160 160S0 440.4 0 352c0-80.2 59.1-146.7 136.1-158.2c0-.6-.1-1.2-.1-1.8l0-24-32 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l32 0 0-24L96 96c-6.5 0-12.3-3.9-14.8-9.9s-1.1-12.9 3.5-17.4l64-64zM256 352A96 96 0 1 0 64 352a96 96 0 1 0 192 0z\"]\n};\nconst faMarsStrokeV = faMarsStrokeUp;\nconst faChampagneGlasses = {\n prefix: 'fas',\n iconName: 'champagne-glasses',\n icon: [640, 512, [129346, \"glass-cheers\"], \"f79f\", \"M155.6 17.3C163 3 179.9-3.6 195 1.9L320 47.5l125-45.6c15.1-5.5 32 1.1 39.4 15.4l78.8 152.9c28.8 55.8 10.3 122.3-38.5 156.6L556.1 413l41-15c16.6-6 35 2.5 41 19.1s-2.5 35-19.1 41l-71.1 25.9L476.8 510c-16.6 6.1-35-2.5-41-19.1s2.5-35 19.1-41l41-15-31.3-86.2c-59.4 5.2-116.2-34-130-95.2L320 188.8l-14.6 64.7c-13.8 61.3-70.6 100.4-130 95.2l-31.3 86.2 41 15c16.6 6 25.2 24.4 19.1 41s-24.4 25.2-41 19.1L92.2 484.1 21.1 458.2c-16.6-6.1-25.2-24.4-19.1-41s24.4-25.2 41-19.1l41 15 31.3-86.2C66.5 292.5 48.1 226 76.9 170.2L155.6 17.3zm44 54.4l-27.2 52.8L261.6 157l13.1-57.9L199.6 71.7zm240.9 0L365.4 99.1 378.5 157l89.2-32.5L440.5 71.7z\"]\n};\nconst faGlassCheers = faChampagneGlasses;\nconst faClipboard = {\n prefix: 'fas',\n iconName: 'clipboard',\n icon: [384, 512, [128203], \"f328\", \"M192 0c-41.8 0-77.4 26.7-90.5 64L64 64C28.7 64 0 92.7 0 128L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64l-37.5 0C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM112 192l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faHouseCircleExclamation = {\n prefix: 'fas',\n iconName: 'house-circle-exclamation',\n icon: [640, 512, [], \"e50a\", \"M320.7 352c8.1-89.7 83.5-160 175.3-160c8.9 0 17.6 .7 26.1 1.9L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1l32 0 0 69.7c-.1 .9-.1 1.8-.1 2.8l0 112c0 22.1 17.9 40 40 40l16 0c1.2 0 2.4-.1 3.6-.2c1.5 .1 3 .2 4.5 .2l31.9 0 24 0c22.1 0 40-17.9 40-40l0-24 0-64c0-17.7 14.3-32 32-32l64 0 .7 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16z\"]\n};\nconst faFileArrowUp = {\n prefix: 'fas',\n iconName: 'file-arrow-up',\n icon: [384, 512, [\"file-upload\"], \"f574\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM216 408c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-102.1-31 31c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l72-72c9.4-9.4 24.6-9.4 33.9 0l72 72c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-31-31L216 408z\"]\n};\nconst faFileUpload = faFileArrowUp;\nconst faWifi = {\n prefix: 'fas',\n iconName: 'wifi',\n icon: [640, 512, [\"wifi-3\", \"wifi-strong\"], \"f1eb\", \"M54.2 202.9C123.2 136.7 216.8 96 320 96s196.8 40.7 265.8 106.9c12.8 12.2 33 11.8 45.2-.9s11.8-33-.9-45.2C549.7 79.5 440.4 32 320 32S90.3 79.5 9.8 156.7C-2.9 169-3.3 189.2 8.9 202s32.5 13.2 45.2 .9zM320 256c56.8 0 108.6 21.1 148.2 56c13.3 11.7 33.5 10.4 45.2-2.8s10.4-33.5-2.8-45.2C459.8 219.2 393 192 320 192s-139.8 27.2-190.5 72c-13.3 11.7-14.5 31.9-2.8 45.2s31.9 14.5 45.2 2.8c39.5-34.9 91.3-56 148.2-56zm64 160a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nconst faWifi3 = faWifi;\nconst faWifiStrong = faWifi;\nconst faBath = {\n prefix: 'fas',\n iconName: 'bath',\n icon: [512, 512, [128705, \"bathtub\"], \"f2cd\", \"M96 77.3c0-7.3 5.9-13.3 13.3-13.3c3.5 0 6.9 1.4 9.4 3.9l14.9 14.9C130 91.8 128 101.7 128 112c0 19.9 7.2 38 19.2 52c-5.3 9.2-4 21.1 3.8 29c9.4 9.4 24.6 9.4 33.9 0L289 89c9.4-9.4 9.4-24.6 0-33.9c-7.9-7.9-19.8-9.1-29-3.8C246 39.2 227.9 32 208 32c-10.3 0-20.2 2-29.2 5.5L163.9 22.6C149.4 8.1 129.7 0 109.3 0C66.6 0 32 34.6 32 77.3L32 256c-17.7 0-32 14.3-32 32s14.3 32 32 32l448 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L96 256 96 77.3zM32 352l0 16c0 28.4 12.4 54 32 71.6L64 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-16 256 0 0 16c0 17.7 14.3 32 32 32s32-14.3 32-32l0-40.4c19.6-17.6 32-43.1 32-71.6l0-16L32 352z\"]\n};\nconst faBathtub = faBath;\nconst faUnderline = {\n prefix: 'fas',\n iconName: 'underline',\n icon: [448, 512, [], \"f0cd\", \"M16 64c0-17.7 14.3-32 32-32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-16 0 0 128c0 53 43 96 96 96s96-43 96-96l0-128-16 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-16 0 0 128c0 88.4-71.6 160-160 160s-160-71.6-160-160L64 96 48 96C30.3 96 16 81.7 16 64zM0 448c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32z\"]\n};\nconst faUserPen = {\n prefix: 'fas',\n iconName: 'user-pen',\n icon: [640, 512, [\"user-edit\"], \"f4ff\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512l293.1 0c-3.1-8.8-3.7-18.4-1.4-27.8l15-60.1c2.8-11.3 8.6-21.5 16.8-29.7l40.3-40.3c-32.1-31-75.7-50.1-123.9-50.1l-91.4 0zm435.5-68.3c-15.6-15.6-40.9-15.6-56.6 0l-29.4 29.4 71 71 29.4-29.4c15.6-15.6 15.6-40.9 0-56.6l-14.4-14.4zM375.9 417c-4.1 4.1-7 9.2-8.4 14.9l-15 60.1c-1.4 5.5 .2 11.2 4.2 15.2s9.7 5.6 15.2 4.2l60.1-15c5.6-1.4 10.8-4.3 14.9-8.4L576.1 358.7l-71-71L375.9 417z\"]\n};\nconst faUserEdit = faUserPen;\nconst faSignature = {\n prefix: 'fas',\n iconName: 'signature',\n icon: [640, 512, [], \"f5b7\", \"M192 128c0-17.7 14.3-32 32-32s32 14.3 32 32l0 7.8c0 27.7-2.4 55.3-7.1 82.5l-84.4 25.3c-40.6 12.2-68.4 49.6-68.4 92l0 71.9c0 40 32.5 72.5 72.5 72.5c26 0 50-13.9 62.9-36.5l13.9-24.3c26.8-47 46.5-97.7 58.4-150.5l94.4-28.3-12.5 37.5c-3.3 9.8-1.6 20.5 4.4 28.8s15.7 13.3 26 13.3l128 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-83.6 0 18-53.9c3.8-11.3 .9-23.8-7.4-32.4s-20.7-11.8-32.2-8.4L316.4 198.1c2.4-20.7 3.6-41.4 3.6-62.3l0-7.8c0-53-43-96-96-96s-96 43-96 96l0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32zm-9.2 177l49-14.7c-10.4 33.8-24.5 66.4-42.1 97.2l-13.9 24.3c-1.5 2.6-4.3 4.3-7.4 4.3c-4.7 0-8.5-3.8-8.5-8.5l0-71.9c0-14.1 9.3-26.6 22.8-30.7zM24 368c-13.3 0-24 10.7-24 24s10.7 24 24 24l40.3 0c-.2-2.8-.3-5.6-.3-8.5L64 368l-40 0zm592 48c13.3 0 24-10.7 24-24s-10.7-24-24-24l-310.1 0c-6.7 16.3-14.2 32.3-22.3 48L616 416z\"]\n};\nconst faStroopwafel = {\n prefix: 'fas',\n iconName: 'stroopwafel',\n icon: [512, 512, [], \"f551\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM312.6 63.7c-6.2-6.2-16.4-6.2-22.6 0L256 97.6 222.1 63.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l33.9 33.9-45.3 45.3-56.6-56.6c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l56.6 56.6-45.3 45.3L86.3 199.4c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L97.6 256 63.7 289.9c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l33.9-33.9 45.3 45.3-56.6 56.6c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l56.6-56.6 45.3 45.3-33.9 33.9c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L256 414.4l33.9 33.9c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-33.9-33.9 45.3-45.3 56.6 56.6c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-56.6-56.6 45.3-45.3 33.9 33.9c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L414.4 256l33.9-33.9c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0l-33.9 33.9-45.3-45.3 56.6-56.6c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0l-56.6 56.6-45.3-45.3 33.9-33.9c6.2-6.2 6.2-16.4 0-22.6zM142.9 256l45.3-45.3L233.4 256l-45.3 45.3L142.9 256zm67.9 67.9L256 278.6l45.3 45.3L256 369.1l-45.3-45.3zM278.6 256l45.3-45.3L369.1 256l-45.3 45.3L278.6 256zm22.6-67.9L256 233.4l-45.3-45.3L256 142.9l45.3 45.3z\"]\n};\nconst faBold = {\n prefix: 'fas',\n iconName: 'bold',\n icon: [384, 512, [], \"f032\", \"M0 64C0 46.3 14.3 32 32 32l48 0 16 0 128 0c70.7 0 128 57.3 128 128c0 31.3-11.3 60.1-30 82.3c37.1 22.4 62 63.1 62 109.7c0 70.7-57.3 128-128 128L96 480l-16 0-48 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l16 0 0-160L48 96 32 96C14.3 96 0 81.7 0 64zM224 224c35.3 0 64-28.7 64-64s-28.7-64-64-64L112 96l0 128 112 0zM112 288l0 128 144 0c35.3 0 64-28.7 64-64s-28.7-64-64-64l-32 0-112 0z\"]\n};\nconst faAnchorLock = {\n prefix: 'fas',\n iconName: 'anchor-lock',\n icon: [640, 512, [], \"e4ad\", \"M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80L224 176c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 208-48 0c-53 0-96-43-96-96l0-6.1 7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7 0 6.1c0 88.4 71.6 160 160 160l80 0 80 0c8 0 15.9-.6 23.6-1.7c-4.8-9-7.6-19.3-7.6-30.3l0-33.3c-5.2 .9-10.5 1.3-16 1.3l-48 0 0-208 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-10.9 0zM528 240c17.7 0 32 14.3 32 32l0 48-64 0 0-48c0-17.7 14.3-32 32-32zm-80 32l0 48c-17.7 0-32 14.3-32 32l0 128c0 17.7 14.3 32 32 32l160 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32l0-48c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nconst faBuildingNgo = {\n prefix: 'fas',\n iconName: 'building-ngo',\n icon: [384, 512, [], \"e4d7\", \"M48 0C21.5 0 0 21.5 0 48L0 464c0 26.5 21.5 48 48 48l96 0 0-80c0-26.5 21.5-48 48-48s48 21.5 48 48l0 80 96 0c26.5 0 48-21.5 48-48l0-416c0-26.5-21.5-48-48-48L48 0zM64 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm112-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM168 64l48 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0 0 64 16 0 0-16c0-8.8 7.2-16 16-16s16 7.2 16 16l0 24c0 13.3-10.7 24-24 24l-32 0c-13.3 0-24-10.7-24-24l0-88c0-8.8 7.2-16 16-16zM304 96c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16s16-7.2 16-16l0-32c0-8.8-7.2-16-16-16zm-48 16c0-26.5 21.5-48 48-48s48 21.5 48 48l0 32c0 26.5-21.5 48-48 48s-48-21.5-48-48l0-32zM61.3 71.1l34.7 52L96 80c0-8.8 7.2-16 16-16s16 7.2 16 16l0 96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4L64 132.8 64 176c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-96c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4z\"]\n};\nconst faManatSign = {\n prefix: 'fas',\n iconName: 'manat-sign',\n icon: [384, 512, [], \"e1d5\", \"M192 32c-17.7 0-32 14.3-32 32l0 34.7C69.2 113.9 0 192.9 0 288L0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160c0-59.6 40.8-109.8 96-124l0 284c0 17.7 14.3 32 32 32s32-14.3 32-32l0-284c55.2 14.2 96 64.3 96 124l0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160c0-95.1-69.2-174.1-160-189.3L224 64c0-17.7-14.3-32-32-32z\"]\n};\nconst faNotEqual = {\n prefix: 'fas',\n iconName: 'not-equal',\n icon: [448, 512, [], \"f53e\", \"M369.8 37.4c14.7 9.8 18.7 29.7 8.9 44.4L337.1 144l62.9 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-105.5 0-64 96L400 304c17.7 0 32 14.3 32 32s-14.3 32-32 32l-212.2 0-65.2 97.7c-9.8 14.7-29.7 18.7-44.4 8.9s-18.7-29.7-8.9-44.4L110.9 368 48 368c-17.7 0-32-14.3-32-32s14.3-32 32-32l105.5 0 64-96L48 208c-17.7 0-32-14.3-32-32s14.3-32 32-32l212.2 0 65.2-97.7c9.8-14.7 29.7-18.7 44.4-8.9z\"]\n};\nconst faBorderTopLeft = {\n prefix: 'fas',\n iconName: 'border-top-left',\n icon: [448, 512, [\"border-style\"], \"f853\", \"M0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-336c0-8.8 7.2-16 16-16l336 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L80 32C35.8 32 0 67.8 0 112L0 448zm160 0a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm192 0a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm-96 0a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm192 0a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM416 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm0 32a32 32 0 1 0 0 64 32 32 0 1 0 0-64zm0-128a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faBorderStyle = faBorderTopLeft;\nconst faMapLocationDot = {\n prefix: 'fas',\n iconName: 'map-location-dot',\n icon: [576, 512, [\"map-marked-alt\"], \"f5a0\", \"M408 120c0 54.6-73.1 151.9-105.2 192c-7.7 9.6-22 9.6-29.6 0C241.1 271.9 168 174.6 168 120C168 53.7 221.7 0 288 0s120 53.7 120 120zm8 80.4c3.5-6.9 6.7-13.8 9.6-20.6c.5-1.2 1-2.5 1.5-3.7l116-46.4C558.9 123.4 576 135 576 152l0 270.8c0 9.8-6 18.6-15.1 22.3L416 503l0-302.6zM137.6 138.3c2.4 14.1 7.2 28.3 12.8 41.5c2.9 6.8 6.1 13.7 9.6 20.6l0 251.4L32.9 502.7C17.1 509 0 497.4 0 480.4L0 209.6c0-9.8 6-18.6 15.1-22.3l122.6-49zM327.8 332c13.9-17.4 35.7-45.7 56.2-77l0 249.3L192 449.4 192 255c20.5 31.3 42.3 59.6 56.2 77c20.5 25.6 59.1 25.6 79.6 0zM288 152a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n};\nconst faMapMarkedAlt = faMapLocationDot;\nconst faJedi = {\n prefix: 'fas',\n iconName: 'jedi',\n icon: [576, 512, [], \"f669\", \"M246 315.7l-21.2-31.9c-2.1-3.2-1.7-7.4 1-10.1s6.9-3.1 10.1-1l29.5 19.7c2.1 1.4 4.9 0 5-2.6L279.7 8c.1-4.5 3.8-8 8.3-8s8.1 3.5 8.3 8l9.4 281.9c.1 2.5 2.9 3.9 5 2.6l29.5-19.7c3.2-2.1 7.4-1.7 10.1 1s3.1 6.9 1 10.1L330 315.7c-1.3 1.9-.2 4.5 2 4.9l37.6 7.5c3.7 .7 6.4 4 6.4 7.8s-2.7 7.1-6.4 7.8L332 351.4c-2.2 .4-3.3 3-2 4.9l21.2 31.9c2.1 3.2 1.7 7.4-1 10.1s-6.9 3.1-10.1 1l-26.3-17.6c-2.2-1.4-5.1 .2-5 2.8l2.1 61.5C370.6 435.2 416 382.9 416 320c0-37-15.7-70.4-40.8-93.7c-7-6.5-6.5-18.6 1-24.4C410.1 175.5 432 134.3 432 88c0-16.8-2.9-33-8.2-48c-4.6-13 10.2-30 21.4-22c53.5 38 92.7 94.8 107.8 160.7c.5 2.1-.2 4.3-1.7 5.9l-28.4 28.4c-4 4-1.2 10.9 4.5 10.9l26 0c3.4 0 6.2 2.6 6.3 6c.1 3.3 .2 6.6 .2 10c0 17.5-1.7 34.7-4.8 51.3c-.2 1.2-.9 2.4-1.7 3.3l-46.5 46.5c-4 4-1.2 10.9 4.5 10.9l14.6 0c4.6 0 7.7 4.8 5.7 9C487.2 450.5 394.8 512 288 512S88.8 450.5 44.3 361c-2.1-4.2 1-9 5.7-9l14.6 0c5.7 0 8.6-6.9 4.5-10.9L22.6 294.6c-.9-.9-1.5-2-1.7-3.3C17.7 274.7 16 257.5 16 240c0-3.3 .1-6.7 .2-10c.1-3.4 2.9-6 6.3-6l26 0c5.7 0 8.6-6.9 4.5-10.9L24.6 184.6c-1.5-1.5-2.2-3.8-1.7-5.9C38.1 112.8 77.3 56 130.8 18c11.3-8 26 8.9 21.4 22c-5.3 15-8.2 31.2-8.2 48c0 46.3 21.9 87.5 55.8 113.9c7.5 5.8 8 17.9 1 24.4C175.7 249.6 160 283 160 320c0 62.9 45.4 115.2 105.1 126l2.1-61.5c.1-2.6-2.8-4.2-5-2.8l-26.3 17.6c-3.2 2.1-7.4 1.7-10.1-1s-3.1-6.9-1-10.1L246 356.3c1.3-1.9 .2-4.5-2-4.9l-37.6-7.5c-3.7-.7-6.4-4-6.4-7.8s2.7-7.1 6.4-7.8l37.6-7.5c2.2-.4 3.3-3 2-4.9z\"]\n};\nconst faSquarePollVertical = {\n prefix: 'fas',\n iconName: 'square-poll-vertical',\n icon: [448, 512, [\"poll\"], \"f681\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm64 192c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96c0-17.7 14.3-32 32-32zm64-64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 192c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-192zM320 288c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32c0-17.7 14.3-32 32-32z\"]\n};\nconst faPoll = faSquarePollVertical;\nconst faMugHot = {\n prefix: 'fas',\n iconName: 'mug-hot',\n icon: [512, 512, [9749], \"f7b6\", \"M88 0C74.7 0 64 10.7 64 24c0 38.9 23.4 59.4 39.1 73.1l1.1 1C120.5 112.3 128 119.9 128 136c0 13.3 10.7 24 24 24s24-10.7 24-24c0-38.9-23.4-59.4-39.1-73.1l-1.1-1C119.5 47.7 112 40.1 112 24c0-13.3-10.7-24-24-24zM32 192c-17.7 0-32 14.3-32 32L0 416c0 53 43 96 96 96l192 0c53 0 96-43 96-96l16 0c61.9 0 112-50.1 112-112s-50.1-112-112-112l-48 0L32 192zm352 64l16 0c26.5 0 48 21.5 48 48s-21.5 48-48 48l-16 0 0-96zM224 24c0-13.3-10.7-24-24-24s-24 10.7-24 24c0 38.9 23.4 59.4 39.1 73.1l1.1 1C232.5 112.3 240 119.9 240 136c0 13.3 10.7 24 24 24s24-10.7 24-24c0-38.9-23.4-59.4-39.1-73.1l-1.1-1C231.5 47.7 224 40.1 224 24z\"]\n};\nconst faCarBattery = {\n prefix: 'fas',\n iconName: 'car-battery',\n icon: [512, 512, [\"battery-car\"], \"f5df\", \"M80 96c0-17.7 14.3-32 32-32l64 0c17.7 0 32 14.3 32 32l96 0c0-17.7 14.3-32 32-32l64 0c17.7 0 32 14.3 32 32l16 0c35.3 0 64 28.7 64 64l0 224c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 160c0-35.3 28.7-64 64-64l16 0zm304 96c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 32-32 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l32 0 0 32c0 8.8 7.2 16 16 16s16-7.2 16-16l0-32 32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-32 0 0-32zM80 240c0 8.8 7.2 16 16 16l96 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-96 0c-8.8 0-16 7.2-16 16z\"]\n};\nconst faBatteryCar = faCarBattery;\nconst faGift = {\n prefix: 'fas',\n iconName: 'gift',\n icon: [512, 512, [127873], \"f06b\", \"M190.5 68.8L225.3 128l-1.3 0-72 0c-22.1 0-40-17.9-40-40s17.9-40 40-40l2.2 0c14.9 0 28.8 7.9 36.3 20.8zM64 88c0 14.4 3.5 28 9.6 40L32 128c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l448 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-41.6 0c6.1-12 9.6-25.6 9.6-40c0-48.6-39.4-88-88-88l-2.2 0c-31.9 0-61.5 16.9-77.7 44.4L256 85.5l-24.1-41C215.7 16.9 186.1 0 154.2 0L152 0C103.4 0 64 39.4 64 88zm336 0c0 22.1-17.9 40-40 40l-72 0-1.3 0 34.8-59.2C329.1 55.9 342.9 48 357.8 48l2.2 0c22.1 0 40 17.9 40 40zM32 288l0 176c0 26.5 21.5 48 48 48l144 0 0-224L32 288zM288 512l144 0c26.5 0 48-21.5 48-48l0-176-192 0 0 224z\"]\n};\nconst faDiceTwo = {\n prefix: 'fas',\n iconName: 'dice-two',\n icon: [448, 512, [9857], \"f528\", \"M0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zM352 352a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM128 192a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faChessQueen = {\n prefix: 'fas',\n iconName: 'chess-queen',\n icon: [512, 512, [9819], \"f445\", \"M256 0a56 56 0 1 1 0 112A56 56 0 1 1 256 0zM134.1 143.8c3.3-13 15-23.8 30.2-23.8c12.3 0 22.6 7.2 27.7 17c12 23.2 36.2 39 64 39s52-15.8 64-39c5.1-9.8 15.4-17 27.7-17c15.3 0 27 10.8 30.2 23.8c7 27.8 32.2 48.3 62.1 48.3c10.8 0 21-2.7 29.8-7.4c8.4-4.4 18.9-4.5 27.6 .9c13 8 17.1 25 9.2 38L399.7 400 384 400l-40.4 0-175.1 0L128 400l-15.7 0L5.4 223.6c-7.9-13-3.8-30 9.2-38c8.7-5.3 19.2-5.3 27.6-.9c8.9 4.7 19 7.4 29.8 7.4c29.9 0 55.1-20.5 62.1-48.3zM256 224s0 0 0 0s0 0 0 0s0 0 0 0zM112 432l288 0 41.4 41.4c4.2 4.2 6.6 10 6.6 16c0 12.5-10.1 22.6-22.6 22.6L86.6 512C74.1 512 64 501.9 64 489.4c0-6 2.4-11.8 6.6-16L112 432z\"]\n};\nconst faGlasses = {\n prefix: 'fas',\n iconName: 'glasses',\n icon: [576, 512, [], \"f530\", \"M118.6 80c-11.5 0-21.4 7.9-24 19.1L57 260.3c20.5-6.2 48.3-12.3 78.7-12.3c32.3 0 61.8 6.9 82.8 13.5c10.6 3.3 19.3 6.7 25.4 9.2c3.1 1.3 5.5 2.4 7.3 3.2c.9 .4 1.6 .7 2.1 1l.6 .3 .2 .1c0 0 .1 0 .1 0c0 0 0 0 0 0s0 0 0 0L247.9 288s0 0 0 0l6.3-12.7c5.8 2.9 10.4 7.3 13.5 12.7l40.6 0c3.1-5.3 7.7-9.8 13.5-12.7l6.3 12.7s0 0 0 0c-6.3-12.7-6.3-12.7-6.3-12.7s0 0 0 0s0 0 0 0c0 0 .1 0 .1 0l.2-.1 .6-.3c.5-.2 1.2-.6 2.1-1c1.8-.8 4.2-1.9 7.3-3.2c6.1-2.6 14.8-5.9 25.4-9.2c21-6.6 50.4-13.5 82.8-13.5c30.4 0 58.2 6.1 78.7 12.3L481.4 99.1c-2.6-11.2-12.6-19.1-24-19.1c-3.1 0-6.2 .6-9.2 1.8L416.9 94.3c-12.3 4.9-26.3-1.1-31.2-13.4s1.1-26.3 13.4-31.2l31.3-12.5c8.6-3.4 17.7-5.2 27-5.2c33.8 0 63.1 23.3 70.8 56.2l43.9 188c1.7 7.3 2.9 14.7 3.5 22.1c.3 1.9 .5 3.8 .5 5.7l0 6.7 0 41.3 0 16c0 61.9-50.1 112-112 112l-44.3 0c-59.4 0-108.5-46.4-111.8-105.8L306.6 352l-37.2 0-1.2 22.2C264.9 433.6 215.8 480 156.3 480L112 480C50.1 480 0 429.9 0 368l0-16 0-41.3L0 304c0-1.9 .2-3.8 .5-5.7c.6-7.4 1.8-14.8 3.5-22.1l43.9-188C55.5 55.3 84.8 32 118.6 32c9.2 0 18.4 1.8 27 5.2l31.3 12.5c12.3 4.9 18.3 18.9 13.4 31.2s-18.9 18.3-31.2 13.4L127.8 81.8c-2.9-1.2-6-1.8-9.2-1.8zM64 325.4L64 368c0 26.5 21.5 48 48 48l44.3 0c25.5 0 46.5-19.9 47.9-45.3l2.5-45.6c-2.3-.8-4.9-1.7-7.5-2.5c-17.2-5.4-39.9-10.5-63.6-10.5c-23.7 0-46.2 5.1-63.2 10.5c-3.1 1-5.9 1.9-8.5 2.9zM512 368l0-42.6c-2.6-.9-5.5-1.9-8.5-2.9c-17-5.4-39.5-10.5-63.2-10.5c-23.7 0-46.4 5.1-63.6 10.5c-2.7 .8-5.2 1.7-7.5 2.5l2.5 45.6c1.4 25.4 22.5 45.3 47.9 45.3l44.3 0c26.5 0 48-21.5 48-48z\"]\n};\nconst faChessBoard = {\n prefix: 'fas',\n iconName: 'chess-board',\n icon: [448, 512, [], \"f43c\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm64 64l0 64 64 0 0-64 64 0 0 64 64 0 0-64 64 0 0 64-64 0 0 64 64 0 0 64-64 0 0 64 64 0 0 64-64 0 0-64-64 0 0 64-64 0 0-64-64 0 0 64-64 0 0-64 64 0 0-64-64 0 0-64 64 0 0-64-64 0 0-64 64 0zm64 128l64 0 0-64-64 0 0 64zm0 64l0-64-64 0 0 64 64 0zm64 0l-64 0 0 64 64 0 0-64zm0 0l64 0 0-64-64 0 0 64z\"]\n};\nconst faBuildingCircleCheck = {\n prefix: 'fas',\n iconName: 'building-circle-check',\n icon: [640, 512, [], \"e4d2\", \"M48 0C21.5 0 0 21.5 0 48L0 464c0 26.5 21.5 48 48 48l96 0 0-80c0-26.5 21.5-48 48-48s48 21.5 48 48l0 80 96 0c15.1 0 28.5-6.9 37.3-17.8C340.4 462.2 320 417.5 320 368c0-54.7 24.9-103.5 64-135.8L384 48c0-26.5-21.5-48-48-48L48 0zM64 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm112-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM80 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM272 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nconst faPersonChalkboard = {\n prefix: 'fas',\n iconName: 'person-chalkboard',\n icon: [640, 512, [], \"e53d\", \"M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8 384l0-128 16 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-288 56 0 64 0 16 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-16 0 0-64 192 0 0 192-192 0 0-32-64 0 0 48c0 26.5 21.5 48 48 48l224 0c26.5 0 48-21.5 48-48l0-224c0-26.5-21.5-48-48-48L368 0c-26.5 0-48 21.5-48 48l0 80-76.9 0-65.9 0c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9 120 480c0 17.7 14.3 32 32 32s32-14.3 32-32z\"]\n};\nconst faMarsStrokeRight = {\n prefix: 'fas',\n iconName: 'mars-stroke-right',\n icon: [640, 512, [9897, \"mars-stroke-h\"], \"f22b\", \"M208 368a112 112 0 1 0 0-224 112 112 0 1 0 0 224zm174.4-88C370.7 365.8 297.1 432 208 432c-97.2 0-176-78.8-176-176s78.8-176 176-176c89.1 0 162.7 66.2 174.4 152l33.6 0 0-56c0-13.3 10.7-24 24-24s24 10.7 24 24l0 56 32 0 0-56c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l80 80c9.4 9.4 9.4 24.6 0 33.9l-80 80c-6.9 6.9-17.2 8.9-26.2 5.2s-14.8-12.5-14.8-22.2l0-56-32 0 0 56c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-56-33.6 0z\"]\n};\nconst faMarsStrokeH = faMarsStrokeRight;\nconst faHandBackFist = {\n prefix: 'fas',\n iconName: 'hand-back-fist',\n icon: [448, 512, [\"hand-rock\"], \"f255\", \"M144 0C117.5 0 96 21.5 96 48l0 48 0 28.5L96 176c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-26.7-9 7.5C40.4 169 32 187 32 206L32 244c0 38 16.9 74 46.1 98.3L128 384l0 96c0 17.7 14.3 32 32 32l160 0c17.7 0 32-14.3 32-32l0-105.3c46.9-19 80-65 80-118.7l0-80 0-16 0-16c0-26.5-21.5-48-48-48c-12.4 0-23.6 4.7-32.1 12.3C350 83.5 329.3 64 304 64c-12.4 0-23.6 4.7-32.1 12.3C270 51.5 249.3 32 224 32c-12.4 0-23.6 4.7-32.1 12.3C190 19.5 169.3 0 144 0z\"]\n};\nconst faHandRock = faHandBackFist;\nconst faSquareCaretUp = {\n prefix: 'fas',\n iconName: 'square-caret-up',\n icon: [448, 512, [\"caret-square-up\"], \"f151\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM224 160c6.7 0 13 2.8 17.6 7.7l104 112c6.5 7 8.2 17.2 4.4 25.9s-12.5 14.4-22 14.4l-208 0c-9.5 0-18.2-5.7-22-14.4s-2.1-18.9 4.4-25.9l104-112c4.5-4.9 10.9-7.7 17.6-7.7z\"]\n};\nconst faCaretSquareUp = faSquareCaretUp;\nconst faCloudShowersWater = {\n prefix: 'fas',\n iconName: 'cloud-showers-water',\n icon: [576, 512, [], \"e4e4\", \"M224 0c38.6 0 71.9 22.8 87.2 55.7C325.7 41.1 345.8 32 368 32c38.7 0 71 27.5 78.4 64l1.6 0c35.3 0 64 28.7 64 64s-28.7 64-64 64l-320 0c-35.3 0-64-28.7-64-64s28.7-64 64-64c0-53 43-96 96-96zM140.6 292.3l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15.1-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2s15.1 21.6 8.2 32.9zm327.8-32.9c11.4 6.8 15 21.6 8.2 32.9l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2zM252.6 292.3l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15.1-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2s15.1 21.6 8.2 32.9zm103.8-32.9c11.4 6.8 15 21.6 8.2 32.9l-48 80c-6.8 11.4-21.6 15-32.9 8.2s-15.1-21.6-8.2-32.9l48-80c6.8-11.4 21.6-15.1 32.9-8.2zM306.5 421.9C329 437.4 356.5 448 384 448c26.9 0 55.4-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 501.7 417 512 384 512c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 437.2 165.1 448 192 448c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nconst faChartBar = {\n prefix: 'fas',\n iconName: 'chart-bar',\n icon: [512, 512, [\"bar-chart\"], \"f080\", \"M32 32c17.7 0 32 14.3 32 32l0 336c0 8.8 7.2 16 16 16l400 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L80 480c-44.2 0-80-35.8-80-80L0 64C0 46.3 14.3 32 32 32zm96 96c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32zm32 64l128 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 96l256 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faBarChart = faChartBar;\nconst faHandsBubbles = {\n prefix: 'fas',\n iconName: 'hands-bubbles',\n icon: [576, 512, [\"hands-wash\"], \"e05e\", \"M416 64a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm96 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM160 464a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM32 160l.1 72.6c.1 52.2 24 101 64 133.1c-.1-1.9-.1-3.8-.1-5.7l0-8c0-71.8 37-138.6 97.9-176.7l60.2-37.6c8.6-5.4 17.9-8.4 27.3-9.4l45.9-79.5c6.6-11.5 2.7-26.2-8.8-32.8s-26.2-2.7-32.8 8.8l-78 135.1c-3.3 5.7-10.7 7.7-16.4 4.4s-7.7-10.7-4.4-16.4l62-107.4c6.6-11.5 2.7-26.2-8.8-32.8S214 5 207.4 16.5l-68 117.8s0 0 0 0s0 0 0 0l-43.3 75L96 160c0-17.7-14.4-32-32-32s-32 14.4-32 32zM332.1 88.5L307.5 131c13.9 4.5 26.4 13.7 34.7 27c.9 1.5 1.8 2.9 2.5 4.4l28.9-50c6.6-11.5 2.7-26.2-8.8-32.8s-26.2-2.7-32.8 8.8zm46.4 63.7l-26.8 46.4c-.6 6-2.1 11.8-4.3 17.4l4.7 0 13.3 0s0 0 0 0l31.8 0 23-39.8c6.6-11.5 2.7-26.2-8.8-32.8s-26.2-2.7-32.8 8.8zM315.1 175c-9.4-15-29.1-19.5-44.1-10.2l-60.2 37.6C159.3 234.7 128 291.2 128 352l0 8c0 8.9 .8 17.6 2.2 26.1c35.4 8.2 61.8 40 61.8 77.9c0 6.3-.7 12.5-2.1 18.4C215.1 501 246.3 512 280 512l176 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-92 0c-6.6 0-12-5.4-12-12s5.4-12 12-12l124 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-124 0c-6.6 0-12-5.4-12-12s5.4-12 12-12l156 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-156 0c-6.6 0-12-5.4-12-12s5.4-12 12-12l124 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-136 0s0 0 0 0s0 0 0 0l-93.2 0L305 219.1c15-9.4 19.5-29.1 10.2-44.1z\"]\n};\nconst faHandsWash = faHandsBubbles;\nconst faLessThanEqual = {\n prefix: 'fas',\n iconName: 'less-than-equal',\n icon: [448, 512, [], \"f537\", \"M395.9 93.7c16.4-6.6 24.4-25.2 17.8-41.6s-25.2-24.4-41.6-17.8l-320 128C40 167.1 32 178.9 32 192s8 24.9 20.1 29.7l320 128c16.4 6.6 35-1.4 41.6-17.8s-1.4-35-17.8-41.6L150.2 192 395.9 93.7zM32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 416z\"]\n};\nconst faTrain = {\n prefix: 'fas',\n iconName: 'train',\n icon: [448, 512, [128646], \"f238\", \"M96 0C43 0 0 43 0 96L0 352c0 48 35.2 87.7 81.1 94.9l-46 46C28.1 499.9 33.1 512 43 512l39.7 0c8.5 0 16.6-3.4 22.6-9.4L160 448l128 0 54.6 54.6c6 6 14.1 9.4 22.6 9.4l39.7 0c10 0 15-12.1 7.9-19.1l-46-46c46-7.1 81.1-46.9 81.1-94.9l0-256c0-53-43-96-96-96L96 0zM64 96c0-17.7 14.3-32 32-32l256 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32L96 224c-17.7 0-32-14.3-32-32l0-96zM224 288a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nconst faEyeLowVision = {\n prefix: 'fas',\n iconName: 'eye-low-vision',\n icon: [640, 512, [\"low-vision\"], \"f2a8\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zM223 149.5c48.6-44.3 123-50.8 179.3-11.7c60.8 42.4 78.9 123.2 44.2 186.9L408 294.5c8.4-19.3 10.6-41.4 4.8-63.3c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3c0 10.2-2.4 19.8-6.6 28.3L223 149.5zm223.1 298L83.1 161.5c-11 14.4-20.5 28.7-28.4 42.2l339 265.7c18.7-5.5 36.2-13 52.6-21.8zM34.5 268.3c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c3.1 0 6.1-.1 9.2-.2L33.1 247.8c-1.8 6.8-1.3 14 1.4 20.5z\"]\n};\nconst faLowVision = faEyeLowVision;\nconst faCrow = {\n prefix: 'fas',\n iconName: 'crow',\n icon: [640, 512, [], \"f520\", \"M456 0c-48.6 0-88 39.4-88 88l0 29.2L12.5 390.6c-14 10.8-16.6 30.9-5.9 44.9s30.9 16.6 44.9 5.9L126.1 384l133.1 0 46.6 113.1c5 12.3 19.1 18.1 31.3 13.1s18.1-19.1 13.1-31.3L311.1 384l40.9 0c1.1 0 2.1 0 3.2 0l46.6 113.2c5 12.3 19.1 18.1 31.3 13.1s18.1-19.1 13.1-31.3l-42-102C484.9 354.1 544 280 544 192l0-64 0-8 80.5-20.1c8.6-2.1 13.8-10.8 11.6-19.4C629 52 603.4 32 574 32l-50.1 0C507.7 12.5 483.3 0 456 0zm0 64a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faSailboat = {\n prefix: 'fas',\n iconName: 'sailboat',\n icon: [576, 512, [], \"e445\", \"M256 16c0-7 4.5-13.2 11.2-15.3s13.9 .4 17.9 6.1l224 320c3.4 4.9 3.8 11.3 1.1 16.6s-8.2 8.6-14.2 8.6l-224 0c-8.8 0-16-7.2-16-16l0-320zM212.1 96.5c7 1.9 11.9 8.2 11.9 15.5l0 224c0 8.8-7.2 16-16 16L80 352c-5.7 0-11-3-13.8-8s-2.9-11-.1-16l128-224c3.6-6.3 11-9.4 18-7.5zM5.7 404.3C2.8 394.1 10.5 384 21.1 384l533.8 0c10.6 0 18.3 10.1 15.4 20.3l-4 14.3C550.7 473.9 500.4 512 443 512L133 512C75.6 512 25.3 473.9 9.7 418.7l-4-14.3z\"]\n};\nconst faWindowRestore = {\n prefix: 'fas',\n iconName: 'window-restore',\n icon: [512, 512, [], \"f2d2\", \"M432 64L208 64c-8.8 0-16 7.2-16 16l0 16-64 0 0-16c0-44.2 35.8-80 80-80L432 0c44.2 0 80 35.8 80 80l0 224c0 44.2-35.8 80-80 80l-16 0 0-64 16 0c8.8 0 16-7.2 16-16l0-224c0-8.8-7.2-16-16-16zM0 192c0-35.3 28.7-64 64-64l256 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 192zm64 32c0 17.7 14.3 32 32 32l192 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L96 192c-17.7 0-32 14.3-32 32z\"]\n};\nconst faSquarePlus = {\n prefix: 'fas',\n iconName: 'square-plus',\n icon: [448, 512, [61846, \"plus-square\"], \"f0fe\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM200 344l0-64-64 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l64 0 0-64c0-13.3 10.7-24 24-24s24 10.7 24 24l0 64 64 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-64 0 0 64c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n};\nconst faPlusSquare = faSquarePlus;\nconst faToriiGate = {\n prefix: 'fas',\n iconName: 'torii-gate',\n icon: [512, 512, [9961], \"f6a1\", \"M0 80c0 26.5 21.5 48 48 48l16 0 0 64 64 0 0-64 96 0 0 64 64 0 0-64 96 0 0 64 64 0 0-64 16 0c26.5 0 48-21.5 48-48l0-66.6C512 6 506 0 498.6 0c-1.7 0-3.4 .3-5 1l-49 19.6C425.7 28.1 405.5 32 385.2 32L126.8 32c-20.4 0-40.5-3.9-59.4-11.4L18.4 1c-1.6-.6-3.3-1-5-1C6 0 0 6 0 13.4L0 80zM64 288l0 192c0 17.7 14.3 32 32 32s32-14.3 32-32l0-192 256 0 0 192c0 17.7 14.3 32 32 32s32-14.3 32-32l0-192 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0z\"]\n};\nconst faFrog = {\n prefix: 'fas',\n iconName: 'frog',\n icon: [576, 512, [], \"f52e\", \"M368 32c41.7 0 75.9 31.8 79.7 72.5l85.6 26.3c25.4 7.8 42.8 31.3 42.8 57.9c0 21.8-11.7 41.9-30.7 52.7L400.8 323.5 493.3 416l50.7 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-8.5 0-16.6-3.4-22.6-9.4L346.9 360.2c11.7-36 3.2-77.1-25.4-105.7c-40.6-40.6-106.3-40.6-146.9-.1L101 324.4c-6.4 6.1-6.7 16.2-.6 22.6s16.2 6.6 22.6 .6l73.8-70.2 .1-.1 .1-.1c3.5-3.5 7.3-6.6 11.3-9.2c27.9-18.5 65.9-15.4 90.5 9.2c24.7 24.7 27.7 62.9 9 90.9c-2.6 3.8-5.6 7.5-9 10.9L261.8 416l90.2 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L64 480c-35.3 0-64-28.7-64-64C0 249.6 127 112.9 289.3 97.5C296.2 60.2 328.8 32 368 32zm0 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nconst faBucket = {\n prefix: 'fas',\n iconName: 'bucket',\n icon: [448, 512, [], \"e4cf\", \"M96 152l0 8-48 0 0-8C48 68.1 116.1 0 200 0l48 0c83.9 0 152 68.1 152 152l0 8-48 0 0-8c0-57.4-46.6-104-104-104l-48 0C142.6 48 96 94.6 96 152zM0 224c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-5.1 0L388.5 469c-2.6 24.4-23.2 43-47.7 43l-233.6 0c-24.6 0-45.2-18.5-47.7-43L37.1 256 32 256c-17.7 0-32-14.3-32-32z\"]\n};\nconst faImage = {\n prefix: 'fas',\n iconName: 'image',\n icon: [512, 512, [], \"f03e\", \"M0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zM323.8 202.5c-4.5-6.6-11.9-10.5-19.8-10.5s-15.4 3.9-19.8 10.5l-87 127.6L170.7 297c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6l96 0 32 0 208 0c8.9 0 17.1-4.9 21.2-12.8s3.6-17.4-1.4-24.7l-120-176zM112 192a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nconst faMicrophone = {\n prefix: 'fas',\n iconName: 'microphone',\n icon: [384, 512, [], \"f130\", \"M192 0C139 0 96 43 96 96l0 160c0 53 43 96 96 96s96-43 96-96l0-160c0-53-43-96-96-96zM64 216c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40c0 89.1 66.2 162.7 152 174.4l0 33.6-48 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l72 0 72 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0 0-33.6c85.8-11.7 152-85.3 152-174.4l0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40c0 70.7-57.3 128-128 128s-128-57.3-128-128l0-40z\"]\n};\nconst faCow = {\n prefix: 'fas',\n iconName: 'cow',\n icon: [640, 512, [128004], \"f6c8\", \"M96 224l0 32 0 160c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-88.2c9.9 6.6 20.6 12 32 16.1l0 24.2c0 8.8 7.2 16 16 16s16-7.2 16-16l0-16.9c5.3 .6 10.6 .9 16 .9s10.7-.3 16-.9l0 16.9c0 8.8 7.2 16 16 16s16-7.2 16-16l0-24.2c11.4-4 22.1-9.4 32-16.1l0 88.2c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-160 32 32 0 49.5c0 9.5 2.8 18.7 8.1 26.6L530 427c8.8 13.1 23.5 21 39.3 21c22.5 0 41.9-15.9 46.3-38l20.3-101.6c2.6-13-.3-26.5-8-37.3l-3.9-5.5 0-81.6c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 14.4-52.9-74.1C496 86.5 452.4 64 405.9 64L272 64l-16 0-64 0-48 0C77.7 64 24 117.7 24 184l0 54C9.4 249.8 0 267.8 0 288l0 17.6c0 8 6.4 14.4 14.4 14.4C46.2 320 72 294.2 72 262.4l0-6.4 0-32 0-40c0-24.3 12.1-45.8 30.5-58.9C98.3 135.9 96 147.7 96 160l0 64zM560 336a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM166.6 166.6c-4.2-4.2-6.6-10-6.6-16c0-12.5 10.1-22.6 22.6-22.6l178.7 0c12.5 0 22.6 10.1 22.6 22.6c0 6-2.4 11.8-6.6 16l-23.4 23.4C332.2 211.8 302.7 224 272 224s-60.2-12.2-81.9-33.9l-23.4-23.4z\"]\n};\nconst faCaretUp = {\n prefix: 'fas',\n iconName: 'caret-up',\n icon: [320, 512, [], \"f0d8\", \"M182.6 137.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8l256 0c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-128-128z\"]\n};\nconst faScrewdriver = {\n prefix: 'fas',\n iconName: 'screwdriver',\n icon: [512, 512, [129691], \"f54a\", \"M465 7c-8.5-8.5-22-9.4-31.6-2.1l-104 80c-5.9 4.5-9.4 11.6-9.4 19l0 54.1-85.6 85.6c6.7 4.2 13 9.3 18.8 15.1s10.9 12.2 15.1 18.8L353.9 192l54.1 0c7.5 0 14.5-3.5 19-9.4l80-104c7.4-9.6 6.5-23.1-2.1-31.6L465 7zM121.4 281.4l-112 112c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0l112-112c30.2-30.2 30.2-79.1 0-109.3s-79.1-30.2-109.3 0z\"]\n};\nconst faFolderClosed = {\n prefix: 'fas',\n iconName: 'folder-closed',\n icon: [512, 512, [], \"e185\", \"M448 480L64 480c-35.3 0-64-28.7-64-64L0 192l512 0 0 224c0 35.3-28.7 64-64 64zm64-320L0 160 0 96C0 60.7 28.7 32 64 32l128 0c20.1 0 39.1 9.5 51.2 25.6l19.2 25.6c6 8.1 15.5 12.8 25.6 12.8l160 0c35.3 0 64 28.7 64 64z\"]\n};\nconst faHouseTsunami = {\n prefix: 'fas',\n iconName: 'house-tsunami',\n icon: [576, 512, [], \"e515\", \"M80.8 136.5C104.9 93.8 152.6 64 209 64c16.9 0 33.1 2.7 48.2 7.7c16.8 5.5 34.9-3.6 40.4-20.4s-3.6-34.9-20.4-40.4C255.8 3.8 232.8 0 209 0C95.2 0 0 88 0 200c0 91.6 53.5 172.1 142.2 194.1c13.4 3.8 27.5 5.9 42.2 5.9c.7 0 1.4 0 2.1-.1c1.8 0 3.7 .1 5.5 .1c0 0 0 0 0 0c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.5-27.3-10.1-39.2-1.7c0 0 0 0 0 0C439.4 325.2 410.9 336 384 336c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0c-22.4 15.5-49.9 26.1-77.4 26.1c0 0-.1 0-.1 0c-12.4 0-24-1.5-34.9-4.3C121.6 320.2 96 287 96 248c0-48.5 39.5-88 88.4-88c13.5 0 26.1 3 37.5 8.3c16 7.5 35.1 .6 42.5-15.5s.6-35.1-15.5-42.5C229.3 101.1 207.4 96 184.4 96c-40 0-76.4 15.4-103.6 40.5zm252-18.1c-8.1 6-12.8 15.5-12.8 25.6l0 121c1.6 1 3.3 2 4.8 3.1c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.3 78.1 3.4c10.6 8.8 24.2 15.6 37.3 18.6c5.8 1.4 11.2 3.4 16.2 6.2c.7-2.7 1.1-5.5 1.1-8.4l-.4-144c0-10-4.7-19.4-12.7-25.5l-95.5-72c-11.4-8.6-27.1-8.6-38.5 0l-96 72zM384 448c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1c0 0 0 0 0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7c0 0 0 0 0 0C439.4 437.2 410.9 448 384 448z\"]\n};\nconst faSquareNfi = {\n prefix: 'fas',\n iconName: 'square-nfi',\n icon: [448, 512, [], \"e576\", \"M0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zm75.7 64.6C68.8 162.5 64 168.8 64 176l0 160c0 8.8 7.2 16 16 16s16-7.2 16-16l0-102.2 66.3 110.5c3.7 6.2 11.1 9.1 18 7.2s11.7-8.2 11.7-15.4l0-160c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 102.2L93.7 167.8c-3.7-6.2-11.1-9.1-18-7.2zM224 176l0 64 0 96c0 8.8 7.2 16 16 16s16-7.2 16-16l0-80 48 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-48 0 0-32 48 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-64 0c-8.8 0-16 7.2-16 16zm160 0c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 160c0 8.8 7.2 16 16 16s16-7.2 16-16l0-160z\"]\n};\nconst faArrowUpFromGroundWater = {\n prefix: 'fas',\n iconName: 'arrow-up-from-ground-water',\n icon: [576, 512, [], \"e4b5\", \"M288 352c17.7 0 32-14.3 32-32l0-210.7 25.4 25.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-80-80c-12.5-12.5-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L256 109.3 256 320c0 17.7 14.3 32 32 32zm-18.5 69.9C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1c0 0 0 0 0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7c0 0 0 0 0 0C439.4 437.2 410.9 448 384 448c-27.5 0-55-10.6-77.5-26.1c-11.1-7.9-25.9-7.9-37 0zM192 192L48 192c-26.5 0-48 21.5-48 48L0 425c5.3-3.1 11.2-5.4 17.5-6.9c13.1-3.1 26.7-9.8 37.3-18.6c22.2-18.7 54.3-20.1 78.1-3.4c18 12.4 40.1 20.3 59.1 20.3L192 192zm384 48c0-26.5-21.5-48-48-48l-144 0 0 224.5s0 0 0 0c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.4 78.1 3.4c10.6 8.8 24.2 15.6 37.3 18.6c6.3 1.5 12.1 3.8 17.5 6.9l0-185z\"]\n};\nconst faMartiniGlass = {\n prefix: 'fas',\n iconName: 'martini-glass',\n icon: [512, 512, [127864, \"glass-martini-alt\"], \"f57b\", \"M32 0C19.1 0 7.4 7.8 2.4 19.8s-2.2 25.7 6.9 34.9L224 269.3 224 448l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0 96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-178.7L502.6 54.6c9.2-9.2 11.9-22.9 6.9-34.9S492.9 0 480 0L32 0zM173.3 128l-64-64 293.5 0-64 64-165.5 0z\"]\n};\nconst faGlassMartiniAlt = faMartiniGlass;\nconst faRotateLeft = {\n prefix: 'fas',\n iconName: 'rotate-left',\n icon: [512, 512, [\"rotate-back\", \"rotate-backward\", \"undo-alt\"], \"f2ea\", \"M48.5 224L40 224c-13.3 0-24-10.7-24-24L16 72c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2L98.6 96.6c87.6-86.5 228.7-86.2 315.8 1c87.5 87.5 87.5 229.3 0 316.8s-229.3 87.5-316.8 0c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0c62.5 62.5 163.8 62.5 226.3 0s62.5-163.8 0-226.3c-62.2-62.2-162.7-62.5-225.3-1L185 183c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8L48.5 224z\"]\n};\nconst faRotateBack = faRotateLeft;\nconst faRotateBackward = faRotateLeft;\nconst faUndoAlt = faRotateLeft;\nconst faTableColumns = {\n prefix: 'fas',\n iconName: 'table-columns',\n icon: [512, 512, [\"columns\"], \"f0db\", \"M0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zm64 64l0 256 160 0 0-256L64 160zm384 0l-160 0 0 256 160 0 0-256z\"]\n};\nconst faColumns = faTableColumns;\nconst faLemon = {\n prefix: 'fas',\n iconName: 'lemon',\n icon: [448, 512, [127819], \"f094\", \"M448 96c0-35.3-28.7-64-64-64c-6.6 0-13 1-19 2.9c-22.5 7-48.1 14.9-71 9c-75.2-19.1-156.4 11-213.7 68.3S-7.2 250.8 11.9 326c5.8 22.9-2 48.4-9 71C1 403 0 409.4 0 416c0 35.3 28.7 64 64 64c6.6 0 13-1 19.1-2.9c22.5-7 48.1-14.9 71-9c75.2 19.1 156.4-11 213.7-68.3s87.5-138.5 68.3-213.7c-5.8-22.9 2-48.4 9-71c1.9-6 2.9-12.4 2.9-19.1zM212.5 127.4c-54.6 16-101.1 62.5-117.1 117.1C92.9 253 84 257.8 75.5 255.4S62.2 244 64.6 235.5c19.1-65.1 73.7-119.8 138.9-138.9c8.5-2.5 17.4 2.4 19.9 10.9s-2.4 17.4-10.9 19.9z\"]\n};\nconst faHeadSideMask = {\n prefix: 'fas',\n iconName: 'head-side-mask',\n icon: [576, 512, [], \"e063\", \"M32 224.2c0-22.2 3.2-43.6 9.2-63.9L262.2 321c-4 9.5-6.2 20-6.2 31l0 160-128 0c-17.7 0-32-14.3-32-32l0-72.7c0-16.7-6.9-32.5-17.1-45.8C48.6 322.4 32 274.1 32 224.2zm248.3 70.4L53 129.3C88.7 53 166.2 0 256 0l24 0c95.2 0 181.2 69.3 197.3 160.2c2.3 13 6.8 25.7 15.1 36l42 52.6c5.4 6.7 8.6 14.8 9.4 23.2L336 272c-21.7 0-41.3 8.6-55.7 22.6zM336 304l198 0s0 0 0 0l10 0-19.7 64L368 368c-8.8 0-16 7.2-16 16s7.2 16 16 16l146.5 0-9.8 32L368 432c-8.8 0-16 7.2-16 16s7.2 16 16 16l126.8 0-.9 2.8c-8.3 26.9-33.1 45.2-61.2 45.2L288 512l0-160c0-14 6-26.7 15.6-35.4c0 0 0 0 0 0c8.5-7.8 19.9-12.6 32.4-12.6zm48-80a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faHandshake = {\n prefix: 'fas',\n iconName: 'handshake',\n icon: [640, 512, [], \"f2b5\", \"M323.4 85.2l-96.8 78.4c-16.1 13-19.2 36.4-7 53.1c12.9 17.8 38 21.3 55.3 7.8l99.3-77.2c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L512 316.8 512 128l-.7 0-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2zm22.8 124.4l-51.7 40.2C263 274.4 217.3 268 193.7 235.6c-22.2-30.5-16.6-73.1 12.7-96.8l83.2-67.3c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-72 48 0 224 28.2 0 91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c4.5-4.9 7.8-10.6 9.9-16.5c19.4 13 45.8 10.3 62.1-7.5c17.9-19.5 16.6-49.9-2.9-67.8l-134.2-123zM16 128c-8.8 0-16 7.2-16 16L0 352c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-224-80 0zM48 320a16 16 0 1 1 0 32 16 16 0 1 1 0-32zM544 128l0 224c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-208c0-8.8-7.2-16-16-16l-80 0zm32 208a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nconst faGem = {\n prefix: 'fas',\n iconName: 'gem',\n icon: [512, 512, [128142], \"f3a5\", \"M116.7 33.8c4.5-6.1 11.7-9.8 19.3-9.8l240 0c7.6 0 14.8 3.6 19.3 9.8l112 152c6.8 9.2 6.1 21.9-1.5 30.4l-232 256c-4.5 5-11 7.9-17.8 7.9s-13.2-2.9-17.8-7.9l-232-256c-7.7-8.5-8.3-21.2-1.5-30.4l112-152zm38.5 39.8c-3.3 2.5-4.2 7-2.1 10.5l57.4 95.6L63.3 192c-4.1 .3-7.3 3.8-7.3 8s3.2 7.6 7.3 8l192 16c.4 0 .9 0 1.3 0l192-16c4.1-.3 7.3-3.8 7.3-8s-3.2-7.6-7.3-8L301.5 179.8l57.4-95.6c2.1-3.5 1.2-8.1-2.1-10.5s-7.9-2-10.7 1L256 172.2 165.9 74.6c-2.8-3-7.4-3.4-10.7-1z\"]\n};\nconst faDolly = {\n prefix: 'fas',\n iconName: 'dolly',\n icon: [576, 512, [\"dolly-box\"], \"f472\", \"M0 32C0 14.3 14.3 0 32 0l72.9 0c27.5 0 52 17.6 60.7 43.8L257.7 320c30.1 .5 56.8 14.9 74 37l202.1-67.4c16.8-5.6 34.9 3.5 40.5 20.2s-3.5 34.9-20.2 40.5L352 417.7c-.9 52.2-43.5 94.3-96 94.3c-53 0-96-43-96-96c0-30.8 14.5-58.2 37-75.8L104.9 64 32 64C14.3 64 0 49.7 0 32zM244.8 134.5c-5.5-16.8 3.7-34.9 20.5-40.3L311 79.4l19.8 60.9 60.9-19.8L371.8 59.6l45.7-14.8c16.8-5.5 34.9 3.7 40.3 20.5l49.4 152.2c5.5 16.8-3.7 34.9-20.5 40.3L334.5 307.2c-16.8 5.5-34.9-3.7-40.3-20.5L244.8 134.5z\"]\n};\nconst faDollyBox = faDolly;\nconst faSmoking = {\n prefix: 'fas',\n iconName: 'smoking',\n icon: [640, 512, [128684], \"f48d\", \"M448 32l0 11c0 38.2 15.2 74.8 42.2 101.8l21 21c21 21 32.8 49.5 32.8 79.2l0 11c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-11c0-12.7-5.1-24.9-14.1-33.9l-21-21C405.9 151.1 384 98.1 384 43l0-11c0-17.7 14.3-32 32-32s32 14.3 32 32zM576 256l0-11c0-38.2-15.2-74.8-42.2-101.8l-21-21c-21-21-32.8-49.5-32.8-79.2l0-11c0-17.7 14.3-32 32-32s32 14.3 32 32l0 11c0 12.7 5.1 24.9 14.1 33.9l21 21c39 39 60.9 91.9 60.9 147.1l0 11c0 17.7-14.3 32-32 32s-32-14.3-32-32zM0 416c0-35.3 28.7-64 64-64l352 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32L64 512c-35.3 0-64-28.7-64-64l0-32zm224 0l0 32 160 0 0-32-160 0zm288-64c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96c0-17.7 14.3-32 32-32zm96 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96c0-17.7 14.3-32 32-32z\"]\n};\nconst faMinimize = {\n prefix: 'fas',\n iconName: 'minimize',\n icon: [512, 512, [\"compress-arrows-alt\"], \"f78c\", \"M456 224l-144 0c-13.3 0-24-10.7-24-24l0-144c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l40 40L442.3 5.7C446 2 450.9 0 456 0s10 2 13.7 5.7l36.7 36.7C510 46 512 50.9 512 56s-2 10-5.7 13.7L433 143l40 40c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8zm0 64c9.7 0 18.5 5.8 22.2 14.8s1.7 19.3-5.2 26.2l-40 40 73.4 73.4c3.6 3.6 5.7 8.5 5.7 13.7s-2 10-5.7 13.7l-36.7 36.7C466 510 461.1 512 456 512s-10-2-13.7-5.7L369 433l-40 40c-6.9 6.9-17.2 8.9-26.2 5.2s-14.8-12.5-14.8-22.2l0-144c0-13.3 10.7-24 24-24l144 0zm-256 0c13.3 0 24 10.7 24 24l0 144c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-40-40L69.7 506.3C66 510 61.1 512 56 512s-10-2-13.7-5.7L5.7 469.7C2 466 0 461.1 0 456s2-10 5.7-13.7L79 369 39 329c-6.9-6.9-8.9-17.2-5.2-26.2s12.5-14.8 22.2-14.8l144 0zM56 224c-9.7 0-18.5-5.8-22.2-14.8s-1.7-19.3 5.2-26.2l40-40L5.7 69.7C2 66 0 61.1 0 56s2-10 5.7-13.7L42.3 5.7C46 2 50.9 0 56 0s10 2 13.7 5.7L143 79l40-40c6.9-6.9 17.2-8.9 26.2-5.2s14.8 12.5 14.8 22.2l0 144c0 13.3-10.7 24-24 24L56 224z\"]\n};\nconst faCompressArrowsAlt = faMinimize;\nconst faMonument = {\n prefix: 'fas',\n iconName: 'monument',\n icon: [384, 512, [], \"f5a6\", \"M180.7 4.7c6.2-6.2 16.4-6.2 22.6 0l80 80c2.5 2.5 4.1 5.8 4.6 9.3l40.2 322L55.9 416 96.1 94c.4-3.5 2-6.8 4.6-9.3l80-80zM152 272c-13.3 0-24 10.7-24 24s10.7 24 24 24l80 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-80 0zM32 448l320 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faSnowplow = {\n prefix: 'fas',\n iconName: 'snowplow',\n icon: [640, 512, [], \"f7d2\", \"M298.9 64l68.6 160L256 224l-64-64 0-96 106.9 0zM445.1 242.7l-87.4-204C347.6 15.3 324.5 0 298.9 0L176 0c-26.5 0-48 21.5-48 48l0 112-32 0c-17.7 0-32 14.3-32 32l0 106.8C26.2 316.8 0 355.3 0 400c0 61.9 50.1 112 112 112l256 0c61.9 0 112-50.1 112-112c0-17.2-3.9-33.5-10.8-48l42.8 0 0 50.7c0 17 6.7 33.3 18.7 45.3l54.6 54.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L576 402.7l0-82.7 0-84.8L633 164c11-13.8 8.8-33.9-5-45s-33.9-8.8-45 5l-57 71.2c-9.1 11.3-14 25.4-14 40l0 52.8-64 0 0-31.3c.1-2.4-.2-4.8-.6-7.1s-1.2-4.7-2.2-6.8zM368 352c26.5 0 48 21.5 48 48s-21.5 48-48 48l-256 0c-26.5 0-48-21.5-48-48s21.5-48 48-48l256 0zM144 400a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm216 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm-56-24a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM200 424a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nconst faAnglesRight = {\n prefix: 'fas',\n iconName: 'angles-right',\n icon: [512, 512, [187, \"angle-double-right\"], \"f101\", \"M470.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 256 265.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160zm-352 160l160-160c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L210.7 256 73.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0z\"]\n};\nconst faAngleDoubleRight = faAnglesRight;\nconst faCannabis = {\n prefix: 'fas',\n iconName: 'cannabis',\n icon: [512, 512, [], \"f55f\", \"M256 0c5.3 0 10.3 2.7 13.3 7.1c15.8 23.5 36.7 63.7 49.2 109c7.2 26.4 11.8 55.2 10.4 84c11.5-8.8 23.7-16.7 35.8-23.6c41-23.3 84.4-36.9 112.2-42.5c5.2-1 10.7 .6 14.4 4.4s5.4 9.2 4.4 14.5c-5.6 27.7-19.3 70.9-42.7 111.7c-9.1 15.9-19.9 31.7-32.4 46.3c27.8 6.6 52.4 17.3 67.2 25.5c5.1 2.8 8.2 8.2 8.2 14s-3.2 11.2-8.2 14c-15.2 8.4-40.9 19.5-69.8 26.1c-20.2 4.6-42.9 7.2-65.2 4.6l8.3 33.1c1.5 6.1-.6 12.4-5.5 16.4s-11.6 4.6-17.2 1.9L280 417.2l0 70.8c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-70.8-58.5 29.1c-5.6 2.8-12.3 2.1-17.2-1.9s-7-10.3-5.5-16.4l8.3-33.1c-22.2 2.6-45 0-65.2-4.6c-28.9-6.6-54.6-17.6-69.8-26.1c-5.1-2.8-8.2-8.2-8.2-14s3.2-11.2 8.2-14c14.8-8.2 39.4-18.8 67.2-25.5C78.9 296.3 68.1 280.5 59 264.6c-23.4-40.8-37.1-84-42.7-111.7c-1.1-5.2 .6-10.7 4.4-14.5s9.2-5.4 14.4-4.4c27.9 5.5 71.2 19.2 112.2 42.5c12.1 6.9 24.3 14.7 35.8 23.6c-1.4-28.7 3.1-57.6 10.4-84c12.5-45.3 33.4-85.5 49.2-109c3-4.4 8-7.1 13.3-7.1z\"]\n};\nconst faCirclePlay = {\n prefix: 'fas',\n iconName: 'circle-play',\n icon: [512, 512, [61469, \"play-circle\"], \"f144\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM188.3 147.1c-7.6 4.2-12.3 12.3-12.3 20.9l0 176c0 8.7 4.7 16.7 12.3 20.9s16.8 4.1 24.3-.5l144-88c7.1-4.4 11.5-12.1 11.5-20.5s-4.4-16.1-11.5-20.5l-144-88c-7.4-4.5-16.7-4.7-24.3-.5z\"]\n};\nconst faPlayCircle = faCirclePlay;\nconst faTablets = {\n prefix: 'fas',\n iconName: 'tablets',\n icon: [640, 512, [], \"f490\", \"M614.3 247c-5.2 7.9-16.2 8.5-22.9 1.8L391.2 48.6c-6.7-6.7-6.2-17.8 1.8-22.9C418.1 9.4 447.9 0 480 0c88.4 0 160 71.6 160 160c0 32.1-9.4 61.9-25.7 87zM567 294.3c-25 16.3-54.9 25.7-87 25.7c-88.4 0-160-71.6-160-160c0-32.1 9.4-61.9 25.7-87c5.2-7.9 16.2-8.5 22.9-1.8L568.8 271.4c6.7 6.7 6.2 17.8-1.8 22.9zM301.5 368c9.5 0 16.9 8.2 15 17.5C301.1 457.8 236.9 512 160 512S18.9 457.8 3.5 385.5c-2-9.3 5.5-17.5 15-17.5l283.1 0zm0-32L18.5 336c-9.5 0-16.9-8.2-15-17.5C18.9 246.2 83.1 192 160 192s141.1 54.2 156.5 126.5c2 9.3-5.5 17.5-15 17.5z\"]\n};\nconst faEthernet = {\n prefix: 'fas',\n iconName: 'ethernet',\n icon: [512, 512, [], \"f796\", \"M0 224L0 416c0 17.7 14.3 32 32 32l64 0 0-112c0-8.8 7.2-16 16-16s16 7.2 16 16l0 112 64 0 0-112c0-8.8 7.2-16 16-16s16 7.2 16 16l0 112 64 0 0-112c0-8.8 7.2-16 16-16s16 7.2 16 16l0 112 64 0 0-112c0-8.8 7.2-16 16-16s16 7.2 16 16l0 112 64 0c17.7 0 32-14.3 32-32l0-192c0-17.7-14.3-32-32-32l-32 0 0-32c0-17.7-14.3-32-32-32l-32 0 0-32c0-17.7-14.3-32-32-32L160 64c-17.7 0-32 14.3-32 32l0 32-32 0c-17.7 0-32 14.3-32 32l0 32-32 0c-17.7 0-32 14.3-32 32z\"]\n};\nconst faEuroSign = {\n prefix: 'fas',\n iconName: 'euro-sign',\n icon: [320, 512, [8364, \"eur\", \"euro\"], \"f153\", \"M48.1 240c-.1 2.7-.1 5.3-.1 8l0 16c0 2.7 0 5.3 .1 8L32 272c-17.7 0-32 14.3-32 32s14.3 32 32 32l28.3 0C89.9 419.9 170 480 264 480l24 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-24 0c-57.9 0-108.2-32.4-133.9-80L256 336c17.7 0 32-14.3 32-32s-14.3-32-32-32l-143.8 0c-.1-2.6-.2-5.3-.2-8l0-16c0-2.7 .1-5.4 .2-8L256 240c17.7 0 32-14.3 32-32s-14.3-32-32-32l-125.9 0c25.7-47.6 76-80 133.9-80l24 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-24 0C170 32 89.9 92.1 60.3 176L32 176c-17.7 0-32 14.3-32 32s14.3 32 32 32l16.1 0z\"]\n};\nconst faEur = faEuroSign;\nconst faEuro = faEuroSign;\nconst faChair = {\n prefix: 'fas',\n iconName: 'chair',\n icon: [448, 512, [129681], \"f6c0\", \"M248 48l0 208 48 0 0-197.3c23.9 13.8 40 39.7 40 69.3l0 128 48 0 0-128C384 57.3 326.7 0 256 0L192 0C121.3 0 64 57.3 64 128l0 128 48 0 0-128c0-29.6 16.1-55.5 40-69.3L152 256l48 0 0-208 48 0zM48 288c-12.1 0-23.2 6.8-28.6 17.7l-16 32c-5 9.9-4.4 21.7 1.4 31.1S20.9 384 32 384l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96 256 0 0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96c11.1 0 21.4-5.7 27.2-15.2s6.4-21.2 1.4-31.1l-16-32C423.2 294.8 412.1 288 400 288L48 288z\"]\n};\nconst faCircleCheck = {\n prefix: 'fas',\n iconName: 'circle-check',\n icon: [512, 512, [61533, \"check-circle\"], \"f058\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nconst faCheckCircle = faCircleCheck;\nconst faCircleStop = {\n prefix: 'fas',\n iconName: 'circle-stop',\n icon: [512, 512, [62094, \"stop-circle\"], \"f28d\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM192 160l128 0c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-128 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32z\"]\n};\nconst faStopCircle = faCircleStop;\nconst faCompassDrafting = {\n prefix: 'fas',\n iconName: 'compass-drafting',\n icon: [512, 512, [\"drafting-compass\"], \"f568\", \"M352 96c0 14.3-3.1 27.9-8.8 40.2L396 227.4c-23.7 25.3-54.2 44.1-88.5 53.6L256 192c0 0 0 0 0 0s0 0 0 0l-68 117.5c21.5 6.8 44.3 10.5 68.1 10.5c70.7 0 133.8-32.7 174.9-84c11.1-13.8 31.2-16 45-5s16 31.2 5 45C428.1 341.8 347 384 256 384c-35.4 0-69.4-6.4-100.7-18.1L98.7 463.7C94 471.8 87 478.4 78.6 482.6L23.2 510.3c-5 2.5-10.9 2.2-15.6-.7S0 501.5 0 496l0-55.4c0-8.4 2.2-16.7 6.5-24.1l60-103.7C53.7 301.6 41.8 289.3 31.2 276c-11.1-13.8-8.8-33.9 5-45s33.9-8.8 45 5c5.7 7.1 11.8 13.8 18.2 20.1l69.4-119.9c-5.6-12.2-8.8-25.8-8.8-40.2c0-53 43-96 96-96s96 43 96 96zm21 297.9c32.6-12.8 62.5-30.8 88.9-52.9l43.7 75.5c4.2 7.3 6.5 15.6 6.5 24.1l0 55.4c0 5.5-2.9 10.7-7.6 13.6s-10.6 3.2-15.6 .7l-55.4-27.7c-8.4-4.2-15.4-10.8-20.1-18.9L373 393.9zM256 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faDraftingCompass = faCompassDrafting;\nconst faPlateWheat = {\n prefix: 'fas',\n iconName: 'plate-wheat',\n icon: [512, 512, [], \"e55a\", \"M176 32c44.2 0 80 35.8 80 80l0 16c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80l0-16c0-8.8 7.2-16 16-16zM56 64l48 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zM24 136l112 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L24 184c-13.3 0-24-10.7-24-24s10.7-24 24-24zm8 96c0-13.3 10.7-24 24-24l48 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24zM272 48c0-8.8 7.2-16 16-16c44.2 0 80 35.8 80 80l0 16c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80l0-16zM400 32c44.2 0 80 35.8 80 80l0 16c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80l0-16c0-8.8 7.2-16 16-16zm80 160l0 16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16l0-16c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM352 176c8.8 0 16 7.2 16 16l0 16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16l0-16c0-44.2 35.8-80 80-80zm-96 16l0 16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16l0-16c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM3.5 347.6C1.6 332.9 13 320 27.8 320l456.4 0c14.8 0 26.2 12.9 24.4 27.6C502.3 397.8 464.2 437 416 446l0 2c0 17.7-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32l0-2c-48.2-9-86.3-48.2-92.5-98.4z\"]\n};\nconst faIcicles = {\n prefix: 'fas',\n iconName: 'icicles',\n icon: [512, 512, [], \"f7ad\", \"M75.8 304.8L1 35.7c-.7-2.5-1-5-1-7.5C0 12.6 12.6 0 28.2 0H482.4C498.8 0 512 13.2 512 29.6c0 1.6-.1 3.3-.4 4.9L434.6 496.1c-1.5 9.2-9.5 15.9-18.8 15.9c-9.2 0-17.1-6.6-18.7-15.6L336 160 307.2 303.9c-1.9 9.3-10.1 16.1-19.6 16.1c-9.2 0-17.2-6.2-19.4-15.1L240 192 210.6 368.2c-1.5 9.1-9.4 15.8-18.6 15.8s-17.1-6.7-18.6-15.8L144 192 115.9 304.3c-2.3 9.2-10.6 15.7-20.1 15.7c-9.3 0-17.5-6.2-20-15.2z\"]\n};\nconst faPersonShelter = {\n prefix: 'fas',\n iconName: 'person-shelter',\n icon: [512, 512, [], \"e54f\", \"M271.9 4.2c-9.8-5.6-21.9-5.6-31.8 0l-224 128C6.2 137.9 0 148.5 0 160L0 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-301.4L256 68.9 448 178.6 448 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-320c0-11.5-6.2-22.1-16.1-27.8l-224-128zM256 208a40 40 0 1 0 0-80 40 40 0 1 0 0 80zm-8 280l0-88 16 0 0 88c0 13.3 10.7 24 24 24s24-10.7 24-24l0-174.5 26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-37.9-70.3c-15.3-28.5-45.1-46.3-77.5-46.3l-19.5 0c-32.4 0-62.1 17.8-77.5 46.3l-37.9 70.3c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L200 313.5 200 488c0 13.3 10.7 24 24 24s24-10.7 24-24z\"]\n};\nconst faNeuter = {\n prefix: 'fas',\n iconName: 'neuter',\n icon: [384, 512, [9906], \"f22c\", \"M80 176a112 112 0 1 1 224 0A112 112 0 1 1 80 176zM224 349.1c81.9-15 144-86.8 144-173.1C368 78.8 289.2 0 192 0S16 78.8 16 176c0 86.3 62.1 158.1 144 173.1L160 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-130.9z\"]\n};\nconst faIdBadge = {\n prefix: 'fas',\n iconName: 'id-badge',\n icon: [384, 512, [], \"f2c1\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64L64 0zm96 320l64 0c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16L96 416c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-32-96a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM144 64l96 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-96 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faMarker = {\n prefix: 'fas',\n iconName: 'marker',\n icon: [512, 512, [], \"f5a1\", \"M481 31C445.1-4.8 386.9-4.8 351 31l-15 15L322.9 33C294.8 4.9 249.2 4.9 221.1 33L135 119c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0L255 66.9c9.4-9.4 24.6-9.4 33.9 0L302.1 80 186.3 195.7 316.3 325.7 481 161c35.9-35.9 35.9-94.1 0-129.9zM293.7 348.3L163.7 218.3 99.5 282.5c-48 48-80.8 109.2-94.1 175.8l-5 25c-1.6 7.9 .9 16 6.6 21.7s13.8 8.1 21.7 6.6l25-5c66.6-13.3 127.8-46.1 175.8-94.1l64.2-64.2z\"]\n};\nconst faFaceLaughBeam = {\n prefix: 'fas',\n iconName: 'face-laugh-beam',\n icon: [512, 512, [128513, \"laugh-beam\"], \"f59a\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1l275.2 0c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zM217.6 212.8s0 0 0 0c0 0 0 0 0 0l-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8c0 0 0 0 0 0s0 0 0 0zm160 0c0 0 0 0 0 0l-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8c0 0 0 0 0 0s0 0 0 0s0 0 0 0z\"]\n};\nconst faLaughBeam = faFaceLaughBeam;\nconst faHelicopterSymbol = {\n prefix: 'fas',\n iconName: 'helicopter-symbol',\n icon: [512, 512, [], \"e502\", \"M445.3 224l64.7 0C495.6 108.2 403.8 16.4 288 2l0 64.7C368.4 80.1 431.9 143.6 445.3 224zM510 288l-64.7 0C431.9 368.4 368.4 431.9 288 445.3l0 64.7c115.8-14.4 207.6-106.2 222-222zM2 288C16.4 403.8 108.2 495.6 224 510l0-64.7C143.6 431.9 80.1 368.4 66.7 288L2 288zm0-64l64.7 0C80.1 143.6 143.6 80.1 224 66.7L224 2C108.2 16.4 16.4 108.2 2 224zm206-64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 192c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 96 0 0 64c0 17.7 14.3 32 32 32s32-14.3 32-32l0-192c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64-96 0 0-64z\"]\n};\nconst faUniversalAccess = {\n prefix: 'fas',\n iconName: 'universal-access',\n icon: [512, 512, [], \"f29a\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm161.5-86.1c-12.2-5.2-26.3 .4-31.5 12.6s.4 26.3 12.6 31.5l11.9 5.1c17.3 7.4 35.2 12.9 53.6 16.3l0 50.1c0 4.3-.7 8.6-2.1 12.6l-28.7 86.1c-4.2 12.6 2.6 26.2 15.2 30.4s26.2-2.6 30.4-15.2l24.4-73.2c1.3-3.8 4.8-6.4 8.8-6.4s7.6 2.6 8.8 6.4l24.4 73.2c4.2 12.6 17.8 19.4 30.4 15.2s19.4-17.8 15.2-30.4l-28.7-86.1c-1.4-4.1-2.1-8.3-2.1-12.6l0-50.1c18.4-3.5 36.3-8.9 53.6-16.3l11.9-5.1c12.2-5.2 17.8-19.3 12.6-31.5s-19.3-17.8-31.5-12.6L338.7 175c-26.1 11.2-54.2 17-82.7 17s-56.5-5.8-82.7-17l-11.9-5.1zM256 160a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n};\nconst faCircleChevronUp = {\n prefix: 'fas',\n iconName: 'circle-chevron-up',\n icon: [512, 512, [\"chevron-circle-up\"], \"f139\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM377 271c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-87-87-87 87c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L239 167c9.4-9.4 24.6-9.4 33.9 0L377 271z\"]\n};\nconst faChevronCircleUp = faCircleChevronUp;\nconst faLariSign = {\n prefix: 'fas',\n iconName: 'lari-sign',\n icon: [384, 512, [], \"e1c8\", \"M144 32c17.7 0 32 14.3 32 32l0 32.7c5.3-.4 10.6-.7 16-.7s10.7 .2 16 .7L208 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 49.4c54.9 25.2 95.8 75.5 108.2 136.2c3.5 17.3-7.7 34.2-25 37.7s-34.2-7.7-37.7-25c-6.1-29.9-22.5-55.9-45.4-74.3l0 67.9c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-95c-5.2-.7-10.6-1-16-1s-10.8 .3-16 1l0 95c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-67.9C82.7 211.5 64 247.6 64 288c0 70.7 57.3 128 128 128l160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-160 0L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l16.9 0C18.5 382 0 337.2 0 288c0-77.5 45.9-144.3 112-174.6L112 64c0-17.7 14.3-32 32-32z\"]\n};\nconst faVolcano = {\n prefix: 'fas',\n iconName: 'volcano',\n icon: [512, 512, [127755], \"f770\", \"M160 144c-35.3 0-64-28.7-64-64s28.7-64 64-64c15.7 0 30 5.6 41.2 15C212.4 12.4 232.7 0 256 0s43.6 12.4 54.8 31C322 21.6 336.3 16 352 16c35.3 0 64 28.7 64 64s-28.7 64-64 64c-14.7 0-28.3-5-39.1-13.3l-32 48C275.3 187 266 192 256 192s-19.3-5-24.9-13.3l-32-48C188.3 139 174.7 144 160 144zM144 352l48.4-24.2c10.2-5.1 21.6-7.8 33-7.8c19.6 0 38.4 7.8 52.2 21.6l32.5 32.5c6.3 6.3 14.9 9.9 23.8 9.9c11.3 0 21.8-5.6 28-15l9.7-14.6-58.9-66.3c-9.1-10.2-22.2-16.1-35.9-16.1l-41.8 0c-13.7 0-26.8 5.9-35.9 16.1l-59.9 67.4L144 352zm19.4-95.8c18.2-20.5 44.3-32.2 71.8-32.2l41.8 0c27.4 0 53.5 11.7 71.8 32.2l150.2 169c8.5 9.5 13.2 21.9 13.2 34.7c0 28.8-23.4 52.2-52.2 52.2L52.2 512C23.4 512 0 488.6 0 459.8c0-12.8 4.7-25.1 13.2-34.7l150.2-169z\"]\n};\nconst faPersonWalkingDashedLineArrowRight = {\n prefix: 'fas',\n iconName: 'person-walking-dashed-line-arrow-right',\n icon: [640, 512, [], \"e553\", \"M208 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM123.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L281 232.7l-15.3-36.8C248.5 154.8 208.3 128 163.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1L68.7 398 9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L116.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zM550.6 153.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L530.7 224 384 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l146.7 0-25.4 25.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l80-80c12.5-12.5 12.5-32.8 0-45.3l-80-80zM392 0c-13.3 0-24 10.7-24 24l0 48c0 13.3 10.7 24 24 24s24-10.7 24-24l0-48c0-13.3-10.7-24-24-24zm24 152c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 16c0 13.3 10.7 24 24 24s24-10.7 24-24l0-16zM392 320c-13.3 0-24 10.7-24 24l0 16c0 13.3 10.7 24 24 24s24-10.7 24-24l0-16c0-13.3-10.7-24-24-24zm24 120c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 48c0 13.3 10.7 24 24 24s24-10.7 24-24l0-48z\"]\n};\nconst faSterlingSign = {\n prefix: 'fas',\n iconName: 'sterling-sign',\n icon: [320, 512, [163, \"gbp\", \"pound-sign\"], \"f154\", \"M112 160.4c0-35.5 28.8-64.4 64.4-64.4c6.9 0 13.8 1.1 20.4 3.3l81.2 27.1c16.8 5.6 34.9-3.5 40.5-20.2s-3.5-34.9-20.2-40.5L217 38.6c-13.1-4.4-26.8-6.6-40.6-6.6C105.5 32 48 89.5 48 160.4L48 224l-16 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l16 0 0 44.5c0 17.4-4.7 34.5-13.7 49.4L4.6 431.5c-5.9 9.9-6.1 22.2-.4 32.2S20.5 480 32 480l256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L88.5 416l.7-1.1C104.1 390 112 361.5 112 332.5l0-44.5 112 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-112 0 0-63.6z\"]\n};\nconst faGbp = faSterlingSign;\nconst faPoundSign = faSterlingSign;\nconst faViruses = {\n prefix: 'fas',\n iconName: 'viruses',\n icon: [640, 512, [], \"e076\", \"M192 0c13.3 0 24 10.7 24 24l0 13.5c0 35.6 43.1 53.5 68.3 28.3l9.5-9.5c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-9.5 9.5C293 124.9 310.9 168 346.5 168l13.5 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-13.5 0c-35.6 0-53.5 43.1-28.3 68.3l9.5 9.5c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-9.5-9.5C259.1 293 216 310.9 216 346.5l0 13.5c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-13.5c0-35.6-43.1-53.5-68.3-28.3l-9.5 9.5c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l9.5-9.5C91 259.1 73.1 216 37.5 216L24 216c-13.3 0-24-10.7-24-24s10.7-24 24-24l13.5 0c35.6 0 53.5-43.1 28.3-68.3l-9.5-9.5c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l9.5 9.5C124.9 91 168 73.1 168 37.5L168 24c0-13.3 10.7-24 24-24zm48 224a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm-48-64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm320 80c0 33 39.9 49.5 63.2 26.2c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6C574.5 312.1 591 352 624 352c8.8 0 16 7.2 16 16s-7.2 16-16 16c-33 0-49.5 39.9-26.2 63.2c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0C551.9 446.5 512 463 512 496c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-33-39.9-49.5-63.2-26.2c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6C417.5 423.9 401 384 368 384c-8.8 0-16-7.2-16-16s7.2-16 16-16c33 0 49.5-39.9 26.2-63.2c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0C440.1 289.5 480 273 480 240c0-8.8 7.2-16 16-16s16 7.2 16 16zm0 112a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nconst faSquarePersonConfined = {\n prefix: 'fas',\n iconName: 'square-person-confined',\n icon: [448, 512, [], \"e577\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm96 112a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm80 104c0-30.9 25.1-56 56-56s56 25.1 56 56l0 102.1c0 36.4-29.5 65.9-65.9 65.9c-17.5 0-34.3-6.9-46.6-19.3L184.8 342l-28.1 56.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9l48-96c4.6-9.2 13.3-15.6 23.5-17.3s20.5 1.7 27.8 9L240 306.7l0-58.7z\"]\n};\nconst faUserTie = {\n prefix: 'fas',\n iconName: 'user-tie',\n icon: [448, 512, [], \"f508\", \"M96 128a128 128 0 1 0 256 0A128 128 0 1 0 96 128zm94.5 200.2l18.6 31L175.8 483.1l-36-146.9c-2-8.1-9.8-13.4-17.9-11.3C51.9 342.4 0 405.8 0 481.3c0 17 13.8 30.7 30.7 30.7l131.7 0c0 0 0 0 .1 0l5.5 0 112 0 5.5 0c0 0 0 0 .1 0l131.7 0c17 0 30.7-13.8 30.7-30.7c0-75.5-51.9-138.9-121.9-156.4c-8.1-2-15.9 3.3-17.9 11.3l-36 146.9L238.9 359.2l18.6-31c6.4-10.7-1.3-24.2-13.7-24.2L224 304l-19.7 0c-12.4 0-20.1 13.6-13.7 24.2z\"]\n};\nconst faArrowDownLong = {\n prefix: 'fas',\n iconName: 'arrow-down-long',\n icon: [384, 512, [\"long-arrow-down\"], \"f175\", \"M169.4 502.6c12.5 12.5 32.8 12.5 45.3 0l128-128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 402.7 224 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 370.7L86.6 329.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128z\"]\n};\nconst faLongArrowDown = faArrowDownLong;\nconst faTentArrowDownToLine = {\n prefix: 'fas',\n iconName: 'tent-arrow-down-to-line',\n icon: [640, 512, [], \"e57e\", \"M241.8 111.9c8.9 9.9 8.1 25-1.8 33.9l-80 72c-9.1 8.2-23 8.2-32.1 0l-80-72c-9.9-8.9-10.7-24-1.8-33.9s24-10.7 33.9-1.8l39.9 36L120 24c0-13.3 10.7-24 24-24s24 10.7 24 24l0 122.1 39.9-36c9.9-8.9 25-8.1 33.9 1.8zm122.8 22.6c11.5-8.7 27.3-8.7 38.8 0l168 128c6.6 5 11 12.5 12.3 20.7l24 160 .7 4.7c17.5 .2 31.6 14.4 31.6 32c0 17.7-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32l127.6 0 .7-4.7 24-160c1.2-8.2 5.6-15.7 12.3-20.7l168-128zM384 448l80 0L402.7 325.5c-1.7-3.4-5.1-5.5-8.8-5.5c-5.5 0-9.9 4.4-9.9 9.9L384 448z\"]\n};\nconst faCertificate = {\n prefix: 'fas',\n iconName: 'certificate',\n icon: [512, 512, [], \"f0a3\", \"M211 7.3C205 1 196-1.4 187.6 .8s-14.9 8.9-17.1 17.3L154.7 80.6l-62-17.5c-8.4-2.4-17.4 0-23.5 6.1s-8.5 15.1-6.1 23.5l17.5 62L18.1 170.6c-8.4 2.1-15 8.7-17.3 17.1S1 205 7.3 211l46.2 45L7.3 301C1 307-1.4 316 .8 324.4s8.9 14.9 17.3 17.1l62.5 15.8-17.5 62c-2.4 8.4 0 17.4 6.1 23.5s15.1 8.5 23.5 6.1l62-17.5 15.8 62.5c2.1 8.4 8.7 15 17.1 17.3s17.3-.2 23.4-6.4l45-46.2 45 46.2c6.1 6.2 15 8.7 23.4 6.4s14.9-8.9 17.1-17.3l15.8-62.5 62 17.5c8.4 2.4 17.4 0 23.5-6.1s8.5-15.1 6.1-23.5l-17.5-62 62.5-15.8c8.4-2.1 15-8.7 17.3-17.1s-.2-17.4-6.4-23.4l-46.2-45 46.2-45c6.2-6.1 8.7-15 6.4-23.4s-8.9-14.9-17.3-17.1l-62.5-15.8 17.5-62c2.4-8.4 0-17.4-6.1-23.5s-15.1-8.5-23.5-6.1l-62 17.5L341.4 18.1c-2.1-8.4-8.7-15-17.1-17.3S307 1 301 7.3L256 53.5 211 7.3z\"]\n};\nconst faReplyAll = {\n prefix: 'fas',\n iconName: 'reply-all',\n icon: [576, 512, [\"mail-reply-all\"], \"f122\", \"M209.4 39.5c-9.1-9.6-24.3-10-33.9-.9L33.8 173.2c-19.9 18.9-19.9 50.7 0 69.6L175.5 377.4c9.6 9.1 24.8 8.7 33.9-.9s8.7-24.8-.9-33.9L66.8 208 208.5 73.4c9.6-9.1 10-24.3 .9-33.9zM352 64c0-12.6-7.4-24.1-19-29.2s-25-3-34.4 5.4l-160 144c-6.7 6.1-10.6 14.7-10.6 23.8s3.9 17.7 10.6 23.8l160 144c9.4 8.5 22.9 10.6 34.4 5.4s19-16.6 19-29.2l0-64 32 0c53 0 96 43 96 96c0 30.4-12.8 47.9-22.2 56.7c-5.5 5.1-9.8 12-9.8 19.5c0 10.9 8.8 19.7 19.7 19.7c2.8 0 5.6-.6 8.1-1.9C494.5 467.9 576 417.3 576 304c0-97.2-78.8-176-176-176l-48 0 0-64z\"]\n};\nconst faMailReplyAll = faReplyAll;\nconst faSuitcase = {\n prefix: 'fas',\n iconName: 'suitcase',\n icon: [512, 512, [129523], \"f0f2\", \"M176 56l0 40 160 0 0-40c0-4.4-3.6-8-8-8L184 48c-4.4 0-8 3.6-8 8zM128 96l0-40c0-30.9 25.1-56 56-56L328 0c30.9 0 56 25.1 56 56l0 40 0 32 0 352-256 0 0-352 0-32zM64 96l32 0 0 384-32 0c-35.3 0-64-28.7-64-64L0 160c0-35.3 28.7-64 64-64zM448 480l-32 0 0-384 32 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64z\"]\n};\nconst faPersonSkating = {\n prefix: 'fas',\n iconName: 'person-skating',\n icon: [448, 512, [\"skating\"], \"f7c5\", \"M352 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM128 128c0-17.7 14.3-32 32-32l159.4 0c43.6 0 64.6 53.4 32.8 83.1l-74.4 69.4 60.2 60.2c9 9 14.1 21.2 14.1 33.9l0 73.4c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-66.7-77.9-77.8c-26.6-26.6-24.6-70.3 4.3-94.4l20.4-17L160 160c-17.7 0-32-14.3-32-32zM81.4 353.4l86.9-86.9c4.6 10 11 19.3 19.3 27.5l21.8 21.8-82.7 82.7c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3zm322.5 95.1c8.6 2.1 13.8 10.8 11.6 19.4l-.4 1.7c-6.2 24.9-28.6 42.4-54.3 42.4L272 512c-8.8 0-16-7.2-16-16s7.2-16 16-16l88.8 0c11 0 20.6-7.5 23.3-18.2l.4-1.7c2.1-8.6 10.8-13.8 19.4-11.6zM135.2 478.3l-6.2 3.1c-21.6 10.8-47.6 6.6-64.6-10.5L4.7 411.3c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0l59.6 59.6c7.3 7.3 18.5 9.1 27.7 4.5l6.2-3.1c7.9-4 17.5-.7 21.5 7.2s.7 17.5-7.2 21.5z\"]\n};\nconst faSkating = faPersonSkating;\nconst faFilterCircleDollar = {\n prefix: 'fas',\n iconName: 'filter-circle-dollar',\n icon: [576, 512, [\"funnel-dollar\"], \"f662\", \"M3.9 22.9C10.5 8.9 24.5 0 40 0L472 0c15.5 0 29.5 8.9 36.1 22.9s4.6 30.5-5.2 42.5L396.4 195.6C316.2 212.1 256 283 256 368c0 27.4 6.3 53.4 17.5 76.5c-1.6-.8-3.2-1.8-4.7-2.9l-64-48c-8.1-6-12.8-15.5-12.8-25.6l0-79.1L9 65.3C-.7 53.4-2.8 36.8 3.9 22.9zM288 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm120.8-32.6c.6-.9 1.8-2.1 4.2-3.4c5.1-2.7 12.5-4.1 18.7-4c8.2 .1 17.1 1.8 26.4 4.1c8.6 2.1 17.3-3.1 19.4-11.7s-3.1-17.3-11.7-19.4c-5.6-1.4-11.6-2.7-17.9-3.7l0-9.4c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 9.5c-6.1 1.2-12.3 3.2-18 6.3c-11.8 6.3-23 18.4-21.8 37.2c1 16 11.7 25.3 21.6 30.7c8.8 4.7 19.7 7.8 28.6 10.3l1.8 .5c10.3 2.9 17.9 5.2 23.2 8.3c4.5 2.7 4.7 4.2 4.7 5.6c.1 2.4-.5 3.7-1 4.5c-.6 1-1.8 2.2-4 3.3c-4.7 2.5-11.8 3.8-18.5 3.6c-9.5-.3-18.5-3.1-29.9-6.8c-1.9-.6-3.8-1.2-5.8-1.8c-8.4-2.6-17.4 2.1-20 10.5s2.1 17.4 10.5 20c1.6 .5 3.3 1 5 1.6c0 0 0 0 0 0s0 0 0 0c7 2.3 15.1 4.8 23.7 6.6l0 11.4c0 8.8 7.2 16 16 16s16-7.2 16-16l0-10.8c6.2-1.1 12.5-3.1 18.3-6.2c12.1-6.5 22.3-18.7 21.7-36.9c-.5-16.2-10.3-26.3-20.5-32.3c-9.4-5.6-21.2-8.9-30.5-11.5l-.2 0c-10.4-2.9-18.3-5.2-23.9-8.2c-4.8-2.6-4.8-4-4.8-4.5c0 0 0 0 0-.1c-.1-1.9 .3-2.9 .8-3.6z\"]\n};\nconst faFunnelDollar = faFilterCircleDollar;\nconst faCameraRetro = {\n prefix: 'fas',\n iconName: 'camera-retro',\n icon: [512, 512, [128247], \"f083\", \"M220.6 121.2L271.1 96 448 96l0 96-114.8 0c-21.9-15.1-48.5-24-77.2-24s-55.2 8.9-77.2 24L64 192l0-64 128 0c9.9 0 19.7-2.3 28.6-6.8zM0 128L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L271.1 32c-9.9 0-19.7 2.3-28.6 6.8L192 64l-32 0 0-16c0-8.8-7.2-16-16-16L80 32c-8.8 0-16 7.2-16 16l0 16C28.7 64 0 92.7 0 128zM168 304a88 88 0 1 1 176 0 88 88 0 1 1 -176 0z\"]\n};\nconst faCircleArrowDown = {\n prefix: 'fas',\n iconName: 'circle-arrow-down',\n icon: [512, 512, [\"arrow-circle-down\"], \"f0ab\", \"M256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM127 297c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l71 71L232 120c0-13.3 10.7-24 24-24s24 10.7 24 24l0 214.1 71-71c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L273 409c-9.4 9.4-24.6 9.4-33.9 0L127 297z\"]\n};\nconst faArrowCircleDown = faCircleArrowDown;\nconst faFileImport = {\n prefix: 'fas',\n iconName: 'file-import',\n icon: [512, 512, [\"arrow-right-to-file\"], \"f56f\", \"M128 64c0-35.3 28.7-64 64-64L352 0l0 128c0 17.7 14.3 32 32 32l128 0 0 288c0 35.3-28.7 64-64 64l-256 0c-35.3 0-64-28.7-64-64l0-112 174.1 0-39 39c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9l-80-80c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l39 39L128 288l0-224zm0 224l0 48L24 336c-13.3 0-24-10.7-24-24s10.7-24 24-24l104 0zM512 128l-128 0L384 0 512 128z\"]\n};\nconst faArrowRightToFile = faFileImport;\nconst faSquareArrowUpRight = {\n prefix: 'fas',\n iconName: 'square-arrow-up-right',\n icon: [448, 512, [\"external-link-square\"], \"f14c\", \"M384 32c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l320 0zM160 144c-13.3 0-24 10.7-24 24s10.7 24 24 24l94.1 0L119 327c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l135-135L288 328c0 13.3 10.7 24 24 24s24-10.7 24-24l0-160c0-13.3-10.7-24-24-24l-152 0z\"]\n};\nconst faExternalLinkSquare = faSquareArrowUpRight;\nconst faBoxOpen = {\n prefix: 'fas',\n iconName: 'box-open',\n icon: [640, 512, [], \"f49e\", \"M58.9 42.1c3-6.1 9.6-9.6 16.3-8.7L320 64 564.8 33.4c6.7-.8 13.3 2.7 16.3 8.7l41.7 83.4c9 17.9-.6 39.6-19.8 45.1L439.6 217.3c-13.9 4-28.8-1.9-36.2-14.3L320 64 236.6 203c-7.4 12.4-22.3 18.3-36.2 14.3L37.1 170.6c-19.3-5.5-28.8-27.2-19.8-45.1L58.9 42.1zM321.1 128l54.9 91.4c14.9 24.8 44.6 36.6 72.5 28.6L576 211.6l0 167c0 22-15 41.2-36.4 46.6l-204.1 51c-10.2 2.6-20.9 2.6-31 0l-204.1-51C79 419.7 64 400.5 64 378.5l0-167L191.6 248c27.8 8 57.6-3.8 72.5-28.6L318.9 128l2.2 0z\"]\n};\nconst faScroll = {\n prefix: 'fas',\n iconName: 'scroll',\n icon: [576, 512, [128220], \"f70e\", \"M0 80l0 48c0 17.7 14.3 32 32 32l16 0 48 0 0-80c0-26.5-21.5-48-48-48S0 53.5 0 80zM112 32c10 13.4 16 30 16 48l0 304c0 35.3 28.7 64 64 64s64-28.7 64-64l0-5.3c0-32.4 26.3-58.7 58.7-58.7L480 320l0-192c0-53-43-96-96-96L112 32zM464 480c61.9 0 112-50.1 112-112c0-8.8-7.2-16-16-16l-245.3 0c-14.7 0-26.7 11.9-26.7 26.7l0 5.3c0 53-43 96-96 96l176 0 96 0z\"]\n};\nconst faSpa = {\n prefix: 'fas',\n iconName: 'spa',\n icon: [576, 512, [], \"f5bb\", \"M183.1 235.3c33.7 20.7 62.9 48.1 85.8 80.5c7 9.9 13.4 20.3 19.1 31c5.7-10.8 12.1-21.1 19.1-31c22.9-32.4 52.1-59.8 85.8-80.5C437.6 207.8 490.1 192 546 192l9.9 0c11.1 0 20.1 9 20.1 20.1C576 360.1 456.1 480 308.1 480L288 480l-20.1 0C119.9 480 0 360.1 0 212.1C0 201 9 192 20.1 192l9.9 0c55.9 0 108.4 15.8 153.1 43.3zM301.5 37.6c15.7 16.9 61.1 71.8 84.4 164.6c-38 21.6-71.4 50.8-97.9 85.6c-26.5-34.8-59.9-63.9-97.9-85.6c23.2-92.8 68.6-147.7 84.4-164.6C278 33.9 282.9 32 288 32s10 1.9 13.5 5.6z\"]\n};\nconst faLocationPinLock = {\n prefix: 'fas',\n iconName: 'location-pin-lock',\n icon: [512, 512, [], \"e51f\", \"M215.7 499.2c11-13.8 25.1-31.7 40.3-52.3l0-94.8c0-23.7 12.9-44.4 32-55.4l0-24.6c0-55.6 40.5-101.7 93.6-110.5C367 70 287.7 0 192 0C86 0 0 86 0 192c0 87.4 117 243 168.3 307.2c12.3 15.3 35.1 15.3 47.4 0zM192 128a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM400 240c17.7 0 32 14.3 32 32l0 48-64 0 0-48c0-17.7 14.3-32 32-32zm-80 32l0 48c-17.7 0-32 14.3-32 32l0 128c0 17.7 14.3 32 32 32l160 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32l0-48c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nconst faPause = {\n prefix: 'fas',\n iconName: 'pause',\n icon: [320, 512, [9208], \"f04c\", \"M48 64C21.5 64 0 85.5 0 112L0 400c0 26.5 21.5 48 48 48l32 0c26.5 0 48-21.5 48-48l0-288c0-26.5-21.5-48-48-48L48 64zm192 0c-26.5 0-48 21.5-48 48l0 288c0 26.5 21.5 48 48 48l32 0c26.5 0 48-21.5 48-48l0-288c0-26.5-21.5-48-48-48l-32 0z\"]\n};\nconst faHillAvalanche = {\n prefix: 'fas',\n iconName: 'hill-avalanche',\n icon: [576, 512, [], \"e507\", \"M439.7 401.9c34.2 23.1 81.1 19.5 111.4-10.8c34.4-34.4 34.4-90.1 0-124.4c-27.8-27.8-69.5-33.1-102.6-16c-11.8 6.1-16.4 20.6-10.3 32.3s20.6 16.4 32.3 10.3c15.1-7.8 34-5.3 46.6 7.3c15.6 15.6 15.6 40.9 0 56.6s-40.9 15.6-56.6 0l-81.7-81.7C401.2 261.3 416 236.4 416 208c0-33.9-21.1-62.9-50.9-74.5c1.9-6.8 2.9-14 2.9-21.5c0-44.2-35.8-80-80-80c-27.3 0-51.5 13.7-65.9 34.6C216.3 46.6 197.9 32 176 32c-26.5 0-48 21.5-48 48c0 4 .5 7.9 1.4 11.6L439.7 401.9zM480 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM68.3 87C43.1 61.8 0 79.7 0 115.3L0 432c0 44.2 35.8 80 80 80l316.7 0c35.6 0 53.5-43.1 28.3-68.3L68.3 87z\"]\n};\nconst faTemperatureEmpty = {\n prefix: 'fas',\n iconName: 'temperature-empty',\n icon: [320, 512, [\"temperature-0\", \"thermometer-0\", \"thermometer-empty\"], \"f2cb\", \"M112 112c0-26.5 21.5-48 48-48s48 21.5 48 48l0 164.5c0 17.3 7.1 31.9 15.3 42.5C233.8 332.6 240 349.5 240 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9c8.2-10.6 15.3-25.2 15.3-42.5L112 112zM160 0C98.1 0 48 50.2 48 112l0 164.4c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C27.2 304.2 16 334.8 16 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.2-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6L272 112C272 50.2 221.9 0 160 0zm0 416a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nconst faTemperature0 = faTemperatureEmpty;\nconst faThermometer0 = faTemperatureEmpty;\nconst faThermometerEmpty = faTemperatureEmpty;\nconst faBomb = {\n prefix: 'fas',\n iconName: 'bomb',\n icon: [512, 512, [128163], \"f1e2\", \"M459.1 52.4L442.6 6.5C440.7 2.6 436.5 0 432.1 0s-8.5 2.6-10.4 6.5L405.2 52.4l-46 16.8c-4.3 1.6-7.3 5.9-7.2 10.4c0 4.5 3 8.7 7.2 10.2l45.7 16.8 16.8 45.8c1.5 4.4 5.8 7.5 10.4 7.5s8.9-3.1 10.4-7.5l16.5-45.8 45.7-16.8c4.2-1.5 7.2-5.7 7.2-10.2c0-4.6-3-8.9-7.2-10.4L459.1 52.4zm-132.4 53c-12.5-12.5-32.8-12.5-45.3 0l-2.9 2.9C256.5 100.3 232.7 96 208 96C93.1 96 0 189.1 0 304S93.1 512 208 512s208-93.1 208-208c0-24.7-4.3-48.5-12.2-70.5l2.9-2.9c12.5-12.5 12.5-32.8 0-45.3l-80-80zM200 192c-57.4 0-104 46.6-104 104l0 8c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-8c0-75.1 60.9-136 136-136l8 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-8 0z\"]\n};\nconst faRegistered = {\n prefix: 'fas',\n iconName: 'registered',\n icon: [512, 512, [174], \"f25d\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM160 152c0-13.3 10.7-24 24-24l88 0c44.2 0 80 35.8 80 80c0 28-14.4 52.7-36.3 67l34.1 75.1c5.5 12.1 .1 26.3-11.9 31.8s-26.3 .1-31.8-11.9L268.9 288 208 288l0 72c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-96 0-112zm48 88l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0 64z\"]\n};\nconst faAddressCard = {\n prefix: 'fas',\n iconName: 'address-card',\n icon: [576, 512, [62140, \"contact-card\", \"vcard\"], \"f2bb\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm80 256l64 0c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16L80 384c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-32-96a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zm256-32l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faContactCard = faAddressCard;\nconst faVcard = faAddressCard;\nconst faScaleUnbalancedFlip = {\n prefix: 'fas',\n iconName: 'scale-unbalanced-flip',\n icon: [640, 512, [\"balance-scale-right\"], \"f516\", \"M117.9 62.4c-16.8-5.6-25.8-23.7-20.2-40.5s23.7-25.8 40.5-20.2l113 37.7C265 15.8 290.7 0 320 0c44.2 0 80 35.8 80 80c0 3-.2 5.9-.5 8.8l122.6 40.9c16.8 5.6 25.8 23.7 20.2 40.5s-23.7 25.8-40.5 20.2L366.4 145.2c-4.5 3.2-9.3 5.9-14.4 8.2L352 480c0 17.7-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l160 0 0-294.7c-21-9.2-37.2-27-44.2-49l-125.9-42zM200.4 288L128 163.8 55.6 288l144.9 0zM128 384C65.1 384 12.8 350 2 305.1c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1C243.2 350 190.9 384 128 384zm382.8-92.2L438.4 416l144.9 0L510.8 291.8zm126 141.3C626 478 573.7 512 510.8 512s-115.2-34-126-78.9c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1z\"]\n};\nconst faBalanceScaleRight = faScaleUnbalancedFlip;\nconst faSubscript = {\n prefix: 'fas',\n iconName: 'subscript',\n icon: [512, 512, [], \"f12c\", \"M32 64C14.3 64 0 78.3 0 96s14.3 32 32 32l15.3 0 89.6 128L47.3 384 32 384c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0c10.4 0 20.2-5.1 26.2-13.6L176 311.8l85.8 122.6c6 8.6 15.8 13.6 26.2 13.6l32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-15.3 0L215.1 256l89.6-128 15.3 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0c-10.4 0-20.2 5.1-26.2 13.6L176 200.2 90.2 77.6C84.2 69.1 74.4 64 64 64L32 64zM480 320c0-11.1-5.7-21.4-15.2-27.2s-21.2-6.4-31.1-1.4l-32 16c-15.8 7.9-22.2 27.1-14.3 42.9C393 361.5 404.3 368 416 368l0 80c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-128z\"]\n};\nconst faDiamondTurnRight = {\n prefix: 'fas',\n iconName: 'diamond-turn-right',\n icon: [512, 512, [\"directions\"], \"f5eb\", \"M227.7 11.7c15.6-15.6 40.9-15.6 56.6 0l216 216c15.6 15.6 15.6 40.9 0 56.6l-216 216c-15.6 15.6-40.9 15.6-56.6 0l-216-216c-15.6-15.6-15.6-40.9 0-56.6l216-216zm87.6 137c-4.6-4.6-11.5-5.9-17.4-3.5s-9.9 8.3-9.9 14.8l0 56-64 0c-35.3 0-64 28.7-64 64l0 48c0 13.3 10.7 24 24 24s24-10.7 24-24l0-48c0-8.8 7.2-16 16-16l64 0 0 56c0 6.5 3.9 12.3 9.9 14.8s12.9 1.1 17.4-3.5l80-80c6.2-6.2 6.2-16.4 0-22.6l-80-80z\"]\n};\nconst faDirections = faDiamondTurnRight;\nconst faBurst = {\n prefix: 'fas',\n iconName: 'burst',\n icon: [512, 512, [], \"e4dc\", \"M37.6 4.2C28-2.3 15.2-1.1 7 7s-9.4 21-2.8 30.5l112 163.3L16.6 233.2C6.7 236.4 0 245.6 0 256s6.7 19.6 16.6 22.8l103.1 33.4L66.8 412.8c-4.9 9.3-3.2 20.7 4.3 28.1s18.8 9.2 28.1 4.3l100.6-52.9 33.4 103.1c3.2 9.9 12.4 16.6 22.8 16.6s19.6-6.7 22.8-16.6l33.4-103.1 100.6 52.9c9.3 4.9 20.7 3.2 28.1-4.3s9.2-18.8 4.3-28.1L392.3 312.2l103.1-33.4c9.9-3.2 16.6-12.4 16.6-22.8s-6.7-19.6-16.6-22.8L388.9 198.7l25.7-70.4c3.2-8.8 1-18.6-5.6-25.2s-16.4-8.8-25.2-5.6l-70.4 25.7L278.8 16.6C275.6 6.7 266.4 0 256 0s-19.6 6.7-22.8 16.6l-32.3 99.6L37.6 4.2z\"]\n};\nconst faHouseLaptop = {\n prefix: 'fas',\n iconName: 'house-laptop',\n icon: [640, 512, [\"laptop-house\"], \"e066\", \"M218.3 8.5c12.3-11.3 31.2-11.3 43.4 0l208 192c6.7 6.2 10.3 14.8 10.3 23.5l-144 0c-19.1 0-36.3 8.4-48 21.7l0-37.7c0-8.8-7.2-16-16-16l-64 0c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16l64 0 0 128-160 0c-26.5 0-48-21.5-48-48l0-112-32 0c-13.2 0-25-8.1-29.8-20.3s-1.6-26.2 8.1-35.2l208-192zM352 304l0 144 192 0 0-144-192 0zm-48-16c0-17.7 14.3-32 32-32l224 0c17.7 0 32 14.3 32 32l0 160 32 0c8.8 0 16 7.2 16 16c0 26.5-21.5 48-48 48l-48 0-192 0-48 0c-26.5 0-48-21.5-48-48c0-8.8 7.2-16 16-16l32 0 0-160z\"]\n};\nconst faLaptopHouse = faHouseLaptop;\nconst faFaceTired = {\n prefix: 'fas',\n iconName: 'face-tired',\n icon: [512, 512, [128555, \"tired\"], \"f5c8\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM164.7 328.7c22-22 53.9-40.7 91.3-40.7s69.3 18.7 91.3 40.7c11.1 11.1 20.1 23.4 26.4 35.4c6.2 11.7 10.3 24.4 10.3 35.9c0 5.2-2.6 10.2-6.9 13.2s-9.8 3.7-14.7 1.8l-20.5-7.7c-26.9-10.1-55.5-15.3-84.3-15.3l-3.2 0c-28.8 0-57.3 5.2-84.3 15.3L149.6 415c-4.9 1.8-10.4 1.2-14.7-1.8s-6.9-7.9-6.9-13.2c0-11.6 4.2-24.2 10.3-35.9c6.3-12 15.3-24.3 26.4-35.4zm-31.2-182l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 157.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"]\n};\nconst faTired = faFaceTired;\nconst faMoneyBills = {\n prefix: 'fas',\n iconName: 'money-bills',\n icon: [640, 512, [], \"e1f3\", \"M96 96l0 224c0 35.3 28.7 64 64 64l416 0c35.3 0 64-28.7 64-64l0-224c0-35.3-28.7-64-64-64L160 32c-35.3 0-64 28.7-64 64zm64 160c35.3 0 64 28.7 64 64l-64 0 0-64zM224 96c0 35.3-28.7 64-64 64l0-64 64 0zM576 256l0 64-64 0c0-35.3 28.7-64 64-64zM512 96l64 0 0 64c-35.3 0-64-28.7-64-64zM288 208a80 80 0 1 1 160 0 80 80 0 1 1 -160 0zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120L0 360c0 66.3 53.7 120 120 120l400 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-400 0c-39.8 0-72-32.2-72-72l0-240z\"]\n};\nconst faSmog = {\n prefix: 'fas',\n iconName: 'smog',\n icon: [640, 512, [], \"f75f\", \"M32 144c0 79.5 64.5 144 144 144l123.3 0c22.6 19.9 52.2 32 84.7 32s62.1-12.1 84.7-32l27.3 0c61.9 0 112-50.1 112-112s-50.1-112-112-112c-10.7 0-21 1.5-30.8 4.3C443.8 27.7 401.1 0 352 0c-32.6 0-62.4 12.2-85.1 32.3C242.1 12.1 210.5 0 176 0C96.5 0 32 64.5 32 144zM616 368l-336 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l336 0c13.3 0 24-10.7 24-24s-10.7-24-24-24zm-64 96l-112 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l112 0c13.3 0 24-10.7 24-24s-10.7-24-24-24zm-192 0L24 464c-13.3 0-24 10.7-24 24s10.7 24 24 24l336 0c13.3 0 24-10.7 24-24s-10.7-24-24-24zM224 392c0-13.3-10.7-24-24-24L96 368c-13.3 0-24 10.7-24 24s10.7 24 24 24l104 0c13.3 0 24-10.7 24-24z\"]\n};\nconst faCrutch = {\n prefix: 'fas',\n iconName: 'crutch',\n icon: [512, 512, [], \"f7f7\", \"M297.4 9.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0zm-96 144l-34.8 34.8c-12.9 12.9-21.9 29.2-25.8 47.1L116.8 342.9c-1.3 5.9-4.3 11.4-8.6 15.7L9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l98.8-98.8c4.3-4.3 9.7-7.3 15.7-8.6l107.6-23.9c17.8-4 34.1-12.9 47.1-25.8l34.7-34.7c0 0 .1-.1 .1-.1s.1-.1 .1-.1l74.6-74.6-45.3-45.3L336 242.7 269.3 176l52.1-52.1L276.1 78.6l-74.7 74.7zM224 221.3L290.7 288l-12.2 12.2c-4.3 4.3-9.7 7.3-15.7 8.6l-76.7 17 17-76.7c1.3-5.9 4.3-11.4 8.6-15.7L224 221.3z\"]\n};\nconst faFontAwesome = {\n prefix: 'fas',\n iconName: 'font-awesome',\n icon: [512, 512, [62501, 62694, \"font-awesome-flag\", \"font-awesome-logo-full\"], \"f2b4\", \"M91.7 96C106.3 86.8 116 70.5 116 52C116 23.3 92.7 0 64 0S12 23.3 12 52c0 16.7 7.8 31.5 20 41l0 3 0 352 0 64 64 0 0-64 373.6 0c14.6 0 26.4-11.8 26.4-26.4c0-3.7-.8-7.3-2.3-10.7L432 272l61.7-138.9c1.5-3.4 2.3-7 2.3-10.7c0-14.6-11.8-26.4-26.4-26.4L91.7 96z\"]\n};\nconst faFontAwesomeFlag = faFontAwesome;\nconst faFontAwesomeLogoFull = faFontAwesome;\nconst faCloudArrowUp = {\n prefix: 'fas',\n iconName: 'cloud-arrow-up',\n icon: [640, 512, [62338, \"cloud-upload\", \"cloud-upload-alt\"], \"f0ee\", \"M144 480C64.5 480 0 415.5 0 336c0-62.8 40.2-116.2 96.2-135.9c-.1-2.7-.2-5.4-.2-8.1c0-88.4 71.6-160 160-160c59.3 0 111 32.2 138.7 80.2C409.9 102 428.3 96 448 96c53 0 96 43 96 96c0 12.2-2.3 23.8-6.4 34.6C596 238.4 640 290.1 640 352c0 70.7-57.3 128-128 128l-368 0zm79-217c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l39-39L296 392c0 13.3 10.7 24 24 24s24-10.7 24-24l0-134.1 39 39c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-80-80c-9.4-9.4-24.6-9.4-33.9 0l-80 80z\"]\n};\nconst faCloudUpload = faCloudArrowUp;\nconst faCloudUploadAlt = faCloudArrowUp;\nconst faPalette = {\n prefix: 'fas',\n iconName: 'palette',\n icon: [512, 512, [127912], \"f53f\", \"M512 256c0 .9 0 1.8 0 2.7c-.4 36.5-33.6 61.3-70.1 61.3L344 320c-26.5 0-48 21.5-48 48c0 3.4 .4 6.7 1 9.9c2.1 10.2 6.5 20 10.8 29.9c6.1 13.8 12.1 27.5 12.1 42c0 31.8-21.6 60.7-53.4 62c-3.5 .1-7 .2-10.6 .2C114.6 512 0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM128 288a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0-96a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM288 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm96 96a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faArrowsTurnRight = {\n prefix: 'fas',\n iconName: 'arrows-turn-right',\n icon: [448, 512, [], \"e4c0\", \"M297.4 9.4c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3l-96 96c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L338.7 160 128 160c-35.3 0-64 28.7-64 64l0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32C0 153.3 57.3 96 128 96l210.7 0L297.4 54.6c-12.5-12.5-12.5-32.8 0-45.3zm-96 256c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3l-96 96c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 416 96 416c-17.7 0-32 14.3-32 32l0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32c0-53 43-96 96-96l146.7 0-41.4-41.4c-12.5-12.5-12.5-32.8 0-45.3z\"]\n};\nconst faVest = {\n prefix: 'fas',\n iconName: 'vest',\n icon: [448, 512, [], \"e085\", \"M207.1 237.4L151.2 69.7C168.6 79.7 192.6 88 224 88s55.4-8.3 72.8-18.3L226.5 280.6c-1.6 4.9-2.5 10-2.5 15.2L224 464c0 26.5 21.5 48 48 48l128 0c26.5 0 48-21.5 48-48l0-193.5c0-9.5-2.8-18.7-8.1-26.6l-47.9-71.8c-5.3-7.9-8.1-17.1-8.1-26.6l0-17.5 0-73.7 0-6.3c0-26.5-21.5-48-48-48l-4.5 0c-.2 0-.4 0-.6 0c-.4 0-.8 0-1.2 0C311 0 295.7 9.7 285.7 18.8C276.4 27.2 257.2 40 224 40s-52.4-12.8-61.7-21.2C152.3 9.7 137 0 118.3 0c-.4 0-.8 0-1.2 0c-.2 0-.4 0-.6 0L112 0C85.5 0 64 21.5 64 48l0 6.3L64 128l0 17.5c0 9.5-2.8 18.7-8.1 26.6L8.1 243.9C2.8 251.8 0 261.1 0 270.5L0 464c0 26.5 21.5 48 48 48l128 0c9.9 0 19-3 26.7-8.1C195.9 492.2 192 478.5 192 464l0-168.2c0-8.6 1.4-17.1 4.1-25.3l11-33.1zM347.3 356.7l48 48c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-48-48c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0zm-294.6 48l48-48c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6l-48 48c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6z\"]\n};\nconst faFerry = {\n prefix: 'fas',\n iconName: 'ferry',\n icon: [576, 512, [], \"e4ea\", \"M224 0L352 0c17.7 0 32 14.3 32 32l75.1 0c20.6 0 31.6 24.3 18.1 39.8L456 96 120 96 98.8 71.8C85.3 56.3 96.3 32 116.9 32L192 32c0-17.7 14.3-32 32-32zM96 128l384 0c17.7 0 32 14.3 32 32l0 123.5c0 13.3-4.2 26.3-11.9 37.2l-51.4 71.9c-1.9 1.1-3.7 2.2-5.5 3.5c-15.5 10.7-34 18-51 19.9l-16.5 0c-17.1-1.8-35-9-50.8-19.9c-22.1-15.5-51.6-15.5-73.7 0c-14.8 10.2-32.5 18-50.6 19.9l-16.6 0c-17-1.8-35.6-9.2-51-19.9c-1.8-1.3-3.7-2.4-5.6-3.5L75.9 320.7C68.2 309.8 64 296.8 64 283.5L64 160c0-17.7 14.3-32 32-32zm32 64l0 96 320 0 0-96-320 0zM306.5 421.9C329 437.4 356.5 448 384 448c26.9 0 55.3-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 501.7 417 512 384 512c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 437.2 165.1 448 192 448c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nconst faArrowsDownToPeople = {\n prefix: 'fas',\n iconName: 'arrows-down-to-people',\n icon: [640, 512, [], \"e4b9\", \"M144 0c-13.3 0-24 10.7-24 24l0 118.1L97 119c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0l64-64c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-23 23L168 24c0-13.3-10.7-24-24-24zM360 200a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zM184 296a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zm312 40a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM200 441.5l26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-36.3-67.5c1.7-1.7 3.2-3.6 4.3-5.8L264 345.5l0 54.5c0 17.7 14.3 32 32 32l48 0c17.7 0 32-14.3 32-32l0-54.5 26.9 49.9c1.2 2.2 2.6 4.1 4.3 5.8l-36.3 67.5c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L440 441.5l0 38.5c0 17.7 14.3 32 32 32l48 0c17.7 0 32-14.3 32-32l0-38.5 26.9 49.9c6.3 11.7 20.8 16 32.5 9.8s16-20.8 9.8-32.5l-37.9-70.3c-15.3-28.5-45.1-46.3-77.5-46.3l-19.5 0c-16.3 0-31.9 4.5-45.4 12.6l-33.6-62.3c-15.3-28.5-45.1-46.3-77.5-46.3l-19.5 0c-32.4 0-62.1 17.8-77.5 46.3l-33.6 62.3c-13.5-8.1-29.1-12.6-45.4-12.6l-19.5 0c-32.4 0-62.1 17.8-77.5 46.3L18.9 468.6c-6.3 11.7-1.9 26.2 9.8 32.5s26.2 1.9 32.5-9.8L88 441.5 88 480c0 17.7 14.3 32 32 32l48 0c17.7 0 32-14.3 32-32l0-38.5zM415 153l64 64c9.4 9.4 24.6 9.4 33.9 0l64-64c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-23 23L520 24c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 118.1-23-23c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9z\"]\n};\nconst faSeedling = {\n prefix: 'fas',\n iconName: 'seedling',\n icon: [512, 512, [127793, \"sprout\"], \"f4d8\", \"M512 32c0 113.6-84.6 207.5-194.2 222c-7.1-53.4-30.6-101.6-65.3-139.3C290.8 46.3 364 0 448 0l32 0c17.7 0 32 14.3 32 32zM0 96C0 78.3 14.3 64 32 64l32 0c123.7 0 224 100.3 224 224l0 32 0 160c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-160C100.3 320 0 219.7 0 96z\"]\n};\nconst faSprout = faSeedling;\nconst faLeftRight = {\n prefix: 'fas',\n iconName: 'left-right',\n icon: [512, 512, [8596, \"arrows-alt-h\"], \"f337\", \"M504.3 273.6c4.9-4.5 7.7-10.9 7.7-17.6s-2.8-13-7.7-17.6l-112-104c-7-6.5-17.2-8.2-25.9-4.4s-14.4 12.5-14.4 22l0 56-192 0 0-56c0-9.5-5.7-18.2-14.4-22s-18.9-2.1-25.9 4.4l-112 104C2.8 243 0 249.3 0 256s2.8 13 7.7 17.6l112 104c7 6.5 17.2 8.2 25.9 4.4s14.4-12.5 14.4-22l0-56 192 0 0 56c0 9.5 5.7 18.2 14.4 22s18.9 2.1 25.9-4.4l112-104z\"]\n};\nconst faArrowsAltH = faLeftRight;\nconst faBoxesPacking = {\n prefix: 'fas',\n iconName: 'boxes-packing',\n icon: [640, 512, [], \"e4c7\", \"M256 48c0-26.5 21.5-48 48-48L592 0c26.5 0 48 21.5 48 48l0 416c0 26.5-21.5 48-48 48l-210.7 0c1.8-5 2.7-10.4 2.7-16l0-242.7c18.6-6.6 32-24.4 32-45.3l0-32c0-26.5-21.5-48-48-48l-112 0 0-80zM571.3 347.3c6.2-6.2 6.2-16.4 0-22.6l-64-64c-6.2-6.2-16.4-6.2-22.6 0l-64 64c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L480 310.6 480 432c0 8.8 7.2 16 16 16s16-7.2 16-16l0-121.4 36.7 36.7c6.2 6.2 16.4 6.2 22.6 0zM0 176c0-8.8 7.2-16 16-16l352 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16L16 224c-8.8 0-16-7.2-16-16l0-32zm352 80l0 224c0 17.7-14.3 32-32 32L64 512c-17.7 0-32-14.3-32-32l0-224 320 0zM144 320c-8.8 0-16 7.2-16 16s7.2 16 16 16l96 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-96 0z\"]\n};\nconst faCircleArrowLeft = {\n prefix: 'fas',\n iconName: 'circle-arrow-left',\n icon: [512, 512, [\"arrow-circle-left\"], \"f0a8\", \"M512 256A256 256 0 1 0 0 256a256 256 0 1 0 512 0zM215 127c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-71 71L392 232c13.3 0 24 10.7 24 24s-10.7 24-24 24l-214.1 0 71 71c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L103 273c-9.4-9.4-9.4-24.6 0-33.9L215 127z\"]\n};\nconst faArrowCircleLeft = faCircleArrowLeft;\nconst faGroupArrowsRotate = {\n prefix: 'fas',\n iconName: 'group-arrows-rotate',\n icon: [512, 512, [], \"e4f6\", \"M201.1 71.9c16.9-5 26.6-22.9 21.5-39.8s-22.9-26.6-39.8-21.5c-21.5 6.4-41.8 15.5-60.6 27C114.3 34 105.4 32 96 32C60.7 32 32 60.7 32 96c0 9.4 2 18.3 5.6 26.3c-11.5 18.7-20.6 39-27 60.6c-5 16.9 4.6 34.8 21.5 39.8s34.8-4.6 39.8-21.5c4.3-14.6 10.4-28.5 17.9-41.4c2 .2 4.1 .3 6.1 .3c35.3 0 64-28.7 64-64c0-2.1-.1-4.1-.3-6.1c12.9-7.5 26.8-13.6 41.4-17.9zm128-61.3c-16.9-5-34.8 4.6-39.8 21.5s4.6 34.8 21.5 39.8c14.6 4.3 28.5 10.4 41.4 17.9c-.2 2-.3 4.1-.3 6.1c0 35.3 28.7 64 64 64c2.1 0 4.1-.1 6.2-.3c7.5 12.9 13.6 26.8 17.9 41.4c5 16.9 22.9 26.6 39.8 21.5s26.6-22.9 21.5-39.8c-6.4-21.5-15.5-41.8-27-60.6c3.6-8 5.6-16.9 5.6-26.3c0-35.3-28.7-64-64-64c-9.4 0-18.3 2-26.3 5.6c-18.7-11.5-39-20.6-60.6-27zM71.9 310.9c-5-16.9-22.9-26.6-39.8-21.5s-26.6 22.9-21.5 39.8c6.4 21.5 15.5 41.8 27 60.6C34 397.7 32 406.6 32 416c0 35.3 28.7 64 64 64c9.4 0 18.3-2 26.3-5.6c18.7 11.5 39 20.6 60.6 27c16.9 5 34.8-4.6 39.8-21.5s-4.6-34.8-21.5-39.8c-14.6-4.3-28.5-10.4-41.4-17.9c.2-2 .3-4.1 .3-6.2c0-35.3-28.7-64-64-64c-2.1 0-4.1 .1-6.2 .3c-7.5-12.9-13.6-26.8-17.9-41.4zm429.4 18.3c5-16.9-4.6-34.8-21.5-39.8s-34.8 4.6-39.8 21.5c-4.3 14.6-10.4 28.5-17.9 41.4c-2-.2-4.1-.3-6.2-.3c-35.3 0-64 28.7-64 64c0 2.1 .1 4.1 .3 6.2c-12.9 7.5-26.8 13.6-41.4 17.9c-16.9 5-26.6 22.9-21.5 39.8s22.9 26.6 39.8 21.5c21.5-6.4 41.8-15.5 60.6-27c8 3.6 16.9 5.6 26.3 5.6c35.3 0 64-28.7 64-64c0-9.4-2-18.3-5.6-26.3c11.5-18.7 20.6-39 27-60.6zM192.8 256.8c0-15.6 5.6-29.9 14.9-41.1L223 231c6.6 6.6 17.8 1.9 17.8-7.4l0-60.5c0-5.7-4.7-10.4-10.4-10.4l-60.5 0c-9.3 0-13.9 11.2-7.4 17.8l11.2 11.2c-17.9 19.8-28.9 46.2-28.9 75.1c0 43.6 24.9 81.3 61.1 99.8c11.8 6 26.3 1.4 32.3-10.4s1.4-26.3-10.4-32.3c-20.8-10.6-34.9-32.2-34.9-57zm93.1-58.6c20.8 10.6 34.9 32.2 34.9 57c0 15.6-5.6 29.9-14.9 41.1L290.6 281c-6.6-6.6-17.8-1.9-17.8 7.4l0 60.5c0 5.7 4.7 10.4 10.4 10.4l60.5 0c9.3 0 13.9-11.2 7.4-17.8l-11.2-11.2c17.9-19.8 28.9-46.2 28.9-75.1c0-43.6-24.9-81.3-61.1-99.8c-11.8-6-26.3-1.4-32.3 10.4s-1.4 26.3 10.4 32.3z\"]\n};\nconst faBowlFood = {\n prefix: 'fas',\n iconName: 'bowl-food',\n icon: [512, 512, [], \"e4c6\", \"M0 192c0-35.3 28.7-64 64-64c.5 0 1.1 0 1.6 0C73 91.5 105.3 64 144 64c15 0 29 4.1 40.9 11.2C198.2 49.6 225.1 32 256 32s57.8 17.6 71.1 43.2C339 68.1 353 64 368 64c38.7 0 71 27.5 78.4 64c.5 0 1.1 0 1.6 0c35.3 0 64 28.7 64 64c0 11.7-3.1 22.6-8.6 32L8.6 224C3.1 214.6 0 203.7 0 192zm0 91.4C0 268.3 12.3 256 27.4 256l457.1 0c15.1 0 27.4 12.3 27.4 27.4c0 70.5-44.4 130.7-106.7 154.1L403.5 452c-2 16-15.6 28-31.8 28l-231.5 0c-16.1 0-29.8-12-31.8-28l-1.8-14.4C44.4 414.1 0 353.9 0 283.4z\"]\n};\nconst faCandyCane = {\n prefix: 'fas',\n iconName: 'candy-cane',\n icon: [512, 512, [], \"f786\", \"M348.8 131.5c3.7-2.3 7.9-3.5 12.2-3.5c12.7 0 23 10.3 23 23l0 5.6c0 9.9-5.1 19.1-13.5 24.3L30.1 393.7C.1 412.5-9 451.9 9.7 481.9s58.2 39.1 88.2 20.4L438.4 289.5c45.8-28.6 73.6-78.8 73.6-132.8l0-5.6C512 67.6 444.4 0 361 0c-28.3 0-56 8-80.1 23L254.1 39.7c-30 18.7-39.1 58.2-20.4 88.2s58.2 39.1 88.2 20.4l26.8-16.8zM298.4 49.8c9.2-5.7 19.1-10.1 29.4-13.1L348 97.5c-5.7 1.4-11.2 3.7-16.3 6.8l-12.6 7.9L298.4 49.8zm88.5 52.7l46.2-46.2c8.5 6.5 16.1 14.1 22.6 22.6l-46.2 46.2c-5.1-9.6-13-17.5-22.6-22.6zm28.9 59.3l61.6 20.5c-2.2 10.5-5.8 20.7-10.5 30.2l-62-20.7c6.2-8.8 10.1-19.1 11-30.1zm-86.1 82.5l60.4 37.7-30.2 18.9-60.4-37.7 30.2-18.9zm-107.2 67l60.4 37.7-30.2 18.9-60.4-37.7 30.2-18.9zM119.3 375.7l60.4 37.7-30.2 18.9L89.1 394.6l30.2-18.9z\"]\n};\nconst faArrowDownWideShort = {\n prefix: 'fas',\n iconName: 'arrow-down-wide-short',\n icon: [576, 512, [\"sort-amount-asc\", \"sort-amount-down\"], \"f160\", \"M151.6 469.6C145.5 476.2 137 480 128 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L96 365.7 96 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 301.7 32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32l160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-160 0zm0-128c-17.7 0-32-14.3-32-32s14.3-32 32-32l224 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L320 96z\"]\n};\nconst faSortAmountAsc = faArrowDownWideShort;\nconst faSortAmountDown = faArrowDownWideShort;\nconst faCloudBolt = {\n prefix: 'fas',\n iconName: 'cloud-bolt',\n icon: [512, 512, [127785, \"thunderstorm\"], \"f76c\", \"M0 224c0 53 43 96 96 96l47.2 0L290 202.5c17.6-14.1 42.6-14 60.2 .2s22.8 38.6 12.8 58.8L333.7 320l18.3 0 64 0c53 0 96-43 96-96s-43-96-96-96c-.5 0-1.1 0-1.6 0c1.1-5.2 1.6-10.5 1.6-16c0-44.2-35.8-80-80-80c-24.3 0-46.1 10.9-60.8 28C256.5 24.3 219.1 0 176 0C114.1 0 64 50.1 64 112c0 7.1 .7 14.1 1.9 20.8C27.6 145.4 0 181.5 0 224zm330.1 3.6c-5.8-4.7-14.2-4.7-20.1-.1l-160 128c-5.3 4.2-7.4 11.4-5.1 17.8s8.3 10.7 15.1 10.7l70.1 0L177.7 488.8c-3.4 6.7-1.6 14.9 4.3 19.6s14.2 4.7 20.1 .1l160-128c5.3-4.2 7.4-11.4 5.1-17.8s-8.3-10.7-15.1-10.7l-70.1 0 52.4-104.8c3.4-6.7 1.6-14.9-4.2-19.6z\"]\n};\nconst faThunderstorm = faCloudBolt;\nconst faTextSlash = {\n prefix: 'fas',\n iconName: 'text-slash',\n icon: [640, 512, [\"remove-format\"], \"f87d\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L355.7 253.5 400.2 96 503 96 497 120.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l11-44.1C577.6 61.3 554.7 32 523.5 32L376.1 32l-.3 0L204.5 32c-22 0-41.2 15-46.6 36.4l-6.3 25.2L38.8 5.1zm168 131.7c.1-.3 .2-.7 .3-1L217 96l116.7 0L301.3 210.8l-94.5-74.1zM243.3 416L192 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-42.2 0 17.6-62.1L272.9 311 243.3 416z\"]\n};\nconst faRemoveFormat = faTextSlash;\nconst faFaceSmileWink = {\n prefix: 'fas',\n iconName: 'face-smile-wink',\n icon: [512, 512, [128521, \"smile-wink\"], \"f4da\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM164.1 325.5C182 346.2 212.6 368 256 368s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C349.8 372.1 311.1 400 256 400s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm156.4 25.6c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2c-17.6-23.5-52.8-23.5-70.4 0z\"]\n};\nconst faSmileWink = faFaceSmileWink;\nconst faFileWord = {\n prefix: 'fas',\n iconName: 'file-word',\n icon: [384, 512, [], \"f1c2\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM111 257.1l26.8 89.2 31.6-90.3c3.4-9.6 12.5-16.1 22.7-16.1s19.3 6.4 22.7 16.1l31.6 90.3L273 257.1c3.8-12.7 17.2-19.9 29.9-16.1s19.9 17.2 16.1 29.9l-48 160c-3 10-12 16.9-22.4 17.1s-19.8-6.2-23.2-16.1L192 336.6l-33.3 95.3c-3.4 9.8-12.8 16.3-23.2 16.1s-19.5-7.1-22.4-17.1l-48-160c-3.8-12.7 3.4-26.1 16.1-29.9s26.1 3.4 29.9 16.1z\"]\n};\nconst faFilePowerpoint = {\n prefix: 'fas',\n iconName: 'file-powerpoint',\n icon: [384, 512, [], \"f1c4\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM136 240l68 0c42 0 76 34 76 76s-34 76-76 76l-44 0 0 32c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-56 0-104c0-13.3 10.7-24 24-24zm68 104c15.5 0 28-12.5 28-28s-12.5-28-28-28l-44 0 0 56 44 0z\"]\n};\nconst faArrowsLeftRight = {\n prefix: 'fas',\n iconName: 'arrows-left-right',\n icon: [512, 512, [\"arrows-h\"], \"f07e\", \"M406.6 374.6l96-96c12.5-12.5 12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 224l-293.5 0 41.4-41.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 288l293.5 0-41.4 41.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0z\"]\n};\nconst faArrowsH = faArrowsLeftRight;\nconst faHouseLock = {\n prefix: 'fas',\n iconName: 'house-lock',\n icon: [640, 512, [], \"e510\", \"M384 480c0 11.7 3.1 22.6 8.6 32l-.6 0c-22.1 0-40-17.9-40-40l0-24 0-64c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32 14.3-32 32l0 64 0 24c0 22.1-17.9 40-40 40l-24 0-31.9 0c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2l-16 0c-22.1 0-40-17.9-40-40l0-112c0-.9 0-1.9 .1-2.8l0-69.7-32 0c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L490.7 166.3C447.2 181.7 416 223.2 416 272l0 24.6c-19.1 11.1-32 31.7-32 55.4l0 128zM528 240c-17.7 0-32 14.3-32 32l0 48 64 0 0-48c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80l0 48c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32l0-48z\"]\n};\nconst faCloudArrowDown = {\n prefix: 'fas',\n iconName: 'cloud-arrow-down',\n icon: [640, 512, [62337, \"cloud-download\", \"cloud-download-alt\"], \"f0ed\", \"M144 480C64.5 480 0 415.5 0 336c0-62.8 40.2-116.2 96.2-135.9c-.1-2.7-.2-5.4-.2-8.1c0-88.4 71.6-160 160-160c59.3 0 111 32.2 138.7 80.2C409.9 102 428.3 96 448 96c53 0 96 43 96 96c0 12.2-2.3 23.8-6.4 34.6C596 238.4 640 290.1 640 352c0 70.7-57.3 128-128 128l-368 0zm79-167l80 80c9.4 9.4 24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-39 39L344 184c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 134.1-39-39c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9z\"]\n};\nconst faCloudDownload = faCloudArrowDown;\nconst faCloudDownloadAlt = faCloudArrowDown;\nconst faChildren = {\n prefix: 'fas',\n iconName: 'children',\n icon: [640, 512, [], \"e4e1\", \"M160 0a64 64 0 1 1 0 128A64 64 0 1 1 160 0zM88 480l0-80-17.8 0c-10.9 0-18.6-10.7-15.2-21.1l31.1-93.4L57.5 323.3c-10.7 14.1-30.8 16.8-44.8 6.2s-16.8-30.7-6.2-44.8L65.4 207c22.4-29.6 57.5-47 94.6-47s72.2 17.4 94.6 47l58.9 77.7c10.7 14.1 7.9 34.2-6.2 44.8s-34.2 7.9-44.8-6.2l-28.6-37.8L265 378.9c3.5 10.4-4.3 21.1-15.2 21.1L232 400l0 80c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-80-16 0 0 80c0 17.7-14.3 32-32 32s-32-14.3-32-32zM480 0a64 64 0 1 1 0 128A64 64 0 1 1 480 0zm-8 384l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-179.5L395.1 321c-9.4 15-29.2 19.4-44.1 10s-19.4-29.2-10-44.1l51.7-82.1c17.6-27.9 48.3-44.9 81.2-44.9l12.3 0c33 0 63.7 16.9 81.2 44.9L619.1 287c9.4 15 4.9 34.7-10 44.1s-34.7 4.9-44.1-10L552 300.5 552 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96-16 0z\"]\n};\nconst faChalkboard = {\n prefix: 'fas',\n iconName: 'chalkboard',\n icon: [576, 512, [\"blackboard\"], \"f51b\", \"M96 32C60.7 32 32 60.7 32 96l0 288 64 0L96 96l384 0 0 288 64 0 0-288c0-35.3-28.7-64-64-64L96 32zM224 384l0 32L32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l512 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-128 0 0-32c0-17.7-14.3-32-32-32l-128 0c-17.7 0-32 14.3-32 32z\"]\n};\nconst faBlackboard = faChalkboard;\nconst faUserLargeSlash = {\n prefix: 'fas',\n iconName: 'user-large-slash',\n icon: [640, 512, [\"user-alt-slash\"], \"f4fa\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L381.9 274c48.5-23.2 82.1-72.7 82.1-130C464 64.5 399.5 0 320 0C250.4 0 192.4 49.3 178.9 114.9L38.8 5.1zM545.5 512L528 512 284.3 320l-59 0C136.2 320 64 392.2 64 481.3c0 17 13.8 30.7 30.7 30.7l450.6 0 .3 0z\"]\n};\nconst faUserAltSlash = faUserLargeSlash;\nconst faEnvelopeOpen = {\n prefix: 'fas',\n iconName: 'envelope-open',\n icon: [512, 512, [62135], \"f2b6\", \"M64 208.1L256 65.9 448 208.1l0 47.4L289.5 373c-9.7 7.2-21.4 11-33.5 11s-23.8-3.9-33.5-11L64 255.5l0-47.4zM256 0c-12.1 0-23.8 3.9-33.5 11L25.9 156.7C9.6 168.8 0 187.8 0 208.1L0 448c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-239.9c0-20.3-9.6-39.4-25.9-51.4L289.5 11C279.8 3.9 268.1 0 256 0z\"]\n};\nconst faHandshakeSimpleSlash = {\n prefix: 'fas',\n iconName: 'handshake-simple-slash',\n icon: [640, 512, [\"handshake-alt-slash\"], \"e05f\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-135-105.8c-1.1-11.4-6.3-22.3-15.3-30.7l-134.2-123-23.4 18.2-26-20.3 77.2-60.1c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L550.2 352l41.8 0c26.5 0 48-21.5 48-48l0-128c0-26.5-21.5-48-48-48l-76 0-4 0-.7 0-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2l-89.7 72.6-25.8-20.3 81.8-66.2c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-35.5 23.7L38.8 5.1zM0 176L0 304c0 26.5 21.5 48 48 48l108.2 0 91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c.8-.8 1.5-1.7 2.2-2.6L41.2 128.5C17.9 131.8 0 151.8 0 176z\"]\n};\nconst faHandshakeAltSlash = faHandshakeSimpleSlash;\nconst faMattressPillow = {\n prefix: 'fas',\n iconName: 'mattress-pillow',\n icon: [640, 512, [], \"e525\", \"M256 64L64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l192 0 0-384zm32 384l288 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L288 64l0 384zM64 160c0-17.7 14.3-32 32-32l64 0c17.7 0 32 14.3 32 32l0 192c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-192z\"]\n};\nconst faGuaraniSign = {\n prefix: 'fas',\n iconName: 'guarani-sign',\n icon: [384, 512, [], \"e19a\", \"M192 0c-17.7 0-32 14.3-32 32l0 34.7C69.2 81.9 0 160.9 0 256s69.2 174.1 160 189.3l0 34.7c0 17.7 14.3 32 32 32s32-14.3 32-32l0-34.7c90.8-15.2 160-94.2 160-189.3c0-17.7-14.3-32-32-32l-128 0 0-92c22.1 5.7 41.8 17.1 57.6 32.6c12.6 12.4 32.9 12.2 45.3-.4s12.2-32.9-.5-45.3C299 92 263.5 73.3 224 66.7L224 32c0-17.7-14.3-32-32-32zM160 132L160 380c-55.2-14.2-96-64.3-96-124s40.8-109.8 96-124zM224 380l0-92 92 0c-11.6 45-47 80.4-92 92z\"]\n};\nconst faArrowsRotate = {\n prefix: 'fas',\n iconName: 'arrows-rotate',\n icon: [512, 512, [128472, \"refresh\", \"sync\"], \"f021\", \"M105.1 202.6c7.7-21.8 20.2-42.3 37.8-59.8c62.5-62.5 163.8-62.5 226.3 0L386.3 160 352 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l111.5 0c0 0 0 0 0 0l.4 0c17.7 0 32-14.3 32-32l0-112c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 35.2L414.4 97.6c-87.5-87.5-229.3-87.5-316.8 0C73.2 122 55.6 150.7 44.8 181.4c-5.9 16.7 2.9 34.9 19.5 40.8s34.9-2.9 40.8-19.5zM39 289.3c-5 1.5-9.8 4.2-13.7 8.2c-4 4-6.7 8.8-8.1 14c-.3 1.2-.6 2.5-.8 3.8c-.3 1.7-.4 3.4-.4 5.1L16 432c0 17.7 14.3 32 32 32s32-14.3 32-32l0-35.1 17.6 17.5c0 0 0 0 0 0c87.5 87.4 229.3 87.4 316.7 0c24.4-24.4 42.1-53.1 52.9-83.8c5.9-16.7-2.9-34.9-19.5-40.8s-34.9 2.9-40.8 19.5c-7.7 21.8-20.2 42.3-37.8 59.8c-62.5 62.5-163.8 62.5-226.3 0l-.1-.1L125.6 352l34.4 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L48.4 288c-1.6 0-3.2 .1-4.8 .3s-3.1 .5-4.6 1z\"]\n};\nconst faRefresh = faArrowsRotate;\nconst faSync = faArrowsRotate;\nconst faFireExtinguisher = {\n prefix: 'fas',\n iconName: 'fire-extinguisher',\n icon: [512, 512, [129519], \"f134\", \"M500.3 7.3C507.7 13.3 512 22.4 512 32l0 96c0 9.6-4.3 18.7-11.7 24.7s-17.2 8.5-26.6 6.6l-160-32C301.5 124.9 292 115.7 289 104l-65 0 0 34.8c37.8 18 64 56.5 64 101.2l0 144L64 384l0-144c0-44.7 26.2-83.2 64-101.2l0-28.8c-36.2 11.1-66 36.9-82.3 70.5c-5.8 11.9-20.2 16.9-32.1 11.1S-3.3 171.4 2.5 159.5C26.7 109.8 72.7 72.6 128 60.4L128 32c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 24 65 0c3-11.7 12.5-20.9 24.7-23.4l160-32c9.4-1.9 19.1 .6 26.6 6.6zM288 416l0 32c0 35.3-28.7 64-64 64l-96 0c-35.3 0-64-28.7-64-64l0-32 224 0zM176 96a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nconst faCruzeiroSign = {\n prefix: 'fas',\n iconName: 'cruzeiro-sign',\n icon: [448, 512, [], \"e152\", \"M96 256c0-88.4 71.6-160 160-160c41 0 78.3 15.4 106.7 40.7c13.2 11.8 33.4 10.7 45.2-2.5s10.7-33.4-2.5-45.2c-39.6-35.5-92-57-149.3-57C132.3 32 32 132.3 32 256s100.3 224 224 224c57.4 0 109.7-21.6 149.3-57c13.2-11.8 14.3-32 2.5-45.2s-32-14.3-45.2-2.5C334.3 400.6 297 416 256 416l0-96 0-8.7c0-12.8 10.4-23.3 23.3-23.3c4.6 0 9.1 1.4 12.9 3.9l10.1 6.7c14.7 9.8 34.6 5.8 44.4-8.9s5.8-34.6-8.9-44.4l-10.1-6.7c-14.3-9.6-31.2-14.7-48.4-14.7c-12.4 0-24.2 2.6-34.9 7.3c-5.5-4.5-12.6-7.3-20.3-7.3c-17.7 0-32 14.3-32 32l0 55.3 0 8.7 0 82.7C135.5 378 96 321.6 96 256z\"]\n};\nconst faGreaterThanEqual = {\n prefix: 'fas',\n iconName: 'greater-than-equal',\n icon: [448, 512, [], \"f532\", \"M52.1 93.7C35.7 87.1 27.7 68.5 34.3 52.1s25.2-24.4 41.6-17.8l320 128C408 167.1 416 178.9 416 192s-8 24.9-20.1 29.7l-320 128c-16.4 6.6-35-1.4-41.6-17.8s1.4-35 17.8-41.6L297.8 192 52.1 93.7zM416 416c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0z\"]\n};\nconst faShieldHalved = {\n prefix: 'fas',\n iconName: 'shield-halved',\n icon: [512, 512, [\"shield-alt\"], \"f3ed\", \"M256 0c4.6 0 9.2 1 13.4 2.9L457.7 82.8c22 9.3 38.4 31 38.3 57.2c-.5 99.2-41.3 280.7-213.6 363.2c-16.7 8-36.1 8-52.8 0C57.3 420.7 16.5 239.2 16 140c-.1-26.2 16.3-47.9 38.3-57.2L242.7 2.9C246.8 1 251.4 0 256 0zm0 66.8l0 378.1C394 378 431.1 230.1 432 141.4L256 66.8s0 0 0 0z\"]\n};\nconst faShieldAlt = faShieldHalved;\nconst faBookAtlas = {\n prefix: 'fas',\n iconName: 'book-atlas',\n icon: [448, 512, [\"atlas\"], \"f558\", \"M0 96C0 43 43 0 96 0L384 0l32 0c17.7 0 32 14.3 32 32l0 320c0 17.7-14.3 32-32 32l0 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0L96 512c-53 0-96-43-96-96L0 96zM64 416c0 17.7 14.3 32 32 32l256 0 0-64L96 384c-17.7 0-32 14.3-32 32zM247.4 283.8c-3.7 3.7-6.2 4.2-7.4 4.2s-3.7-.5-7.4-4.2c-3.8-3.7-8-10-11.8-18.9c-6.2-14.5-10.8-34.3-12.2-56.9l63 0c-1.5 22.6-6 42.4-12.2 56.9c-3.8 8.9-8 15.2-11.8 18.9zm42.7-9.9c7.3-18.3 12-41.1 13.4-65.9l31.1 0c-4.7 27.9-21.4 51.7-44.5 65.9zm0-163.8c23.2 14.2 39.9 38 44.5 65.9l-31.1 0c-1.4-24.7-6.1-47.5-13.4-65.9zM368 192a128 128 0 1 0 -256 0 128 128 0 1 0 256 0zM145.3 208l31.1 0c1.4 24.7 6.1 47.5 13.4 65.9c-23.2-14.2-39.9-38-44.5-65.9zm31.1-32l-31.1 0c4.7-27.9 21.4-51.7 44.5-65.9c-7.3 18.3-12 41.1-13.4 65.9zm56.1-75.8c3.7-3.7 6.2-4.2 7.4-4.2s3.7 .5 7.4 4.2c3.8 3.7 8 10 11.8 18.9c6.2 14.5 10.8 34.3 12.2 56.9l-63 0c1.5-22.6 6-42.4 12.2-56.9c3.8-8.9 8-15.2 11.8-18.9z\"]\n};\nconst faAtlas = faBookAtlas;\nconst faVirus = {\n prefix: 'fas',\n iconName: 'virus',\n icon: [512, 512, [], \"e074\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 11.5c0 49.9-60.3 74.9-95.6 39.6L120.2 75C107.7 62.5 87.5 62.5 75 75s-12.5 32.8 0 45.3l8.2 8.2C118.4 163.7 93.4 224 43.5 224L32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l11.5 0c49.9 0 74.9 60.3 39.6 95.6L75 391.8c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l8.2-8.2c35.3-35.3 95.6-10.3 95.6 39.6l0 11.5c0 17.7 14.3 32 32 32s32-14.3 32-32l0-11.5c0-49.9 60.3-74.9 95.6-39.6l8.2 8.2c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-8.2-8.2c-35.3-35.3-10.3-95.6 39.6-95.6l11.5 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-11.5 0c-49.9 0-74.9-60.3-39.6-95.6l8.2-8.2c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-8.2 8.2C348.3 118.4 288 93.4 288 43.5L288 32zM176 224a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm128 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faEnvelopeCircleCheck = {\n prefix: 'fas',\n iconName: 'envelope-circle-check',\n icon: [640, 512, [], \"e4e8\", \"M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0l57.4-43c23.9-59.8 79.7-103.3 146.3-109.8l13.9-10.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48L48 64zM294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176 0 384c0 35.3 28.7 64 64 64l296.2 0C335.1 417.6 320 378.5 320 336c0-5.6 .3-11.1 .8-16.6l-26.4 19.8zM640 336a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 353.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nconst faLayerGroup = {\n prefix: 'fas',\n iconName: 'layer-group',\n icon: [576, 512, [], \"f5fd\", \"M264.5 5.2c14.9-6.9 32.1-6.9 47 0l218.6 101c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 149.8C37.4 145.8 32 137.3 32 128s5.4-17.9 13.9-21.8L264.5 5.2zM476.9 209.6l53.2 24.6c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 277.8C37.4 273.8 32 265.3 32 256s5.4-17.9 13.9-21.8l53.2-24.6 152 70.2c23.4 10.8 50.4 10.8 73.8 0l152-70.2zm-152 198.2l152-70.2 53.2 24.6c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L45.9 405.8C37.4 401.8 32 393.3 32 384s5.4-17.9 13.9-21.8l53.2-24.6 152 70.2c23.4 10.8 50.4 10.8 73.8 0z\"]\n};\nconst faArrowsToDot = {\n prefix: 'fas',\n iconName: 'arrows-to-dot',\n icon: [512, 512, [], \"e4be\", \"M256 0c17.7 0 32 14.3 32 32l0 32 32 0c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-64 64c-12.5 12.5-32.8 12.5-45.3 0l-64-64c-9.2-9.2-11.9-22.9-6.9-34.9s16.6-19.8 29.6-19.8l32 0 0-32c0-17.7 14.3-32 32-32zM169.4 393.4l64-64c12.5-12.5 32.8-12.5 45.3 0l64 64c9.2 9.2 11.9 22.9 6.9 34.9s-16.6 19.8-29.6 19.8l-32 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-32 0c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9zM32 224l32 0 0-32c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l64 64c12.5 12.5 12.5 32.8 0 45.3l-64 64c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6l0-32-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zm297.4 54.6c-12.5-12.5-12.5-32.8 0-45.3l64-64c9.2-9.2 22.9-11.9 34.9-6.9s19.8 16.6 19.8 29.6l0 32 32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0 0 32c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-64-64zM256 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faArchway = {\n prefix: 'fas',\n iconName: 'archway',\n icon: [512, 512, [], \"f557\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l448 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32zm0 384c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0 64 0 0-128c0-53 43-96 96-96s96 43 96 96l0 128 64 0 64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-288L32 128l0 288z\"]\n};\nconst faHeartCircleCheck = {\n prefix: 'fas',\n iconName: 'heart-circle-check',\n icon: [576, 512, [], \"e4fd\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6l0-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1l0 5.8c0 41.5 17.2 81.2 47.6 109.5zM576 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L416 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nconst faHouseChimneyCrack = {\n prefix: 'fas',\n iconName: 'house-chimney-crack',\n icon: [576, 512, [\"house-damage\"], \"f6f1\", \"M575.8 255.5c0 18-15 32.1-32 32.1l-32 0 .7 160.2c.2 35.5-28.5 64.3-64 64.3l-122.1 0L288 448l80.8-67.3c7.8-6.5 7.6-18.6-.4-24.9L250.6 263.2c-14.6-11.5-33.8 7-22.8 22L288 368l-85.5 71.2c-6.1 5-7.5 13.8-3.5 20.5L230.4 512l-102.3 0c-35.3 0-64-28.7-64-64l0-160.4-32 0c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L416 100.7 416 64c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 121 52.8 46.4c8 7 12 15 11 24z\"]\n};\nconst faHouseDamage = faHouseChimneyCrack;\nconst faFileZipper = {\n prefix: 'fas',\n iconName: 'file-zipper',\n icon: [384, 512, [\"file-archive\"], \"f1c6\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM96 48c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16zm-6.3 71.8c3.7-14 16.4-23.8 30.9-23.8l14.8 0c14.5 0 27.2 9.7 30.9 23.8l23.5 88.2c1.4 5.4 2.1 10.9 2.1 16.4c0 35.2-28.8 63.7-64 63.7s-64-28.5-64-63.7c0-5.5 .7-11.1 2.1-16.4l23.5-88.2zM112 336c-8.8 0-16 7.2-16 16s7.2 16 16 16l32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-32 0z\"]\n};\nconst faFileArchive = faFileZipper;\nconst faSquare = {\n prefix: 'fas',\n iconName: 'square',\n icon: [448, 512, [9632, 9723, 9724, 61590], \"f0c8\", \"M0 96C0 60.7 28.7 32 64 32H384c35.3 0 64 28.7 64 64V416c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V96z\"]\n};\nconst faMartiniGlassEmpty = {\n prefix: 'fas',\n iconName: 'martini-glass-empty',\n icon: [512, 512, [\"glass-martini\"], \"f000\", \"M32 0C19.1 0 7.4 7.8 2.4 19.8s-2.2 25.7 6.9 34.9L224 269.3 224 448l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0 96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-178.7L502.6 54.6c9.2-9.2 11.9-22.9 6.9-34.9S492.9 0 480 0L32 0zM256 210.7L109.3 64l293.5 0L256 210.7z\"]\n};\nconst faGlassMartini = faMartiniGlassEmpty;\nconst faCouch = {\n prefix: 'fas',\n iconName: 'couch',\n icon: [640, 512, [], \"f4b8\", \"M64 160C64 89.3 121.3 32 192 32l256 0c70.7 0 128 57.3 128 128l0 33.6c-36.5 7.4-64 39.7-64 78.4l0 48-384 0 0-48c0-38.7-27.5-71-64-78.4L64 160zM544 272c0-20.9 13.4-38.7 32-45.3c5-1.8 10.4-2.7 16-2.7c26.5 0 48 21.5 48 48l0 176c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32L96 448c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32L0 272c0-26.5 21.5-48 48-48c5.6 0 11 1 16 2.7c18.6 6.6 32 24.4 32 45.3l0 48 0 32 32 0 384 0 32 0 0-32 0-48z\"]\n};\nconst faCediSign = {\n prefix: 'fas',\n iconName: 'cedi-sign',\n icon: [384, 512, [], \"e0df\", \"M256 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 34.7C101.2 81.9 32 160.9 32 256s69.2 174.1 160 189.3l0 34.7c0 17.7 14.3 32 32 32s32-14.3 32-32l0-34.7c30.9-5.2 59.2-17.7 83.2-35.8c14.1-10.6 17-30.7 6.4-44.8s-30.7-17-44.8-6.4c-13.2 9.9-28.3 17.3-44.8 21.6L256 132c16.4 4.2 31.6 11.6 44.8 21.6c14.1 10.6 34.2 7.8 44.8-6.4s7.8-34.2-6.4-44.8c-24-18-52.4-30.6-83.2-35.8L256 32zM192 132L192 380c-55.2-14.2-96-64.3-96-124s40.8-109.8 96-124z\"]\n};\nconst faItalic = {\n prefix: 'fas',\n iconName: 'italic',\n icon: [384, 512, [], \"f033\", \"M128 64c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-58.7 0L160 416l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l58.7 0L224 96l-64 0c-17.7 0-32-14.3-32-32z\"]\n};\nconst faTableCellsColumnLock = {\n prefix: 'fas',\n iconName: 'table-cells-column-lock',\n icon: [640, 512, [], \"e678\", \"M0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 65.1c-37.8 5.4-69.4 29.6-85.2 62.9L360 224l0 64 56 0 0 8.6c-19.1 11.1-32 31.7-32 55.4l-24 0 0 64 24 0 0 64L64 480c-35.3 0-64-28.7-64-64L0 96zm208 0l0 64 88 0 0-64-88 0zm240 0l-88 0 0 64 88 0 0-64zM208 224l0 64 88 0 0-64-88 0zm0 128l0 64 88 0 0-64-88 0zM528 240c-17.7 0-32 14.3-32 32l0 48 64 0 0-48c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80l0 48c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32l0-48z\"]\n};\nconst faChurch = {\n prefix: 'fas',\n iconName: 'church',\n icon: [640, 512, [9962], \"f51d\", \"M344 24c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 24-32 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l32 0 0 46.4L183.3 210c-14.5 8.7-23.3 24.3-23.3 41.2L160 512l96 0 0-96c0-35.3 28.7-64 64-64s64 28.7 64 64l0 96 96 0 0-260.8c0-16.9-8.8-32.5-23.3-41.2L344 142.4 344 96l32 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-32 0 0-24zM24.9 330.3C9.5 338.8 0 354.9 0 372.4L0 464c0 26.5 21.5 48 48 48l80 0 0-238.4L24.9 330.3zM592 512c26.5 0 48-21.5 48-48l0-91.6c0-17.5-9.5-33.6-24.9-42.1L512 273.6 512 512l80 0z\"]\n};\nconst faCommentsDollar = {\n prefix: 'fas',\n iconName: 'comments-dollar',\n icon: [640, 512, [], \"f653\", \"M416 176c0 97.2-93.1 176-208 176c-38.2 0-73.9-8.7-104.7-23.9c-7.5 4-16 7.9-25.2 11.4C59.8 346.4 37.8 352 16 352c-6.9 0-13.1-4.5-15.2-11.1s.2-13.8 5.8-17.9c0 0 0 0 0 0s0 0 0 0l.2-.2c.2-.2 .6-.4 1.1-.8c1-.8 2.5-2 4.3-3.7c3.6-3.3 8.5-8.1 13.3-14.3c5.5-7 10.7-15.4 14.2-24.7C14.7 250.3 0 214.6 0 176C0 78.8 93.1 0 208 0S416 78.8 416 176zM231.5 383C348.9 372.9 448 288.3 448 176c0-5.2-.2-10.4-.6-15.5C555.1 167.1 640 243.2 640 336c0 38.6-14.7 74.3-39.6 103.4c3.5 9.4 8.7 17.7 14.2 24.7c4.8 6.2 9.7 11 13.3 14.3c1.8 1.6 3.3 2.9 4.3 3.7c.5 .4 .9 .7 1.1 .8l.2 .2s0 0 0 0s0 0 0 0c5.6 4.1 7.9 11.3 5.8 17.9c-2.1 6.6-8.3 11.1-15.2 11.1c-21.8 0-43.8-5.6-62.1-12.5c-9.2-3.5-17.8-7.4-25.2-11.4C505.9 503.3 470.2 512 432 512c-95.6 0-176.2-54.6-200.5-129zM228 72c0-11-9-20-20-20s-20 9-20 20l0 14c-7.6 1.7-15.2 4.4-22.2 8.5c-13.9 8.3-25.9 22.8-25.8 43.9c.1 20.3 12 33.1 24.7 40.7c11 6.6 24.7 10.8 35.6 14l1.7 .5c12.6 3.8 21.8 6.8 28 10.7c5.1 3.2 5.8 5.4 5.9 8.2c.1 5-1.8 8-5.9 10.5c-5 3.1-12.9 5-21.4 4.7c-11.1-.4-21.5-3.9-35.1-8.5c-2.3-.8-4.7-1.6-7.2-2.4c-10.5-3.5-21.8 2.2-25.3 12.6s2.2 21.8 12.6 25.3c1.9 .6 4 1.3 6.1 2.1c0 0 0 0 0 0s0 0 0 0c8.3 2.9 17.9 6.2 28.2 8.4l0 14.6c0 11 9 20 20 20s20-9 20-20l0-13.8c8-1.7 16-4.5 23.2-9c14.3-8.9 25.1-24.1 24.8-45c-.3-20.3-11.7-33.4-24.6-41.6c-11.5-7.2-25.9-11.6-37.1-15l-.7-.2c-12.8-3.9-21.9-6.7-28.3-10.5c-5.2-3.1-5.3-4.9-5.3-6.7c0-3.7 1.4-6.5 6.2-9.3c5.4-3.2 13.6-5.1 21.5-5c9.6 .1 20.2 2.2 31.2 5.2c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-6.5-1.7-13.7-3.4-21.1-4.7L228 72z\"]\n};\nconst faDemocrat = {\n prefix: 'fas',\n iconName: 'democrat',\n icon: [640, 512, [], \"f747\", \"M64 32c0-8.9 3.8-20.9 6.2-27.3C71.2 1.8 74 0 77 0c1.9 0 3.8 .7 5.2 2.1L128 45.7 173.8 2.1C175.2 .7 177.1 0 179 0c3 0 5.8 1.8 6.8 4.7c2.4 6.5 6.2 18.4 6.2 27.3c0 26.5-21.9 42-29.5 46.6l76.2 72.6c6 5.7 13.9 8.8 22.1 8.8L480 160l32 0c40.3 0 78.2 19 102.4 51.2l19.2 25.6c10.6 14.1 7.7 34.2-6.4 44.8s-34.2 7.7-44.8-6.4l-19.2-25.6c-5.3-7-11.8-12.8-19.2-17l0 87.4-352 0-40.4-94.3c-3.9-9.2-15.3-12.6-23.6-7l-42.1 28c-9.1 6.1-19.7 9.3-30.7 9.3l-2 0C23.9 256 0 232.1 0 202.7c0-12.1 4.1-23.8 11.7-33.3L87.6 74.6C78.1 67.4 64 53.2 64 32zM448 352l96 0 0 64 0 64c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-64-160 0 0 64c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-64 0-64 96 0 160 0zM260.9 210.9c-.9-1.8-2.8-2.9-4.8-2.9s-3.9 1.1-4.8 2.9l-10.5 20.5-23.5 3.3c-2 .3-3.7 1.6-4.3 3.5s-.1 3.9 1.3 5.3l17 16-4 22.6c-.3 1.9 .5 3.9 2.1 5s3.8 1.3 5.6 .4l21-10.7 21 10.7c1.8 .9 4 .8 5.6-.4s2.5-3.1 2.1-5l-4-22.6 17-16c1.5-1.4 2-3.4 1.3-5.3s-2.3-3.2-4.3-3.5l-23.5-3.3-10.5-20.5zM368.1 208c-2 0-3.9 1.1-4.8 2.9l-10.5 20.5-23.5 3.3c-2 .3-3.7 1.6-4.3 3.5s-.1 3.9 1.3 5.3l17 16-4 22.6c-.3 1.9 .5 3.9 2.1 5s3.8 1.3 5.6 .4l21-10.7 21 10.7c1.8 .9 4 .8 5.6-.4s2.5-3.1 2.1-5l-4-22.6 17-16c1.5-1.4 2-3.4 1.4-5.3s-2.3-3.2-4.3-3.5l-23.5-3.3-10.5-20.5c-.9-1.8-2.8-2.9-4.8-2.9zm116.8 2.9c-.9-1.8-2.8-2.9-4.8-2.9s-3.9 1.1-4.8 2.9l-10.5 20.5-23.5 3.3c-2 .3-3.7 1.6-4.3 3.5s-.1 3.9 1.3 5.3l17 16-4 22.6c-.3 1.9 .5 3.9 2.1 5s3.8 1.3 5.6 .4l21-10.7 21 10.7c1.8 .9 4 .8 5.6-.4s2.5-3.1 2.1-5l-4-22.6 17-16c1.5-1.4 2-3.4 1.4-5.3s-2.3-3.2-4.3-3.5l-23.5-3.3-10.5-20.5z\"]\n};\nconst faZ = {\n prefix: 'fas',\n iconName: 'z',\n icon: [384, 512, [122], \"5a\", \"M0 64C0 46.3 14.3 32 32 32l320 0c12.4 0 23.7 7.2 29 18.4s3.6 24.5-4.4 34.1L100.3 416 352 416c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-12.4 0-23.7-7.2-29-18.4s-3.6-24.5 4.4-34.1L283.7 96 32 96C14.3 96 0 81.7 0 64z\"]\n};\nconst faPersonSkiing = {\n prefix: 'fas',\n iconName: 'person-skiing',\n icon: [512, 512, [9975, \"skiing\"], \"f7c9\", \"M380.7 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM2.7 268.9c6.1-11.8 20.6-16.3 32.4-10.2L232.7 361.3l46.2-69.2-75.1-75.1c-14.6-14.6-20.4-33.9-18.4-52.1l108.8 52 39.3 39.3c16.2 16.2 18.7 41.5 6 60.6L289.8 391l128.7 66.8c13.6 7.1 29.8 7.2 43.6 .3l15.2-7.6c11.9-5.9 26.3-1.1 32.2 10.7s1.1 26.3-10.7 32.2l-15.2 7.6c-27.5 13.7-59.9 13.5-87.2-.7L12.9 301.3C1.2 295.2-3.4 280.7 2.7 268.9zM118.9 65.6L137 74.2l8.7-17.4c4-7.9 13.6-11.1 21.5-7.2s11.1 13.6 7.2 21.5l-8.5 16.9 54.7 26.2c1.5-.7 3.1-1.4 4.7-2.1l83.4-33.4c34.2-13.7 72.8 4.2 84.5 39.2l17.1 51.2 52.1 26.1c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3l-58.1-29c-11.4-5.7-20-15.7-24.1-27.8l-5.8-17.3-27.3 12.1-6.8 3-6.7-3.2L151.5 116.7l-9.2 18.4c-4 7.9-13.6 11.1-21.5 7.2s-11.1-13.6-7.2-21.5l9-18-17.6-8.4c-8-3.8-11.3-13.4-7.5-21.3s13.4-11.3 21.3-7.5z\"]\n};\nconst faSkiing = faPersonSkiing;\nconst faRoadLock = {\n prefix: 'fas',\n iconName: 'road-lock',\n icon: [640, 512, [], \"e567\", \"M288 32l-74.8 0c-27.1 0-51.3 17.1-60.3 42.6L35.1 407.2c-2.1 5.9-3.1 12-3.1 18.2C32 455.5 56.5 480 86.6 480L288 480l0-64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 64 32 0 0-128c0-23.7 12.9-44.4 32-55.4l0-24.6c0-58.3 44.6-106.2 101.5-111.5L487.1 74.6C478 49.1 453.9 32 426.8 32L352 32l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64zm64 192l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32s32 14.3 32 32zm176 16c17.7 0 32 14.3 32 32l0 48-64 0 0-48c0-17.7 14.3-32 32-32zm-80 32l0 48c-17.7 0-32 14.3-32 32l0 128c0 17.7 14.3 32 32 32l160 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32l0-48c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nconst faA = {\n prefix: 'fas',\n iconName: 'a',\n icon: [384, 512, [97], \"41\", \"M221.5 51.7C216.6 39.8 204.9 32 192 32s-24.6 7.8-29.5 19.7l-120 288-40 96c-6.8 16.3 .9 35 17.2 41.8s35-.9 41.8-17.2L93.3 384l197.3 0 31.8 76.3c6.8 16.3 25.5 24 41.8 17.2s24-25.5 17.2-41.8l-40-96-120-288zM264 320l-144 0 72-172.8L264 320z\"]\n};\nconst faTemperatureArrowDown = {\n prefix: 'fas',\n iconName: 'temperature-arrow-down',\n icon: [576, 512, [\"temperature-down\"], \"e03f\", \"M128 112c0-26.5 21.5-48 48-48s48 21.5 48 48l0 164.5c0 17.3 7.1 31.9 15.3 42.5C249.8 332.6 256 349.5 256 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9c8.2-10.6 15.3-25.2 15.3-42.5L128 112zM176 0C114.1 0 64 50.1 64 112l0 164.4c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C43.2 304.2 32 334.8 32 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.2-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6L288 112C288 50.1 237.9 0 176 0zm0 416c26.5 0 48-21.5 48-48c0-20.9-13.4-38.7-32-45.3l0-50.7c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 50.7c-18.6 6.6-32 24.4-32 45.3c0 26.5 21.5 48 48 48zm336-64l-32 0 0-288c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 288-32 0c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c6 6 14.1 9.4 22.6 9.4s16.6-3.4 22.6-9.4l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8z\"]\n};\nconst faTemperatureDown = faTemperatureArrowDown;\nconst faFeatherPointed = {\n prefix: 'fas',\n iconName: 'feather-pointed',\n icon: [512, 512, [\"feather-alt\"], \"f56b\", \"M278.5 215.6L23 471c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l74.8-74.8c7.4 4.6 15.3 8.2 23.8 10.5C200.3 452.8 270 454.5 338 409.4c12.2-8.1 5.8-25.4-8.8-25.4l-16.1 0c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l97.7-29.3c3.4-1 6.4-3.1 8.4-6.1c4.4-6.4 8.6-12.9 12.6-19.6c6.2-10.3-1.5-23-13.5-23l-38.6 0c-5.1 0-9.2-4.1-9.2-9.2c0-4.1 2.7-7.6 6.5-8.8l80.9-24.3c4.6-1.4 8.4-4.8 10.2-9.3C494.5 163 507.8 86.1 511.9 36.8c.8-9.9-3-19.6-10-26.6s-16.7-10.8-26.6-10C391.5 7 228.5 40.5 137.4 131.6C57.3 211.7 56.7 302.3 71.3 356.4c2.1 7.9 12 9.6 17.8 3.8L253.6 195.8c6.2-6.2 16.4-6.2 22.6 0c5.4 5.4 6.1 13.6 2.2 19.8z\"]\n};\nconst faFeatherAlt = faFeatherPointed;\nconst faP = {\n prefix: 'fas',\n iconName: 'p',\n icon: [320, 512, [112], \"50\", \"M0 96C0 60.7 28.7 32 64 32l96 0c88.4 0 160 71.6 160 160s-71.6 160-160 160l-96 0 0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32L0 320 0 96zM64 288l96 0c53 0 96-43 96-96s-43-96-96-96L64 96l0 192z\"]\n};\nconst faSnowflake = {\n prefix: 'fas',\n iconName: 'snowflake',\n icon: [448, 512, [10052, 10054], \"f2dc\", \"M224 0c17.7 0 32 14.3 32 32l0 30.1 15-15c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-49 49 0 70.3 61.4-35.8 17.7-66.1c3.4-12.8 16.6-20.4 29.4-17s20.4 16.6 17 29.4l-5.2 19.3 23.6-13.8c15.3-8.9 34.9-3.7 43.8 11.5s3.8 34.9-11.5 43.8l-25.3 14.8 21.7 5.8c12.8 3.4 20.4 16.6 17 29.4s-16.6 20.4-29.4 17l-67.7-18.1L287.5 256l60.9 35.5 67.7-18.1c12.8-3.4 26 4.2 29.4 17s-4.2 26-17 29.4l-21.7 5.8 25.3 14.8c15.3 8.9 20.4 28.5 11.5 43.8s-28.5 20.4-43.8 11.5l-23.6-13.8 5.2 19.3c3.4 12.8-4.2 26-17 29.4s-26-4.2-29.4-17l-17.7-66.1L256 311.7l0 70.3 49 49c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-15-15 0 30.1c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-30.1-15 15c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l49-49 0-70.3-61.4 35.8-17.7 66.1c-3.4 12.8-16.6 20.4-29.4 17s-20.4-16.6-17-29.4l5.2-19.3L48.1 395.6c-15.3 8.9-34.9 3.7-43.8-11.5s-3.7-34.9 11.5-43.8l25.3-14.8-21.7-5.8c-12.8-3.4-20.4-16.6-17-29.4s16.6-20.4 29.4-17l67.7 18.1L160.5 256 99.6 220.5 31.9 238.6c-12.8 3.4-26-4.2-29.4-17s4.2-26 17-29.4l21.7-5.8L15.9 171.6C.6 162.7-4.5 143.1 4.4 127.9s28.5-20.4 43.8-11.5l23.6 13.8-5.2-19.3c-3.4-12.8 4.2-26 17-29.4s26 4.2 29.4 17l17.7 66.1L192 200.3l0-70.3L143 81c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l15 15L192 32c0-17.7 14.3-32 32-32z\"]\n};\nconst faNewspaper = {\n prefix: 'fas',\n iconName: 'newspaper',\n icon: [512, 512, [128240], \"f1ea\", \"M96 96c0-35.3 28.7-64 64-64l288 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L80 480c-44.2 0-80-35.8-80-80L0 128c0-17.7 14.3-32 32-32s32 14.3 32 32l0 272c0 8.8 7.2 16 16 16s16-7.2 16-16L96 96zm64 24l0 80c0 13.3 10.7 24 24 24l112 0c13.3 0 24-10.7 24-24l0-80c0-13.3-10.7-24-24-24L184 96c-13.3 0-24 10.7-24 24zm208-8c0 8.8 7.2 16 16 16l48 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-48 0c-8.8 0-16 7.2-16 16zm0 96c0 8.8 7.2 16 16 16l48 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-48 0c-8.8 0-16 7.2-16 16zM160 304c0 8.8 7.2 16 16 16l256 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-256 0c-8.8 0-16 7.2-16 16zm0 96c0 8.8 7.2 16 16 16l256 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-256 0c-8.8 0-16 7.2-16 16z\"]\n};\nconst faRectangleAd = {\n prefix: 'fas',\n iconName: 'rectangle-ad',\n icon: [576, 512, [\"ad\"], \"f641\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM229.5 173.3l72 144c5.9 11.9 1.1 26.3-10.7 32.2s-26.3 1.1-32.2-10.7L253.2 328l-90.3 0-5.4 10.7c-5.9 11.9-20.3 16.7-32.2 10.7s-16.7-20.3-10.7-32.2l72-144c4.1-8.1 12.4-13.3 21.5-13.3s17.4 5.1 21.5 13.3zM208 237.7L186.8 280l42.3 0L208 237.7zM392 256a24 24 0 1 0 0 48 24 24 0 1 0 0-48zm24-43.9l0-28.1c0-13.3 10.7-24 24-24s24 10.7 24 24l0 96 0 48c0 13.3-10.7 24-24 24c-6.6 0-12.6-2.7-17-7c-9.4 4.5-19.9 7-31 7c-39.8 0-72-32.2-72-72s32.2-72 72-72c8.4 0 16.5 1.4 24 4.1z\"]\n};\nconst faAd = faRectangleAd;\nconst faCircleArrowRight = {\n prefix: 'fas',\n iconName: 'circle-arrow-right',\n icon: [512, 512, [\"arrow-circle-right\"], \"f0a9\", \"M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM297 385c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l71-71L120 280c-13.3 0-24-10.7-24-24s10.7-24 24-24l214.1 0-71-71c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L409 239c9.4 9.4 9.4 24.6 0 33.9L297 385z\"]\n};\nconst faArrowCircleRight = faCircleArrowRight;\nconst faFilterCircleXmark = {\n prefix: 'fas',\n iconName: 'filter-circle-xmark',\n icon: [576, 512, [], \"e17b\", \"M3.9 22.9C10.5 8.9 24.5 0 40 0L472 0c15.5 0 29.5 8.9 36.1 22.9s4.6 30.5-5.2 42.5L396.4 195.6C316.2 212.1 256 283 256 368c0 27.4 6.3 53.4 17.5 76.5c-1.6-.8-3.2-1.8-4.7-2.9l-64-48c-8.1-6-12.8-15.5-12.8-25.6l0-79.1L9 65.3C-.7 53.4-2.8 36.8 3.9 22.9zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm59.3 107.3c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L432 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L409.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L432 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L454.6 368l36.7-36.7z\"]\n};\nconst faLocust = {\n prefix: 'fas',\n iconName: 'locust',\n icon: [576, 512, [], \"e520\", \"M312 32c-13.3 0-24 10.7-24 24s10.7 24 24 24l16 0c98.7 0 180.6 71.4 197 165.4c-9-3.5-18.8-5.4-29-5.4l-64.2 0-41.8-97.5c-3.4-7.9-10.8-13.4-19.3-14.4s-17 2.7-22.1 9.6l-40.9 55.5-21.7-50.7c-3.3-7.8-10.5-13.2-18.9-14.3s-16.7 2.3-22 8.9l-240 304c-8.2 10.4-6.4 25.5 4 33.7s25.5 6.4 33.7-4l79.4-100.5 43 16.4-40.5 55c-7.9 10.7-5.6 25.7 5.1 33.6s25.7 5.6 33.6-5.1L215.1 400l74.5 0-29.3 42.3c-7.5 10.9-4.8 25.8 6.1 33.4s25.8 4.8 33.4-6.1L348 400l80.4 0 38.8 67.9c6.6 11.5 21.2 15.5 32.7 8.9s15.5-21.2 8.9-32.7L483.6 400l12.4 0c44.1 0 79.8-35.7 80-79.7c0-.1 0-.2 0-.3l0-40C576 143 465 32 328 32l-16 0zm50.5 168l17.1 40L333 240l29.5-40zm-87.7 38.1l-1.4 1.9-48.2 0 32.7-41.5 16.9 39.5zM88.8 240C57.4 240 32 265.4 32 296.8c0 15.5 6.3 30 16.9 40.4L126.7 240l-37.9 0zM496 288a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nconst faSort = {\n prefix: 'fas',\n iconName: 'sort',\n icon: [320, 512, [\"unsorted\"], \"f0dc\", \"M137.4 41.4c12.5-12.5 32.8-12.5 45.3 0l128 128c9.2 9.2 11.9 22.9 6.9 34.9s-16.6 19.8-29.6 19.8L32 224c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9l128-128zm0 429.3l-128-128c-9.2-9.2-11.9-22.9-6.9-34.9s16.6-19.8 29.6-19.8l256 0c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-128 128c-12.5 12.5-32.8 12.5-45.3 0z\"]\n};\nconst faUnsorted = faSort;\nconst faListOl = {\n prefix: 'fas',\n iconName: 'list-ol',\n icon: [512, 512, [\"list-1-2\", \"list-numeric\"], \"f0cb\", \"M24 56c0-13.3 10.7-24 24-24l32 0c13.3 0 24 10.7 24 24l0 120 16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-80 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l16 0 0-96-8 0C34.7 80 24 69.3 24 56zM86.7 341.2c-6.5-7.4-18.3-6.9-24 1.2L51.5 357.9c-7.7 10.8-22.7 13.3-33.5 5.6s-13.3-22.7-5.6-33.5l11.1-15.6c23.7-33.2 72.3-35.6 99.2-4.9c21.3 24.4 20.8 60.9-1.1 84.7L86.8 432l33.2 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-88 0c-9.5 0-18.2-5.6-22-14.4s-2.1-18.9 4.3-25.9l72-78c5.3-5.8 5.4-14.6 .3-20.5zM224 64l256 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 160l256 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 160l256 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faList12 = faListOl;\nconst faListNumeric = faListOl;\nconst faPersonDressBurst = {\n prefix: 'fas',\n iconName: 'person-dress-burst',\n icon: [640, 512, [], \"e544\", \"M528 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM390.2 384l17.8 0 0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96 16 0 0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96 17.8 0c10.9 0 18.6-10.7 15.2-21.1L546.7 248.1l33.9 56.3c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-53.6-89.2c-20.2-33.7-56.7-54.3-96-54.3l-11.6 0c-39.3 0-75.7 20.6-96 54.3l-53.6 89.2c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9l33.9-56.3L375 362.9c-3.5 10.4 4.3 21.1 15.2 21.1zM190.9 18.1C188.4 12 182.6 8 176 8s-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6L176 286.1l58.6 53.9c4.8 4.4 11.9 5.5 17.8 2.6s9.5-9 9-15.5l-5.6-79.4 50.5-7.8 24.4-40.5-55.2-38L315 92.2c3.3-5.7 2.7-12.8-1.4-17.9s-10.9-7.2-17.2-5.3L220.3 92.1l-29.4-74z\"]\n};\nconst faMoneyCheckDollar = {\n prefix: 'fas',\n iconName: 'money-check-dollar',\n icon: [576, 512, [\"money-check-alt\"], \"f53d\", \"M64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 64zM272 192l224 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-224 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zM256 304c0-8.8 7.2-16 16-16l224 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-224 0c-8.8 0-16-7.2-16-16zM164 152l0 13.9c7.5 1.2 14.6 2.9 21.1 4.7c10.7 2.8 17 13.8 14.2 24.5s-13.8 17-24.5 14.2c-11-2.9-21.6-5-31.2-5.2c-7.9-.1-16 1.8-21.5 5c-4.8 2.8-6.2 5.6-6.2 9.3c0 1.8 .1 3.5 5.3 6.7c6.3 3.8 15.5 6.7 28.3 10.5l.7 .2c11.2 3.4 25.6 7.7 37.1 15c12.9 8.1 24.3 21.3 24.6 41.6c.3 20.9-10.5 36.1-24.8 45c-7.2 4.5-15.2 7.3-23.2 9l0 13.8c0 11-9 20-20 20s-20-9-20-20l0-14.6c-10.3-2.2-20-5.5-28.2-8.4c0 0 0 0 0 0s0 0 0 0c-2.1-.7-4.1-1.4-6.1-2.1c-10.5-3.5-16.1-14.8-12.6-25.3s14.8-16.1 25.3-12.6c2.5 .8 4.9 1.7 7.2 2.4c13.6 4.6 24 8.1 35.1 8.5c8.6 .3 16.5-1.6 21.4-4.7c4.1-2.5 6-5.5 5.9-10.5c0-2.9-.8-5-5.9-8.2c-6.3-4-15.4-6.9-28-10.7l-1.7-.5c-10.9-3.3-24.6-7.4-35.6-14c-12.7-7.7-24.6-20.5-24.7-40.7c-.1-21.1 11.8-35.7 25.8-43.9c6.9-4.1 14.5-6.8 22.2-8.5l0-14c0-11 9-20 20-20s20 9 20 20z\"]\n};\nconst faMoneyCheckAlt = faMoneyCheckDollar;\nconst faVectorSquare = {\n prefix: 'fas',\n iconName: 'vector-square',\n icon: [448, 512, [], \"f5cb\", \"M368 80l32 0 0 32-32 0 0-32zM352 32c-17.7 0-32 14.3-32 32L128 64c0-17.7-14.3-32-32-32L32 32C14.3 32 0 46.3 0 64l0 64c0 17.7 14.3 32 32 32l0 192c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l192 0c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l0-192c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-64 0zM96 160c17.7 0 32-14.3 32-32l192 0c0 17.7 14.3 32 32 32l0 192c-17.7 0-32 14.3-32 32l-192 0c0-17.7-14.3-32-32-32l0-192zM48 400l32 0 0 32-32 0 0-32zm320 32l0-32 32 0 0 32-32 0zM48 112l0-32 32 0 0 32-32 0z\"]\n};\nconst faBreadSlice = {\n prefix: 'fas',\n iconName: 'bread-slice',\n icon: [512, 512, [], \"f7ec\", \"M256 32C192 32 0 64 0 192c0 35.3 28.7 64 64 64V432c0 26.5 21.5 48 48 48H400c26.5 0 48-21.5 48-48V256c35.3 0 64-28.7 64-64C512 64 320 32 256 32z\"]\n};\nconst faLanguage = {\n prefix: 'fas',\n iconName: 'language',\n icon: [640, 512, [], \"f1ab\", \"M0 128C0 92.7 28.7 64 64 64l192 0 48 0 16 0 256 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64l-256 0-16 0-48 0L64 448c-35.3 0-64-28.7-64-64L0 128zm320 0l0 256 256 0 0-256-256 0zM178.3 175.9c-3.2-7.2-10.4-11.9-18.3-11.9s-15.1 4.7-18.3 11.9l-64 144c-4.5 10.1 .1 21.9 10.2 26.4s21.9-.1 26.4-10.2l8.9-20.1 73.6 0 8.9 20.1c4.5 10.1 16.3 14.6 26.4 10.2s14.6-16.3 10.2-26.4l-64-144zM160 233.2L179 276l-38 0 19-42.8zM448 164c11 0 20 9 20 20l0 4 44 0 16 0c11 0 20 9 20 20s-9 20-20 20l-2 0-1.6 4.5c-8.9 24.4-22.4 46.6-39.6 65.4c.9 .6 1.8 1.1 2.7 1.6l18.9 11.3c9.5 5.7 12.5 18 6.9 27.4s-18 12.5-27.4 6.9l-18.9-11.3c-4.5-2.7-8.8-5.5-13.1-8.5c-10.6 7.5-21.9 14-34 19.4l-3.6 1.6c-10.1 4.5-21.9-.1-26.4-10.2s.1-21.9 10.2-26.4l3.6-1.6c6.4-2.9 12.6-6.1 18.5-9.8l-12.2-12.2c-7.8-7.8-7.8-20.5 0-28.3s20.5-7.8 28.3 0l14.6 14.6 .5 .5c12.4-13.1 22.5-28.3 29.8-45L448 228l-72 0c-11 0-20-9-20-20s9-20 20-20l52 0 0-4c0-11 9-20 20-20z\"]\n};\nconst faFaceKissWinkHeart = {\n prefix: 'fas',\n iconName: 'face-kiss-wink-heart',\n icon: [512, 512, [128536, \"kiss-wink-heart\"], \"f598\", \"M498 339.7c9.1-26.2 14-54.4 14-83.7C512 114.6 397.4 0 256 0S0 114.6 0 256S114.6 512 256 512c35.4 0 69.1-7.2 99.7-20.2c-4.8-5.5-8.5-12.2-10.4-19.7l-22.9-89.3c-10-39 11.8-80.9 51.8-92.1c37.2-10.4 73.8 10.1 87.5 44c12.7-1.6 25.1 .4 36.2 5zM296 332c0 6.9-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4c-2.7 1.5-5.7 3-8.7 4.3c3.1 1.3 6 2.7 8.7 4.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3s-3.1 13.2-7.3 18.3c-4.3 5.2-10.1 9.7-16.7 13.4C258.7 443.1 241.4 448 224 448c-3.6 0-6.8-2.5-7.7-6s.6-7.2 3.8-9c0 0 0 0 0 0s0 0 0 0s0 0 0 0c0 0 0 0 0 0l.2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1l-.6-.4-.3-.2-.2-.1c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.5-1.4-4.1-4.1-4.1-7s1.6-5.6 4.1-7c0 0 0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0c0 0 0 0 0 0l.2-.1c.2-.1 .5-.3 .9-.5c.8-.5 2-1.2 3.4-2.1c2.8-1.9 6.5-4.5 10.2-7.6c3.7-3.1 7.2-6.6 9.6-10.1c2.5-3.5 3.5-6.4 3.5-8.6s-1-5-3.5-8.6c-2.5-3.5-5.9-6.9-9.6-10.1c-3.7-3.1-7.4-5.7-10.2-7.6c-1.4-.9-2.6-1.6-3.4-2.1c-.4-.2-.7-.4-.9-.5l-.2-.1c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-3.2-1.8-4.7-5.5-3.8-9s4.1-6 7.7-6c17.4 0 34.7 4.9 47.9 12.3c6.6 3.7 12.5 8.2 16.7 13.4c4.3 5.1 7.3 11.4 7.3 18.3zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm194.8 57.6c-17.6-23.5-52.8-23.5-70.4 0c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2zM434 352.3c-6-23.2-28.8-37-51.1-30.8s-35.4 30.1-29.5 53.4l22.9 89.3c2.2 8.7 11.2 13.9 19.8 11.4l84.9-23.8c22.2-6.2 35.4-30.1 29.5-53.4s-28.8-37-51.1-30.8l-20.2 5.6-5.4-21z\"]\n};\nconst faKissWinkHeart = faFaceKissWinkHeart;\nconst faFilter = {\n prefix: 'fas',\n iconName: 'filter',\n icon: [512, 512, [], \"f0b0\", \"M3.9 54.9C10.5 40.9 24.5 32 40 32l432 0c15.5 0 29.5 8.9 36.1 22.9s4.6 30.5-5.2 42.5L320 320.9 320 448c0 12.1-6.8 23.2-17.7 28.6s-23.8 4.3-33.5-3l-64-48c-8.1-6-12.8-15.5-12.8-25.6l0-79.1L9 97.3C-.7 85.4-2.8 68.8 3.9 54.9z\"]\n};\nconst faQuestion = {\n prefix: 'fas',\n iconName: 'question',\n icon: [320, 512, [10067, 10068, 61736], \"3f\", \"M80 160c0-35.3 28.7-64 64-64l32 0c35.3 0 64 28.7 64 64l0 3.6c0 21.8-11.1 42.1-29.4 53.8l-42.2 27.1c-25.2 16.2-40.4 44.1-40.4 74l0 1.4c0 17.7 14.3 32 32 32s32-14.3 32-32l0-1.4c0-8.2 4.2-15.8 11-20.2l42.2-27.1c36.6-23.6 58.8-64.1 58.8-107.7l0-3.6c0-70.7-57.3-128-128-128l-32 0C73.3 32 16 89.3 16 160c0 17.7 14.3 32 32 32s32-14.3 32-32zm80 320a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n};\nconst faFileSignature = {\n prefix: 'fas',\n iconName: 'file-signature',\n icon: [576, 512, [], \"f573\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-19.3c-2.7 1.1-5.4 2-8.2 2.7l-60.1 15c-3 .7-6 1.2-9 1.4c-.9 .1-1.8 .2-2.7 .2l-64 0c-6.1 0-11.6-3.4-14.3-8.8l-8.8-17.7c-1.7-3.4-5.1-5.5-8.8-5.5s-7.2 2.1-8.8 5.5l-8.8 17.7c-2.9 5.9-9.2 9.4-15.7 8.8s-12.1-5.1-13.9-11.3L144 381l-9.8 32.8c-6.1 20.3-24.8 34.2-46 34.2L80 448c-8.8 0-16-7.2-16-16s7.2-16 16-16l8.2 0c7.1 0 13.3-4.6 15.3-11.4l14.9-49.5c3.4-11.3 13.8-19.1 25.6-19.1s22.2 7.8 25.6 19.1l11.6 38.6c7.4-6.2 16.8-9.7 26.8-9.7c15.9 0 30.4 9 37.5 23.2l4.4 8.8 8.9 0c-3.1-8.8-3.7-18.4-1.4-27.8l15-60.1c2.8-11.3 8.6-21.5 16.8-29.7L384 203.6l0-43.6-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM549.8 139.7c-15.6-15.6-40.9-15.6-56.6 0l-29.4 29.4 71 71 29.4-29.4c15.6-15.6 15.6-40.9 0-56.6l-14.4-14.4zM311.9 321c-4.1 4.1-7 9.2-8.4 14.9l-15 60.1c-1.4 5.5 .2 11.2 4.2 15.2s9.7 5.6 15.2 4.2l60.1-15c5.6-1.4 10.8-4.3 14.9-8.4L512.1 262.7l-71-71L311.9 321z\"]\n};\nconst faUpDownLeftRight = {\n prefix: 'fas',\n iconName: 'up-down-left-right',\n icon: [512, 512, [\"arrows-alt\"], \"f0b2\", \"M278.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8l32 0 0 96-96 0 0-32c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9l-64 64c-12.5 12.5-12.5 32.8 0 45.3l64 64c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6l0-32 96 0 0 96-32 0c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8l-32 0 0-96 96 0 0 32c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-9.2-9.2-22.9-11.9-34.9-6.9s-19.8 16.6-19.8 29.6l0 32-96 0 0-96 32 0c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64z\"]\n};\nconst faArrowsAlt = faUpDownLeftRight;\nconst faHouseChimneyUser = {\n prefix: 'fas',\n iconName: 'house-chimney-user',\n icon: [576, 512, [], \"e065\", \"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L512 185l0-121c0-17.7-14.3-32-32-32l-32 0c-17.7 0-32 14.3-32 32l0 36.7L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1l32 0 0 160.4c0 35.3 28.7 64 64 64l320.4 0c35.5 0 64.2-28.8 64-64.3l-.7-160.2 32 0zM288 160a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM176 400c0-44.2 35.8-80 80-80l64 0c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16l-192 0c-8.8 0-16-7.2-16-16z\"]\n};\nconst faHandHoldingHeart = {\n prefix: 'fas',\n iconName: 'hand-holding-heart',\n icon: [576, 512, [], \"f4be\", \"M163.9 136.9c-29.4-29.8-29.4-78.2 0-108s77-29.8 106.4 0l17.7 18 17.7-18c29.4-29.8 77-29.8 106.4 0s29.4 78.2 0 108L310.5 240.1c-6.2 6.3-14.3 9.4-22.5 9.4s-16.3-3.1-22.5-9.4L163.9 136.9zM568.2 336.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 485.5c-23.4 17.2-51.6 26.5-80.7 26.5L192 512 32 512c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l36.8 0 44.9-36c22.7-18.2 50.9-28 80-28l78.3 0 16 0 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0-16 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l120.6 0 119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 384c0 0 0 0 0 0l-.9 0c.3 0 .6 0 .9 0z\"]\n};\nconst faPuzzlePiece = {\n prefix: 'fas',\n iconName: 'puzzle-piece',\n icon: [512, 512, [129513], \"f12e\", \"M192 104.8c0-9.2-5.8-17.3-13.2-22.8C167.2 73.3 160 61.3 160 48c0-26.5 28.7-48 64-48s64 21.5 64 48c0 13.3-7.2 25.3-18.8 34c-7.4 5.5-13.2 13.6-13.2 22.8c0 12.8 10.4 23.2 23.2 23.2l56.8 0c26.5 0 48 21.5 48 48l0 56.8c0 12.8 10.4 23.2 23.2 23.2c9.2 0 17.3-5.8 22.8-13.2c8.7-11.6 20.7-18.8 34-18.8c26.5 0 48 28.7 48 64s-21.5 64-48 64c-13.3 0-25.3-7.2-34-18.8c-5.5-7.4-13.6-13.2-22.8-13.2c-12.8 0-23.2 10.4-23.2 23.2L384 464c0 26.5-21.5 48-48 48l-56.8 0c-12.8 0-23.2-10.4-23.2-23.2c0-9.2 5.8-17.3 13.2-22.8c11.6-8.7 18.8-20.7 18.8-34c0-26.5-28.7-48-64-48s-64 21.5-64 48c0 13.3 7.2 25.3 18.8 34c7.4 5.5 13.2 13.6 13.2 22.8c0 12.8-10.4 23.2-23.2 23.2L48 512c-26.5 0-48-21.5-48-48L0 343.2C0 330.4 10.4 320 23.2 320c9.2 0 17.3 5.8 22.8 13.2C54.7 344.8 66.7 352 80 352c26.5 0 48-28.7 48-64s-21.5-64-48-64c-13.3 0-25.3 7.2-34 18.8C40.5 250.2 32.4 256 23.2 256C10.4 256 0 245.6 0 232.8L0 176c0-26.5 21.5-48 48-48l120.8 0c12.8 0 23.2-10.4 23.2-23.2z\"]\n};\nconst faMoneyCheck = {\n prefix: 'fas',\n iconName: 'money-check',\n icon: [576, 512, [], \"f53c\", \"M64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 64zm48 160l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zM96 336c0-8.8 7.2-16 16-16l352 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-352 0c-8.8 0-16-7.2-16-16zM376 160l80 0c13.3 0 24 10.7 24 24l0 48c0 13.3-10.7 24-24 24l-80 0c-13.3 0-24-10.7-24-24l0-48c0-13.3 10.7-24 24-24z\"]\n};\nconst faStarHalfStroke = {\n prefix: 'fas',\n iconName: 'star-half-stroke',\n icon: [576, 512, [\"star-half-alt\"], \"f5c0\", \"M288 376.4l.1-.1 26.4 14.1 85.2 45.5-16.5-97.6-4.8-28.7 20.7-20.5 70.1-69.3-96.1-14.2-29.3-4.3-12.9-26.6L288.1 86.9l-.1 .3 0 289.2zm175.1 98.3c2 12-3 24.2-12.9 31.3s-23 8-33.8 2.3L288.1 439.8 159.8 508.3C149 514 135.9 513.1 126 506s-14.9-19.3-12.9-31.3L137.8 329 33.6 225.9c-8.6-8.5-11.7-21.2-7.9-32.7s13.7-19.9 25.7-21.7L195 150.3 259.4 18c5.4-11 16.5-18 28.8-18s23.4 7 28.8 18l64.3 132.3 143.6 21.2c12 1.8 22 10.2 25.7 21.7s.7 24.2-7.9 32.7L438.5 329l24.6 145.7z\"]\n};\nconst faStarHalfAlt = faStarHalfStroke;\nconst faCode = {\n prefix: 'fas',\n iconName: 'code',\n icon: [640, 512, [], \"f121\", \"M392.8 1.2c-17-4.9-34.7 5-39.6 22l-128 448c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l128-448c4.9-17-5-34.7-22-39.6zm80.6 120.1c-12.5 12.5-12.5 32.8 0 45.3L562.7 256l-89.4 89.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-112-112c-12.5-12.5-32.8-12.5-45.3 0zm-306.7 0c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l112 112c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256l89.4-89.4c12.5-12.5 12.5-32.8 0-45.3z\"]\n};\nconst faWhiskeyGlass = {\n prefix: 'fas',\n iconName: 'whiskey-glass',\n icon: [512, 512, [129347, \"glass-whiskey\"], \"f7a0\", \"M32 32c-9.3 0-18.1 4-24.2 11.1S-1 59.4 .3 68.6l50 342.9c5.7 39.3 39.4 68.5 79.2 68.5l253 0c39.7 0 73.4-29.1 79.2-68.5l50-342.9c1.3-9.2-1.4-18.5-7.5-25.5S489.3 32 480 32L32 32zM87.7 224L69 96l374 0L424.3 224 87.7 224z\"]\n};\nconst faGlassWhiskey = faWhiskeyGlass;\nconst faBuildingCircleExclamation = {\n prefix: 'fas',\n iconName: 'building-circle-exclamation',\n icon: [640, 512, [], \"e4d3\", \"M48 0C21.5 0 0 21.5 0 48L0 464c0 26.5 21.5 48 48 48l96 0 0-80c0-26.5 21.5-48 48-48s48 21.5 48 48l0 80 96 0c15.1 0 28.5-6.9 37.3-17.8C340.4 462.2 320 417.5 320 368c0-54.7 24.9-103.5 64-135.8L384 48c0-26.5-21.5-48-48-48L48 0zM64 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm112-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM80 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM272 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16z\"]\n};\nconst faMagnifyingGlassChart = {\n prefix: 'fas',\n iconName: 'magnifying-glass-chart',\n icon: [512, 512, [], \"e522\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zm-312 8l0 64c0 13.3 10.7 24 24 24s24-10.7 24-24l0-64c0-13.3-10.7-24-24-24s-24 10.7-24 24zm80-96l0 160c0 13.3 10.7 24 24 24s24-10.7 24-24l0-160c0-13.3-10.7-24-24-24s-24 10.7-24 24zm80 64l0 96c0 13.3 10.7 24 24 24s24-10.7 24-24l0-96c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"]\n};\nconst faArrowUpRightFromSquare = {\n prefix: 'fas',\n iconName: 'arrow-up-right-from-square',\n icon: [512, 512, [\"external-link\"], \"f08e\", \"M320 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l82.7 0L201.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L448 109.3l0 82.7c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160c0-17.7-14.3-32-32-32L320 0zM80 32C35.8 32 0 67.8 0 112L0 432c0 44.2 35.8 80 80 80l320 0c44.2 0 80-35.8 80-80l0-112c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 112c0 8.8-7.2 16-16 16L80 448c-8.8 0-16-7.2-16-16l0-320c0-8.8 7.2-16 16-16l112 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L80 32z\"]\n};\nconst faExternalLink = faArrowUpRightFromSquare;\nconst faCubesStacked = {\n prefix: 'fas',\n iconName: 'cubes-stacked',\n icon: [448, 512, [], \"e4e6\", \"M192 64l0 64c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32 14.3-32 32zM82.7 207c-15.3 8.8-20.5 28.4-11.7 43.7l32 55.4c8.8 15.3 28.4 20.5 43.7 11.7l55.4-32c15.3-8.8 20.5-28.4 11.7-43.7l-32-55.4c-8.8-15.3-28.4-20.5-43.7-11.7L82.7 207zM288 192c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-64 0zm64 160c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-64 0zM160 384l0 64c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32 14.3-32 32zM32 352c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-64 0z\"]\n};\nconst faWonSign = {\n prefix: 'fas',\n iconName: 'won-sign',\n icon: [512, 512, [8361, \"krw\", \"won\"], \"f159\", \"M62.4 53.9C56.8 37.1 38.6 28.1 21.9 33.6S-3.9 57.4 1.6 74.1L51.6 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l40.9 0 56.7 170.1c4.5 13.5 17.4 22.4 31.6 21.9s26.4-10.4 29.8-24.2L233 288l46 0L321 455.8c3.4 13.8 15.6 23.7 29.8 24.2s27.1-8.4 31.6-21.9L439.1 288l40.9 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-19.6 0 50-149.9c5.6-16.8-3.5-34.9-20.2-40.5s-34.9 3.5-40.5 20.2L392.9 224l-64 0L287 56.2C283.5 42 270.7 32 256 32s-27.5 10-31 24.2L183 224l-64 0L62.4 53.9zm78 234.1l26.6 0-11.4 45.6L140.4 288zM249 224l7-28.1 7 28.1-14 0zm96 64l26.6 0-15.2 45.6L345 288z\"]\n};\nconst faKrw = faWonSign;\nconst faWon = faWonSign;\nconst faVirusCovid = {\n prefix: 'fas',\n iconName: 'virus-covid',\n icon: [512, 512, [], \"e4a8\", \"M192 24c0-13.3 10.7-24 24-24l80 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0 0 33.6c30.7 4.2 58.8 16.3 82.3 34.1L386.1 92 374.8 80.6c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l56.6 56.6c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L420 125.9l-23.8 23.8c17.9 23.5 29.9 51.7 34.1 82.3l33.6 0 0-16c0-13.3 10.7-24 24-24s24 10.7 24 24l0 80c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-16-33.6 0c-4.2 30.7-16.3 58.8-34.1 82.3L420 386.1l11.3-11.3c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-56.6 56.6c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L386.1 420l-23.8-23.8c-23.5 17.9-51.7 29.9-82.3 34.1l0 33.6 16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-80 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l16 0 0-33.6c-30.7-4.2-58.8-16.3-82.3-34.1L125.9 420l11.3 11.3c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L46.7 408.7c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L92 386.1l23.8-23.8C97.9 338.8 85.8 310.7 81.6 280L48 280l0 16c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-80c0-13.3 10.7-24 24-24s24 10.7 24 24l0 16 33.6 0c4.2-30.7 16.3-58.8 34.1-82.3L92 125.9 80.6 137.2c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l56.6-56.6c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L125.9 92l23.8 23.8c23.5-17.9 51.7-29.9 82.3-34.1L232 48l-16 0c-13.3 0-24-10.7-24-24zm48 200a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm64 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nconst faAustralSign = {\n prefix: 'fas',\n iconName: 'austral-sign',\n icon: [448, 512, [], \"e0a9\", \"M253.5 51.7C248.6 39.8 236.9 32 224 32s-24.6 7.8-29.5 19.7L122.7 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0L82.7 320 32 320c-17.7 0-32 14.3-32 32s14.3 32 32 32l24 0L34.5 435.7c-6.8 16.3 .9 35 17.2 41.8s35-.9 41.8-17.2L125.3 384l197.3 0 31.8 76.3c6.8 16.3 25.5 24 41.8 17.2s24-25.5 17.2-41.8L392 384l24 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-50.7 0L352 288l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-90.7 0L253.5 51.7zM256 224l-64 0 32-76.8L256 224zm-90.7 64l117.3 0L296 320l-144 0 13.3-32z\"]\n};\nconst faF = {\n prefix: 'fas',\n iconName: 'f',\n icon: [320, 512, [102], \"46\", \"M64 32C28.7 32 0 60.7 0 96L0 256 0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160 160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L64 224 64 96l224 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L64 32z\"]\n};\nconst faLeaf = {\n prefix: 'fas',\n iconName: 'leaf',\n icon: [512, 512, [], \"f06c\", \"M272 96c-78.6 0-145.1 51.5-167.7 122.5c33.6-17 71.5-26.5 111.7-26.5l88 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-16 0-72 0s0 0 0 0c-16.6 0-32.7 1.9-48.3 5.4c-25.9 5.9-49.9 16.4-71.4 30.7c0 0 0 0 0 0C38.3 298.8 0 364.9 0 440l0 16c0 13.3 10.7 24 24 24s24-10.7 24-24l0-16c0-48.7 20.7-92.5 53.8-123.2C121.6 392.3 190.3 448 272 448l1 0c132.1-.7 239-130.9 239-291.4c0-42.6-7.5-83.1-21.1-119.6c-2.6-6.9-12.7-6.6-16.2-.1C455.9 72.1 418.7 96 376 96L272 96z\"]\n};\nconst faRoad = {\n prefix: 'fas',\n iconName: 'road',\n icon: [576, 512, [128739], \"f018\", \"M256 32l-74.8 0c-27.1 0-51.3 17.1-60.3 42.6L3.1 407.2C1.1 413 0 419.2 0 425.4C0 455.5 24.5 480 54.6 480L256 480l0-64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 64 201.4 0c30.2 0 54.6-24.5 54.6-54.6c0-6.2-1.1-12.4-3.1-18.2L455.1 74.6C446 49.1 421.9 32 394.8 32L320 32l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64zm64 192l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nconst faTaxi = {\n prefix: 'fas',\n iconName: 'taxi',\n icon: [512, 512, [128662, \"cab\"], \"f1ba\", \"M192 0c-17.7 0-32 14.3-32 32l0 32 0 .2c-38.6 2.2-72.3 27.3-85.2 64.1L39.6 228.8C16.4 238.4 0 261.3 0 288L0 432l0 48c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-48 320 0 0 48c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-48 0-144c0-26.7-16.4-49.6-39.6-59.2L437.2 128.3c-12.9-36.8-46.6-62-85.2-64.1l0-.2 0-32c0-17.7-14.3-32-32-32L192 0zM165.4 128l181.2 0c13.6 0 25.7 8.6 30.2 21.4L402.9 224l-293.8 0 26.1-74.6c4.5-12.8 16.6-21.4 30.2-21.4zM96 288a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm288 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nconst faCab = faTaxi;\nconst faPersonCirclePlus = {\n prefix: 'fas',\n iconName: 'person-circle-plus',\n icon: [576, 512, [], \"e541\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-223.1L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6l29.7 0c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9 232 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128-16 0zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm16 80c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 48-48 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l48 0 0 48c0 8.8 7.2 16 16 16s16-7.2 16-16l0-48 48 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-48 0 0-48z\"]\n};\nconst faChartPie = {\n prefix: 'fas',\n iconName: 'chart-pie',\n icon: [576, 512, [\"pie-chart\"], \"f200\", \"M304 240l0-223.4c0-9 7-16.6 16-16.6C443.7 0 544 100.3 544 224c0 9-7.6 16-16.6 16L304 240zM32 272C32 150.7 122.1 50.3 239 34.3c9.2-1.3 17 6.1 17 15.4L256 288 412.5 444.5c6.7 6.7 6.2 17.7-1.5 23.1C371.8 495.6 323.8 512 272 512C139.5 512 32 404.6 32 272zm526.4 16c9.3 0 16.6 7.8 15.4 17c-7.7 55.9-34.6 105.6-73.9 142.3c-6 5.6-15.4 5.2-21.2-.7L320 288l238.4 0z\"]\n};\nconst faPieChart = faChartPie;\nconst faBoltLightning = {\n prefix: 'fas',\n iconName: 'bolt-lightning',\n icon: [384, 512, [], \"e0b7\", \"M0 256L28.5 28c2-16 15.6-28 31.8-28H228.9c15 0 27.1 12.1 27.1 27.1c0 3.2-.6 6.5-1.7 9.5L208 160H347.3c20.2 0 36.7 16.4 36.7 36.7c0 7.4-2.2 14.6-6.4 20.7l-192.2 281c-5.9 8.6-15.6 13.7-25.9 13.7h-2.9c-15.7 0-28.5-12.8-28.5-28.5c0-2.3 .3-4.6 .9-6.9L176 288H32c-17.7 0-32-14.3-32-32z\"]\n};\nconst faSackXmark = {\n prefix: 'fas',\n iconName: 'sack-xmark',\n icon: [512, 512, [], \"e56a\", \"M192 96l128 0 47.4-71.1C374.5 14.2 366.9 0 354.1 0L157.9 0c-12.8 0-20.4 14.2-13.3 24.9L192 96zm128 32l-128 0c-3.8 2.5-8.1 5.3-13 8.4c0 0 0 0 0 0s0 0 0 0C122.3 172.7 0 250.9 0 416c0 53 43 96 96 96l320 0c53 0 96-43 96-96c0-165.1-122.3-243.3-179-279.6c-4.8-3.1-9.2-5.9-13-8.4zM289.9 336l47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47z\"]\n};\nconst faFileExcel = {\n prefix: 'fas',\n iconName: 'file-excel',\n icon: [384, 512, [], \"f1c3\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM155.7 250.2L192 302.1l36.3-51.9c7.6-10.9 22.6-13.5 33.4-5.9s13.5 22.6 5.9 33.4L221.3 344l46.4 66.2c7.6 10.9 5 25.8-5.9 33.4s-25.8 5-33.4-5.9L192 385.8l-36.3 51.9c-7.6 10.9-22.6 13.5-33.4 5.9s-13.5-22.6-5.9-33.4L162.7 344l-46.4-66.2c-7.6-10.9-5-25.8 5.9-33.4s25.8-5 33.4 5.9z\"]\n};\nconst faFileContract = {\n prefix: 'fas',\n iconName: 'file-contract',\n icon: [384, 512, [], \"f56c\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM80 64l64 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L80 96c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64l64 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-64 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm54.2 253.8c-6.1 20.3-24.8 34.2-46 34.2L80 416c-8.8 0-16-7.2-16-16s7.2-16 16-16l8.2 0c7.1 0 13.3-4.6 15.3-11.4l14.9-49.5c3.4-11.3 13.8-19.1 25.6-19.1s22.2 7.7 25.6 19.1l11.6 38.6c7.4-6.2 16.8-9.7 26.8-9.7c15.9 0 30.4 9 37.5 23.2l4.4 8.8 54.1 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-64 0c-6.1 0-11.6-3.4-14.3-8.8l-8.8-17.7c-1.7-3.4-5.1-5.5-8.8-5.5s-7.2 2.1-8.8 5.5l-8.8 17.7c-2.9 5.9-9.2 9.4-15.7 8.8s-12.1-5.1-13.9-11.3L144 349l-9.8 32.8z\"]\n};\nconst faFishFins = {\n prefix: 'fas',\n iconName: 'fish-fins',\n icon: [576, 512, [], \"e4f2\", \"M275.2 38.4c-10.6-8-25-8.5-36.3-1.5S222 57.3 224.6 70.3l9.7 48.6c-19.4 9-36.9 19.9-52.4 31.5c-15.3 11.5-29 23.9-40.7 36.3L48.1 132.4c-12.5-7.3-28.4-5.3-38.6 4.9S-3 163.3 4.2 175.9L50 256 4.2 336.1c-7.2 12.6-5 28.4 5.3 38.6s26.1 12.2 38.6 4.9l93.1-54.3c11.8 12.3 25.4 24.8 40.7 36.3c15.5 11.6 33 22.5 52.4 31.5l-9.7 48.6c-2.6 13 3.1 26.3 14.3 33.3s25.6 6.5 36.3-1.5l77.6-58.2c54.9-4 101.5-27 137.2-53.8c39.2-29.4 67.2-64.7 81.6-89.5c5.8-9.9 5.8-22.2 0-32.1c-14.4-24.8-42.5-60.1-81.6-89.5c-35.8-26.8-82.3-49.8-137.2-53.8L275.2 38.4zM384 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nconst faBuildingFlag = {\n prefix: 'fas',\n iconName: 'building-flag',\n icon: [640, 512, [], \"e4d5\", \"M48 0C21.5 0 0 21.5 0 48L0 464c0 26.5 21.5 48 48 48l96 0 0-80c0-26.5 21.5-48 48-48s48 21.5 48 48l0 80 96 0c26.5 0 48-21.5 48-48l0-416c0-26.5-21.5-48-48-48L48 0zM64 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm112-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM80 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM272 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM448 0c-17.7 0-32 14.3-32 32l0 480 64 0 0-320 144 0c8.8 0 16-7.2 16-16l0-128c0-8.8-7.2-16-16-16L480 32c0-17.7-14.3-32-32-32z\"]\n};\nconst faFaceGrinBeam = {\n prefix: 'fas',\n iconName: 'face-grin-beam',\n icon: [512, 512, [128516, \"grin-beam\"], \"f582\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zm-170.5-84s0 0 0 0c0 0 0 0 0 0l-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8c0 0 0 0 0 0s0 0 0 0zm160 0c0 0 0 0 0 0l-.2-.2c-.2-.2-.4-.5-.7-.9c-.6-.8-1.6-2-2.8-3.4c-2.5-2.8-6-6.6-10.2-10.3c-8.8-7.8-18.8-14-27.7-14s-18.9 6.2-27.7 14c-4.2 3.7-7.7 7.5-10.2 10.3c-1.2 1.4-2.2 2.6-2.8 3.4c-.3 .4-.6 .7-.7 .9l-.2 .2c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0c-2.1 2.8-5.7 3.9-8.9 2.8s-5.5-4.1-5.5-7.6c0-17.9 6.7-35.6 16.6-48.8c9.8-13 23.9-23.2 39.4-23.2s29.6 10.2 39.4 23.2c9.9 13.2 16.6 30.9 16.6 48.8c0 3.4-2.2 6.5-5.5 7.6s-6.9 0-8.9-2.8c0 0 0 0 0 0s0 0 0 0s0 0 0 0z\"]\n};\nconst faGrinBeam = faFaceGrinBeam;\nconst faObjectUngroup = {\n prefix: 'fas',\n iconName: 'object-ungroup',\n icon: [640, 512, [], \"f248\", \"M32 119.4C12.9 108.4 0 87.7 0 64C0 28.7 28.7 0 64 0c23.7 0 44.4 12.9 55.4 32l209.1 0C339.6 12.9 360.3 0 384 0c35.3 0 64 28.7 64 64c0 23.7-12.9 44.4-32 55.4l0 113.1c19.1 11.1 32 31.7 32 55.4c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32l-209.1 0c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4l0-113.1zM119.4 96c-5.6 9.7-13.7 17.8-23.4 23.4l0 113.1c9.7 5.6 17.8 13.7 23.4 23.4l209.1 0c5.6-9.7 13.7-17.8 23.4-23.4l0-113.1c-9.7-5.6-17.8-13.7-23.4-23.4L119.4 96zm192 384c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4l0-40.6 64 0 0 40.6c9.7 5.6 17.8 13.7 23.4 23.4l209.1 0c5.6-9.7 13.7-17.8 23.4-23.4l0-113.1c-9.7-5.6-17.8-13.7-23.4-23.4l-46 0c-5.4-15.4-14.6-28.9-26.5-39.6l0-24.4 72.6 0c11.1-19.1 31.7-32 55.4-32c35.3 0 64 28.7 64 64c0 23.7-12.9 44.4-32 55.4l0 113.1c19.1 11.1 32 31.7 32 55.4c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32l-209.1 0z\"]\n};\nconst faPoop = {\n prefix: 'fas',\n iconName: 'poop',\n icon: [512, 512, [], \"f619\", \"M254.4 6.6c3.5-4.3 9-6.5 14.5-5.7C315.8 7.2 352 47.4 352 96c0 11.2-1.9 22-5.5 32l5.5 0c35.3 0 64 28.7 64 64c0 19.1-8.4 36.3-21.7 48l13.7 0c39.8 0 72 32.2 72 72c0 23.2-11 43.8-28 57c34.1 5.7 60 35.3 60 71c0 39.8-32.2 72-72 72L72 512c-39.8 0-72-32.2-72-72c0-35.7 25.9-65.3 60-71c-17-13.2-28-33.8-28-57c0-39.8 32.2-72 72-72l13.7 0C104.4 228.3 96 211.1 96 192c0-35.3 28.7-64 64-64l16.2 0c44.1-.1 79.8-35.9 79.8-80c0-9.2-1.5-17.9-4.3-26.1c-1.8-5.2-.8-11.1 2.8-15.4z\"]\n};\nconst faLocationPin = {\n prefix: 'fas',\n iconName: 'location-pin',\n icon: [384, 512, [\"map-marker\"], \"f041\", \"M384 192c0 87.4-117 243-168.3 307.2c-12.3 15.3-35.1 15.3-47.4 0C117 435 0 279.4 0 192C0 86 86 0 192 0S384 86 384 192z\"]\n};\nconst faMapMarker = faLocationPin;\nconst faKaaba = {\n prefix: 'fas',\n iconName: 'kaaba',\n icon: [576, 512, [128331], \"f66b\", \"M60 120l228 71.2L516 120 288 48.8 60 120zM278.5 1.5c6.2-1.9 12.9-1.9 19.1 0l256 80C566.9 85.6 576 98 576 112l0 16s0 0 0 0l0 21.2L292.8 237.7c-3.1 1-6.4 1-9.5 0L0 149.2 0 128l0-16C0 98 9.1 85.6 22.5 81.5l256-80zm23.9 266.8L576 182.8l0 46.5-52.8 16.5c-8.4 2.6-13.1 11.6-10.5 20s11.6 13.1 20 10.5L576 262.8 576 400c0 14-9.1 26.4-22.5 30.5l-256 80c-6.2 1.9-12.9 1.9-19.1 0l-256-80C9.1 426.4 0 414 0 400L0 262.8l43.2 13.5c8.4 2.6 17.4-2.1 20-10.5s-2.1-17.4-10.5-20L0 229.2l0-46.5 273.7 85.5c9.3 2.9 19.3 2.9 28.6 0zm-185.5-2.6c-8.4-2.6-17.4 2.1-20 10.5s2.1 17.4 10.5 20l64 20c8.4 2.6 17.4-2.1 20-10.5s-2.1-17.4-10.5-20l-64-20zm352 30.5c8.4-2.6 13.1-11.6 10.5-20s-11.6-13.1-20-10.5l-64 20c-8.4 2.6-13.1 11.6-10.5 20s11.6 13.1 20 10.5l64-20zm-224 9.5c-8.4-2.6-17.4 2.1-20 10.5s2.1 17.4 10.5 20l38.5 12c9.3 2.9 19.3 2.9 28.6 0l38.5-12c8.4-2.6 13.1-11.6 10.5-20s-11.6-13.1-20-10.5l-38.5 12c-3.1 1-6.4 1-9.5 0l-38.5-12z\"]\n};\nconst faToiletPaper = {\n prefix: 'fas',\n iconName: 'toilet-paper',\n icon: [640, 512, [129531], \"f71e\", \"M444.2 0C397.2 49.6 384 126.5 384 192c0 158.8-27.3 247-42.7 283.9c-10 24-33.2 36.1-55.4 36.1L48 512c-11.5 0-22.2-6.2-27.8-16.2s-5.6-22.3 .4-32.2c9.8-17.7 15.4-38.2 20.5-57.7C52.3 362.8 64 293.5 64 192C64 86 107 0 160 0L444.2 0zM512 384c-53 0-96-86-96-192S459 0 512 0s96 86 96 192s-43 192-96 192zm0-128c17.7 0 32-28.7 32-64s-14.3-64-32-64s-32 28.7-32 64s14.3 64 32 64zM144 208a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm64 0a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm80-16a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nconst faHelmetSafety = {\n prefix: 'fas',\n iconName: 'helmet-safety',\n icon: [576, 512, [\"hard-hat\", \"hat-hard\"], \"f807\", \"M256 32c-17.7 0-32 14.3-32 32l0 2.3 0 99.6c0 5.6-4.5 10.1-10.1 10.1c-3.6 0-7-1.9-8.8-5.1L157.1 87C83 123.5 32 199.8 32 288l0 64 512 0 0-66.4c-.9-87.2-51.7-162.4-125.1-198.6l-48 83.9c-1.8 3.2-5.2 5.1-8.8 5.1c-5.6 0-10.1-4.5-10.1-10.1l0-99.6 0-2.3c0-17.7-14.3-32-32-32l-64 0zM16.6 384C7.4 384 0 391.4 0 400.6c0 4.7 2 9.2 5.8 11.9C27.5 428.4 111.8 480 288 480s260.5-51.6 282.2-67.5c3.8-2.8 5.8-7.2 5.8-11.9c0-9.2-7.4-16.6-16.6-16.6L16.6 384z\"]\n};\nconst faHardHat = faHelmetSafety;\nconst faHatHard = faHelmetSafety;\nconst faEject = {\n prefix: 'fas',\n iconName: 'eject',\n icon: [448, 512, [9167], \"f052\", \"M224 32c13.5 0 26.3 5.6 35.4 15.6l176 192c12.9 14 16.2 34.3 8.6 51.8S419 320 400 320L48 320c-19 0-36.3-11.2-43.9-28.7s-4.3-37.7 8.6-51.8l176-192C197.7 37.6 210.5 32 224 32zM0 432c0-26.5 21.5-48 48-48l352 0c26.5 0 48 21.5 48 48s-21.5 48-48 48L48 480c-26.5 0-48-21.5-48-48z\"]\n};\nconst faCircleRight = {\n prefix: 'fas',\n iconName: 'circle-right',\n icon: [512, 512, [61838, \"arrow-alt-circle-right\"], \"f35a\", \"M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zm395.3 11.3l-112 112c-4.6 4.6-11.5 5.9-17.4 3.5s-9.9-8.3-9.9-14.8l0-64-96 0c-17.7 0-32-14.3-32-32l0-32c0-17.7 14.3-32 32-32l96 0 0-64c0-6.5 3.9-12.3 9.9-14.8s12.9-1.1 17.4 3.5l112 112c6.2 6.2 6.2 16.4 0 22.6z\"]\n};\nconst faArrowAltCircleRight = faCircleRight;\nconst faPlaneCircleCheck = {\n prefix: 'fas',\n iconName: 'plane-circle-check',\n icon: [640, 512, [], \"e555\", \"M256 0c-35 0-64 59.5-64 93.7l0 84.6L8.1 283.4c-5 2.8-8.1 8.2-8.1 13.9l0 65.5c0 10.6 10.2 18.3 20.4 15.4l171.6-49 0 70.9-57.6 43.2c-4 3-6.4 7.8-6.4 12.8l0 42c0 7.8 6.3 14 14 14c1.3 0 2.6-.2 3.9-.5L256 480l110.1 31.5c1.3 .4 2.6 .5 3.9 .5c6 0 11.1-3.7 13.1-9C344.5 470.7 320 422.2 320 368c0-60.6 30.6-114 77.1-145.6L320 178.3l0-84.6C320 59.5 292 0 256 0zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nconst faFaceRollingEyes = {\n prefix: 'fas',\n iconName: 'face-rolling-eyes',\n icon: [512, 512, [128580, \"meh-rolling-eyes\"], \"f5a5\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM192 368l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm32-144c0 35.3-28.7 64-64 64s-64-28.7-64-64c0-26 15.5-48.4 37.8-58.4c-3.7 5.2-5.8 11.6-5.8 18.4c0 17.7 14.3 32 32 32s32-14.3 32-32c0-6.9-2.2-13.2-5.8-18.4C208.5 175.6 224 198 224 224zm128 64c-35.3 0-64-28.7-64-64c0-26 15.5-48.4 37.8-58.4c-3.7 5.2-5.8 11.6-5.8 18.4c0 17.7 14.3 32 32 32s32-14.3 32-32c0-6.9-2.2-13.2-5.8-18.4C400.5 175.6 416 198 416 224c0 35.3-28.7 64-64 64z\"]\n};\nconst faMehRollingEyes = faFaceRollingEyes;\nconst faObjectGroup = {\n prefix: 'fas',\n iconName: 'object-group',\n icon: [576, 512, [], \"f247\", \"M32 119.4C12.9 108.4 0 87.7 0 64C0 28.7 28.7 0 64 0c23.7 0 44.4 12.9 55.4 32l337.1 0C467.6 12.9 488.3 0 512 0c35.3 0 64 28.7 64 64c0 23.7-12.9 44.4-32 55.4l0 273.1c19.1 11.1 32 31.7 32 55.4c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32l-337.1 0c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4l0-273.1zM456.6 96L119.4 96c-5.6 9.7-13.7 17.8-23.4 23.4l0 273.1c9.7 5.6 17.8 13.7 23.4 23.4l337.1 0c5.6-9.7 13.7-17.8 23.4-23.4l0-273.1c-9.7-5.6-17.8-13.7-23.4-23.4zM128 160c0-17.7 14.3-32 32-32l128 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32l-128 0c-17.7 0-32-14.3-32-32l0-96zM256 320l32 0c35.3 0 64-28.7 64-64l0-32 64 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32l-128 0c-17.7 0-32-14.3-32-32l0-32z\"]\n};\nconst faChartLine = {\n prefix: 'fas',\n iconName: 'chart-line',\n icon: [512, 512, [\"line-chart\"], \"f201\", \"M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64L0 400c0 44.2 35.8 80 80 80l400 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L80 416c-8.8 0-16-7.2-16-16L64 64zm406.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L320 210.7l-57.4-57.4c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L240 221.3l57.4 57.4c12.5 12.5 32.8 12.5 45.3 0l128-128z\"]\n};\nconst faLineChart = faChartLine;\nconst faMaskVentilator = {\n prefix: 'fas',\n iconName: 'mask-ventilator',\n icon: [640, 512, [], \"e524\", \"M159.1 176C139.4 219.2 128 264.7 128 300.8c0 15.9 2.2 31.4 6.3 46l-31.8-7.9C70.5 330.9 48 302.1 48 269l0-85c0-4.4 3.6-8 8-8l103.1 0zm26-48L56 128c-30.9 0-56 25.1-56 56l0 85c0 55.1 37.5 103.1 90.9 116.4l71.3 17.8c22.7 30.5 55.4 54.1 93.8 66.6l0-76.6c-19.7-16.4-32-40.3-32-66.9c0-49.5 43-134.4 96-134.4c52.5 0 96 84.9 96 134.4c0 26.7-12.4 50.4-32 66.8l0 76.6c38-12.6 70.6-36 93.5-66.4l71.6-17.9C602.5 372.1 640 324.1 640 269l0-85c0-30.9-25.1-56-56-56l-129.5 0C419.7 73.8 372.1 32 320 32c-52.6 0-100.2 41.8-134.9 96zm295.6 48L584 176c4.4 0 8 3.6 8 8l0 85c0 33-22.5 61.8-54.5 69.9l-31.8 8c4.2-14.7 6.4-30.1 6.4-46.1c0-36.1-11.6-81.6-31.3-124.8zM288 320l0 192 64 0 0-192c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nconst faArrowRight = {\n prefix: 'fas',\n iconName: 'arrow-right',\n icon: [448, 512, [8594], \"f061\", \"M438.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.8 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l306.7 0L233.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160z\"]\n};\nconst faSignsPost = {\n prefix: 'fas',\n iconName: 'signs-post',\n icon: [512, 512, [\"map-signs\"], \"f277\", \"M224 32L64 32C46.3 32 32 46.3 32 64l0 64c0 17.7 14.3 32 32 32l377.4 0c4.2 0 8.3-1.7 11.3-4.7l48-48c6.2-6.2 6.2-16.4 0-22.6l-48-48c-3-3-7.1-4.7-11.3-4.7L288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32zM480 256c0-17.7-14.3-32-32-32l-160 0 0-32-64 0 0 32L70.6 224c-4.2 0-8.3 1.7-11.3 4.7l-48 48c-6.2 6.2-6.2 16.4 0 22.6l48 48c3 3 7.1 4.7 11.3 4.7L448 352c17.7 0 32-14.3 32-32l0-64zM288 480l0-96-64 0 0 96c0 17.7 14.3 32 32 32s32-14.3 32-32z\"]\n};\nconst faMapSigns = faSignsPost;\nconst faCashRegister = {\n prefix: 'fas',\n iconName: 'cash-register',\n icon: [512, 512, [], \"f788\", \"M64 0C46.3 0 32 14.3 32 32l0 64c0 17.7 14.3 32 32 32l80 0 0 32-57 0c-31.6 0-58.5 23.1-63.3 54.4L1.1 364.1C.4 368.8 0 373.6 0 378.4L0 448c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-69.6c0-4.8-.4-9.6-1.1-14.4L488.2 214.4C483.5 183.1 456.6 160 425 160l-217 0 0-32 80 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32L64 0zM96 48l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L96 80c-8.8 0-16-7.2-16-16s7.2-16 16-16zM64 432c0-8.8 7.2-16 16-16l352 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L80 448c-8.8 0-16-7.2-16-16zm48-168a24 24 0 1 1 0-48 24 24 0 1 1 0 48zm120-24a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zM160 344a24 24 0 1 1 0-48 24 24 0 1 1 0 48zM328 240a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zM256 344a24 24 0 1 1 0-48 24 24 0 1 1 0 48zM424 240a24 24 0 1 1 -48 0 24 24 0 1 1 48 0zM352 344a24 24 0 1 1 0-48 24 24 0 1 1 0 48z\"]\n};\nconst faPersonCircleQuestion = {\n prefix: 'fas',\n iconName: 'person-circle-question',\n icon: [576, 512, [], \"e542\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-223.1L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6l29.7 0c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9 232 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128-16 0zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM368 321.6l0 6.4c0 8.8 7.2 16 16 16s16-7.2 16-16l0-6.4c0-5.3 4.3-9.6 9.6-9.6l40.5 0c7.7 0 13.9 6.2 13.9 13.9c0 5.2-2.9 9.9-7.4 12.3l-32 16.8c-5.3 2.8-8.6 8.2-8.6 14.2l0 14.8c0 8.8 7.2 16 16 16s16-7.2 16-16l0-5.1 23.5-12.3c15.1-7.9 24.5-23.6 24.5-40.6c0-25.4-20.6-45.9-45.9-45.9l-40.5 0c-23 0-41.6 18.6-41.6 41.6z\"]\n};\nconst faH = {\n prefix: 'fas',\n iconName: 'h',\n icon: [384, 512, [104], \"48\", \"M320 256l0 192c0 17.7 14.3 32 32 32s32-14.3 32-32l0-224 0-160c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 128L64 192 64 64c0-17.7-14.3-32-32-32S0 46.3 0 64L0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-192 256 0z\"]\n};\nconst faTarp = {\n prefix: 'fas',\n iconName: 'tarp',\n icon: [576, 512, [], \"e57b\", \"M576 128c0-35.3-28.7-64-64-64L64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l352 0 0-128c0-17.7 14.3-32 32-32l128 0 0-160zM448 448L576 320l-128 0 0 128zM96 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faScrewdriverWrench = {\n prefix: 'fas',\n iconName: 'screwdriver-wrench',\n icon: [512, 512, [\"tools\"], \"f7d9\", \"M78.6 5C69.1-2.4 55.6-1.5 47 7L7 47c-8.5 8.5-9.4 22-2.1 31.6l80 104c4.5 5.9 11.6 9.4 19 9.4l54.1 0 109 109c-14.7 29-10 65.4 14.3 89.6l112 112c12.5 12.5 32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3l-112-112c-24.2-24.2-60.6-29-89.6-14.3l-109-109 0-54.1c0-7.5-3.5-14.5-9.4-19L78.6 5zM19.9 396.1C7.2 408.8 0 426.1 0 444.1C0 481.6 30.4 512 67.9 512c18 0 35.3-7.2 48-19.9L233.7 374.3c-7.8-20.9-9-43.6-3.6-65.1l-61.7-61.7L19.9 396.1zM512 144c0-10.5-1.1-20.7-3.2-30.5c-2.4-11.2-16.1-14.1-24.2-6l-63.9 63.9c-3 3-7.1 4.7-11.3 4.7L352 176c-8.8 0-16-7.2-16-16l0-57.4c0-4.2 1.7-8.3 4.7-11.3l63.9-63.9c8.1-8.1 5.2-21.8-6-24.2C388.7 1.1 378.5 0 368 0C288.5 0 224 64.5 224 144l0 .8 85.3 85.3c36-9.1 75.8 .5 104 28.7L429 274.5c49-23 83-72.8 83-130.5zM56 432a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nconst faTools = faScrewdriverWrench;\nconst faArrowsToEye = {\n prefix: 'fas',\n iconName: 'arrows-to-eye',\n icon: [640, 512, [], \"e4bf\", \"M15 15C24.4 5.7 39.6 5.7 49 15l63 63L112 40c0-13.3 10.7-24 24-24s24 10.7 24 24l0 96c0 13.3-10.7 24-24 24l-96 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l38.1 0L15 49C5.7 39.6 5.7 24.4 15 15zM133.5 243.9C158.6 193.6 222.7 112 320 112s161.4 81.6 186.5 131.9c3.8 7.6 3.8 16.5 0 24.2C481.4 318.4 417.3 400 320 400s-161.4-81.6-186.5-131.9c-3.8-7.6-3.8-16.5 0-24.2zM320 320a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM591 15c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-63 63 38.1 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-96 0c-13.3 0-24-10.7-24-24l0-96c0-13.3 10.7-24 24-24s24 10.7 24 24l0 38.1 63-63zM15 497c-9.4-9.4-9.4-24.6 0-33.9l63-63L40 400c-13.3 0-24-10.7-24-24s10.7-24 24-24l96 0c13.3 0 24 10.7 24 24l0 96c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-38.1L49 497c-9.4 9.4-24.6 9.4-33.9 0zm576 0l-63-63 0 38.1c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-96c0-13.3 10.7-24 24-24l96 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-38.1 0 63 63c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0z\"]\n};\nconst faPlugCircleBolt = {\n prefix: 'fas',\n iconName: 'plug-circle-bolt',\n icon: [576, 512, [], \"e55b\", \"M96 0C78.3 0 64 14.3 64 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 32c0 77.4 55 142 128 156.8l0 67.2c0 17.7 14.3 32 32 32s32-14.3 32-32l0-67.2c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32L32 160zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm47.9-225c4.3 3.7 5.4 9.9 2.6 14.9L452.4 356l35.6 0c5.2 0 9.8 3.3 11.4 8.2s-.1 10.3-4.2 13.4l-96 72c-4.5 3.4-10.8 3.2-15.1-.6s-5.4-9.9-2.6-14.9L411.6 380 376 380c-5.2 0-9.8-3.3-11.4-8.2s.1-10.3 4.2-13.4l96-72c4.5-3.4 10.8-3.2 15.1 .6z\"]\n};\nconst faHeart = {\n prefix: 'fas',\n iconName: 'heart',\n icon: [512, 512, [128153, 128154, 128155, 128156, 128420, 129293, 129294, 129505, 9829, 10084, 61578], \"f004\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9L464.4 300.4c30.4-28.3 47.6-68 47.6-109.5v-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1v5.8c0 41.5 17.2 81.2 47.6 109.5z\"]\n};\nconst faMarsAndVenus = {\n prefix: 'fas',\n iconName: 'mars-and-venus',\n icon: [512, 512, [9893], \"f224\", \"M337.8 14.8C341.5 5.8 350.3 0 360 0L472 0c13.3 0 24 10.7 24 24l0 112c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-39-39-24.7 24.7C407 163.3 416 192.6 416 224c0 80.2-59 146.6-136 158.2l0 25.8 24 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-24 0 0 32c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-32-24 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l24 0 0-25.8C155 370.6 96 304.2 96 224c0-88.4 71.6-160 160-160c39.6 0 75.9 14.4 103.8 38.2L382.1 80 343 41c-6.9-6.9-8.9-17.2-5.2-26.2zM448 48s0 0 0 0s0 0 0 0s0 0 0 0zM352 224a96 96 0 1 0 -192 0 96 96 0 1 0 192 0z\"]\n};\nconst faHouseUser = {\n prefix: 'fas',\n iconName: 'house-user',\n icon: [576, 512, [\"home-user\"], \"e1b0\", \"M575.8 255.5c0 18-15 32.1-32 32.1l-32 0 .7 160.2c.2 35.5-28.5 64.3-64 64.3l-320.4 0c-35.3 0-64-28.7-64-64l0-160.4-32 0c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L564.8 231.5c8 7 12 15 11 24zM352 224a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zm-96 96c-44.2 0-80 35.8-80 80c0 8.8 7.2 16 16 16l192 0c8.8 0 16-7.2 16-16c0-44.2-35.8-80-80-80l-64 0z\"]\n};\nconst faHomeUser = faHouseUser;\nconst faDumpsterFire = {\n prefix: 'fas',\n iconName: 'dumpster-fire',\n icon: [640, 512, [], \"f794\", \"M49.7 32l90.8 0L114.9 160l-94 0C9.3 160 0 150.7 0 139.1c0-2.1 .3-4.1 .9-6.1L26.8 48.9C29.9 38.9 39.2 32 49.7 32zM272 160l-124.5 0L173.1 32 272 32l0 128zm32 0l0-128 98.9 0 14.4 72.1c-1.7 1.1-3.3 2.4-4.8 3.8c-18.4 16.4-35.4 34-50.5 52.1l-58 0zm209.9-23.7c-1.7 1.6-3.4 3.2-5 4.8C498 129.6 486.7 118.6 475 108c-7.6-6.9-17-10.8-26.6-11.8L435.5 32l90.8 0c10.5 0 19.8 6.9 22.9 16.9L575.1 133c.2 .7 .4 1.4 .5 2.1c-17.8-15-44.3-14.6-61.7 1.2zM325.2 210.7C304.3 244.5 288 282.9 288 318.1c0 49.3 18.6 95.2 49.6 129.9L128 448c0 17.7-14.3 32-32 32s-32-14.3-32-32L44 288l-12 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l4 0-4-32 305.5 0c-4.4 6.2-8.5 12.5-12.3 18.7zm180.6-34.5L518 162.5c5.4-6.1 13.3-8.8 20.9-8.9c7.2 0 14.3 2.6 19.9 7.8c19.7 18.3 39.8 43.2 55 70.6C629 259.2 640 290.2 640 320.2C640 408.8 568.7 480 480 480c-89.6 0-160-71.3-160-159.8c0-37.3 16-73.4 36.8-104.5c20.9-31.3 47.5-59 70.9-80.2c5.7-5.2 13.1-7.7 20.3-7.5c14.1 .3 23.8 11.4 32.7 21.6c0 0 0 0 0 0c2 2.3 4 4.6 6 6.7l19 19.9zM544 368.2c0-36.5-37-73-54.8-88.4c-5.4-4.7-13.1-4.7-18.5 0C453 295.1 416 331.6 416 368.2c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nconst faHouseCrack = {\n prefix: 'fas',\n iconName: 'house-crack',\n icon: [576, 512, [], \"e3b1\", \"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1l32 0 0 160.4c0 35.3 28.7 64 64 64l102.3 0-31.3-52.2c-4.1-6.8-2.6-15.5 3.5-20.5L288 368l-60.2-82.8c-10.9-15 8.2-33.5 22.8-22l117.9 92.6c8 6.3 8.2 18.4 .4 24.9L288 448l38.4 64 122.1 0c35.5 0 64.2-28.8 64-64.3l-.7-160.2 32 0z\"]\n};\nconst faMartiniGlassCitrus = {\n prefix: 'fas',\n iconName: 'martini-glass-citrus',\n icon: [576, 512, [\"cocktail\"], \"f561\", \"M432 240c53 0 96-43 96-96s-43-96-96-96c-35.5 0-66.6 19.3-83.2 48l-52.6 0C316 40.1 369.3 0 432 0c79.5 0 144 64.5 144 144s-64.5 144-144 144c-27.7 0-53.5-7.8-75.5-21.3l35.4-35.4c12.2 5.6 25.8 8.7 40.1 8.7zM1.8 142.8C5.5 133.8 14.3 128 24 128l368 0c9.7 0 18.5 5.8 22.2 14.8s1.7 19.3-5.2 26.2l-177 177L232 464l64 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-88 0-88 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l64 0 0-118.1L7 169c-6.9-6.9-8.9-17.2-5.2-26.2z\"]\n};\nconst faCocktail = faMartiniGlassCitrus;\nconst faFaceSurprise = {\n prefix: 'fas',\n iconName: 'face-surprise',\n icon: [512, 512, [128558, \"surprise\"], \"f5c2\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM256 288a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nconst faSurprise = faFaceSurprise;\nconst faBottleWater = {\n prefix: 'fas',\n iconName: 'bottle-water',\n icon: [320, 512, [], \"e4c5\", \"M120 0l80 0c13.3 0 24 10.7 24 24l0 40L96 64l0-40c0-13.3 10.7-24 24-24zM32 167.5c0-19.5 10-37.6 26.6-47.9l15.8-9.9C88.7 100.7 105.2 96 122.1 96l75.8 0c16.9 0 33.4 4.7 47.7 13.7l15.8 9.9C278 129.9 288 148 288 167.5c0 17-7.5 32.3-19.4 42.6C280.6 221.7 288 238 288 256c0 19.1-8.4 36.3-21.7 48c13.3 11.7 21.7 28.9 21.7 48s-8.4 36.3-21.7 48c13.3 11.7 21.7 28.9 21.7 48c0 35.3-28.7 64-64 64L96 512c-35.3 0-64-28.7-64-64c0-19.1 8.4-36.3 21.7-48C40.4 388.3 32 371.1 32 352s8.4-36.3 21.7-48C40.4 292.3 32 275.1 32 256c0-18 7.4-34.3 19.4-45.9C39.5 199.7 32 184.5 32 167.5zM96 240c0 8.8 7.2 16 16 16l96 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-96 0c-8.8 0-16 7.2-16 16zm16 112c-8.8 0-16 7.2-16 16s7.2 16 16 16l96 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-96 0z\"]\n};\nconst faCirclePause = {\n prefix: 'fas',\n iconName: 'circle-pause',\n icon: [512, 512, [62092, \"pause-circle\"], \"f28b\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM224 192l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32s32 14.3 32 32zm128 0l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nconst faPauseCircle = faCirclePause;\nconst faToiletPaperSlash = {\n prefix: 'fas',\n iconName: 'toilet-paper-slash',\n icon: [640, 512, [], \"e072\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-109.7-86C569.9 374 608 291.9 608 192C608 86 565 0 512 0s-96 86-96 192c0 49.1 9.2 93.9 24.4 127.9l-59-46.2c1.6-24.8 2.6-52 2.6-81.6c0-65.5 13.2-142.4 60.2-192L160 0c-24.8 0-47.4 18.8-64.4 49.6L38.8 5.1zM367.3 385.4L66.5 148.4C64.9 162.4 64 177 64 192c0 101.5-11.7 170.8-23 213.9c-5.1 19.4-10.7 39.9-20.5 57.7c-5.9 9.9-6.1 22.1-.4 32.2S36.5 512 48 512l237.9 0c22.3 0 45.4-12.1 55.4-36.1c7.4-17.7 17.5-47.2 26-90.6zM544 192c0 35.3-14.3 64-32 64s-32-28.7-32-64s14.3-64 32-64s32 28.7 32 64z\"]\n};\nconst faAppleWhole = {\n prefix: 'fas',\n iconName: 'apple-whole',\n icon: [448, 512, [127822, 127823, \"apple-alt\"], \"f5d1\", \"M224 112c-8.8 0-16-7.2-16-16l0-16c0-44.2 35.8-80 80-80l16 0c8.8 0 16 7.2 16 16l0 16c0 44.2-35.8 80-80 80l-16 0zM0 288c0-76.3 35.7-160 112-160c27.3 0 59.7 10.3 82.7 19.3c18.8 7.3 39.9 7.3 58.7 0c22.9-8.9 55.4-19.3 82.7-19.3c76.3 0 112 83.7 112 160c0 128-80 224-160 224c-16.5 0-38.1-6.6-51.5-11.3c-8.1-2.8-16.9-2.8-25 0c-13.4 4.7-35 11.3-51.5 11.3C80 512 0 416 0 288z\"]\n};\nconst faAppleAlt = faAppleWhole;\nconst faKitchenSet = {\n prefix: 'fas',\n iconName: 'kitchen-set',\n icon: [576, 512, [], \"e51a\", \"M240 144A96 96 0 1 0 48 144a96 96 0 1 0 192 0zm44.4 32C269.9 240.1 212.5 288 144 288C64.5 288 0 223.5 0 144S64.5 0 144 0c68.5 0 125.9 47.9 140.4 112l71.8 0c8.8-9.8 21.6-16 35.8-16l104 0c26.5 0 48 21.5 48 48s-21.5 48-48 48l-104 0c-14.2 0-27-6.2-35.8-16l-71.8 0zM144 80a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM400 240c13.3 0 24 10.7 24 24l0 8 96 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-240 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l96 0 0-8c0-13.3 10.7-24 24-24zM288 464l0-112 224 0 0 112c0 26.5-21.5 48-48 48l-128 0c-26.5 0-48-21.5-48-48zM48 320l80 0 16 0 32 0c26.5 0 48 21.5 48 48s-21.5 48-48 48l-16 0c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-80c0-8.8 7.2-16 16-16zm128 64c8.8 0 16-7.2 16-16s-7.2-16-16-16l-16 0 0 32 16 0zM24 464l176 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L24 512c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nconst faR = {\n prefix: 'fas',\n iconName: 'r',\n icon: [320, 512, [114], \"52\", \"M64 32C28.7 32 0 60.7 0 96L0 288 0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128 95.3 0L261.8 466.4c10.1 14.5 30.1 18 44.6 7.9s18-30.1 7.9-44.6L230.1 309.5C282.8 288.1 320 236.4 320 176c0-79.5-64.5-144-144-144L64 32zM176 256L64 256 64 96l112 0c44.2 0 80 35.8 80 80s-35.8 80-80 80z\"]\n};\nconst faTemperatureQuarter = {\n prefix: 'fas',\n iconName: 'temperature-quarter',\n icon: [320, 512, [\"temperature-1\", \"thermometer-1\", \"thermometer-quarter\"], \"f2ca\", \"M160 64c-26.5 0-48 21.5-48 48l0 164.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5L208 112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112l0 164.4c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6L48 112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3l0-50.7c0-8.8 7.2-16 16-16s16 7.2 16 16l0 50.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nconst faTemperature1 = faTemperatureQuarter;\nconst faThermometer1 = faTemperatureQuarter;\nconst faThermometerQuarter = faTemperatureQuarter;\nconst faCube = {\n prefix: 'fas',\n iconName: 'cube',\n icon: [512, 512, [], \"f1b2\", \"M234.5 5.7c13.9-5 29.1-5 43.1 0l192 68.6C495 83.4 512 107.5 512 134.6l0 242.9c0 27-17 51.2-42.5 60.3l-192 68.6c-13.9 5-29.1 5-43.1 0l-192-68.6C17 428.6 0 404.5 0 377.4L0 134.6c0-27 17-51.2 42.5-60.3l192-68.6zM256 66L82.3 128 256 190l173.7-62L256 66zm32 368.6l160-57.1 0-188L288 246.6l0 188z\"]\n};\nconst faBitcoinSign = {\n prefix: 'fas',\n iconName: 'bitcoin-sign',\n icon: [320, 512, [], \"e0b4\", \"M48 32C48 14.3 62.3 0 80 0s32 14.3 32 32l0 32 32 0 0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32c0 1.5-.1 3.1-.3 4.5C254.1 82.2 288 125.1 288 176c0 24.2-7.7 46.6-20.7 64.9c31.7 19.8 52.7 55 52.7 95.1c0 61.9-50.1 112-112 112l0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-32 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-6.3 0C18.7 448 0 429.3 0 406.3L0 288l0-22.3L0 224 0 101.6C0 80.8 16.8 64 37.6 64L48 64l0-32zM64 224l112 0c26.5 0 48-21.5 48-48s-21.5-48-48-48L64 128l0 96zm112 64L64 288l0 96 144 0c26.5 0 48-21.5 48-48s-21.5-48-48-48l-32 0z\"]\n};\nconst faShieldDog = {\n prefix: 'fas',\n iconName: 'shield-dog',\n icon: [512, 512, [], \"e573\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM160.9 286.2c4.8 1.2 9.9 1.8 15.1 1.8c35.3 0 64-28.7 64-64l0-64 44.2 0c12.1 0 23.2 6.8 28.6 17.7L320 192l64 0c8.8 0 16 7.2 16 16l0 32c0 44.2-35.8 80-80 80l-48 0 0 50.7c0 7.3-5.9 13.3-13.3 13.3c-1.8 0-3.6-.4-5.2-1.1l-98.7-42.3c-6.6-2.8-10.8-9.3-10.8-16.4c0-2.8 .6-5.5 1.9-8l15-30zM160 160l40 0 8 0 0 32 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-48c0-8.8 7.2-16 16-16zm128 48a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nconst faSolarPanel = {\n prefix: 'fas',\n iconName: 'solar-panel',\n icon: [640, 512, [], \"f5ba\", \"M122.2 0C91.7 0 65.5 21.5 59.5 51.4L8.3 307.4C.4 347 30.6 384 71 384l217 0 0 64-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l192 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-64 217 0c40.4 0 70.7-36.9 62.8-76.6l-51.2-256C574.5 21.5 548.3 0 517.8 0L122.2 0zM260.9 64l118.2 0 10.4 104-139 0L260.9 64zM202.3 168l-100.8 0L122.2 64l90.4 0L202.3 168zM91.8 216l105.6 0L187.1 320 71 320 91.8 216zm153.9 0l148.6 0 10.4 104-169.4 0 10.4-104zm196.8 0l105.6 0L569 320l-116 0L442.5 216zm96-48l-100.8 0L427.3 64l90.4 0 31.4-6.3L517.8 64l20.8 104z\"]\n};\nconst faLockOpen = {\n prefix: 'fas',\n iconName: 'lock-open',\n icon: [576, 512, [], \"f3c1\", \"M352 144c0-44.2 35.8-80 80-80s80 35.8 80 80l0 48c0 17.7 14.3 32 32 32s32-14.3 32-32l0-48C576 64.5 511.5 0 432 0S288 64.5 288 144l0 48L64 192c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-192c0-35.3-28.7-64-64-64l-32 0 0-48z\"]\n};\nconst faElevator = {\n prefix: 'fas',\n iconName: 'elevator',\n icon: [512, 512, [], \"e16d\", \"M132.7 4.7l-64 64c-4.6 4.6-5.9 11.5-3.5 17.4s8.3 9.9 14.8 9.9l128 0c6.5 0 12.3-3.9 14.8-9.9s1.1-12.9-3.5-17.4l-64-64c-6.2-6.2-16.4-6.2-22.6 0zM64 128c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 128zm96 96a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM80 400c0-26.5 21.5-48 48-48l64 0c26.5 0 48 21.5 48 48l0 16c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32l0-16zm192 0c0-26.5 21.5-48 48-48l64 0c26.5 0 48 21.5 48 48l0 16c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32l0-16zm32-128a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM356.7 91.3c6.2 6.2 16.4 6.2 22.6 0l64-64c4.6-4.6 5.9-11.5 3.5-17.4S438.5 0 432 0L304 0c-6.5 0-12.3 3.9-14.8 9.9s-1.1 12.9 3.5 17.4l64 64z\"]\n};\nconst faMoneyBillTransfer = {\n prefix: 'fas',\n iconName: 'money-bill-transfer',\n icon: [640, 512, [], \"e528\", \"M535 41c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l64 64c4.5 4.5 7 10.6 7 17s-2.5 12.5-7 17l-64 64c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l23-23L384 112c-13.3 0-24-10.7-24-24s10.7-24 24-24l174.1 0L535 41zM105 377l-23 23L256 400c13.3 0 24 10.7 24 24s-10.7 24-24 24L81.9 448l23 23c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L7 441c-4.5-4.5-7-10.6-7-17s2.5-12.5 7-17l64-64c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM96 64l241.9 0c-3.7 7.2-5.9 15.3-5.9 24c0 28.7 23.3 52 52 52l117.4 0c-4 17 .6 35.5 13.8 48.8c20.3 20.3 53.2 20.3 73.5 0L608 169.5 608 384c0 35.3-28.7 64-64 64l-241.9 0c3.7-7.2 5.9-15.3 5.9-24c0-28.7-23.3-52-52-52l-117.4 0c4-17-.6-35.5-13.8-48.8c-20.3-20.3-53.2-20.3-73.5 0L32 342.5 32 128c0-35.3 28.7-64 64-64zm64 64l-64 0 0 64c35.3 0 64-28.7 64-64zM544 320c-35.3 0-64 28.7-64 64l64 0 0-64zM320 352a96 96 0 1 0 0-192 96 96 0 1 0 0 192z\"]\n};\nconst faMoneyBillTrendUp = {\n prefix: 'fas',\n iconName: 'money-bill-trend-up',\n icon: [512, 512, [], \"e529\", \"M470.7 9.4c3 3.1 5.3 6.6 6.9 10.3s2.4 7.8 2.4 12.2c0 0 0 .1 0 .1c0 0 0 0 0 0l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-18.7L310.6 214.6c-11.8 11.8-30.8 12.6-43.5 1.7L176 138.1 84.8 216.3c-13.4 11.5-33.6 9.9-45.1-3.5s-9.9-33.6 3.5-45.1l112-96c12-10.3 29.7-10.3 41.7 0l89.5 76.7L370.7 64 352 64c-17.7 0-32-14.3-32-32s14.3-32 32-32l96 0s0 0 0 0c8.8 0 16.8 3.6 22.6 9.3l.1 .1zM0 304c0-26.5 21.5-48 48-48l416 0c26.5 0 48 21.5 48 48l0 160c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 304zM48 416l0 48 48 0c0-26.5-21.5-48-48-48zM96 304l-48 0 0 48c26.5 0 48-21.5 48-48zM464 416c-26.5 0-48 21.5-48 48l48 0 0-48zM416 304c0 26.5 21.5 48 48 48l0-48-48 0zm-96 80a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nconst faHouseFloodWaterCircleArrowRight = {\n prefix: 'fas',\n iconName: 'house-flood-water-circle-arrow-right',\n icon: [640, 512, [], \"e50f\", \"M288 144A144 144 0 1 0 0 144a144 144 0 1 0 288 0zM140.7 76.7c6.2-6.2 16.4-6.2 22.6 0l56 56c6.2 6.2 6.2 16.4 0 22.6l-56 56c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L169.4 160 80 160c-8.8 0-16-7.2-16-16s7.2-16 16-16l89.4 0L140.7 99.3c-6.2-6.2-6.2-16.4 0-22.6zM320 144c0 57.3-27.4 108.2-69.8 140.3c11.8-3.6 23-9.4 33-16.2c22.1-15.5 51.6-15.5 73.7 0c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.4 78.1 3.4c2.1 1.7 4.2 3.3 6.5 4.9l-.3-84.4 16.6 0c13.9 0 26.1-8.9 30.4-22.1s-.4-27.6-11.6-35.8l-176-128C407.6-2 392.4-2 381.2 6.1L301 64.4c12.1 23.9 19 50.9 19 79.6zm18.5 165.9c-11.1-7.9-25.9-7.9-37 0C279 325.4 251.5 336 224 336c-26.9 0-55.3-10.8-77.4-26.1c0 0 0 0 0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C158.5 389.7 191 400 224 400c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.6 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.5-27.3-10.1-39.2-1.7c0 0 0 0 0 0C471.4 325.2 442.9 336 416 336c-27.5 0-55-10.6-77.5-26.1zm0 112c-11.1-7.9-25.9-7.9-37 0C279 437.4 251.5 448 224 448c-26.9 0-55.3-10.8-77.4-26.1c0 0 0 0 0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C158.5 501.7 191 512 224 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.6 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7c0 0 0 0 0 0C471.4 437.2 442.9 448 416 448c-27.5 0-55-10.6-77.5-26.1z\"]\n};\nconst faSquarePollHorizontal = {\n prefix: 'fas',\n iconName: 'square-poll-horizontal',\n icon: [448, 512, [\"poll-h\"], \"f682\", \"M448 96c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320zM256 160c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l96 0c17.7 0 32 14.3 32 32zm64 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l192 0zM192 352c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0c17.7 0 32 14.3 32 32z\"]\n};\nconst faPollH = faSquarePollHorizontal;\nconst faCircle = {\n prefix: 'fas',\n iconName: 'circle',\n icon: [512, 512, [128308, 128309, 128992, 128993, 128994, 128995, 128996, 9679, 9898, 9899, 11044, 61708, 61915], \"f111\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512z\"]\n};\nconst faBackwardFast = {\n prefix: 'fas',\n iconName: 'backward-fast',\n icon: [512, 512, [9198, \"fast-backward\"], \"f049\", \"M493.6 445c-11.2 5.3-24.5 3.6-34.1-4.4L288 297.7 288 416c0 12.4-7.2 23.7-18.4 29s-24.5 3.6-34.1-4.4L64 297.7 64 416c0 17.7-14.3 32-32 32s-32-14.3-32-32L0 96C0 78.3 14.3 64 32 64s32 14.3 32 32l0 118.3L235.5 71.4c9.5-7.9 22.8-9.7 34.1-4.4S288 83.6 288 96l0 118.3L459.5 71.4c9.5-7.9 22.8-9.7 34.1-4.4S512 83.6 512 96l0 320c0 12.4-7.2 23.7-18.4 29z\"]\n};\nconst faFastBackward = faBackwardFast;\nconst faRecycle = {\n prefix: 'fas',\n iconName: 'recycle',\n icon: [512, 512, [9842, 9850, 9851], \"f1b8\", \"M174.7 45.1C192.2 17 223 0 256 0s63.8 17 81.3 45.1l38.6 61.7 27-15.6c8.4-4.9 18.9-4.2 26.6 1.7s11.1 15.9 8.6 25.3l-23.4 87.4c-3.4 12.8-16.6 20.4-29.4 17l-87.4-23.4c-9.4-2.5-16.3-10.4-17.6-20s3.4-19.1 11.8-23.9l28.4-16.4L283 79c-5.8-9.3-16-15-27-15s-21.2 5.7-27 15l-17.5 28c-9.2 14.8-28.6 19.5-43.6 10.5c-15.3-9.2-20.2-29.2-10.7-44.4l17.5-28zM429.5 251.9c15-9 34.4-4.3 43.6 10.5l24.4 39.1c9.4 15.1 14.4 32.4 14.6 50.2c.3 53.1-42.7 96.4-95.8 96.4L320 448l0 32c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-64-64c-9.4-9.4-9.4-24.6 0-33.9l64-64c6.9-6.9 17.2-8.9 26.2-5.2s14.8 12.5 14.8 22.2l0 32 96.2 0c17.6 0 31.9-14.4 31.8-32c0-5.9-1.7-11.7-4.8-16.7l-24.4-39.1c-9.5-15.2-4.7-35.2 10.7-44.4zm-364.6-31L36 204.2c-8.4-4.9-13.1-14.3-11.8-23.9s8.2-17.5 17.6-20l87.4-23.4c12.8-3.4 26 4.2 29.4 17L182 241.2c2.5 9.4-.9 19.3-8.6 25.3s-18.2 6.6-26.6 1.7l-26.5-15.3L68.8 335.3c-3.1 5-4.8 10.8-4.8 16.7c-.1 17.6 14.2 32 31.8 32l32.2 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32.2 0C42.7 448-.3 404.8 0 351.6c.1-17.8 5.1-35.1 14.6-50.2l50.3-80.5z\"]\n};\nconst faUserAstronaut = {\n prefix: 'fas',\n iconName: 'user-astronaut',\n icon: [448, 512, [], \"f4fb\", \"M370.7 96.1C346.1 39.5 289.7 0 224 0S101.9 39.5 77.3 96.1C60.9 97.5 48 111.2 48 128l0 64c0 16.8 12.9 30.5 29.3 31.9C101.9 280.5 158.3 320 224 320s122.1-39.5 146.7-96.1c16.4-1.4 29.3-15.1 29.3-31.9l0-64c0-16.8-12.9-30.5-29.3-31.9zM336 144l0 16c0 53-43 96-96 96l-32 0c-53 0-96-43-96-96l0-16c0-26.5 21.5-48 48-48l128 0c26.5 0 48 21.5 48 48zM189.3 162.7l-6-21.2c-.9-3.3-3.9-5.5-7.3-5.5s-6.4 2.2-7.3 5.5l-6 21.2-21.2 6c-3.3 .9-5.5 3.9-5.5 7.3s2.2 6.4 5.5 7.3l21.2 6 6 21.2c.9 3.3 3.9 5.5 7.3 5.5s6.4-2.2 7.3-5.5l6-21.2 21.2-6c3.3-.9 5.5-3.9 5.5-7.3s-2.2-6.4-5.5-7.3l-21.2-6zM112.7 316.5C46.7 342.6 0 407 0 482.3C0 498.7 13.3 512 29.7 512l98.3 0 0-64c0-17.7 14.3-32 32-32l128 0c17.7 0 32 14.3 32 32l0 64 98.3 0c16.4 0 29.7-13.3 29.7-29.7c0-75.3-46.7-139.7-112.7-165.8C303.9 338.8 265.5 352 224 352s-79.9-13.2-111.3-35.5zM176 448c-8.8 0-16 7.2-16 16l0 48 32 0 0-48c0-8.8-7.2-16-16-16zm96 32a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nconst faPlaneSlash = {\n prefix: 'fas',\n iconName: 'plane-slash',\n icon: [640, 512, [], \"e069\", \"M514.3 192c34.2 0 93.7 29 93.7 64c0 36-59.5 64-93.7 64l-73.8 0L630.8 469.1c10.4 8.2 12.3 23.3 4.1 33.7s-23.3 12.3-33.7 4.1L9.2 42.9C-1.2 34.7-3.1 19.6 5.1 9.2S28.4-3.1 38.8 5.1L238.1 161.3 197.8 20.4C194.9 10.2 202.6 0 213.2 0l56.2 0c11.5 0 22.1 6.2 27.8 16.1L397.7 192l116.6 0zM41.5 128.7l321 252.9L297.2 495.9c-5.7 10-16.3 16.1-27.8 16.1l-56.2 0c-10.6 0-18.3-10.2-15.4-20.4l49-171.6L144 320l-43.2 57.6c-3 4-7.8 6.4-12.8 6.4l-42 0c-7.8 0-14-6.3-14-14c0-1.3 .2-2.6 .5-3.9L64 256 32.5 145.9c-.4-1.3-.5-2.6-.5-3.9c0-6.2 4-11.4 9.5-13.3z\"]\n};\nconst faTrademark = {\n prefix: 'fas',\n iconName: 'trademark',\n icon: [640, 512, [8482], \"f25c\", \"M345.6 108.8c-8.3-11-22.7-15.5-35.7-11.2S288 114.2 288 128l0 256c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160 86.4 115.2c6 8.1 15.5 12.8 25.6 12.8s19.6-4.7 25.6-12.8L576 224l0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-256c0-13.8-8.8-26-21.9-30.4s-27.5 .1-35.7 11.2L464 266.7 345.6 108.8zM0 128c0 17.7 14.3 32 32 32l64 0 0 224c0 17.7 14.3 32 32 32s32-14.3 32-32l0-224 64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 96C14.3 96 0 110.3 0 128z\"]\n};\nconst faBasketball = {\n prefix: 'fas',\n iconName: 'basketball',\n icon: [512, 512, [127936, \"basketball-ball\"], \"f434\", \"M86.6 64l85.2 85.2C194.5 121.7 208 86.4 208 48c0-14.7-2-28.9-5.7-42.4C158.6 15 119 35.5 86.6 64zM64 86.6C35.5 119 15 158.6 5.6 202.3C19.1 206 33.3 208 48 208c38.4 0 73.7-13.5 101.3-36.1L64 86.6zM256 0c-7.3 0-14.6 .3-21.8 .9C238 16 240 31.8 240 48c0 47.3-17.1 90.5-45.4 124L256 233.4 425.4 64C380.2 24.2 320.9 0 256 0zM48 240c-16.2 0-32-2-47.1-5.8C.3 241.4 0 248.7 0 256c0 64.9 24.2 124.2 64 169.4L233.4 256 172 194.6C138.5 222.9 95.3 240 48 240zm463.1 37.8c.6-7.2 .9-14.5 .9-21.8c0-64.9-24.2-124.2-64-169.4L278.6 256 340 317.4c33.4-28.3 76.7-45.4 124-45.4c16.2 0 32 2 47.1 5.8zm-4.7 31.9C492.9 306 478.7 304 464 304c-38.4 0-73.7 13.5-101.3 36.1L448 425.4c28.5-32.3 49.1-71.9 58.4-115.7zM340.1 362.7C317.5 390.3 304 425.6 304 464c0 14.7 2 28.9 5.7 42.4C353.4 497 393 476.5 425.4 448l-85.2-85.2zM317.4 340L256 278.6 86.6 448c45.1 39.8 104.4 64 169.4 64c7.3 0 14.6-.3 21.8-.9C274 496 272 480.2 272 464c0-47.3 17.1-90.5 45.4-124z\"]\n};\nconst faBasketballBall = faBasketball;\nconst faSatelliteDish = {\n prefix: 'fas',\n iconName: 'satellite-dish',\n icon: [512, 512, [128225], \"f7c0\", \"M192 32c0-17.7 14.3-32 32-32C383.1 0 512 128.9 512 288c0 17.7-14.3 32-32 32s-32-14.3-32-32C448 164.3 347.7 64 224 64c-17.7 0-32-14.3-32-32zM60.6 220.6L164.7 324.7l28.4-28.4c-.7-2.6-1.1-5.4-1.1-8.3c0-17.7 14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32c-2.9 0-5.6-.4-8.3-1.1l-28.4 28.4L291.4 451.4c14.5 14.5 11.8 38.8-7.3 46.3C260.5 506.9 234.9 512 208 512C93.1 512 0 418.9 0 304c0-26.9 5.1-52.5 14.4-76.1c7.5-19 31.8-21.8 46.3-7.3zM224 96c106 0 192 86 192 192c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-70.7-57.3-128-128-128c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faCircleUp = {\n prefix: 'fas',\n iconName: 'circle-up',\n icon: [512, 512, [61467, \"arrow-alt-circle-up\"], \"f35b\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm11.3-395.3l112 112c4.6 4.6 5.9 11.5 3.5 17.4s-8.3 9.9-14.8 9.9l-64 0 0 96c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-96-64 0c-6.5 0-12.3-3.9-14.8-9.9s-1.1-12.9 3.5-17.4l112-112c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nconst faArrowAltCircleUp = faCircleUp;\nconst faMobileScreenButton = {\n prefix: 'fas',\n iconName: 'mobile-screen-button',\n icon: [384, 512, [\"mobile-alt\"], \"f3cd\", \"M16 64C16 28.7 44.7 0 80 0L304 0c35.3 0 64 28.7 64 64l0 384c0 35.3-28.7 64-64 64L80 512c-35.3 0-64-28.7-64-64L16 64zM224 448a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM304 64L80 64l0 320 224 0 0-320z\"]\n};\nconst faMobileAlt = faMobileScreenButton;\nconst faVolumeHigh = {\n prefix: 'fas',\n iconName: 'volume-high',\n icon: [640, 512, [128266, \"volume-up\"], \"f028\", \"M533.6 32.5C598.5 85.2 640 165.8 640 256s-41.5 170.7-106.4 223.5c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C557.5 398.2 592 331.2 592 256s-34.5-142.2-88.7-186.3c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5zM473.1 107c43.2 35.2 70.9 88.9 70.9 149s-27.7 113.8-70.9 149c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C475.3 341.3 496 301.1 496 256s-20.7-85.3-53.2-111.8c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5zm-60.5 74.5C434.1 199.1 448 225.9 448 256s-13.9 56.9-35.4 74.5c-10.3 8.4-25.4 6.8-33.8-3.5s-6.8-25.4 3.5-33.8C393.1 284.4 400 271 400 256s-6.9-28.4-17.7-37.3c-10.3-8.4-11.8-23.5-3.5-33.8s23.5-11.8 33.8-3.5zM301.1 34.8C312.6 40 320 51.4 320 64l0 384c0 12.6-7.4 24-18.9 29.2s-25 3.1-34.4-5.3L131.8 352 64 352c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64l67.8 0L266.7 40.1c9.4-8.4 22.9-10.4 34.4-5.3z\"]\n};\nconst faVolumeUp = faVolumeHigh;\nconst faUsersRays = {\n prefix: 'fas',\n iconName: 'users-rays',\n icon: [640, 512, [], \"e593\", \"M41 7C31.6-2.3 16.4-2.3 7 7S-2.3 31.6 7 41l72 72c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L41 7zM599 7L527 79c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l72-72c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0zM7 505c9.4 9.4 24.6 9.4 33.9 0l72-72c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L7 471c-9.4 9.4-9.4 24.6 0 33.9zm592 0c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-72-72c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l72 72zM320 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM212.1 336c-2.7 7.5-4.1 15.6-4.1 24c0 13.3 10.7 24 24 24l176 0c13.3 0 24-10.7 24-24c0-8.4-1.4-16.5-4.1-24c-.5-1.4-1-2.7-1.6-4c-9.4-22.3-29.8-38.9-54.3-43c-3.9-.7-7.9-1-12-1l-80 0c-4.1 0-8.1 .3-12 1c-.8 .1-1.7 .3-2.5 .5c-24.9 5.1-45.1 23-53.4 46.5zM175.8 224a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-26.5 32C119.9 256 96 279.9 96 309.3c0 14.7 11.9 26.7 26.7 26.7l56.1 0c8-34.1 32.8-61.7 65.2-73.6c-7.5-4.1-16.2-6.4-25.3-6.4l-69.3 0zm368 80c14.7 0 26.7-11.9 26.7-26.7c0-29.5-23.9-53.3-53.3-53.3l-69.3 0c-9.2 0-17.8 2.3-25.3 6.4c32.4 11.9 57.2 39.5 65.2 73.6l56.1 0zM464 224a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nconst faWallet = {\n prefix: 'fas',\n iconName: 'wallet',\n icon: [512, 512, [], \"f555\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-224c0-35.3-28.7-64-64-64L80 128c-8.8 0-16-7.2-16-16s7.2-16 16-16l368 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L64 32zM416 272a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faClipboardCheck = {\n prefix: 'fas',\n iconName: 'clipboard-check',\n icon: [384, 512, [], \"f46c\", \"M192 0c-41.8 0-77.4 26.7-90.5 64L64 64C28.7 64 0 92.7 0 128L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64l-37.5 0C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM305 273L177 401c-9.4 9.4-24.6 9.4-33.9 0L79 337c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L271 239c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z\"]\n};\nconst faFileAudio = {\n prefix: 'fas',\n iconName: 'file-audio',\n icon: [384, 512, [], \"f1c7\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zm2 226.3c37.1 22.4 62 63.1 62 109.7s-24.9 87.3-62 109.7c-7.6 4.6-17.4 2.1-22-5.4s-2.1-17.4 5.4-22C269.4 401.5 288 370.9 288 336s-18.6-65.5-46.5-82.3c-7.6-4.6-10-14.4-5.4-22s14.4-10 22-5.4zm-91.9 30.9c6 2.5 9.9 8.3 9.9 14.8l0 128c0 6.5-3.9 12.3-9.9 14.8s-12.9 1.1-17.4-3.5L113.4 376 80 376c-8.8 0-16-7.2-16-16l0-48c0-8.8 7.2-16 16-16l33.4 0 35.3-35.3c4.6-4.6 11.5-5.9 17.4-3.5zm51 34.9c6.6-5.9 16.7-5.3 22.6 1.3C249.8 304.6 256 319.6 256 336s-6.2 31.4-16.3 42.7c-5.9 6.6-16 7.1-22.6 1.3s-7.1-16-1.3-22.6c5.1-5.7 8.1-13.1 8.1-21.3s-3.1-15.7-8.1-21.3c-5.9-6.6-5.3-16.7 1.3-22.6z\"]\n};\nconst faBurger = {\n prefix: 'fas',\n iconName: 'burger',\n icon: [512, 512, [\"hamburger\"], \"f805\", \"M61.1 224C45 224 32 211 32 194.9c0-1.9 .2-3.7 .6-5.6C37.9 168.3 78.8 32 256 32s218.1 136.3 223.4 157.3c.5 1.9 .6 3.7 .6 5.6c0 16.1-13 29.1-29.1 29.1L61.1 224zM144 128a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm240 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32zM272 96a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zM16 304c0-26.5 21.5-48 48-48l384 0c26.5 0 48 21.5 48 48s-21.5 48-48 48L64 352c-26.5 0-48-21.5-48-48zm16 96c0-8.8 7.2-16 16-16l416 0c8.8 0 16 7.2 16 16l0 16c0 35.3-28.7 64-64 64L96 480c-35.3 0-64-28.7-64-64l0-16z\"]\n};\nconst faHamburger = faBurger;\nconst faWrench = {\n prefix: 'fas',\n iconName: 'wrench',\n icon: [512, 512, [128295], \"f0ad\", \"M352 320c88.4 0 160-71.6 160-160c0-15.3-2.2-30.1-6.2-44.2c-3.1-10.8-16.4-13.2-24.3-5.3l-76.8 76.8c-3 3-7.1 4.7-11.3 4.7L336 192c-8.8 0-16-7.2-16-16l0-57.4c0-4.2 1.7-8.3 4.7-11.3l76.8-76.8c7.9-7.9 5.4-21.2-5.3-24.3C382.1 2.2 367.3 0 352 0C263.6 0 192 71.6 192 160c0 19.1 3.4 37.5 9.5 54.5L19.9 396.1C7.2 408.8 0 426.1 0 444.1C0 481.6 30.4 512 67.9 512c18 0 35.3-7.2 48-19.9L297.5 310.5c17 6.2 35.4 9.5 54.5 9.5zM80 408a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faBugs = {\n prefix: 'fas',\n iconName: 'bugs',\n icon: [576, 512, [], \"e4d0\", \"M164.5 107.4l33.4-73.5c5.5-12.1 .1-26.3-11.9-31.8s-26.3-.1-31.8 11.9L128 71.7 101.9 14.1C96.4 2 82.1-3.3 70.1 2.1S52.7 21.9 58.1 33.9l33.4 73.5c-10.2 7.1-18.2 17-22.9 28.6l-17 0-4.1-20.7c-2.6-13-15.2-21.4-28.2-18.8S-2.1 111.7 .5 124.7l8 40C10.7 175.9 20.6 184 32 184l32 0 0 23.3-37.8 9.5c-9.5 2.4-16.6 10.2-17.9 19.9l-8 56c-1.9 13.1 7.2 25.3 20.4 27.2s25.3-7.2 27.2-20.4l5.7-40 18.4-4.6C82.7 274.6 103.8 288 128 288s45.3-13.4 56.1-33.2l18.4 4.6 5.7 40c1.9 13.1 14 22.2 27.2 20.4s22.2-14 20.4-27.2l-8-56c-1.4-9.7-8.5-17.5-17.9-19.9L192 207.3l0-23.3 32 0c11.4 0 21.3-8.1 23.5-19.3l8-40c2.6-13-5.8-25.6-18.8-28.2s-25.6 5.8-28.2 18.8L204.3 136l-17 0c-4.7-11.6-12.7-21.5-22.9-28.6zM496 286.5l65.6-47c10.8-7.7 13.3-22.7 5.6-33.5s-22.7-13.3-33.5-5.6l-51.4 36.8 6.1-62.9c1.3-13.2-8.4-24.9-21.6-26.2s-24.9 8.4-26.2 21.6L432.8 250c-12.3 1-24.2 5.6-34.1 13.3L384 254.8l6.8-20c4.2-12.6-2.5-26.2-15-30.4s-26.2 2.5-30.4 15l-13.1 38.6c-3.7 10.8 .8 22.8 10.7 28.5l27.7 16L359 322.7 321.5 312c-9.4-2.7-19.5 .6-25.5 8.3l-34.9 44.5c-8.2 10.4-6.4 25.5 4.1 33.7s25.5 6.4 33.7-4.1l25-31.8 18.2 5.2c-.5 22.6 11 44.7 32 56.8s45.9 11 65.2-.7l13.6 13.2-15.1 37.5c-4.9 12.3 1 26.3 13.3 31.2s26.3-1 31.2-13.3L503.5 440c3.6-9.1 1.4-19.4-5.6-26.2l-28-27.1 11.6-20.1 27.7 16c9.9 5.7 22.5 3.7 30-4.9L566.2 347c8.7-10 7.8-25.1-2.2-33.9s-25.1-7.8-33.9 2.2l-13.9 15.9-14.7-8.5c1.7-12.4-.2-25-5.5-36.2z\"]\n};\nconst faRupeeSign = {\n prefix: 'fas',\n iconName: 'rupee-sign',\n icon: [448, 512, [8360, \"rupee\"], \"f156\", \"M0 64C0 46.3 14.3 32 32 32l80 0c79.5 0 144 64.5 144 144c0 58.8-35.2 109.3-85.7 131.7l51.4 128.4c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8L106.3 320 64 320l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32L0 288 0 64zM64 256l48 0c44.2 0 80-35.8 80-80s-35.8-80-80-80L64 96l0 160zm256.5 16.4c-.9 6 0 8.7 .4 9.8c.4 1.1 1.4 2.6 4.2 4.9c7.2 5.7 18.7 10 37.9 16.8l1.3 .5c16 5.6 38.7 13.6 55.7 28.1c9.5 8.1 17.9 18.6 23.1 32.3c5.1 13.7 6.1 28.5 3.8 44c-4.2 28.1-20.5 49.3-43.8 60.9c-22.1 11-48.1 12.5-73.2 8l-.2 0s0 0 0 0c-9.3-1.8-20.5-5.7-29.3-9c-6-2.3-12.6-4.9-17.7-6.9c0 0 0 0 0 0c-2.5-1-4.6-1.8-6.3-2.5c-16.5-6.4-24.6-25-18.2-41.4s24.9-24.6 41.4-18.2c2.6 1 5.2 2 7.9 3.1c0 0 0 0 0 0c4.8 1.9 9.8 3.9 15.4 6c8.8 3.3 15.3 5.4 18.7 6c15.7 2.8 26.7 .8 32.9-2.3c5-2.5 8-6 9.1-13c1-6.9 .2-10.5-.5-12.3c-.6-1.7-1.8-3.6-4.5-5.9c-6.9-5.8-18.2-10.4-36.9-17l-3-1.1c-15.5-5.4-37-13-53.3-25.9c-9.5-7.5-18.3-17.6-23.7-31c-5.5-13.4-6.6-28-4.4-43.2c8.4-57.1 67-78 116.9-68.9c6.9 1.3 27.3 5.8 35.4 8.4c16.9 5.2 26.3 23.2 21.1 40.1s-23.2 26.3-40.1 21.1c-4.7-1.4-22.3-5.5-27.9-6.5c-14.6-2.7-25.8-.4-32.6 3.2c-6.3 3.3-8.9 7.6-9.5 12z\"]\n};\nconst faRupee = faRupeeSign;\nconst faFileImage = {\n prefix: 'fas',\n iconName: 'file-image',\n icon: [384, 512, [128443], \"f1c5\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM64 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm152 32c5.3 0 10.2 2.6 13.2 6.9l88 128c3.4 4.9 3.7 11.3 1 16.5s-8.2 8.6-14.2 8.6l-88 0-40 0-48 0-48 0c-5.8 0-11.1-3.1-13.9-8.1s-2.8-11.2 .2-16.1l48-80c2.9-4.8 8.1-7.8 13.7-7.8s10.8 2.9 13.7 7.8l12.8 21.4 48.3-70.2c3-4.3 7.9-6.9 13.2-6.9z\"]\n};\nconst faCircleQuestion = {\n prefix: 'fas',\n iconName: 'circle-question',\n icon: [512, 512, [62108, \"question-circle\"], \"f059\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM169.8 165.3c7.9-22.3 29.1-37.3 52.8-37.3l58.3 0c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L280 264.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24l0-13.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1l-58.3 0c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nconst faQuestionCircle = faCircleQuestion;\nconst faPlaneDeparture = {\n prefix: 'fas',\n iconName: 'plane-departure',\n icon: [640, 512, [128747], \"f5b0\", \"M381 114.9L186.1 41.8c-16.7-6.2-35.2-5.3-51.1 2.7L89.1 67.4C78 73 77.2 88.5 87.6 95.2l146.9 94.5L136 240 77.8 214.1c-8.7-3.9-18.8-3.7-27.3 .6L18.3 230.8c-9.3 4.7-11.8 16.8-5 24.7l73.1 85.3c6.1 7.1 15 11.2 24.3 11.2l137.7 0c5 0 9.9-1.2 14.3-3.4L535.6 212.2c46.5-23.3 82.5-63.3 100.8-112C645.9 75 627.2 48 600.2 48l-57.4 0c-20.2 0-40.2 4.8-58.2 14L381 114.9zM0 480c0 17.7 14.3 32 32 32l576 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 448c-17.7 0-32 14.3-32 32z\"]\n};\nconst faHandshakeSlash = {\n prefix: 'fas',\n iconName: 'handshake-slash',\n icon: [640, 512, [], \"e060\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-135-105.8c-1.1-11.4-6.3-22.3-15.3-30.7l-134.2-123-23.4 18.2-26-20.3 77.2-60.1c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L512 316.8 512 128l-.7 0-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2l-89.7 72.6-25.8-20.3 81.8-66.2c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-35.5 23.7L38.8 5.1zM96 171.6L40.6 128 0 128 0 352c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-180.4zM413.6 421.9L128 196.9 128 352l28.2 0 91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c.8-.8 1.5-1.7 2.2-2.6zM48 320a16 16 0 1 1 0 32 16 16 0 1 1 0-32zM544 128l0 224c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-224-96 0zm32 208a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nconst faBookBookmark = {\n prefix: 'fas',\n iconName: 'book-bookmark',\n icon: [448, 512, [], \"e0bb\", \"M0 96C0 43 43 0 96 0l96 0 0 190.7c0 13.4 15.5 20.9 26 12.5L272 160l54 43.2c10.5 8.4 26 .9 26-12.5L352 0l32 0 32 0c17.7 0 32 14.3 32 32l0 320c0 17.7-14.3 32-32 32l0 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0L96 512c-53 0-96-43-96-96L0 96zM64 416c0 17.7 14.3 32 32 32l256 0 0-64L96 384c-17.7 0-32 14.3-32 32z\"]\n};\nconst faCodeBranch = {\n prefix: 'fas',\n iconName: 'code-branch',\n icon: [448, 512, [], \"f126\", \"M80 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm80-24c0 32.8-19.7 61-48 73.3l0 87.8c18.8-10.9 40.7-17.1 64-17.1l96 0c35.3 0 64-28.7 64-64l0-6.7C307.7 141 288 112.8 288 80c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3l0 6.7c0 70.7-57.3 128-128 128l-96 0c-35.3 0-64 28.7-64 64l0 6.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3l0-6.7 0-198.7C19.7 141 0 112.8 0 80C0 35.8 35.8 0 80 0s80 35.8 80 80zm232 0a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM80 456a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nconst faHatCowboy = {\n prefix: 'fas',\n iconName: 'hat-cowboy',\n icon: [640, 512, [], \"f8c0\", \"M320 64c14.4 0 22.3-7 30.8-14.4C360.4 41.1 370.7 32 392 32c49.3 0 84.4 152.2 97.9 221.9C447.8 272.1 390.9 288 320 288s-127.8-15.9-169.9-34.1C163.6 184.2 198.7 32 248 32c21.3 0 31.6 9.1 41.2 17.6C297.7 57 305.6 64 320 64zM111.1 270.7c47.2 24.5 117.5 49.3 209 49.3s161.8-24.8 208.9-49.3c24.8-12.9 49.8-28.3 70.1-47.7c7.9-7.9 20.2-9.2 29.6-3.3c9.5 5.9 13.5 17.9 9.9 28.5c-13.5 37.7-38.4 72.3-66.1 100.6C523.7 398.9 443.6 448 320 448s-203.6-49.1-252.5-99.2C39.8 320.4 14.9 285.8 1.4 248.1c-3.6-10.6 .4-22.6 9.9-28.5c9.5-5.9 21.7-4.5 29.6 3.3c20.4 19.4 45.3 34.8 70.1 47.7z\"]\n};\nconst faBridge = {\n prefix: 'fas',\n iconName: 'bridge',\n icon: [576, 512, [], \"e4c8\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l40 0 0 64L0 160 0 288c53 0 96 43 96 96l0 64c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-64c0-53 43-96 96-96s96 43 96 96l0 64c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-64c0-53 43-96 96-96l0-128-72 0 0-64 40 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32zM456 96l0 64-80 0 0-64 80 0zM328 96l0 64-80 0 0-64 80 0zM200 96l0 64-80 0 0-64 80 0z\"]\n};\nconst faPhoneFlip = {\n prefix: 'fas',\n iconName: 'phone-flip',\n icon: [512, 512, [128381, \"phone-alt\"], \"f879\", \"M347.1 24.6c7.7-18.6 28-28.5 47.4-23.2l88 24C499.9 30.2 512 46 512 64c0 247.4-200.6 448-448 448c-18 0-33.8-12.1-38.6-29.5l-24-88c-5.3-19.4 4.6-39.7 23.2-47.4l96-40c16.3-6.8 35.2-2.1 46.3 11.6L207.3 368c70.4-33.3 127.4-90.3 160.7-160.7L318.7 167c-13.7-11.2-18.4-30-11.6-46.3l40-96z\"]\n};\nconst faPhoneAlt = faPhoneFlip;\nconst faTruckFront = {\n prefix: 'fas',\n iconName: 'truck-front',\n icon: [512, 512, [], \"e2b7\", \"M0 80C0 35.8 35.8 0 80 0L432 0c44.2 0 80 35.8 80 80l0 288c0 26.2-12.6 49.4-32 64l0 48c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-32-256 0 0 32c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-48C12.6 417.4 0 394.2 0 368L0 80zm129.9 72.2L112 224l288 0-17.9-71.8C378.5 138 365.7 128 351 128l-190 0c-14.7 0-27.5 10-31 24.2zM128 320a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm288 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faCat = {\n prefix: 'fas',\n iconName: 'cat',\n icon: [576, 512, [128008], \"f6be\", \"M320 192l17.1 0c22.1 38.3 63.5 64 110.9 64c11 0 21.8-1.4 32-4l0 4 0 32 0 192c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-140.8L280 448l56 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-144 0c-53 0-96-43-96-96l0-223.5c0-16.1-12-29.8-28-31.8l-7.9-1c-17.5-2.2-30-18.2-27.8-35.7s18.2-30 35.7-27.8l7.9 1c48 6 84.1 46.8 84.1 95.3l0 85.3c34.4-51.7 93.2-85.8 160-85.8zm160 26.5s0 0 0 0c-10 3.5-20.8 5.5-32 5.5c-28.4 0-54-12.4-71.6-32c0 0 0 0 0 0c-3.7-4.1-7-8.5-9.9-13.2C357.3 164 352 146.6 352 128c0 0 0 0 0 0l0-96 0-20 0-1.3C352 4.8 356.7 .1 362.6 0l.2 0c3.3 0 6.4 1.6 8.4 4.2c0 0 0 0 0 .1L384 21.3l27.2 36.3L416 64l64 0 4.8-6.4L512 21.3 524.8 4.3c0 0 0 0 0-.1c2-2.6 5.1-4.2 8.4-4.2l.2 0C539.3 .1 544 4.8 544 10.7l0 1.3 0 20 0 96c0 17.3-4.6 33.6-12.6 47.6c-11.3 19.8-29.6 35.2-51.4 42.9zM432 128a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nconst faAnchorCircleExclamation = {\n prefix: 'fas',\n iconName: 'anchor-circle-exclamation',\n icon: [640, 512, [], \"e4ab\", \"M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80L224 176c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 208-48 0c-53 0-96-43-96-96l0-6.1 7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7 0 6.1c0 88.4 71.6 160 160 160l80 0 80 0c8.2 0 16.3-.6 24.2-1.8c-22.2-16.2-40.4-37.5-53-62.2L320 448l0-80 0-128 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-10.9 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16z\"]\n};\nconst faTruckField = {\n prefix: 'fas',\n iconName: 'truck-field',\n icon: [640, 512, [], \"e58d\", \"M32 96c0-35.3 28.7-64 64-64l224 0c23.7 0 44.4 12.9 55.4 32l51.8 0c25.3 0 48.2 14.9 58.5 38l52.8 118.8c.5 1.1 .9 2.1 1.3 3.2l4.2 0c35.3 0 64 28.7 64 64l0 32c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0c0 53-43 96-96 96s-96-43-96-96l-128 0c0 53-43 96-96 96s-96-43-96-96l-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l0-32c-17.7 0-32-14.3-32-32l0-96c0-17.7 14.3-32 32-32l0-32zM384 224l85.9 0-42.7-96L384 128l0 96zM160 432a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm368-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nconst faRoute = {\n prefix: 'fas',\n iconName: 'route',\n icon: [512, 512, [], \"f4d7\", \"M512 96c0 50.2-59.1 125.1-84.6 155c-3.8 4.4-9.4 6.1-14.5 5L320 256c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c53 0 96 43 96 96s-43 96-96 96l-276.4 0c8.7-9.9 19.3-22.6 30-36.8c6.3-8.4 12.8-17.6 19-27.2L416 448c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 0c-53 0-96-43-96-96s43-96 96-96l39.8 0c-21-31.5-39.8-67.7-39.8-96c0-53 43-96 96-96s96 43 96 96zM117.1 489.1c-3.8 4.3-7.2 8.1-10.1 11.3l-1.8 2-.2-.2c-6 4.6-14.6 4-20-1.8C59.8 473 0 402.5 0 352c0-53 43-96 96-96s96 43 96 96c0 30-21.1 67-43.5 97.9c-10.7 14.7-21.7 28-30.8 38.5l-.6 .7zM128 352a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM416 128a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faClipboardQuestion = {\n prefix: 'fas',\n iconName: 'clipboard-question',\n icon: [384, 512, [], \"e4e3\", \"M192 0c-41.8 0-77.4 26.7-90.5 64L64 64C28.7 64 0 92.7 0 128L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64l-37.5 0C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM105.8 229.3c7.9-22.3 29.1-37.3 52.8-37.3l58.3 0c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L216 328.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24l0-13.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1l-58.3 0c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM160 416a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nconst faPanorama = {\n prefix: 'fas',\n iconName: 'panorama',\n icon: [640, 512, [], \"e209\", \"M45.6 32C20.4 32 0 52.4 0 77.6L0 434.4C0 459.6 20.4 480 45.6 480c5.1 0 10-.8 14.7-2.4C74.6 472.8 177.6 440 320 440s245.4 32.8 259.6 37.6c4.7 1.6 9.7 2.4 14.7 2.4c25.2 0 45.6-20.4 45.6-45.6l0-356.7C640 52.4 619.6 32 594.4 32c-5 0-10 .8-14.7 2.4C565.4 39.2 462.4 72 320 72S74.6 39.2 60.4 34.4C55.6 32.8 50.7 32 45.6 32zM96 160a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm272 0c7.9 0 15.4 3.9 19.8 10.5L512.3 353c5.4 8 5.6 18.4 .4 26.5s-14.7 12.3-24.2 10.7C442.7 382.4 385.2 376 320 376c-65.6 0-123.4 6.5-169.3 14.4c-9.8 1.7-19.7-2.9-24.7-11.5s-4.3-19.4 1.9-27.2L197.3 265c4.6-5.7 11.4-9 18.7-9s14.2 3.3 18.7 9l26.4 33.1 87-127.6c4.5-6.6 11.9-10.5 19.8-10.5z\"]\n};\nconst faCommentMedical = {\n prefix: 'fas',\n iconName: 'comment-medical',\n icon: [512, 512, [], \"f7f5\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0s0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM224 160c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 48 48 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-48 0 0 48c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-48-48 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l48 0 0-48z\"]\n};\nconst faTeethOpen = {\n prefix: 'fas',\n iconName: 'teeth-open',\n icon: [576, 512, [], \"f62f\", \"M96 32C43 32 0 75 0 128l0 64c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-64c0-53-43-96-96-96L96 32zM224 96c26.5 0 48 21.5 48 48l0 56c0 13.3-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24l0-56c0-26.5 21.5-48 48-48zm80 48c0-26.5 21.5-48 48-48s48 21.5 48 48l0 56c0 13.3-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24l0-56zM96 128c26.5 0 48 21.5 48 48l0 24c0 13.3-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24l0-24c0-26.5 21.5-48 48-48zm336 48c0-26.5 21.5-48 48-48s48 21.5 48 48l0 24c0 13.3-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24l0-24zM96 480l384 0c53 0 96-43 96-96l0-32c0-35.3-28.7-64-64-64L64 288c-35.3 0-64 28.7-64 64l0 32c0 53 43 96 96 96zm0-64c-26.5 0-48-21.5-48-48l0-24c0-13.3 10.7-24 24-24l48 0c13.3 0 24 10.7 24 24l0 24c0 26.5-21.5 48-48 48zm80-48l0-24c0-13.3 10.7-24 24-24l48 0c13.3 0 24 10.7 24 24l0 24c0 26.5-21.5 48-48 48s-48-21.5-48-48zm176 48c-26.5 0-48-21.5-48-48l0-24c0-13.3 10.7-24 24-24l48 0c13.3 0 24 10.7 24 24l0 24c0 26.5-21.5 48-48 48zm80-48l0-24c0-13.3 10.7-24 24-24l48 0c13.3 0 24 10.7 24 24l0 24c0 26.5-21.5 48-48 48s-48-21.5-48-48z\"]\n};\nconst faFileCircleMinus = {\n prefix: 'fas',\n iconName: 'file-circle-minus',\n icon: [576, 512, [], \"e4ed\", \"M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zM288 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm224 0c0-8.8-7.2-16-16-16l-128 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l128 0c8.8 0 16-7.2 16-16z\"]\n};\nconst faTags = {\n prefix: 'fas',\n iconName: 'tags',\n icon: [512, 512, [], \"f02c\", \"M345 39.1L472.8 168.4c52.4 53 52.4 138.2 0 191.2L360.8 472.9c-9.3 9.4-24.5 9.5-33.9 .2s-9.5-24.5-.2-33.9L438.6 325.9c33.9-34.3 33.9-89.4 0-123.7L310.9 72.9c-9.3-9.4-9.2-24.6 .2-33.9s24.6-9.2 33.9 .2zM0 229.5L0 80C0 53.5 21.5 32 48 32l149.5 0c17 0 33.3 6.7 45.3 18.7l168 168c25 25 25 65.5 0 90.5L277.3 442.7c-25 25-65.5 25-90.5 0l-168-168C6.7 262.7 0 246.5 0 229.5zM144 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nconst faWineGlass = {\n prefix: 'fas',\n iconName: 'wine-glass',\n icon: [320, 512, [127863], \"f4e3\", \"M32.1 29.3C33.5 12.8 47.4 0 64 0L256 0c16.6 0 30.5 12.8 31.9 29.3l14 168.4c6 72-42.5 135.2-109.9 150.6l0 99.6 48 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-80 0-80 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l48 0 0-99.6C60.6 333 12.1 269.8 18.1 197.8l14-168.4zm56 98.7l143.8 0-5.3-64L93.4 64l-5.3 64z\"]\n};\nconst faForwardFast = {\n prefix: 'fas',\n iconName: 'forward-fast',\n icon: [512, 512, [9197, \"fast-forward\"], \"f050\", \"M18.4 445c11.2 5.3 24.5 3.6 34.1-4.4L224 297.7 224 416c0 12.4 7.2 23.7 18.4 29s24.5 3.6 34.1-4.4L448 297.7 448 416c0 17.7 14.3 32 32 32s32-14.3 32-32l0-320c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 118.3L276.5 71.4c-9.5-7.9-22.8-9.7-34.1-4.4S224 83.6 224 96l0 118.3L52.5 71.4c-9.5-7.9-22.8-9.7-34.1-4.4S0 83.6 0 96L0 416c0 12.4 7.2 23.7 18.4 29z\"]\n};\nconst faFastForward = faForwardFast;\nconst faFaceMehBlank = {\n prefix: 'fas',\n iconName: 'face-meh-blank',\n icon: [512, 512, [128566, \"meh-blank\"], \"f5a4\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm208.4-48a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm128 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faMehBlank = faFaceMehBlank;\nconst faSquareParking = {\n prefix: 'fas',\n iconName: 'square-parking',\n icon: [448, 512, [127359, \"parking\"], \"f540\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM192 256l48 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-48 0 0 64zm48 64l-48 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64 0-120c0-22.1 17.9-40 40-40l72 0c53 0 96 43 96 96s-43 96-96 96z\"]\n};\nconst faParking = faSquareParking;\nconst faHouseSignal = {\n prefix: 'fas',\n iconName: 'house-signal',\n icon: [576, 512, [], \"e012\", \"M357.7 8.5c-12.3-11.3-31.2-11.3-43.4 0l-208 192c-9.4 8.6-12.7 22-8.5 34c87.1 25.3 155.6 94.2 180.3 181.6L464 416c26.5 0 48-21.5 48-48l0-112 32 0c13.2 0 25-8.1 29.8-20.3s1.6-26.2-8.1-35.2l-208-192zM288 208c0-8.8 7.2-16 16-16l64 0c8.8 0 16 7.2 16 16l0 64c0 8.8-7.2 16-16 16l-64 0c-8.8 0-16-7.2-16-16l0-64zM24 256c-13.3 0-24 10.7-24 24s10.7 24 24 24c101.6 0 184 82.4 184 184c0 13.3 10.7 24 24 24s24-10.7 24-24c0-128.1-103.9-232-232-232zm8 256a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM0 376c0 13.3 10.7 24 24 24c48.6 0 88 39.4 88 88c0 13.3 10.7 24 24 24s24-10.7 24-24c0-75.1-60.9-136-136-136c-13.3 0-24 10.7-24 24z\"]\n};\nconst faBarsProgress = {\n prefix: 'fas',\n iconName: 'bars-progress',\n icon: [512, 512, [\"tasks-alt\"], \"f828\", \"M448 160l-128 0 0-32 128 0 0 32zM48 64C21.5 64 0 85.5 0 112l0 64c0 26.5 21.5 48 48 48l416 0c26.5 0 48-21.5 48-48l0-64c0-26.5-21.5-48-48-48L48 64zM448 352l0 32-256 0 0-32 256 0zM48 288c-26.5 0-48 21.5-48 48l0 64c0 26.5 21.5 48 48 48l416 0c26.5 0 48-21.5 48-48l0-64c0-26.5-21.5-48-48-48L48 288z\"]\n};\nconst faTasksAlt = faBarsProgress;\nconst faFaucetDrip = {\n prefix: 'fas',\n iconName: 'faucet-drip',\n icon: [512, 512, [128688], \"e006\", \"M224 0c17.7 0 32 14.3 32 32l0 12 96-12c17.7 0 32 14.3 32 32s-14.3 32-32 32L256 84l-31-3.9-1-.1-1 .1L192 84 96 96C78.3 96 64 81.7 64 64s14.3-32 32-32l96 12 0-12c0-17.7 14.3-32 32-32zM0 224c0-17.7 14.3-32 32-32l96 0 22.6-22.6c6-6 14.1-9.4 22.6-9.4l18.7 0 0-43.8 32-4 32 4 0 43.8 18.7 0c8.5 0 16.6 3.4 22.6 9.4L320 192l32 0c88.4 0 160 71.6 160 160c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32s-14.3-32-32-32l-36.1 0c-20.2 29-53.9 48-91.9 48s-71.7-19-91.9-48L32 320c-17.7 0-32-14.3-32-32l0-64zM436.8 423.4c1.9-4.5 6.3-7.4 11.2-7.4s9.2 2.9 11.2 7.4l18.2 42.4c1.8 4.1 2.7 8.6 2.7 13.1l0 1.2c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-1.2c0-4.5 .9-8.9 2.7-13.1l18.2-42.4z\"]\n};\nconst faCartFlatbed = {\n prefix: 'fas',\n iconName: 'cart-flatbed',\n icon: [640, 512, [\"dolly-flatbed\"], \"f474\", \"M32 0C14.3 0 0 14.3 0 32S14.3 64 32 64l16 0c8.8 0 16 7.2 16 16l0 288c0 44.2 35.8 80 80 80l18.7 0c-1.8 5-2.7 10.4-2.7 16c0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1-11-2.7-16l197.5 0c-1.8 5-2.7 10.4-2.7 16c0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1-11-2.7-16l66.7 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-464 0c-8.8 0-16-7.2-16-16l0-288C128 35.8 92.2 0 48 0L32 0zM192 80l0 192c0 26.5 21.5 48 48 48l320 0c26.5 0 48-21.5 48-48l0-192c0-26.5-21.5-48-48-48l-96 0 0 144c0 5.9-3.2 11.3-8.5 14.1s-11.5 2.5-16.4-.8L400 163.2l-39.1 26.1c-4.9 3.3-11.2 3.6-16.4 .8s-8.5-8.2-8.5-14.1l0-144-96 0c-26.5 0-48 21.5-48 48z\"]\n};\nconst faDollyFlatbed = faCartFlatbed;\nconst faBanSmoking = {\n prefix: 'fas',\n iconName: 'ban-smoking',\n icon: [512, 512, [128685, \"smoking-ban\"], \"f54d\", \"M99.5 144.8L178.7 224l96 96 92.5 92.5C335.9 434.9 297.5 448 256 448C150 448 64 362 64 256c0-41.5 13.1-79.9 35.5-111.2zM333.3 288l-32-32 82.7 0 0 32-50.7 0zm32 32l34.7 0c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-130.7 0L144.8 99.5C176.1 77.1 214.5 64 256 64c106 0 192 86 192 192c0 41.5-13.1 79.9-35.5 111.2L365.3 320zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM272 96c-8.8 0-16 7.2-16 16c0 26.5 21.5 48 48 48l32 0c8.8 0 16 7.2 16 16s7.2 16 16 16s16-7.2 16-16c0-26.5-21.5-48-48-48l-32 0c-8.8 0-16-7.2-16-16s-7.2-16-16-16zM229.5 320l-96-96L112 224c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16l117.5 0z\"]\n};\nconst faSmokingBan = faBanSmoking;\nconst faTerminal = {\n prefix: 'fas',\n iconName: 'terminal',\n icon: [576, 512, [], \"f120\", \"M9.4 86.6C-3.1 74.1-3.1 53.9 9.4 41.4s32.8-12.5 45.3 0l192 192c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L178.7 256 9.4 86.6zM256 416l288 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-288 0c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faMobileButton = {\n prefix: 'fas',\n iconName: 'mobile-button',\n icon: [384, 512, [], \"f10b\", \"M80 0C44.7 0 16 28.7 16 64l0 384c0 35.3 28.7 64 64 64l224 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64L80 0zM192 400a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faHouseMedicalFlag = {\n prefix: 'fas',\n iconName: 'house-medical-flag',\n icon: [640, 512, [], \"e514\", \"M480 0c17.7 0 32 14.3 32 32l112 0c8.8 0 16 7.2 16 16l0 128c0 8.8-7.2 16-16 16l-112 0 0 320-64 0 0-320 0-160c0-17.7 14.3-32 32-32zM276.8 39.7L416 159l0 353 1 0-.2 0L96 512c-17.7 0-32-14.3-32-32l0-192-32 0c-13.4 0-25.4-8.3-30-20.9s-1-26.7 9.2-35.4l224-192c12-10.3 29.7-10.3 41.7 0zM224 208l0 48-48 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l48 0 0 48c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-48 48 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-48 0 0-48c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16z\"]\n};\nconst faBasketShopping = {\n prefix: 'fas',\n iconName: 'basket-shopping',\n icon: [576, 512, [\"shopping-basket\"], \"f291\", \"M253.3 35.1c6.1-11.8 1.5-26.3-10.2-32.4s-26.3-1.5-32.4 10.2L117.6 192 32 192c-17.7 0-32 14.3-32 32s14.3 32 32 32L83.9 463.5C91 492 116.6 512 146 512L430 512c29.4 0 55-20 62.1-48.5L544 256c17.7 0 32-14.3 32-32s-14.3-32-32-32l-85.6 0L365.3 12.9C359.2 1.2 344.7-3.4 332.9 2.7s-16.3 20.6-10.2 32.4L404.3 192l-232.6 0L253.3 35.1zM192 304l0 96c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-96c0-8.8 7.2-16 16-16s16 7.2 16 16zm96-16c8.8 0 16 7.2 16 16l0 96c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-96c0-8.8 7.2-16 16-16zm128 16l0 96c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-96c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nconst faShoppingBasket = faBasketShopping;\nconst faTape = {\n prefix: 'fas',\n iconName: 'tape',\n icon: [576, 512, [], \"f4db\", \"M380.8 416c41.5-40.7 67.2-97.3 67.2-160C448 132.3 347.7 32 224 32S0 132.3 0 256S100.3 480 224 480l320 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-163.2 0zM224 160a96 96 0 1 1 0 192 96 96 0 1 1 0-192zm64 96a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nconst faBusSimple = {\n prefix: 'fas',\n iconName: 'bus-simple',\n icon: [448, 512, [\"bus-alt\"], \"f55e\", \"M224 0C348.8 0 448 35.2 448 80l0 16 0 320c0 17.7-14.3 32-32 32l0 32c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-32-192 0 0 32c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-32c-17.7 0-32-14.3-32-32L0 96 0 80C0 35.2 99.2 0 224 0zM64 128l0 128c0 17.7 14.3 32 32 32l256 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32L96 96c-17.7 0-32 14.3-32 32zM80 400a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm288 0a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faBusAlt = faBusSimple;\nconst faEye = {\n prefix: 'fas',\n iconName: 'eye',\n icon: [576, 512, [128065], \"f06e\", \"M288 32c-80.8 0-145.5 36.8-192.6 80.6C48.6 156 17.3 208 2.5 243.7c-3.3 7.9-3.3 16.7 0 24.6C17.3 304 48.6 356 95.4 399.4C142.5 443.2 207.2 480 288 480s145.5-36.8 192.6-80.6c46.8-43.5 78.1-95.4 93-131.1c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C433.5 68.8 368.8 32 288 32zM144 256a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm144-64c0 35.3-28.7 64-64 64c-7.1 0-13.9-1.2-20.3-3.3c-5.5-1.8-11.9 1.6-11.7 7.4c.3 6.9 1.3 13.8 3.2 20.7c13.7 51.2 66.4 81.6 117.6 67.9s81.6-66.4 67.9-117.6c-11.1-41.5-47.8-69.4-88.6-71.1c-5.8-.2-9.2 6.1-7.4 11.7c2.1 6.4 3.3 13.2 3.3 20.3z\"]\n};\nconst faFaceSadCry = {\n prefix: 'fas',\n iconName: 'face-sad-cry',\n icon: [512, 512, [128557, \"sad-cry\"], \"f5b3\", \"M352 493.4c-29.6 12-62.1 18.6-96 18.6s-66.4-6.6-96-18.6L160 288c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 189.8C51.5 433.5 0 350.8 0 256C0 114.6 114.6 0 256 0S512 114.6 512 256c0 94.8-51.5 177.5-128 221.8L384 288c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 205.4zM195.2 233.6c5.3 7.1 15.3 8.5 22.4 3.2s8.5-15.3 3.2-22.4c-30.4-40.5-91.2-40.5-121.6 0c-5.3 7.1-3.9 17.1 3.2 22.4s17.1 3.9 22.4-3.2c17.6-23.5 52.8-23.5 70.4 0zm121.6 0c17.6-23.5 52.8-23.5 70.4 0c5.3 7.1 15.3 8.5 22.4 3.2s8.5-15.3 3.2-22.4c-30.4-40.5-91.2-40.5-121.6 0c-5.3 7.1-3.9 17.1 3.2 22.4s17.1 3.9 22.4-3.2zM208 336l0 32c0 26.5 21.5 48 48 48s48-21.5 48-48l0-32c0-26.5-21.5-48-48-48s-48 21.5-48 48z\"]\n};\nconst faSadCry = faFaceSadCry;\nconst faAudioDescription = {\n prefix: 'fas',\n iconName: 'audio-description',\n icon: [576, 512, [], \"f29e\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM213.5 173.3l72 144c5.9 11.9 1.1 26.3-10.7 32.2s-26.3 1.1-32.2-10.7l-9.4-18.9-82.2 0-9.4 18.9c-5.9 11.9-20.3 16.7-32.2 10.7s-16.7-20.3-10.7-32.2l72-144c4.1-8.1 12.4-13.3 21.5-13.3s17.4 5.1 21.5 13.3zm-.4 106.6L192 237.7l-21.1 42.2 42.2 0zM304 184c0-13.3 10.7-24 24-24l56 0c53 0 96 43 96 96s-43 96-96 96l-56 0c-13.3 0-24-10.7-24-24l0-144zm48 24l0 96 32 0c26.5 0 48-21.5 48-48s-21.5-48-48-48l-32 0z\"]\n};\nconst faPersonMilitaryToPerson = {\n prefix: 'fas',\n iconName: 'person-military-to-person',\n icon: [512, 512, [], \"e54c\", \"M71 12.5c-8.6 1-15 8.2-15 16.8c0 9.3 7.5 16.8 16.7 16.9l111.4 0c8.8-.1 15.9-7.2 15.9-16L200 16c0-9.5-8.3-17-17.8-15.9L71 12.5zM189.5 78.1l-122.9 0C64.9 83.8 64 89.8 64 96c0 35.3 28.7 64 64 64s64-28.7 64-64c0-6.2-.9-12.2-2.5-17.9zM32 256l0 32c0 17.7 14.3 32 32 32l128 0c1.8 0 3.5-.1 5.2-.4L53 208.6C40.1 220.3 32 237.2 32 256zm190.2 42.5c1.1-3.3 1.8-6.8 1.8-10.5l0-32c0-35.3-28.7-64-64-64l-64 0c-3.7 0-7.4 .3-10.9 .9L222.2 298.5zM384 160a64 64 0 1 0 0-128 64 64 0 1 0 0 128zm-32 32c-35.3 0-64 28.7-64 64l0 32c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-32c0-35.3-28.7-64-64-64l-64 0zM215.8 450.1c5.2-4.6 8.2-11.1 8.2-18.1s-3-13.5-8.2-18.1l-64-56c-7.1-6.2-17.1-7.7-25.7-3.8S112 366.6 112 376l0 32-88 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l88 0 0 32c0 9.4 5.5 18 14.1 21.9s18.6 2.4 25.7-3.8l64-56zM288 431.9c0 6.9 2.9 13.5 8.1 18.1l64 56.4c7.1 6.2 17.1 7.8 25.7 3.9s14.1-12.4 14.1-21.9l0-32.4 88 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-88 0 0-32c0-9.4-5.5-18-14.1-21.9s-18.6-2.4-25.7 3.8l-64 56c-5.2 4.5-8.2 11.1-8.2 18z\"]\n};\nconst faFileShield = {\n prefix: 'fas',\n iconName: 'file-shield',\n icon: [576, 512, [], \"e4f0\", \"M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 47-92.8 37.1c-21.3 8.5-35.2 29.1-35.2 52c0 56.6 18.9 148 94.2 208.3c-9 4.8-19.3 7.6-30.2 7.6L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zm39.1 97.7c5.7-2.3 12.1-2.3 17.8 0l120 48C570 277.4 576 286.2 576 296c0 63.3-25.9 168.8-134.8 214.2c-5.9 2.5-12.6 2.5-18.5 0C313.9 464.8 288 359.3 288 296c0-9.8 6-18.6 15.1-22.3l120-48zM527.4 312L432 273.8l0 187.8c68.2-33 91.5-99 95.4-149.7z\"]\n};\nconst faUserSlash = {\n prefix: 'fas',\n iconName: 'user-slash',\n icon: [640, 512, [], \"f506\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L353.3 251.6C407.9 237 448 187.2 448 128C448 57.3 390.7 0 320 0C250.2 0 193.5 55.8 192 125.2L38.8 5.1zM264.3 304.3C170.5 309.4 96 387.2 96 482.3c0 16.4 13.3 29.7 29.7 29.7l388.6 0c3.9 0 7.6-.7 11-2.1l-261-205.6z\"]\n};\nconst faPen = {\n prefix: 'fas',\n iconName: 'pen',\n icon: [512, 512, [128394], \"f304\", \"M362.7 19.3L314.3 67.7 444.3 197.7l48.4-48.4c25-25 25-65.5 0-90.5L453.3 19.3c-25-25-65.5-25-90.5 0zm-71 71L58.6 323.5c-10.4 10.4-18 23.3-22.2 37.4L1 481.2C-1.5 489.7 .8 498.8 7 505s15.3 8.5 23.7 6.1l120.3-35.4c14.1-4.2 27-11.8 37.4-22.2L421.7 220.3 291.7 90.3z\"]\n};\nconst faTowerObservation = {\n prefix: 'fas',\n iconName: 'tower-observation',\n icon: [512, 512, [], \"e586\", \"M241.7 3.4c9-4.5 19.6-4.5 28.6 0l160 80c15.8 7.9 22.2 27.1 14.3 42.9C439 137.5 427.7 144 416 144l0 80c0 17.7-14.3 32-32 32l-4.9 0 32 192 68.9 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-95.5 0c-.4 0-.8 0-1.1 0l-254.8 0c-.4 0-.8 0-1.1 0L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32l68.9 0 32-192-4.9 0c-17.7 0-32-14.3-32-32l0-80c-11.7 0-23-6.5-28.6-17.7c-7.9-15.8-1.5-35 14.3-42.9l160-80zM314.5 448L256 399.2 197.5 448l117 0zM197.8 256l-4.7 28.3L256 336.8l62.9-52.5L314.2 256l-116.5 0zm-13.9 83.2l-11.2 67L218.5 368l-34.6-28.8zM293.5 368l45.8 38.1-11.2-67L293.5 368zM176 128c-8.8 0-16 7.2-16 16s7.2 16 16 16l160 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-160 0z\"]\n};\nconst faFileCode = {\n prefix: 'fas',\n iconName: 'file-code',\n icon: [384, 512, [], \"f1c9\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM153 289l-31 31 31 31c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L71 337c-9.4-9.4-9.4-24.6 0-33.9l48-48c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9zM265 255l48 48c9.4 9.4 9.4 24.6 0 33.9l-48 48c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l31-31-31-31c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z\"]\n};\nconst faSignal = {\n prefix: 'fas',\n iconName: 'signal',\n icon: [640, 512, [128246, \"signal-5\", \"signal-perfect\"], \"f012\", \"M576 0c17.7 0 32 14.3 32 32l0 448c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-448c0-17.7 14.3-32 32-32zM448 96c17.7 0 32 14.3 32 32l0 352c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-352c0-17.7 14.3-32 32-32zM352 224l0 256c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-256c0-17.7 14.3-32 32-32s32 14.3 32 32zM192 288c17.7 0 32 14.3 32 32l0 160c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-160c0-17.7 14.3-32 32-32zM96 416l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nconst faSignal5 = faSignal;\nconst faSignalPerfect = faSignal;\nconst faBus = {\n prefix: 'fas',\n iconName: 'bus',\n icon: [576, 512, [128653], \"f207\", \"M288 0C422.4 0 512 35.2 512 80l0 16 0 32c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l0 160c0 17.7-14.3 32-32 32l0 32c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-32-192 0 0 32c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-32c-17.7 0-32-14.3-32-32l0-160c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32c0 0 0 0 0 0l0-32s0 0 0 0l0-16C64 35.2 153.6 0 288 0zM128 160l0 96c0 17.7 14.3 32 32 32l112 0 0-160-112 0c-17.7 0-32 14.3-32 32zM304 288l112 0c17.7 0 32-14.3 32-32l0-96c0-17.7-14.3-32-32-32l-112 0 0 160zM144 400a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm288 0a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM384 80c0-8.8-7.2-16-16-16L208 64c-8.8 0-16 7.2-16 16s7.2 16 16 16l160 0c8.8 0 16-7.2 16-16z\"]\n};\nconst faHeartCircleXmark = {\n prefix: 'fas',\n iconName: 'heart-circle-xmark',\n icon: [576, 512, [], \"e501\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6l0-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1l0 5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L454.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L432 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L409.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L432 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nconst faHouseChimney = {\n prefix: 'fas',\n iconName: 'house-chimney',\n icon: [576, 512, [63499, \"home-lg\"], \"e3af\", \"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L512 185l0-121c0-17.7-14.3-32-32-32l-32 0c-17.7 0-32 14.3-32 32l0 36.7L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1l32 0 0 69.7c-.1 .9-.1 1.8-.1 2.8l0 112c0 22.1 17.9 40 40 40l16 0c1.2 0 2.4-.1 3.6-.2c1.5 .1 3 .2 4.5 .2l31.9 0 24 0c22.1 0 40-17.9 40-40l0-24 0-64c0-17.7 14.3-32 32-32l64 0c17.7 0 32 14.3 32 32l0 64 0 24c0 22.1 17.9 40 40 40l24 0 32.5 0c1.4 0 2.8 0 4.2-.1c1.1 .1 2.2 .1 3.3 .1l16 0c22.1 0 40-17.9 40-40l0-16.2c.3-2.6 .5-5.3 .5-8.1l-.7-160.2 32 0z\"]\n};\nconst faHomeLg = faHouseChimney;\nconst faWindowMaximize = {\n prefix: 'fas',\n iconName: 'window-maximize',\n icon: [512, 512, [128470], \"f2d0\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM96 96l320 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L96 160c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faFaceFrown = {\n prefix: 'fas',\n iconName: 'face-frown',\n icon: [512, 512, [9785, \"frown\"], \"f119\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM159.3 388.7c-2.6 8.4-11.6 13.2-20 10.5s-13.2-11.6-10.5-20C145.2 326.1 196.3 288 256 288s110.8 38.1 127.3 91.3c2.6 8.4-2.1 17.4-10.5 20s-17.4-2.1-20-10.5C340.5 349.4 302.1 320 256 320s-84.5 29.4-96.7 68.7zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faFrown = faFaceFrown;\nconst faPrescription = {\n prefix: 'fas',\n iconName: 'prescription',\n icon: [448, 512, [], \"f5b1\", \"M32 0C14.3 0 0 14.3 0 32L0 192l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 50.7 0 128 128L137.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L288 397.3 393.4 502.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L333.3 352 438.6 246.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L288 306.7l-85.8-85.8C251.4 209.1 288 164.8 288 112C288 50.1 237.9 0 176 0L32 0zM176 160L64 160l0-96 112 0c26.5 0 48 21.5 48 48s-21.5 48-48 48z\"]\n};\nconst faShop = {\n prefix: 'fas',\n iconName: 'shop',\n icon: [640, 512, [\"store-alt\"], \"f54f\", \"M36.8 192l566.3 0c20.3 0 36.8-16.5 36.8-36.8c0-7.3-2.2-14.4-6.2-20.4L558.2 21.4C549.3 8 534.4 0 518.3 0L121.7 0c-16 0-31 8-39.9 21.4L6.2 134.7c-4 6.1-6.2 13.2-6.2 20.4C0 175.5 16.5 192 36.8 192zM64 224l0 160 0 80c0 26.5 21.5 48 48 48l224 0c26.5 0 48-21.5 48-48l0-80 0-160-64 0 0 160-192 0 0-160-64 0zm448 0l0 256c0 17.7 14.3 32 32 32s32-14.3 32-32l0-256-64 0z\"]\n};\nconst faStoreAlt = faShop;\nconst faFloppyDisk = {\n prefix: 'fas',\n iconName: 'floppy-disk',\n icon: [448, 512, [128190, 128426, \"save\"], \"f0c7\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-242.7c0-17-6.7-33.3-18.7-45.3L352 50.7C340 38.7 323.7 32 306.7 32L64 32zm0 96c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32L96 224c-17.7 0-32-14.3-32-32l0-64zM224 288a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nconst faSave = faFloppyDisk;\nconst faVihara = {\n prefix: 'fas',\n iconName: 'vihara',\n icon: [640, 512, [], \"f6a7\", \"M281 22L305.8 4.7c1.3-.9 2.7-1.8 4.1-2.4C313.1 .7 316.6 0 320 0s6.9 .7 10.1 2.2c1.4 .7 2.8 1.5 4.1 2.4L359 22C393 45.8 430.8 63.5 470.8 74.4l23 6.3c1.8 .5 3.6 1.1 5.2 2c3.2 1.7 5.9 4 8.1 6.8c3.8 4.9 5.6 11.3 4.7 17.8c-.4 2.8-1.2 5.4-2.5 7.8c-1.7 3.2-4 5.9-6.8 8.1c-4.3 3.2-9.6 5.1-15.1 4.9l-7.5 0 0 56.1 6.4 5.1 5.2 4.1c21.1 16.7 45 29.6 70.5 38.1l28.9 9.6c1.6 .5 3.2 1.2 4.6 2c3.1 1.7 5.8 4.1 7.8 6.9s3.5 6.1 4.1 9.6c.5 2.7 .6 5.5 .1 8.3s-1.4 5.4-2.7 7.8c-1.7 3.1-4.1 5.8-6.9 7.8s-6.1 3.5-9.6 4.1c-1.6 .3-3.3 .4-5 .4L544 288l0 65.9c20.5 22.8 47.4 39.2 77.4 46.7C632 403 640 412.6 640 424c0 13.3-10.7 24-24 24l-40 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-160 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-160 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-40 0c-13.3 0-24-10.7-24-24c0-11.4 8-21 18.6-23.4c30-7.6 56.9-23.9 77.4-46.7L96 288l-39.4 0c-1.7 0-3.4-.1-5-.4c-3.5-.7-6.8-2.1-9.6-4.1s-5.2-4.7-7-7.8c-1.3-2.4-2.3-5-2.7-7.8s-.4-5.6 .1-8.3c.7-3.5 2.1-6.8 4.1-9.6s4.7-5.2 7.8-6.9c1.4-.8 3-1.5 4.6-2l28.9-9.6c25.5-8.5 49.4-21.4 70.5-38.1l5.2-4.1 6.4-5.1 0-8.1 0-48-7.5 0c-5.5 .1-10.8-1.7-15.1-4.9c-2.8-2.1-5.1-4.8-6.8-8.1c-1.2-2.4-2.1-5-2.5-7.8c-.9-6.5 .9-12.8 4.7-17.8c2.1-2.8 4.8-5.1 8.1-6.8c1.6-.8 3.4-1.5 5.2-2l23-6.3C209.2 63.5 247 45.8 281 22zM416 128l-96 0-96 0 0 64 72 0 48 0 72 0 0-64zM160 288l0 64 136 0 24 0 24 0 136 0 0-64-136 0-24 0s0 0 0 0l-24 0-136 0z\"]\n};\nconst faScaleUnbalanced = {\n prefix: 'fas',\n iconName: 'scale-unbalanced',\n icon: [640, 512, [\"balance-scale-left\"], \"f515\", \"M522.1 62.4c16.8-5.6 25.8-23.7 20.2-40.5S518.6-3.9 501.9 1.6l-113 37.7C375 15.8 349.3 0 320 0c-44.2 0-80 35.8-80 80c0 3 .2 5.9 .5 8.8L117.9 129.6c-16.8 5.6-25.8 23.7-20.2 40.5s23.7 25.8 40.5 20.2l135.5-45.2c4.5 3.2 9.3 5.9 14.4 8.2L288 480c0 17.7 14.3 32 32 32l192 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-160 0 0-294.7c21-9.2 37.2-27 44.2-49l125.9-42zM439.6 288L512 163.8 584.4 288l-144.9 0zM512 384c62.9 0 115.2-34 126-78.9c2.6-11-1-22.3-6.7-32.1L536.1 109.8c-5-8.6-14.2-13.8-24.1-13.8s-19.1 5.3-24.1 13.8L392.7 273.1c-5.7 9.8-9.3 21.1-6.7 32.1C396.8 350 449.1 384 512 384zM129.2 291.8L201.6 416 56.7 416l72.4-124.2zM3.2 433.1C14 478 66.3 512 129.2 512s115.2-34 126-78.9c2.6-11-1-22.3-6.7-32.1L153.2 237.8c-5-8.6-14.2-13.8-24.1-13.8s-19.1 5.3-24.1 13.8L9.9 401.1c-5.7 9.8-9.3 21.1-6.7 32.1z\"]\n};\nconst faBalanceScaleLeft = faScaleUnbalanced;\nconst faSortUp = {\n prefix: 'fas',\n iconName: 'sort-up',\n icon: [320, 512, [\"sort-asc\"], \"f0de\", \"M182.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8l256 0c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-128-128z\"]\n};\nconst faSortAsc = faSortUp;\nconst faCommentDots = {\n prefix: 'fas',\n iconName: 'comment-dots',\n icon: [512, 512, [128172, 62075, \"commenting\"], \"f4ad\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0s0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM128 208a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 0a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm96 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nconst faCommenting = faCommentDots;\nconst faPlantWilt = {\n prefix: 'fas',\n iconName: 'plant-wilt',\n icon: [512, 512, [], \"e5aa\", \"M288 120c0-30.9 25.1-56 56-56s56 25.1 56 56l0 13c-29.3 10-48 34.5-48 70.1c0 27.9 25.3 74.8 66 111.6c3.8 3.5 8.9 5.3 14 5.3s10.2-1.8 14-5.3c40.7-36.8 66-83.7 66-111.6c0-35.6-18.7-60.2-48-70.1l0-13C464 53.7 410.3 0 344 0S224 53.7 224 120l0 21.8C207.3 133 188.2 128 168 128c-66.3 0-120 53.7-120 120l0 13c-29.3 10-48 34.5-48 70.1C0 359 25.3 405.9 66 442.7c3.8 3.5 8.9 5.3 14 5.3s10.2-1.8 14-5.3c40.7-36.8 66-83.7 66-111.6c0-35.6-18.7-60.2-48-70.1l0-13c0-30.9 25.1-56 56-56s56 25.1 56 56l0 32 0 200c0 17.7 14.3 32 32 32s32-14.3 32-32l0-200 0-32 0-128z\"]\n};\nconst faDiamond = {\n prefix: 'fas',\n iconName: 'diamond',\n icon: [512, 512, [9830], \"f219\", \"M284.3 11.7c-15.6-15.6-40.9-15.6-56.6 0l-216 216c-15.6 15.6-15.6 40.9 0 56.6l216 216c15.6 15.6 40.9 15.6 56.6 0l216-216c15.6-15.6 15.6-40.9 0-56.6l-216-216z\"]\n};\nconst faFaceGrinSquint = {\n prefix: 'fas',\n iconName: 'face-grin-squint',\n icon: [512, 512, [128518, \"grin-squint\"], \"f585\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zM133.5 146.7l89.9 47.9c10.7 5.7 10.7 21.1 0 26.8l-89.9 47.9c-7.9 4.2-17.5-1.5-17.5-10.5c0-2.8 1-5.5 2.8-7.6l36-43.2-36-43.2c-1.8-2.1-2.8-4.8-2.8-7.6c0-9 9.6-14.7 17.5-10.5zM396 157.1c0 2.8-1 5.5-2.8 7.6l-36 43.2 36 43.2c1.8 2.1 2.8 4.8 2.8 7.6c0 9-9.6 14.7-17.5 10.5l-89.9-47.9c-10.7-5.7-10.7-21.1 0-26.8l89.9-47.9c7.9-4.2 17.5 1.5 17.5 10.5z\"]\n};\nconst faGrinSquint = faFaceGrinSquint;\nconst faHandHoldingDollar = {\n prefix: 'fas',\n iconName: 'hand-holding-dollar',\n icon: [576, 512, [\"hand-holding-usd\"], \"f4c0\", \"M312 24l0 10.5c6.4 1.2 12.6 2.7 18.2 4.2c12.8 3.4 20.4 16.6 17 29.4s-16.6 20.4-29.4 17c-10.9-2.9-21.1-4.9-30.2-5c-7.3-.1-14.7 1.7-19.4 4.4c-2.1 1.3-3.1 2.4-3.5 3c-.3 .5-.7 1.2-.7 2.8c0 .3 0 .5 0 .6c.2 .2 .9 1.2 3.3 2.6c5.8 3.5 14.4 6.2 27.4 10.1l.9 .3s0 0 0 0c11.1 3.3 25.9 7.8 37.9 15.3c13.7 8.6 26.1 22.9 26.4 44.9c.3 22.5-11.4 38.9-26.7 48.5c-6.7 4.1-13.9 7-21.3 8.8l0 10.6c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-11.4c-9.5-2.3-18.2-5.3-25.6-7.8c-2.1-.7-4.1-1.4-6-2c-12.6-4.2-19.4-17.8-15.2-30.4s17.8-19.4 30.4-15.2c2.6 .9 5 1.7 7.3 2.5c13.6 4.6 23.4 7.9 33.9 8.3c8 .3 15.1-1.6 19.2-4.1c1.9-1.2 2.8-2.2 3.2-2.9c.4-.6 .9-1.8 .8-4.1l0-.2c0-1 0-2.1-4-4.6c-5.7-3.6-14.3-6.4-27.1-10.3l-1.9-.6c-10.8-3.2-25-7.5-36.4-14.4c-13.5-8.1-26.5-22-26.6-44.1c-.1-22.9 12.9-38.6 27.7-47.4c6.4-3.8 13.3-6.4 20.2-8.2L264 24c0-13.3 10.7-24 24-24s24 10.7 24 24zM568.2 336.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 485.5c-23.4 17.2-51.6 26.5-80.7 26.5L192 512 32 512c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l36.8 0 44.9-36c22.7-18.2 50.9-28 80-28l78.3 0 16 0 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0-16 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l120.6 0 119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 384c0 0 0 0 0 0l-.9 0c.3 0 .6 0 .9 0z\"]\n};\nconst faHandHoldingUsd = faHandHoldingDollar;\nconst faBacterium = {\n prefix: 'fas',\n iconName: 'bacterium',\n icon: [512, 512, [], \"e05a\", \"M423.1 30.6c3.6-12.7-3.7-26-16.5-29.7s-26 3.7-29.7 16.5l-4.2 14.7c-9.8-.4-19.9 .5-29.9 2.8c-12.1 2.8-23.7 5.9-34.9 9.4l-5.9-13.7c-5.2-12.2-19.3-17.8-31.5-12.6s-17.8 19.3-12.6 31.5l4.9 11.3c-22 9.4-42 20.1-60.2 31.8L196 82.7c-7.4-11-22.3-14-33.3-6.7s-14 22.3-6.7 33.3l7.8 11.6c-18 15-33.7 30.8-47.3 47.1L103 157.3c-10.4-8.3-25.5-6.6-33.7 3.7s-6.6 25.5 3.7 33.7l15 12c-2.1 3.2-4.1 6.5-6 9.7c-9.4 15.7-17 31-23.2 45.3l-9.9-3.9c-12.3-4.9-26.3 1.1-31.2 13.4s1.1 26.3 13.4 31.2l11.6 4.6c-.3 1.1-.6 2.1-.9 3.1c-3.5 12.5-5.7 23.2-7.1 31.3c-.7 4.1-1.2 7.5-1.6 10.3c-.2 1.4-.3 2.6-.4 3.6l-.1 1.4-.1 .6 0 .3 0 .1c0 0 0 .1 39.2 3.7c0 0 0 0 0 0l-39.2-3.6c-.5 5-.6 10-.4 14.9l-14.7 4.2C4.7 380.6-2.7 393.8 .9 406.6s16.9 20.1 29.7 16.5l13.8-3.9c10.6 20.7 27.6 37.8 48.5 48.5l-3.9 13.7c-3.6 12.7 3.7 26 16.5 29.7s26-3.7 29.7-16.5l4.2-14.7c23.8 1 46.3-5.5 65.1-17.6L215 473c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-10.6-10.6c9.1-14.1 15.1-30.5 17-48.3l.1-.8c.3-1.7 1-5.1 2.3-9.8l.2-.8 12.6 5.4c12.2 5.2 26.3-.4 31.5-12.6s-.4-26.3-12.6-31.5l-11.3-4.8c9.9-14.9 24.9-31.6 48.6-46l2.1 7.5c3.6 12.7 16.9 20.1 29.7 16.5s20.1-16.9 16.5-29.7L371 259.2c6.9-2.2 14.3-4.3 22.2-6.1c12.9-3 24.7-8 35.2-14.8L439 249c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-10.6-10.6c12.2-19 18.6-41.6 17.6-65.1l14.7-4.2c12.7-3.6 20.1-16.9 16.5-29.7s-16.9-20.1-29.7-16.5l-13.7 3.9c-10.8-21.2-28-38-48.5-48.5l3.9-13.8zM92.1 363.3s0 0 0 0L144 368l-51.9-4.7zM112 320a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM240 184a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faHandPointer = {\n prefix: 'fas',\n iconName: 'hand-pointer',\n icon: [448, 512, [], \"f25a\", \"M128 40c0-22.1 17.9-40 40-40s40 17.9 40 40l0 148.2c8.5-7.6 19.7-12.2 32-12.2c20.6 0 38.2 13 45 31.2c8.8-9.3 21.2-15.2 35-15.2c25.3 0 46 19.5 47.9 44.3c8.5-7.7 19.8-12.3 32.1-12.3c26.5 0 48 21.5 48 48l0 48 0 16 0 48c0 70.7-57.3 128-128 128l-16 0-64 0-.1 0-5.2 0c-5 0-9.9-.3-14.7-1c-55.3-5.6-106.2-34-140-79L8 336c-13.3-17.7-9.7-42.7 8-56s42.7-9.7 56 8l56 74.7L128 40zM240 304c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 96c0 8.8 7.2 16 16 16s16-7.2 16-16l0-96zm48-16c-8.8 0-16 7.2-16 16l0 96c0 8.8 7.2 16 16 16s16-7.2 16-16l0-96c0-8.8-7.2-16-16-16zm80 16c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 96c0 8.8 7.2 16 16 16s16-7.2 16-16l0-96z\"]\n};\nconst faDrumSteelpan = {\n prefix: 'fas',\n iconName: 'drum-steelpan',\n icon: [576, 512, [], \"f56a\", \"M288 32c159.1 0 288 48 288 128l0 192c0 80-128.9 128-288 128S0 432 0 352L0 160C0 80 128.9 32 288 32zM528 160c0-9.9-8-29.9-55-49.8c-18.6-7.9-40.9-14.4-66-19.4l-27.8 43.6c-7.3 11.5-11.2 24.8-11.2 38.4c0 17.5 6.4 34.4 18.1 47.5l9.8 11c29.8-5.2 55.9-12.5 77.2-21.5c47.1-19.9 55-39.9 55-49.8zM349.2 237.3c-8-26.2-32.4-45.3-61.2-45.3s-53.3 19.1-61.2 45.3c19.4 1.7 39.9 2.7 61.2 2.7s41.8-.9 61.2-2.7zM169 90.8c-25.2 5-47.4 11.6-66 19.4C56 130.1 48 150.1 48 160s8 29.9 55 49.8c21.3 9 47.4 16.3 77.2 21.5l9.8-11c11.6-13.1 18.1-30 18.1-47.5c0-13.6-3.9-26.9-11.2-38.4L169 90.8zm56.3-8C224.5 87 224 91.5 224 96c0 35.3 28.7 64 64 64s64-28.7 64-64c0-4.5-.5-9-1.4-13.2C330.8 81 309.8 80 288 80s-42.8 1-62.6 2.8z\"]\n};\nconst faHandScissors = {\n prefix: 'fas',\n iconName: 'hand-scissors',\n icon: [512, 512, [], \"f257\", \"M40 208c-22.1 0-40 17.9-40 40s17.9 40 40 40l180.2 0c-7.6 8.5-12.2 19.7-12.2 32c0 25.3 19.5 46 44.3 47.9c-7.7 8.5-12.3 19.8-12.3 32.1c0 26.5 21.5 48 48 48l32 0 64 0c70.7 0 128-57.3 128-128l0-113.1c0-40.2-16-78.8-44.4-107.3C444.8 76.8 413.9 64 381.7 64L336 64c-21.3 0-39.3 13.9-45.6 33.1l74.5 23.7c8.4 2.7 13.1 11.7 10.4 20.1s-11.7 13.1-20.1 10.4L288 129.9c0 0 0 .1 0 .1L84 65.8C62.9 59.2 40.5 70.9 33.8 92s5.1 43.5 26.2 50.2L269.5 208 40 208z\"]\n};\nconst faHandsPraying = {\n prefix: 'fas',\n iconName: 'hands-praying',\n icon: [640, 512, [\"praying-hands\"], \"f684\", \"M351.2 4.8c3.2-2 6.6-3.3 10-4.1c4.7-1 9.6-.9 14.1 .1c7.7 1.8 14.8 6.5 19.4 13.6L514.6 194.2c8.8 13.1 13.4 28.6 13.4 44.4l0 73.5c0 6.9 4.4 13 10.9 15.2l79.2 26.4C631.2 358 640 370.2 640 384l0 96c0 9.9-4.6 19.3-12.5 25.4s-18.1 8.1-27.7 5.5L431 465.9c-56-14.9-95-65.7-95-123.7L336 224c0-17.7 14.3-32 32-32s32 14.3 32 32l0 80c0 8.8 7.2 16 16 16s16-7.2 16-16l0-84.9c0-7-1.8-13.8-5.3-19.8L340.3 48.1c-1.7-3-2.9-6.1-3.6-9.3c-1-4.7-1-9.6 .1-14.1c1.9-8 6.8-15.2 14.3-19.9zm-62.4 0c7.5 4.6 12.4 11.9 14.3 19.9c1.1 4.6 1.2 9.4 .1 14.1c-.7 3.2-1.9 6.3-3.6 9.3L213.3 199.3c-3.5 6-5.3 12.9-5.3 19.8l0 84.9c0 8.8 7.2 16 16 16s16-7.2 16-16l0-80c0-17.7 14.3-32 32-32s32 14.3 32 32l0 118.2c0 58-39 108.7-95 123.7l-168.7 45c-9.6 2.6-19.9 .5-27.7-5.5S0 490 0 480l0-96c0-13.8 8.8-26 21.9-30.4l79.2-26.4c6.5-2.2 10.9-8.3 10.9-15.2l0-73.5c0-15.8 4.7-31.2 13.4-44.4L245.2 14.5c4.6-7.1 11.7-11.8 19.4-13.6c4.6-1.1 9.4-1.2 14.1-.1c3.5 .8 6.9 2.1 10 4.1z\"]\n};\nconst faPrayingHands = faHandsPraying;\nconst faArrowRotateRight = {\n prefix: 'fas',\n iconName: 'arrow-rotate-right',\n icon: [512, 512, [8635, \"arrow-right-rotate\", \"arrow-rotate-forward\", \"redo\"], \"f01e\", \"M386.3 160L336 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 51.2L414.4 97.6c-87.5-87.5-229.3-87.5-316.8 0s-87.5 229.3 0 316.8s229.3 87.5 316.8 0c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-62.5 62.5-163.8 62.5-226.3 0s-62.5-163.8 0-226.3s163.8-62.5 226.3 0L386.3 160z\"]\n};\nconst faArrowRightRotate = faArrowRotateRight;\nconst faArrowRotateForward = faArrowRotateRight;\nconst faRedo = faArrowRotateRight;\nconst faWebAwesome = {\n prefix: 'fas',\n iconName: 'web-awesome',\n icon: [640, 512, [], \"e682\", \"M372.2 52c0 20.9-12.4 39-30.2 47.2L448 192l104.4-20.9c-5.3-7.7-8.4-17.1-8.4-27.1c0-26.5 21.5-48 48-48s48 21.5 48 48c0 26-20.6 47.1-46.4 48L481 442.3c-10.3 23-33.2 37.7-58.4 37.7l-205.2 0c-25.2 0-48-14.8-58.4-37.7L46.4 192C20.6 191.1 0 170 0 144c0-26.5 21.5-48 48-48s48 21.5 48 48c0 10.1-3.1 19.4-8.4 27.1L192 192 298.1 99.1c-17.7-8.3-30-26.3-30-47.1c0-28.7 23.3-52 52-52s52 23.3 52 52z\"]\n};\nconst faBiohazard = {\n prefix: 'fas',\n iconName: 'biohazard',\n icon: [576, 512, [9763], \"f780\", \"M173.2 0c-1.8 0-3.5 .7-4.8 2C138.5 32.3 120 74 120 120c0 26.2 6 50.9 16.6 73c-22 2.4-43.8 9.1-64.2 20.5C37.9 232.8 13.3 262.4 .4 296c-.7 1.7-.5 3.7 .5 5.2c2.2 3.7 7.4 4.3 10.6 1.3C64.2 254.3 158 245.1 205 324s-8.1 153.1-77.6 173.2c-4.2 1.2-6.3 5.9-4.1 9.6c1 1.6 2.6 2.7 4.5 3c36.5 5.9 75.2 .1 109.7-19.2c20.4-11.4 37.4-26.5 50.5-43.8c13.1 17.3 30.1 32.4 50.5 43.8c34.5 19.3 73.3 25.2 109.7 19.2c1.9-.3 3.5-1.4 4.5-3c2.2-3.7 .1-8.4-4.1-9.6C379.1 477.1 324 403 371 324s140.7-69.8 193.5-21.4c3.2 2.9 8.4 2.3 10.6-1.3c1-1.6 1.1-3.5 .5-5.2c-12.9-33.6-37.5-63.2-72.1-82.5c-20.4-11.4-42.2-18.1-64.2-20.5C450 170.9 456 146.2 456 120c0-46-18.5-87.7-48.4-118c-1.3-1.3-3-2-4.8-2c-5 0-8.4 5.2-6.7 9.9C421.7 80.5 385.6 176 288 176S154.3 80.5 179.9 9.9c1.7-4.7-1.6-9.9-6.7-9.9zM240 272a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM181.7 417.6c6.3-11.8 9.8-25.1 8.6-39.8c-19.5-18-34-41.4-41.2-67.8c-12.5-8.1-26.2-11.8-40-12.4c-9-.4-18.1 .6-27.1 2.7c7.8 57.1 38.7 106.8 82.9 139.4c6.8-6.7 12.6-14.1 16.8-22.1zM288 64c-28.8 0-56.3 5.9-81.2 16.5c2 8.3 5 16.2 9 23.5c6.8 12.4 16.7 23.1 30.1 30.3c13.3-4.1 27.5-6.3 42.2-6.3s28.8 2.2 42.2 6.3c13.4-7.2 23.3-17.9 30.1-30.3c4-7.3 7-15.2 9-23.5C344.3 69.9 316.8 64 288 64zM426.9 310c-7.2 26.4-21.7 49.7-41.2 67.8c-1.2 14.7 2.2 28.1 8.6 39.8c4.3 8 10 15.4 16.8 22.1c44.3-32.6 75.2-82.3 82.9-139.4c-9-2.2-18.1-3.1-27.1-2.7c-13.8 .6-27.5 4.4-40 12.4z\"]\n};\nconst faLocationCrosshairs = {\n prefix: 'fas',\n iconName: 'location-crosshairs',\n icon: [512, 512, [\"location\"], \"f601\", \"M256 0c17.7 0 32 14.3 32 32l0 34.7C368.4 80.1 431.9 143.6 445.3 224l34.7 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-34.7 0C431.9 368.4 368.4 431.9 288 445.3l0 34.7c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-34.7C143.6 431.9 80.1 368.4 66.7 288L32 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l34.7 0C80.1 143.6 143.6 80.1 224 66.7L224 32c0-17.7 14.3-32 32-32zM128 256a128 128 0 1 0 256 0 128 128 0 1 0 -256 0zm128-80a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nconst faLocation = faLocationCrosshairs;\nconst faMarsDouble = {\n prefix: 'fas',\n iconName: 'mars-double',\n icon: [640, 512, [9891], \"f227\", \"M312 32c-9.7 0-18.5 5.8-22.2 14.8s-1.7 19.3 5.2 26.2l33.4 33.4L275.8 159c-28.4-19.5-62.7-31-99.8-31C78.8 128 0 206.8 0 304s78.8 176 176 176s176-78.8 176-176c0-37-11.4-71.4-31-99.8l52.6-52.6L407 185c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2l0-112c0-13.3-10.7-24-24-24L312 32zm88 48s0 0 0 0s0 0 0 0s0 0 0 0zM64 304a112 112 0 1 1 224 0A112 112 0 1 1 64 304zM368 480c97.2 0 176-78.8 176-176c0-37-11.4-71.4-31-99.8l52.6-52.6L599 185c6.9 6.9 17.2 8.9 26.2 5.2s14.8-12.5 14.8-22.2l0-112c0-13.3-10.7-24-24-24L504 32c-9.7 0-18.5 5.8-22.2 14.8c-1.2 2.9-1.8 6-1.8 9l0 .2 0 .2c0 6.2 2.5 12.2 7 16.8l33.4 33.4L480 146.7l0 21.3c0 22.6-13.6 43.1-34.6 51.7c-.8 .3-1.7 .7-2.5 1C465.7 241.2 480 270.9 480 304c0 61.9-50.1 112-112 112c-5.4 0-10.8-.4-16-1.1c-12.9 20.4-29.1 38.3-48.1 53.1c19.8 7.8 41.4 12 64 12z\"]\n};\nconst faChildDress = {\n prefix: 'fas',\n iconName: 'child-dress',\n icon: [320, 512, [], \"e59c\", \"M224 64A64 64 0 1 0 96 64a64 64 0 1 0 128 0zM88 400l0 80c0 17.7 14.3 32 32 32s32-14.3 32-32l0-80 16 0 0 80c0 17.7 14.3 32 32 32s32-14.3 32-32l0-80 17.8 0c10.9 0 18.6-10.7 15.2-21.1l-31.1-93.4 28.6 37.8c10.7 14.1 30.8 16.8 44.8 6.2s16.8-30.7 6.2-44.8L254.6 207c-22.4-29.6-57.5-47-94.6-47s-72.2 17.4-94.6 47L6.5 284.7c-10.7 14.1-7.9 34.2 6.2 44.8s34.2 7.9 44.8-6.2l28.7-37.8L55 378.9C51.6 389.3 59.3 400 70.2 400L88 400z\"]\n};\nconst faUsersBetweenLines = {\n prefix: 'fas',\n iconName: 'users-between-lines',\n icon: [640, 512, [], \"e591\", \"M0 24C0 10.7 10.7 0 24 0L616 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L24 48C10.7 48 0 37.3 0 24zM0 488c0-13.3 10.7-24 24-24l592 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L24 512c-13.3 0-24-10.7-24-24zM83.2 160a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM32 320c0-35.3 28.7-64 64-64l96 0c12.2 0 23.7 3.4 33.4 9.4c-37.2 15.1-65.6 47.2-75.8 86.6L64 352c-17.7 0-32-14.3-32-32zm461.6 32c-10.3-40.1-39.6-72.6-77.7-87.4c9.4-5.5 20.4-8.6 32.1-8.6l96 0c35.3 0 64 28.7 64 64c0 17.7-14.3 32-32 32l-82.4 0zM391.2 290.4c32.1 7.4 58.1 30.9 68.9 61.6c3.5 10 5.5 20.8 5.5 32c0 17.7-14.3 32-32 32l-224 0c-17.7 0-32-14.3-32-32c0-11.2 1.9-22 5.5-32c10.5-29.7 35.3-52.8 66.1-60.9c7.8-2.1 16-3.1 24.5-3.1l96 0c7.4 0 14.7 .8 21.6 2.4zm44-130.4a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM321.6 96a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nconst faLungsVirus = {\n prefix: 'fas',\n iconName: 'lungs-virus',\n icon: [640, 512, [], \"e067\", \"M320 0c17.7 0 32 14.3 32 32l0 124.2c-8.5-7.6-19.7-12.2-32-12.2s-23.5 4.6-32 12.2L288 32c0-17.7 14.3-32 32-32zM444.5 195.5c-16.4-16.4-41.8-18.5-60.5-6.1l0-24.1C384 127 415 96 453.3 96c21.7 0 42.8 10.2 55.8 28.8c15.4 22.1 44.3 65.4 71 116.9c26.5 50.9 52.4 112.5 59.6 170.3c.2 1.3 .2 2.6 .2 4l0 7c0 49.1-39.8 89-89 89c-7.3 0-14.5-.9-21.6-2.7l-72.7-18.2c-20.9-5.2-38.7-17.1-51.5-32.9c14 1.5 28.5-3 39.2-13.8l-22.6-22.6 22.6 22.6c18.7-18.7 18.7-49.1 0-67.9c-1.1-1.1-1.4-2-1.5-2.5c-.1-.8-.1-1.8 .4-2.9s1.2-1.9 1.8-2.3c.5-.3 1.3-.8 2.9-.8c26.5 0 48-21.5 48-48s-21.5-48-48-48c-1.6 0-2.4-.4-2.9-.8c-.6-.4-1.3-1.2-1.8-2.3s-.5-2.2-.4-2.9c.1-.6 .4-1.4 1.5-2.5c18.7-18.7 18.7-49.1 0-67.9zM421.8 421.8c-6.2 6.2-16.4 6.2-22.6 0C375.9 398.5 336 415 336 448c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-33-39.9-49.5-63.2-26.2c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6C241.5 375.9 225 336 192 336c-8.8 0-16-7.2-16-16s7.2-16 16-16c33 0 49.5-39.9 26.2-63.2c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0C264.1 241.5 304 225 304 192c0-8.8 7.2-16 16-16s16 7.2 16 16c0 33 39.9 49.5 63.2 26.2c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6C398.5 264.1 415 304 448 304c8.8 0 16 7.2 16 16s-7.2 16-16 16c-33 0-49.5 39.9-26.2 63.2c6.2 6.2 6.2 16.4 0 22.6zM183.3 491.2l-72.7 18.2c-7.1 1.8-14.3 2.7-21.6 2.7c-49.1 0-89-39.8-89-89l0-7c0-1.3 .1-2.7 .2-4c7.2-57.9 33.1-119.4 59.6-170.3c26.8-51.5 55.6-94.8 71-116.9c13-18.6 34-28.8 55.8-28.8C225 96 256 127 256 165.3l0 24.1c-18.6-12.4-44-10.3-60.5 6.1c-18.7 18.7-18.7 49.1 0 67.9c1.1 1.1 1.4 2 1.5 2.5c.1 .8 .1 1.8-.4 2.9s-1.2 1.9-1.8 2.3c-.5 .3-1.3 .8-2.9 .8c-26.5 0-48 21.5-48 48s21.5 48 48 48c1.6 0 2.4 .4 2.9 .8c.6 .4 1.3 1.2 1.8 2.3s.5 2.2 .4 2.9c-.1 .6-.4 1.4-1.5 2.5c-18.7 18.7-18.7 49.1 0 67.9c10.7 10.7 25.3 15.3 39.2 13.8c-12.8 15.9-30.6 27.7-51.5 32.9zM296 320a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm72 32a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nconst faFaceGrinTears = {\n prefix: 'fas',\n iconName: 'face-grin-tears',\n icon: [640, 512, [128514, \"grin-tears\"], \"f588\", \"M548.6 371.4C506.4 454.8 419.9 512 320 512s-186.4-57.2-228.6-140.6c4.5-2.9 8.7-6.3 12.7-10.3c8.1-8.1 13.2-18.6 16.5-26.6c3.6-8.8 6.5-18.4 8.8-27.5c4.6-18.2 7.7-37 9.3-48.2c3.9-26.5-18.8-49.2-45.2-45.4c-6.8 .9-16.2 2.4-26.6 4.4C85.3 94.5 191.6 0 320 0S554.7 94.5 573.2 217.7c-10.3-2-19.8-3.5-26.6-4.4c-26.5-3.9-49.2 18.8-45.2 45.4c1.6 11.3 4.6 30 9.3 48.2c2.3 9.1 5.2 18.8 8.8 27.5c3.3 8.1 8.4 18.5 16.5 26.6c3.9 3.9 8.2 7.4 12.7 10.3zM107 254.1c-3.1 21.5-11.4 70.2-25.5 84.4c-.9 1-1.9 1.8-2.9 2.7C60 356.7 32 355.5 14.3 337.7c-18.7-18.7-19.1-48.8-.7-67.2c8.6-8.6 30.1-15.1 50.5-19.6c13-2.8 25.5-4.8 33.9-6c5.4-.8 9.9 3.7 9 9zm454.5 87.1c-.8-.6-1.5-1.3-2.3-2c-.2-.2-.5-.4-.7-.7c-14.1-14.1-22.5-62.9-25.5-84.4c-.8-5.4 3.7-9.9 9-9c1 .1 2.2 .3 3.3 .5c8.2 1.2 19.2 3 30.6 5.5c20.4 4.4 41.9 10.9 50.5 19.6c18.4 18.4 18 48.5-.7 67.2c-17.7 17.7-45.7 19-64.2 3.4zm-90.1-9.7c5-11.8-7-22.5-19.3-18.7c-39.7 12.2-84.5 19-131.8 19s-92.1-6.8-131.8-19c-12.3-3.8-24.3 6.9-19.3 18.7c25 59.1 83.2 100.5 151.1 100.5s126.2-41.4 151.1-100.5zM281.6 228.8s0 0 0 0s0 0 0 0s0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C190.7 188.4 184 206.1 184 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8c0 0 0 0 0 0s0 0 0 0c0 0 0 0 0 0l.2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2c0 0 0 0 0 0zm160 0s0 0 0 0s0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C350.7 188.4 344 206.1 344 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8c0 0 0 0 0 0s0 0 0 0c0 0 0 0 0 0l.2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2c0 0 0 0 0 0c0 0 0 0 0 0z\"]\n};\nconst faGrinTears = faFaceGrinTears;\nconst faPhone = {\n prefix: 'fas',\n iconName: 'phone',\n icon: [512, 512, [128222, 128379], \"f095\", \"M164.9 24.6c-7.7-18.6-28-28.5-47.4-23.2l-88 24C12.1 30.2 0 46 0 64C0 311.4 200.6 512 448 512c18 0 33.8-12.1 38.6-29.5l24-88c5.3-19.4-4.6-39.7-23.2-47.4l-96-40c-16.3-6.8-35.2-2.1-46.3 11.6L304.7 368C234.3 334.7 177.3 277.7 144 207.3L193.3 167c13.7-11.2 18.4-30 11.6-46.3l-40-96z\"]\n};\nconst faCalendarXmark = {\n prefix: 'fas',\n iconName: 'calendar-xmark',\n icon: [448, 512, [\"calendar-times\"], \"f273\", \"M128 0c17.7 0 32 14.3 32 32l0 32 128 0 0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32 48 0c26.5 0 48 21.5 48 48l0 48L0 160l0-48C0 85.5 21.5 64 48 64l48 0 0-32c0-17.7 14.3-32 32-32zM0 192l448 0 0 272c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 192zM305 305c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-47 47-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l47 47-47 47c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l47-47 47 47c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-47-47 47-47z\"]\n};\nconst faCalendarTimes = faCalendarXmark;\nconst faChildReaching = {\n prefix: 'fas',\n iconName: 'child-reaching',\n icon: [384, 512, [], \"e59d\", \"M256 64A64 64 0 1 0 128 64a64 64 0 1 0 128 0zM152.9 169.3c-23.7-8.4-44.5-24.3-58.8-45.8L74.6 94.2C64.8 79.5 45 75.6 30.2 85.4s-18.7 29.7-8.9 44.4L40.9 159c18.1 27.1 42.8 48.4 71.1 62.4L112 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96 32 0 0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-258.4c29.1-14.2 54.4-36.2 72.7-64.2l18.2-27.9c9.6-14.8 5.4-34.6-9.4-44.3s-34.6-5.5-44.3 9.4L291 122.4c-21.8 33.4-58.9 53.6-98.8 53.6c-12.6 0-24.9-2-36.6-5.8c-.9-.3-1.8-.7-2.7-.9z\"]\n};\nconst faHeadSideVirus = {\n prefix: 'fas',\n iconName: 'head-side-virus',\n icon: [512, 512, [], \"e064\", \"M0 224.2C0 100.6 100.2 0 224 0l24 0c95.2 0 181.2 69.3 197.3 160.2c2.3 13 6.8 25.7 15.1 36l42 52.6c6.2 7.8 9.6 17.4 9.6 27.4c0 24.2-19.6 43.8-43.8 43.8L448 320l0 64c0 35.3-28.7 64-64 64l-64 0 0 32c0 17.7-14.3 32-32 32L96 512c-17.7 0-32-14.3-32-32l0-72.7c0-16.7-6.9-32.5-17.1-45.8C16.6 322.4 0 274.1 0 224.2zM224 64c-8.8 0-16 7.2-16 16c0 33-39.9 49.5-63.2 26.2c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6C145.5 152.1 129 192 96 192c-8.8 0-16 7.2-16 16s7.2 16 16 16c33 0 49.5 39.9 26.2 63.2c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0C168.1 286.5 208 303 208 336c0 8.8 7.2 16 16 16s16-7.2 16-16c0-33 39.9-49.5 63.2-26.2c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6C302.5 263.9 319 224 352 224c8.8 0 16-7.2 16-16s-7.2-16-16-16c-33 0-49.5-39.9-26.2-63.2c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0C279.9 129.5 240 113 240 80c0-8.8-7.2-16-16-16zm-24 96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm40 80a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nconst faUserGear = {\n prefix: 'fas',\n iconName: 'user-gear',\n icon: [640, 512, [\"user-cog\"], \"f4fe\", \"M224 0a128 128 0 1 1 0 256A128 128 0 1 1 224 0zM178.3 304l91.4 0c11.8 0 23.4 1.2 34.5 3.3c-2.1 18.5 7.4 35.6 21.8 44.8c-16.6 10.6-26.7 31.6-20 53.3c4 12.9 9.4 25.5 16.4 37.6s15.2 23.1 24.4 33c15.7 16.9 39.6 18.4 57.2 8.7l0 .9c0 9.2 2.7 18.5 7.9 26.3L29.7 512C13.3 512 0 498.7 0 482.3C0 383.8 79.8 304 178.3 304zM436 218.2c0-7 4.5-13.3 11.3-14.8c10.5-2.4 21.5-3.7 32.7-3.7s22.2 1.3 32.7 3.7c6.8 1.5 11.3 7.8 11.3 14.8l0 30.6c7.9 3.4 15.4 7.7 22.3 12.8l24.9-14.3c6.1-3.5 13.7-2.7 18.5 2.4c7.6 8.1 14.3 17.2 20.1 27.2s10.3 20.4 13.5 31c2.1 6.7-1.1 13.7-7.2 17.2l-25 14.4c.4 4 .7 8.1 .7 12.3s-.2 8.2-.7 12.3l25 14.4c6.1 3.5 9.2 10.5 7.2 17.2c-3.3 10.6-7.8 21-13.5 31s-12.5 19.1-20.1 27.2c-4.8 5.1-12.5 5.9-18.5 2.4l-24.9-14.3c-6.9 5.1-14.3 9.4-22.3 12.8l0 30.6c0 7-4.5 13.3-11.3 14.8c-10.5 2.4-21.5 3.7-32.7 3.7s-22.2-1.3-32.7-3.7c-6.8-1.5-11.3-7.8-11.3-14.8l0-30.5c-8-3.4-15.6-7.7-22.5-12.9l-24.7 14.3c-6.1 3.5-13.7 2.7-18.5-2.4c-7.6-8.1-14.3-17.2-20.1-27.2s-10.3-20.4-13.5-31c-2.1-6.7 1.1-13.7 7.2-17.2l24.8-14.3c-.4-4.1-.7-8.2-.7-12.4s.2-8.3 .7-12.4L343.8 325c-6.1-3.5-9.2-10.5-7.2-17.2c3.3-10.6 7.7-21 13.5-31s12.5-19.1 20.1-27.2c4.8-5.1 12.4-5.9 18.5-2.4l24.8 14.3c6.9-5.1 14.5-9.4 22.5-12.9l0-30.5zm92.1 133.5a48.1 48.1 0 1 0 -96.1 0 48.1 48.1 0 1 0 96.1 0z\"]\n};\nconst faUserCog = faUserGear;\nconst faArrowUp19 = {\n prefix: 'fas',\n iconName: 'arrow-up-1-9',\n icon: [576, 512, [\"sort-numeric-up\"], \"f163\", \"M450.7 38c8.3 6 13.3 15.7 13.3 26l0 96 16 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-48 0-48 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l16 0 0-51.6-5.9 2c-16.8 5.6-34.9-3.5-40.5-20.2s3.5-34.9 20.2-40.5l48-16c9.8-3.3 20.5-1.6 28.8 4.4zM160 32c9 0 17.5 3.8 23.6 10.4l88 96c11.9 13 11.1 33.3-2 45.2s-33.3 11.1-45.2-2L192 146.3 192 448c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-301.7L95.6 181.6c-11.9 13-32.2 13.9-45.2 2s-13.9-32.2-2-45.2l88-96C142.5 35.8 151 32 160 32zM445.7 364.9A32 32 0 1 0 418.3 307a32 32 0 1 0 27.4 57.9zm-40.7 54.9C369.6 408.4 344 375.2 344 336c0-48.6 39.4-88 88-88s88 39.4 88 88c0 23.5-7.5 46.3-21.5 65.2L449.7 467c-10.5 14.2-30.6 17.2-44.8 6.7s-17.2-30.6-6.7-44.8l6.8-9.2z\"]\n};\nconst faSortNumericUp = faArrowUp19;\nconst faDoorClosed = {\n prefix: 'fas',\n iconName: 'door-closed',\n icon: [576, 512, [128682], \"f52a\", \"M96 64c0-35.3 28.7-64 64-64L416 0c35.3 0 64 28.7 64 64l0 384 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-112 0-288 0L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0L96 64zM384 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faShieldVirus = {\n prefix: 'fas',\n iconName: 'shield-virus',\n icon: [512, 512, [], \"e06c\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM256 112c8.8 0 16 7.2 16 16c0 33 39.9 49.5 63.2 26.2c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6C334.5 200.1 351 240 384 240c8.8 0 16 7.2 16 16s-7.2 16-16 16c-33 0-49.5 39.9-26.2 63.2c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0C311.9 334.5 272 351 272 384c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-33-39.9-49.5-63.2-26.2c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6C177.5 311.9 161 272 128 272c-8.8 0-16-7.2-16-16s7.2-16 16-16c33 0 49.5-39.9 26.2-63.2c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0C200.1 177.5 240 161 240 128c0-8.8 7.2-16 16-16zM232 256a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm72 32a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nconst faDiceSix = {\n prefix: 'fas',\n iconName: 'dice-six',\n icon: [448, 512, [9861], \"f526\", \"M0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zm160 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM128 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm32 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM320 192a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm32 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM320 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faMosquitoNet = {\n prefix: 'fas',\n iconName: 'mosquito-net',\n icon: [640, 512, [], \"e52c\", \"M168.8 462.3c-7.9-4-11.1-13.6-7.2-21.5L192 380.2l0-44.2c0-4.2 1.7-8.3 4.7-11.3L256 265.4l0-23.1L139.2 344C87.8 395.3 0 358.9 0 286.3c0-41.1 30.6-75.8 71.4-80.9l159.9-23.9-49.6-41.3c-5.1-4.2-7-11.1-4.9-17.4l13.9-41.7-29-58.1c-4-7.9-.7-17.5 7.2-21.5s17.5-.7 21.5 7.2l32 64c1.9 3.8 2.2 8.2 .9 12.2l-12.5 37.6L256 160.5l0-22.6c0-14.9 10.1-27.3 23.8-31l0-43.3c0-4.5 3.7-8.2 8.2-8.2s8.2 3.7 8.2 8.2l0 43.3c13.7 3.6 23.8 16.1 23.8 31l0 22.6 45.4-37.8L352.8 85.1c-1.3-4-1-8.4 .9-12.2l32-64c4-7.9 13.6-11.1 21.5-7.2s11.1 13.6 7.2 21.5l-29 58.1 13.9 41.7c2.1 6.2 .1 13.1-4.9 17.4l-49.6 41.3 159.9 23.9c22.5 2.8 41.8 14.6 54.7 31.4c-2.7 2.6-5.2 5.4-7.3 8.6c-8.6-12.9-23.3-21.5-40-21.5s-31.4 8.5-40 21.5c-8.6-12.9-23.3-21.5-40-21.5c-21.7 0-40 14.3-45.9 34.1c-10.7 3.2-19.8 10.1-25.9 19.2l-40.2-35 0 23.1 32.4 32.4c-.3 2-.4 4.1-.4 6.2c0 16.7 8.5 31.4 21.5 40c-4 2.6-7.5 5.9-10.6 9.5L320 310.6l0 50c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-50-32 32 0 41.4c0 2.5-.6 4.9-1.7 7.2l-32 64c-4 7.9-13.6 11.1-21.5 7.2zM512 256c8.8 0 16 7.2 16 16l0 16 48 0 0-16c0-8.8 7.2-16 16-16s16 7.2 16 16l0 16 16 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-16 0 0 48 16 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-16 0 0 48 16 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-16 0 0 16c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-16-48 0 0 16c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-16-48 0 0 16c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-16-16 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l16 0 0-48-16 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l16 0 0-48-16 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l16 0 0-16c0-8.8 7.2-16 16-16s16 7.2 16 16l0 16 48 0 0-16c0-8.8 7.2-16 16-16zm16 112l48 0 0-48-48 0 0 48zm0 80l48 0 0-48-48 0 0 48zM448 320l0 48 48 0 0-48-48 0zm0 80l0 48 48 0 0-48-48 0z\"]\n};\nconst faBridgeWater = {\n prefix: 'fas',\n iconName: 'bridge-water',\n icon: [576, 512, [], \"e4ce\", \"M0 96C0 78.3 14.3 64 32 64l512 0c17.7 0 32 14.3 32 32l0 35.6c0 15.7-12.7 28.4-28.4 28.4c-37.3 0-67.6 30.2-67.6 67.6l0 124.9c-12.9 0-25.8 3.9-36.8 11.7c-18 12.4-40.1 20.3-59.2 20.3c0 0 0 0 0 0l0-.5 0-128c0-53-43-96-96-96s-96 43-96 96l0 128 0 .5c-19 0-41.2-7.9-59.1-20.3c-11.1-7.8-24-11.7-36.9-11.7l0-124.9C96 190.2 65.8 160 28.4 160C12.7 160 0 147.3 0 131.6L0 96zM306.5 389.9C329 405.4 356.5 416 384 416c26.9 0 55.4-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 469.7 417 480 384 480c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 405.2 165.1 416 192 416c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nconst faPersonBooth = {\n prefix: 'fas',\n iconName: 'person-booth',\n icon: [576, 512, [], \"f756\", \"M256 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 160 64 0 0-160zm320 0c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-448zM224 512c17.7 0 32-14.3 32-32l0-160-64 0 0 160c0 17.7 14.3 32 32 32zM320 0c-9.3 0-18.1 4-24.2 11s-8.8 16.3-7.5 25.5l31.2 218.6L288.6 409.7c-3.5 17.3 7.8 34.2 25.1 37.7s34.2-7.8 37.7-25.1l.7-3.6c1.3 16.4 15.1 29.4 31.9 29.4c17.7 0 32-14.3 32-32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-384c0-17.7-14.3-32-32-32L320 0zM112 80A48 48 0 1 0 16 80a48 48 0 1 0 96 0zm0 261.3l0-72.1 4.7 4.7c9 9 21.2 14.1 33.9 14.1l73.4 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-66.7 0-41.6-41.6c-14.3-14.3-33.8-22.4-54-22.4C27.6 160 0 187.6 0 221.6l0 55.7 0 .9L0 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96 32 42.7L96 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-58.7c0-10.4-3.4-20.5-9.6-28.8L112 341.3z\"]\n};\nconst faTextWidth = {\n prefix: 'fas',\n iconName: 'text-width',\n icon: [448, 512, [], \"f035\", \"M64 128l0-32 128 0 0 128-16 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-16 0 0-128 128 0 0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-48c0-26.5-21.5-48-48-48L224 32 48 32C21.5 32 0 53.5 0 80l0 48c0 17.7 14.3 32 32 32s32-14.3 32-32zM9.4 361.4c-12.5 12.5-12.5 32.8 0 45.3l64 64c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6l0-32 192 0 0 32c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-9.2-9.2-22.9-11.9-34.9-6.9s-19.8 16.6-19.8 29.6l0 32-192 0 0-32c0-12.9-7.8-24.6-19.8-29.6s-25.7-2.2-34.9 6.9l-64 64z\"]\n};\nconst faHatWizard = {\n prefix: 'fas',\n iconName: 'hat-wizard',\n icon: [512, 512, [], \"f6e8\", \"M64 416L168.6 180.7c15.3-34.4 40.3-63.5 72-83.7l146.9-94c3-1.9 6.5-2.9 10-2.9C407.7 0 416 8.3 416 18.6l0 1.6c0 2.6-.5 5.1-1.4 7.5L354.8 176.9c-1.9 4.7-2.8 9.7-2.8 14.7c0 5.5 1.2 11 3.4 16.1L448 416l-207.1 0 11.8-35.4 40.4-13.5c6.5-2.2 10.9-8.3 10.9-15.2s-4.4-13-10.9-15.2l-40.4-13.5-13.5-40.4C237 276.4 230.9 272 224 272s-13 4.4-15.2 10.9l-13.5 40.4-40.4 13.5C148.4 339 144 345.1 144 352s4.4 13 10.9 15.2l40.4 13.5L207.1 416 64 416zM279.6 141.5c-1.1-3.3-4.1-5.5-7.6-5.5s-6.5 2.2-7.6 5.5l-6.7 20.2-20.2 6.7c-3.3 1.1-5.5 4.1-5.5 7.6s2.2 6.5 5.5 7.6l20.2 6.7 6.7 20.2c1.1 3.3 4.1 5.5 7.6 5.5s6.5-2.2 7.6-5.5l6.7-20.2 20.2-6.7c3.3-1.1 5.5-4.1 5.5-7.6s-2.2-6.5-5.5-7.6l-20.2-6.7-6.7-20.2zM32 448l448 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faPenFancy = {\n prefix: 'fas',\n iconName: 'pen-fancy',\n icon: [512, 512, [128395, 10002], \"f5ac\", \"M373.5 27.1C388.5 9.9 410.2 0 433 0c43.6 0 79 35.4 79 79c0 22.8-9.9 44.6-27.1 59.6L277.7 319l-10.3-10.3-64-64L193 234.3 373.5 27.1zM170.3 256.9l10.4 10.4 64 64 10.4 10.4-19.2 83.4c-3.9 17.1-16.9 30.7-33.8 35.4L24.3 510.3l95.4-95.4c2.6 .7 5.4 1.1 8.3 1.1c17.7 0 32-14.3 32-32s-14.3-32-32-32s-32 14.3-32 32c0 2.9 .4 5.6 1.1 8.3L1.7 487.6 51.5 310c4.7-16.9 18.3-29.9 35.4-33.8l83.4-19.2z\"]\n};\nconst faPersonDigging = {\n prefix: 'fas',\n iconName: 'person-digging',\n icon: [576, 512, [\"digging\"], \"f85e\", \"M208 64a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM9.8 214.8c5.1-12.2 19.1-18 31.4-12.9L60.7 210l22.9-38.1C99.9 144.6 129.3 128 161 128c51.4 0 97 32.9 113.3 81.7l34.6 103.7 79.3 33.1 34.2-45.6c6.4-8.5 16.6-13.3 27.2-12.8s20.3 6.4 25.8 15.5l96 160c5.9 9.9 6.1 22.2 .4 32.2s-16.3 16.2-27.8 16.2l-256 0c-11.1 0-21.4-5.7-27.2-15.2s-6.4-21.2-1.4-31.1l16-32c5.4-10.8 16.5-17.7 28.6-17.7l32 0 22.5-30L22.8 246.2c-12.2-5.1-18-19.1-12.9-31.4zm82.8 91.8l112 48c11.8 5 19.4 16.6 19.4 29.4l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-74.9-60.6-26-37 111c-5.6 16.8-23.7 25.8-40.5 20.2S-3.9 486.6 1.6 469.9l48-144 11-33 32 13.7z\"]\n};\nconst faDigging = faPersonDigging;\nconst faTrash = {\n prefix: 'fas',\n iconName: 'trash',\n icon: [448, 512, [], \"f1f8\", \"M135.2 17.7L128 32 32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 0-7.2-14.3C307.4 6.8 296.3 0 284.2 0L163.8 0c-12.1 0-23.2 6.8-28.6 17.7zM416 128L32 128 53.2 467c1.6 25.3 22.6 45 47.9 45l245.8 0c25.3 0 46.3-19.7 47.9-45L416 128z\"]\n};\nconst faGaugeSimple = {\n prefix: 'fas',\n iconName: 'gauge-simple',\n icon: [512, 512, [\"gauge-simple-med\", \"tachometer-average\"], \"f629\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm320 96c0-26.9-16.5-49.9-40-59.3L280 88c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 204.7c-23.5 9.5-40 32.5-40 59.3c0 35.3 28.7 64 64 64s64-28.7 64-64z\"]\n};\nconst faGaugeSimpleMed = faGaugeSimple;\nconst faTachometerAverage = faGaugeSimple;\nconst faBookMedical = {\n prefix: 'fas',\n iconName: 'book-medical',\n icon: [448, 512, [], \"f7e6\", \"M0 96C0 43 43 0 96 0L384 0l32 0c17.7 0 32 14.3 32 32l0 320c0 17.7-14.3 32-32 32l0 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0L96 512c-53 0-96-43-96-96L0 96zM64 416c0 17.7 14.3 32 32 32l256 0 0-64L96 384c-17.7 0-32 14.3-32 32zM208 112l0 48-48 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l48 0 0 48c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-48 48 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-48 0 0-48c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16z\"]\n};\nconst faPoo = {\n prefix: 'fas',\n iconName: 'poo',\n icon: [512, 512, [128169], \"f2fe\", \"M268.9 .9c-5.5-.7-11 1.4-14.5 5.7s-4.6 10.1-2.8 15.4c2.8 8.2 4.3 16.9 4.3 26.1c0 44.1-35.7 79.9-79.8 80L160 128c-35.3 0-64 28.7-64 64c0 19.1 8.4 36.3 21.7 48L104 240c-39.8 0-72 32.2-72 72c0 23.2 11 43.8 28 57c-34.1 5.7-60 35.3-60 71c0 39.8 32.2 72 72 72l368 0c39.8 0 72-32.2 72-72c0-35.7-25.9-65.3-60-71c17-13.2 28-33.8 28-57c0-39.8-32.2-72-72-72l-13.7 0c13.3-11.7 21.7-28.9 21.7-48c0-35.3-28.7-64-64-64l-5.5 0c3.5-10 5.5-20.8 5.5-32c0-48.6-36.2-88.8-83.1-95.1zM192 256a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm96 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm64 108.3c0 2.4-.7 4.8-2.2 6.7c-8.2 10.5-39.5 45-93.8 45s-85.6-34.6-93.8-45c-1.5-1.9-2.2-4.3-2.2-6.7c0-6.8 5.5-12.3 12.3-12.3l167.4 0c6.8 0 12.3 5.5 12.3 12.3z\"]\n};\nconst faQuoteRight = {\n prefix: 'fas',\n iconName: 'quote-right',\n icon: [448, 512, [8221, \"quote-right-alt\"], \"f10e\", \"M448 296c0 66.3-53.7 120-120 120l-8 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l8 0c30.9 0 56-25.1 56-56l0-8-64 0c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64l64 0c35.3 0 64 28.7 64 64l0 32 0 32 0 72zm-256 0c0 66.3-53.7 120-120 120l-8 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l8 0c30.9 0 56-25.1 56-56l0-8-64 0c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64l64 0c35.3 0 64 28.7 64 64l0 32 0 32 0 72z\"]\n};\nconst faQuoteRightAlt = faQuoteRight;\nconst faShirt = {\n prefix: 'fas',\n iconName: 'shirt',\n icon: [640, 512, [128085, \"t-shirt\", \"tshirt\"], \"f553\", \"M211.8 0c7.8 0 14.3 5.7 16.7 13.2C240.8 51.9 277.1 80 320 80s79.2-28.1 91.5-66.8C413.9 5.7 420.4 0 428.2 0l12.6 0c22.5 0 44.2 7.9 61.5 22.3L628.5 127.4c6.6 5.5 10.7 13.5 11.4 22.1s-2.1 17.1-7.8 23.6l-56 64c-11.4 13.1-31.2 14.6-44.6 3.5L480 197.7 480 448c0 35.3-28.7 64-64 64l-192 0c-35.3 0-64-28.7-64-64l0-250.3-51.5 42.9c-13.3 11.1-33.1 9.6-44.6-3.5l-56-64c-5.7-6.5-8.5-15-7.8-23.6s4.8-16.6 11.4-22.1L137.7 22.3C155 7.9 176.7 0 199.2 0l12.6 0z\"]\n};\nconst faTShirt = faShirt;\nconst faTshirt = faShirt;\nconst faCubes = {\n prefix: 'fas',\n iconName: 'cubes',\n icon: [576, 512, [], \"f1b3\", \"M290.8 48.6l78.4 29.7L288 109.5 206.8 78.3l78.4-29.7c1.8-.7 3.8-.7 5.7 0zM136 92.5l0 112.2c-1.3 .4-2.6 .8-3.9 1.3l-96 36.4C14.4 250.6 0 271.5 0 294.7L0 413.9c0 22.2 13.1 42.3 33.5 51.3l96 42.2c14.4 6.3 30.7 6.3 45.1 0L288 457.5l113.5 49.9c14.4 6.3 30.7 6.3 45.1 0l96-42.2c20.3-8.9 33.5-29.1 33.5-51.3l0-119.1c0-23.3-14.4-44.1-36.1-52.4l-96-36.4c-1.3-.5-2.6-.9-3.9-1.3l0-112.2c0-23.3-14.4-44.1-36.1-52.4l-96-36.4c-12.8-4.8-26.9-4.8-39.7 0l-96 36.4C150.4 48.4 136 69.3 136 92.5zM392 210.6l-82.4 31.2 0-89.2L392 121l0 89.6zM154.8 250.9l78.4 29.7L152 311.7 70.8 280.6l78.4-29.7c1.8-.7 3.8-.7 5.7 0zm18.8 204.4l0-100.5L256 323.2l0 95.9-82.4 36.2zM421.2 250.9c1.8-.7 3.8-.7 5.7 0l78.4 29.7L424 311.7l-81.2-31.1 78.4-29.7zM523.2 421.2l-77.6 34.1 0-100.5L528 323.2l0 90.7c0 3.2-1.9 6-4.8 7.3z\"]\n};\nconst faDivide = {\n prefix: 'fas',\n iconName: 'divide',\n icon: [448, 512, [10135, 247], \"f529\", \"M272 96a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm0 320a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM400 288c17.7 0 32-14.3 32-32s-14.3-32-32-32L48 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l352 0z\"]\n};\nconst faTengeSign = {\n prefix: 'fas',\n iconName: 'tenge-sign',\n icon: [384, 512, [8376, \"tenge\"], \"f7d7\", \"M0 64C0 46.3 14.3 32 32 32l320 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64zM0 192c0-17.7 14.3-32 32-32l160 0 160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-128 0 0 224c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-224L32 224c-17.7 0-32-14.3-32-32z\"]\n};\nconst faTenge = faTengeSign;\nconst faHeadphones = {\n prefix: 'fas',\n iconName: 'headphones',\n icon: [512, 512, [127911], \"f025\", \"M256 80C149.9 80 62.4 159.4 49.6 262c9.4-3.8 19.6-6 30.4-6c26.5 0 48 21.5 48 48l0 128c0 26.5-21.5 48-48 48c-44.2 0-80-35.8-80-80l0-16 0-48 0-48C0 146.6 114.6 32 256 32s256 114.6 256 256l0 48 0 48 0 16c0 44.2-35.8 80-80 80c-26.5 0-48-21.5-48-48l0-128c0-26.5 21.5-48 48-48c10.8 0 21 2.1 30.4 6C449.6 159.4 362.1 80 256 80z\"]\n};\nconst faHandsHolding = {\n prefix: 'fas',\n iconName: 'hands-holding',\n icon: [640, 512, [], \"f4c2\", \"M80 104c0-22.1-17.9-40-40-40S0 81.9 0 104l0 56 0 64L0 325.5c0 25.5 10.1 49.9 28.1 67.9L128 493.3c12 12 28.3 18.7 45.3 18.7l66.7 0c26.5 0 48-21.5 48-48l0-78.9c0-29.7-11.8-58.2-32.8-79.2l-25.3-25.3c0 0 0 0 0 0l-15.2-15.2-32-32c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l32 32 15.2 15.2c11 11 9.2 29.2-3.7 37.8c-9.7 6.5-22.7 5.2-31-3.1L98.7 309.5c-12-12-18.7-28.3-18.7-45.3L80 224l0-80 0-40zm480 0l0 40 0 80 0 40.2c0 17-6.7 33.3-18.7 45.3l-51.1 51.1c-8.3 8.3-21.3 9.6-31 3.1c-12.9-8.6-14.7-26.9-3.7-37.8l15.2-15.2 32-32c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-32 32-15.2 15.2c0 0 0 0 0 0l-25.3 25.3c-21 21-32.8 49.5-32.8 79.2l0 78.9c0 26.5 21.5 48 48 48l66.7 0c17 0 33.3-6.7 45.3-18.7l99.9-99.9c18-18 28.1-42.4 28.1-67.9L640 224l0-64 0-56c0-22.1-17.9-40-40-40s-40 17.9-40 40z\"]\n};\nconst faHandsClapping = {\n prefix: 'fas',\n iconName: 'hands-clapping',\n icon: [512, 512, [], \"e1a8\", \"M336 16l0 64c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-64c0-8.8 7.2-16 16-16s16 7.2 16 16zm-98.7 7.1l32 48c4.9 7.4 2.9 17.3-4.4 22.2s-17.3 2.9-22.2-4.4l-32-48c-4.9-7.4-2.9-17.3 4.4-22.2s17.3-2.9 22.2 4.4zM135 119c9.4-9.4 24.6-9.4 33.9 0L292.7 242.7c10.1 10.1 27.3 2.9 27.3-11.3l0-39.4c0-17.7 14.3-32 32-32s32 14.3 32 32l0 153.6c0 57.1-30 110-78.9 139.4c-64 38.4-145.8 28.3-198.5-24.4L7 361c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l53 53c6.1 6.1 16 6.1 22.1 0s6.1-16 0-22.1L23 265c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l93 93c6.1 6.1 16 6.1 22.1 0s6.1-16 0-22.1L55 185c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l117 117c6.1 6.1 16 6.1 22.1 0s6.1-16 0-22.1l-93-93c-9.4-9.4-9.4-24.6 0-33.9zM433.1 484.9c-24.2 14.5-50.9 22.1-77.7 23.1c48.1-39.6 76.6-99 76.6-162.4l0-98.1c8.2-.1 16-6.4 16-16l0-39.4c0-17.7 14.3-32 32-32s32 14.3 32 32l0 153.6c0 57.1-30 110-78.9 139.4zM424.9 18.7c7.4 4.9 9.3 14.8 4.4 22.2l-32 48c-4.9 7.4-14.8 9.3-22.2 4.4s-9.3-14.8-4.4-22.2l32-48c4.9-7.4 14.8-9.3 22.2-4.4z\"]\n};\nconst faRepublican = {\n prefix: 'fas',\n iconName: 'republican',\n icon: [640, 512, [], \"f75e\", \"M0 192C0 103.6 71.6 32 160 32l224 0c88.4 0 160 71.6 160 160l0 64L0 256l0-64zm415.9-64c-2.4 0-4.7 1.3-5.7 3.4l-12.6 24.6-28.2 4c-2.4 .3-4.4 2-5.2 4.2s-.1 4.7 1.6 6.3l20.4 19.2-4.8 27.1c-.4 2.3 .6 4.7 2.5 6s4.6 1.6 6.7 .5l25.2-12.8 25.2 12.8c2.2 1.1 4.8 .9 6.7-.5s3-3.7 2.5-6l-4.8-27.1L466 170.5c1.7-1.6 2.4-4.1 1.6-6.3s-2.8-3.9-5.2-4.2l-28.2-4-12.6-24.6c-1.1-2.1-3.3-3.4-5.7-3.4zm-138.3 3.4c-1.1-2.1-3.3-3.4-5.7-3.4s-4.7 1.3-5.7 3.4l-12.6 24.6-28.2 4c-2.4 .3-4.4 2-5.2 4.2s-.1 4.7 1.6 6.3l20.4 19.2-4.8 27.1c-.4 2.3 .6 4.7 2.5 6s4.6 1.6 6.7 .5l25.2-12.8 25.2 12.8c2.2 1.1 4.8 .9 6.7-.5s3-3.7 2.5-6l-4.8-27.1L322 170.5c1.7-1.6 2.4-4.1 1.6-6.3s-2.8-3.9-5.2-4.2l-28.2-4-12.6-24.6zM127.9 128c-2.4 0-4.7 1.3-5.7 3.4l-12.6 24.6-28.2 4c-2.4 .3-4.4 2-5.2 4.2s-.1 4.7 1.6 6.3l20.4 19.2-4.8 27.1c-.4 2.3 .6 4.7 2.5 6s4.6 1.6 6.7 .5l25.2-12.8 25.2 12.8c2.2 1.1 4.8 .9 6.7-.5s3-3.7 2.5-6l-4.8-27.1L178 170.5c1.7-1.6 2.4-4.1 1.6-6.3s-2.8-3.9-5.2-4.2l-28.2-4-12.6-24.6c-1.1-2.1-3.3-3.4-5.7-3.4zm.1 160l192 0 96 0 32 0 64 0 32 0 0 32 0 80c0 8.8 7.2 16 16 16s16-7.2 16-16l0-48c0-17.7 14.3-32 32-32s32 14.3 32 32l0 48c0 44.2-35.8 80-80 80s-80-35.8-80-80l0-48-32 0 0 32 0 64c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-64-192 0 0 64c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-64 0-96 128 0z\"]\n};\nconst faArrowLeft = {\n prefix: 'fas',\n iconName: 'arrow-left',\n icon: [448, 512, [8592], \"f060\", \"M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.2 288 416 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-306.7 0L214.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z\"]\n};\nconst faPersonCircleXmark = {\n prefix: 'fas',\n iconName: 'person-circle-xmark',\n icon: [576, 512, [], \"e543\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-223.1L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6l29.7 0c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9 232 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128-16 0zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm59.3 107.3c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L432 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L409.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L432 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L454.6 368l36.7-36.7z\"]\n};\nconst faRuler = {\n prefix: 'fas',\n iconName: 'ruler',\n icon: [512, 512, [128207], \"f545\", \"M177.9 494.1c-18.7 18.7-49.1 18.7-67.9 0L17.9 401.9c-18.7-18.7-18.7-49.1 0-67.9l50.7-50.7 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 41.4-41.4 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 41.4-41.4 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 41.4-41.4 48 48c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-48-48 50.7-50.7c18.7-18.7 49.1-18.7 67.9 0l92.1 92.1c18.7 18.7 18.7 49.1 0 67.9L177.9 494.1z\"]\n};\nconst faAlignLeft = {\n prefix: 'fas',\n iconName: 'align-left',\n icon: [448, 512, [], \"f036\", \"M288 64c0 17.7-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64S14.3 32 32 32l224 0c17.7 0 32 14.3 32 32zm0 256c0 17.7-14.3 32-32 32L32 352c-17.7 0-32-14.3-32-32s14.3-32 32-32l224 0c17.7 0 32 14.3 32 32zM0 192c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 224c-17.7 0-32-14.3-32-32zM448 448c0 17.7-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0c17.7 0 32 14.3 32 32z\"]\n};\nconst faDiceD6 = {\n prefix: 'fas',\n iconName: 'dice-d6',\n icon: [448, 512, [], \"f6d1\", \"M201 10.3c14.3-7.8 31.6-7.8 46 0L422.3 106c5.1 2.8 8.3 8.2 8.3 14s-3.2 11.2-8.3 14L231.7 238c-4.8 2.6-10.5 2.6-15.3 0L25.7 134c-5.1-2.8-8.3-8.2-8.3-14s3.2-11.2 8.3-14L201 10.3zM23.7 170l176 96c5.1 2.8 8.3 8.2 8.3 14l0 216c0 5.6-3 10.9-7.8 13.8s-10.9 3-15.8 .3L25 423.1C9.6 414.7 0 398.6 0 381L0 184c0-5.6 3-10.9 7.8-13.8s10.9-3 15.8-.3zm400.7 0c5-2.7 11-2.6 15.8 .3s7.8 8.1 7.8 13.8l0 197c0 17.6-9.6 33.7-25 42.1L263.7 510c-5 2.7-11 2.6-15.8-.3s-7.8-8.1-7.8-13.8l0-216c0-5.9 3.2-11.2 8.3-14l176-96z\"]\n};\nconst faRestroom = {\n prefix: 'fas',\n iconName: 'restroom',\n icon: [640, 512, [], \"f7bd\", \"M80 48a48 48 0 1 1 96 0A48 48 0 1 1 80 48zm40 304l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-154.8c-8.1 9.2-21.1 13.2-33.5 9.4c-16.9-5.3-26.3-23.2-21-40.1l30.9-99.1C44.9 155.3 82 128 124 128l8 0c42 0 79.1 27.3 91.6 67.4l30.9 99.1c5.3 16.9-4.1 34.8-21 40.1c-12.4 3.9-25.4-.2-33.5-9.4L200 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128-16 0zM320 0c13.3 0 24 10.7 24 24l0 464c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-464c0-13.3 10.7-24 24-24zM464 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM440 480l0-96-17.8 0c-10.9 0-18.6-10.7-15.2-21.1l9-26.9c-3.2 0-6.4-.5-9.5-1.5c-16.9-5.3-26.3-23.2-21-40.1l29.7-95.2C428.4 156.9 467.6 128 512 128s83.6 28.9 96.8 71.2l29.7 95.2c5.3 16.9-4.1 34.8-21 40.1c-3.2 1-6.4 1.5-9.5 1.5l9 26.9c3.5 10.4-4.3 21.1-15.2 21.1L584 384l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96-16 0 0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32z\"]\n};\nconst faJ = {\n prefix: 'fas',\n iconName: 'j',\n icon: [320, 512, [106], \"4a\", \"M288 32c17.7 0 32 14.3 32 32l0 256c0 88.4-71.6 160-160 160S0 408.4 0 320l0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32c0 53 43 96 96 96s96-43 96-96l0-256c0-17.7 14.3-32 32-32z\"]\n};\nconst faUsersViewfinder = {\n prefix: 'fas',\n iconName: 'users-viewfinder',\n icon: [640, 512, [], \"e595\", \"M48 48l88 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L32 0C14.3 0 0 14.3 0 32L0 136c0 13.3 10.7 24 24 24s24-10.7 24-24l0-88zM175.8 224a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-26.5 32C119.9 256 96 279.9 96 309.3c0 14.7 11.9 26.7 26.7 26.7l56.1 0c8-34.1 32.8-61.7 65.2-73.6c-7.5-4.1-16.2-6.4-25.3-6.4l-69.3 0zm368 80c14.7 0 26.7-11.9 26.7-26.7c0-29.5-23.9-53.3-53.3-53.3l-69.3 0c-9.2 0-17.8 2.3-25.3 6.4c32.4 11.9 57.2 39.5 65.2 73.6l56.1 0zm-89.4 0c-8.6-24.3-29.9-42.6-55.9-47c-3.9-.7-7.9-1-12-1l-80 0c-4.1 0-8.1 .3-12 1c-26 4.4-47.3 22.7-55.9 47c-2.7 7.5-4.1 15.6-4.1 24c0 13.3 10.7 24 24 24l176 0c13.3 0 24-10.7 24-24c0-8.4-1.4-16.5-4.1-24zM464 224a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-80-32a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zM504 48l88 0 0 88c0 13.3 10.7 24 24 24s24-10.7 24-24l0-104c0-17.7-14.3-32-32-32L504 0c-13.3 0-24 10.7-24 24s10.7 24 24 24zM48 464l0-88c0-13.3-10.7-24-24-24s-24 10.7-24 24L0 480c0 17.7 14.3 32 32 32l104 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-88 0zm456 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l104 0c17.7 0 32-14.3 32-32l0-104c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 88-88 0z\"]\n};\nconst faFileVideo = {\n prefix: 'fas',\n iconName: 'file-video',\n icon: [384, 512, [], \"f1c8\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM64 288c0-17.7 14.3-32 32-32l96 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32l0-96zM300.9 397.9L256 368l0-64 44.9-29.9c2-1.3 4.4-2.1 6.8-2.1c6.8 0 12.3 5.5 12.3 12.3l0 103.4c0 6.8-5.5 12.3-12.3 12.3c-2.4 0-4.8-.7-6.8-2.1z\"]\n};\nconst faUpRightFromSquare = {\n prefix: 'fas',\n iconName: 'up-right-from-square',\n icon: [512, 512, [\"external-link-alt\"], \"f35d\", \"M352 0c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9L370.7 96 201.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L416 141.3l41.4 41.4c9.2 9.2 22.9 11.9 34.9 6.9s19.8-16.6 19.8-29.6l0-128c0-17.7-14.3-32-32-32L352 0zM80 32C35.8 32 0 67.8 0 112L0 432c0 44.2 35.8 80 80 80l320 0c44.2 0 80-35.8 80-80l0-112c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 112c0 8.8-7.2 16-16 16L80 448c-8.8 0-16-7.2-16-16l0-320c0-8.8 7.2-16 16-16l112 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L80 32z\"]\n};\nconst faExternalLinkAlt = faUpRightFromSquare;\nconst faTableCells = {\n prefix: 'fas',\n iconName: 'table-cells',\n icon: [512, 512, [\"th\"], \"f00a\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm88 64l0 64-88 0 0-64 88 0zm56 0l88 0 0 64-88 0 0-64zm240 0l0 64-88 0 0-64 88 0zM64 224l88 0 0 64-88 0 0-64zm232 0l0 64-88 0 0-64 88 0zm64 0l88 0 0 64-88 0 0-64zM152 352l0 64-88 0 0-64 88 0zm56 0l88 0 0 64-88 0 0-64zm240 0l0 64-88 0 0-64 88 0z\"]\n};\nconst faTh = faTableCells;\nconst faFilePdf = {\n prefix: 'fas',\n iconName: 'file-pdf',\n icon: [512, 512, [], \"f1c1\", \"M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 144-208 0c-35.3 0-64 28.7-64 64l0 144-48 0c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zM176 352l32 0c30.9 0 56 25.1 56 56s-25.1 56-56 56l-16 0 0 32c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-48 0-80c0-8.8 7.2-16 16-16zm32 80c13.3 0 24-10.7 24-24s-10.7-24-24-24l-16 0 0 48 16 0zm96-80l32 0c26.5 0 48 21.5 48 48l0 64c0 26.5-21.5 48-48 48l-32 0c-8.8 0-16-7.2-16-16l0-128c0-8.8 7.2-16 16-16zm32 128c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-16 0 0 96 16 0zm80-112c0-8.8 7.2-16 16-16l48 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0 0 32 32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0 0 48c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-64 0-64z\"]\n};\nconst faBookBible = {\n prefix: 'fas',\n iconName: 'book-bible',\n icon: [448, 512, [\"bible\"], \"f647\", \"M96 0C43 0 0 43 0 96L0 416c0 53 43 96 96 96l288 0 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-64c17.7 0 32-14.3 32-32l0-320c0-17.7-14.3-32-32-32L384 0 96 0zm0 384l256 0 0 64L96 448c-17.7 0-32-14.3-32-32s14.3-32 32-32zM208 80c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 48 48 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-48 0 0 112c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-112-48 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l48 0 0-48z\"]\n};\nconst faBible = faBookBible;\nconst faO = {\n prefix: 'fas',\n iconName: 'o',\n icon: [448, 512, [111], \"4f\", \"M224 96a160 160 0 1 0 0 320 160 160 0 1 0 0-320zM448 256A224 224 0 1 1 0 256a224 224 0 1 1 448 0z\"]\n};\nconst faSuitcaseMedical = {\n prefix: 'fas',\n iconName: 'suitcase-medical',\n icon: [512, 512, [\"medkit\"], \"f0fa\", \"M184 48l144 0c4.4 0 8 3.6 8 8l0 40L176 96l0-40c0-4.4 3.6-8 8-8zm-56 8l0 40 0 32 0 352 256 0 0-352 0-32 0-40c0-30.9-25.1-56-56-56L184 0c-30.9 0-56 25.1-56 56zM96 96L64 96C28.7 96 0 124.7 0 160L0 416c0 35.3 28.7 64 64 64l32 0L96 96zM416 480l32 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64l-32 0 0 384zM224 208c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 48 48 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-48 0 0 48c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-48-48 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l48 0 0-48z\"]\n};\nconst faMedkit = faSuitcaseMedical;\nconst faUserSecret = {\n prefix: 'fas',\n iconName: 'user-secret',\n icon: [448, 512, [128373], \"f21b\", \"M224 16c-6.7 0-10.8-2.8-15.5-6.1C201.9 5.4 194 0 176 0c-30.5 0-52 43.7-66 89.4C62.7 98.1 32 112.2 32 128c0 14.3 25 27.1 64.6 35.9c-.4 4-.6 8-.6 12.1c0 17 3.3 33.2 9.3 48l-59.9 0C38 224 32 230 32 237.4c0 1.7 .3 3.4 1 5l38.8 96.9C28.2 371.8 0 423.8 0 482.3C0 498.7 13.3 512 29.7 512l388.6 0c16.4 0 29.7-13.3 29.7-29.7c0-58.5-28.2-110.4-71.7-143L415 242.4c.6-1.6 1-3.3 1-5c0-7.4-6-13.4-13.4-13.4l-59.9 0c6-14.8 9.3-31 9.3-48c0-4.1-.2-8.1-.6-12.1C391 155.1 416 142.3 416 128c0-15.8-30.7-29.9-78-38.6C324 43.7 302.5 0 272 0c-18 0-25.9 5.4-32.5 9.9c-4.8 3.3-8.8 6.1-15.5 6.1zm56 208l-12.4 0c-16.5 0-31.1-10.6-36.3-26.2c-2.3-7-12.2-7-14.5 0c-5.2 15.6-19.9 26.2-36.3 26.2L168 224c-22.1 0-40-17.9-40-40l0-14.4c28.2 4.1 61 6.4 96 6.4s67.8-2.3 96-6.4l0 14.4c0 22.1-17.9 40-40 40zm-88 96l16 32L176 480 128 288l64 32zm128-32L272 480 240 352l16-32 64-32z\"]\n};\nconst faOtter = {\n prefix: 'fas',\n iconName: 'otter',\n icon: [640, 512, [129446], \"f700\", \"M181.5 197.1l12.9 6.4c5.9 3 12.4 4.5 19.1 4.5c23.5 0 42.6-19.1 42.6-42.6l0-21.4c0-35.3-28.7-64-64-64l-64 0c-35.3 0-64 28.7-64 64l0 21.4c0 23.5 19.1 42.6 42.6 42.6c6.6 0 13.1-1.5 19.1-4.5l12.9-6.4 8.4-4.2L135.1 185c-4.5-3-7.1-8-7.1-13.3l0-3.7c0-13.3 10.7-24 24-24l16 0c13.3 0 24 10.7 24 24l0 3.7c0 5.3-2.7 10.3-7.1 13.3l-11.8 7.9 8.4 4.2zm-8.6 49.4L160 240l-12.9 6.4c-12.6 6.3-26.5 9.6-40.5 9.6c-3.6 0-7.1-.2-10.6-.6l0 .6c0 35.3 28.7 64 64 64l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l160 0 0-48 0-16c0-23.7 12.9-44.4 32-55.4c9.4-5.4 20.3-8.6 32-8.6l0-16c0-26.5 21.5-48 48-48c8.8 0 16 7.2 16 16l0 32 0 16 0 48c0 8.8 7.2 16 16 16s16-7.2 16-16l0-99.7c0-48.2-30.8-91-76.6-106.3l-8.5-2.8c-8-2.7-12.6-11.1-10.4-19.3s10.3-13.2 18.6-11.6l19.9 4C576 86.1 640 164.2 640 254.9l0 1.1s0 0 0 0c0 123.7-100.3 224-224 224l-1.1 0L256 480l-.6 0C132 480 32 380 32 256.6l0-.6 0-39.2c-10.1-14.6-16-32.3-16-51.4L16 144l0-1.4C6.7 139.3 0 130.5 0 120c0-13.3 10.7-24 24-24l2.8 0C44.8 58.2 83.3 32 128 32l64 0c44.7 0 83.2 26.2 101.2 64l2.8 0c13.3 0 24 10.7 24 24c0 10.5-6.7 19.3-16 22.6l0 1.4 0 21.4c0 1.4 0 2.8-.1 4.3c12-6.2 25.7-9.6 40.1-9.6l8 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-8 0c-13.3 0-24 10.7-24 24l0 8 56.4 0c-15.2 17-24.4 39.4-24.4 64l-32 0c-42.3 0-78.2-27.4-91-65.3c-5.1 .9-10.3 1.3-15.6 1.3c-14.1 0-27.9-3.3-40.5-9.6zM96 128a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm112 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0z\"]\n};\nconst faPersonDress = {\n prefix: 'fas',\n iconName: 'person-dress',\n icon: [320, 512, [\"female\"], \"f182\", \"M160 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM88 384l-17.8 0c-10.9 0-18.6-10.7-15.2-21.1L93.3 248.1 59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l53.6-89.2c20.3-33.7 56.7-54.3 96-54.3l11.6 0c39.3 0 75.7 20.6 96 54.3l53.6 89.2c9.1 15.1 4.2 34.8-10.9 43.9s-34.8 4.2-43.9-10.9l-33.9-56.3L265 362.9c3.5 10.4-4.3 21.1-15.2 21.1L232 384l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96-16 0 0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96z\"]\n};\nconst faFemale = faPersonDress;\nconst faCommentDollar = {\n prefix: 'fas',\n iconName: 'comment-dollar',\n icon: [512, 512, [], \"f651\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0s0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zm20-312l0 13.9c7.5 1.2 14.6 2.9 21.1 4.7c10.7 2.8 17 13.8 14.2 24.5s-13.8 17-24.5 14.2c-11-2.9-21.6-5-31.2-5.2c-7.9-.1-16 1.8-21.5 5c-4.8 2.8-6.2 5.6-6.2 9.3c0 1.8 .1 3.5 5.3 6.7c6.3 3.8 15.5 6.7 28.3 10.5l.7 .2c11.2 3.4 25.6 7.7 37.1 15c12.9 8.1 24.3 21.3 24.6 41.6c.3 20.9-10.5 36.1-24.8 45c-7.2 4.5-15.2 7.3-23.2 9l0 13.8c0 11-9 20-20 20s-20-9-20-20l0-14.6c-10.3-2.2-20-5.5-28.2-8.4c0 0 0 0 0 0s0 0 0 0c-2.1-.7-4.1-1.4-6.1-2.1c-10.5-3.5-16.1-14.8-12.6-25.3s14.8-16.1 25.3-12.6c2.5 .8 4.9 1.7 7.2 2.4c0 0 0 0 0 0c13.6 4.6 24 8.1 35.1 8.5c8.6 .3 16.5-1.6 21.4-4.7c4.1-2.5 6-5.5 5.9-10.5c0-2.9-.8-5-5.9-8.2c-6.3-4-15.4-6.9-28-10.7l-1.7-.5c-10.9-3.3-24.6-7.4-35.6-14c-12.7-7.7-24.6-20.5-24.7-40.7c-.1-21.1 11.8-35.7 25.8-43.9c6.9-4.1 14.5-6.8 22.2-8.5l0-14c0-11 9-20 20-20s20 9 20 20z\"]\n};\nconst faBusinessTime = {\n prefix: 'fas',\n iconName: 'business-time',\n icon: [640, 512, [\"briefcase-clock\"], \"f64a\", \"M184 48l144 0c4.4 0 8 3.6 8 8l0 40L176 96l0-40c0-4.4 3.6-8 8-8zm-56 8l0 40L64 96C28.7 96 0 124.7 0 160l0 96 192 0 160 0 8.2 0c32.3-39.1 81.1-64 135.8-64c5.4 0 10.7 .2 16 .7l0-32.7c0-35.3-28.7-64-64-64l-64 0 0-40c0-30.9-25.1-56-56-56L184 0c-30.9 0-56 25.1-56 56zM320 352l-96 0c-17.7 0-32-14.3-32-32l0-32L0 288 0 416c0 35.3 28.7 64 64 64l296.2 0C335.1 449.6 320 410.5 320 368c0-5.4 .2-10.7 .7-16l-.7 0zm320 16a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zM496 288c8.8 0 16 7.2 16 16l0 48 32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-48 0c-8.8 0-16-7.2-16-16l0-64c0-8.8 7.2-16 16-16z\"]\n};\nconst faBriefcaseClock = faBusinessTime;\nconst faTableCellsLarge = {\n prefix: 'fas',\n iconName: 'table-cells-large',\n icon: [512, 512, [\"th-large\"], \"f009\", \"M448 96l0 128-160 0 0-128 160 0zm0 192l0 128-160 0 0-128 160 0zM224 224L64 224 64 96l160 0 0 128zM64 288l160 0 0 128L64 416l0-128zM64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32z\"]\n};\nconst faThLarge = faTableCellsLarge;\nconst faBookTanakh = {\n prefix: 'fas',\n iconName: 'book-tanakh',\n icon: [448, 512, [\"tanakh\"], \"f827\", \"M352 0c53 0 96 43 96 96l0 320c0 53-43 96-96 96L64 512l-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l0-64c-17.7 0-32-14.3-32-32L0 32C0 14.3 14.3 0 32 0L64 0 352 0zm0 384L96 384l0 64 256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32zM138.7 208l13.9 24-27.7 0 13.9-24zm-13.9-24L97.1 232c-6.2 10.7 1.5 24 13.9 24l55.4 0 27.7 48c6.2 10.7 21.6 10.7 27.7 0l27.7-48 55.4 0c12.3 0 20-13.3 13.9-24l-27.7-48 27.7-48c6.2-10.7-1.5-24-13.9-24l-55.4 0L221.9 64c-6.2-10.7-21.6-10.7-27.7 0l-27.7 48L111 112c-12.3 0-20 13.3-13.9 24l27.7 48zm27.7 0l27.7-48 55.4 0 27.7 48-27.7 48-55.4 0-27.7-48zm0-48l-13.9 24-13.9-24 27.7 0zm41.6-24L208 88l13.9 24-27.7 0zm69.3 24l27.7 0-13.9 24-13.9-24zm13.9 72l13.9 24-27.7 0 13.9-24zm-55.4 48L208 280l-13.9-24 27.7 0z\"]\n};\nconst faTanakh = faBookTanakh;\nconst faPhoneVolume = {\n prefix: 'fas',\n iconName: 'phone-volume',\n icon: [512, 512, [\"volume-control-phone\"], \"f2a0\", \"M280 0C408.1 0 512 103.9 512 232c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-101.6-82.4-184-184-184c-13.3 0-24-10.7-24-24s10.7-24 24-24zm8 192a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm-32-72c0-13.3 10.7-24 24-24c75.1 0 136 60.9 136 136c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-48.6-39.4-88-88-88c-13.3 0-24-10.7-24-24zM117.5 1.4c19.4-5.3 39.7 4.6 47.4 23.2l40 96c6.8 16.3 2.1 35.2-11.6 46.3L144 207.3c33.3 70.4 90.3 127.4 160.7 160.7L345 318.7c11.2-13.7 30-18.4 46.3-11.6l96 40c18.6 7.7 28.5 28 23.2 47.4l-24 88C481.8 499.9 466 512 448 512C200.6 512 0 311.4 0 64C0 46 12.1 30.2 29.5 25.4l88-24z\"]\n};\nconst faVolumeControlPhone = faPhoneVolume;\nconst faHatCowboySide = {\n prefix: 'fas',\n iconName: 'hat-cowboy-side',\n icon: [640, 512, [], \"f8c1\", \"M152.7 135.9l-10.4 57.2c6.8-.7 13.6-1.1 20.5-1.1l10.7 0c39.4 0 77.8 12.1 110.1 34.7L562.4 421.8l35.1 24.6c24.4-6 42.5-28.1 42.5-54.4c0-75.8-94.7-126.6-134.6-144.7L474 83.9C468.2 53.8 441.8 32 411.1 32l-2.7 0c-5.6 0-11.1 .7-16.5 2.2L199.2 85.5c-23.9 6.4-42 26-46.5 50.4zM0 384c0 35.3 28.7 64 64 64l480 0L265.3 252.9c-26.9-18.8-58.9-28.9-91.8-28.9l-10.7 0c-60.6 0-116 34.2-143.1 88.4L13.5 325C4.6 342.7 0 362.3 0 382.2L0 384z\"]\n};\nconst faClipboardUser = {\n prefix: 'fas',\n iconName: 'clipboard-user',\n icon: [384, 512, [], \"f7f3\", \"M192 0c-41.8 0-77.4 26.7-90.5 64L64 64C28.7 64 0 92.7 0 128L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64l-37.5 0C269.4 26.7 233.8 0 192 0zm0 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM128 256a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM80 432c0-44.2 35.8-80 80-80l64 0c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16L96 448c-8.8 0-16-7.2-16-16z\"]\n};\nconst faChild = {\n prefix: 'fas',\n iconName: 'child',\n icon: [320, 512, [], \"f1ae\", \"M96 64a64 64 0 1 1 128 0A64 64 0 1 1 96 64zm48 320l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-192.2L59.1 321c-9.4 15-29.2 19.4-44.1 10S-4.5 301.9 4.9 287l39.9-63.3C69.7 184 113.2 160 160 160s90.3 24 115.2 63.6L315.1 287c9.4 15 4.9 34.7-10 44.1s-34.7 4.9-44.1-10L240 287.8 240 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96-32 0z\"]\n};\nconst faLiraSign = {\n prefix: 'fas',\n iconName: 'lira-sign',\n icon: [320, 512, [8356], \"f195\", \"M112 160.4c0-35.5 28.8-64.4 64.4-64.4c6.9 0 13.8 1.1 20.4 3.3l81.2 27.1c16.8 5.6 34.9-3.5 40.5-20.2s-3.5-34.9-20.2-40.5L217 38.6c-13.1-4.4-26.8-6.6-40.6-6.6C105.5 32 48 89.5 48 160.4L48 192l-16 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l16 0 0 32-16 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l14 0c-2.2 10.5-6.1 20.6-11.7 29.9L4.6 431.5c-5.9 9.9-6.1 22.2-.4 32.2S20.5 480 32 480l256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L88.5 416l.7-1.1c11.6-19.3 18.9-40.7 21.6-62.9L224 352c17.7 0 32-14.3 32-32s-14.3-32-32-32l-112 0 0-32 112 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-112 0 0-31.6z\"]\n};\nconst faSatellite = {\n prefix: 'fas',\n iconName: 'satellite',\n icon: [512, 512, [128752], \"f7bf\", \"M233 7c-9.4-9.4-24.6-9.4-33.9 0l-96 96c-9.4 9.4-9.4 24.6 0 33.9l89.4 89.4-15.5 15.5C152.3 230.4 124.9 224 96 224c-31.7 0-61.5 7.7-87.8 21.2c-9 4.7-10.3 16.7-3.1 23.8L112.7 376.7 96.3 393.1c-2.6-.7-5.4-1.1-8.3-1.1c-17.7 0-32 14.3-32 32s14.3 32 32 32s32-14.3 32-32c0-2.9-.4-5.6-1.1-8.3l16.4-16.4L242.9 506.9c7.2 7.2 19.2 5.9 23.8-3.1C280.3 477.5 288 447.7 288 416c0-28.9-6.4-56.3-17.8-80.9l15.5-15.5L375 409c9.4 9.4 24.6 9.4 33.9 0l96-96c9.4-9.4 9.4-24.6 0-33.9l-89.4-89.4 55-55c12.5-12.5 12.5-32.8 0-45.3l-48-48c-12.5-12.5-32.8-12.5-45.3 0l-55 55L233 7zm159 351l-72.4-72.4 62.1-62.1L454.1 296 392 358.1zM226.3 192.4L153.9 120 216 57.9l72.4 72.4-62.1 62.1z\"]\n};\nconst faPlaneLock = {\n prefix: 'fas',\n iconName: 'plane-lock',\n icon: [640, 512, [], \"e558\", \"M192 93.7C192 59.5 221 0 256 0c36 0 64 59.5 64 93.7l0 84.6 101.8 58.2C418 247.6 416 259.6 416 272l0 24.6c-17.9 10.4-30.3 29.1-31.8 50.9L320 329.1l0 70.9 57.6 43.2c4 3 6.4 7.8 6.4 12.8l0 24 0 18c0 7.8-6.3 14-14 14c-1.3 0-2.6-.2-3.9-.5L256 480 145.9 511.5c-1.3 .4-2.6 .5-3.9 .5c-7.8 0-14-6.3-14-14l0-42c0-5 2.4-9.8 6.4-12.8L192 400l0-70.9-171.6 49C10.2 381.1 0 373.4 0 362.8l0-65.5c0-5.7 3.1-11 8.1-13.9L192 178.3l0-84.6zM528 240c-17.7 0-32 14.3-32 32l0 48 64 0 0-48c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80l0 48c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32l0-48z\"]\n};\nconst faTag = {\n prefix: 'fas',\n iconName: 'tag',\n icon: [448, 512, [127991], \"f02b\", \"M0 80L0 229.5c0 17 6.7 33.3 18.7 45.3l176 176c25 25 65.5 25 90.5 0L418.7 317.3c25-25 25-65.5 0-90.5l-176-176c-12-12-28.3-18.7-45.3-18.7L48 32C21.5 32 0 53.5 0 80zm112 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faComment = {\n prefix: 'fas',\n iconName: 'comment',\n icon: [512, 512, [128489, 61669], \"f075\", \"M512 240c0 114.9-114.6 208-256 208c-37.1 0-72.3-6.4-104.1-17.9c-11.9 8.7-31.3 20.6-54.3 30.6C73.6 471.1 44.7 480 16 480c-6.5 0-12.3-3.9-14.8-9.9c-2.5-6-1.1-12.8 3.4-17.4c0 0 0 0 0 0s0 0 0 0s0 0 0 0c0 0 0 0 0 0l.3-.3c.3-.3 .7-.7 1.3-1.4c1.1-1.2 2.8-3.1 4.9-5.7c4.1-5 9.6-12.4 15.2-21.6c10-16.6 19.5-38.4 21.4-62.9C17.7 326.8 0 285.1 0 240C0 125.1 114.6 32 256 32s256 93.1 256 208z\"]\n};\nconst faCakeCandles = {\n prefix: 'fas',\n iconName: 'cake-candles',\n icon: [448, 512, [127874, \"birthday-cake\", \"cake\"], \"f1fd\", \"M86.4 5.5L61.8 47.6C58 54.1 56 61.6 56 69.2L56 72c0 22.1 17.9 40 40 40s40-17.9 40-40l0-2.8c0-7.6-2-15-5.8-21.6L105.6 5.5C103.6 2.1 100 0 96 0s-7.6 2.1-9.6 5.5zm128 0L189.8 47.6c-3.8 6.5-5.8 14-5.8 21.6l0 2.8c0 22.1 17.9 40 40 40s40-17.9 40-40l0-2.8c0-7.6-2-15-5.8-21.6L233.6 5.5C231.6 2.1 228 0 224 0s-7.6 2.1-9.6 5.5zM317.8 47.6c-3.8 6.5-5.8 14-5.8 21.6l0 2.8c0 22.1 17.9 40 40 40s40-17.9 40-40l0-2.8c0-7.6-2-15-5.8-21.6L361.6 5.5C359.6 2.1 356 0 352 0s-7.6 2.1-9.6 5.5L317.8 47.6zM128 176c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 48c-35.3 0-64 28.7-64 64l0 71c8.3 5.2 18.1 9 28.8 9c13.5 0 27.2-6.1 38.4-13.4c5.4-3.5 9.9-7.1 13-9.7c1.5-1.3 2.7-2.4 3.5-3.1c.4-.4 .7-.6 .8-.8l.1-.1s0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0c3.1-3.2 7.4-4.9 11.9-4.8s8.6 2.1 11.6 5.4c0 0 0 0 0 0s0 0 0 0l.1 .1c.1 .1 .4 .4 .7 .7c.7 .7 1.7 1.7 3.1 3c2.8 2.6 6.8 6.1 11.8 9.5c10.2 7.1 23 13.1 36.3 13.1s26.1-6 36.3-13.1c5-3.5 9-6.9 11.8-9.5c1.4-1.3 2.4-2.3 3.1-3c.3-.3 .6-.6 .7-.7l.1-.1c3-3.5 7.4-5.4 12-5.4s9 2 12 5.4l.1 .1c.1 .1 .4 .4 .7 .7c.7 .7 1.7 1.7 3.1 3c2.8 2.6 6.8 6.1 11.8 9.5c10.2 7.1 23 13.1 36.3 13.1s26.1-6 36.3-13.1c5-3.5 9-6.9 11.8-9.5c1.4-1.3 2.4-2.3 3.1-3c.3-.3 .6-.6 .7-.7l.1-.1c2.9-3.4 7.1-5.3 11.6-5.4s8.7 1.6 11.9 4.8c0 0 0 0 0 0s0 0 0 0s0 0 0 0l.1 .1c.2 .2 .4 .4 .8 .8c.8 .7 1.9 1.8 3.5 3.1c3.1 2.6 7.5 6.2 13 9.7c11.2 7.3 24.9 13.4 38.4 13.4c10.7 0 20.5-3.9 28.8-9l0-71c0-35.3-28.7-64-64-64l0-48c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 48-64 0 0-48c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 48-64 0 0-48zM448 394.6c-8.5 3.3-18.2 5.4-28.8 5.4c-22.5 0-42.4-9.9-55.8-18.6c-4.1-2.7-7.8-5.4-10.9-7.8c-2.8 2.4-6.1 5-9.8 7.5C329.8 390 310.6 400 288 400s-41.8-10-54.6-18.9c-3.5-2.4-6.7-4.9-9.4-7.2c-2.7 2.3-5.9 4.7-9.4 7.2C201.8 390 182.6 400 160 400s-41.8-10-54.6-18.9c-3.7-2.6-7-5.2-9.8-7.5c-3.1 2.4-6.8 5.1-10.9 7.8C71.2 390.1 51.3 400 28.8 400c-10.6 0-20.3-2.2-28.8-5.4L0 480c0 17.7 14.3 32 32 32l384 0c17.7 0 32-14.3 32-32l0-85.4z\"]\n};\nconst faBirthdayCake = faCakeCandles;\nconst faCake = faCakeCandles;\nconst faEnvelope = {\n prefix: 'fas',\n iconName: 'envelope',\n icon: [512, 512, [128386, 9993, 61443], \"f0e0\", \"M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0L492.8 150.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48L48 64zM0 176L0 384c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-208L294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176z\"]\n};\nconst faAnglesUp = {\n prefix: 'fas',\n iconName: 'angles-up',\n icon: [448, 512, [\"angle-double-up\"], \"f102\", \"M246.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L224 109.3 361.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160zm160 352l-160-160c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L224 301.3 361.4 438.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3z\"]\n};\nconst faAngleDoubleUp = faAnglesUp;\nconst faPaperclip = {\n prefix: 'fas',\n iconName: 'paperclip',\n icon: [448, 512, [128206], \"f0c6\", \"M364.2 83.8c-24.4-24.4-64-24.4-88.4 0l-184 184c-42.1 42.1-42.1 110.3 0 152.4s110.3 42.1 152.4 0l152-152c10.9-10.9 28.7-10.9 39.6 0s10.9 28.7 0 39.6l-152 152c-64 64-167.6 64-231.6 0s-64-167.6 0-231.6l184-184c46.3-46.3 121.3-46.3 167.6 0s46.3 121.3 0 167.6l-176 176c-28.6 28.6-75 28.6-103.6 0s-28.6-75 0-103.6l144-144c10.9-10.9 28.7-10.9 39.6 0s10.9 28.7 0 39.6l-144 144c-6.7 6.7-6.7 17.7 0 24.4s17.7 6.7 24.4 0l176-176c24.4-24.4 24.4-64 0-88.4z\"]\n};\nconst faArrowRightToCity = {\n prefix: 'fas',\n iconName: 'arrow-right-to-city',\n icon: [640, 512, [], \"e4b3\", \"M288 48c0-26.5 21.5-48 48-48l96 0c26.5 0 48 21.5 48 48l0 144 40 0 0-72c0-13.3 10.7-24 24-24s24 10.7 24 24l0 72 24 0c26.5 0 48 21.5 48 48l0 224c0 26.5-21.5 48-48 48l-160 0-96 0c-26.5 0-48-21.5-48-48l0-416zm64 32l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm16 80c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM352 272l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm176-16c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM512 368l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM166.6 153.4l80 80c12.5 12.5 12.5 32.8 0 45.3l-80 80c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L146.7 288 32 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l114.7 0-25.4-25.4c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0z\"]\n};\nconst faRibbon = {\n prefix: 'fas',\n iconName: 'ribbon',\n icon: [448, 512, [127895], \"f4d6\", \"M333.2 322.8s0 0 0 0l-133.9-146s0 0 0 0L146 118.6c7.8-5.1 37-22.6 78-22.6s70.2 17.4 78 22.6L245.7 180l85.6 93.4 27.4-29.8c16.3-17.7 25.3-40.9 25.3-65l0-29.5c0-19-5.6-37.5-16.1-53.3L327.8 35.6C312.9 13.4 287.9 0 261.2 0l-76 0c-25.8 0-50.1 12.5-65.1 33.5L81.9 87C70.3 103.2 64 122.8 64 142.8L64 164c0 23.2 8.4 45.6 23.6 63.1l56 64.2s0 0 0 0l83.3 95.6s0 0 0 0l91.8 105.3c10 11.5 26.8 14.3 40 6.8l54.5-31.1c17.8-10.2 21.6-34.3 7.7-49.4l-87.7-95.7zM205.2 410.6l-83.3-95.6L27.1 418.5c-13.9 15.1-10.1 39.2 7.7 49.4l55.1 31.5c13 7.4 29.3 4.9 39.4-6.1l75.9-82.6z\"]\n};\nconst faLungs = {\n prefix: 'fas',\n iconName: 'lungs',\n icon: [640, 512, [129729], \"f604\", \"M320 0c17.7 0 32 14.3 32 32l0 132.1c0 16.4 8.4 31.7 22.2 40.5l9.8 6.2 0-45.5C384 127 415 96 453.3 96c21.7 0 42.8 10.2 55.8 28.8c15.4 22.1 44.3 65.4 71 116.9c26.5 50.9 52.4 112.5 59.6 170.3c.2 1.3 .2 2.6 .2 4l0 7c0 49.1-39.8 89-89 89c-7.3 0-14.5-.9-21.6-2.7l-72.7-18.2C414 480.5 384 442.1 384 398l0-73 90.5 57.6c7.5 4.7 17.3 2.5 22.1-4.9s2.5-17.3-4.9-22.1L384 287.1l0-.4-44.1-28.1c-7.3-4.6-13.9-10.1-19.9-16.1c-5.9 6-12.6 11.5-19.9 16.1L256 286.7 161.2 347l-13.5 8.6c0 0 0 0-.1 0c-7.4 4.8-9.6 14.6-4.8 22.1c4.7 7.5 14.6 9.7 22.1 4.9l91.1-58 0 73.4c0 44.1-30 82.5-72.7 93.1l-72.7 18.2c-7.1 1.8-14.3 2.7-21.6 2.7c-49.1 0-89-39.8-89-89l0-7c0-1.3 .1-2.7 .2-4c7.2-57.9 33.1-119.4 59.6-170.3c26.8-51.5 55.6-94.8 71-116.9c13-18.6 34-28.8 55.8-28.8C225 96 256 127 256 165.3l0 45.5 9.8-6.2c13.8-8.8 22.2-24.1 22.2-40.5L288 32c0-17.7 14.3-32 32-32z\"]\n};\nconst faArrowUp91 = {\n prefix: 'fas',\n iconName: 'arrow-up-9-1',\n icon: [576, 512, [\"sort-numeric-up-alt\"], \"f887\", \"M160 32c9 0 17.5 3.8 23.6 10.4l88 96c11.9 13 11.1 33.3-2 45.2s-33.3 11.1-45.2-2L192 146.3 192 448c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-301.7L95.6 181.6c-11.9 13-32.2 13.9-45.2 2s-13.9-32.2-2-45.2l88-96C142.5 35.8 151 32 160 32zM450.7 294c8.3 6 13.3 15.7 13.3 26l0 96 16 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-48 0-48 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l16 0 0-51.6-5.9 2c-16.8 5.6-34.9-3.5-40.5-20.2s3.5-34.9 20.2-40.5l48-16c9.8-3.3 20.5-1.6 28.8 4.4zm-5-145.1A32 32 0 1 0 418.3 91a32 32 0 1 0 27.4 57.9zm-40.7 54.9C369.6 192.4 344 159.2 344 120c0-48.6 39.4-88 88-88s88 39.4 88 88c0 23.5-7.5 46.3-21.5 65.2L449.7 251c-10.5 14.2-30.6 17.2-44.8 6.7s-17.2-30.6-6.7-44.8l6.8-9.2z\"]\n};\nconst faSortNumericUpAlt = faArrowUp91;\nconst faLitecoinSign = {\n prefix: 'fas',\n iconName: 'litecoin-sign',\n icon: [384, 512, [], \"e1d3\", \"M128 64c0-17.7-14.3-32-32-32S64 46.3 64 64l0 149.6L23.2 225.2c-17 4.9-26.8 22.6-22 39.6s22.6 26.8 39.6 22L64 280.1 64 448c0 17.7 14.3 32 32 32l256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-224 0 0-154.1 136.8-39.1c17-4.9 26.8-22.6 22-39.6s-22.6-26.8-39.6-22L128 195.3 128 64z\"]\n};\nconst faBorderNone = {\n prefix: 'fas',\n iconName: 'border-none',\n icon: [448, 512, [], \"f850\", \"M32 480a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm96-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0-384a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0 256a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM320 416a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0-320a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm0 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM224 480a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm0-448a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0 256a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM416 416a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm0-384a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM32 96a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM416 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM32 288a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm192 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm192 64a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM32 320a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM416 192a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM32 128a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm192 64a32 32 0 1 1 0-64 32 32 0 1 1 0 64z\"]\n};\nconst faCircleNodes = {\n prefix: 'fas',\n iconName: 'circle-nodes',\n icon: [512, 512, [], \"e4e2\", \"M418.4 157.9c35.3-8.3 61.6-40 61.6-77.9c0-44.2-35.8-80-80-80c-43.4 0-78.7 34.5-80 77.5L136.2 151.1C121.7 136.8 101.9 128 80 128c-44.2 0-80 35.8-80 80s35.8 80 80 80c12.2 0 23.8-2.7 34.1-7.6L259.7 407.8c-2.4 7.6-3.7 15.8-3.7 24.2c0 44.2 35.8 80 80 80s80-35.8 80-80c0-27.7-14-52.1-35.4-66.4l37.8-207.7zM156.3 232.2c2.2-6.9 3.5-14.2 3.7-21.7l183.8-73.5c3.6 3.5 7.4 6.7 11.6 9.5L317.6 354.1c-5.5 1.3-10.8 3.1-15.8 5.5L156.3 232.2z\"]\n};\nconst faParachuteBox = {\n prefix: 'fas',\n iconName: 'parachute-box',\n icon: [512, 512, [], \"f4cd\", \"M383.5 192c.3-5.3 .5-10.6 .5-16c0-51-15.9-96-40.2-127.6C319.5 16.9 288.2 0 256 0s-63.5 16.9-87.8 48.4C143.9 80 128 125 128 176c0 5.4 .2 10.7 .5 16L240 192l0 128-32 0c-7 0-13.7 1.5-19.7 4.2L68.2 192l28.3 0c-.3-5.3-.5-10.6-.5-16c0-64 22.2-121.2 57.1-159.3C62 49.3 18.6 122.6 4.2 173.6C1.5 183.1 9 192 18.9 192l6 0L165.2 346.3c-3.3 6.5-5.2 13.9-5.2 21.7l0 96c0 26.5 21.5 48 48 48l96 0c26.5 0 48-21.5 48-48l0-96c0-7.8-1.9-15.2-5.2-21.7L487.1 192l6 0c9.9 0 17.4-8.9 14.7-18.4C493.4 122.6 450 49.3 358.9 16.7C393.8 54.8 416 112.1 416 176c0 5.4-.2 10.7-.5 16l28.3 0L323.7 324.2c-6-2.7-12.7-4.2-19.7-4.2l-32 0 0-128 111.5 0z\"]\n};\nconst faIndent = {\n prefix: 'fas',\n iconName: 'indent',\n icon: [448, 512, [], \"f03c\", \"M0 64C0 46.3 14.3 32 32 32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64zM192 192c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32zm32 96l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zM0 448c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32zM127.8 268.6L25.8 347.9C15.3 356.1 0 348.6 0 335.3L0 176.7c0-13.3 15.3-20.8 25.8-12.6l101.9 79.3c8.2 6.4 8.2 18.9 0 25.3z\"]\n};\nconst faTruckFieldUn = {\n prefix: 'fas',\n iconName: 'truck-field-un',\n icon: [640, 512, [], \"e58e\", \"M96 32C60.7 32 32 60.7 32 96l0 32c-17.7 0-32 14.3-32 32l0 96c0 17.7 14.3 32 32 32l0 32c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0c0 53 43 96 96 96s96-43 96-96l128 0c0 53 43 96 96 96s96-43 96-96l32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-32c0-35.3-28.7-64-64-64l-4.2 0c-.4-1.1-.9-2.1-1.3-3.2L485.7 102c-10.3-23.1-33.2-38-58.5-38l-51.8 0C364.4 44.9 343.7 32 320 32L96 32zm288 96l43.2 0 42.7 96L384 224l0-96zM112 384a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm368-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM253.3 135.1l34.7 52 0-43.2c0-8.8 7.2-16 16-16s16 7.2 16 16l0 96c0 7.1-4.6 13.3-11.4 15.3s-14-.6-17.9-6.4l-34.7-52 0 43.2c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-96c0-7.1 4.6-13.3 11.4-15.3s14 .6 17.9 6.4zM128 144l0 64c0 8.8 7.2 16 16 16s16-7.2 16-16l0-64c0-8.8 7.2-16 16-16s16 7.2 16 16l0 64c0 26.5-21.5 48-48 48s-48-21.5-48-48l0-64c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nconst faHourglass = {\n prefix: 'fas',\n iconName: 'hourglass',\n icon: [384, 512, [9203, 62032, \"hourglass-empty\"], \"f254\", \"M0 32C0 14.3 14.3 0 32 0L64 0 320 0l32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 11c0 42.4-16.9 83.1-46.9 113.1L237.3 256l67.9 67.9c30 30 46.9 70.7 46.9 113.1l0 11c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0L64 512l-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l0-11c0-42.4 16.9-83.1 46.9-113.1L146.7 256 78.9 188.1C48.9 158.1 32 117.4 32 75l0-11C14.3 64 0 49.7 0 32zM96 64l0 11c0 25.5 10.1 49.9 28.1 67.9L192 210.7l67.9-67.9c18-18 28.1-42.4 28.1-67.9l0-11L96 64zm0 384l192 0 0-11c0-25.5-10.1-49.9-28.1-67.9L192 301.3l-67.9 67.9c-18 18-28.1 42.4-28.1 67.9l0 11z\"]\n};\nconst faHourglassEmpty = faHourglass;\nconst faMountain = {\n prefix: 'fas',\n iconName: 'mountain',\n icon: [512, 512, [127956], \"f6fc\", \"M256 32c12.5 0 24.1 6.4 30.8 17L503.4 394.4c5.6 8.9 8.6 19.2 8.6 29.7c0 30.9-25 55.9-55.9 55.9L55.9 480C25 480 0 455 0 424.1c0-10.5 3-20.8 8.6-29.7L225.2 49c6.6-10.6 18.3-17 30.8-17zm65 192L256 120.4 176.9 246.5l18.3 24.4c6.4 8.5 19.2 8.5 25.6 0l25.6-34.1c6-8.1 15.5-12.8 25.6-12.8l49 0z\"]\n};\nconst faUserDoctor = {\n prefix: 'fas',\n iconName: 'user-doctor',\n icon: [448, 512, [\"user-md\"], \"f0f0\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-96 55.2C54 332.9 0 401.3 0 482.3C0 498.7 13.3 512 29.7 512l388.6 0c16.4 0 29.7-13.3 29.7-29.7c0-81-54-149.4-128-171.1l0 50.8c27.6 7.1 48 32.2 48 62l0 40c0 8.8-7.2 16-16 16l-16 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l0-24c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 24c8.8 0 16 7.2 16 16s-7.2 16-16 16l-16 0c-8.8 0-16-7.2-16-16l0-40c0-29.8 20.4-54.9 48-62l0-57.1c-6-.6-12.1-.9-18.3-.9l-91.4 0c-6.2 0-12.3 .3-18.3 .9l0 65.4c23.1 6.9 40 28.3 40 53.7c0 30.9-25.1 56-56 56s-56-25.1-56-56c0-25.4 16.9-46.8 40-53.7l0-59.1zM144 448a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nconst faUserMd = faUserDoctor;\nconst faCircleInfo = {\n prefix: 'fas',\n iconName: 'circle-info',\n icon: [512, 512, [\"info-circle\"], \"f05a\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336l24 0 0-64-24 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l48 0c13.3 0 24 10.7 24 24l0 88 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-80 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faInfoCircle = faCircleInfo;\nconst faCloudMeatball = {\n prefix: 'fas',\n iconName: 'cloud-meatball',\n icon: [512, 512, [], \"f73b\", \"M0 224c0 53 43 96 96 96l44.7 0c9.5-23.5 32.5-40 59.3-40c2 0 3.9 .1 5.8 .3C217.6 265.5 235.7 256 256 256s38.4 9.5 50.2 24.3c1.9-.2 3.9-.3 5.8-.3c26.9 0 49.9 16.5 59.3 40l44.7 0c53 0 96-43 96-96s-43-96-96-96c-.5 0-1.1 0-1.6 0c1.1-5.2 1.6-10.5 1.6-16c0-44.2-35.8-80-80-80c-24.3 0-46.1 10.9-60.8 28C256.5 24.3 219.1 0 176 0C114.1 0 64 50.1 64 112c0 7.1 .7 14.1 1.9 20.8C27.6 145.4 0 181.5 0 224zm288 96c0-17.7-14.3-32-32-32s-32 14.3-32 32c0 1 .1 2.1 .1 3.1c-.7-.8-1.4-1.6-2.1-2.3c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3c.7 .7 1.5 1.4 2.3 2.1c-1-.1-2.1-.1-3.1-.1c-17.7 0-32 14.3-32 32s14.3 32 32 32c1 0 2.1-.1 3.1-.1c-.8 .7-1.6 1.3-2.3 2.1c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0c.7-.7 1.4-1.5 2.1-2.3c-.1 1-.1 2.1-.1 3.1c0 17.7 14.3 32 32 32s32-14.3 32-32c0-1-.1-2.1-.1-3.1c.7 .8 1.3 1.6 2.1 2.3c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3c-.7-.7-1.5-1.4-2.3-2.1c1 .1 2.1 .1 3.1 .1c17.7 0 32-14.3 32-32s-14.3-32-32-32c-1 0-2.1 .1-3.1 .1c.8-.7 1.6-1.3 2.3-2.1c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-.7 .7-1.4 1.5-2.1 2.3c.1-1 .1-2.1 .1-3.1zM48 448a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm416 0a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nconst faCamera = {\n prefix: 'fas',\n iconName: 'camera',\n icon: [512, 512, [62258, \"camera-alt\"], \"f030\", \"M149.1 64.8L138.7 96 64 96C28.7 96 0 124.7 0 160L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64l-74.7 0L362.9 64.8C356.4 45.2 338.1 32 317.4 32L194.6 32c-20.7 0-39 13.2-45.5 32.8zM256 192a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nconst faCameraAlt = faCamera;\nconst faSquareVirus = {\n prefix: 'fas',\n iconName: 'square-virus',\n icon: [448, 512, [], \"e578\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM223.8 93.7c13.3 0 24 10.7 24 24c0 29.3 35.4 43.9 56.1 23.2c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9c-20.7 20.7-6 56.1 23.2 56.1c13.3 0 24 10.7 24 24s-10.7 24-24 24c-29.3 0-43.9 35.4-23.2 56.1c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0c-20.7-20.7-56.1-6-56.1 23.2c0 13.3-10.7 24-24 24s-24-10.7-24-24c0-29.3-35.4-43.9-56.1-23.2c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9c20.7-20.7 6-56.1-23.2-56.1c-13.3 0-24-10.7-24-24s10.7-24 24-24c29.3 0 43.9-35.4 23.2-56.1c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0c20.7 20.7 56.1 6 56.1-23.2c0-13.3 10.7-24 24-24zM192 256a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm88 32a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nconst faMeteor = {\n prefix: 'fas',\n iconName: 'meteor',\n icon: [512, 512, [9732], \"f753\", \"M493.7 .9L299.4 75.6l2.3-29.3c1-12.8-12.8-21.5-24-15.1L101.3 133.4C38.6 169.7 0 236.6 0 309C0 421.1 90.9 512 203 512c72.4 0 139.4-38.6 175.7-101.3L480.8 234.3c6.5-11.1-2.2-25-15.1-24l-29.3 2.3L511.1 18.3c.6-1.5 .9-3.2 .9-4.8C512 6 506 0 498.5 0c-1.7 0-3.3 .3-4.8 .9zM192 192a128 128 0 1 1 0 256 128 128 0 1 1 0-256zm0 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm16 96a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nconst faCarOn = {\n prefix: 'fas',\n iconName: 'car-on',\n icon: [512, 512, [], \"e4dd\", \"M280 24c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 80c0 13.3 10.7 24 24 24s24-10.7 24-24l0-80zM185.8 224l140.3 0c6.8 0 12.8 4.3 15.1 10.6L360.3 288l-208.6 0 19.1-53.4c2.3-6.4 8.3-10.6 15.1-10.6zm-75.3-10.9L82.2 292.4C62.1 300.9 48 320.8 48 344l0 40 0 64 0 32c0 17.7 14.3 32 32 32l16 0c17.7 0 32-14.3 32-32l0-32 256 0 0 32c0 17.7 14.3 32 32 32l16 0c17.7 0 32-14.3 32-32l0-32 0-64 0-40c0-23.2-14.1-43.1-34.2-51.6l-28.3-79.3C390.1 181.3 360 160 326.2 160l-140.3 0c-33.8 0-64 21.3-75.3 53.1zM128 344a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm232 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM39 39c-9.4 9.4-9.4 24.6 0 33.9l48 48c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L73 39c-9.4-9.4-24.6-9.4-33.9 0zm400 0L391 87c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l48-48c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0z\"]\n};\nconst faSleigh = {\n prefix: 'fas',\n iconName: 'sleigh',\n icon: [640, 512, [], \"f7cc\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l0 160c0 53 43 96 96 96l0 32 64 0 0-32 192 0 0 32 64 0 0-32c53 0 96-43 96-96l0-96c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0-32 0c-17.7 0-32 14.3-32 32l0 41.3c0 30.2-24.5 54.7-54.7 54.7c-75.5 0-145.6-38.9-185.6-102.9l-4.3-6.9C174.2 67.6 125 37.6 70.7 32.7c-2.2-.5-4.4-.7-6.7-.7l-9 0L32 32zM640 384c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 8c0 13.3-10.7 24-24 24L64 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l488 0c48.6 0 88-39.4 88-88l0-8z\"]\n};\nconst faArrowDown19 = {\n prefix: 'fas',\n iconName: 'arrow-down-1-9',\n icon: [576, 512, [\"sort-numeric-asc\", \"sort-numeric-down\"], \"f162\", \"M450.7 38c-8.3-6-19.1-7.7-28.8-4.4l-48 16c-16.8 5.6-25.8 23.7-20.2 40.5s23.7 25.8 40.5 20.2l5.9-2 0 51.6-16 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l48 0 48 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-16 0 0-96c0-10.3-4.9-19.9-13.3-26zM160 480c9 0 17.5-3.8 23.6-10.4l88-96c11.9-13 11.1-33.3-2-45.2s-33.3-11.1-45.2 2L192 365.7 192 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 301.7L95.6 330.4c-11.9-13-32.2-13.9-45.2-2s-13.9 32.2-2 45.2l88 96C142.5 476.2 151 480 160 480zM418.3 307a32 32 0 1 1 27.4 57.9A32 32 0 1 1 418.3 307zM405.1 419.8l-6.8 9.2c-10.5 14.2-7.5 34.2 6.7 44.8s34.2 7.5 44.8-6.7l48.8-65.8c14-18.9 21.5-41.7 21.5-65.2c0-48.6-39.4-88-88-88s-88 39.4-88 88c0 39.2 25.6 72.4 61.1 83.8z\"]\n};\nconst faSortNumericAsc = faArrowDown19;\nconst faSortNumericDown = faArrowDown19;\nconst faHandHoldingDroplet = {\n prefix: 'fas',\n iconName: 'hand-holding-droplet',\n icon: [576, 512, [\"hand-holding-water\"], \"f4c1\", \"M275.5 6.6C278.3 2.5 283 0 288 0s9.7 2.5 12.5 6.6L366.8 103C378 119.3 384 138.6 384 158.3l0 1.7c0 53-43 96-96 96s-96-43-96-96l0-1.7c0-19.8 6-39 17.2-55.3L275.5 6.6zM568.2 336.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 485.5c-23.4 17.2-51.6 26.5-80.7 26.5L192 512 32 512c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l36.8 0 44.9-36c22.7-18.2 50.9-28 80-28l78.3 0 16 0 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0-16 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l120.6 0 119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 384c0 0 0 0 0 0l-.9 0c.3 0 .6 0 .9 0z\"]\n};\nconst faHandHoldingWater = faHandHoldingDroplet;\nconst faWater = {\n prefix: 'fas',\n iconName: 'water',\n icon: [576, 512, [], \"f773\", \"M269.5 69.9c11.1-7.9 25.9-7.9 37 0C329 85.4 356.5 96 384 96c26.9 0 55.4-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 149.7 417 160 384 160c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4C42.8 92.6 61 83.5 75.3 71.6c11.1-9.5 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 85.2 165.1 96 192 96c27.5 0 55-10.6 77.5-26.1zm37 288C329 373.4 356.5 384 384 384c26.9 0 55.4-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 437.7 417 448 384 448c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 373.2 165.1 384 192 384c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0zm0-144C329 229.4 356.5 240 384 240c26.9 0 55.4-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 293.7 417 304 384 304c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.5 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 229.2 165.1 240 192 240c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nconst faCalendarCheck = {\n prefix: 'fas',\n iconName: 'calendar-check',\n icon: [448, 512, [], \"f274\", \"M128 0c17.7 0 32 14.3 32 32l0 32 128 0 0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32 48 0c26.5 0 48 21.5 48 48l0 48L0 160l0-48C0 85.5 21.5 64 48 64l48 0 0-32c0-17.7 14.3-32 32-32zM0 192l448 0 0 272c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 192zM329 305c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-95 95-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L329 305z\"]\n};\nconst faBraille = {\n prefix: 'fas',\n iconName: 'braille',\n icon: [640, 512, [], \"f2a1\", \"M0 96a64 64 0 1 1 128 0A64 64 0 1 1 0 96zM224 272a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm0-80a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM80 416a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zM0 416a64 64 0 1 1 128 0A64 64 0 1 1 0 416zm240 0a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-80 0a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM64 192a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM224 32a64 64 0 1 1 0 128 64 64 0 1 1 0-128zM352 96a64 64 0 1 1 128 0A64 64 0 1 1 352 96zm240 0a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-80 0a64 64 0 1 1 128 0A64 64 0 1 1 512 96zm64 176a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm0-80a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm16 224a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-80 0a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM416 272a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm0-80a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm16 224a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm-80 0a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z\"]\n};\nconst faPrescriptionBottleMedical = {\n prefix: 'fas',\n iconName: 'prescription-bottle-medical',\n icon: [384, 512, [\"prescription-bottle-alt\"], \"f486\", \"M0 32C0 14.3 14.3 0 32 0L352 0c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64L0 32zm32 96l320 0 0 320c0 35.3-28.7 64-64 64L96 512c-35.3 0-64-28.7-64-64l0-320zM160 240l0 48-48 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l48 0 0 48c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-48 48 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-48 0 0-48c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16z\"]\n};\nconst faPrescriptionBottleAlt = faPrescriptionBottleMedical;\nconst faLandmark = {\n prefix: 'fas',\n iconName: 'landmark',\n icon: [512, 512, [127963], \"f66f\", \"M240.1 4.2c9.8-5.6 21.9-5.6 31.8 0l171.8 98.1L448 104l0 .9 47.9 27.4c12.6 7.2 18.8 22 15.1 36s-16.4 23.8-30.9 23.8L32 192c-14.5 0-27.2-9.8-30.9-23.8s2.5-28.8 15.1-36L64 104.9l0-.9 4.4-1.6L240.1 4.2zM64 224l64 0 0 192 40 0 0-192 64 0 0 192 48 0 0-192 64 0 0 192 40 0 0-192 64 0 0 196.3c.6 .3 1.2 .7 1.8 1.1l48 32c11.7 7.8 17 22.4 12.9 35.9S494.1 512 480 512L32 512c-14.1 0-26.5-9.2-30.6-22.7s1.1-28.1 12.9-35.9l48-32c.6-.4 1.2-.7 1.8-1.1L64 224z\"]\n};\nconst faTruck = {\n prefix: 'fas',\n iconName: 'truck',\n icon: [640, 512, [128666, 9951], \"f0d1\", \"M48 0C21.5 0 0 21.5 0 48L0 368c0 26.5 21.5 48 48 48l16 0c0 53 43 96 96 96s96-43 96-96l128 0c0 53 43 96 96 96s96-43 96-96l32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-64 0-32 0-18.7c0-17-6.7-33.3-18.7-45.3L512 114.7c-12-12-28.3-18.7-45.3-18.7L416 96l0-48c0-26.5-21.5-48-48-48L48 0zM416 160l50.7 0L544 237.3l0 18.7-128 0 0-96zM112 416a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm368-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nconst faCrosshairs = {\n prefix: 'fas',\n iconName: 'crosshairs',\n icon: [512, 512, [], \"f05b\", \"M256 0c17.7 0 32 14.3 32 32l0 10.4c93.7 13.9 167.7 88 181.6 181.6l10.4 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-10.4 0c-13.9 93.7-88 167.7-181.6 181.6l0 10.4c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-10.4C130.3 455.7 56.3 381.7 42.4 288L32 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l10.4 0C56.3 130.3 130.3 56.3 224 42.4L224 32c0-17.7 14.3-32 32-32zM107.4 288c12.5 58.3 58.4 104.1 116.6 116.6l0-20.6c0-17.7 14.3-32 32-32s32 14.3 32 32l0 20.6c58.3-12.5 104.1-58.4 116.6-116.6L384 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l20.6 0C392.1 165.7 346.3 119.9 288 107.4l0 20.6c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-20.6C165.7 119.9 119.9 165.7 107.4 224l20.6 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-20.6 0zM256 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faPersonCane = {\n prefix: 'fas',\n iconName: 'person-cane',\n icon: [448, 512, [], \"e53c\", \"M272 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm-8 187.3l47.4 57.1c11.3 13.6 31.5 15.5 45.1 4.2s15.5-31.5 4.2-45.1l-73.7-88.9c-18.2-22-45.3-34.7-73.9-34.7l-35.9 0c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9 120 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128 16 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-244.7zM352 376c0-4.4 3.6-8 8-8s8 3.6 8 8l0 112c0 13.3 10.7 24 24 24s24-10.7 24-24l0-112c0-30.9-25.1-56-56-56s-56 25.1-56 56l0 8c0 13.3 10.7 24 24 24s24-10.7 24-24l0-8z\"]\n};\nconst faTent = {\n prefix: 'fas',\n iconName: 'tent',\n icon: [576, 512, [], \"e57d\", \"M269.4 6C280.5-2 295.5-2 306.6 6l224 160c7.4 5.3 12.2 13.5 13.2 22.5l32 288c1 9-1.9 18.1-8 24.9s-14.7 10.7-23.8 10.7l-80 0-28.2 0c-12.1 0-23.2-6.8-28.6-17.7L306.7 293.5c-1.7-3.4-5.1-5.5-8.8-5.5c-5.5 0-9.9 4.4-9.9 9.9L288 480c0 17.7-14.3 32-32 32l-16 0L32 512c-9.1 0-17.8-3.9-23.8-10.7s-9-15.8-8-24.9l32-288c1-9 5.8-17.2 13.2-22.5L269.4 6z\"]\n};\nconst faVestPatches = {\n prefix: 'fas',\n iconName: 'vest-patches',\n icon: [448, 512, [], \"e086\", \"M151.2 69.7l55.9 167.7-11 33.1c-2.7 8.2-4.1 16.7-4.1 25.3L192 464c0 14.5 3.9 28.2 10.7 39.9C195 509 185.9 512 176 512L48 512c-26.5 0-48-21.5-48-48L0 270.5c0-9.5 2.8-18.7 8.1-26.6l47.9-71.8c5.3-7.9 8.1-17.1 8.1-26.6L64 128l0-73.7L64 48C64 21.5 85.5 0 112 0l4.5 0c.2 0 .4 0 .6 0c.4 0 .8 0 1.2 0c18.8 0 34.1 9.7 44.1 18.8C171.6 27.2 190.8 40 224 40s52.4-12.8 61.7-21.2C295.7 9.7 311 0 329.7 0c.4 0 .8 0 1.2 0c.2 0 .4 0 .6 0L336 0c26.5 0 48 21.5 48 48l0 6.3 0 73.7 0 17.5c0 9.5 2.8 18.7 8.1 26.6l47.9 71.8c5.3 7.9 8.1 17.1 8.1 26.6L448 464c0 26.5-21.5 48-48 48l-128 0c-26.5 0-48-21.5-48-48l0-168.2c0-5.2 .8-10.3 2.5-15.2L296.8 69.7C279.4 79.7 255.4 88 224 88s-55.4-8.3-72.8-18.3zM96 456a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM63.5 255.5c-4.7 4.7-4.7 12.3 0 17L79 288 63.5 303.5c-4.7 4.7-4.7 12.3 0 17s12.3 4.7 17 0L96 305l15.5 15.5c4.7 4.7 12.3 4.7 17 0s4.7-12.3 0-17L113 288l15.5-15.5c4.7-4.7 4.7-12.3 0-17s-12.3-4.7-17 0L96 271 80.5 255.5c-4.7-4.7-12.3-4.7-17 0zM304 280l0 8 0 32c0 8.8 7.2 16 16 16l32 0 8 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-8 0 0-8c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"]\n};\nconst faCheckDouble = {\n prefix: 'fas',\n iconName: 'check-double',\n icon: [448, 512, [], \"f560\", \"M342.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L160 178.7l-57.4-57.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l80 80c12.5 12.5 32.8 12.5 45.3 0l160-160zm96 128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L160 402.7 54.6 297.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0l256-256z\"]\n};\nconst faArrowDownAZ = {\n prefix: 'fas',\n iconName: 'arrow-down-a-z',\n icon: [576, 512, [\"sort-alpha-asc\", \"sort-alpha-down\"], \"f15d\", \"M183.6 469.6C177.5 476.2 169 480 160 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L128 365.7 128 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 301.7 32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 320c0-17.7 14.3-32 32-32l128 0c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9L429.3 416l50.7 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-128 0c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9L402.7 352 352 352c-17.7 0-32-14.3-32-32zM416 32c12.1 0 23.2 6.8 28.6 17.7l64 128 16 32c7.9 15.8 1.5 35-14.3 42.9s-35 1.5-42.9-14.3L460.2 224l-88.4 0-7.2 14.3c-7.9 15.8-27.1 22.2-42.9 14.3s-22.2-27.1-14.3-42.9l16-32 64-128C392.8 38.8 403.9 32 416 32zM395.8 176l40.4 0L416 135.6 395.8 176z\"]\n};\nconst faSortAlphaAsc = faArrowDownAZ;\nconst faSortAlphaDown = faArrowDownAZ;\nconst faMoneyBillWheat = {\n prefix: 'fas',\n iconName: 'money-bill-wheat',\n icon: [512, 512, [], \"e52a\", \"M176 0c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80c0-8.8 7.2-16 16-16zM56 16l48 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L56 64C42.7 64 32 53.3 32 40s10.7-24 24-24zM24 88l112 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L24 136c-13.3 0-24-10.7-24-24S10.7 88 24 88zm8 96c0-13.3 10.7-24 24-24l48 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24zM272 16c0-8.8 7.2-16 16-16c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80zM400 0c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16c-44.2 0-80-35.8-80-80c0-8.8 7.2-16 16-16zm80 144c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM352 128c8.8 0 16 7.2 16 16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-96 16c0 44.2-35.8 80-80 80c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16zM0 304c0-26.5 21.5-48 48-48l416 0c26.5 0 48 21.5 48 48l0 160c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 304zM48 416l0 48 48 0c0-26.5-21.5-48-48-48zM96 304l-48 0 0 48c26.5 0 48-21.5 48-48zM464 416c-26.5 0-48 21.5-48 48l48 0 0-48zM416 304c0 26.5 21.5 48 48 48l0-48-48 0zm-96 80a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nconst faCookie = {\n prefix: 'fas',\n iconName: 'cookie',\n icon: [512, 512, [127850], \"f563\", \"M247.2 17c-22.1-3.1-44.6 .9-64.4 11.4l-74 39.5C89.1 78.4 73.2 94.9 63.4 115L26.7 190.6c-9.8 20.1-13 42.9-9.1 64.9l14.5 82.8c3.9 22.1 14.6 42.3 30.7 57.9l60.3 58.4c16.1 15.6 36.6 25.6 58.7 28.7l83 11.7c22.1 3.1 44.6-.9 64.4-11.4l74-39.5c19.7-10.5 35.6-27 45.4-47.2l36.7-75.5c9.8-20.1 13-42.9 9.1-64.9l-14.6-82.8c-3.9-22.1-14.6-42.3-30.7-57.9L388.9 57.5c-16.1-15.6-36.6-25.6-58.7-28.7L247.2 17zM208 144a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM144 336a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm224-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faArrowRotateLeft = {\n prefix: 'fas',\n iconName: 'arrow-rotate-left',\n icon: [512, 512, [8634, \"arrow-left-rotate\", \"arrow-rotate-back\", \"arrow-rotate-backward\", \"undo\"], \"f0e2\", \"M125.7 160l50.3 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L48 224c-17.7 0-32-14.3-32-32L16 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 51.2L97.6 97.6c87.5-87.5 229.3-87.5 316.8 0s87.5 229.3 0 316.8s-229.3 87.5-316.8 0c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0c62.5 62.5 163.8 62.5 226.3 0s62.5-163.8 0-226.3s-163.8-62.5-226.3 0L125.7 160z\"]\n};\nconst faArrowLeftRotate = faArrowRotateLeft;\nconst faArrowRotateBack = faArrowRotateLeft;\nconst faArrowRotateBackward = faArrowRotateLeft;\nconst faUndo = faArrowRotateLeft;\nconst faHardDrive = {\n prefix: 'fas',\n iconName: 'hard-drive',\n icon: [512, 512, [128436, \"hdd\"], \"f0a0\", \"M0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 184.4c-17-15.2-39.4-24.4-64-24.4L64 256c-24.6 0-47 9.2-64 24.4L0 96zM64 288l384 0c35.3 0 64 28.7 64 64l0 64c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64zM320 416a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm128-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nconst faHdd = faHardDrive;\nconst faFaceGrinSquintTears = {\n prefix: 'fas',\n iconName: 'face-grin-squint-tears',\n icon: [512, 512, [129315, \"grin-squint-tears\"], \"f586\", \"M426.8 14.2C446-5 477.5-4.6 497.1 14.9s20 51 .7 70.3c-6.8 6.8-21.4 12.4-37.4 16.7c-16.3 4.4-34.1 7.5-46.3 9.3c-1.6 .2-3.1 .5-4.6 .6c-4.9 .8-9.1-2.8-9.5-7.4c-.1-.7 0-1.4 .1-2.1c1.6-11.2 4.6-29.6 9-47c.3-1.3 .7-2.6 1-3.9c4.3-15.9 9.8-30.5 16.7-37.4zm-44.7 19c-1.5 4.8-2.9 9.6-4.1 14.3c-4.8 18.9-8 38.5-9.7 50.3c-4 26.8 18.9 49.7 45.7 45.8c11.9-1.6 31.5-4.8 50.4-9.7c4.7-1.2 9.5-2.5 14.3-4.1C534.2 227.5 520.2 353.8 437 437c-83.2 83.2-209.5 97.2-307.2 41.8c1.5-4.8 2.8-9.6 4-14.3c4.8-18.9 8-38.5 9.7-50.3c4-26.8-18.9-49.7-45.7-45.8c-11.9 1.6-31.5 4.8-50.4 9.7c-4.7 1.2-9.5 2.5-14.3 4.1C-22.2 284.5-8.2 158.2 75 75C158.2-8.3 284.5-22.2 382.2 33.2zM51.5 410.1c18.5-5 38.8-8.3 50.9-10c.4-.1 .7-.1 1-.1c5.1-.2 9.2 4.3 8.4 9.6c-1.7 12.1-5 32.4-10 50.9C97.6 476.4 92 491 85.2 497.8C66 517 34.5 516.6 14.9 497.1s-20-51-.7-70.3c6.8-6.8 21.4-12.4 37.4-16.7zM416.9 209c-4.7-11.9-20.8-11-26.8 .3c-19 35.5-45 70.8-77.5 103.3S244.8 371.1 209.3 390c-11.3 6-12.2 22.1-.3 26.8c57.6 22.9 125.8 11 172.3-35.5s58.4-114.8 35.5-172.3zM87.1 285.1c2 2 4.6 3.2 7.3 3.4l56.1 5.1 5.1 56.1c.3 2.8 1.5 5.4 3.4 7.3c6.3 6.3 17.2 3.6 19.8-4.9l29.7-97.4c3.5-11.6-7.3-22.5-19-19L92 265.3c-8.6 2.6-11.3 13.4-4.9 19.8zM265.3 92l-29.7 97.4c-3.5 11.6 7.3 22.5 19 19l97.4-29.7c8.6-2.6 11.3-13.4 4.9-19.8c-2-2-4.6-3.2-7.3-3.4l-56.1-5.1-5.1-56.1c-.3-2.8-1.5-5.4-3.4-7.3c-6.3-6.3-17.2-3.6-19.8 4.9z\"]\n};\nconst faGrinSquintTears = faFaceGrinSquintTears;\nconst faDumbbell = {\n prefix: 'fas',\n iconName: 'dumbbell',\n icon: [640, 512, [], \"f44b\", \"M96 64c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 160 0 64 0 160c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-64-32 0c-17.7 0-32-14.3-32-32l0-64c-17.7 0-32-14.3-32-32s14.3-32 32-32l0-64c0-17.7 14.3-32 32-32l32 0 0-64zm448 0l0 64 32 0c17.7 0 32 14.3 32 32l0 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 64c0 17.7-14.3 32-32 32l-32 0 0 64c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-160 0-64 0-160c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32zM416 224l0 64-192 0 0-64 192 0z\"]\n};\nconst faRectangleList = {\n prefix: 'fas',\n iconName: 'rectangle-list',\n icon: [576, 512, [\"list-alt\"], \"f022\", \"M0 96C0 60.7 28.7 32 64 32l448 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zM128 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm32-128a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM128 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm96-248c-13.3 0-24 10.7-24 24s10.7 24 24 24l224 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-224 0zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24l224 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-224 0zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24l224 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-224 0z\"]\n};\nconst faListAlt = faRectangleList;\nconst faTarpDroplet = {\n prefix: 'fas',\n iconName: 'tarp-droplet',\n icon: [576, 512, [], \"e57c\", \"M288 160c-35.3 0-64-26.9-64-60c0-24 33.7-70.1 52.2-93.5c6.1-7.7 17.5-7.7 23.6 0C318.3 29.9 352 76 352 100c0 33.1-28.7 60-64 60zM64 128l133.5 0c13.2 37.3 48.7 64 90.5 64s77.4-26.7 90.5-64L512 128c35.3 0 64 28.7 64 64l0 160-128 0c-17.7 0-32 14.3-32 32l0 128L64 512c-35.3 0-64-28.7-64-64L0 192c0-35.3 28.7-64 64-64zM448 512l0-128 128 0L448 512zM96 256a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faHouseMedicalCircleCheck = {\n prefix: 'fas',\n iconName: 'house-medical-circle-check',\n icon: [640, 512, [], \"e511\", \"M320 368c0 59.5 29.5 112.1 74.8 144l-266.7 0c-35.3 0-64-28.7-64-64l0-160.4-32 0c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L522.1 193.9c-8.5-1.3-17.3-1.9-26.1-1.9c-54.7 0-103.5 24.9-135.8 64L320 256l0-48c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16l0 48-48 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l48 0 0 48c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16zm32 0a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L480 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nconst faPersonSkiingNordic = {\n prefix: 'fas',\n iconName: 'person-skiing-nordic',\n icon: [576, 512, [\"skiing-nordic\"], \"f7ca\", \"M336 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM227.2 160c1.9 0 3.8 .1 5.6 .3L201.6 254c-9.3 28 1.7 58.8 26.8 74.5l86.2 53.9L291.3 464l-88.5 0 41.1-88.1-32.4-20.3c-7.8-4.9-14.7-10.7-20.6-17.3L132.2 464l-32.4 0 54.2-257.6c4.6-1.5 9-4.1 12.7-7.8l23.1-23.1c9.9-9.9 23.4-15.5 37.5-15.5zM121.4 198.6c.4 .4 .8 .8 1.3 1.2L67 464l-43 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l135.3 0c.5 0 .9 0 1.4 0l158.6 0c.5 0 1 0 1.4 0L504 512c39.8 0 72-32.2 72-72l0-8c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 8c0 13.3-10.7 24-24 24l-69.4 0 27.6-179.3c10.5-5.2 17.8-16.1 17.8-28.7c0-17.7-14.3-32-32-32l-21.3 0c-12.9 0-24.6-7.8-29.5-19.7l-6.3-15c-14.6-35.1-44.1-61.9-80.5-73.1l-48.7-15c-11.1-3.4-22.7-5.2-34.4-5.2c-31 0-60.8 12.3-82.7 34.3l-23.1 23.1c-12.5 12.5-12.5 32.8 0 45.3zm308 89.4L402.3 464l-44.4 0 21.6-75.6c5.9-20.6-2.6-42.6-20.7-53.9L302 299l30.9-82.4 5.1 12.3C353 264.7 387.9 288 426.7 288l2.7 0z\"]\n};\nconst faSkiingNordic = faPersonSkiingNordic;\nconst faCalendarPlus = {\n prefix: 'fas',\n iconName: 'calendar-plus',\n icon: [448, 512, [], \"f271\", \"M96 32l0 32L48 64C21.5 64 0 85.5 0 112l0 48 448 0 0-48c0-26.5-21.5-48-48-48l-48 0 0-32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 32L160 64l0-32c0-17.7-14.3-32-32-32S96 14.3 96 32zM448 192L0 192 0 464c0 26.5 21.5 48 48 48l352 0c26.5 0 48-21.5 48-48l0-272zM224 248c13.3 0 24 10.7 24 24l0 56 56 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-56 0 0 56c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-56-56 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l56 0 0-56c0-13.3 10.7-24 24-24z\"]\n};\nconst faPlaneArrival = {\n prefix: 'fas',\n iconName: 'plane-arrival',\n icon: [640, 512, [128748], \"f5af\", \"M.3 166.9L0 68C0 57.7 9.5 50.1 19.5 52.3l35.6 7.9c10.6 2.3 19.2 9.9 23 20L96 128l127.3 37.6L181.8 20.4C178.9 10.2 186.6 0 197.2 0l40.1 0c11.6 0 22.2 6.2 27.9 16.3l109 193.8 107.2 31.7c15.9 4.7 30.8 12.5 43.7 22.8l34.4 27.6c24 19.2 18.1 57.3-10.7 68.2c-41.2 15.6-86.2 18.1-128.8 7L121.7 289.8c-11.1-2.9-21.2-8.7-29.3-16.9L9.5 189.4c-5.9-6-9.3-14.1-9.3-22.5zM32 448l576 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32zm96-80a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm128-16a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faCircleLeft = {\n prefix: 'fas',\n iconName: 'circle-left',\n icon: [512, 512, [61840, \"arrow-alt-circle-left\"], \"f359\", \"M512 256A256 256 0 1 0 0 256a256 256 0 1 0 512 0zM116.7 244.7l112-112c4.6-4.6 11.5-5.9 17.4-3.5s9.9 8.3 9.9 14.8l0 64 96 0c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32l-96 0 0 64c0 6.5-3.9 12.3-9.9 14.8s-12.9 1.1-17.4-3.5l-112-112c-6.2-6.2-6.2-16.4 0-22.6z\"]\n};\nconst faArrowAltCircleLeft = faCircleLeft;\nconst faTrainSubway = {\n prefix: 'fas',\n iconName: 'train-subway',\n icon: [448, 512, [\"subway\"], \"f239\", \"M96 0C43 0 0 43 0 96L0 352c0 48 35.2 87.7 81.1 94.9l-46 46C28.1 499.9 33.1 512 43 512l39.7 0c8.5 0 16.6-3.4 22.6-9.4L160 448l128 0 54.6 54.6c6 6 14.1 9.4 22.6 9.4l39.7 0c10 0 15-12.1 7.9-19.1l-46-46c46-7.1 81.1-46.9 81.1-94.9l0-256c0-53-43-96-96-96L96 0zM64 128c0-17.7 14.3-32 32-32l80 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32l-80 0c-17.7 0-32-14.3-32-32l0-96zM272 96l80 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32l-80 0c-17.7 0-32-14.3-32-32l0-96c0-17.7 14.3-32 32-32zM64 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm288-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faSubway = faTrainSubway;\nconst faChartGantt = {\n prefix: 'fas',\n iconName: 'chart-gantt',\n icon: [512, 512, [], \"e0e4\", \"M32 32c17.7 0 32 14.3 32 32l0 336c0 8.8 7.2 16 16 16l400 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L80 480c-44.2 0-80-35.8-80-80L0 64C0 46.3 14.3 32 32 32zm96 96c0-17.7 14.3-32 32-32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32zm96 64l128 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zm160 96l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faIndianRupeeSign = {\n prefix: 'fas',\n iconName: 'indian-rupee-sign',\n icon: [320, 512, [\"indian-rupee\", \"inr\"], \"e1bc\", \"M0 64C0 46.3 14.3 32 32 32l64 0 16 0 176 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-56.2 0c9.6 14.4 16.7 30.6 20.7 48l35.6 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-35.6 0c-13.2 58.3-61.9 103.2-122.2 110.9L274.6 422c14.4 10.3 17.7 30.3 7.4 44.6s-30.3 17.7-44.6 7.4L13.4 314C2.1 306-2.7 291.5 1.5 278.2S18.1 256 32 256l80 0c32.8 0 61-19.7 73.3-48L32 208c-17.7 0-32-14.3-32-32s14.3-32 32-32l153.3 0C173 115.7 144.8 96 112 96L96 96 32 96C14.3 96 0 81.7 0 64z\"]\n};\nconst faIndianRupee = faIndianRupeeSign;\nconst faInr = faIndianRupeeSign;\nconst faCropSimple = {\n prefix: 'fas',\n iconName: 'crop-simple',\n icon: [512, 512, [\"crop-alt\"], \"f565\", \"M128 32c0-17.7-14.3-32-32-32S64 14.3 64 32l0 32L32 64C14.3 64 0 78.3 0 96s14.3 32 32 32l32 0 0 256c0 35.3 28.7 64 64 64l224 0 0-64-224 0 0-352zM384 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-256c0-35.3-28.7-64-64-64L160 64l0 64 224 0 0 352z\"]\n};\nconst faCropAlt = faCropSimple;\nconst faMoneyBill1 = {\n prefix: 'fas',\n iconName: 'money-bill-1',\n icon: [576, 512, [\"money-bill-alt\"], \"f3d1\", \"M64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 64zm64 320l-64 0 0-64c35.3 0 64 28.7 64 64zM64 192l0-64 64 0c0 35.3-28.7 64-64 64zM448 384c0-35.3 28.7-64 64-64l0 64-64 0zm64-192c-35.3 0-64-28.7-64-64l64 0 0 64zM176 256a112 112 0 1 1 224 0 112 112 0 1 1 -224 0zm76-48c0 9.7 6.9 17.7 16 19.6l0 48.4-4 0c-11 0-20 9-20 20s9 20 20 20l24 0 24 0c11 0 20-9 20-20s-9-20-20-20l-4 0 0-68c0-11-9-20-20-20l-16 0c-11 0-20 9-20 20z\"]\n};\nconst faMoneyBillAlt = faMoneyBill1;\nconst faLeftLong = {\n prefix: 'fas',\n iconName: 'left-long',\n icon: [512, 512, [\"long-arrow-alt-left\"], \"f30a\", \"M177.5 414c-8.8 3.8-19 2-26-4.6l-144-136C2.7 268.9 0 262.6 0 256s2.7-12.9 7.5-17.4l144-136c7-6.6 17.2-8.4 26-4.6s14.5 12.5 14.5 22l0 72 288 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-288 0 0 72c0 9.6-5.7 18.2-14.5 22z\"]\n};\nconst faLongArrowAltLeft = faLeftLong;\nconst faDna = {\n prefix: 'fas',\n iconName: 'dna',\n icon: [448, 512, [129516], \"f471\", \"M416 0c17.7 0 32 14.3 32 32c0 59.8-30.3 107.5-69.4 146.6c-28 28-62.5 53.5-97.3 77.4l-2.5 1.7c-11.9 8.1-23.8 16.1-35.5 23.9c0 0 0 0 0 0s0 0 0 0s0 0 0 0l-1.6 1c-6 4-11.9 7.9-17.8 11.9c-20.9 14-40.8 27.7-59.3 41.5l118.5 0c-9.8-7.4-20.1-14.7-30.7-22.1l7-4.7 3-2c15.1-10.1 30.9-20.6 46.7-31.6c25 18.1 48.9 37.3 69.4 57.7C417.7 372.5 448 420.2 448 480c0 17.7-14.3 32-32 32s-32-14.3-32-32L64 480c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-59.8 30.3-107.5 69.4-146.6c28-28 62.5-53.5 97.3-77.4c-34.8-23.9-69.3-49.3-97.3-77.4C30.3 139.5 0 91.8 0 32C0 14.3 14.3 0 32 0S64 14.3 64 32l320 0c0-17.7 14.3-32 32-32zM338.6 384l-229.2 0c-10.1 10.6-18.6 21.3-25.5 32l280.2 0c-6.8-10.7-15.3-21.4-25.5-32zM109.4 128l229.2 0c10.1-10.7 18.6-21.3 25.5-32L83.9 96c6.8 10.7 15.3 21.3 25.5 32zm55.4 48c18.4 13.8 38.4 27.5 59.3 41.5c20.9-14 40.8-27.7 59.3-41.5l-118.5 0z\"]\n};\nconst faVirusSlash = {\n prefix: 'fas',\n iconName: 'virus-slash',\n icon: [640, 512, [], \"e075\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-154.3-121c-2-30.1 20.8-60.1 56-60.1l11.5 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-11.5 0c-49.9 0-74.9-60.3-39.6-95.6l8.2-8.2c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-8.2 8.2C412.3 118.4 352 93.4 352 43.5L352 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 11.5c0 49.9-60.3 74.9-95.6 39.6L184.2 75c-12.5-12.5-32.8-12.5-45.3 0c-1.6 1.6-3.1 3.4-4.3 5.3L38.8 5.1zm225.8 177c6.9-3.9 14.9-6.1 23.4-6.1c26.5 0 48 21.5 48 48c0 4.4-.6 8.7-1.7 12.7l-69.7-54.6zM402 412.7L144.7 210c-9.5 8.5-22.2 14-37.2 14L96 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l11.5 0c49.9 0 74.9 60.3 39.6 95.6l-8.2 8.2c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l8.2-8.2c35.3-35.3 95.6-10.3 95.6 39.6l0 11.5c0 17.7 14.3 32 32 32s32-14.3 32-32l0-11.5c0-31.2 23.6-52.7 50-55.7z\"]\n};\nconst faMinus = {\n prefix: 'fas',\n iconName: 'minus',\n icon: [448, 512, [8211, 8722, 10134, \"subtract\"], \"f068\", \"M432 256c0 17.7-14.3 32-32 32L48 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l352 0c17.7 0 32 14.3 32 32z\"]\n};\nconst faSubtract = faMinus;\nconst faChess = {\n prefix: 'fas',\n iconName: 'chess',\n icon: [512, 512, [], \"f439\", \"M144 16c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 16L96 32c-8.8 0-16 7.2-16 16s7.2 16 16 16l16 0 0 32L60.2 96C49.1 96 40 105.1 40 116.2c0 2.5 .5 4.9 1.3 7.3L73.8 208 72 208c-13.3 0-24 10.7-24 24s10.7 24 24 24l4 0L60 384l136 0L180 256l4 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-1.8 0 32.5-84.5c.9-2.3 1.3-4.8 1.3-7.3c0-11.2-9.1-20.2-20.2-20.2L144 96l0-32 16 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-16 0 0-16zM48 416L4.8 473.6C1.7 477.8 0 482.8 0 488c0 13.3 10.7 24 24 24l208 0c13.3 0 24-10.7 24-24c0-5.2-1.7-10.2-4.8-14.4L208 416 48 416zm288 0l-43.2 57.6c-3.1 4.2-4.8 9.2-4.8 14.4c0 13.3 10.7 24 24 24l176 0c13.3 0 24-10.7 24-24c0-5.2-1.7-10.2-4.8-14.4L464 416l-128 0zM304 208l0 51.9c0 7.8 2.8 15.3 8 21.1L339.2 312 337 384l125.5 0-3.3-72 28.3-30.8c5.4-5.9 8.5-13.6 8.5-21.7l0-51.5c0-8.8-7.2-16-16-16l-16 0c-8.8 0-16 7.2-16 16l0 16-24 0 0-16c0-8.8-7.2-16-16-16l-16 0c-8.8 0-16 7.2-16 16l0 16-24 0 0-16c0-8.8-7.2-16-16-16l-16 0c-8.8 0-16 7.2-16 16zm80 96c0-8.8 7.2-16 16-16s16 7.2 16 16l0 32-32 0 0-32z\"]\n};\nconst faArrowLeftLong = {\n prefix: 'fas',\n iconName: 'arrow-left-long',\n icon: [512, 512, [\"long-arrow-left\"], \"f177\", \"M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 288 480 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-370.7 0 73.4-73.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-128 128z\"]\n};\nconst faLongArrowLeft = faArrowLeftLong;\nconst faPlugCircleCheck = {\n prefix: 'fas',\n iconName: 'plug-circle-check',\n icon: [576, 512, [], \"e55c\", \"M96 0C78.3 0 64 14.3 64 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 32c0 77.4 55 142 128 156.8l0 67.2c0 17.7 14.3 32 32 32s32-14.3 32-32l0-67.2c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32L32 160zM576 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L416 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nconst faStreetView = {\n prefix: 'fas',\n iconName: 'street-view',\n icon: [512, 512, [], \"f21d\", \"M320 64A64 64 0 1 0 192 64a64 64 0 1 0 128 0zm-96 96c-35.3 0-64 28.7-64 64l0 48c0 17.7 14.3 32 32 32l1.8 0 11.1 99.5c1.8 16.2 15.5 28.5 31.8 28.5l38.7 0c16.3 0 30-12.3 31.8-28.5L318.2 304l1.8 0c17.7 0 32-14.3 32-32l0-48c0-35.3-28.7-64-64-64l-64 0zM132.3 394.2c13-2.4 21.7-14.9 19.3-27.9s-14.9-21.7-27.9-19.3c-32.4 5.9-60.9 14.2-82 24.8c-10.5 5.3-20.3 11.7-27.8 19.6C6.4 399.5 0 410.5 0 424c0 21.4 15.5 36.1 29.1 45c14.7 9.6 34.3 17.3 56.4 23.4C130.2 504.7 190.4 512 256 512s125.8-7.3 170.4-19.6c22.1-6.1 41.8-13.8 56.4-23.4c13.7-8.9 29.1-23.6 29.1-45c0-13.5-6.4-24.5-14-32.6c-7.5-7.9-17.3-14.3-27.8-19.6c-21-10.6-49.5-18.9-82-24.8c-13-2.4-25.5 6.3-27.9 19.3s6.3 25.5 19.3 27.9c30.2 5.5 53.7 12.8 69 20.5c3.2 1.6 5.8 3.1 7.9 4.5c3.6 2.4 3.6 7.2 0 9.6c-8.8 5.7-23.1 11.8-43 17.3C374.3 457 318.5 464 256 464s-118.3-7-157.7-17.9c-19.9-5.5-34.2-11.6-43-17.3c-3.6-2.4-3.6-7.2 0-9.6c2.1-1.4 4.8-2.9 7.9-4.5c15.3-7.7 38.8-14.9 69-20.5z\"]\n};\nconst faFrancSign = {\n prefix: 'fas',\n iconName: 'franc-sign',\n icon: [320, 512, [], \"e18f\", \"M80 32C62.3 32 48 46.3 48 64l0 160 0 96-16 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l16 0 0 64c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 80 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-80 0 0-64 144 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-144 0 0-96 176 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L80 32z\"]\n};\nconst faVolumeOff = {\n prefix: 'fas',\n iconName: 'volume-off',\n icon: [320, 512, [], \"f026\", \"M320 64c0-12.6-7.4-24-18.9-29.2s-25-3.1-34.4 5.3L131.8 160 64 160c-35.3 0-64 28.7-64 64l0 64c0 35.3 28.7 64 64 64l67.8 0L266.7 471.9c9.4 8.4 22.9 10.4 34.4 5.3S320 460.6 320 448l0-384z\"]\n};\nconst faHandsAslInterpreting = {\n prefix: 'fas',\n iconName: 'hands-asl-interpreting',\n icon: [640, 512, [\"american-sign-language-interpreting\", \"asl-interpreting\", \"hands-american-sign-language-interpreting\"], \"f2a3\", \"M156.6 46.3c7.9-15.8 1.5-35-14.3-42.9s-35-1.5-42.9 14.3L13.5 189.4C4.6 207.2 0 226.8 0 246.7L0 256c0 70.7 57.3 128 128 128l72 0 8 0 0-.3c35.2-2.7 65.4-22.8 82.1-51.7c8.8-15.3 3.6-34.9-11.7-43.7s-34.9-3.6-43.7 11.7c-7 12-19.9 20-34.7 20c-22.1 0-40-17.9-40-40s17.9-40 40-40c14.8 0 27.7 8 34.7 20c8.8 15.3 28.4 20.5 43.7 11.7s20.5-28.4 11.7-43.7c-12.8-22.1-33.6-39.1-58.4-47.1l80.8-22c17-4.6 27.1-22.2 22.5-39.3s-22.2-27.1-39.3-22.5L194.9 124.6l81.6-68c13.6-11.3 15.4-31.5 4.1-45.1S249.1-3.9 235.5 7.4L133.6 92.3l23-46zM483.4 465.7c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l85.9-171.7c8.9-17.8 13.5-37.4 13.5-57.2l0-9.3c0-70.7-57.3-128-128-128l-72 0-8 0 0 .3c-35.2 2.7-65.4 22.8-82.1 51.7c-8.9 15.3-3.6 34.9 11.7 43.7s34.9 3.6 43.7-11.7c7-12 19.9-20 34.7-20c22.1 0 40 17.9 40 40s-17.9 40-40 40c-14.8 0-27.7-8-34.7-20c-8.9-15.3-28.4-20.5-43.7-11.7s-20.5 28.4-11.7 43.7c12.8 22.1 33.6 39.1 58.4 47.1l-80.8 22c-17.1 4.7-27.1 22.2-22.5 39.3s22.2 27.1 39.3 22.5l100.7-27.5-81.6 68c-13.6 11.3-15.4 31.5-4.1 45.1s31.5 15.4 45.1 4.1l101.9-84.9-23 46z\"]\n};\nconst faAmericanSignLanguageInterpreting = faHandsAslInterpreting;\nconst faAslInterpreting = faHandsAslInterpreting;\nconst faHandsAmericanSignLanguageInterpreting = faHandsAslInterpreting;\nconst faGear = {\n prefix: 'fas',\n iconName: 'gear',\n icon: [512, 512, [9881, \"cog\"], \"f013\", \"M495.9 166.6c3.2 8.7 .5 18.4-6.4 24.6l-43.3 39.4c1.1 8.3 1.7 16.8 1.7 25.4s-.6 17.1-1.7 25.4l43.3 39.4c6.9 6.2 9.6 15.9 6.4 24.6c-4.4 11.9-9.7 23.3-15.8 34.3l-4.7 8.1c-6.6 11-14 21.4-22.1 31.2c-5.9 7.2-15.7 9.6-24.5 6.8l-55.7-17.7c-13.4 10.3-28.2 18.9-44 25.4l-12.5 57.1c-2 9.1-9 16.3-18.2 17.8c-13.8 2.3-28 3.5-42.5 3.5s-28.7-1.2-42.5-3.5c-9.2-1.5-16.2-8.7-18.2-17.8l-12.5-57.1c-15.8-6.5-30.6-15.1-44-25.4L83.1 425.9c-8.8 2.8-18.6 .3-24.5-6.8c-8.1-9.8-15.5-20.2-22.1-31.2l-4.7-8.1c-6.1-11-11.4-22.4-15.8-34.3c-3.2-8.7-.5-18.4 6.4-24.6l43.3-39.4C64.6 273.1 64 264.6 64 256s.6-17.1 1.7-25.4L22.4 191.2c-6.9-6.2-9.6-15.9-6.4-24.6c4.4-11.9 9.7-23.3 15.8-34.3l4.7-8.1c6.6-11 14-21.4 22.1-31.2c5.9-7.2 15.7-9.6 24.5-6.8l55.7 17.7c13.4-10.3 28.2-18.9 44-25.4l12.5-57.1c2-9.1 9-16.3 18.2-17.8C227.3 1.2 241.5 0 256 0s28.7 1.2 42.5 3.5c9.2 1.5 16.2 8.7 18.2 17.8l12.5 57.1c15.8 6.5 30.6 15.1 44 25.4l55.7-17.7c8.8-2.8 18.6-.3 24.5 6.8c8.1 9.8 15.5 20.2 22.1 31.2l4.7 8.1c6.1 11 11.4 22.4 15.8 34.3zM256 336a80 80 0 1 0 0-160 80 80 0 1 0 0 160z\"]\n};\nconst faCog = faGear;\nconst faDropletSlash = {\n prefix: 'fas',\n iconName: 'droplet-slash',\n icon: [640, 512, [\"tint-slash\"], \"f5c7\", \"M320 512c53.2 0 101.4-21.6 136.1-56.6l-298.3-235C140 257.1 128 292.3 128 320c0 106 86 192 192 192zM505.2 370.7c4.4-16.2 6.8-33.1 6.8-50.7c0-91.2-130.2-262.3-166.6-308.3C339.4 4.2 330.5 0 320.9 0l-1.8 0c-9.6 0-18.5 4.2-24.5 11.7C277.8 33 240.7 81.3 205.8 136L38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L505.2 370.7zM224 336c0 44.2 35.8 80 80 80c8.8 0 16 7.2 16 16s-7.2 16-16 16c-61.9 0-112-50.1-112-112c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nconst faTintSlash = faDropletSlash;\nconst faMosque = {\n prefix: 'fas',\n iconName: 'mosque',\n icon: [640, 512, [128332], \"f678\", \"M400 0c5 0 9.8 2.4 12.8 6.4c34.7 46.3 78.1 74.9 133.5 111.5c0 0 0 0 0 0s0 0 0 0c5.2 3.4 10.5 7 16 10.6c28.9 19.2 45.7 51.7 45.7 86.1c0 28.6-11.3 54.5-29.8 73.4l-356.4 0c-18.4-19-29.8-44.9-29.8-73.4c0-34.4 16.7-66.9 45.7-86.1c5.4-3.6 10.8-7.1 16-10.6c0 0 0 0 0 0s0 0 0 0C309.1 81.3 352.5 52.7 387.2 6.4c3-4 7.8-6.4 12.8-6.4zM288 512l0-72c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 72-48 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32l416 0c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-48 0 0-72c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 72-64 0 0-58c0-19-8.4-37-23-49.2L400 384l-25 20.8C360.4 417 352 435 352 454l0 58-64 0zM70.4 5.2c5.7-4.3 13.5-4.3 19.2 0l16 12C139.8 42.9 160 83.2 160 126l0 2L0 128l0-2C0 83.2 20.2 42.9 54.4 17.2l16-12zM0 160l160 0 0 136.6c-19.1 11.1-32 31.7-32 55.4l0 128c0 9.6 2.1 18.6 5.8 26.8c-6.6 3.4-14 5.2-21.8 5.2l-64 0c-26.5 0-48-21.5-48-48L0 176l0-16z\"]\n};\nconst faMosquito = {\n prefix: 'fas',\n iconName: 'mosquito',\n icon: [640, 512, [], \"e52b\", \"M463.7 505.9c9.8-8.9 10.7-24.3 2.1-34.3l-42.1-49 0-54.7c0-5.5-1.8-10.8-5.1-15.1L352 266.3l0-.3L485.4 387.8C542.4 447.6 640 405.2 640 320.6c0-47.9-34-88.3-79.4-94.2l-153-23.9 40.8-40.9c7.8-7.8 9.4-20.1 3.9-29.8L428.5 90.1l38.2-50.9c8-10.6 6.1-25.9-4.3-34.1s-25.2-6.3-33.2 4.4l-48 63.9c-5.9 7.9-6.6 18.6-1.7 27.2L402.2 140 352 190.3l0-38.2c0-14.9-10.2-27.4-24-31l0-57.2c0-4.4-3.6-8-8-8s-8 3.6-8 8l0 57.2c-13.8 3.6-24 16.1-24 31l0 38.1L237.8 140l22.6-39.5c4.9-8.6 4.2-19.3-1.7-27.2l-48-63.9c-8-10.6-22.8-12.6-33.2-4.4s-12.2 23.5-4.3 34.1l38.2 50.9-23.9 41.7c-5.5 9.7-3.9 22 3.9 29.8l40.8 40.9-153 23.9C34 232.3 0 272.7 0 320.6c0 84.6 97.6 127 154.6 67.1L288 266l0 .3-66.5 86.4c-3.3 4.3-5.1 9.6-5.1 15.1l0 54.7-42.1 49c-8.6 10.1-7.7 25.5 2.1 34.3s24.7 7.9 33.4-2.1l48-55.9c3.8-4.4 5.9-10.2 5.9-16.1l0-55.4L288 344.7l0 63.1c0 17.7 14.3 32 32 32s32-14.3 32-32l0-63.1 24.3 31.6 0 55.4c0 5.9 2.1 11.7 5.9 16.1l48 55.9c8.6 10.1 23.6 11 33.4 2.1z\"]\n};\nconst faStarOfDavid = {\n prefix: 'fas',\n iconName: 'star-of-david',\n icon: [512, 512, [10017], \"f69a\", \"M404.2 309.5L383.1 344l42.3 0-21.1-34.5zM371.4 256l-54-88-122.8 0-54 88 54 88 122.8 0 54-88zm65.7 0l53.4 87c3.6 5.9 5.5 12.7 5.5 19.6c0 20.7-16.8 37.4-37.4 37.4l-109.8 0-56.2 91.5C284.8 504.3 270.9 512 256 512s-28.8-7.7-36.6-20.5L163.3 400 53.4 400C32.8 400 16 383.2 16 362.6c0-6.9 1.9-13.7 5.5-19.6l53.4-87L21.5 169c-3.6-5.9-5.5-12.7-5.5-19.6C16 128.8 32.8 112 53.4 112l109.8 0 56.2-91.5C227.2 7.7 241.1 0 256 0s28.8 7.7 36.6 20.5L348.7 112l109.8 0c20.7 0 37.4 16.8 37.4 37.4c0 6.9-1.9 13.7-5.5 19.6l-53.4 87zm-54-88l21.1 34.5L425.4 168l-42.3 0zM283 112L256 68l-27 44 54 0zM128.9 168l-42.3 0 21.1 34.5L128.9 168zM107.8 309.5L86.6 344l42.3 0-21.1-34.5zM229 400l27 44 27-44-54 0z\"]\n};\nconst faPersonMilitaryRifle = {\n prefix: 'fas',\n iconName: 'person-military-rifle',\n icon: [512, 512, [], \"e54b\", \"M160 39c0-13 10-23.8 22.9-24.9L334.7 1.4C344 .7 352 8 352 17.4L352 48c0 8.8-7.2 16-16 16L185 64c-13.8 0-25-11.2-25-25zm17.6 57l156.8 0c1 5.2 1.6 10.5 1.6 16c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-5.5 .6-10.8 1.6-16zm228 364.3L352 369.7 352 480c0 1.3-.1 2.5-.2 3.8L177.5 234.9c16.6-7.1 34.6-10.9 53.3-10.9l50.4 0c15.9 0 31.3 2.8 45.8 7.9L421.9 67.7c-7.7-4.4-10.3-14.2-5.9-21.9s14.2-10.3 21.9-5.9l13.9 8 13.9 8c7.7 4.4 10.3 14.2 5.9 21.9L416 173.9l1.6 .9c15.3 8.8 20.6 28.4 11.7 43.7L392.6 282c2 2.8 3.9 5.8 5.7 8.8l76.1 128.8c11.2 19 4.9 43.5-14.1 54.8s-43.5 4.9-54.8-14.1zM320 512l-128 0c-17.7 0-32-14.3-32-32l0-110.3-53.6 90.6c-11.2 19-35.8 25.3-54.8 14.1s-25.3-35.8-14.1-54.8l76.1-128.8c9.4-15.8 21.7-29.3 36-40L331.1 510c-3.5 1.3-7.2 2-11.1 2zM296 320a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nconst faCartShopping = {\n prefix: 'fas',\n iconName: 'cart-shopping',\n icon: [576, 512, [128722, \"shopping-cart\"], \"f07a\", \"M0 24C0 10.7 10.7 0 24 0L69.5 0c22 0 41.5 12.8 50.6 32l411 0c26.3 0 45.5 25 38.6 50.4l-41 152.3c-8.5 31.4-37 53.3-69.5 53.3l-288.5 0 5.4 28.5c2.2 11.3 12.1 19.5 23.6 19.5L488 336c13.3 0 24 10.7 24 24s-10.7 24-24 24l-288.3 0c-34.6 0-64.3-24.6-70.7-58.5L77.4 54.5c-.7-3.8-4-6.5-7.9-6.5L24 48C10.7 48 0 37.3 0 24zM128 464a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm336-48a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nconst faShoppingCart = faCartShopping;\nconst faVials = {\n prefix: 'fas',\n iconName: 'vials',\n icon: [512, 512, [], \"f493\", \"M0 64C0 46.3 14.3 32 32 32l56 0 48 0 56 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 304c0 44.2-35.8 80-80 80s-80-35.8-80-80L32 96C14.3 96 0 81.7 0 64zM136 96L88 96l0 160 48 0 0-160zM288 64c0-17.7 14.3-32 32-32l56 0 48 0 56 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 304c0 44.2-35.8 80-80 80s-80-35.8-80-80l0-304c-17.7 0-32-14.3-32-32zM424 96l-48 0 0 160 48 0 0-160z\"]\n};\nconst faPlugCirclePlus = {\n prefix: 'fas',\n iconName: 'plug-circle-plus',\n icon: [576, 512, [], \"e55f\", \"M96 0C78.3 0 64 14.3 64 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 32c0 77.4 55 142 128 156.8l0 67.2c0 17.7 14.3 32 32 32s32-14.3 32-32l0-67.2c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32L32 160zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm16-208l0 48 48 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-48 0 0 48c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-48-48 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l48 0 0-48c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nconst faPlaceOfWorship = {\n prefix: 'fas',\n iconName: 'place-of-worship',\n icon: [640, 512, [], \"f67f\", \"M224 109.3l0 108.3L183.3 242c-14.5 8.7-23.3 24.3-23.3 41.2L160 512l96 0 0-96c0-35.3 28.7-64 64-64s64 28.7 64 64l0 96 96 0 0-228.8c0-16.9-8.8-32.5-23.3-41.2L416 217.6l0-108.3c0-8.5-3.4-16.6-9.4-22.6L331.3 11.3c-6.2-6.2-16.4-6.2-22.6 0L233.4 86.6c-6 6-9.4 14.1-9.4 22.6zM24.9 330.3C9.5 338.8 0 354.9 0 372.4L0 464c0 26.5 21.5 48 48 48l80 0 0-238.4L24.9 330.3zM592 512c26.5 0 48-21.5 48-48l0-91.6c0-17.5-9.5-33.6-24.9-42.1L512 273.6 512 512l80 0z\"]\n};\nconst faGripVertical = {\n prefix: 'fas',\n iconName: 'grip-vertical',\n icon: [320, 512, [], \"f58e\", \"M40 352l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zm192 0l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zM40 320c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0zM232 192l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zM40 160c-22.1 0-40-17.9-40-40L0 72C0 49.9 17.9 32 40 32l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0zM232 32l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40z\"]\n};\nconst faArrowTurnUp = {\n prefix: 'fas',\n iconName: 'arrow-turn-up',\n icon: [384, 512, [\"level-up\"], \"f148\", \"M32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c53 0 96-43 96-96l0-306.7 73.4 73.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 109.3 160 416c0 17.7-14.3 32-32 32l-96 0z\"]\n};\nconst faLevelUp = faArrowTurnUp;\nconst faU = {\n prefix: 'fas',\n iconName: 'u',\n icon: [384, 512, [117], \"55\", \"M32 32c17.7 0 32 14.3 32 32l0 224c0 70.7 57.3 128 128 128s128-57.3 128-128l0-224c0-17.7 14.3-32 32-32s32 14.3 32 32l0 224c0 106-86 192-192 192S0 394 0 288L0 64C0 46.3 14.3 32 32 32z\"]\n};\nconst faSquareRootVariable = {\n prefix: 'fas',\n iconName: 'square-root-variable',\n icon: [576, 512, [\"square-root-alt\"], \"f698\", \"M282.6 78.1c8-27.3 33-46.1 61.4-46.1l200 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L344 96 238.7 457c-3.6 12.3-14.1 21.2-26.8 22.8s-25.1-4.6-31.5-15.6L77.6 288 32 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l45.6 0c22.8 0 43.8 12.1 55.3 31.8l65.2 111.8L282.6 78.1zM393.4 233.4c12.5-12.5 32.8-12.5 45.3 0L480 274.7l41.4-41.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L525.3 320l41.4 41.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L480 365.3l-41.4 41.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L434.7 320l-41.4-41.4c-12.5-12.5-12.5-32.8 0-45.3z\"]\n};\nconst faSquareRootAlt = faSquareRootVariable;\nconst faClock = {\n prefix: 'fas',\n iconName: 'clock',\n icon: [512, 512, [128339, \"clock-four\"], \"f017\", \"M256 0a256 256 0 1 1 0 512A256 256 0 1 1 256 0zM232 120l0 136c0 8 4 15.5 10.7 20l96 64c11 7.4 25.9 4.4 33.3-6.7s4.4-25.9-6.7-33.3L280 243.2 280 120c0-13.3-10.7-24-24-24s-24 10.7-24 24z\"]\n};\nconst faClockFour = faClock;\nconst faBackwardStep = {\n prefix: 'fas',\n iconName: 'backward-step',\n icon: [320, 512, [\"step-backward\"], \"f048\", \"M267.5 440.6c9.5 7.9 22.8 9.7 34.1 4.4s18.4-16.6 18.4-29l0-320c0-12.4-7.2-23.7-18.4-29s-24.5-3.6-34.1 4.4l-192 160L64 241 64 96c0-17.7-14.3-32-32-32S0 78.3 0 96L0 416c0 17.7 14.3 32 32 32s32-14.3 32-32l0-145 11.5 9.6 192 160z\"]\n};\nconst faStepBackward = faBackwardStep;\nconst faPallet = {\n prefix: 'fas',\n iconName: 'pallet',\n icon: [640, 512, [], \"f482\", \"M32 320c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 64-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0 224 0 224 0 64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-64 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0-224 0L96 320l-64 0zm96 64l160 0 0 64-160 0 0-64zm224 0l160 0 0 64-160 0 0-64z\"]\n};\nconst faFaucet = {\n prefix: 'fas',\n iconName: 'faucet',\n icon: [512, 512, [], \"e005\", \"M192 96l0 12L96 96c-17.7 0-32 14.3-32 32s14.3 32 32 32l96-12 31-3.9 1-.1 1 .1 31 3.9 96 12c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 12 0-12c0-17.7-14.3-32-32-32s-32 14.3-32 32zM32 256c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l100.1 0c20.2 29 53.9 48 91.9 48s71.7-19 91.9-48l36.1 0c17.7 0 32 14.3 32 32s14.3 32 32 32l64 0c17.7 0 32-14.3 32-32c0-88.4-71.6-160-160-160l-32 0-22.6-22.6c-6-6-14.1-9.4-22.6-9.4L256 224l0-43.8-32-4-32 4 0 43.8-18.7 0c-8.5 0-16.6 3.4-22.6 9.4L128 256l-96 0z\"]\n};\nconst faBaseballBatBall = {\n prefix: 'fas',\n iconName: 'baseball-bat-ball',\n icon: [512, 512, [], \"f432\", \"M424 0c-12.4 0-24.2 4.9-33 13.7L233.5 171.2c-10.5 10.5-19.8 22.1-27.7 34.6L132.7 321.6c-7.3 11.5-15.8 22.2-25.5 31.9L69.9 390.7l51.3 51.3 37.3-37.3c9.6-9.6 20.3-18.2 31.9-25.5l115.8-73.1c12.5-7.9 24.1-17.2 34.6-27.7L498.3 121c8.7-8.7 13.7-20.6 13.7-33s-4.9-24.2-13.7-33L457 13.7C448.2 4.9 436.4 0 424 0zm88 432a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM15 399c-9.4 9.4-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L49 399c-9.4-9.4-24.6-9.4-33.9 0z\"]\n};\nconst faS = {\n prefix: 'fas',\n iconName: 's',\n icon: [320, 512, [115], \"53\", \"M99.1 105.4C79 114 68.2 127.2 65.2 144.8c-2.4 14.1-.7 23.2 2 29.4c2.8 6.3 7.9 12.4 16.7 18.6c19.2 13.4 48.3 22.1 84.9 32.5c1 .3 1.9 .6 2.9 .8c32.7 9.3 72 20.6 100.9 40.7c15.7 10.9 29.9 25.5 38.6 45.1c8.8 19.8 10.8 42 6.6 66.3c-7.3 42.5-35.3 71.7-71.8 87.3c-35.4 15.2-79.1 17.9-123.7 10.9l-.2 0s0 0 0 0c-24-3.9-62.7-17.1-87.6-25.6c-4.8-1.7-9.2-3.1-12.8-4.3C5.1 440.8-3.9 422.7 1.6 405.9s23.7-25.8 40.5-20.3c4.9 1.6 10.2 3.4 15.9 5.4c25.4 8.6 56.4 19.2 74.4 22.1c36.8 5.7 67.5 2.5 88.5-6.5c20.1-8.6 30.8-21.8 33.9-39.4c2.4-14.1 .7-23.2-2-29.4c-2.8-6.3-7.9-12.4-16.7-18.6c-19.2-13.4-48.3-22.1-84.9-32.5c-1-.3-1.9-.6-2.9-.8c-32.7-9.3-72-20.6-100.9-40.7c-15.7-10.9-29.9-25.5-38.6-45.1c-8.8-19.8-10.8-42-6.6-66.3l31.5 5.5L2.1 133.9C9.4 91.4 37.4 62.2 73.9 46.6c35.4-15.2 79.1-17.9 123.7-10.9c13 2 52.4 9.6 66.6 13.4c17.1 4.5 27.2 22.1 22.7 39.2s-22.1 27.2-39.2 22.7c-11.2-3-48.1-10.2-60.1-12l4.9-31.5-4.9 31.5c-36.9-5.8-67.5-2.5-88.6 6.5z\"]\n};\nconst faTimeline = {\n prefix: 'fas',\n iconName: 'timeline',\n icon: [640, 512, [], \"e29c\", \"M128 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm32 97.3c28.3-12.3 48-40.5 48-73.3c0-44.2-35.8-80-80-80S48 51.8 48 96c0 32.8 19.7 61 48 73.3L96 224l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l256 0 0 54.7c-28.3 12.3-48 40.5-48 73.3c0 44.2 35.8 80 80 80s80-35.8 80-80c0-32.8-19.7-61-48-73.3l0-54.7 256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-54.7c28.3-12.3 48-40.5 48-73.3c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 32.8 19.7 61 48 73.3l0 54.7-320 0 0-54.7zM488 96a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM320 392a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faKeyboard = {\n prefix: 'fas',\n iconName: 'keyboard',\n icon: [576, 512, [9000], \"f11c\", \"M64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L64 64zm16 64l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM64 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm16 80l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80-176c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm16 80l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM160 336c0-8.8 7.2-16 16-16l224 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-224 0c-8.8 0-16-7.2-16-16l0-32zM272 128l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM256 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM368 128l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM352 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM464 128l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM448 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm16 80l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16z\"]\n};\nconst faCaretDown = {\n prefix: 'fas',\n iconName: 'caret-down',\n icon: [320, 512, [], \"f0d7\", \"M137.4 374.6c12.5 12.5 32.8 12.5 45.3 0l128-128c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8L32 192c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l128 128z\"]\n};\nconst faHouseChimneyMedical = {\n prefix: 'fas',\n iconName: 'house-chimney-medical',\n icon: [576, 512, [\"clinic-medical\"], \"f7f2\", \"M575.8 255.5c0 18-15 32.1-32 32.1l-32 0 .7 160.2c.2 35.5-28.5 64.3-64 64.3l-320.4 0c-35.3 0-64-28.7-64-64l0-160.4-32 0c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L416 100.7 416 64c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 121 52.8 46.4c8 7 12 15 11 24zM272 192c-8.8 0-16 7.2-16 16l0 48-48 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l48 0 0 48c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-48 48 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-48 0 0-48c0-8.8-7.2-16-16-16l-32 0z\"]\n};\nconst faClinicMedical = faHouseChimneyMedical;\nconst faTemperatureThreeQuarters = {\n prefix: 'fas',\n iconName: 'temperature-three-quarters',\n icon: [320, 512, [\"temperature-3\", \"thermometer-3\", \"thermometer-three-quarters\"], \"f2c8\", \"M160 64c-26.5 0-48 21.5-48 48l0 164.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5L208 112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112l0 164.4c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6L48 112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3L144 144c0-8.8 7.2-16 16-16s16 7.2 16 16l0 178.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nconst faTemperature3 = faTemperatureThreeQuarters;\nconst faThermometer3 = faTemperatureThreeQuarters;\nconst faThermometerThreeQuarters = faTemperatureThreeQuarters;\nconst faMobileScreen = {\n prefix: 'fas',\n iconName: 'mobile-screen',\n icon: [384, 512, [\"mobile-android-alt\"], \"f3cf\", \"M16 64C16 28.7 44.7 0 80 0L304 0c35.3 0 64 28.7 64 64l0 384c0 35.3-28.7 64-64 64L80 512c-35.3 0-64-28.7-64-64L16 64zM144 448c0 8.8 7.2 16 16 16l64 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-64 0c-8.8 0-16 7.2-16 16zM304 64L80 64l0 320 224 0 0-320z\"]\n};\nconst faMobileAndroidAlt = faMobileScreen;\nconst faPlaneUp = {\n prefix: 'fas',\n iconName: 'plane-up',\n icon: [512, 512, [], \"e22d\", \"M192 93.7C192 59.5 221 0 256 0c36 0 64 59.5 64 93.7l0 66.3L497.8 278.5c8.9 5.9 14.2 15.9 14.2 26.6l0 56.7c0 10.9-10.7 18.6-21.1 15.2L320 320l0 80 57.6 43.2c4 3 6.4 7.8 6.4 12.8l0 42c0 7.8-6.3 14-14 14c-1.3 0-2.6-.2-3.9-.5L256 480 145.9 511.5c-1.3 .4-2.6 .5-3.9 .5c-7.8 0-14-6.3-14-14l0-42c0-5 2.4-9.8 6.4-12.8L192 400l0-80L21.1 377C10.7 380.4 0 372.7 0 361.8l0-56.7c0-10.7 5.3-20.7 14.2-26.6L192 160l0-66.3z\"]\n};\nconst faPiggyBank = {\n prefix: 'fas',\n iconName: 'piggy-bank',\n icon: [576, 512, [], \"f4d3\", \"M400 96l0 .7c-5.3-.4-10.6-.7-16-.7L256 96c-16.5 0-32.5 2.1-47.8 6c-.1-2-.2-4-.2-6c0-53 43-96 96-96s96 43 96 96zm-16 32c3.5 0 7 .1 10.4 .3c4.2 .3 8.4 .7 12.6 1.3C424.6 109.1 450.8 96 480 96l11.5 0c10.4 0 18 9.8 15.5 19.9l-13.8 55.2c15.8 14.8 28.7 32.8 37.5 52.9l13.3 0c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32l-32 0c-9.1 12.1-19.9 22.9-32 32l0 64c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-32-128 0 0 32c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-64c-34.9-26.2-58.7-66.3-63.2-112L68 304c-37.6 0-68-30.4-68-68s30.4-68 68-68l4 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-4 0c-11 0-20 9-20 20s9 20 20 20l31.2 0c12.1-59.8 57.7-107.5 116.3-122.8c12.9-3.4 26.5-5.2 40.5-5.2l128 0zm64 136a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nconst faBatteryHalf = {\n prefix: 'fas',\n iconName: 'battery-half',\n icon: [576, 512, [\"battery-3\"], \"f242\", \"M464 160c8.8 0 16 7.2 16 16l0 160c0 8.8-7.2 16-16 16L80 352c-8.8 0-16-7.2-16-16l0-160c0-8.8 7.2-16 16-16l384 0zM80 96C35.8 96 0 131.8 0 176L0 336c0 44.2 35.8 80 80 80l384 0c44.2 0 80-35.8 80-80l0-16c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l0-16c0-44.2-35.8-80-80-80L80 96zm208 96L96 192l0 128 192 0 0-128z\"]\n};\nconst faBattery3 = faBatteryHalf;\nconst faMountainCity = {\n prefix: 'fas',\n iconName: 'mountain-city',\n icon: [640, 512, [], \"e52e\", \"M336 0c-26.5 0-48 21.5-48 48l0 92.1 71.4 118.4c2.5-1.6 5.4-2.5 8.6-2.5l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-3.5 0 73.8 122.4c12.4 20.6 12.9 46.3 1.2 67.3c-.4 .8-.9 1.6-1.4 2.3L592 512c26.5 0 48-21.5 48-48l0-224c0-26.5-21.5-48-48-48l-24 0 0-72c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 72-40 0 0-144c0-26.5-21.5-48-48-48L336 0zm32 64l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM352 176c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm160 96c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm16 80l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM224 188.9L283.8 288 223 288l-48 64-24.6-41.2L224 188.9zm29.4-44.2C247.1 134.3 236 128 224 128s-23.1 6.3-29.4 16.7L5.1 458.9c-6.5 10.8-6.7 24.3-.7 35.3S22 512 34.5 512l379.1 0c12.5 0 24-6.8 30.1-17.8s5.8-24.5-.7-35.3L253.4 144.7z\"]\n};\nconst faCoins = {\n prefix: 'fas',\n iconName: 'coins',\n icon: [512, 512, [], \"f51e\", \"M512 80c0 18-14.3 34.6-38.4 48c-29.1 16.1-72.5 27.5-122.3 30.9c-3.7-1.8-7.4-3.5-11.3-5C300.6 137.4 248.2 128 192 128c-8.3 0-16.4 .2-24.5 .6l-1.1-.6C142.3 114.6 128 98 128 80c0-44.2 86-80 192-80S512 35.8 512 80zM160.7 161.1c10.2-.7 20.7-1.1 31.3-1.1c62.2 0 117.4 12.3 152.5 31.4C369.3 204.9 384 221.7 384 240c0 4-.7 7.9-2.1 11.7c-4.6 13.2-17 25.3-35 35.5c0 0 0 0 0 0c-.1 .1-.3 .1-.4 .2c0 0 0 0 0 0s0 0 0 0c-.3 .2-.6 .3-.9 .5c-35 19.4-90.8 32-153.6 32c-59.6 0-112.9-11.3-148.2-29.1c-1.9-.9-3.7-1.9-5.5-2.9C14.3 274.6 0 258 0 240c0-34.8 53.4-64.5 128-75.4c10.5-1.5 21.4-2.7 32.7-3.5zM416 240c0-21.9-10.6-39.9-24.1-53.4c28.3-4.4 54.2-11.4 76.2-20.5c16.3-6.8 31.5-15.2 43.9-25.5l0 35.4c0 19.3-16.5 37.1-43.8 50.9c-14.6 7.4-32.4 13.7-52.4 18.5c.1-1.8 .2-3.5 .2-5.3zm-32 96c0 18-14.3 34.6-38.4 48c-1.8 1-3.6 1.9-5.5 2.9C304.9 404.7 251.6 416 192 416c-62.8 0-118.6-12.6-153.6-32C14.3 370.6 0 354 0 336l0-35.4c12.5 10.3 27.6 18.7 43.9 25.5C83.4 342.6 135.8 352 192 352s108.6-9.4 148.1-25.9c7.8-3.2 15.3-6.9 22.4-10.9c6.1-3.4 11.8-7.2 17.2-11.2c1.5-1.1 2.9-2.3 4.3-3.4l0 3.4 0 5.7 0 26.3zm32 0l0-32 0-25.9c19-4.2 36.5-9.5 52.1-16c16.3-6.8 31.5-15.2 43.9-25.5l0 35.4c0 10.5-5 21-14.9 30.9c-16.3 16.3-45 29.7-81.3 38.4c.1-1.7 .2-3.5 .2-5.3zM192 448c56.2 0 108.6-9.4 148.1-25.9c16.3-6.8 31.5-15.2 43.9-25.5l0 35.4c0 44.2-86 80-192 80S0 476.2 0 432l0-35.4c12.5 10.3 27.6 18.7 43.9 25.5C83.4 438.6 135.8 448 192 448z\"]\n};\nconst faKhanda = {\n prefix: 'fas',\n iconName: 'khanda',\n icon: [512, 512, [9772], \"f66d\", \"M245.8 3.7c5.9-4.9 14.6-4.9 20.5 0l48 40c5.9 4.9 7.5 13.2 3.8 19.9c0 0 0 0 0 0s0 0 0 0s0 0 0 0s0 0 0 0l-.1 .1-.3 .6c-.3 .5-.7 1.3-1.2 2.3c-1 2-2.6 5-4.4 8.6c-.5 .9-.9 1.9-1.4 2.9C344.9 97.4 368 134 368 176s-23.1 78.6-57.3 97.8c.5 1 1 2 1.4 2.9c1.8 3.7 3.3 6.6 4.4 8.6c.5 1 .9 1.8 1.2 2.3l.3 .6 .1 .1s0 0 0 0s0 0 0 0c3.6 6.7 2 15-3.8 19.9L272 343.5l0 19.8 35.6-24.5 41.1-28.2c42.8-29.4 68.4-78 68.4-130c0-31.1-9.2-61.6-26.5-87.5l-2.8-4.2c-4-6-3.5-14 1.3-19.5s12.7-7 19.2-3.7L401.1 80c7.2-14.3 7.2-14.3 7.2-14.3s0 0 0 0s0 0 0 0l.1 0 .3 .2 1 .5c.8 .4 2 1.1 3.5 1.9c2.9 1.7 7 4.1 11.8 7.3c9.6 6.4 22.5 16.1 35.4 29c25.7 25.7 52.7 65.6 52.7 119.3c0 53.1-26.4 100.5-51.2 133.6c-12.6 16.7-25.1 30.3-34.5 39.7c-4.7 4.7-8.7 8.4-11.5 10.9c-1.4 1.3-2.5 2.2-3.3 2.9l-.9 .8-.3 .2-.1 .1c0 0 0 0 0 0s0 0 0 0L401.1 400l10.2 12.3c-5.1 4.3-12.4 4.9-18.2 1.6l-75.6-43-32.7 22.5 45.5 31.3c1.8-.4 3.7-.7 5.7-.7c13.3 0 24 10.7 24 24s-10.7 24-24 24c-12.2 0-22.3-9.1-23.8-21L272 423.4l0 28.9c9.6 5.5 16 15.9 16 27.7c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-11.8 6.4-22.2 16-27.7l0-28.1-40.3 27.7C197.8 463.3 187.9 472 176 472c-13.3 0-24-10.7-24-24s10.7-24 24-24c2.2 0 4.4 .3 6.5 .9l45.8-31.5-32.7-22.5-75.6 43c-5.8 3.3-13 2.7-18.2-1.6L112 400c-10.2 12.3-10.2 12.3-10.3 12.3s0 0 0 0s0 0 0 0l-.1-.1-.3-.2-.9-.8c-.8-.7-1.9-1.7-3.3-2.9c-2.8-2.5-6.7-6.2-11.5-10.9c-9.4-9.4-21.9-23-34.5-39.7C26.4 324.5 0 277.1 0 224c0-53.7 26.9-93.6 52.7-119.3c12.9-12.9 25.8-22.6 35.4-29C93 72.5 97 70 99.9 68.4c1.5-.8 2.6-1.5 3.5-1.9l1-.5 .3-.2 .1 0c0 0 0 0 0 0s0 0 0 0L112 80l-7.2-14.3c6.5-3.2 14.3-1.7 19.2 3.7s5.3 13.4 1.3 19.5l-2.8 4.2C105.2 119 96 149.5 96 180.6c0 51.9 25.6 100.6 68.4 130l41.1 28.2L240 362.6l0-19.1-42.2-35.2c-5.9-4.9-7.5-13.2-3.8-19.9c0 0 0 0 0 0s0 0 0 0s0 0 0 0l.1-.1 .3-.6c.3-.5 .7-1.3 1.2-2.3c1-2 2.6-5 4.4-8.6c.5-.9 .9-1.9 1.4-2.9C167.1 254.6 144 218 144 176s23.1-78.6 57.3-97.8c-.5-1-1-2-1.4-2.9c-1.8-3.7-3.3-6.6-4.4-8.6c-.5-1-.9-1.8-1.2-2.3l-.3-.6-.1-.1s0 0 0 0s0 0 0 0s0 0 0 0c-3.6-6.7-2-15 3.8-19.9l48-40zM220.2 122.9c-17 11.5-28.2 31-28.2 53.1s11.2 41.6 28.2 53.1C227 210.2 232 190.9 232 176s-5-34.2-11.8-53.1zm71.5 106.2c17-11.5 28.2-31 28.2-53.1s-11.2-41.6-28.2-53.1C285 141.8 280 161.1 280 176s5 34.2 11.8 53.1z\"]\n};\nconst faSliders = {\n prefix: 'fas',\n iconName: 'sliders',\n icon: [512, 512, [\"sliders-h\"], \"f1de\", \"M0 416c0 17.7 14.3 32 32 32l54.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48L480 448c17.7 0 32-14.3 32-32s-14.3-32-32-32l-246.7 0c-12.3-28.3-40.5-48-73.3-48s-61 19.7-73.3 48L32 384c-17.7 0-32 14.3-32 32zm128 0a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM320 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32-80c-32.8 0-61 19.7-73.3 48L32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l246.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48l54.7 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-54.7 0c-12.3-28.3-40.5-48-73.3-48zM192 128a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm73.3-64C253 35.7 224.8 16 192 16s-61 19.7-73.3 48L32 64C14.3 64 0 78.3 0 96s14.3 32 32 32l86.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48L480 128c17.7 0 32-14.3 32-32s-14.3-32-32-32L265.3 64z\"]\n};\nconst faSlidersH = faSliders;\nconst faFolderTree = {\n prefix: 'fas',\n iconName: 'folder-tree',\n icon: [576, 512, [], \"f802\", \"M64 32C64 14.3 49.7 0 32 0S0 14.3 0 32l0 96L0 384c0 35.3 28.7 64 64 64l192 0 0-64L64 384l0-224 192 0 0-64L64 96l0-64zM288 192c0 17.7 14.3 32 32 32l224 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32l-98.7 0c-8.5 0-16.6-3.4-22.6-9.4L409.4 9.4c-6-6-14.1-9.4-22.6-9.4L320 0c-17.7 0-32 14.3-32 32l0 160zm0 288c0 17.7 14.3 32 32 32l224 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32l-98.7 0c-8.5 0-16.6-3.4-22.6-9.4l-13.3-13.3c-6-6-14.1-9.4-22.6-9.4L320 288c-17.7 0-32 14.3-32 32l0 160z\"]\n};\nconst faNetworkWired = {\n prefix: 'fas',\n iconName: 'network-wired',\n icon: [640, 512, [], \"f6ff\", \"M256 64l128 0 0 64-128 0 0-64zM240 0c-26.5 0-48 21.5-48 48l0 96c0 26.5 21.5 48 48 48l48 0 0 32L32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0 0 32-48 0c-26.5 0-48 21.5-48 48l0 96c0 26.5 21.5 48 48 48l160 0c26.5 0 48-21.5 48-48l0-96c0-26.5-21.5-48-48-48l-48 0 0-32 256 0 0 32-48 0c-26.5 0-48 21.5-48 48l0 96c0 26.5 21.5 48 48 48l160 0c26.5 0 48-21.5 48-48l0-96c0-26.5-21.5-48-48-48l-48 0 0-32 96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-256 0 0-32 48 0c26.5 0 48-21.5 48-48l0-96c0-26.5-21.5-48-48-48L240 0zM96 448l0-64 128 0 0 64L96 448zm320-64l128 0 0 64-128 0 0-64z\"]\n};\nconst faMapPin = {\n prefix: 'fas',\n iconName: 'map-pin',\n icon: [320, 512, [128205], \"f276\", \"M16 144a144 144 0 1 1 288 0A144 144 0 1 1 16 144zM160 80c8.8 0 16-7.2 16-16s-7.2-16-16-16c-53 0-96 43-96 96c0 8.8 7.2 16 16 16s16-7.2 16-16c0-35.3 28.7-64 64-64zM128 480l0-162.9c10.4 1.9 21.1 2.9 32 2.9s21.6-1 32-2.9L192 480c0 17.7-14.3 32-32 32s-32-14.3-32-32z\"]\n};\nconst faHamsa = {\n prefix: 'fas',\n iconName: 'hamsa',\n icon: [512, 512, [], \"f665\", \"M34.6 288L80 288c8.8 0 16-7.2 16-16L96 72c0-22.1 17.9-40 40-40s40 17.9 40 40l0 132c0 11 9 20 20 20s20-9 20-20l0-164c0-22.1 17.9-40 40-40s40 17.9 40 40l0 164c0 11 9 20 20 20s20-9 20-20l0-132c0-22.1 17.9-40 40-40s40 17.9 40 40l0 200c0 8.8 7.2 16 16 16l45.4 0c19.1 0 34.6 15.5 34.6 34.6c0 8.6-3.2 16.9-9 23.3L416.6 441c-41.1 45.2-99.4 71-160.6 71s-119.4-25.8-160.6-71L9 345.9c-5.8-6.4-9-14.7-9-23.3C0 303.5 15.5 288 34.6 288zM256 288c-38.4 0-76.8 35.8-90.6 50.2c-3.6 3.7-5.4 8.7-5.4 13.8s1.8 10.1 5.4 13.8C179.2 380.2 217.6 416 256 416s76.8-35.8 90.6-50.2c3.6-3.7 5.4-8.7 5.4-13.8s-1.8-10.1-5.4-13.8C332.8 323.8 294.4 288 256 288zm0 32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faCentSign = {\n prefix: 'fas',\n iconName: 'cent-sign',\n icon: [384, 512, [], \"e3f5\", \"M224 0c17.7 0 32 14.3 32 32l0 34.7c30.9 5.2 59.2 17.7 83.2 35.8c14.1 10.6 17 30.7 6.4 44.8s-30.7 17-44.8 6.4C279.4 137.5 252.9 128 224 128c-70.7 0-128 57.3-128 128s57.3 128 128 128c28.9 0 55.4-9.5 76.8-25.6c14.1-10.6 34.2-7.8 44.8 6.4s7.8 34.2-6.4 44.8c-24 18-52.4 30.6-83.2 35.8l0 34.7c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-34.7C101.2 430.1 32 351.1 32 256s69.2-174.1 160-189.3L192 32c0-17.7 14.3-32 32-32z\"]\n};\nconst faFlask = {\n prefix: 'fas',\n iconName: 'flask',\n icon: [448, 512, [], \"f0c3\", \"M288 0L160 0 128 0C110.3 0 96 14.3 96 32s14.3 32 32 32l0 132.8c0 11.8-3.3 23.5-9.5 33.5L10.3 406.2C3.6 417.2 0 429.7 0 442.6C0 480.9 31.1 512 69.4 512l309.2 0c38.3 0 69.4-31.1 69.4-69.4c0-12.8-3.6-25.4-10.3-36.4L329.5 230.4c-6.2-10.1-9.5-21.7-9.5-33.5L320 64c17.7 0 32-14.3 32-32s-14.3-32-32-32L288 0zM192 196.8L192 64l64 0 0 132.8c0 23.7 6.6 46.9 19 67.1L309.5 320l-171 0L173 263.9c12.4-20.2 19-43.4 19-67.1z\"]\n};\nconst faPersonPregnant = {\n prefix: 'fas',\n iconName: 'person-pregnant',\n icon: [384, 512, [], \"e31e\", \"M192 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM120 383c-13.8-3.6-24-16.1-24-31l0-55.1-4.6 7.6c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c15-24.9 40.3-41.5 68.7-45.6c4.1-.6 8.2-1 12.5-1l1.1 0 12.5 0 2.4 0c1.4 0 2.8 .1 4.1 .3c35.7 2.9 65.4 29.3 72.1 65l6.1 32.5c44.3 8.6 77.7 47.5 77.7 94.3l0 32c0 17.7-14.3 32-32 32l-16 0-40 0 0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96-8 0-8 0 0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-97z\"]\n};\nconst faWandSparkles = {\n prefix: 'fas',\n iconName: 'wand-sparkles',\n icon: [512, 512, [], \"f72b\", \"M464 6.1c9.5-8.5 24-8.1 33 .9l8 8c9 9 9.4 23.5 .9 33l-85.8 95.9c-2.6 2.9-4.1 6.7-4.1 10.7l0 21.4c0 8.8-7.2 16-16 16l-15.8 0c-4.6 0-8.9 1.9-11.9 5.3L100.7 500.9C94.3 508 85.3 512 75.8 512c-8.8 0-17.3-3.5-23.5-9.8L9.7 459.7C3.5 453.4 0 445 0 436.2c0-9.5 4-18.5 11.1-24.8l111.6-99.8c3.4-3 5.3-7.4 5.3-11.9l0-27.6c0-8.8 7.2-16 16-16l34.6 0c3.9 0 7.7-1.5 10.7-4.1L464 6.1zM432 288c3.6 0 6.7 2.4 7.7 5.8l14.8 51.7 51.7 14.8c3.4 1 5.8 4.1 5.8 7.7s-2.4 6.7-5.8 7.7l-51.7 14.8-14.8 51.7c-1 3.4-4.1 5.8-7.7 5.8s-6.7-2.4-7.7-5.8l-14.8-51.7-51.7-14.8c-3.4-1-5.8-4.1-5.8-7.7s2.4-6.7 5.8-7.7l51.7-14.8 14.8-51.7c1-3.4 4.1-5.8 7.7-5.8zM87.7 69.8l14.8 51.7 51.7 14.8c3.4 1 5.8 4.1 5.8 7.7s-2.4 6.7-5.8 7.7l-51.7 14.8L87.7 218.2c-1 3.4-4.1 5.8-7.7 5.8s-6.7-2.4-7.7-5.8L57.5 166.5 5.8 151.7c-3.4-1-5.8-4.1-5.8-7.7s2.4-6.7 5.8-7.7l51.7-14.8L72.3 69.8c1-3.4 4.1-5.8 7.7-5.8s6.7 2.4 7.7 5.8zM208 0c3.7 0 6.9 2.5 7.8 6.1l6.8 27.3 27.3 6.8c3.6 .9 6.1 4.1 6.1 7.8s-2.5 6.9-6.1 7.8l-27.3 6.8-6.8 27.3c-.9 3.6-4.1 6.1-7.8 6.1s-6.9-2.5-7.8-6.1l-6.8-27.3-27.3-6.8c-3.6-.9-6.1-4.1-6.1-7.8s2.5-6.9 6.1-7.8l27.3-6.8 6.8-27.3c.9-3.6 4.1-6.1 7.8-6.1z\"]\n};\nconst faEllipsisVertical = {\n prefix: 'fas',\n iconName: 'ellipsis-vertical',\n icon: [128, 512, [\"ellipsis-v\"], \"f142\", \"M64 360a56 56 0 1 0 0 112 56 56 0 1 0 0-112zm0-160a56 56 0 1 0 0 112 56 56 0 1 0 0-112zM120 96A56 56 0 1 0 8 96a56 56 0 1 0 112 0z\"]\n};\nconst faEllipsisV = faEllipsisVertical;\nconst faTicket = {\n prefix: 'fas',\n iconName: 'ticket',\n icon: [576, 512, [127903], \"f145\", \"M64 64C28.7 64 0 92.7 0 128l0 64c0 8.8 7.4 15.7 15.7 18.6C34.5 217.1 48 235 48 256s-13.5 38.9-32.3 45.4C7.4 304.3 0 311.2 0 320l0 64c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-64c0-8.8-7.4-15.7-15.7-18.6C541.5 294.9 528 277 528 256s13.5-38.9 32.3-45.4c8.3-2.9 15.7-9.8 15.7-18.6l0-64c0-35.3-28.7-64-64-64L64 64zm64 112l0 160c0 8.8 7.2 16 16 16l288 0c8.8 0 16-7.2 16-16l0-160c0-8.8-7.2-16-16-16l-288 0c-8.8 0-16 7.2-16 16zM96 160c0-17.7 14.3-32 32-32l320 0c17.7 0 32 14.3 32 32l0 192c0 17.7-14.3 32-32 32l-320 0c-17.7 0-32-14.3-32-32l0-192z\"]\n};\nconst faPowerOff = {\n prefix: 'fas',\n iconName: 'power-off',\n icon: [512, 512, [9211], \"f011\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 224c0 17.7 14.3 32 32 32s32-14.3 32-32l0-224zM143.5 120.6c13.6-11.3 15.4-31.5 4.1-45.1s-31.5-15.4-45.1-4.1C49.7 115.4 16 181.8 16 256c0 132.5 107.5 240 240 240s240-107.5 240-240c0-74.2-33.8-140.6-86.6-184.6c-13.6-11.3-33.8-9.4-45.1 4.1s-9.4 33.8 4.1 45.1c38.9 32.3 63.5 81 63.5 135.4c0 97.2-78.8 176-176 176s-176-78.8-176-176c0-54.4 24.7-103.1 63.5-135.4z\"]\n};\nconst faRightLong = {\n prefix: 'fas',\n iconName: 'right-long',\n icon: [512, 512, [\"long-arrow-alt-right\"], \"f30b\", \"M334.5 414c8.8 3.8 19 2 26-4.6l144-136c4.8-4.5 7.5-10.8 7.5-17.4s-2.7-12.9-7.5-17.4l-144-136c-7-6.6-17.2-8.4-26-4.6s-14.5 12.5-14.5 22l0 72L32 192c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l288 0 0 72c0 9.6 5.7 18.2 14.5 22z\"]\n};\nconst faLongArrowAltRight = faRightLong;\nconst faFlagUsa = {\n prefix: 'fas',\n iconName: 'flag-usa',\n icon: [448, 512, [], \"f74d\", \"M32 0C49.7 0 64 14.3 64 32l0 16 69-17.2c38.1-9.5 78.3-5.1 113.5 12.5c46.3 23.2 100.8 23.2 147.1 0l9.6-4.8C423.8 28.1 448 43.1 448 66.1l0 36.1-44.7 16.2c-42.8 15.6-90 13.9-131.6-4.6l-16.1-7.2c-20.3-9-41.8-14.7-63.6-16.9l0 32.2c17.4 2.1 34.4 6.7 50.6 13.9l16.1 7.2c49.2 21.9 105 23.8 155.6 5.4L448 136.3l0 62-44.7 16.2c-42.8 15.6-90 13.9-131.6-4.6l-16.1-7.2c-40.2-17.9-85-22.5-128.1-13.3L64 203.1l0 32.7 70.2-15.1c36.4-7.8 74.3-3.9 108.4 11.3l16.1 7.2c49.2 21.9 105 23.8 155.6 5.4L448 232.3l0 62-44.7 16.2c-42.8 15.6-90 13.9-131.6-4.6l-16.1-7.2c-40.2-17.9-85-22.5-128.1-13.3L64 299.1l0 32.7 70.2-15.1c36.4-7.8 74.3-3.9 108.4 11.3l16.1 7.2c49.2 21.9 105 23.8 155.6 5.4L448 328.3l0 33.5c0 13.3-8.3 25.3-20.8 30l-34.7 13c-46.2 17.3-97.6 14.6-141.7-7.4c-37.9-19-81.3-23.7-122.5-13.4L64 400l0 80c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64 0-70.5 0-32.7 0-63.3 0-32.7 0-63.3 0-32.7L0 64 0 32C0 14.3 14.3 0 32 0zm80 96A16 16 0 1 0 80 96a16 16 0 1 0 32 0zm32 0a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm-32 48a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm32 0a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nconst faLaptopFile = {\n prefix: 'fas',\n iconName: 'laptop-file',\n icon: [640, 512, [], \"e51d\", \"M128 0C92.7 0 64 28.7 64 64l0 224-44.8 0C8.6 288 0 296.6 0 307.2C0 349.6 34.4 384 76.8 384L320 384l0-96-192 0 0-224 320 0 0 32 64 0 0-32c0-35.3-28.7-64-64-64L128 0zM512 128l-112 0c-26.5 0-48 21.5-48 48l0 288c0 26.5 21.5 48 48 48l192 0c26.5 0 48-21.5 48-48l0-208-96 0c-17.7 0-32-14.3-32-32l0-96zm32 0l0 96 96 0-96-96z\"]\n};\nconst faTty = {\n prefix: 'fas',\n iconName: 'tty',\n icon: [512, 512, [\"teletype\"], \"f1e4\", \"M38.3 241.3L15.1 200.6c-9.2-16.2-8.4-36.5 4.5-50C61.4 106.8 144.7 48 256 48s194.6 58.8 236.4 102.6c12.9 13.5 13.7 33.8 4.5 50l-23.1 40.7c-7.5 13.2-23.3 19.3-37.8 14.6l-81.1-26.6c-13.1-4.3-22-16.6-22-30.4l0-54.8c-49.6-18.1-104-18.1-153.6 0l0 54.8c0 13.8-8.9 26.1-22 30.4L76.1 255.8c-14.5 4.7-30.3-1.4-37.8-14.6zM32 336c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm0 96c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM144 320l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm112-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm16 80l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM128 432c0-8.8 7.2-16 16-16l224 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-224 0c-8.8 0-16-7.2-16-16l0-32z\"]\n};\nconst faTeletype = faTty;\nconst faDiagramNext = {\n prefix: 'fas',\n iconName: 'diagram-next',\n icon: [512, 512, [], \"e476\", \"M512 160c0 35.3-28.7 64-64 64l-168 0 0 64 46.1 0c21.4 0 32.1 25.9 17 41L273 399c-9.4 9.4-24.6 9.4-33.9 0L169 329c-15.1-15.1-4.4-41 17-41l46.1 0 0-64L64 224c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 64zM448 416l0-64-82.7 0 .4-.4c18.4-18.4 20.4-43.7 11-63.6l71.3 0c35.3 0 64 28.7 64 64l0 64c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64l71.3 0c-9.4 19.9-7.4 45.2 11 63.6l.4 .4L64 352l0 64 146.7 0 5.7 5.7c21.9 21.9 57.3 21.9 79.2 0l5.7-5.7L448 416z\"]\n};\nconst faPersonRifle = {\n prefix: 'fas',\n iconName: 'person-rifle',\n icon: [576, 512, [], \"e54e\", \"M265.2 192c25.4 0 49.8 7.1 70.8 19.9L336 512l-192 0 0-174.3L90.4 428.3c-11.2 19-35.8 25.3-54.8 14.1s-25.3-35.8-14.1-54.8L97.7 258.8c24.5-41.4 69-66.8 117.1-66.8l50.4 0zM160 80a80 80 0 1 1 160 0A80 80 0 1 1 160 80zM448 0c8.8 0 16 7.2 16 16l0 116.3c9.6 5.5 16 15.9 16 27.7l0 109.3 16-5.3 0-56c0-8.8 7.2-16 16-16l16 0c8.8 0 16 7.2 16 16l0 84.5c0 6.9-4.4 13-10.9 15.2L480 325.3l0 26.7 48 0c8.8 0 16 7.2 16 16l0 16c0 8.8-7.2 16-16 16l-44 0 23 92.1c2.5 10.1-5.1 19.9-15.5 19.9L432 512c-8.8 0-16-7.2-16-16l0-96-16 0c-17.7 0-32-14.3-32-32l0-144c0-17.7 14.3-32 32-32l0-32c0-11.8 6.4-22.2 16-27.7L416 32c-8.8 0-16-7.2-16-16s7.2-16 16-16l16 0 16 0z\"]\n};\nconst faHouseMedicalCircleExclamation = {\n prefix: 'fas',\n iconName: 'house-medical-circle-exclamation',\n icon: [640, 512, [], \"e512\", \"M320 368c0 59.5 29.5 112.1 74.8 144l-266.7 0c-35.3 0-64-28.7-64-64l0-160.4-32 0c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L522.1 193.9c-8.5-1.3-17.3-1.9-26.1-1.9c-54.7 0-103.5 24.9-135.8 64L320 256l0-48c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16l0 48-48 0c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l48 0 0 48c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16zM496 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0-192c-8.8 0-16 7.2-16 16l0 80c0 8.8 7.2 16 16 16s16-7.2 16-16l0-80c0-8.8-7.2-16-16-16z\"]\n};\nconst faClosedCaptioning = {\n prefix: 'fas',\n iconName: 'closed-captioning',\n icon: [576, 512, [], \"f20a\", \"M0 96C0 60.7 28.7 32 64 32l448 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zM200 208c14.2 0 27 6.1 35.8 16c8.8 9.9 24 10.7 33.9 1.9s10.7-24 1.9-33.9c-17.5-19.6-43.1-32-71.5-32c-53 0-96 43-96 96s43 96 96 96c28.4 0 54-12.4 71.5-32c8.8-9.9 8-25-1.9-33.9s-25-8-33.9 1.9c-8.8 9.9-21.6 16-35.8 16c-26.5 0-48-21.5-48-48s21.5-48 48-48zm144 48c0-26.5 21.5-48 48-48c14.2 0 27 6.1 35.8 16c8.8 9.9 24 10.7 33.9 1.9s10.7-24 1.9-33.9c-17.5-19.6-43.1-32-71.5-32c-53 0-96 43-96 96s43 96 96 96c28.4 0 54-12.4 71.5-32c8.8-9.9 8-25-1.9-33.9s-25-8-33.9 1.9c-8.8 9.9-21.6 16-35.8 16c-26.5 0-48-21.5-48-48z\"]\n};\nconst faPersonHiking = {\n prefix: 'fas',\n iconName: 'person-hiking',\n icon: [384, 512, [\"hiking\"], \"f6ec\", \"M192 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm51.3 182.7L224.2 307l49.7 49.7c9 9 14.1 21.2 14.1 33.9l0 89.4c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-82.7-73.9-73.9c-15.8-15.8-22.2-38.6-16.9-60.3l20.4-84c8.3-34.1 42.7-54.9 76.7-46.4c19 4.8 35.6 16.4 46.4 32.7L305.1 208l30.9 0 0-24c0-13.3 10.7-24 24-24s24 10.7 24 24l0 55.8c0 .1 0 .2 0 .2s0 .2 0 .2L384 488c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-216-39.4 0c-16 0-31-8-39.9-21.4l-13.3-20zM81.1 471.9L117.3 334c3 4.2 6.4 8.2 10.1 11.9l41.9 41.9L142.9 488.1c-4.5 17.1-22 27.3-39.1 22.8s-27.3-22-22.8-39.1zm55.5-346L101.4 266.5c-3 12.1-14.9 19.9-27.2 17.9l-47.9-8c-14-2.3-22.9-16.3-19.2-30L31.9 155c9.5-34.8 41.1-59 77.2-59l4.2 0c15.6 0 27.1 14.7 23.3 29.8z\"]\n};\nconst faHiking = faPersonHiking;\nconst faVenusDouble = {\n prefix: 'fas',\n iconName: 'venus-double',\n icon: [640, 512, [9890], \"f226\", \"M192 288a112 112 0 1 0 0-224 112 112 0 1 0 0 224zM368 176c0 86.3-62.1 158.1-144 173.1l0 34.9 32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0 0-34.9C78.1 334.1 16 262.3 16 176C16 78.8 94.8 0 192 0s176 78.8 176 176zM344 318c14.6-15.6 26.8-33.4 36-53c18.8 14.4 42.4 23 68 23c61.9 0 112-50.1 112-112s-50.1-112-112-112c-25.6 0-49.1 8.6-68 23c-9.3-19.5-21.5-37.4-36-53C373.1 12.6 409.1 0 448 0c97.2 0 176 78.8 176 176c0 86.3-62.1 158.1-144 173.1l0 34.9 32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0 0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l32 0 0-34.9c-26.6-4.9-51.1-15.7-72-31.1z\"]\n};\nconst faImages = {\n prefix: 'fas',\n iconName: 'images',\n icon: [576, 512, [], \"f302\", \"M160 32c-35.3 0-64 28.7-64 64l0 224c0 35.3 28.7 64 64 64l352 0c35.3 0 64-28.7 64-64l0-224c0-35.3-28.7-64-64-64L160 32zM396 138.7l96 144c4.9 7.4 5.4 16.8 1.2 24.6S480.9 320 472 320l-144 0-48 0-80 0c-9.2 0-17.6-5.3-21.6-13.6s-2.9-18.2 2.9-25.4l64-80c4.6-5.7 11.4-9 18.7-9s14.2 3.3 18.7 9l17.3 21.6 56-84C360.5 132 368 128 376 128s15.5 4 20 10.7zM192 128a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120L0 344c0 75.1 60.9 136 136 136l320 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-320 0c-48.6 0-88-39.4-88-88l0-224z\"]\n};\nconst faCalculator = {\n prefix: 'fas',\n iconName: 'calculator',\n icon: [384, 512, [128425], \"f1ec\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64L64 0zM96 64l192 0c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32L96 160c-17.7 0-32-14.3-32-32l0-32c0-17.7 14.3-32 32-32zm32 160a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM96 352a32 32 0 1 1 0-64 32 32 0 1 1 0 64zM64 416c0-17.7 14.3-32 32-32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32zM192 256a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm32 64a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm64-64a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm32 64a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zM288 448a32 32 0 1 1 0-64 32 32 0 1 1 0 64z\"]\n};\nconst faPeoplePulling = {\n prefix: 'fas',\n iconName: 'people-pulling',\n icon: [576, 512, [], \"e535\", \"M80 96A48 48 0 1 0 80 0a48 48 0 1 0 0 96zM64 128c-35.3 0-64 28.7-64 64L0 320c0 17.7 14.3 32 32 32c9.8 0 18.5-4.4 24.4-11.2L80.4 485.3c2.9 17.4 19.4 29.2 36.8 26.3s29.2-19.4 26.3-36.8L123.1 352l15.7 0 30 134.9c3.8 17.3 20.9 28.1 38.2 24.3s28.1-20.9 24.3-38.2l-57.3-258 116.3 53.8c.5 .3 1.1 .5 1.6 .7c8.6 3.6 18 3.1 25.9-.7c3.4-1.6 6.6-3.9 9.3-6.7c3.1-3.2 5.5-7 7.1-11.4c.1-.3 .2-.7 .3-1l2.5-7.5c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L537 232.7l-15.3-36.8C504.5 154.8 464.3 128 419.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-24.4 10.9-44.6 29-58.1 51.6L157.3 136.9C144.7 131 130.9 128 117 128l-53 0zM464 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM349.7 335.6l-25 62.4-59.4 59.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L372.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6z\"]\n};\nconst faN = {\n prefix: 'fas',\n iconName: 'n',\n icon: [384, 512, [110], \"4e\", \"M21.1 33.9c12.7-4.6 26.9-.7 35.5 9.6L320 359.6 320 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 384c0 13.5-8.4 25.5-21.1 30.1s-26.9 .7-35.5-9.6L64 152.4 64 448c0 17.7-14.3 32-32 32s-32-14.3-32-32L0 64C0 50.5 8.4 38.5 21.1 33.9z\"]\n};\nconst faCableCar = {\n prefix: 'fas',\n iconName: 'cable-car',\n icon: [512, 512, [128673, 57551, \"tram\"], \"f7da\", \"M288 0a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM160 56a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM32 288c0-35.3 28.7-64 64-64l136 0 0-66.5-203.1 42c-13 2.7-25.7-5.7-28.4-18.6s5.7-25.7 18.6-28.4l232-48 232-48c13-2.7 25.7 5.7 28.4 18.6s-5.7 25.7-18.6 28.4L280 147.5l0 76.5 136 0c35.3 0 64 28.7 64 64l0 160c0 35.3-28.7 64-64 64L96 512c-35.3 0-64-28.7-64-64l0-160zm64 0c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16l64 0c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-64 0zm112 16l0 64c0 8.8 7.2 16 16 16l64 0c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-64 0c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16l64 0c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-64 0z\"]\n};\nconst faTram = faCableCar;\nconst faCloudRain = {\n prefix: 'fas',\n iconName: 'cloud-rain',\n icon: [512, 512, [127783, 9926], \"f73d\", \"M96 320c-53 0-96-43-96-96c0-42.5 27.6-78.6 65.9-91.2C64.7 126.1 64 119.1 64 112C64 50.1 114.1 0 176 0c43.1 0 80.5 24.3 99.2 60c14.7-17.1 36.5-28 60.8-28c44.2 0 80 35.8 80 80c0 5.5-.6 10.8-1.6 16c.5 0 1.1 0 1.6 0c53 0 96 43 96 96s-43 96-96 96L96 320zm-6.8 52c1.3-2.5 3.9-4 6.8-4s5.4 1.5 6.8 4l35.1 64.6c4.1 7.5 6.2 15.8 6.2 24.3l0 3c0 26.5-21.5 48-48 48s-48-21.5-48-48l0-3c0-8.5 2.1-16.9 6.2-24.3L89.2 372zm160 0c1.3-2.5 3.9-4 6.8-4s5.4 1.5 6.8 4l35.1 64.6c4.1 7.5 6.2 15.8 6.2 24.3l0 3c0 26.5-21.5 48-48 48s-48-21.5-48-48l0-3c0-8.5 2.1-16.9 6.2-24.3L249.2 372zm124.9 64.6L409.2 372c1.3-2.5 3.9-4 6.8-4s5.4 1.5 6.8 4l35.1 64.6c4.1 7.5 6.2 15.8 6.2 24.3l0 3c0 26.5-21.5 48-48 48s-48-21.5-48-48l0-3c0-8.5 2.1-16.9 6.2-24.3z\"]\n};\nconst faBuildingCircleXmark = {\n prefix: 'fas',\n iconName: 'building-circle-xmark',\n icon: [640, 512, [], \"e4d4\", \"M48 0C21.5 0 0 21.5 0 48L0 464c0 26.5 21.5 48 48 48l96 0 0-80c0-26.5 21.5-48 48-48s48 21.5 48 48l0 80 96 0c15.1 0 28.5-6.9 37.3-17.8C340.4 462.2 320 417.5 320 368c0-54.7 24.9-103.5 64-135.8L384 48c0-26.5-21.5-48-48-48L48 0zM64 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm112-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM80 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM272 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nconst faShip = {\n prefix: 'fas',\n iconName: 'ship',\n icon: [576, 512, [128674], \"f21a\", \"M192 32c0-17.7 14.3-32 32-32L352 0c17.7 0 32 14.3 32 32l0 32 48 0c26.5 0 48 21.5 48 48l0 128 44.4 14.8c23.1 7.7 29.5 37.5 11.5 53.9l-101 92.6c-16.2 9.4-34.7 15.1-50.9 15.1c-19.6 0-40.8-7.7-59.2-20.3c-22.1-15.5-51.6-15.5-73.7 0c-17.1 11.8-38 20.3-59.2 20.3c-16.2 0-34.7-5.7-50.9-15.1l-101-92.6c-18-16.5-11.6-46.2 11.5-53.9L96 240l0-128c0-26.5 21.5-48 48-48l48 0 0-32zM160 218.7l107.8-35.9c13.1-4.4 27.3-4.4 40.5 0L416 218.7l0-90.7-256 0 0 90.7zM306.5 421.9C329 437.4 356.5 448 384 448c26.9 0 55.4-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 501.7 417 512 384 512c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 437.2 165.1 448 192 448c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nconst faArrowsDownToLine = {\n prefix: 'fas',\n iconName: 'arrows-down-to-line',\n icon: [576, 512, [], \"e4b8\", \"M544 416L32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l512 0c17.7 0 32-14.3 32-32s-14.3-32-32-32zm22.6-137.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L480 274.7 480 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 210.7-41.4-41.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l96-96zm-320-45.3c-12.5-12.5-32.8-12.5-45.3 0L160 274.7 160 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 210.7L54.6 233.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3z\"]\n};\nconst faDownload = {\n prefix: 'fas',\n iconName: 'download',\n icon: [512, 512, [], \"f019\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 242.7-73.4-73.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0l128-128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L288 274.7 288 32zM64 352c-35.3 0-64 28.7-64 64l0 32c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-32c0-35.3-28.7-64-64-64l-101.5 0-45.3 45.3c-25 25-65.5 25-90.5 0L165.5 352 64 352zm368 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faFaceGrin = {\n prefix: 'fas',\n iconName: 'face-grin',\n icon: [512, 512, [128512, \"grin\"], \"f580\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faGrin = faFaceGrin;\nconst faDeleteLeft = {\n prefix: 'fas',\n iconName: 'delete-left',\n icon: [576, 512, [9003, \"backspace\"], \"f55a\", \"M576 128c0-35.3-28.7-64-64-64L205.3 64c-17 0-33.3 6.7-45.3 18.7L9.4 233.4c-6 6-9.4 14.1-9.4 22.6s3.4 16.6 9.4 22.6L160 429.3c12 12 28.3 18.7 45.3 18.7L512 448c35.3 0 64-28.7 64-64l0-256zM271 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nconst faBackspace = faDeleteLeft;\nconst faEyeDropper = {\n prefix: 'fas',\n iconName: 'eye-dropper',\n icon: [512, 512, [\"eye-dropper-empty\", \"eyedropper\"], \"f1fb\", \"M341.6 29.2L240.1 130.8l-9.4-9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-9.4-9.4L482.8 170.4c39-39 39-102.2 0-141.1s-102.2-39-141.1 0zM55.4 323.3c-15 15-23.4 35.4-23.4 56.6l0 42.4L5.4 462.2c-8.5 12.7-6.8 29.6 4 40.4s27.7 12.5 40.4 4L89.7 480l42.4 0c21.2 0 41.6-8.4 56.6-23.4L309.4 335.9l-45.3-45.3L143.4 411.3c-3 3-7.1 4.7-11.3 4.7L96 416l0-36.1c0-4.2 1.7-8.3 4.7-11.3L221.4 247.9l-45.3-45.3L55.4 323.3z\"]\n};\nconst faEyeDropperEmpty = faEyeDropper;\nconst faEyedropper = faEyeDropper;\nconst faFileCircleCheck = {\n prefix: 'fas',\n iconName: 'file-circle-check',\n icon: [576, 512, [], \"e5a0\", \"M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zM288 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L416 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nconst faForward = {\n prefix: 'fas',\n iconName: 'forward',\n icon: [512, 512, [9193], \"f04e\", \"M52.5 440.6c-9.5 7.9-22.8 9.7-34.1 4.4S0 428.4 0 416L0 96C0 83.6 7.2 72.3 18.4 67s24.5-3.6 34.1 4.4L224 214.3l0 41.7 0 41.7L52.5 440.6zM256 352l0-96 0-128 0-32c0-12.4 7.2-23.7 18.4-29s24.5-3.6 34.1 4.4l192 160c7.3 6.1 11.5 15.1 11.5 24.6s-4.2 18.5-11.5 24.6l-192 160c-9.5 7.9-22.8 9.7-34.1 4.4s-18.4-16.6-18.4-29l0-64z\"]\n};\nconst faMobile = {\n prefix: 'fas',\n iconName: 'mobile',\n icon: [384, 512, [128241, \"mobile-android\", \"mobile-phone\"], \"f3ce\", \"M80 0C44.7 0 16 28.7 16 64l0 384c0 35.3 28.7 64 64 64l224 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64L80 0zm80 432l64 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-64 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faMobileAndroid = faMobile;\nconst faMobilePhone = faMobile;\nconst faFaceMeh = {\n prefix: 'fas',\n iconName: 'face-meh',\n icon: [512, 512, [128528, \"meh\"], \"f11a\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM176.4 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM160 336l192 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-192 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faMeh = faFaceMeh;\nconst faAlignCenter = {\n prefix: 'fas',\n iconName: 'align-center',\n icon: [448, 512, [], \"f037\", \"M352 64c0-17.7-14.3-32-32-32L128 32c-17.7 0-32 14.3-32 32s14.3 32 32 32l192 0c17.7 0 32-14.3 32-32zm96 128c0-17.7-14.3-32-32-32L32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32zM0 448c0 17.7 14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 416c-17.7 0-32 14.3-32 32zM352 320c0-17.7-14.3-32-32-32l-192 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l192 0c17.7 0 32-14.3 32-32z\"]\n};\nconst faBookSkull = {\n prefix: 'fas',\n iconName: 'book-skull',\n icon: [448, 512, [\"book-dead\"], \"f6b7\", \"M0 96C0 43 43 0 96 0L384 0l32 0c17.7 0 32 14.3 32 32l0 320c0 17.7-14.3 32-32 32l0 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0L96 512c-53 0-96-43-96-96L0 96zM64 416c0 17.7 14.3 32 32 32l256 0 0-64L96 384c-17.7 0-32 14.3-32 32zM320 112c0-35.3-35.8-64-80-64s-80 28.7-80 64c0 20.9 12.6 39.5 32 51.2l0 12.8c0 8.8 7.2 16 16 16l64 0c8.8 0 16-7.2 16-16l0-12.8c19.4-11.7 32-30.3 32-51.2zM208 96a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm48 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM134.3 209.3c-8.1-3.5-17.5 .3-21 8.4s.3 17.5 8.4 21L199.4 272l-77.7 33.3c-8.1 3.5-11.9 12.9-8.4 21s12.9 11.9 21 8.4L240 289.4l105.7 45.3c8.1 3.5 17.5-.3 21-8.4s-.3-17.5-8.4-21L280.6 272l77.7-33.3c8.1-3.5 11.9-12.9 8.4-21s-12.9-11.9-21-8.4L240 254.6 134.3 209.3z\"]\n};\nconst faBookDead = faBookSkull;\nconst faIdCard = {\n prefix: 'fas',\n iconName: 'id-card',\n icon: [576, 512, [62147, \"drivers-license\"], \"f2c2\", \"M0 96l576 0c0-35.3-28.7-64-64-64L64 32C28.7 32 0 60.7 0 96zm0 32L0 416c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-288L0 128zM64 405.3c0-29.5 23.9-53.3 53.3-53.3l117.3 0c29.5 0 53.3 23.9 53.3 53.3c0 5.9-4.8 10.7-10.7 10.7L74.7 416c-5.9 0-10.7-4.8-10.7-10.7zM176 192a64 64 0 1 1 0 128 64 64 0 1 1 0-128zm176 16c0-8.8 7.2-16 16-16l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16zm0 64c0-8.8 7.2-16 16-16l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16z\"]\n};\nconst faDriversLicense = faIdCard;\nconst faOutdent = {\n prefix: 'fas',\n iconName: 'outdent',\n icon: [448, 512, [\"dedent\"], \"f03b\", \"M0 64C0 46.3 14.3 32 32 32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64zM192 192c0-17.7 14.3-32 32-32l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32zm32 96l192 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zM0 448c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32zM.2 268.6c-8.2-6.4-8.2-18.9 0-25.3l101.9-79.3c10.5-8.2 25.8-.7 25.8 12.6l0 158.6c0 13.3-15.3 20.8-25.8 12.6L.2 268.6z\"]\n};\nconst faDedent = faOutdent;\nconst faHeartCircleExclamation = {\n prefix: 'fas',\n iconName: 'heart-circle-exclamation',\n icon: [576, 512, [], \"e4fe\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6l0-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1l0 5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16z\"]\n};\nconst faHouse = {\n prefix: 'fas',\n iconName: 'house',\n icon: [576, 512, [127968, 63498, 63500, \"home\", \"home-alt\", \"home-lg-alt\"], \"f015\", \"M575.8 255.5c0 18-15 32.1-32 32.1l-32 0 .7 160.2c0 2.7-.2 5.4-.5 8.1l0 16.2c0 22.1-17.9 40-40 40l-16 0c-1.1 0-2.2 0-3.3-.1c-1.4 .1-2.8 .1-4.2 .1L416 512l-24 0c-22.1 0-40-17.9-40-40l0-24 0-64c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32 14.3-32 32l0 64 0 24c0 22.1-17.9 40-40 40l-24 0-31.9 0c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2l-16 0c-22.1 0-40-17.9-40-40l0-112c0-.9 0-1.9 .1-2.8l0-69.7-32 0c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L564.8 231.5c8 7 12 15 11 24z\"]\n};\nconst faHome = faHouse;\nconst faHomeAlt = faHouse;\nconst faHomeLgAlt = faHouse;\nconst faCalendarWeek = {\n prefix: 'fas',\n iconName: 'calendar-week',\n icon: [448, 512, [], \"f784\", \"M128 0c17.7 0 32 14.3 32 32l0 32 128 0 0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32 48 0c26.5 0 48 21.5 48 48l0 48L0 160l0-48C0 85.5 21.5 64 48 64l48 0 0-32c0-17.7 14.3-32 32-32zM0 192l448 0 0 272c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 192zm80 64c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16l288 0c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16L80 256z\"]\n};\nconst faLaptopMedical = {\n prefix: 'fas',\n iconName: 'laptop-medical',\n icon: [640, 512, [], \"f812\", \"M64 96c0-35.3 28.7-64 64-64l384 0c35.3 0 64 28.7 64 64l0 256-64 0 0-256L128 96l0 256-64 0L64 96zM0 403.2C0 392.6 8.6 384 19.2 384l601.6 0c10.6 0 19.2 8.6 19.2 19.2c0 42.4-34.4 76.8-76.8 76.8L76.8 480C34.4 480 0 445.6 0 403.2zM288 160c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 48 48 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-48 0 0 48c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-48-48 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l48 0 0-48z\"]\n};\nconst faB = {\n prefix: 'fas',\n iconName: 'b',\n icon: [320, 512, [98], \"42\", \"M64 32C28.7 32 0 60.7 0 96L0 256 0 416c0 35.3 28.7 64 64 64l128 0c70.7 0 128-57.3 128-128c0-46.5-24.8-87.3-62-109.7c18.7-22.3 30-51 30-82.3c0-70.7-57.3-128-128-128L64 32zm96 192l-96 0L64 96l96 0c35.3 0 64 28.7 64 64s-28.7 64-64 64zM64 288l96 0 32 0c35.3 0 64 28.7 64 64s-28.7 64-64 64L64 416l0-128z\"]\n};\nconst faFileMedical = {\n prefix: 'fas',\n iconName: 'file-medical',\n icon: [384, 512, [], \"f477\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM160 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 48 48 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-48 0 0 48c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-48-48 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l48 0 0-48z\"]\n};\nconst faDiceOne = {\n prefix: 'fas',\n iconName: 'dice-one',\n icon: [448, 512, [9856], \"f525\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM224 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faKiwiBird = {\n prefix: 'fas',\n iconName: 'kiwi-bird',\n icon: [576, 512, [], \"f535\", \"M291.2 388.4c31.2-18.8 64.7-36.4 101.1-36.4l55.7 0c4.6 0 9.1-.2 13.6-.7l85.3 121.9c4 5.7 11.3 8.2 17.9 6.1s11.2-8.3 11.2-15.3l0-240c0-70.7-57.3-128-128-128l-55.7 0c-36.4 0-69.9-17.6-101.1-36.4C262.3 42.1 228.3 32 192 32C86 32 0 118 0 224c0 71.1 38.6 133.1 96 166.3L96 456c0 13.3 10.7 24 24 24s24-10.7 24-24l0-46c15.3 3.9 31.4 6 48 6c5.4 0 10.7-.2 16-.7l0 40.7c0 13.3 10.7 24 24 24s24-10.7 24-24l0-50.9c12.4-4.4 24.2-10 35.2-16.7zM448 200a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faArrowRightArrowLeft = {\n prefix: 'fas',\n iconName: 'arrow-right-arrow-left',\n icon: [448, 512, [8644, \"exchange\"], \"f0ec\", \"M438.6 150.6c12.5-12.5 12.5-32.8 0-45.3l-96-96c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.7 96 32 96C14.3 96 0 110.3 0 128s14.3 32 32 32l306.7 0-41.4 41.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l96-96zm-333.3 352c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 416 416 416c17.7 0 32-14.3 32-32s-14.3-32-32-32l-306.7 0 41.4-41.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3l96 96z\"]\n};\nconst faExchange = faArrowRightArrowLeft;\nconst faRotateRight = {\n prefix: 'fas',\n iconName: 'rotate-right',\n icon: [512, 512, [\"redo-alt\", \"rotate-forward\"], \"f2f9\", \"M463.5 224l8.5 0c13.3 0 24-10.7 24-24l0-128c0-9.7-5.8-18.5-14.8-22.2s-19.3-1.7-26.2 5.2L413.4 96.6c-87.6-86.5-228.7-86.2-315.8 1c-87.5 87.5-87.5 229.3 0 316.8s229.3 87.5 316.8 0c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-62.5 62.5-163.8 62.5-226.3 0s-62.5-163.8 0-226.3c62.2-62.2 162.7-62.5 225.3-1L327 183c-6.9 6.9-8.9 17.2-5.2 26.2s12.5 14.8 22.2 14.8l119.5 0z\"]\n};\nconst faRedoAlt = faRotateRight;\nconst faRotateForward = faRotateRight;\nconst faUtensils = {\n prefix: 'fas',\n iconName: 'utensils',\n icon: [448, 512, [127860, 61685, \"cutlery\"], \"f2e7\", \"M416 0C400 0 288 32 288 176l0 112c0 35.3 28.7 64 64 64l32 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128 0-112 0-208c0-17.7-14.3-32-32-32zM64 16C64 7.8 57.9 1 49.7 .1S34.2 4.6 32.4 12.5L2.1 148.8C.7 155.1 0 161.5 0 167.9c0 45.9 35.1 83.6 80 87.7L80 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-224.4c44.9-4.1 80-41.8 80-87.7c0-6.4-.7-12.8-2.1-19.1L191.6 12.5c-1.8-8-9.3-13.3-17.4-12.4S160 7.8 160 16l0 134.2c0 5.4-4.4 9.8-9.8 9.8c-5.1 0-9.3-3.9-9.8-9L127.9 14.6C127.2 6.3 120.3 0 112 0s-15.2 6.3-15.9 14.6L83.7 151c-.5 5.1-4.7 9-9.8 9c-5.4 0-9.8-4.4-9.8-9.8L64 16zm48.3 152l-.3 0-.3 0 .3-.7 .3 .7z\"]\n};\nconst faCutlery = faUtensils;\nconst faArrowUpWideShort = {\n prefix: 'fas',\n iconName: 'arrow-up-wide-short',\n icon: [576, 512, [\"sort-amount-up\"], \"f161\", \"M151.6 42.4C145.5 35.8 137 32 128 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L96 146.3 96 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-301.7 32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 480l32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 0c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128l160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-160 0c-17.7 0-32 14.3-32 32s14.3 32 32 32zm0-128l224 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L320 32c-17.7 0-32 14.3-32 32s14.3 32 32 32z\"]\n};\nconst faSortAmountUp = faArrowUpWideShort;\nconst faMillSign = {\n prefix: 'fas',\n iconName: 'mill-sign',\n icon: [384, 512, [], \"e1ed\", \"M302.1 42.8c5.9-16.6-2.7-35-19.4-40.9s-35 2.7-40.9 19.4L208 116.1c-5.7 4-11.1 8.5-16 13.5C171.7 108.9 143.3 96 112 96c-19.5 0-37.8 5-53.7 13.7C52.5 101.4 42.9 96 32 96C14.3 96 0 110.3 0 128l0 80L0 416c0 17.7 14.3 32 32 32s32-14.3 32-32l0-208c0-26.5 21.5-48 48-48s48 21.5 48 48l0 42.5L81.9 469.2c-5.9 16.6 2.7 35 19.4 40.9s35-2.7 40.9-19.4l21.4-60C168.9 441 179.6 448 192 448c17.7 0 32-14.3 32-32l0-154.5 35.7-100c3.9-1 8.1-1.6 12.3-1.6c26.5 0 48 21.5 48 48l0 208c0 17.7 14.3 32 32 32s32-14.3 32-32l0-208c0-58.2-44.3-106-101.1-111.5l19.2-53.8z\"]\n};\nconst faBowlRice = {\n prefix: 'fas',\n iconName: 'bowl-rice',\n icon: [512, 512, [], \"e2eb\", \"M176 56c0-13.3 10.7-24 24-24l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24zm24 48l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zM56 176l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zM0 283.4C0 268.3 12.3 256 27.4 256l457.1 0c15.1 0 27.4 12.3 27.4 27.4c0 70.5-44.4 130.7-106.7 154.1L403.5 452c-2 16-15.6 28-31.8 28l-231.5 0c-16.1 0-29.8-12-31.8-28l-1.8-14.4C44.4 414.1 0 353.9 0 283.4zM224 200c0-13.3 10.7-24 24-24l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24zm-96 0c0-13.3 10.7-24 24-24l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24zm-24-96l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zm216 96c0-13.3 10.7-24 24-24l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24zm-24-96l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zm120 96c0-13.3 10.7-24 24-24l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24zm-24-96l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zM296 32l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nconst faSkull = {\n prefix: 'fas',\n iconName: 'skull',\n icon: [512, 512, [128128], \"f54c\", \"M416 398.9c58.5-41.1 96-104.1 96-174.9C512 100.3 397.4 0 256 0S0 100.3 0 224c0 70.7 37.5 133.8 96 174.9c0 .4 0 .7 0 1.1l0 64c0 26.5 21.5 48 48 48l48 0 0-48c0-8.8 7.2-16 16-16s16 7.2 16 16l0 48 64 0 0-48c0-8.8 7.2-16 16-16s16 7.2 16 16l0 48 48 0c26.5 0 48-21.5 48-48l0-64c0-.4 0-.7 0-1.1zM96 256a64 64 0 1 1 128 0A64 64 0 1 1 96 256zm256-64a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nconst faTowerBroadcast = {\n prefix: 'fas',\n iconName: 'tower-broadcast',\n icon: [576, 512, [\"broadcast-tower\"], \"f519\", \"M80.3 44C69.8 69.9 64 98.2 64 128s5.8 58.1 16.3 84c6.6 16.4-1.3 35-17.7 41.7s-35-1.3-41.7-17.7C7.4 202.6 0 166.1 0 128S7.4 53.4 20.9 20C27.6 3.6 46.2-4.3 62.6 2.3S86.9 27.6 80.3 44zM555.1 20C568.6 53.4 576 89.9 576 128s-7.4 74.6-20.9 108c-6.6 16.4-25.3 24.3-41.7 17.7S489.1 228.4 495.7 212c10.5-25.9 16.3-54.2 16.3-84s-5.8-58.1-16.3-84C489.1 27.6 497 9 513.4 2.3s35 1.3 41.7 17.7zM352 128c0 23.7-12.9 44.4-32 55.4L320 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-296.6c-19.1-11.1-32-31.7-32-55.4c0-35.3 28.7-64 64-64s64 28.7 64 64zM170.6 76.8C163.8 92.4 160 109.7 160 128s3.8 35.6 10.6 51.2c7.1 16.2-.3 35.1-16.5 42.1s-35.1-.3-42.1-16.5c-10.3-23.6-16-49.6-16-76.8s5.7-53.2 16-76.8c7.1-16.2 25.9-23.6 42.1-16.5s23.6 25.9 16.5 42.1zM464 51.2c10.3 23.6 16 49.6 16 76.8s-5.7 53.2-16 76.8c-7.1 16.2-25.9 23.6-42.1 16.5s-23.6-25.9-16.5-42.1c6.8-15.6 10.6-32.9 10.6-51.2s-3.8-35.6-10.6-51.2c-7.1-16.2 .3-35.1 16.5-42.1s35.1 .3 42.1 16.5z\"]\n};\nconst faBroadcastTower = faTowerBroadcast;\nconst faTruckPickup = {\n prefix: 'fas',\n iconName: 'truck-pickup',\n icon: [640, 512, [128763], \"f63c\", \"M368.6 96l76.8 96L288 192l0-96 80.6 0zM224 80l0 112L64 192c-17.7 0-32 14.3-32 32l0 64c-17.7 0-32 14.3-32 32s14.3 32 32 32l33.1 0c-.7 5.2-1.1 10.6-1.1 16c0 61.9 50.1 112 112 112s112-50.1 112-112c0-5.4-.4-10.8-1.1-16l66.3 0c-.7 5.2-1.1 10.6-1.1 16c0 61.9 50.1 112 112 112s112-50.1 112-112c0-5.4-.4-10.8-1.1-16l33.1 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-64c0-17.7-14.3-32-32-32l-48.6 0L418.6 56c-12.1-15.2-30.5-24-50-24L272 32c-26.5 0-48 21.5-48 48zm0 288a48 48 0 1 1 -96 0 48 48 0 1 1 96 0zm288 0a48 48 0 1 1 -96 0 48 48 0 1 1 96 0z\"]\n};\nconst faUpLong = {\n prefix: 'fas',\n iconName: 'up-long',\n icon: [320, 512, [\"long-arrow-alt-up\"], \"f30c\", \"M318 177.5c3.8-8.8 2-19-4.6-26l-136-144C172.9 2.7 166.6 0 160 0s-12.9 2.7-17.4 7.5l-136 144c-6.6 7-8.4 17.2-4.6 26S14.4 192 24 192l72 0 0 288c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-288 72 0c9.6 0 18.2-5.7 22-14.5z\"]\n};\nconst faLongArrowAltUp = faUpLong;\nconst faStop = {\n prefix: 'fas',\n iconName: 'stop',\n icon: [384, 512, [9209], \"f04d\", \"M0 128C0 92.7 28.7 64 64 64H320c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128z\"]\n};\nconst faCodeMerge = {\n prefix: 'fas',\n iconName: 'code-merge',\n icon: [448, 512, [], \"f387\", \"M80 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm32.4 97.2c28-12.4 47.6-40.5 47.6-73.2c0-44.2-35.8-80-80-80S0 35.8 0 80c0 32.8 19.7 61 48 73.3l0 205.3C19.7 371 0 399.2 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-32.8-19.7-61-48-73.3l0-86.6c26.7 20.1 60 32 96 32l86.7 0c12.3 28.3 40.5 48 73.3 48c44.2 0 80-35.8 80-80s-35.8-80-80-80c-32.8 0-61 19.7-73.3 48L208 240c-49.9 0-91-38.1-95.6-86.8zM80 408a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM344 272a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nconst faUpload = {\n prefix: 'fas',\n iconName: 'upload',\n icon: [512, 512, [], \"f093\", \"M288 109.3L288 352c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-242.7-73.4 73.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l128-128c12.5-12.5 32.8-12.5 45.3 0l128 128c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L288 109.3zM64 352l128 0c0 35.3 28.7 64 64 64s64-28.7 64-64l128 0c35.3 0 64 28.7 64 64l0 32c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64l0-32c0-35.3 28.7-64 64-64zM432 456a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nconst faHurricane = {\n prefix: 'fas',\n iconName: 'hurricane',\n icon: [384, 512, [], \"f751\", \"M0 208C0 104.4 75.7 18.5 174.9 2.6C184 1.2 192 8.6 192 17.9l0 63.3c0 8.4 6.5 15.3 14.7 16.5C307 112.5 384 199 384 303.4c0 103.6-75.7 189.5-174.9 205.4c-9.2 1.5-17.1-5.9-17.1-15.2l0-63.3c0-8.4-6.5-15.3-14.7-16.5C77 398.9 0 312.4 0 208zm288 48A96 96 0 1 0 96 256a96 96 0 1 0 192 0zm-96-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faMound = {\n prefix: 'fas',\n iconName: 'mound',\n icon: [576, 512, [], \"e52d\", \"M144.1 179.2C173.8 127.7 228.6 96 288 96s114.2 31.7 143.9 83.2L540.4 368c12.3 21.3-3.1 48-27.7 48H63.3c-24.6 0-40-26.6-27.7-48L144.1 179.2z\"]\n};\nconst faToiletPortable = {\n prefix: 'fas',\n iconName: 'toilet-portable',\n icon: [320, 512, [], \"e583\", \"M0 32L0 64l320 0 0-32c0-17.7-14.3-32-32-32L32 0C14.3 0 0 14.3 0 32zM24 96L0 96l0 24L0 488c0 13.3 10.7 24 24 24s24-10.7 24-24l0-8 224 0 0 8c0 13.3 10.7 24 24 24s24-10.7 24-24l0-368 0-24-24 0L24 96zM256 240l0 64c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-64c0-8.8 7.2-16 16-16s16 7.2 16 16z\"]\n};\nconst faCompactDisc = {\n prefix: 'fas',\n iconName: 'compact-disc',\n icon: [512, 512, [128191, 128192, 128440], \"f51f\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256 32a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm-96-32a96 96 0 1 0 192 0 96 96 0 1 0 -192 0zM96 240c0-35 17.5-71.1 45.2-98.8S205 96 240 96c8.8 0 16-7.2 16-16s-7.2-16-16-16c-45.4 0-89.2 22.3-121.5 54.5S64 194.6 64 240c0 8.8 7.2 16 16 16s16-7.2 16-16z\"]\n};\nconst faFileArrowDown = {\n prefix: 'fas',\n iconName: 'file-arrow-down',\n icon: [384, 512, [\"file-download\"], \"f56d\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM216 232l0 102.1 31-31c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-72 72c-9.4 9.4-24.6 9.4-33.9 0l-72-72c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l31 31L168 232c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nconst faFileDownload = faFileArrowDown;\nconst faCaravan = {\n prefix: 'fas',\n iconName: 'caravan',\n icon: [640, 512, [], \"f8ff\", \"M0 112C0 67.8 35.8 32 80 32l336 0c88.4 0 160 71.6 160 160l0 160 32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0-288 0c0 53-43 96-96 96s-96-43-96-96l-16 0c-44.2 0-80-35.8-80-80L0 112zM320 352l128 0 0-96-32 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l32 0 0-64c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32 14.3-32 32l0 192zM96 128c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32L96 128zm96 336a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nconst faShieldCat = {\n prefix: 'fas',\n iconName: 'shield-cat',\n icon: [512, 512, [], \"e572\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM160 154.4c0-5.8 4.7-10.4 10.4-10.4l.2 0c3.4 0 6.5 1.6 8.5 4.3l40 53.3c3 4 7.8 6.4 12.8 6.4l48 0c5 0 9.8-2.4 12.8-6.4l40-53.3c2-2.7 5.2-4.3 8.5-4.3l.2 0c5.8 0 10.4 4.7 10.4 10.4L352 272c0 53-43 96-96 96s-96-43-96-96l0-117.6zM216 288a16 16 0 1 0 0-32 16 16 0 1 0 0 32zm96-16a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nconst faBolt = {\n prefix: 'fas',\n iconName: 'bolt',\n icon: [448, 512, [9889, \"zap\"], \"f0e7\", \"M349.4 44.6c5.9-13.7 1.5-29.7-10.6-38.5s-28.6-8-39.9 1.8l-256 224c-10 8.8-13.6 22.9-8.9 35.3S50.7 288 64 288l111.5 0L98.6 467.4c-5.9 13.7-1.5 29.7 10.6 38.5s28.6 8 39.9-1.8l256-224c10-8.8 13.6-22.9 8.9-35.3s-16.6-20.7-30-20.7l-111.5 0L349.4 44.6z\"]\n};\nconst faZap = faBolt;\nconst faGlassWater = {\n prefix: 'fas',\n iconName: 'glass-water',\n icon: [384, 512, [], \"e4f4\", \"M32 0C23.1 0 14.6 3.7 8.6 10.2S-.6 25.4 .1 34.3L28.9 437.7c3 41.9 37.8 74.3 79.8 74.3l166.6 0c42 0 76.8-32.4 79.8-74.3L383.9 34.3c.6-8.9-2.4-17.6-8.5-24.1S360.9 0 352 0L32 0zM73 156.5L66.4 64l251.3 0L311 156.5l-24.2 12.1c-19.4 9.7-42.2 9.7-61.6 0c-20.9-10.4-45.5-10.4-66.4 0c-19.4 9.7-42.2 9.7-61.6 0L73 156.5z\"]\n};\nconst faOilWell = {\n prefix: 'fas',\n iconName: 'oil-well',\n icon: [576, 512, [], \"e532\", \"M528.3 61.3c-11.4-42.7-55.3-68-98-56.6L414.9 8.8C397.8 13.4 387.7 31 392.3 48l24.5 91.4L308.5 167.5l-6.3-18.1C297.7 136.6 285.6 128 272 128s-25.7 8.6-30.2 21.4l-13.6 39L96 222.6 96 184c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 264-16 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l512 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-137.3 0L340 257.5l-62.2 16.1L305.3 352l-66.6 0L265 277l-74.6 19.3L137.3 448 96 448l0-159.2 337.4-87.5 25.2 94c4.6 17.1 22.1 27.2 39.2 22.6l15.5-4.1c42.7-11.4 68-55.3 56.6-98L528.3 61.3zM205.1 448l11.2-32 111.4 0 11.2 32-133.8 0z\"]\n};\nconst faVault = {\n prefix: 'fas',\n iconName: 'vault',\n icon: [576, 512, [], \"e2c5\", \"M64 0C28.7 0 0 28.7 0 64L0 416c0 35.3 28.7 64 64 64l16 0 16 32 64 0 16-32 224 0 16 32 64 0 16-32 16 0c35.3 0 64-28.7 64-64l0-352c0-35.3-28.7-64-64-64L64 0zM224 320a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm0-240a160 160 0 1 1 0 320 160 160 0 1 1 0-320zM480 221.3L480 336c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-114.7c-18.6-6.6-32-24.4-32-45.3c0-26.5 21.5-48 48-48s48 21.5 48 48c0 20.9-13.4 38.7-32 45.3z\"]\n};\nconst faMars = {\n prefix: 'fas',\n iconName: 'mars',\n icon: [448, 512, [9794], \"f222\", \"M289.8 46.8c3.7-9 12.5-14.8 22.2-14.8l112 0c13.3 0 24 10.7 24 24l0 112c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-33.4-33.4L321 204.2c19.5 28.4 31 62.7 31 99.8c0 97.2-78.8 176-176 176S0 401.2 0 304s78.8-176 176-176c37 0 71.4 11.4 99.8 31l52.6-52.6L295 73c-6.9-6.9-8.9-17.2-5.2-26.2zM400 80s0 0 0 0s0 0 0 0s0 0 0 0zM176 416a112 112 0 1 0 0-224 112 112 0 1 0 0 224z\"]\n};\nconst faToilet = {\n prefix: 'fas',\n iconName: 'toilet',\n icon: [448, 512, [128701], \"f7d8\", \"M24 0C10.7 0 0 10.7 0 24S10.7 48 24 48l8 0 0 148.9c-1.9 1.4-3.8 2.9-5.6 4.4C10.9 214.5 0 232.9 0 256c0 46.9 14.3 84.1 37 112.5c14.2 17.7 31.1 31.3 48.5 41.8L65.6 469.9c-3.3 9.8-1.6 20.5 4.4 28.8s15.7 13.3 26 13.3l256 0c10.3 0 19.9-4.9 26-13.3s7.7-19.1 4.4-28.8l-19.8-59.5c17.4-10.5 34.3-24.1 48.5-41.8c22.7-28.4 37-65.5 37-112.5c0-23.1-10.9-41.5-26.4-54.6c-1.8-1.5-3.7-3-5.6-4.4L416 48l8 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L24 0zM384 256.3c0 1-.3 2.6-3.8 5.6c-4.8 4.1-14 9-29.3 13.4C320.5 284 276.1 288 224 288s-96.5-4-126.9-12.8c-15.3-4.4-24.5-9.3-29.3-13.4c-3.5-3-3.8-4.6-3.8-5.6l0-.3c0 0 0-.1 0-.1c0-1 0-2.5 3.8-5.8c4.8-4.1 14-9 29.3-13.4C127.5 228 171.9 224 224 224s96.5 4 126.9 12.8c15.3 4.4 24.5 9.3 29.3 13.4c3.8 3.2 3.8 4.8 3.8 5.8c0 0 0 .1 0 .1l0 .3zM328.2 384l-.2 .5 0-.5 .2 0zM112 64l32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faPlaneCircleXmark = {\n prefix: 'fas',\n iconName: 'plane-circle-xmark',\n icon: [640, 512, [], \"e557\", \"M256 0c-35 0-64 59.5-64 93.7l0 84.6L8.1 283.4c-5 2.8-8.1 8.2-8.1 13.9l0 65.5c0 10.6 10.2 18.3 20.4 15.4l171.6-49 0 70.9-57.6 43.2c-4 3-6.4 7.8-6.4 12.8l0 42c0 7.8 6.3 14 14 14c1.3 0 2.6-.2 3.9-.5L256 480l110.1 31.5c1.3 .4 2.6 .5 3.9 .5c6 0 11.1-3.7 13.1-9C344.5 470.7 320 422.2 320 368c0-60.6 30.6-114 77.1-145.6L320 178.3l0-84.6C320 59.5 292 0 256 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nconst faYenSign = {\n prefix: 'fas',\n iconName: 'yen-sign',\n icon: [320, 512, [165, \"cny\", \"jpy\", \"rmb\", \"yen\"], \"f157\", \"M58.6 46.3C48.8 31.5 29 27.6 14.2 37.4S-4.4 67 5.4 81.8L100.2 224 48 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l80 0 0 32-80 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l80 0 0 64c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 80 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-80 0 0-32 80 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-52.2 0L314.6 81.8c9.8-14.7 5.8-34.6-8.9-44.4s-34.6-5.8-44.4 8.9L160 198.3 58.6 46.3z\"]\n};\nconst faCny = faYenSign;\nconst faJpy = faYenSign;\nconst faRmb = faYenSign;\nconst faYen = faYenSign;\nconst faRubleSign = {\n prefix: 'fas',\n iconName: 'ruble-sign',\n icon: [384, 512, [8381, \"rouble\", \"rub\", \"ruble\"], \"f158\", \"M96 32C78.3 32 64 46.3 64 64l0 192-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 32-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32 160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-160 0 0-32 112 0c79.5 0 144-64.5 144-144s-64.5-144-144-144L96 32zM240 256l-112 0 0-160 112 0c44.2 0 80 35.8 80 80s-35.8 80-80 80z\"]\n};\nconst faRouble = faRubleSign;\nconst faRub = faRubleSign;\nconst faRuble = faRubleSign;\nconst faSun = {\n prefix: 'fas',\n iconName: 'sun',\n icon: [512, 512, [9728], \"f185\", \"M361.5 1.2c5 2.1 8.6 6.6 9.6 11.9L391 121l107.9 19.8c5.3 1 9.8 4.6 11.9 9.6s1.5 10.7-1.6 15.2L446.9 256l62.3 90.3c3.1 4.5 3.7 10.2 1.6 15.2s-6.6 8.6-11.9 9.6L391 391 371.1 498.9c-1 5.3-4.6 9.8-9.6 11.9s-10.7 1.5-15.2-1.6L256 446.9l-90.3 62.3c-4.5 3.1-10.2 3.7-15.2 1.6s-8.6-6.6-9.6-11.9L121 391 13.1 371.1c-5.3-1-9.8-4.6-11.9-9.6s-1.5-10.7 1.6-15.2L65.1 256 2.8 165.7c-3.1-4.5-3.7-10.2-1.6-15.2s6.6-8.6 11.9-9.6L121 121 140.9 13.1c1-5.3 4.6-9.8 9.6-11.9s10.7-1.5 15.2 1.6L256 65.1 346.3 2.8c4.5-3.1 10.2-3.7 15.2-1.6zM160 256a96 96 0 1 1 192 0 96 96 0 1 1 -192 0zm224 0a128 128 0 1 0 -256 0 128 128 0 1 0 256 0z\"]\n};\nconst faGuitar = {\n prefix: 'fas',\n iconName: 'guitar',\n icon: [512, 512, [], \"f7a6\", \"M465 7c-9.4-9.4-24.6-9.4-33.9 0L383 55c-2.4 2.4-4.3 5.3-5.5 8.5l-15.4 41-77.5 77.6c-45.1-29.4-99.3-30.2-131 1.6c-11 11-18 24.6-21.4 39.6c-3.7 16.6-19.1 30.7-36.1 31.6c-25.6 1.3-49.3 10.7-67.3 28.6C-16 328.4-7.6 409.4 47.5 464.5s136.1 63.5 180.9 18.7c17.9-17.9 27.4-41.7 28.6-67.3c.9-17 15-32.3 31.6-36.1c15-3.4 28.6-10.5 39.6-21.4c31.8-31.8 31-85.9 1.6-131l77.6-77.6 41-15.4c3.2-1.2 6.1-3.1 8.5-5.5l48-48c9.4-9.4 9.4-24.6 0-33.9L465 7zM208 256a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nconst faFaceLaughWink = {\n prefix: 'fas',\n iconName: 'face-laugh-wink',\n icon: [512, 512, [\"laugh-wink\"], \"f59c\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM96.8 314.1c-3.8-13.7 7.4-26.1 21.6-26.1l275.2 0c14.2 0 25.5 12.4 21.6 26.1C396.2 382 332.1 432 256 432s-140.2-50-159.2-117.9zM144.4 192a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm156.4 25.6c-5.3 7.1-15.3 8.5-22.4 3.2s-8.5-15.3-3.2-22.4c30.4-40.5 91.2-40.5 121.6 0c5.3 7.1 3.9 17.1-3.2 22.4s-17.1 3.9-22.4-3.2c-17.6-23.5-52.8-23.5-70.4 0z\"]\n};\nconst faLaughWink = faFaceLaughWink;\nconst faHorseHead = {\n prefix: 'fas',\n iconName: 'horse-head',\n icon: [640, 512, [], \"f7ab\", \"M64 464l0-147.1c0-108.4 68.3-205.1 170.5-241.3L404.2 15.5C425.6 7.9 448 23.8 448 46.4c0 11-5.5 21.2-14.6 27.3L400 96c48.1 0 91.2 29.8 108.1 74.9l48.6 129.5c11.8 31.4 4.1 66.8-19.6 90.5c-16 16-37.8 25.1-60.5 25.1l-3.4 0c-26.1 0-50.9-11.6-67.6-31.7l-32.3-38.7c-11.7 4.1-24.2 6.4-37.3 6.4c0 0 0 0-.1 0c0 0 0 0 0 0c-6.3 0-12.5-.5-18.6-1.5c-3.6-.6-7.2-1.4-10.7-2.3c0 0 0 0 0 0c-28.9-7.8-53.1-26.8-67.8-52.2c-4.4-7.6-14.2-10.3-21.9-5.8s-10.3 14.2-5.8 21.9c24 41.5 68.3 70 119.3 71.9l47.2 70.8c4 6.1 6.2 13.2 6.2 20.4c0 20.3-16.5 36.8-36.8 36.8L112 512c-26.5 0-48-21.5-48-48zM392 224a24 24 0 1 0 0-48 24 24 0 1 0 0 48z\"]\n};\nconst faBoreHole = {\n prefix: 'fas',\n iconName: 'bore-hole',\n icon: [512, 512, [], \"e4c3\", \"M256 0c-17.7 0-32 14.3-32 32l0 264.6c-19.1 11.1-32 31.7-32 55.4c0 35.3 28.7 64 64 64s64-28.7 64-64c0-23.7-12.9-44.4-32-55.4L288 32c0-17.7-14.3-32-32-32zM48 128c-26.5 0-48 21.5-48 48L0 464c0 26.5 21.5 48 48 48l416 0c26.5 0 48-21.5 48-48l0-288c0-26.5-21.5-48-48-48l-80 0c-17.7 0-32 14.3-32 32l0 192c0 53-43 96-96 96s-96-43-96-96l0-192c0-17.7-14.3-32-32-32l-80 0z\"]\n};\nconst faIndustry = {\n prefix: 'fas',\n iconName: 'industry',\n icon: [576, 512, [], \"f275\", \"M64 32C46.3 32 32 46.3 32 64l0 240 0 48 0 80c0 26.5 21.5 48 48 48l416 0c26.5 0 48-21.5 48-48l0-128 0-151.8c0-18.2-19.4-29.7-35.4-21.1L352 215.4l0-63.2c0-18.2-19.4-29.7-35.4-21.1L160 215.4 160 64c0-17.7-14.3-32-32-32L64 32z\"]\n};\nconst faCircleDown = {\n prefix: 'fas',\n iconName: 'circle-down',\n icon: [512, 512, [61466, \"arrow-alt-circle-down\"], \"f358\", \"M256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM244.7 395.3l-112-112c-4.6-4.6-5.9-11.5-3.5-17.4s8.3-9.9 14.8-9.9l64 0 0-96c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 96 64 0c6.5 0 12.3 3.9 14.8 9.9s1.1 12.9-3.5 17.4l-112 112c-6.2 6.2-16.4 6.2-22.6 0z\"]\n};\nconst faArrowAltCircleDown = faCircleDown;\nconst faArrowsTurnToDots = {\n prefix: 'fas',\n iconName: 'arrows-turn-to-dots',\n icon: [512, 512, [], \"e4c1\", \"M249.4 25.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L269.3 96 416 96c53 0 96 43 96 96l0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32c0-17.7-14.3-32-32-32l-146.7 0 25.4 25.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-80-80c-12.5-12.5-12.5-32.8 0-45.3l80-80zm13.3 256l80 80c12.5 12.5 12.5 32.8 0 45.3l-80 80c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 416 96 416c-17.7 0-32 14.3-32 32l0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32c0-53 43-96 96-96l146.7 0-25.4-25.4c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0zM384 384a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM64 192A64 64 0 1 1 64 64a64 64 0 1 1 0 128z\"]\n};\nconst faFlorinSign = {\n prefix: 'fas',\n iconName: 'florin-sign',\n icon: [384, 512, [], \"e184\", \"M314.7 32c-38.8 0-73.7 23.3-88.6 59.1L170.7 224 64 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l80 0L98.9 396.3c-5 11.9-16.6 19.7-29.5 19.7L32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l37.3 0c38.8 0 73.7-23.3 88.6-59.1L213.3 288 320 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-80 0 45.1-108.3c5-11.9 16.6-19.7 29.5-19.7L352 96c17.7 0 32-14.3 32-32s-14.3-32-32-32l-37.3 0z\"]\n};\nconst faArrowDownShortWide = {\n prefix: 'fas',\n iconName: 'arrow-down-short-wide',\n icon: [576, 512, [\"sort-amount-desc\", \"sort-amount-down-alt\"], \"f884\", \"M151.6 469.6C145.5 476.2 137 480 128 480s-17.5-3.8-23.6-10.4l-88-96c-11.9-13-11.1-33.3 2-45.2s33.3-11.1 45.2 2L96 365.7 96 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 301.7 32.4-35.4c11.9-13 32.2-13.9 45.2-2s13.9 32.2 2 45.2l-88 96zM320 32l32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128l160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 128l224 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-224 0c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faSortAmountDesc = faArrowDownShortWide;\nconst faSortAmountDownAlt = faArrowDownShortWide;\nconst faLessThan = {\n prefix: 'fas',\n iconName: 'less-than',\n icon: [384, 512, [62774], \"3c\", \"M380.6 81.7c7.9 15.8 1.5 35-14.3 42.9L103.6 256 366.3 387.4c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3l-320-160C6.8 279.2 0 268.1 0 256s6.8-23.2 17.7-28.6l320-160c15.8-7.9 35-1.5 42.9 14.3z\"]\n};\nconst faAngleDown = {\n prefix: 'fas',\n iconName: 'angle-down',\n icon: [448, 512, [8964], \"f107\", \"M201.4 374.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 306.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z\"]\n};\nconst faCarTunnel = {\n prefix: 'fas',\n iconName: 'car-tunnel',\n icon: [512, 512, [], \"e4de\", \"M256 0C114.6 0 0 114.6 0 256L0 448c0 35.3 28.7 64 64 64l42.8 0c-6.6-5.9-10.8-14.4-10.8-24l0-112c0-20.8 11.3-38.9 28.1-48.6l21-64.7c7.5-23.1 29-38.7 53.3-38.7l115.2 0c24.3 0 45.8 15.6 53.3 38.7l21 64.7c16.8 9.7 28.2 27.8 28.2 48.6l0 112c0 9.6-4.2 18.1-10.8 24l42.8 0c35.3 0 64-28.7 64-64l0-192C512 114.6 397.4 0 256 0zM362.8 512c-6.6-5.9-10.8-14.4-10.8-24l0-40-192 0 0 40c0 9.6-4.2 18.1-10.8 24l213.7 0zM190.8 277.5L177 320l158 0-13.8-42.5c-1.1-3.3-4.1-5.5-7.6-5.5l-115.2 0c-3.5 0-6.5 2.2-7.6 5.5zM168 408a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm200-24a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z\"]\n};\nconst faHeadSideCough = {\n prefix: 'fas',\n iconName: 'head-side-cough',\n icon: [640, 512, [], \"e061\", \"M0 224.2C0 100.6 100.2 0 224 0l24 0c95.2 0 181.2 69.3 197.3 160.2c2.3 13 6.8 25.7 15.1 36l42 52.6c6.2 7.8 9.6 17.4 9.6 27.4c0 24.2-19.6 43.8-43.8 43.8L448 320s0 0 0 0l0 32L339.2 365.6c-11 1.4-19.2 10.7-19.2 21.8c0 11.6 9 21.2 20.6 21.9L448 416l0 16c0 26.5-21.5 48-48 48l-80 0 0 8c0 13.3-10.7 24-24 24l-40 0s0 0 0 0L96 512c-17.7 0-32-14.3-32-32l0-72.7c0-16.7-6.9-32.5-17.1-45.8C16.6 322.4 0 274.1 0 224.2zm352-.2a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM464 384a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm152-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM592 480a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM552 312a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm40-24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM552 408a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faGripLines = {\n prefix: 'fas',\n iconName: 'grip-lines',\n icon: [448, 512, [], \"f7a4\", \"M32 288c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 288zm0-128c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 160z\"]\n};\nconst faThumbsDown = {\n prefix: 'fas',\n iconName: 'thumbs-down',\n icon: [512, 512, [128078, 61576], \"f165\", \"M313.4 479.1c26-5.2 42.9-30.5 37.7-56.5l-2.3-11.4c-5.3-26.7-15.1-52.1-28.8-75.2l144 0c26.5 0 48-21.5 48-48c0-18.5-10.5-34.6-25.9-42.6C497 236.6 504 223.1 504 208c0-23.4-16.8-42.9-38.9-47.1c4.4-7.3 6.9-15.8 6.9-24.9c0-21.3-13.9-39.4-33.1-45.6c.7-3.3 1.1-6.8 1.1-10.4c0-26.5-21.5-48-48-48l-97.5 0c-19 0-37.5 5.6-53.3 16.1L202.7 73.8C176 91.6 160 121.6 160 153.7l0 38.3 0 48 0 24.9c0 29.2 13.3 56.7 36 75l7.4 5.9c26.5 21.2 44.6 51 51.2 84.2l2.3 11.4c5.2 26 30.5 42.9 56.5 37.7zM32 384l64 0c17.7 0 32-14.3 32-32l0-224c0-17.7-14.3-32-32-32L32 96C14.3 96 0 110.3 0 128L0 352c0 17.7 14.3 32 32 32z\"]\n};\nconst faUserLock = {\n prefix: 'fas',\n iconName: 'user-lock',\n icon: [640, 512, [], \"f502\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512l362.8 0c-5.4-9.4-8.6-20.3-8.6-32l0-128c0-2.1 .1-4.2 .3-6.3c-31-26-71-41.7-114.6-41.7l-91.4 0zM528 240c17.7 0 32 14.3 32 32l0 48-64 0 0-48c0-17.7 14.3-32 32-32zm-80 32l0 48c-17.7 0-32 14.3-32 32l0 128c0 17.7 14.3 32 32 32l160 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32l0-48c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nconst faArrowRightLong = {\n prefix: 'fas',\n iconName: 'arrow-right-long',\n icon: [512, 512, [\"long-arrow-right\"], \"f178\", \"M502.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l370.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128z\"]\n};\nconst faLongArrowRight = faArrowRightLong;\nconst faAnchorCircleXmark = {\n prefix: 'fas',\n iconName: 'anchor-circle-xmark',\n icon: [640, 512, [], \"e4ac\", \"M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80L224 176c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 208-48 0c-53 0-96-43-96-96l0-6.1 7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7 0 6.1c0 88.4 71.6 160 160 160l80 0 80 0c8.2 0 16.3-.6 24.2-1.8c-22.2-16.2-40.4-37.5-53-62.2L320 448l0-80 0-128 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-10.9 0zM496 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L518.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L496 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L473.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L496 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nconst faEllipsis = {\n prefix: 'fas',\n iconName: 'ellipsis',\n icon: [448, 512, [\"ellipsis-h\"], \"f141\", \"M8 256a56 56 0 1 1 112 0A56 56 0 1 1 8 256zm160 0a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zm216-56a56 56 0 1 1 0 112 56 56 0 1 1 0-112z\"]\n};\nconst faEllipsisH = faEllipsis;\nconst faChessPawn = {\n prefix: 'fas',\n iconName: 'chess-pawn',\n icon: [320, 512, [9823], \"f443\", \"M215.5 224c29.2-18.4 48.5-50.9 48.5-88c0-57.4-46.6-104-104-104S56 78.6 56 136c0 37.1 19.4 69.6 48.5 88L96 224c-17.7 0-32 14.3-32 32c0 16.5 12.5 30 28.5 31.8L80 400l160 0L227.5 287.8c16-1.8 28.5-15.3 28.5-31.8c0-17.7-14.3-32-32-32l-8.5 0zM22.6 473.4c-4.2 4.2-6.6 10-6.6 16C16 501.9 26.1 512 38.6 512l242.7 0c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16L256 432 64 432 22.6 473.4z\"]\n};\nconst faKitMedical = {\n prefix: 'fas',\n iconName: 'kit-medical',\n icon: [576, 512, [\"first-aid\"], \"f479\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l32 0L96 32 64 32zm64 0l0 448 320 0 0-448L128 32zM512 480c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64l-32 0 0 448 32 0zM256 176c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 48 48 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-48 0 0 48c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-48-48 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l48 0 0-48z\"]\n};\nconst faFirstAid = faKitMedical;\nconst faPersonThroughWindow = {\n prefix: 'fas',\n iconName: 'person-through-window',\n icon: [640, 512, [], \"e5a9\", \"M64 64l224 0 0 9.8c0 39-23.7 74-59.9 88.4C167.6 186.5 128 245 128 310.2l0 73.8s0 0 0 0l-64 0L64 64zm288 0l224 0 0 320-67.7 0-3.7-4.5-75.2-90.2c-9.1-10.9-22.6-17.3-36.9-17.3l-71.1 0-41-63.1c-.3-.5-.6-1-1-1.4c44.7-29 72.5-79 72.5-133.6l0-9.8zm73 320l-45.8 0 42.7 64L592 448c26.5 0 48-21.5 48-48l0-352c0-26.5-21.5-48-48-48L48 0C21.5 0 0 21.5 0 48L0 400c0 26.5 21.5 48 48 48l260.2 0 33.2 49.8c9.8 14.7 29.7 18.7 44.4 8.9s18.7-29.7 8.9-44.4L310.5 336l74.6 0 40 48zm-159.5 0L192 384s0 0 0 0l0-73.8c0-10.2 1.6-20.1 4.7-29.5L265.5 384zM192 128a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nconst faToolbox = {\n prefix: 'fas',\n iconName: 'toolbox',\n icon: [512, 512, [129520], \"f552\", \"M176 88l0 40 160 0 0-40c0-4.4-3.6-8-8-8L184 80c-4.4 0-8 3.6-8 8zm-48 40l0-40c0-30.9 25.1-56 56-56l144 0c30.9 0 56 25.1 56 56l0 40 28.1 0c12.7 0 24.9 5.1 33.9 14.1l51.9 51.9c9 9 14.1 21.2 14.1 33.9l0 92.1-128 0 0-32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 32-128 0 0-32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 32L0 320l0-92.1c0-12.7 5.1-24.9 14.1-33.9l51.9-51.9c9-9 21.2-14.1 33.9-14.1l28.1 0zM0 416l0-64 128 0c0 17.7 14.3 32 32 32s32-14.3 32-32l128 0c0 17.7 14.3 32 32 32s32-14.3 32-32l128 0 0 64c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64z\"]\n};\nconst faHandsHoldingCircle = {\n prefix: 'fas',\n iconName: 'hands-holding-circle',\n icon: [640, 512, [], \"e4fb\", \"M320 0a128 128 0 1 1 0 256A128 128 0 1 1 320 0zM40 64c22.1 0 40 17.9 40 40l0 40 0 80 0 40.2c0 17 6.7 33.3 18.7 45.3l51.1 51.1c8.3 8.3 21.3 9.6 31 3.1c12.9-8.6 14.7-26.9 3.7-37.8l-15.2-15.2-32-32c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l32 32 15.2 15.2c0 0 0 0 0 0l25.3 25.3c21 21 32.8 49.5 32.8 79.2l0 78.9c0 26.5-21.5 48-48 48l-66.7 0c-17 0-33.3-6.7-45.3-18.7L28.1 393.4C10.1 375.4 0 351 0 325.5L0 224l0-64 0-56C0 81.9 17.9 64 40 64zm560 0c22.1 0 40 17.9 40 40l0 56 0 64 0 101.5c0 25.5-10.1 49.9-28.1 67.9L512 493.3c-12 12-28.3 18.7-45.3 18.7L400 512c-26.5 0-48-21.5-48-48l0-78.9c0-29.7 11.8-58.2 32.8-79.2l25.3-25.3c0 0 0 0 0 0l15.2-15.2 32-32c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-32 32-15.2 15.2c-11 11-9.2 29.2 3.7 37.8c9.7 6.5 22.7 5.2 31-3.1l51.1-51.1c12-12 18.7-28.3 18.7-45.3l0-40.2 0-80 0-40c0-22.1 17.9-40 40-40z\"]\n};\nconst faBug = {\n prefix: 'fas',\n iconName: 'bug',\n icon: [512, 512, [], \"f188\", \"M256 0c53 0 96 43 96 96l0 3.6c0 15.7-12.7 28.4-28.4 28.4l-135.1 0c-15.7 0-28.4-12.7-28.4-28.4l0-3.6c0-53 43-96 96-96zM41.4 105.4c12.5-12.5 32.8-12.5 45.3 0l64 64c.7 .7 1.3 1.4 1.9 2.1c14.2-7.3 30.4-11.4 47.5-11.4l112 0c17.1 0 33.2 4.1 47.5 11.4c.6-.7 1.2-1.4 1.9-2.1l64-64c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-64 64c-.7 .7-1.4 1.3-2.1 1.9c6.2 12 10.1 25.3 11.1 39.5l64.3 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c0 24.6-5.5 47.8-15.4 68.6c2.2 1.3 4.2 2.9 6 4.8l64 64c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-63.1-63.1c-24.5 21.8-55.8 36.2-90.3 39.6L272 240c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 239.2c-34.5-3.4-65.8-17.8-90.3-39.6L86.6 502.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l64-64c1.9-1.9 3.9-3.4 6-4.8C101.5 367.8 96 344.6 96 320l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64.3 0c1.1-14.1 5-27.5 11.1-39.5c-.7-.6-1.4-1.2-2.1-1.9l-64-64c-12.5-12.5-12.5-32.8 0-45.3z\"]\n};\nconst faCreditCard = {\n prefix: 'fas',\n iconName: 'credit-card',\n icon: [576, 512, [128179, 62083, \"credit-card-alt\"], \"f09d\", \"M64 32C28.7 32 0 60.7 0 96l0 32 576 0 0-32c0-35.3-28.7-64-64-64L64 32zM576 224L0 224 0 416c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-192zM112 352l64 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-64 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm112 16c0-8.8 7.2-16 16-16l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16z\"]\n};\nconst faCreditCardAlt = faCreditCard;\nconst faCar = {\n prefix: 'fas',\n iconName: 'car',\n icon: [512, 512, [128664, \"automobile\"], \"f1b9\", \"M135.2 117.4L109.1 192l293.8 0-26.1-74.6C372.3 104.6 360.2 96 346.6 96L165.4 96c-13.6 0-25.7 8.6-30.2 21.4zM39.6 196.8L74.8 96.3C88.3 57.8 124.6 32 165.4 32l181.2 0c40.8 0 77.1 25.8 90.6 64.3l35.2 100.5c23.2 9.6 39.6 32.5 39.6 59.2l0 144 0 48c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-48L96 400l0 48c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-48L0 256c0-26.7 16.4-49.6 39.6-59.2zM128 288a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm288 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faAutomobile = faCar;\nconst faHandHoldingHand = {\n prefix: 'fas',\n iconName: 'hand-holding-hand',\n icon: [576, 512, [], \"e4f7\", \"M7.8 207.7c-13.1-17.8-9.3-42.8 8.5-55.9L142.9 58.5C166.2 41.3 194.5 32 223.5 32L384 32l160 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-36.8 0-44.9 36c-22.7 18.2-50.9 28-80 28L304 224l-16 0-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0 16 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-120.6 0L63.7 216.2c-17.8 13.1-42.8 9.3-55.9-8.5zM382.4 160c0 0 0 0 0 0l.9 0c-.3 0-.6 0-.9 0zM568.2 304.3c13.1 17.8 9.3 42.8-8.5 55.9L433.1 453.5c-23.4 17.2-51.6 26.5-80.7 26.5L192 480 32 480c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32l36.8 0 44.9-36c22.7-18.2 50.9-28 80-28l78.3 0 16 0 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0-16 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l120.6 0 119.7-88.2c17.8-13.1 42.8-9.3 55.9 8.5zM193.6 352c0 0 0 0 0 0l-.9 0c.3 0 .6 0 .9 0z\"]\n};\nconst faBookOpenReader = {\n prefix: 'fas',\n iconName: 'book-open-reader',\n icon: [512, 512, [\"book-reader\"], \"f5da\", \"M160 96a96 96 0 1 1 192 0A96 96 0 1 1 160 96zm80 152l0 264-48.4-24.2c-20.9-10.4-43.5-17-66.8-19.3l-96-9.6C12.5 457.2 0 443.5 0 427L0 224c0-17.7 14.3-32 32-32l30.3 0c63.6 0 125.6 19.6 177.7 56zm32 264l0-264c52.1-36.4 114.1-56 177.7-56l30.3 0c17.7 0 32 14.3 32 32l0 203c0 16.4-12.5 30.2-28.8 31.8l-96 9.6c-23.2 2.3-45.9 8.9-66.8 19.3L272 512z\"]\n};\nconst faBookReader = faBookOpenReader;\nconst faMountainSun = {\n prefix: 'fas',\n iconName: 'mountain-sun',\n icon: [640, 512, [], \"e52f\", \"M560 160A80 80 0 1 0 560 0a80 80 0 1 0 0 160zM55.9 512l325.2 0 75 0 122.8 0c33.8 0 61.1-27.4 61.1-61.1c0-11.2-3.1-22.2-8.9-31.8l-132-216.3C495 196.1 487.8 192 480 192s-15 4.1-19.1 10.7l-48.2 79L286.8 81c-6.6-10.6-18.3-17-30.8-17s-24.1 6.4-30.8 17L8.6 426.4C3 435.3 0 445.6 0 456.1C0 487 25 512 55.9 512z\"]\n};\nconst faArrowsLeftRightToLine = {\n prefix: 'fas',\n iconName: 'arrows-left-right-to-line',\n icon: [640, 512, [], \"e4ba\", \"M32 64c17.7 0 32 14.3 32 32l0 320c0 17.7-14.3 32-32 32s-32-14.3-32-32L0 96C0 78.3 14.3 64 32 64zm214.6 73.4c12.5 12.5 12.5 32.8 0 45.3L205.3 224l229.5 0-41.4-41.4c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3l-96 96c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L434.7 288l-229.5 0 41.4 41.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-96-96c-12.5-12.5-12.5-32.8 0-45.3l96-96c12.5-12.5 32.8-12.5 45.3 0zM640 96l0 320c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-320c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nconst faDiceD20 = {\n prefix: 'fas',\n iconName: 'dice-d20',\n icon: [512, 512, [], \"f6cf\", \"M48.7 125.8l53.2 31.9c7.8 4.7 17.8 2 22.2-5.9L201.6 12.1c3-5.4-.9-12.1-7.1-12.1c-1.6 0-3.2 .5-4.6 1.4L47.9 98.8c-9.6 6.6-9.2 20.9 .8 26.9zM16 171.7l0 123.5c0 8 10.4 11 14.7 4.4l60-92c5-7.6 2.6-17.8-5.2-22.5L40.2 158C29.6 151.6 16 159.3 16 171.7zM310.4 12.1l77.6 139.6c4.4 7.9 14.5 10.6 22.2 5.9l53.2-31.9c10-6 10.4-20.3 .8-26.9L322.1 1.4c-1.4-.9-3-1.4-4.6-1.4c-6.2 0-10.1 6.7-7.1 12.1zM496 171.7c0-12.4-13.6-20.1-24.2-13.7l-45.3 27.2c-7.8 4.7-10.1 14.9-5.2 22.5l60 92c4.3 6.7 14.7 3.6 14.7-4.4l0-123.5zm-49.3 246L286.1 436.6c-8.1 .9-14.1 7.8-14.1 15.9l0 52.8c0 3.7 3 6.8 6.8 6.8c.8 0 1.6-.1 2.4-.4l172.7-64c6.1-2.2 10.1-8 10.1-14.5c0-9.3-8.1-16.5-17.3-15.4zM233.2 512c3.7 0 6.8-3 6.8-6.8l0-52.6c0-8.1-6.1-14.9-14.1-15.9l-160.6-19c-9.2-1.1-17.3 6.1-17.3 15.4c0 6.5 4 12.3 10.1 14.5l172.7 64c.8 .3 1.6 .4 2.4 .4zM41.7 382.9l170.9 20.2c7.8 .9 13.4-7.5 9.5-14.3l-85.7-150c-5.9-10.4-20.7-10.8-27.3-.8L30.2 358.2c-6.5 9.9-.3 23.3 11.5 24.7zm439.6-24.8L402.9 238.1c-6.5-10-21.4-9.6-27.3 .8L290.2 388.5c-3.9 6.8 1.6 15.2 9.5 14.3l170.1-20c11.8-1.4 18-14.7 11.5-24.6zm-216.9 11l78.4-137.2c6.1-10.7-1.6-23.9-13.9-23.9l-145.7 0c-12.3 0-20 13.3-13.9 23.9l78.4 137.2c3.7 6.4 13 6.4 16.7 0zM174.4 176l163.2 0c12.2 0 19.9-13.1 14-23.8l-80-144c-2.8-5.1-8.2-8.2-14-8.2l-3.2 0c-5.8 0-11.2 3.2-14 8.2l-80 144c-5.9 10.7 1.8 23.8 14 23.8z\"]\n};\nconst faTruckDroplet = {\n prefix: 'fas',\n iconName: 'truck-droplet',\n icon: [640, 512, [], \"e58c\", \"M0 48C0 21.5 21.5 0 48 0L368 0c26.5 0 48 21.5 48 48l0 48 50.7 0c17 0 33.3 6.7 45.3 18.7L589.3 192c12 12 18.7 28.3 18.7 45.3l0 18.7 0 32 0 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0c0 53-43 96-96 96s-96-43-96-96l-128 0c0 53-43 96-96 96s-96-43-96-96l-16 0c-26.5 0-48-21.5-48-48L0 48zM416 256l128 0 0-18.7L466.7 160 416 160l0 96zM160 464a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm368-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM208 272c39.8 0 72-29.6 72-66c0-27-39.4-82.9-59.9-110.3c-6.1-8.2-18.1-8.2-24.2 0C175.4 123 136 179 136 206c0 36.5 32.2 66 72 66z\"]\n};\nconst faFileCircleXmark = {\n prefix: 'fas',\n iconName: 'file-circle-xmark',\n icon: [576, 512, [], \"e5a1\", \"M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zm48 96a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm59.3 107.3c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.2-22.6 0L432 345.4l-36.7-36.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6L409.4 368l-36.7 36.7c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0L432 390.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6L454.6 368l36.7-36.7z\"]\n};\nconst faTemperatureArrowUp = {\n prefix: 'fas',\n iconName: 'temperature-arrow-up',\n icon: [576, 512, [\"temperature-up\"], \"e040\", \"M128 112c0-26.5 21.5-48 48-48s48 21.5 48 48l0 164.5c0 17.3 7.1 31.9 15.3 42.5C249.8 332.6 256 349.5 256 368c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-18.5 6.2-35.4 16.7-48.9c8.2-10.6 15.3-25.2 15.3-42.5L128 112zM176 0C114.1 0 64 50.1 64 112l0 164.4c0 .1-.1 .3-.2 .6c-.2 .6-.8 1.6-1.7 2.8C43.2 304.2 32 334.8 32 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-33.2-11.2-63.8-30.1-88.1c-.9-1.2-1.5-2.2-1.7-2.8c-.1-.3-.2-.5-.2-.6L288 112C288 50.1 237.9 0 176 0zm0 416c26.5 0 48-21.5 48-48c0-20.9-13.4-38.7-32-45.3L192 112c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 210.7c-18.6 6.6-32 24.4-32 45.3c0 26.5 21.5 48 48 48zM480 160l32 0c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8l32 0 0 288c0 17.7 14.3 32 32 32s32-14.3 32-32l0-288z\"]\n};\nconst faTemperatureUp = faTemperatureArrowUp;\nconst faMedal = {\n prefix: 'fas',\n iconName: 'medal',\n icon: [512, 512, [127941], \"f5a2\", \"M4.1 38.2C1.4 34.2 0 29.4 0 24.6C0 11 11 0 24.6 0L133.9 0c11.2 0 21.7 5.9 27.4 15.5l68.5 114.1c-48.2 6.1-91.3 28.6-123.4 61.9L4.1 38.2zm503.7 0L405.6 191.5c-32.1-33.3-75.2-55.8-123.4-61.9L350.7 15.5C356.5 5.9 366.9 0 378.1 0L487.4 0C501 0 512 11 512 24.6c0 4.8-1.4 9.6-4.1 13.6zM80 336a176 176 0 1 1 352 0A176 176 0 1 1 80 336zm184.4-94.9c-3.4-7-13.3-7-16.8 0l-22.4 45.4c-1.4 2.8-4 4.7-7 5.1L168 298.9c-7.7 1.1-10.7 10.5-5.2 16l36.3 35.4c2.2 2.2 3.2 5.2 2.7 8.3l-8.6 49.9c-1.3 7.6 6.7 13.5 13.6 9.9l44.8-23.6c2.7-1.4 6-1.4 8.7 0l44.8 23.6c6.9 3.6 14.9-2.2 13.6-9.9l-8.6-49.9c-.5-3 .5-6.1 2.7-8.3l36.3-35.4c5.6-5.4 2.5-14.8-5.2-16l-50.1-7.3c-3-.4-5.7-2.4-7-5.1l-22.4-45.4z\"]\n};\nconst faBed = {\n prefix: 'fas',\n iconName: 'bed',\n icon: [640, 512, [128716], \"f236\", \"M32 32c17.7 0 32 14.3 32 32l0 256 224 0 0-160c0-17.7 14.3-32 32-32l224 0c53 0 96 43 96 96l0 224c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-32-224 0-32 0L64 416l0 32c0 17.7-14.3 32-32 32s-32-14.3-32-32L0 64C0 46.3 14.3 32 32 32zm144 96a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nconst faSquareH = {\n prefix: 'fas',\n iconName: 'square-h',\n icon: [448, 512, [\"h-square\"], \"f0fd\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM336 152l0 104 0 104c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-80-128 0 0 80c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-208c0-13.3 10.7-24 24-24s24 10.7 24 24l0 80 128 0 0-80c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nconst faHSquare = faSquareH;\nconst faPodcast = {\n prefix: 'fas',\n iconName: 'podcast',\n icon: [448, 512, [], \"f2ce\", \"M319.4 372c48.5-31.3 80.6-85.9 80.6-148c0-97.2-78.8-176-176-176S48 126.8 48 224c0 62.1 32.1 116.6 80.6 148c1.2 17.3 4 38 7.2 57.1l.2 1C56 395.8 0 316.5 0 224C0 100.3 100.3 0 224 0S448 100.3 448 224c0 92.5-56 171.9-136 206.1l.2-1.1c3.1-19.2 6-39.8 7.2-57zm-2.3-38.1c-1.6-5.7-3.9-11.1-7-16.2c-5.8-9.7-13.5-17-21.9-22.4c19.5-17.6 31.8-43 31.8-71.3c0-53-43-96-96-96s-96 43-96 96c0 28.3 12.3 53.8 31.8 71.3c-8.4 5.4-16.1 12.7-21.9 22.4c-3.1 5.1-5.4 10.5-7 16.2C99.8 307.5 80 268 80 224c0-79.5 64.5-144 144-144s144 64.5 144 144c0 44-19.8 83.5-50.9 109.9zM224 312c32.9 0 64 8.6 64 43.8c0 33-12.9 104.1-20.6 132.9c-5.1 19-24.5 23.4-43.4 23.4s-38.2-4.4-43.4-23.4c-7.8-28.5-20.6-99.7-20.6-132.8c0-35.1 31.1-43.8 64-43.8zm0-144a56 56 0 1 1 0 112 56 56 0 1 1 0-112z\"]\n};\nconst faTemperatureFull = {\n prefix: 'fas',\n iconName: 'temperature-full',\n icon: [320, 512, [\"temperature-4\", \"thermometer-4\", \"thermometer-full\"], \"f2c7\", \"M160 64c-26.5 0-48 21.5-48 48l0 164.5c0 17.3-7.1 31.9-15.3 42.5C86.2 332.6 80 349.5 80 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5L208 112c0-26.5-21.5-48-48-48zM48 112C48 50.2 98.1 0 160 0s112 50.1 112 112l0 164.4c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S16 447.5 16 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6L48 112zM208 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3L144 112c0-8.8 7.2-16 16-16s16 7.2 16 16l0 210.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nconst faTemperature4 = faTemperatureFull;\nconst faThermometer4 = faTemperatureFull;\nconst faThermometerFull = faTemperatureFull;\nconst faBell = {\n prefix: 'fas',\n iconName: 'bell',\n icon: [448, 512, [128276, 61602], \"f0f3\", \"M224 0c-17.7 0-32 14.3-32 32l0 19.2C119 66 64 130.6 64 208l0 18.8c0 47-17.3 92.4-48.5 127.6l-7.4 8.3c-8.4 9.4-10.4 22.9-5.3 34.4S19.4 416 32 416l384 0c12.6 0 24-7.4 29.2-18.9s3.1-25-5.3-34.4l-7.4-8.3C401.3 319.2 384 273.9 384 226.8l0-18.8c0-77.4-55-142-128-156.8L256 32c0-17.7-14.3-32-32-32zm45.3 493.3c12-12 18.7-28.3 18.7-45.3l-64 0-64 0c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7z\"]\n};\nconst faSuperscript = {\n prefix: 'fas',\n iconName: 'superscript',\n icon: [512, 512, [], \"f12b\", \"M480 32c0-11.1-5.7-21.4-15.2-27.2s-21.2-6.4-31.1-1.4l-32 16c-15.8 7.9-22.2 27.1-14.3 42.9C393 73.5 404.3 80 416 80l0 80c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-128zM32 64C14.3 64 0 78.3 0 96s14.3 32 32 32l15.3 0 89.6 128L47.3 384 32 384c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0c10.4 0 20.2-5.1 26.2-13.6L176 311.8l85.8 122.6c6 8.6 15.8 13.6 26.2 13.6l32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-15.3 0L215.1 256l89.6-128 15.3 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0c-10.4 0-20.2 5.1-26.2 13.6L176 200.2 90.2 77.6C84.2 69.1 74.4 64 64 64L32 64z\"]\n};\nconst faPlugCircleXmark = {\n prefix: 'fas',\n iconName: 'plug-circle-xmark',\n icon: [576, 512, [], \"e560\", \"M96 0C78.3 0 64 14.3 64 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 32c0 77.4 55 142 128 156.8l0 67.2c0 17.7 14.3 32 32 32s32-14.3 32-32l0-67.2c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32L32 160zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm59.3-180.7L454.6 368l36.7 36.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L432 390.6l-36.7 36.7c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6L409.4 368l-36.7-36.7c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L432 345.4l36.7-36.7c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nconst faStarOfLife = {\n prefix: 'fas',\n iconName: 'star-of-life',\n icon: [512, 512, [], \"f621\", \"M208 32c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 140.9 122-70.4c15.3-8.8 34.9-3.6 43.7 11.7l16 27.7c8.8 15.3 3.6 34.9-11.7 43.7L352 256l122 70.4c15.3 8.8 20.6 28.4 11.7 43.7l-16 27.7c-8.8 15.3-28.4 20.6-43.7 11.7L304 339.1 304 480c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-140.9L86 409.6c-15.3 8.8-34.9 3.6-43.7-11.7l-16-27.7c-8.8-15.3-3.6-34.9 11.7-43.7L160 256 38 185.6c-15.3-8.8-20.5-28.4-11.7-43.7l16-27.7C51.1 98.8 70.7 93.6 86 102.4l122 70.4L208 32z\"]\n};\nconst faPhoneSlash = {\n prefix: 'fas',\n iconName: 'phone-slash',\n icon: [640, 512, [], \"f3dd\", \"M228.9 24.6c-7.7-18.6-28-28.5-47.4-23.2l-88 24C76.1 30.2 64 46 64 64c0 107.4 37.8 206 100.8 283.1L9.2 469.1c-10.4 8.2-12.3 23.3-4.1 33.7s23.3 12.3 33.7 4.1l592-464c10.4-8.2 12.3-23.3 4.1-33.7s-23.3-12.3-33.7-4.1L253 278c-17.8-21.5-32.9-45.2-45-70.7L257.3 167c13.7-11.2 18.4-30 11.6-46.3l-40-96zm96.8 319l-91.3 72C310.7 476 407.1 512 512 512c18 0 33.8-12.1 38.6-29.5l24-88c5.3-19.4-4.6-39.7-23.2-47.4l-96-40c-16.3-6.8-35.2-2.1-46.3 11.6L368.7 368c-15-7.1-29.3-15.2-43-24.3z\"]\n};\nconst faPaintRoller = {\n prefix: 'fas',\n iconName: 'paint-roller',\n icon: [512, 512, [], \"f5aa\", \"M0 64C0 28.7 28.7 0 64 0L352 0c35.3 0 64 28.7 64 64l0 64c0 35.3-28.7 64-64 64L64 192c-35.3 0-64-28.7-64-64L0 64zM160 352c0-17.7 14.3-32 32-32l0-16c0-44.2 35.8-80 80-80l144 0c17.7 0 32-14.3 32-32l0-32 0-90.5c37.3 13.2 64 48.7 64 90.5l0 32c0 53-43 96-96 96l-144 0c-8.8 0-16 7.2-16 16l0 16c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-128z\"]\n};\nconst faHandshakeAngle = {\n prefix: 'fas',\n iconName: 'handshake-angle',\n icon: [640, 512, [\"hands-helping\"], \"f4c4\", \"M544 248l0 3.3 69.7-69.7c21.9-21.9 21.9-57.3 0-79.2L535.6 24.4c-21.9-21.9-57.3-21.9-79.2 0L416.3 64.5c-2.7-.3-5.5-.5-8.3-.5L296 64c-37.1 0-67.6 28-71.6 64l-.4 0 0 120c0 22.1 17.9 40 40 40s40-17.9 40-40l0-72c0 0 0-.1 0-.1l0-15.9 16 0 136 0c0 0 0 0 .1 0l7.9 0c44.2 0 80 35.8 80 80l0 8zM336 192l0 56c0 39.8-32.2 72-72 72s-72-32.2-72-72l0-118.6c-35.9 6.2-65.8 32.3-76 68.2L99.5 255.2 26.3 328.4c-21.9 21.9-21.9 57.3 0 79.2l78.1 78.1c21.9 21.9 57.3 21.9 79.2 0l37.7-37.7c.9 0 1.8 .1 2.7 .1l160 0c26.5 0 48-21.5 48-48c0-5.6-1-11-2.7-16l2.7 0c26.5 0 48-21.5 48-48c0-12.8-5-24.4-13.2-33c25.7-5 45.1-27.6 45.2-54.8l0-.4c-.1-30.8-25.1-55.8-56-55.8c0 0 0 0 0 0l-120 0z\"]\n};\nconst faHandsHelping = faHandshakeAngle;\nconst faLocationDot = {\n prefix: 'fas',\n iconName: 'location-dot',\n icon: [384, 512, [\"map-marker-alt\"], \"f3c5\", \"M215.7 499.2C267 435 384 279.4 384 192C384 86 298 0 192 0S0 86 0 192c0 87.4 117 243 168.3 307.2c12.3 15.3 35.1 15.3 47.4 0zM192 128a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nconst faMapMarkerAlt = faLocationDot;\nconst faFile = {\n prefix: 'fas',\n iconName: 'file',\n icon: [384, 512, [128196, 128459, 61462], \"f15b\", \"M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 288c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128z\"]\n};\nconst faGreaterThan = {\n prefix: 'fas',\n iconName: 'greater-than',\n icon: [384, 512, [62769], \"3e\", \"M3.4 81.7c-7.9 15.8-1.5 35 14.3 42.9L280.5 256 17.7 387.4C1.9 395.3-4.5 414.5 3.4 430.3s27.1 22.2 42.9 14.3l320-160c10.8-5.4 17.7-16.5 17.7-28.6s-6.8-23.2-17.7-28.6l-320-160c-15.8-7.9-35-1.5-42.9 14.3z\"]\n};\nconst faPersonSwimming = {\n prefix: 'fas',\n iconName: 'person-swimming',\n icon: [576, 512, [127946, \"swimmer\"], \"f5c4\", \"M309.5 178.4L447.9 297.1c-1.6 .9-3.2 2-4.8 3c-18 12.4-40.1 20.3-59.2 20.3c-19.6 0-40.8-7.7-59.2-20.3c-22.1-15.5-51.6-15.5-73.7 0c-17.1 11.8-38 20.3-59.2 20.3c-10.1 0-21.1-2.2-31.9-6.2C163.1 193.2 262.2 96 384 96l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-26.9 0-52.3 6.6-74.5 18.4zM160 160A64 64 0 1 1 32 160a64 64 0 1 1 128 0zM306.5 325.9C329 341.4 356.5 352 384 352c26.9 0 55.4-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 405.7 417 416 384 416c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 341.2 165.1 352 192 352c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nconst faSwimmer = faPersonSwimming;\nconst faArrowDown = {\n prefix: 'fas',\n iconName: 'arrow-down',\n icon: [384, 512, [8595], \"f063\", \"M169.4 470.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 370.8 224 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 306.7L54.6 265.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z\"]\n};\nconst faDroplet = {\n prefix: 'fas',\n iconName: 'droplet',\n icon: [384, 512, [128167, \"tint\"], \"f043\", \"M192 512C86 512 0 426 0 320C0 228.8 130.2 57.7 166.6 11.7C172.6 4.2 181.5 0 191.1 0l1.8 0c9.6 0 18.5 4.2 24.5 11.7C253.8 57.7 384 228.8 384 320c0 106-86 192-192 192zM96 336c0-8.8-7.2-16-16-16s-16 7.2-16 16c0 61.9 50.1 112 112 112c8.8 0 16-7.2 16-16s-7.2-16-16-16c-44.2 0-80-35.8-80-80z\"]\n};\nconst faTint = faDroplet;\nconst faEraser = {\n prefix: 'fas',\n iconName: 'eraser',\n icon: [576, 512, [], \"f12d\", \"M290.7 57.4L57.4 290.7c-25 25-25 65.5 0 90.5l80 80c12 12 28.3 18.7 45.3 18.7L288 480l9.4 0L512 480c17.7 0 32-14.3 32-32s-14.3-32-32-32l-124.1 0L518.6 285.3c25-25 25-65.5 0-90.5L381.3 57.4c-25-25-65.5-25-90.5 0zM297.4 416l-9.4 0-105.4 0-80-80L227.3 211.3 364.7 348.7 297.4 416z\"]\n};\nconst faEarthAmericas = {\n prefix: 'fas',\n iconName: 'earth-americas',\n icon: [512, 512, [127758, \"earth\", \"earth-america\", \"globe-americas\"], \"f57d\", \"M57.7 193l9.4 16.4c8.3 14.5 21.9 25.2 38 29.8L163 255.7c17.2 4.9 29 20.6 29 38.5l0 39.9c0 11 6.2 21 16 25.9s16 14.9 16 25.9l0 39c0 15.6 14.9 26.9 29.9 22.6c16.1-4.6 28.6-17.5 32.7-33.8l2.8-11.2c4.2-16.9 15.2-31.4 30.3-40l8.1-4.6c15-8.5 24.2-24.5 24.2-41.7l0-8.3c0-12.7-5.1-24.9-14.1-33.9l-3.9-3.9c-9-9-21.2-14.1-33.9-14.1L257 256c-11.1 0-22.1-2.9-31.8-8.4l-34.5-19.7c-4.3-2.5-7.6-6.5-9.2-11.2c-3.2-9.6 1.1-20 10.2-24.5l5.9-3c6.6-3.3 14.3-3.9 21.3-1.5l23.2 7.7c8.2 2.7 17.2-.4 21.9-7.5c4.7-7 4.2-16.3-1.2-22.8l-13.6-16.3c-10-12-9.9-29.5 .3-41.3l15.7-18.3c8.8-10.3 10.2-25 3.5-36.7l-2.4-4.2c-3.5-.2-6.9-.3-10.4-.3C163.1 48 84.4 108.9 57.7 193zM464 256c0-36.8-9.6-71.4-26.4-101.5L412 164.8c-15.7 6.3-23.8 23.8-18.5 39.8l16.9 50.7c3.5 10.4 12 18.3 22.6 20.9l29.1 7.3c1.2-9 1.8-18.2 1.8-27.5zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"]\n};\nconst faEarth = faEarthAmericas;\nconst faEarthAmerica = faEarthAmericas;\nconst faGlobeAmericas = faEarthAmericas;\nconst faPersonBurst = {\n prefix: 'fas',\n iconName: 'person-burst',\n icon: [640, 512, [], \"e53b\", \"M480 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8 384l0-128 16 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-223.1 28.6 47.5c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-58.3-97c-17.4-28.9-48.6-46.6-82.3-46.6l-29.7 0c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L408 256.9 408 480c0 17.7 14.3 32 32 32s32-14.3 32-32zM190.9 18.1C188.4 12 182.6 8 176 8s-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6L176 286.1l58.6 53.9c4.8 4.4 11.9 5.5 17.8 2.6s9.5-9 9-15.5l-5.6-79.4 50.5-7.8 24.3-40.5-55.2-38L315 92.2c3.3-5.7 2.7-12.8-1.4-17.9s-10.9-7.2-17.2-5.3L220.3 92.1l-29.4-74z\"]\n};\nconst faDove = {\n prefix: 'fas',\n iconName: 'dove',\n icon: [512, 512, [128330], \"f4ba\", \"M160.8 96.5c14 17 31 30.9 49.5 42.2c25.9 15.8 53.7 25.9 77.7 31.6l0-31.5C265.8 108.5 250 71.5 248.6 28c-.4-11.3-7.5-21.5-18.4-24.4c-7.6-2-15.8-.2-21 5.8c-13.3 15.4-32.7 44.6-48.4 87.2zM320 144l0 30.6s0 0 0 0l0 1.3s0 0 0 0l0 32.1c-60.8-5.1-185-43.8-219.3-157.2C97.4 40 87.9 32 76.6 32c-7.9 0-15.3 3.9-18.8 11C46.8 65.9 32 112.1 32 176c0 116.9 80.1 180.5 118.4 202.8L11.8 416.6C6.7 418 2.6 421.8 .9 426.8s-.8 10.6 2.3 14.8C21.7 466.2 77.3 512 160 512c3.6 0 7.2-1.2 10-3.5L245.6 448l74.4 0c88.4 0 160-71.6 160-160l0-160 29.9-44.9c1.3-2 2.1-4.4 2.1-6.8c0-6.8-5.5-12.3-12.3-12.3L400 64c-44.2 0-80 35.8-80 80zm80-16a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nconst faBatteryEmpty = {\n prefix: 'fas',\n iconName: 'battery-empty',\n icon: [576, 512, [\"battery-0\"], \"f244\", \"M80 160c-8.8 0-16 7.2-16 16l0 160c0 8.8 7.2 16 16 16l384 0c8.8 0 16-7.2 16-16l0-160c0-8.8-7.2-16-16-16L80 160zM0 176c0-44.2 35.8-80 80-80l384 0c44.2 0 80 35.8 80 80l0 16c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l0 16c0 44.2-35.8 80-80 80L80 416c-44.2 0-80-35.8-80-80L0 176z\"]\n};\nconst faBattery0 = faBatteryEmpty;\nconst faSocks = {\n prefix: 'fas',\n iconName: 'socks',\n icon: [512, 512, [129510], \"f696\", \"M175.2 476.6c-9.7-18-15.2-38.7-15.2-60.6c0-40.3 19-78.2 51.2-102.4l64-48c8.1-6 12.8-15.5 12.8-25.6l0-144L128 96l0 144c0 20.1-9.5 39.1-25.6 51.2l-64 48C14.2 357.3 0 385.8 0 416c0 53 43 96 96 96c20.8 0 41-6.7 57.6-19.2l21.6-16.2zM128 64l160 0 0-16c0-14.5 3.9-28.2 10.7-39.9C291 3 281.9 0 272 0L176 0c-26.5 0-48 21.5-48 48l0 16zM320 96l0 144c0 20.1-9.5 39.1-25.6 51.2l-64 48C206.2 357.3 192 385.8 192 416c0 53 43 96 96 96c20.8 0 41-6.7 57.6-19.2l115.2-86.4C493 382.2 512 344.3 512 304l0-208L320 96zM512 64l0-16c0-26.5-21.5-48-48-48L368 0c-26.5 0-48 21.5-48 48l0 16 192 0z\"]\n};\nconst faInbox = {\n prefix: 'fas',\n iconName: 'inbox',\n icon: [512, 512, [], \"f01c\", \"M121 32C91.6 32 66 52 58.9 80.5L1.9 308.4C.6 313.5 0 318.7 0 323.9L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-92.1c0-5.2-.6-10.4-1.9-15.5l-57-227.9C446 52 420.4 32 391 32L121 32zm0 64l270 0 48 192-51.2 0c-12.1 0-23.2 6.8-28.6 17.7l-14.3 28.6c-5.4 10.8-16.5 17.7-28.6 17.7l-120.4 0c-12.1 0-23.2-6.8-28.6-17.7l-14.3-28.6c-5.4-10.8-16.5-17.7-28.6-17.7L73 288 121 96z\"]\n};\nconst faSection = {\n prefix: 'fas',\n iconName: 'section',\n icon: [256, 512, [], \"e447\", \"M64.9 96C67.1 84.4 73.7 76.2 86 70.6c13.8-6.2 34.8-8.9 61.2-4.5c8.8 1.4 36.1 7.1 44.1 9.3c17 4.8 34.7-5.1 39.5-22.2s-5.1-34.7-22.2-39.5c-11.1-3.1-41-9.2-50.9-10.8C123-2.7 88.3-.6 59.7 12.3C29.9 25.8 7.5 50.9 1.6 86.5c-.1 .5-.2 1.1-.2 1.6c-2.2 19.7 .3 37.9 8.1 54.1c7.7 16.1 19.4 28 32 36.9c.6 .5 1.3 .9 2 1.4C22.3 194.2 6.5 215.1 1.7 243c-.1 .6-.2 1.1-.2 1.7c-2.3 19.3 .4 37.1 8.4 53c7.9 15.6 19.8 27 32.3 35.5c22.4 15.2 51.9 24 75.4 31c0 0 0 0 0 0l3.7 1.1c27.2 8.2 46.9 14.6 59.4 23.8c5.5 4 8.2 7.6 9.5 10.9c1.3 3.2 2.6 8.6 .9 18.1c-1.7 10.1-7.7 18-20.7 23.5c-14 6-35.4 8.5-62 4.4c-12.8-2.1-35.1-9.7-54.1-16.2c0 0 0 0 0 0c-4.3-1.5-8.5-2.9-12.3-4.2C25.3 420 7.2 429.1 1.6 445.8s3.5 34.9 20.3 40.5c2.6 .8 5.7 1.9 9.2 3.1c18.6 6.3 48.5 16.6 67.3 19.6c0 0 0 0 0 0l.2 0c34.5 5.4 68.8 3.4 97.2-8.7c29.4-12.6 52.5-36.5 58.5-71.5c3.3-19.3 1.9-37.4-5-53.9c-6.3-15-16.4-26.4-27.6-35.2c16.5-13.9 28.5-33.2 32.6-58.2c3.2-19.8 1.9-38.3-4.8-55.1c-6.7-16.8-17.8-29.4-30.2-39c-22.8-17.6-53.6-27.4-77.7-35l-1.4-.5c-27.4-8.7-47.8-15.3-61.5-25c-6.1-4.4-9.5-8.5-11.4-12.4c-1.8-3.7-3.2-9.3-2.3-18.5zm76.7 208.5l-.6-.2-1.4-.4c-27.4-8.2-47.9-14.5-61.7-23.8c-6.2-4.2-9.3-7.9-11-11.3c-1.5-3-2.9-7.7-2.1-15.7c1.9-9.7 7.9-17.3 20.5-22.7c14-6 35.4-8.5 62.1-4.3l16.4 2.6c6.3 2.9 11.7 6 16.2 9.5c5.5 4.2 8.4 8.2 10 12.2c1.6 4 2.8 10.4 1.1 20.9c-2.4 14.7-12.8 26.4-37.1 31l-12.4 2.3z\"]\n};\nconst faGaugeHigh = {\n prefix: 'fas',\n iconName: 'gauge-high',\n icon: [512, 512, [62461, \"tachometer-alt\", \"tachometer-alt-fast\"], \"f625\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM288 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM256 416c35.3 0 64-28.7 64-64c0-17.4-6.9-33.1-18.1-44.6L366 161.7c5.3-12.1-.2-26.3-12.3-31.6s-26.3 .2-31.6 12.3L257.9 288c-.6 0-1.3 0-1.9 0c-35.3 0-64 28.7-64 64s28.7 64 64 64zM176 144a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM96 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm352-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nconst faTachometerAlt = faGaugeHigh;\nconst faTachometerAltFast = faGaugeHigh;\nconst faEnvelopeOpenText = {\n prefix: 'fas',\n iconName: 'envelope-open-text',\n icon: [512, 512, [], \"f658\", \"M215.4 96L144 96l-36.2 0L96 96l0 8.8L96 144l0 40.4 0 89L.2 202.5c1.6-18.1 10.9-34.9 25.7-45.8L48 140.3 48 96c0-26.5 21.5-48 48-48l76.6 0 49.9-36.9C232.2 3.9 243.9 0 256 0s23.8 3.9 33.5 11L339.4 48 416 48c26.5 0 48 21.5 48 48l0 44.3 22.1 16.4c14.8 10.9 24.1 27.7 25.7 45.8L416 273.4l0-89 0-40.4 0-39.2 0-8.8-11.8 0L368 96l-71.4 0-81.3 0zM0 448L0 242.1 217.6 403.3c11.1 8.2 24.6 12.7 38.4 12.7s27.3-4.4 38.4-12.7L512 242.1 512 448s0 0 0 0c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64c0 0 0 0 0 0zM176 160l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faHospital = {\n prefix: 'fas',\n iconName: 'hospital',\n icon: [640, 512, [127973, 62589, \"hospital-alt\", \"hospital-wide\"], \"f0f8\", \"M192 48c0-26.5 21.5-48 48-48L400 0c26.5 0 48 21.5 48 48l0 464-80 0 0-80c0-26.5-21.5-48-48-48s-48 21.5-48 48l0 80-80 0 0-464zM48 96l112 0 0 416L48 512c-26.5 0-48-21.5-48-48L0 320l80 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L0 288l0-64 80 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L0 192l0-48c0-26.5 21.5-48 48-48zm544 0c26.5 0 48 21.5 48 48l0 48-80 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l80 0 0 64-80 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l80 0 0 144c0 26.5-21.5 48-48 48l-112 0 0-416 112 0zM312 64c-8.8 0-16 7.2-16 16l0 24-24 0c-8.8 0-16 7.2-16 16l0 16c0 8.8 7.2 16 16 16l24 0 0 24c0 8.8 7.2 16 16 16l16 0c8.8 0 16-7.2 16-16l0-24 24 0c8.8 0 16-7.2 16-16l0-16c0-8.8-7.2-16-16-16l-24 0 0-24c0-8.8-7.2-16-16-16l-16 0z\"]\n};\nconst faHospitalAlt = faHospital;\nconst faHospitalWide = faHospital;\nconst faWineBottle = {\n prefix: 'fas',\n iconName: 'wine-bottle',\n icon: [512, 512, [], \"f72f\", \"M393.4 9.4c12.5-12.5 32.8-12.5 45.3 0l64 64c12.5 12.5 12.5 32.8 0 45.3c-11.8 11.8-30.7 12.5-43.2 1.9l-9.5 9.5-48.8 48.8c-9.2 9.2-11.5 22.9-8.6 35.6c9.4 40.9-1.9 85.6-33.8 117.5L197.3 493.3c-25 25-65.5 25-90.5 0l-88-88c-25-25-25-65.5 0-90.5L180.2 153.3c31.9-31.9 76.6-43.1 117.5-33.8c12.6 2.9 26.4 .5 35.5-8.6l48.8-48.8 9.5-9.5c-10.6-12.6-10-31.4 1.9-43.2zM99.3 347.3l65.4 65.4c6.2 6.2 16.4 6.2 22.6 0l97.4-97.4c6.2-6.2 6.2-16.4 0-22.6l-65.4-65.4c-6.2-6.2-16.4-6.2-22.6 0L99.3 324.7c-6.2 6.2-6.2 16.4 0 22.6z\"]\n};\nconst faChessRook = {\n prefix: 'fas',\n iconName: 'chess-rook',\n icon: [448, 512, [9820], \"f447\", \"M32 192L32 48c0-8.8 7.2-16 16-16l64 0c8.8 0 16 7.2 16 16l0 40c0 4.4 3.6 8 8 8l32 0c4.4 0 8-3.6 8-8l0-40c0-8.8 7.2-16 16-16l64 0c8.8 0 16 7.2 16 16l0 40c0 4.4 3.6 8 8 8l32 0c4.4 0 8-3.6 8-8l0-40c0-8.8 7.2-16 16-16l64 0c8.8 0 16 7.2 16 16l0 144c0 10.1-4.7 19.6-12.8 25.6L352 256l16 144L80 400 96 256 44.8 217.6C36.7 211.6 32 202.1 32 192zm176 96l32 0c8.8 0 16-7.2 16-16l0-48c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 48c0 8.8 7.2 16 16 16zM22.6 473.4L64 432l320 0 41.4 41.4c4.2 4.2 6.6 10 6.6 16c0 12.5-10.1 22.6-22.6 22.6L38.6 512C26.1 512 16 501.9 16 489.4c0-6 2.4-11.8 6.6-16z\"]\n};\nconst faBarsStaggered = {\n prefix: 'fas',\n iconName: 'bars-staggered',\n icon: [512, 512, [\"reorder\", \"stream\"], \"f550\", \"M0 96C0 78.3 14.3 64 32 64l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 128C14.3 128 0 113.7 0 96zM64 256c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L96 288c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32L32 448c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0c17.7 0 32 14.3 32 32z\"]\n};\nconst faReorder = faBarsStaggered;\nconst faStream = faBarsStaggered;\nconst faDharmachakra = {\n prefix: 'fas',\n iconName: 'dharmachakra',\n icon: [512, 512, [9784], \"f655\", \"M337.8 205.7l48.6-42.5c13.8 19.3 23.4 41.9 27.4 66.2l-64.4 4.3c-2.4-10.1-6.4-19.5-11.6-28zm140.1 19.5c-5.3-38.8-20.6-74.5-43.2-104.3l.8-.7C449 108.4 449.7 87.6 437 75s-33.4-12-45.2 1.5l-.7 .8c-29.8-22.6-65.5-37.9-104.3-43.2l.1-1.1c1.2-17.9-13-33-30.9-33s-32.1 15.2-30.9 33l.1 1.1c-38.8 5.3-74.5 20.6-104.3 43.2l-.7-.8C108.4 63 87.6 62.3 75 75s-12 33.4 1.5 45.2l.8 .7c-22.6 29.8-37.9 65.5-43.2 104.3l-1.1-.1c-17.9-1.2-33 13-33 30.9s15.2 32.1 33 30.9l1.1-.1c5.3 38.8 20.6 74.5 43.2 104.3l-.8 .7C63 403.6 62.3 424.4 75 437s33.4 12 45.2-1.5l.7-.8c29.8 22.6 65.5 37.9 104.3 43.2l-.1 1.1c-1.2 17.9 13 33 30.9 33s32.1-15.2 30.9-33l-.1-1.1c38.8-5.3 74.5-20.6 104.3-43.2l.7 .8c11.8 13.5 32.5 14.2 45.2 1.5s12-33.4-1.5-45.2l-.8-.7c22.6-29.8 37.9-65.5 43.2-104.3l1.1 .1c17.9 1.2 33-13 33-30.9s-15.2-32.1-33-30.9l-1.1 .1zM163.2 125.6c19.3-13.8 41.9-23.4 66.2-27.5l4.3 64.4c-10 2.4-19.5 6.4-28 11.6l-42.5-48.6zm-65 103.8c4.1-24.4 13.7-46.9 27.5-66.2l48.6 42.5c-5.3 8.5-9.2 18-11.6 28l-64.4-4.3zm27.5 119.4c-13.8-19.3-23.4-41.9-27.5-66.2l64.4-4.3c2.4 10 6.4 19.5 11.6 28l-48.6 42.5zm103.8 65c-24.4-4.1-46.9-13.7-66.2-27.4l42.5-48.6c8.5 5.3 18 9.2 28 11.6l-4.3 64.4zm119.4-27.4c-19.3 13.8-41.9 23.4-66.2 27.4l-4.3-64.4c10-2.4 19.5-6.4 28-11.6l42.5 48.6zm65-103.8c-4.1 24.4-13.7 46.9-27.4 66.2l-48.6-42.5c5.3-8.5 9.2-18 11.6-28l64.4 4.3zm-65-156.9l-42.5 48.6c-8.5-5.3-18-9.2-28-11.6l4.3-64.4c24.4 4.1 46.9 13.7 66.2 27.5zM256 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faHotdog = {\n prefix: 'fas',\n iconName: 'hotdog',\n icon: [512, 512, [127789], \"f80f\", \"M488.6 23.4c31.2 31.2 31.2 81.9 0 113.1l-352 352c-31.2 31.2-81.9 31.2-113.1 0s-31.2-81.9 0-113.1l352-352c31.2-31.2 81.9-31.2 113.1 0zM443.3 92.7c-6.2-6.2-16.4-6.2-22.6 0c-12.5 12.5-23.8 15.1-37.5 17.6l-2.5 .4c-13.8 2.5-31.6 5.6-48 22c-16.7 16.7-20.9 36-24.1 50.9c0 0 0 0 0 0s0 0 0 0l-.2 1c-3.4 15.6-6 26.4-15.7 36.1s-20.5 12.3-36.1 15.7l-1 .2c-14.9 3.2-34.2 7.4-50.9 24.1s-20.9 36-24.1 50.9l-.2 1c-3.4 15.6-6 26.4-15.7 36.1c-9.2 9.2-18 10.8-32.7 13.4c0 0 0 0 0 0l-.9 .2c-15.6 2.8-34.9 6.9-54.4 26.4c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0c12.5-12.5 23.8-15.1 37.5-17.6l2.5-.4c13.8-2.5 31.6-5.6 48-22c16.7-16.7 20.9-36 24.1-50.9l.2-1c3.4-15.6 6-26.4 15.7-36.1s20.5-12.3 36.1-15.7l1-.2c14.9-3.2 34.2-7.4 50.9-24.1s20.9-36 24.1-50.9l.2-1c3.4-15.6 6-26.4 15.7-36.1c9.2-9.2 18-10.8 32.7-13.4l.9-.2c15.6-2.8 34.9-6.9 54.4-26.4c6.2-6.2 6.2-16.4 0-22.6zM191.2 479.2l288-288L495 207c10.9 10.9 17 25.6 17 41s-6.1 30.1-17 41L289 495c-10.9 10.9-25.6 17-41 17s-30.1-6.1-41-17l-15.8-15.8zM17 305C6.1 294.1 0 279.4 0 264s6.1-30.1 17-41L223 17C233.9 6.1 248.6 0 264 0s30.1 6.1 41 17l15.8 15.8-288 288L17 305z\"]\n};\nconst faPersonWalkingWithCane = {\n prefix: 'fas',\n iconName: 'person-walking-with-cane',\n icon: [512, 512, [\"blind\"], \"f29d\", \"M176 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8.4 32c-36.4 0-69.6 20.5-85.9 53.1L35.4 273.7c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3L128 231.6l0 43.2c0 17 6.7 33.3 18.7 45.3L224 397.3l0 82.7c0 17.7 14.3 32 32 32s32-14.3 32-32l0-89.4c0-12.7-5.1-24.9-14.1-33.9L224 306.7l0-93.4 70.4 93.9c10.6 14.1 30.7 17 44.8 6.4s17-30.7 6.4-44.8L268.8 166.4C250.7 142.2 222.2 128 192 128l-24.4 0zM128.3 346.8L97 472.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l22-88.2-52.8-52.8zM450.8 505.1c5 7.3 15 9.1 22.3 4s9.1-15 4-22.3L358.9 316.1c-2.8 3.8-6.1 7.3-10.1 10.3c-5 3.8-10.5 6.4-16.2 7.9L450.8 505.1z\"]\n};\nconst faBlind = faPersonWalkingWithCane;\nconst faDrum = {\n prefix: 'fas',\n iconName: 'drum',\n icon: [512, 512, [129345], \"f569\", \"M501.2 76.1c11.1-7.3 14.2-22.1 6.9-33.2s-22.1-14.2-33.2-6.9L370.2 104.5C335.8 98.7 297 96 256 96C114.6 96 0 128 0 208L0 368c0 31.3 27.4 58.8 72 78.7L72 344c0-13.3 10.7-24 24-24s24 10.7 24 24l0 119.4c33 8.9 71.1 14.5 112 16.1L232 376c0-13.3 10.7-24 24-24s24 10.7 24 24l0 103.5c40.9-1.6 79-7.2 112-16.1L392 344c0-13.3 10.7-24 24-24s24 10.7 24 24l0 102.7c44.6-19.9 72-47.4 72-78.7l0-160c0-41.1-30.2-69.5-78.8-87.4l67.9-44.5zM307.4 145.6l-64.6 42.3c-11.1 7.3-14.2 22.1-6.9 33.2s22.1 14.2 33.2 6.9l111.1-72.8c14.7 3.2 27.9 7 39.4 11.5C458.4 181.8 464 197.4 464 208c0 .8-2.7 17.2-46 35.9C379.1 260.7 322 272 256 272s-123.1-11.3-162-28.1C50.7 225.2 48 208.8 48 208c0-10.6 5.6-26.2 44.4-41.3C130.6 151.9 187.8 144 256 144c18 0 35.1 .5 51.4 1.6z\"]\n};\nconst faIceCream = {\n prefix: 'fas',\n iconName: 'ice-cream',\n icon: [448, 512, [127848], \"f810\", \"M367.1 160c.6-5.3 .9-10.6 .9-16C368 64.5 303.5 0 224 0S80 64.5 80 144c0 5.4 .3 10.7 .9 16l-.9 0c-26.5 0-48 21.5-48 48s21.5 48 48 48l53.5 0 181 0 53.5 0c26.5 0 48-21.5 48-48s-21.5-48-48-48l-.9 0zM96 288L200.8 497.7c4.4 8.8 13.3 14.3 23.2 14.3s18.8-5.5 23.2-14.3L352 288 96 288z\"]\n};\nconst faHeartCircleBolt = {\n prefix: 'fas',\n iconName: 'heart-circle-bolt',\n icon: [576, 512, [], \"e4fc\", \"M47.6 300.4L228.3 469.1c7.5 7 17.4 10.9 27.7 10.9s20.2-3.9 27.7-10.9l2.6-2.4C267.2 438.6 256 404.6 256 368c0-97.2 78.8-176 176-176c28.3 0 55 6.7 78.7 18.5c.9-6.5 1.3-13 1.3-19.6l0-5.8c0-69.9-50.5-129.5-119.4-141C347 36.5 300.6 51.4 268 84L256 96 244 84c-32.6-32.6-79-47.5-124.6-39.9C50.5 55.6 0 115.2 0 185.1l0 5.8c0 41.5 17.2 81.2 47.6 109.5zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm47.9-225c4.3 3.7 5.4 9.9 2.6 14.9L452.4 356l35.6 0c5.2 0 9.8 3.3 11.4 8.2s-.1 10.3-4.2 13.4l-96 72c-4.5 3.4-10.8 3.2-15.1-.6s-5.4-9.9-2.6-14.9L411.6 380 376 380c-5.2 0-9.8-3.3-11.4-8.2s.1-10.3 4.2-13.4l96-72c4.5-3.4 10.8-3.2 15.1 .6z\"]\n};\nconst faFax = {\n prefix: 'fas',\n iconName: 'fax',\n icon: [512, 512, [128224, 128439], \"f1ac\", \"M128 64l0 96 64 0 0-96 194.7 0L416 93.3l0 66.7 64 0 0-66.7c0-17-6.7-33.3-18.7-45.3L432 18.7C420 6.7 403.7 0 386.7 0L192 0c-35.3 0-64 28.7-64 64zM0 160L0 480c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-320c0-17.7-14.3-32-32-32l-32 0c-17.7 0-32 14.3-32 32zm480 32l-352 0 0 288c0 17.7 14.3 32 32 32l320 0c17.7 0 32-14.3 32-32l0-256c0-17.7-14.3-32-32-32zM256 256a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm96 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32 96a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM224 416a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nconst faParagraph = {\n prefix: 'fas',\n iconName: 'paragraph',\n icon: [448, 512, [182], \"f1dd\", \"M192 32l64 0 160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0 0 352c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-352-32 0 0 352c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96-32 0c-88.4 0-160-71.6-160-160s71.6-160 160-160z\"]\n};\nconst faCheckToSlot = {\n prefix: 'fas',\n iconName: 'check-to-slot',\n icon: [576, 512, [\"vote-yea\"], \"f772\", \"M96 80c0-26.5 21.5-48 48-48l288 0c26.5 0 48 21.5 48 48l0 304L96 384 96 80zm313 47c-9.4-9.4-24.6-9.4-33.9 0l-111 111-47-47c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l64 64c9.4 9.4 24.6 9.4 33.9 0L409 161c9.4-9.4 9.4-24.6 0-33.9zM0 336c0-26.5 21.5-48 48-48l16 0 0 128 448 0 0-128 16 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48L48 480c-26.5 0-48-21.5-48-48l0-96z\"]\n};\nconst faVoteYea = faCheckToSlot;\nconst faStarHalf = {\n prefix: 'fas',\n iconName: 'star-half',\n icon: [576, 512, [61731], \"f089\", \"M288 0c-12.2 .1-23.3 7-28.6 18L195 150.3 51.4 171.5c-12 1.8-22 10.2-25.7 21.7s-.7 24.2 7.9 32.7L137.8 329 113.2 474.7c-2 12 3 24.2 12.9 31.3s23 8 33.8 2.3L288 439.8 288 0zM429.9 512c1.1 .1 2.1 .1 3.2 0l-3.2 0z\"]\n};\nconst faBoxesStacked = {\n prefix: 'fas',\n iconName: 'boxes-stacked',\n icon: [576, 512, [62625, \"boxes\", \"boxes-alt\"], \"f468\", \"M248 0L208 0c-26.5 0-48 21.5-48 48l0 112c0 35.3 28.7 64 64 64l128 0c35.3 0 64-28.7 64-64l0-112c0-26.5-21.5-48-48-48L328 0l0 80c0 8.8-7.2 16-16 16l-48 0c-8.8 0-16-7.2-16-16l0-80zM64 256c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l160 0c35.3 0 64-28.7 64-64l0-128c0-35.3-28.7-64-64-64l-40 0 0 80c0 8.8-7.2 16-16 16l-48 0c-8.8 0-16-7.2-16-16l0-80-40 0zM352 512l160 0c35.3 0 64-28.7 64-64l0-128c0-35.3-28.7-64-64-64l-40 0 0 80c0 8.8-7.2 16-16 16l-48 0c-8.8 0-16-7.2-16-16l0-80-40 0c-15 0-28.8 5.1-39.7 13.8c4.9 10.4 7.7 22 7.7 34.2l0 160c0 12.2-2.8 23.8-7.7 34.2C323.2 506.9 337 512 352 512z\"]\n};\nconst faBoxes = faBoxesStacked;\nconst faBoxesAlt = faBoxesStacked;\nconst faLink = {\n prefix: 'fas',\n iconName: 'link',\n icon: [640, 512, [128279, \"chain\"], \"f0c1\", \"M579.8 267.7c56.5-56.5 56.5-148 0-204.5c-50-50-128.8-56.5-186.3-15.4l-1.6 1.1c-14.4 10.3-17.7 30.3-7.4 44.6s30.3 17.7 44.6 7.4l1.6-1.1c32.1-22.9 76-19.3 103.8 8.6c31.5 31.5 31.5 82.5 0 114L422.3 334.8c-31.5 31.5-82.5 31.5-114 0c-27.9-27.9-31.5-71.8-8.6-103.8l1.1-1.6c10.3-14.4 6.9-34.4-7.4-44.6s-34.4-6.9-44.6 7.4l-1.1 1.6C206.5 251.2 213 330 263 380c56.5 56.5 148 56.5 204.5 0L579.8 267.7zM60.2 244.3c-56.5 56.5-56.5 148 0 204.5c50 50 128.8 56.5 186.3 15.4l1.6-1.1c14.4-10.3 17.7-30.3 7.4-44.6s-30.3-17.7-44.6-7.4l-1.6 1.1c-32.1 22.9-76 19.3-103.8-8.6C74 372 74 321 105.5 289.5L217.7 177.2c31.5-31.5 82.5-31.5 114 0c27.9 27.9 31.5 71.8 8.6 103.9l-1.1 1.6c-10.3 14.4-6.9 34.4 7.4 44.6s34.4 6.9 44.6-7.4l1.1-1.6C433.5 260.8 427 182 377 132c-56.5-56.5-148-56.5-204.5 0L60.2 244.3z\"]\n};\nconst faChain = faLink;\nconst faEarListen = {\n prefix: 'fas',\n iconName: 'ear-listen',\n icon: [512, 512, [\"assistive-listening-systems\"], \"f2a2\", \"M398.3 3.4c-15.8-7.9-35-1.5-42.9 14.3c-7.9 15.8-1.5 34.9 14.2 42.9l.4 .2c.4 .2 1.1 .6 2.1 1.2c2 1.2 5 3 8.7 5.6c7.5 5.2 17.6 13.2 27.7 24.2C428.5 113.4 448 146 448 192c0 17.7 14.3 32 32 32s32-14.3 32-32c0-66-28.5-113.4-56.5-143.7C441.6 33.2 427.7 22.2 417.3 15c-5.3-3.7-9.7-6.4-13-8.3c-1.6-1-3-1.7-4-2.2c-.5-.3-.9-.5-1.2-.7l-.4-.2-.2-.1c0 0 0 0-.1 0c0 0 0 0 0 0L384 32 398.3 3.4zM128.7 227.5c6.2-56 53.7-99.5 111.3-99.5c61.9 0 112 50.1 112 112c0 29.3-11.2 55.9-29.6 75.9c-17 18.4-34.4 45.1-34.4 78l0 6.1c0 26.5-21.5 48-48 48c-17.7 0-32 14.3-32 32s14.3 32 32 32c61.9 0 112-50.1 112-112l0-6.1c0-9.8 5.4-21.7 17.4-34.7C398.3 327.9 416 286 416 240c0-97.2-78.8-176-176-176C149.4 64 74.8 132.5 65.1 220.5c-1.9 17.6 10.7 33.4 28.3 35.3s33.4-10.7 35.3-28.3zM32 512a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM192 352a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-64-64c-12.5-12.5-32.8-12.5-45.3 0zM208 240c0-17.7 14.3-32 32-32s32 14.3 32 32c0 13.3 10.7 24 24 24s24-10.7 24-24c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 13.3 10.7 24 24 24s24-10.7 24-24z\"]\n};\nconst faAssistiveListeningSystems = faEarListen;\nconst faTreeCity = {\n prefix: 'fas',\n iconName: 'tree-city',\n icon: [640, 512, [], \"e587\", \"M288 48c0-26.5 21.5-48 48-48l96 0c26.5 0 48 21.5 48 48l0 144 40 0 0-72c0-13.3 10.7-24 24-24s24 10.7 24 24l0 72 24 0c26.5 0 48 21.5 48 48l0 224c0 26.5-21.5 48-48 48l-160 0-96 0c-26.5 0-48-21.5-48-48l0-416zm64 32l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm16 80c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM352 272l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm176-16c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM512 368l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM224 160c0 6-1 11-2 16c20 14 34 38 34 64c0 45-36 80-80 80l-16 0 0 160c0 18-15 32-32 32c-18 0-32-14-32-32l0-160-16 0c-45 0-80-35-80-80c0-26 13-50 33-64c-1-5-1-10-1-16c0-53 42-96 96-96c53 0 96 43 96 96z\"]\n};\nconst faPlay = {\n prefix: 'fas',\n iconName: 'play',\n icon: [384, 512, [9654], \"f04b\", \"M73 39c-14.8-9.1-33.4-9.4-48.5-.9S0 62.6 0 80L0 432c0 17.4 9.4 33.4 24.5 41.9s33.7 8.1 48.5-.9L361 297c14.3-8.7 23-24.2 23-41s-8.7-32.2-23-41L73 39z\"]\n};\nconst faFont = {\n prefix: 'fas',\n iconName: 'font',\n icon: [448, 512, [], \"f031\", \"M254 52.8C249.3 40.3 237.3 32 224 32s-25.3 8.3-30 20.8L57.8 416 32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-1.8 0 18-48 159.6 0 18 48-1.8 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-25.8 0L254 52.8zM279.8 304l-111.6 0L224 155.1 279.8 304z\"]\n};\nconst faTableCellsRowLock = {\n prefix: 'fas',\n iconName: 'table-cells-row-lock',\n icon: [640, 512, [], \"e67a\", \"M0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 65.1c-37.8 5.4-69.4 29.6-85.2 62.9L360 224l0 64 56 0 0 8.6c-19.1 11.1-32 31.7-32 55.4l-24 0 0 64 24 0 0 64L64 480c-35.3 0-64-28.7-64-64L0 96zM64 224l0 64 88 0 0-64-88 0zm232 0l-88 0 0 64 88 0 0-64zM152 352l-88 0 0 64 88 0 0-64zm56 0l0 64 88 0 0-64-88 0zM528 240c-17.7 0-32 14.3-32 32l0 48 64 0 0-48c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80l0 48c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32l0-48z\"]\n};\nconst faRupiahSign = {\n prefix: 'fas',\n iconName: 'rupiah-sign',\n icon: [512, 512, [], \"e23d\", \"M0 64C0 46.3 14.3 32 32 32l80 0c79.5 0 144 64.5 144 144c0 58.8-35.2 109.3-85.7 131.7l51.4 128.4c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8L106.3 320 64 320l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32L0 288 0 64zM64 256l48 0c44.2 0 80-35.8 80-80s-35.8-80-80-80L64 96l0 160zm256-96l80 0c61.9 0 112 50.1 112 112s-50.1 112-112 112l-48 0 0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128 0-160c0-17.7 14.3-32 32-32zm80 160c26.5 0 48-21.5 48-48s-21.5-48-48-48l-48 0 0 96 48 0z\"]\n};\nconst faMagnifyingGlass = {\n prefix: 'fas',\n iconName: 'magnifying-glass',\n icon: [512, 512, [128269, \"search\"], \"f002\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM208 352a144 144 0 1 0 0-288 144 144 0 1 0 0 288z\"]\n};\nconst faSearch = faMagnifyingGlass;\nconst faTableTennisPaddleBall = {\n prefix: 'fas',\n iconName: 'table-tennis-paddle-ball',\n icon: [512, 512, [127955, \"ping-pong-paddle-ball\", \"table-tennis\"], \"f45d\", \"M416 288c-50.1 0-93.6 28.8-114.6 70.8L68.9 126.3l.6-.6 60.1-60.1c87.5-87.5 229.3-87.5 316.8 0c67.1 67.1 82.7 166.3 46.8 248.3C471.8 297.6 445 288 416 288zM49.3 151.9L290.1 392.7c-1.4 7.5-2.1 15.3-2.1 23.3c0 23.2 6.2 44.9 16.9 63.7c-3 .2-6.1 .3-9.2 .3l-2.7 0c-33.9 0-66.5-13.5-90.5-37.5l-9.8-9.8c-13.1-13.1-34.6-12.4-46.8 1.7L88.2 501c-5.8 6.7-14.2 10.7-23 11s-17.5-3.1-23.8-9.4l-32-32C3.1 464.3-.3 455.7 0 446.9s4.3-17.2 11-23l66.6-57.7c14-12.2 14.8-33.7 1.7-46.8l-9.8-9.8C45.5 285.5 32 252.9 32 219l0-2.7c0-22.8 6.1-44.9 17.3-64.3zM416 320a96 96 0 1 1 0 192 96 96 0 1 1 0-192z\"]\n};\nconst faPingPongPaddleBall = faTableTennisPaddleBall;\nconst faTableTennis = faTableTennisPaddleBall;\nconst faPersonDotsFromLine = {\n prefix: 'fas',\n iconName: 'person-dots-from-line',\n icon: [576, 512, [\"diagnoses\"], \"f470\", \"M288 176A88 88 0 1 0 288 0a88 88 0 1 0 0 176zM78.7 372.9c15-12.5 50-34.4 97.3-50.1L176 432l224 0 0-109.3c47.3 15.8 82.3 37.7 97.3 50.1c20.4 17 50.6 14.2 67.6-6.1s14.2-50.6-6.1-67.6c-12-10-30.1-22.5-53.2-35C497.2 278.4 481.7 288 464 288c-26.5 0-48-21.5-48-48c0-4.3 .6-8.4 1.6-12.4C379.1 215.9 335.3 208 288 208c-60.2 0-114.9 12.9-160 29.9c0 .7 0 1.4 0 2.1c0 26.5-21.5 48-48 48c-11.8 0-22.7-4.3-31-11.4c-13.1 8.1-23.7 15.9-31.7 22.5c-20.4 17-23.1 47.2-6.1 67.6s47.2 23.1 67.6 6.1zM24 464c-13.3 0-24 10.7-24 24s10.7 24 24 24l528 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L24 464zM224 280a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm104 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM96 240a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm368 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nconst faDiagnoses = faPersonDotsFromLine;\nconst faTrashCanArrowUp = {\n prefix: 'fas',\n iconName: 'trash-can-arrow-up',\n icon: [448, 512, [\"trash-restore-alt\"], \"f82a\", \"M163.8 0L284.2 0c12.1 0 23.2 6.8 28.6 17.7L320 32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64S14.3 32 32 32l96 0 7.2-14.3C140.6 6.8 151.7 0 163.8 0zM32 128l384 0 0 320c0 35.3-28.7 64-64 64L96 512c-35.3 0-64-28.7-64-64l0-320zm192 64c-6.4 0-12.5 2.5-17 7l-80 80c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l39-39L200 408c0 13.3 10.7 24 24 24s24-10.7 24-24l0-134.1 39 39c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-80-80c-4.5-4.5-10.6-7-17-7z\"]\n};\nconst faTrashRestoreAlt = faTrashCanArrowUp;\nconst faNairaSign = {\n prefix: 'fas',\n iconName: 'naira-sign',\n icon: [448, 512, [], \"e1f6\", \"M122.6 46.3c-7.8-11.7-22.4-17-35.9-12.9S64 49.9 64 64l0 192-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128 100.2 0 97.2 145.8c7.8 11.7 22.4 17 35.9 12.9s22.7-16.5 22.7-30.6l0-128 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-192c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 192-57.5 0L122.6 46.3zM305.1 320l14.9 0 0 22.3L305.1 320zM185.5 256L128 256l0-86.3L185.5 256z\"]\n};\nconst faCartArrowDown = {\n prefix: 'fas',\n iconName: 'cart-arrow-down',\n icon: [576, 512, [], \"f218\", \"M24 0C10.7 0 0 10.7 0 24S10.7 48 24 48l45.5 0c3.8 0 7.1 2.7 7.9 6.5l51.6 271c6.5 34 36.2 58.5 70.7 58.5L488 384c13.3 0 24-10.7 24-24s-10.7-24-24-24l-288.3 0c-11.5 0-21.4-8.2-23.6-19.5L170.7 288l288.5 0c32.6 0 61.1-21.8 69.5-53.3l41-152.3C576.6 57 557.4 32 531.1 32L360 32l0 102.1 23-23c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-64 64c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l23 23L312 32 120.1 32C111 12.8 91.6 0 69.5 0L24 0zM176 512a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm336-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nconst faWalkieTalkie = {\n prefix: 'fas',\n iconName: 'walkie-talkie',\n icon: [384, 512, [], \"f8ef\", \"M112 24c0-13.3-10.7-24-24-24S64 10.7 64 24l0 72L48 96C21.5 96 0 117.5 0 144L0 300.1c0 12.7 5.1 24.9 14.1 33.9l3.9 3.9c9 9 14.1 21.2 14.1 33.9L32 464c0 26.5 21.5 48 48 48l224 0c26.5 0 48-21.5 48-48l0-92.1c0-12.7 5.1-24.9 14.1-33.9l3.9-3.9c9-9 14.1-21.2 14.1-33.9L384 144c0-26.5-21.5-48-48-48l-16 0c0-17.7-14.3-32-32-32s-32 14.3-32 32l-32 0c0-17.7-14.3-32-32-32s-32 14.3-32 32l-48 0 0-72zm0 136l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faFilePen = {\n prefix: 'fas',\n iconName: 'file-pen',\n icon: [576, 512, [128221, \"file-edit\"], \"f31c\", \"M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 125.7-86.8 86.8c-10.3 10.3-17.5 23.1-21 37.2l-18.7 74.9c-2.3 9.2-1.8 18.8 1.3 27.5L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zM549.8 235.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-29.4 29.4-71-71 29.4-29.4c15.6-15.6 40.9-15.6 56.6 0zM311.9 417L441.1 287.8l71 71L382.9 487.9c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z\"]\n};\nconst faFileEdit = faFilePen;\nconst faReceipt = {\n prefix: 'fas',\n iconName: 'receipt',\n icon: [384, 512, [129534], \"f543\", \"M14 2.2C22.5-1.7 32.5-.3 39.6 5.8L80 40.4 120.4 5.8c9-7.7 22.3-7.7 31.2 0L192 40.4 232.4 5.8c9-7.7 22.3-7.7 31.2 0L304 40.4 344.4 5.8c7.1-6.1 17.1-7.5 25.6-3.6s14 12.4 14 21.8l0 464c0 9.4-5.5 17.9-14 21.8s-18.5 2.5-25.6-3.6L304 471.6l-40.4 34.6c-9 7.7-22.3 7.7-31.2 0L192 471.6l-40.4 34.6c-9 7.7-22.3 7.7-31.2 0L80 471.6 39.6 506.2c-7.1 6.1-17.1 7.5-25.6 3.6S0 497.4 0 488L0 24C0 14.6 5.5 6.1 14 2.2zM96 144c-8.8 0-16 7.2-16 16s7.2 16 16 16l192 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L96 144zM80 352c0 8.8 7.2 16 16 16l192 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L96 336c-8.8 0-16 7.2-16 16zM96 240c-8.8 0-16 7.2-16 16s7.2 16 16 16l192 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L96 240z\"]\n};\nconst faSquarePen = {\n prefix: 'fas',\n iconName: 'square-pen',\n icon: [448, 512, [\"pen-square\", \"pencil-square\"], \"f14b\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM325.8 139.7l14.4 14.4c15.6 15.6 15.6 40.9 0 56.6l-21.4 21.4-71-71 21.4-21.4c15.6-15.6 40.9-15.6 56.6 0zM119.9 289L225.1 183.8l71 71L190.9 359.9c-4.1 4.1-9.2 7-14.9 8.4l-60.1 15c-5.5 1.4-11.2-.2-15.2-4.2s-5.6-9.7-4.2-15.2l15-60.1c1.4-5.6 4.3-10.8 8.4-14.9z\"]\n};\nconst faPenSquare = faSquarePen;\nconst faPencilSquare = faSquarePen;\nconst faSuitcaseRolling = {\n prefix: 'fas',\n iconName: 'suitcase-rolling',\n icon: [384, 512, [], \"f5c1\", \"M144 56c0-4.4 3.6-8 8-8l80 0c4.4 0 8 3.6 8 8l0 72-96 0 0-72zm176 72l-32 0 0-72c0-30.9-25.1-56-56-56L152 0C121.1 0 96 25.1 96 56l0 72-32 0c-35.3 0-64 28.7-64 64L0 416c0 35.3 28.7 64 64 64c0 17.7 14.3 32 32 32s32-14.3 32-32l128 0c0 17.7 14.3 32 32 32s32-14.3 32-32c35.3 0 64-28.7 64-64l0-224c0-35.3-28.7-64-64-64zM112 224l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 128l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faPersonCircleExclamation = {\n prefix: 'fas',\n iconName: 'person-circle-exclamation',\n icon: [576, 512, [], \"e53f\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-223.1L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6l29.7 0c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9 232 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128-16 0zM432 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0-192c-8.8 0-16 7.2-16 16l0 80c0 8.8 7.2 16 16 16s16-7.2 16-16l0-80c0-8.8-7.2-16-16-16z\"]\n};\nconst faChevronDown = {\n prefix: 'fas',\n iconName: 'chevron-down',\n icon: [512, 512, [], \"f078\", \"M233.4 406.6c12.5 12.5 32.8 12.5 45.3 0l192-192c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L256 338.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l192 192z\"]\n};\nconst faBatteryFull = {\n prefix: 'fas',\n iconName: 'battery-full',\n icon: [576, 512, [128267, \"battery\", \"battery-5\"], \"f240\", \"M464 160c8.8 0 16 7.2 16 16l0 160c0 8.8-7.2 16-16 16L80 352c-8.8 0-16-7.2-16-16l0-160c0-8.8 7.2-16 16-16l384 0zM80 96C35.8 96 0 131.8 0 176L0 336c0 44.2 35.8 80 80 80l384 0c44.2 0 80-35.8 80-80l0-16c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l0-16c0-44.2-35.8-80-80-80L80 96zm368 96L96 192l0 128 352 0 0-128z\"]\n};\nconst faBattery = faBatteryFull;\nconst faBattery5 = faBatteryFull;\nconst faSkullCrossbones = {\n prefix: 'fas',\n iconName: 'skull-crossbones',\n icon: [448, 512, [128369, 9760], \"f714\", \"M368 128c0 44.4-25.4 83.5-64 106.4l0 21.6c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32l0-21.6c-38.6-23-64-62.1-64-106.4C80 57.3 144.5 0 224 0s144 57.3 144 128zM168 176a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm144-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM3.4 273.7c7.9-15.8 27.1-22.2 42.9-14.3L224 348.2l177.7-88.8c15.8-7.9 35-1.5 42.9 14.3s1.5 35-14.3 42.9L295.6 384l134.8 67.4c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3L224 419.8 46.3 508.6c-15.8 7.9-35 1.5-42.9-14.3s-1.5-35 14.3-42.9L152.4 384 17.7 316.6C1.9 308.7-4.5 289.5 3.4 273.7z\"]\n};\nconst faCodeCompare = {\n prefix: 'fas',\n iconName: 'code-compare',\n icon: [512, 512, [], \"e13a\", \"M320 488c0 9.5-5.6 18.1-14.2 21.9s-18.8 2.3-25.8-4.1l-80-72c-5.1-4.6-7.9-11-7.9-17.8s2.9-13.3 7.9-17.8l80-72c7-6.3 17.2-7.9 25.8-4.1s14.2 12.4 14.2 21.9l0 40 16 0c35.3 0 64-28.7 64-64l0-166.7C371.7 141 352 112.8 352 80c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3L464 320c0 70.7-57.3 128-128 128l-16 0 0 40zM456 80a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM192 24c0-9.5 5.6-18.1 14.2-21.9s18.8-2.3 25.8 4.1l80 72c5.1 4.6 7.9 11 7.9 17.8s-2.9 13.3-7.9 17.8l-80 72c-7 6.3-17.2 7.9-25.8 4.1s-14.2-12.4-14.2-21.9l0-40-16 0c-35.3 0-64 28.7-64 64l0 166.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3L48 192c0-70.7 57.3-128 128-128l16 0 0-40zM56 432a24 24 0 1 0 48 0 24 24 0 1 0 -48 0z\"]\n};\nconst faListUl = {\n prefix: 'fas',\n iconName: 'list-ul',\n icon: [512, 512, [\"list-dots\"], \"f0ca\", \"M64 144a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM192 64c-17.7 0-32 14.3-32 32s14.3 32 32 32l288 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L192 64zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l288 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-288 0zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l288 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-288 0zM64 464a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm48-208a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nconst faListDots = faListUl;\nconst faSchoolLock = {\n prefix: 'fas',\n iconName: 'school-lock',\n icon: [640, 512, [], \"e56f\", \"M302.2 5.4c10.7-7.2 24.8-7.2 35.5 0L473.7 96 592 96c26.5 0 48 21.5 48 48l0 128c0-61.9-50.1-112-112-112s-112 50.1-112 112l0 24.6c-19.1 11.1-32 31.7-32 55.4l-63.7 0-.3 0c-35.3 0-64 28.7-64 64l0 96 64 0s0 0 0 0L48 512c-26.5 0-48-21.5-48-48L0 144c0-26.5 21.5-48 48-48l118.3 0L302.2 5.4zM80 208l0 64c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm0 128l0 64c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm240-72a88 88 0 1 0 0-176 88 88 0 1 0 0 176zm16-120l0 16 16 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16s16 7.2 16 16zm192 96c-17.7 0-32 14.3-32 32l0 48 64 0 0-48c0-17.7-14.3-32-32-32zm-80 32c0-44.2 35.8-80 80-80s80 35.8 80 80l0 48c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32l0-48z\"]\n};\nconst faTowerCell = {\n prefix: 'fas',\n iconName: 'tower-cell',\n icon: [576, 512, [], \"e585\", \"M62.6 2.3C46.2-4.3 27.6 3.6 20.9 20C7.4 53.4 0 89.9 0 128s7.4 74.6 20.9 108c6.6 16.4 25.3 24.3 41.7 17.7S86.9 228.4 80.3 212C69.8 186.1 64 157.8 64 128s5.8-58.1 16.3-84C86.9 27.6 79 9 62.6 2.3zm450.8 0C497 9 489.1 27.6 495.7 44C506.2 69.9 512 98.2 512 128s-5.8 58.1-16.3 84c-6.6 16.4 1.3 35 17.7 41.7s35-1.3 41.7-17.7c13.5-33.4 20.9-69.9 20.9-108s-7.4-74.6-20.9-108C548.4 3.6 529.8-4.3 513.4 2.3zM340.1 165.2c7.5-10.5 11.9-23.3 11.9-37.2c0-35.3-28.7-64-64-64s-64 28.7-64 64c0 13.9 4.4 26.7 11.9 37.2L98.9 466.8c-7.3 16.1-.2 35.1 15.9 42.4s35.1 .2 42.4-15.9L177.7 448l220.6 0 20.6 45.2c7.3 16.1 26.3 23.2 42.4 15.9s23.2-26.3 15.9-42.4L340.1 165.2zM369.2 384l-162.4 0 14.5-32 133.3 0 14.5 32zM288 205.3L325.6 288l-75.2 0L288 205.3zM163.3 73.6c5.3-12.1-.2-26.3-12.4-31.6s-26.3 .2-31.6 12.4C109.5 77 104 101.9 104 128s5.5 51 15.3 73.6c5.3 12.1 19.5 17.7 31.6 12.4s17.7-19.5 12.4-31.6C156 165.8 152 147.4 152 128s4-37.8 11.3-54.4zM456.7 54.4c-5.3-12.1-19.5-17.7-31.6-12.4s-17.7 19.5-12.4 31.6C420 90.2 424 108.6 424 128s-4 37.8-11.3 54.4c-5.3 12.1 .2 26.3 12.4 31.6s26.3-.2 31.6-12.4C466.5 179 472 154.1 472 128s-5.5-51-15.3-73.6z\"]\n};\nconst faDownLong = {\n prefix: 'fas',\n iconName: 'down-long',\n icon: [320, 512, [\"long-arrow-alt-down\"], \"f309\", \"M2 334.5c-3.8 8.8-2 19 4.6 26l136 144c4.5 4.8 10.8 7.5 17.4 7.5s12.9-2.7 17.4-7.5l136-144c6.6-7 8.4-17.2 4.6-26s-12.5-14.5-22-14.5l-72 0 0-288c0-17.7-14.3-32-32-32L128 0C110.3 0 96 14.3 96 32l0 288-72 0c-9.6 0-18.2 5.7-22 14.5z\"]\n};\nconst faLongArrowAltDown = faDownLong;\nconst faRankingStar = {\n prefix: 'fas',\n iconName: 'ranking-star',\n icon: [640, 512, [], \"e561\", \"M353.8 54.1L330.2 6.3c-3.9-8.3-16.1-8.6-20.4 0L286.2 54.1l-52.3 7.5c-9.3 1.4-13.3 12.9-6.4 19.8l38 37-9 52.1c-1.4 9.3 8.2 16.5 16.8 12.2l46.9-24.8 46.6 24.4c8.6 4.3 18.3-2.9 16.8-12.2l-9-52.1 38-36.6c6.8-6.8 2.9-18.3-6.4-19.8l-52.3-7.5zM256 256c-17.7 0-32 14.3-32 32l0 192c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-192c0-17.7-14.3-32-32-32l-128 0zM32 320c-17.7 0-32 14.3-32 32L0 480c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32L32 320zm416 96l0 64c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-128 0c-17.7 0-32 14.3-32 32z\"]\n};\nconst faChessKing = {\n prefix: 'fas',\n iconName: 'chess-king',\n icon: [448, 512, [9818], \"f43f\", \"M224 0c17.7 0 32 14.3 32 32l0 16 16 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-16 0 0 48 152 0c22.1 0 40 17.9 40 40c0 5.3-1 10.5-3.1 15.4L368 400 80 400 3.1 215.4C1 210.5 0 205.3 0 200c0-22.1 17.9-40 40-40l152 0 0-48-16 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l16 0 0-16c0-17.7 14.3-32 32-32zM38.6 473.4L80 432l288 0 41.4 41.4c4.2 4.2 6.6 10 6.6 16c0 12.5-10.1 22.6-22.6 22.6L54.6 512C42.1 512 32 501.9 32 489.4c0-6 2.4-11.8 6.6-16z\"]\n};\nconst faPersonHarassing = {\n prefix: 'fas',\n iconName: 'person-harassing',\n icon: [576, 512, [], \"e549\", \"M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM59.4 304.5L88 256.9 88 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128 16 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-244.7 47.4 57.1c11.3 13.6 31.5 15.5 45.1 4.2s15.5-31.5 4.2-45.1l-73.7-88.9c-18.2-22-45.3-34.7-73.9-34.7l-35.9 0c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9zM480 240a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM464 344l0 58.7-41.4-41.4c-7.3-7.3-17.6-10.6-27.8-9s-18.9 8.1-23.5 17.3l-48 96c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3L408.8 438l54.7 54.7c12.4 12.4 29.1 19.3 46.6 19.3c36.4 0 65.9-29.5 65.9-65.9L576 344c0-30.9-25.1-56-56-56s-56 25.1-56 56zM288 48c0 8.8 7.2 16 16 16l56 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-56 0c-8.8 0-16 7.2-16 16zm-.8 49.7c-7.9-4-17.5-.7-21.5 7.2s-.7 17.5 7.2 21.5l48 24c7.9 4 17.5 .7 21.5-7.2s.7-17.5-7.2-21.5l-48-24z\"]\n};\nconst faBrazilianRealSign = {\n prefix: 'fas',\n iconName: 'brazilian-real-sign',\n icon: [512, 512, [], \"e46c\", \"M400 0c17.7 0 32 14.3 32 32l0 18.2c12.5 2.3 24.7 6.4 36.2 12.1l10.1 5.1c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3l-10.2-5.1c-9.9-5-20.9-7.5-32-7.5l-1.7 0c-29.8 0-53.9 24.1-53.9 53.9c0 22 13.4 41.8 33.9 50l52 20.8c44.7 17.9 74.1 61.2 74.1 109.4l0 3.4c0 51.2-33.6 94.6-80 109.2l0 21.3c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-19.4c-15-3.5-29.4-9.7-42.3-18.3l-23.4-15.6c-14.7-9.8-18.7-29.7-8.9-44.4s29.7-18.7 44.4-8.9L361.2 389c10.8 7.2 23.4 11 36.3 11c27.9 0 50.5-22.6 50.5-50.5l0-3.4c0-22-13.4-41.8-33.9-50l-52-20.8C317.3 257.4 288 214.1 288 165.9C288 114 321.5 70 368 54.2L368 32c0-17.7 14.3-32 32-32zM0 64C0 46.3 14.3 32 32 32l80 0c79.5 0 144 64.5 144 144c0 58.8-35.2 109.3-85.7 131.7l51.4 128.4c6.6 16.4-1.4 35-17.8 41.6s-35-1.4-41.6-17.8L106.3 320 64 320l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32L0 288 0 64zM64 256l48 0c44.2 0 80-35.8 80-80s-35.8-80-80-80L64 96l0 160z\"]\n};\nconst faLandmarkDome = {\n prefix: 'fas',\n iconName: 'landmark-dome',\n icon: [512, 512, [\"landmark-alt\"], \"f752\", \"M248 0l16 0c13.3 0 24 10.7 24 24l0 10.7C368.4 48.1 431.9 111.6 445.3 192l2.7 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L64 256c-17.7 0-32-14.3-32-32s14.3-32 32-32l2.7 0C80.1 111.6 143.6 48.1 224 34.7L224 24c0-13.3 10.7-24 24-24zM64 288l64 0 0 128 40 0 0-128 64 0 0 128 48 0 0-128 64 0 0 128 40 0 0-128 64 0 0 132.3c.6 .3 1.2 .7 1.8 1.1l48 32c11.7 7.8 17 22.4 12.9 35.9S494.1 512 480 512L32 512c-14.1 0-26.5-9.2-30.6-22.7s1.1-28.1 12.9-35.9l48-32c.6-.4 1.2-.7 1.8-1.1L64 288z\"]\n};\nconst faLandmarkAlt = faLandmarkDome;\nconst faArrowUp = {\n prefix: 'fas',\n iconName: 'arrow-up',\n icon: [384, 512, [8593], \"f062\", \"M214.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 141.2 160 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-306.7L329.4 246.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160z\"]\n};\nconst faTv = {\n prefix: 'fas',\n iconName: 'tv',\n icon: [640, 512, [63717, \"television\", \"tv-alt\"], \"f26c\", \"M64 64l0 288 512 0 0-288L64 64zM0 64C0 28.7 28.7 0 64 0L576 0c35.3 0 64 28.7 64 64l0 288c0 35.3-28.7 64-64 64L64 416c-35.3 0-64-28.7-64-64L0 64zM128 448l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-384 0c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faTelevision = faTv;\nconst faTvAlt = faTv;\nconst faShrimp = {\n prefix: 'fas',\n iconName: 'shrimp',\n icon: [512, 512, [129424], \"e448\", \"M64 32C28.7 32 0 60.7 0 96s28.7 64 64 64l1 0c3.7 88.9 77 160 167 160l56 0 0-192-24 0L88.8 128 64 128c-17.7 0-32-14.3-32-32s14.3-32 32-32l400 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L64 32zM224 456c0 13.3 10.7 24 24 24l72 0 0-72.2-64.1-22.4c-12.5-4.4-26.2 2.2-30.6 14.7s2.2 26.2 14.7 30.6l4.5 1.6C233 433.9 224 443.9 224 456zm128 23.3c36.4-3.3 69.5-17.6 96.1-39.6l-86.5-34.6c-3 1.8-6.2 3.2-9.6 4.3l0 69.9zM472.6 415c24.6-30.3 39.4-68.9 39.4-111c0-12.3-1.3-24.3-3.7-35.9L382.8 355.1c.8 3.4 1.2 7 1.2 10.6c0 4.6-.7 9-1.9 13.1L472.6 415zM336 128l-16 0 0 192 18.3 0c9.9 0 19.1 3.2 26.6 8.5l133.5-92.4C471.8 172.6 409.1 128 336 128zM168 192a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nconst faListCheck = {\n prefix: 'fas',\n iconName: 'list-check',\n icon: [512, 512, [\"tasks\"], \"f0ae\", \"M152.1 38.2c9.9 8.9 10.7 24 1.8 33.9l-72 80c-4.4 4.9-10.6 7.8-17.2 7.9s-12.9-2.4-17.6-7L7 113C-2.3 103.6-2.3 88.4 7 79s24.6-9.4 33.9 0l22.1 22.1 55.1-61.2c8.9-9.9 24-10.7 33.9-1.8zm0 160c9.9 8.9 10.7 24 1.8 33.9l-72 80c-4.4 4.9-10.6 7.8-17.2 7.9s-12.9-2.4-17.6-7L7 273c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l22.1 22.1 55.1-61.2c8.9-9.9 24-10.7 33.9-1.8zM224 96c0-17.7 14.3-32 32-32l224 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-224 0c-17.7 0-32-14.3-32-32zm0 160c0-17.7 14.3-32 32-32l224 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-224 0c-17.7 0-32-14.3-32-32zM160 416c0-17.7 14.3-32 32-32l288 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-288 0c-17.7 0-32-14.3-32-32zM48 368a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nconst faTasks = faListCheck;\nconst faJugDetergent = {\n prefix: 'fas',\n iconName: 'jug-detergent',\n icon: [384, 512, [], \"e519\", \"M96 24c0-13.3 10.7-24 24-24l80 0c13.3 0 24 10.7 24 24l0 24 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L88 96C74.7 96 64 85.3 64 72s10.7-24 24-24l8 0 0-24zM0 256c0-70.7 57.3-128 128-128l128 0c70.7 0 128 57.3 128 128l0 192c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 256zm256 0l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nconst faCircleUser = {\n prefix: 'fas',\n iconName: 'circle-user',\n icon: [512, 512, [62142, \"user-circle\"], \"f2bd\", \"M399 384.2C376.9 345.8 335.4 320 288 320l-64 0c-47.4 0-88.9 25.8-111 64.2c35.2 39.2 86.2 63.8 143 63.8s107.8-24.7 143-63.8zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256 16a72 72 0 1 0 0-144 72 72 0 1 0 0 144z\"]\n};\nconst faUserCircle = faCircleUser;\nconst faUserShield = {\n prefix: 'fas',\n iconName: 'user-shield',\n icon: [640, 512, [], \"f505\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512l388.6 0c1.8 0 3.5-.2 5.3-.5c-76.3-55.1-99.8-141-103.1-200.2c-16.1-4.8-33.1-7.3-50.7-7.3l-91.4 0zm308.8-78.3l-120 48C358 277.4 352 286.2 352 296c0 63.3 25.9 168.8 134.8 214.2c5.9 2.5 12.6 2.5 18.5 0C614.1 464.8 640 359.3 640 296c0-9.8-6-18.6-15.1-22.3l-120-48c-5.7-2.3-12.1-2.3-17.8 0zM591.4 312c-3.9 50.7-27.2 116.7-95.4 149.7l0-187.8L591.4 312z\"]\n};\nconst faWind = {\n prefix: 'fas',\n iconName: 'wind',\n icon: [512, 512, [], \"f72e\", \"M288 32c0 17.7 14.3 32 32 32l32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 128c-17.7 0-32 14.3-32 32s14.3 32 32 32l320 0c53 0 96-43 96-96s-43-96-96-96L320 0c-17.7 0-32 14.3-32 32zm64 352c0 17.7 14.3 32 32 32l32 0c53 0 96-43 96-96s-43-96-96-96L32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0c-17.7 0-32 14.3-32 32zM128 512l32 0c53 0 96-43 96-96s-43-96-96-96L32 320c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32z\"]\n};\nconst faCarBurst = {\n prefix: 'fas',\n iconName: 'car-burst',\n icon: [640, 512, [\"car-crash\"], \"f5e1\", \"M176 8c-6.6 0-12.4 4-14.9 10.1l-29.4 74L55.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1L10.9 206.4c-5.4 3.7-8 10.3-6.5 16.7s6.7 11.2 13.1 12.2l78.7 12.2L90.6 327c-.5 6.5 3.1 12.7 9 15.5s12.9 1.8 17.8-2.6l35.3-32.5 9.5-35.4 10.4-38.6c8-29.9 30.5-52.1 57.9-60.9l41-59.2c11.3-16.3 26.4-28.9 43.5-37.2c-.4-.6-.8-1.2-1.3-1.8c-4.1-5.1-10.9-7.2-17.2-5.3L220.3 92.1l-29.4-74C188.4 12 182.6 8 176 8zM367.7 161.5l135.6 36.3c6.5 1.8 11.3 7.4 11.8 14.2l4.6 56.5-201.5-54 32.2-46.6c3.8-5.6 10.8-8.1 17.3-6.4zm-69.9-30l-47.9 69.3c-21.6 3-40.3 18.6-46.3 41l-10.4 38.6-16.6 61.8-8.3 30.9c-4.6 17.1 5.6 34.6 22.6 39.2l15.5 4.1c17.1 4.6 34.6-5.6 39.2-22.6l8.3-30.9 247.3 66.3-8.3 30.9c-4.6 17.1 5.6 34.6 22.6 39.2l15.5 4.1c17.1 4.6 34.6-5.6 39.2-22.6l8.3-30.9L595 388l10.4-38.6c6-22.4-2.5-45.2-19.6-58.7l-6.8-84c-2.7-33.7-26.4-62-59-70.8L384.2 99.7c-32.7-8.8-67.3 4-86.5 31.8zm-17 131a24 24 0 1 1 -12.4 46.4 24 24 0 1 1 12.4-46.4zm217.9 83.2A24 24 0 1 1 545 358.1a24 24 0 1 1 -46.4-12.4z\"]\n};\nconst faCarCrash = faCarBurst;\nconst faY = {\n prefix: 'fas',\n iconName: 'y',\n icon: [384, 512, [121], \"59\", \"M58 45.4C47.8 31 27.8 27.7 13.4 38S-4.3 68.2 6 82.6L160 298.3 160 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-149.7L378 82.6c10.3-14.4 6.9-34.4-7.4-44.6S336.2 31 326 45.4L192 232.9 58 45.4z\"]\n};\nconst faPersonSnowboarding = {\n prefix: 'fas',\n iconName: 'person-snowboarding',\n icon: [512, 512, [127938, \"snowboarding\"], \"f7ce\", \"M209.7 3.4c15.8-7.9 35-1.5 42.9 14.3l25 50 42.4 8.5c19.5 3.9 37.8 12.3 53.5 24.5l126.1 98.1c14 10.9 16.5 31 5.6 44.9s-31 16.5-44.9 5.6l-72.1-56.1-71.5 31.8 33.1 27.6c23.2 19.3 33.5 50 26.7 79.4l-17.4 75.2c-2.2 9.4-8.2 16.8-16.1 21l86.5 33.1c4.6 1.8 9.4 2.6 14.3 2.6l28.2 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-28.2 0c-10.8 0-21.4-2-31.5-5.8L60.1 371.3c-11.5-4.4-22-11.2-30.8-20L7 329c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l22.4 22.4c4 4 8.7 7.1 14 9.1l22.4 8.6c-.8-1.6-1.5-3.2-2.1-4.9c-5.6-16.8 3.5-34.9 20.2-40.5L192 264.9l0-53.2c0-24.2 13.7-46.4 35.4-57.2l45.2-22.6-7.5-1.5c-19.4-3.9-35.9-16.5-44.7-34.1l-25-50c-7.9-15.8-1.5-35 14.3-42.9zM139 350.1l159 60.9c-2.1-5.6-2.6-11.9-1.1-18.2l17.4-75.2c1.4-5.9-.7-12-5.3-15.9l-52.8-44 0 18.8c0 20.7-13.2 39-32.8 45.5L139 350.1zM432 0a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nconst faSnowboarding = faPersonSnowboarding;\nconst faTruckFast = {\n prefix: 'fas',\n iconName: 'truck-fast',\n icon: [640, 512, [\"shipping-fast\"], \"f48b\", \"M112 0C85.5 0 64 21.5 64 48l0 48L16 96c-8.8 0-16 7.2-16 16s7.2 16 16 16l48 0 208 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L64 160l-16 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l16 0 176 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L64 224l-48 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l48 0 144 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L64 288l0 128c0 53 43 96 96 96s96-43 96-96l128 0c0 53 43 96 96 96s96-43 96-96l32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-64 0-32 0-18.7c0-17-6.7-33.3-18.7-45.3L512 114.7c-12-12-28.3-18.7-45.3-18.7L416 96l0-48c0-26.5-21.5-48-48-48L112 0zM544 237.3l0 18.7-128 0 0-96 50.7 0L544 237.3zM160 368a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm272 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z\"]\n};\nconst faShippingFast = faTruckFast;\nconst faFish = {\n prefix: 'fas',\n iconName: 'fish',\n icon: [576, 512, [128031], \"f578\", \"M180.5 141.5C219.7 108.5 272.6 80 336 80s116.3 28.5 155.5 61.5c39.1 33 66.9 72.4 81 99.8c4.7 9.2 4.7 20.1 0 29.3c-14.1 27.4-41.9 66.8-81 99.8C452.3 403.5 399.4 432 336 432s-116.3-28.5-155.5-61.5c-16.2-13.7-30.5-28.5-42.7-43.1L48.1 379.6c-12.5 7.3-28.4 5.3-38.7-4.9S-3 348.7 4.2 336.1L50 256 4.2 175.9c-7.2-12.6-5-28.4 5.3-38.6s26.1-12.2 38.7-4.9l89.7 52.3c12.2-14.6 26.5-29.4 42.7-43.1zM448 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nconst faUserGraduate = {\n prefix: 'fas',\n iconName: 'user-graduate',\n icon: [448, 512, [], \"f501\", \"M219.3 .5c3.1-.6 6.3-.6 9.4 0l200 40C439.9 42.7 448 52.6 448 64s-8.1 21.3-19.3 23.5L352 102.9l0 57.1c0 70.7-57.3 128-128 128s-128-57.3-128-128l0-57.1L48 93.3l0 65.1 15.7 78.4c.9 4.7-.3 9.6-3.3 13.3s-7.6 5.9-12.4 5.9l-32 0c-4.8 0-9.3-2.1-12.4-5.9s-4.3-8.6-3.3-13.3L16 158.4l0-71.8C6.5 83.3 0 74.3 0 64C0 52.6 8.1 42.7 19.3 40.5l200-40zM111.9 327.7c10.5-3.4 21.8 .4 29.4 8.5l71 75.5c6.3 6.7 17 6.7 23.3 0l71-75.5c7.6-8.1 18.9-11.9 29.4-8.5C401 348.6 448 409.4 448 481.3c0 17-13.8 30.7-30.7 30.7L30.7 512C13.8 512 0 498.2 0 481.3c0-71.9 47-132.7 111.9-153.6z\"]\n};\nconst faCircleHalfStroke = {\n prefix: 'fas',\n iconName: 'circle-half-stroke',\n icon: [512, 512, [9680, \"adjust\"], \"f042\", \"M448 256c0-106-86-192-192-192l0 384c106 0 192-86 192-192zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"]\n};\nconst faAdjust = faCircleHalfStroke;\nconst faClapperboard = {\n prefix: 'fas',\n iconName: 'clapperboard',\n icon: [512, 512, [], \"e131\", \"M448 32l-86.1 0-1 1-127 127 92.1 0 1-1L453.8 32.3c-1.9-.2-3.8-.3-5.8-.3zm64 128l0-64c0-15.1-5.3-29.1-14-40l-104 104L512 160zM294.1 32l-92.1 0-1 1L73.9 160l92.1 0 1-1 127-127zM64 32C28.7 32 0 60.7 0 96l0 64 6.1 0 1-1 127-127L64 32zM512 192L0 192 0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-224z\"]\n};\nconst faCircleRadiation = {\n prefix: 'fas',\n iconName: 'circle-radiation',\n icon: [512, 512, [9762, \"radiation-alt\"], \"f7ba\", \"M256 64a192 192 0 1 1 0 384 192 192 0 1 1 0-384zm0 448A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM200 256c0-20.7 11.3-38.8 28-48.5l-36-62.3c-8.8-15.3-28.7-20.8-42-9c-25.6 22.6-43.9 53.3-50.9 88.1C95.7 241.5 110.3 256 128 256l72 0zm28 48.5l-36 62.4c-8.8 15.3-3.6 35.2 13.1 40.8c16 5.4 33.1 8.3 50.9 8.3s34.9-2.9 50.9-8.3c16.7-5.6 21.9-25.5 13.1-40.8l-36-62.4c-8.2 4.8-17.8 7.5-28 7.5s-19.8-2.7-28-7.5zM312 256l72 0c17.7 0 32.3-14.5 28.8-31.8c-7-34.8-25.3-65.5-50.9-88.1c-13.2-11.7-33.1-6.3-42 9l-36 62.3c16.7 9.7 28 27.8 28 48.5zm-56 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faRadiationAlt = faCircleRadiation;\nconst faBaseball = {\n prefix: 'fas',\n iconName: 'baseball',\n icon: [512, 512, [129358, 9918, \"baseball-ball\"], \"f433\", \"M62.7 223.4c-4.8 .4-9.7 .6-14.7 .6c-15.6 0-30.8-2-45.2-5.9C19.2 107.1 107.1 19.2 218.1 2.8C222 17.2 224 32.4 224 48c0 4.9-.2 9.8-.6 14.7c-.7 8.8 5.8 16.5 14.6 17.3s16.5-5.8 17.3-14.6c.5-5.7 .7-11.5 .7-17.3c0-16.5-1.9-32.6-5.6-47.9c1.8 0 3.7-.1 5.6-.1C397.4 0 512 114.6 512 256c0 1.9 0 3.7-.1 5.6c-15.4-3.6-31.4-5.6-47.9-5.6c-5.8 0-11.6 .2-17.3 .7c-8.8 .7-15.4 8.5-14.6 17.3s8.5 15.4 17.3 14.6c4.8-.4 9.7-.6 14.7-.6c15.6 0 30.8 2 45.2 5.9C492.8 404.9 404.9 492.8 293.9 509.2C290 494.8 288 479.6 288 464c0-4.9 .2-9.8 .6-14.7c.7-8.8-5.8-16.5-14.6-17.3s-16.5 5.8-17.3 14.6c-.5 5.7-.7 11.5-.7 17.3c0 16.5 1.9 32.6 5.6 47.9c-1.8 0-3.7 .1-5.6 .1C114.6 512 0 397.4 0 256c0-1.9 0-3.7 .1-5.6C15.4 254.1 31.5 256 48 256c5.8 0 11.6-.2 17.3-.7c8.8-.7 15.4-8.5 14.6-17.3s-8.5-15.4-17.3-14.6zM121.3 208c-8 3.7-11.6 13.2-7.9 21.2s13.2 11.6 21.2 7.9c45.2-20.8 81.7-57.2 102.5-102.5c3.7-8 .2-17.5-7.9-21.2s-17.5-.2-21.2 7.9c-17.6 38.3-48.5 69.2-86.7 86.7zm277.2 74.7c-3.7-8-13.2-11.6-21.2-7.9c-45.2 20.8-81.7 57.2-102.5 102.5c-3.7 8-.2 17.5 7.9 21.2s17.5 .2 21.2-7.9c17.6-38.3 48.5-69.2 86.7-86.7c8-3.7 11.6-13.2 7.9-21.2z\"]\n};\nconst faBaseballBall = faBaseball;\nconst faJetFighterUp = {\n prefix: 'fas',\n iconName: 'jet-fighter-up',\n icon: [512, 512, [], \"e518\", \"M270.7 9.7C268.2 3.8 262.4 0 256 0s-12.2 3.8-14.7 9.7L197.2 112.6c-3.4 8-5.2 16.5-5.2 25.2l0 77-144 84L48 280c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 56 0 32 0 24c0 13.3 10.7 24 24 24s24-10.7 24-24l0-8 144 0 0 32.7L133.5 468c-3.5 3-5.5 7.4-5.5 12l0 16c0 8.8 7.2 16 16 16l96 0 0-64c0-8.8 7.2-16 16-16s16 7.2 16 16l0 64 96 0c8.8 0 16-7.2 16-16l0-16c0-4.6-2-9-5.5-12L320 416.7l0-32.7 144 0 0 8c0 13.3 10.7 24 24 24s24-10.7 24-24l0-24 0-32 0-56c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 18.8-144-84 0-77c0-8.7-1.8-17.2-5.2-25.2L270.7 9.7z\"]\n};\nconst faDiagramProject = {\n prefix: 'fas',\n iconName: 'diagram-project',\n icon: [576, 512, [\"project-diagram\"], \"f542\", \"M0 80C0 53.5 21.5 32 48 32l96 0c26.5 0 48 21.5 48 48l0 16 192 0 0-16c0-26.5 21.5-48 48-48l96 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48l-96 0c-26.5 0-48-21.5-48-48l0-16-192 0 0 16c0 1.7-.1 3.4-.3 5L272 288l96 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48l-96 0c-26.5 0-48-21.5-48-48l0-96c0-1.7 .1-3.4 .3-5L144 224l-96 0c-26.5 0-48-21.5-48-48L0 80z\"]\n};\nconst faProjectDiagram = faDiagramProject;\nconst faCopy = {\n prefix: 'fas',\n iconName: 'copy',\n icon: [448, 512, [], \"f0c5\", \"M208 0L332.1 0c12.7 0 24.9 5.1 33.9 14.1l67.9 67.9c9 9 14.1 21.2 14.1 33.9L448 336c0 26.5-21.5 48-48 48l-192 0c-26.5 0-48-21.5-48-48l0-288c0-26.5 21.5-48 48-48zM48 128l80 0 0 64-64 0 0 256 192 0 0-32 64 0 0 48c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 176c0-26.5 21.5-48 48-48z\"]\n};\nconst faVolumeXmark = {\n prefix: 'fas',\n iconName: 'volume-xmark',\n icon: [576, 512, [\"volume-mute\", \"volume-times\"], \"f6a9\", \"M301.1 34.8C312.6 40 320 51.4 320 64l0 384c0 12.6-7.4 24-18.9 29.2s-25 3.1-34.4-5.3L131.8 352 64 352c-35.3 0-64-28.7-64-64l0-64c0-35.3 28.7-64 64-64l67.8 0L266.7 40.1c9.4-8.4 22.9-10.4 34.4-5.3zM425 167l55 55 55-55c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-55 55 55 55c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-55-55-55 55c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l55-55-55-55c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0z\"]\n};\nconst faVolumeMute = faVolumeXmark;\nconst faVolumeTimes = faVolumeXmark;\nconst faHandSparkles = {\n prefix: 'fas',\n iconName: 'hand-sparkles',\n icon: [640, 512, [], \"e05d\", \"M320 0c17.7 0 32 14.3 32 32l0 208c0 8.8 7.2 16 16 16s16-7.2 16-16l0-176c0-17.7 14.3-32 32-32s32 14.3 32 32l0 176c0 8.8 7.2 16 16 16s16-7.2 16-16l0-112c0-17.7 14.3-32 32-32s32 14.3 32 32l0 195.1c-11.9 4.8-21.3 14.9-25 27.8l-8.9 31.2L478.9 391C460.6 396.3 448 413 448 432c0 18.9 12.5 35.6 30.6 40.9C448.4 497.4 409.9 512 368 512l-19.2 0c-59.6 0-116.9-22.9-160-64L76.4 341c-16-15.2-16.6-40.6-1.4-56.6s40.6-16.6 56.6-1.4l60.5 57.6c0-1.5-.1-3.1-.1-4.6l0-272c0-17.7 14.3-32 32-32s32 14.3 32 32l0 176c0 8.8 7.2 16 16 16s16-7.2 16-16l0-208c0-17.7 14.3-32 32-32zm-7.3 326.6c-1.1-3.9-4.7-6.6-8.7-6.6s-7.6 2.7-8.7 6.6L288 352l-25.4 7.3c-3.9 1.1-6.6 4.7-6.6 8.7s2.7 7.6 6.6 8.7L288 384l7.3 25.4c1.1 3.9 4.7 6.6 8.7 6.6s7.6-2.7 8.7-6.6L320 384l25.4-7.3c3.9-1.1 6.6-4.7 6.6-8.7s-2.7-7.6-6.6-8.7L320 352l-7.3-25.4zM104 120l48.3 13.8c4.6 1.3 7.7 5.5 7.7 10.2s-3.1 8.9-7.7 10.2L104 168 90.2 216.3c-1.3 4.6-5.5 7.7-10.2 7.7s-8.9-3.1-10.2-7.7L56 168 7.7 154.2C3.1 152.9 0 148.7 0 144s3.1-8.9 7.7-10.2L56 120 69.8 71.7C71.1 67.1 75.3 64 80 64s8.9 3.1 10.2 7.7L104 120zM584 408l48.3 13.8c4.6 1.3 7.7 5.5 7.7 10.2s-3.1 8.9-7.7 10.2L584 456l-13.8 48.3c-1.3 4.6-5.5 7.7-10.2 7.7s-8.9-3.1-10.2-7.7L536 456l-48.3-13.8c-4.6-1.3-7.7-5.5-7.7-10.2s3.1-8.9 7.7-10.2L536 408l13.8-48.3c1.3-4.6 5.5-7.7 10.2-7.7s8.9 3.1 10.2 7.7L584 408z\"]\n};\nconst faGrip = {\n prefix: 'fas',\n iconName: 'grip',\n icon: [448, 512, [\"grip-horizontal\"], \"f58d\", \"M128 136c0-22.1-17.9-40-40-40L40 96C17.9 96 0 113.9 0 136l0 48c0 22.1 17.9 40 40 40l48 0c22.1 0 40-17.9 40-40l0-48zm0 192c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40l0 48c0 22.1 17.9 40 40 40l48 0c22.1 0 40-17.9 40-40l0-48zm32-192l0 48c0 22.1 17.9 40 40 40l48 0c22.1 0 40-17.9 40-40l0-48c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40zM288 328c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40l0 48c0 22.1 17.9 40 40 40l48 0c22.1 0 40-17.9 40-40l0-48zm32-192l0 48c0 22.1 17.9 40 40 40l48 0c22.1 0 40-17.9 40-40l0-48c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40zM448 328c0-22.1-17.9-40-40-40l-48 0c-22.1 0-40 17.9-40 40l0 48c0 22.1 17.9 40 40 40l48 0c22.1 0 40-17.9 40-40l0-48z\"]\n};\nconst faGripHorizontal = faGrip;\nconst faShareFromSquare = {\n prefix: 'fas',\n iconName: 'share-from-square',\n icon: [576, 512, [61509, \"share-square\"], \"f14d\", \"M352 224l-46.5 0c-45 0-81.5 36.5-81.5 81.5c0 22.3 10.3 34.3 19.2 40.5c6.8 4.7 12.8 12 12.8 20.3c0 9.8-8 17.8-17.8 17.8l-2.5 0c-2.4 0-4.8-.4-7.1-1.4C210.8 374.8 128 333.4 128 240c0-79.5 64.5-144 144-144l80 0 0-61.3C352 15.5 367.5 0 386.7 0c8.6 0 16.8 3.2 23.2 8.9L548.1 133.3c7.6 6.8 11.9 16.5 11.9 26.7s-4.3 19.9-11.9 26.7l-139 125.1c-5.9 5.3-13.5 8.2-21.4 8.2l-3.7 0c-17.7 0-32-14.3-32-32l0-64zM80 96c-8.8 0-16 7.2-16 16l0 320c0 8.8 7.2 16 16 16l320 0c8.8 0 16-7.2 16-16l0-48c0-17.7 14.3-32 32-32s32 14.3 32 32l0 48c0 44.2-35.8 80-80 80L80 512c-44.2 0-80-35.8-80-80L0 112C0 67.8 35.8 32 80 32l48 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L80 96z\"]\n};\nconst faShareSquare = faShareFromSquare;\nconst faChildCombatant = {\n prefix: 'fas',\n iconName: 'child-combatant',\n icon: [576, 512, [\"child-rifle\"], \"e4e0\", \"M176 128A64 64 0 1 0 176 0a64 64 0 1 0 0 128zm-8 352l0-128 16 0 0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-179.5L260.9 321c9.4 15 29.2 19.4 44.1 10s19.4-29.2 10-44.1l-51.7-82.1c-17.6-27.9-48.3-44.9-81.2-44.9l-12.3 0c-33 0-63.7 16.9-81.2 44.9L36.9 287c-9.4 15-4.9 34.7 10 44.1s34.7 4.9 44.1-10L104 300.5 104 480c0 17.7 14.3 32 32 32s32-14.3 32-32zM448 0L432 0 416 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l0 100.3c-9.6 5.5-16 15.9-16 27.7l0 32c-17.7 0-32 14.3-32 32l0 144c0 17.7 14.3 32 32 32l16 0 0 96c0 8.8 7.2 16 16 16l59.5 0c10.4 0 18-9.8 15.5-19.9L484 400l44 0c8.8 0 16-7.2 16-16l0-16c0-8.8-7.2-16-16-16l-48 0 0-26.7 53.1-17.7c6.5-2.2 10.9-8.3 10.9-15.2l0-84.5c0-8.8-7.2-16-16-16l-16 0c-8.8 0-16 7.2-16 16l0 56-16 5.3L480 160c0-11.8-6.4-22.2-16-27.7L464 16c0-8.8-7.2-16-16-16z\"]\n};\nconst faChildRifle = faChildCombatant;\nconst faGun = {\n prefix: 'fas',\n iconName: 'gun',\n icon: [576, 512, [], \"e19b\", \"M528 56c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 8L32 64C14.3 64 0 78.3 0 96L0 208c0 17.7 14.3 32 32 32l10 0c20.8 0 36.1 19.6 31 39.8L33 440.2c-2.4 9.6-.2 19.7 5.8 27.5S54.1 480 64 480l96 0c14.7 0 27.5-10 31-24.2L217 352l104.5 0c23.7 0 44.8-14.9 52.7-37.2L400.9 240l31.1 0c8.5 0 16.6-3.4 22.6-9.4L477.3 208l66.7 0c17.7 0 32-14.3 32-32l0-80c0-17.7-14.3-32-32-32l-16 0 0-8zM321.4 304L229 304l16-64 105 0-21 58.7c-1.1 3.2-4.2 5.3-7.5 5.3zM80 128l384 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L80 160c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faSquarePhone = {\n prefix: 'fas',\n iconName: 'square-phone',\n icon: [448, 512, [\"phone-square\"], \"f098\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm90.7 96.7c9.7-2.6 19.9 2.3 23.7 11.6l20 48c3.4 8.2 1 17.6-5.8 23.2L168 231.7c16.6 35.2 45.1 63.7 80.3 80.3l20.2-24.7c5.6-6.8 15-9.2 23.2-5.8l48 20c9.3 3.9 14.2 14 11.6 23.7l-12 44C336.9 378 329 384 320 384C196.3 384 96 283.7 96 160c0-9 6-16.9 14.7-19.3l44-12z\"]\n};\nconst faPhoneSquare = faSquarePhone;\nconst faPlus = {\n prefix: 'fas',\n iconName: 'plus',\n icon: [448, 512, [10133, 61543, \"add\"], \"2b\", \"M256 80c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 144L48 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l144 0 0 144c0 17.7 14.3 32 32 32s32-14.3 32-32l0-144 144 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-144 0 0-144z\"]\n};\nconst faAdd = faPlus;\nconst faExpand = {\n prefix: 'fas',\n iconName: 'expand',\n icon: [448, 512, [], \"f065\", \"M32 32C14.3 32 0 46.3 0 64l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32zM64 352c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 96c0 17.7 14.3 32 32 32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-64zM320 32c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0 0 64c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96c0-17.7-14.3-32-32-32l-96 0zM448 352c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c17.7 0 32-14.3 32-32l0-96z\"]\n};\nconst faComputer = {\n prefix: 'fas',\n iconName: 'computer',\n icon: [640, 512, [], \"e4e5\", \"M384 96l0 224L64 320 64 96l320 0zM64 32C28.7 32 0 60.7 0 96L0 320c0 35.3 28.7 64 64 64l117.3 0-10.7 32L96 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-74.7 0-10.7-32L384 384c35.3 0 64-28.7 64-64l0-224c0-35.3-28.7-64-64-64L64 32zm464 0c-26.5 0-48 21.5-48 48l0 352c0 26.5 21.5 48 48 48l64 0c26.5 0 48-21.5 48-48l0-352c0-26.5-21.5-48-48-48l-64 0zm16 64l32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm-16 80c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16zm32 160a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faXmark = {\n prefix: 'fas',\n iconName: 'xmark',\n icon: [384, 512, [128473, 10005, 10006, 10060, 215, \"close\", \"multiply\", \"remove\", \"times\"], \"f00d\", \"M342.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 210.7 86.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L146.7 256 41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 301.3 297.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L237.3 256 342.6 150.6z\"]\n};\nconst faClose = faXmark;\nconst faMultiply = faXmark;\nconst faRemove = faXmark;\nconst faTimes = faXmark;\nconst faArrowsUpDownLeftRight = {\n prefix: 'fas',\n iconName: 'arrows-up-down-left-right',\n icon: [512, 512, [\"arrows\"], \"f047\", \"M278.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l9.4-9.4L224 224l-114.7 0 9.4-9.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-64 64c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-9.4-9.4L224 288l0 114.7-9.4-9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-9.4 9.4L288 288l114.7 0-9.4 9.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l9.4 9.4L288 224l0-114.7 9.4 9.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-64-64z\"]\n};\nconst faArrows = faArrowsUpDownLeftRight;\nconst faChalkboardUser = {\n prefix: 'fas',\n iconName: 'chalkboard-user',\n icon: [640, 512, [\"chalkboard-teacher\"], \"f51c\", \"M160 64c0-35.3 28.7-64 64-64L576 0c35.3 0 64 28.7 64 64l0 288c0 35.3-28.7 64-64 64l-239.2 0c-11.8-25.5-29.9-47.5-52.4-64l99.6 0 0-32c0-17.7 14.3-32 32-32l64 0c17.7 0 32 14.3 32 32l0 32 64 0 0-288L224 64l0 49.1C205.2 102.2 183.3 96 160 96l0-32zm0 64a96 96 0 1 1 0 192 96 96 0 1 1 0-192zM133.3 352l53.3 0C260.3 352 320 411.7 320 485.3c0 14.7-11.9 26.7-26.7 26.7L26.7 512C11.9 512 0 500.1 0 485.3C0 411.7 59.7 352 133.3 352z\"]\n};\nconst faChalkboardTeacher = faChalkboardUser;\nconst faPesoSign = {\n prefix: 'fas',\n iconName: 'peso-sign',\n icon: [384, 512, [], \"e222\", \"M64 32C46.3 32 32 46.3 32 64l0 64c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 32c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 64 0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 80 0c68.4 0 127.7-39 156.8-96l19.2 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-.7 0c.5-5.3 .7-10.6 .7-16s-.2-10.7-.7-16l.7 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-19.2 0C303.7 71 244.4 32 176 32L64 32zm190.4 96L96 128l0-32 80 0c30.5 0 58.2 12.2 78.4 32zM96 192l190.9 0c.7 5.2 1.1 10.6 1.1 16s-.4 10.8-1.1 16L96 224l0-32zm158.4 96c-20.2 19.8-47.9 32-78.4 32l-80 0 0-32 158.4 0z\"]\n};\nconst faBuildingShield = {\n prefix: 'fas',\n iconName: 'building-shield',\n icon: [576, 512, [], \"e4d8\", \"M0 48C0 21.5 21.5 0 48 0L336 0c26.5 0 48 21.5 48 48l0 159-42.4 17L304 224l-32 0c-8.8 0-16 7.2-16 16l0 32 0 24.2 0 7.8c0 .9 .1 1.7 .2 2.6c2.3 58.1 24.1 144.8 98.7 201.5c-5.8 2.5-12.2 3.9-18.9 3.9l-96 0 0-80c0-26.5-21.5-48-48-48s-48 21.5-48 48l0 80-96 0c-26.5 0-48-21.5-48-48L0 48zM80 224c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm80 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM64 112l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16L80 96c-8.8 0-16 7.2-16 16zM176 96c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm80 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM423.1 225.7c5.7-2.3 12.1-2.3 17.8 0l120 48C570 277.4 576 286.2 576 296c0 63.3-25.9 168.8-134.8 214.2c-5.9 2.5-12.6 2.5-18.5 0C313.9 464.8 288 359.3 288 296c0-9.8 6-18.6 15.1-22.3l120-48zM527.4 312L432 273.8l0 187.8c68.2-33 91.5-99 95.4-149.7z\"]\n};\nconst faBaby = {\n prefix: 'fas',\n iconName: 'baby',\n icon: [448, 512, [], \"f77c\", \"M152 88a72 72 0 1 1 144 0A72 72 0 1 1 152 88zM39.7 144.5c13-17.9 38-21.8 55.9-8.8L131.8 162c26.8 19.5 59.1 30 92.2 30s65.4-10.5 92.2-30l36.2-26.4c17.9-13 42.9-9 55.9 8.8s9 42.9-8.8 55.9l-36.2 26.4c-13.6 9.9-28.1 18.2-43.3 25l0 36.3-192 0 0-36.3c-15.2-6.7-29.7-15.1-43.3-25L48.5 200.3c-17.9-13-21.8-38-8.8-55.9zm89.8 184.8l60.6 53-26 37.2 24.3 24.3c15.6 15.6 15.6 40.9 0 56.6s-40.9 15.6-56.6 0l-48-48C70 438.6 68.1 417 79.2 401.1l50.2-71.8zm128.5 53l60.6-53 50.2 71.8c11.1 15.9 9.2 37.5-4.5 51.2l-48 48c-15.6 15.6-40.9 15.6-56.6 0s-15.6-40.9 0-56.6L284 419.4l-26-37.2z\"]\n};\nconst faUsersLine = {\n prefix: 'fas',\n iconName: 'users-line',\n icon: [640, 512, [], \"e592\", \"M211.2 96a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zM32 256c0 17.7 14.3 32 32 32l85.6 0c10.1-39.4 38.6-71.5 75.8-86.6c-9.7-6-21.2-9.4-33.4-9.4l-96 0c-35.3 0-64 28.7-64 64zm461.6 32l82.4 0c17.7 0 32-14.3 32-32c0-35.3-28.7-64-64-64l-96 0c-11.7 0-22.7 3.1-32.1 8.6c38.1 14.8 67.4 47.3 77.7 87.4zM391.2 226.4c-6.9-1.6-14.2-2.4-21.6-2.4l-96 0c-8.5 0-16.7 1.1-24.5 3.1c-30.8 8.1-55.6 31.1-66.1 60.9c-3.5 10-5.5 20.8-5.5 32c0 17.7 14.3 32 32 32l224 0c17.7 0 32-14.3 32-32c0-11.2-1.9-22-5.5-32c-10.8-30.7-36.8-54.2-68.9-61.6zM563.2 96a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zM321.6 192a80 80 0 1 0 0-160 80 80 0 1 0 0 160zM32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l576 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 416z\"]\n};\nconst faQuoteLeft = {\n prefix: 'fas',\n iconName: 'quote-left',\n icon: [448, 512, [8220, \"quote-left-alt\"], \"f10d\", \"M0 216C0 149.7 53.7 96 120 96l8 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-8 0c-30.9 0-56 25.1-56 56l0 8 64 0c35.3 0 64 28.7 64 64l0 64c0 35.3-28.7 64-64 64l-64 0c-35.3 0-64-28.7-64-64l0-32 0-32 0-72zm256 0c0-66.3 53.7-120 120-120l8 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-8 0c-30.9 0-56 25.1-56 56l0 8 64 0c35.3 0 64 28.7 64 64l0 64c0 35.3-28.7 64-64 64l-64 0c-35.3 0-64-28.7-64-64l0-32 0-32 0-72z\"]\n};\nconst faQuoteLeftAlt = faQuoteLeft;\nconst faTractor = {\n prefix: 'fas',\n iconName: 'tractor',\n icon: [640, 512, [128668], \"f722\", \"M96 64c0-35.3 28.7-64 64-64L266.3 0c26.2 0 49.7 15.9 59.4 40.2L373.7 160 480 160l0-33.8c0-24.8 5.8-49.3 16.9-71.6l2.5-5c7.9-15.8 27.1-22.2 42.9-14.3s22.2 27.1 14.3 42.9l-2.5 5c-6.7 13.3-10.1 28-10.1 42.9l0 33.8 56 0c22.1 0 40 17.9 40 40l0 45.4c0 16.5-8.5 31.9-22.6 40.7l-43.3 27.1c-14.2-5.9-29.8-9.2-46.1-9.2c-39.3 0-74.1 18.9-96 48l-80 0c0 17.7-14.3 32-32 32l-8.2 0c-1.7 4.8-3.7 9.5-5.8 14.1l5.8 5.8c12.5 12.5 12.5 32.8 0 45.3l-22.6 22.6c-12.5 12.5-32.8 12.5-45.3 0l-5.8-5.8c-4.6 2.2-9.3 4.1-14.1 5.8l0 8.2c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-8.2c-4.8-1.7-9.5-3.7-14.1-5.8l-5.8 5.8c-12.5 12.5-32.8 12.5-45.3 0L40.2 449.1c-12.5-12.5-12.5-32.8 0-45.3l5.8-5.8c-2.2-4.6-4.1-9.3-5.8-14.1L32 384c-17.7 0-32-14.3-32-32l0-32c0-17.7 14.3-32 32-32l8.2 0c1.7-4.8 3.7-9.5 5.8-14.1l-5.8-5.8c-12.5-12.5-12.5-32.8 0-45.3l22.6-22.6c9-9 21.9-11.5 33.1-7.6l0-.6 0-32 0-96zm170.3 0L160 64l0 96 32 0 112.7 0L266.3 64zM176 256a80 80 0 1 0 0 160 80 80 0 1 0 0-160zM528 448a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0 64c-48.6 0-88-39.4-88-88c0-29.8 14.8-56.1 37.4-72c14.3-10.1 31.8-16 50.6-16c2.7 0 5.3 .1 7.9 .3c44.9 4 80.1 41.7 80.1 87.7c0 48.6-39.4 88-88 88z\"]\n};\nconst faTrashArrowUp = {\n prefix: 'fas',\n iconName: 'trash-arrow-up',\n icon: [448, 512, [\"trash-restore\"], \"f829\", \"M163.8 0L284.2 0c12.1 0 23.2 6.8 28.6 17.7L320 32l96 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64S14.3 32 32 32l96 0 7.2-14.3C140.6 6.8 151.7 0 163.8 0zM32 128l384 0L394.8 467c-1.6 25.3-22.6 45-47.9 45l-245.8 0c-25.3 0-46.3-19.7-47.9-45L32 128zm192 64c-6.4 0-12.5 2.5-17 7l-80 80c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l39-39L200 408c0 13.3 10.7 24 24 24s24-10.7 24-24l0-134.1 39 39c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-80-80c-4.5-4.5-10.6-7-17-7z\"]\n};\nconst faTrashRestore = faTrashArrowUp;\nconst faArrowDownUpLock = {\n prefix: 'fas',\n iconName: 'arrow-down-up-lock',\n icon: [640, 512, [], \"e4b0\", \"M150.6 502.6l96-96c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L160 402.7 160 288l256 0 0-16c0-17.2 3.9-33.5 10.8-48L352 224l0-114.7 41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96c-6-6-14.1-9.4-22.6-9.4s-16.6 3.4-22.6 9.4l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L288 109.3 288 224l-128 0-64 0-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0 0 114.7L54.6 361.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0zM160 192l0-128c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 128 64 0zM288 320l0 128c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128-64 0zm240-80c17.7 0 32 14.3 32 32l0 48-64 0 0-48c0-17.7 14.3-32 32-32zm-80 32l0 48c-17.7 0-32 14.3-32 32l0 128c0 17.7 14.3 32 32 32l160 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32l0-48c0-44.2-35.8-80-80-80s-80 35.8-80 80z\"]\n};\nconst faLinesLeaning = {\n prefix: 'fas',\n iconName: 'lines-leaning',\n icon: [384, 512, [], \"e51e\", \"M190.4 74.1c5.6-16.8-3.5-34.9-20.2-40.5s-34.9 3.5-40.5 20.2l-128 384c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l128-384zm70.9-41.7c-17.4-2.9-33.9 8.9-36.8 26.3l-64 384c-2.9 17.4 8.9 33.9 26.3 36.8s33.9-8.9 36.8-26.3l64-384c2.9-17.4-8.9-33.9-26.3-36.8zM352 32c-17.7 0-32 14.3-32 32l0 384c0 17.7 14.3 32 32 32s32-14.3 32-32l0-384c0-17.7-14.3-32-32-32z\"]\n};\nconst faRulerCombined = {\n prefix: 'fas',\n iconName: 'ruler-combined',\n icon: [512, 512, [], \"f546\", \"M.2 468.9C2.7 493.1 23.1 512 48 512l96 0 320 0c26.5 0 48-21.5 48-48l0-96c0-26.5-21.5-48-48-48l-48 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-64 0 0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-64-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-64-80 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l80 0 0-48c0-26.5-21.5-48-48-48L48 0C21.5 0 0 21.5 0 48L0 368l0 96c0 1.7 .1 3.3 .2 4.9z\"]\n};\nconst faCopyright = {\n prefix: 'fas',\n iconName: 'copyright',\n icon: [512, 512, [169], \"f1f9\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM199.4 312.6c31.2 31.2 81.9 31.2 113.1 0c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9c-50 50-131 50-181 0s-50-131 0-181s131-50 181 0c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0c-31.2-31.2-81.9-31.2-113.1 0s-31.2 81.9 0 113.1z\"]\n};\nconst faEquals = {\n prefix: 'fas',\n iconName: 'equals',\n icon: [448, 512, [62764], \"3d\", \"M48 128c-17.7 0-32 14.3-32 32s14.3 32 32 32l352 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L48 128zm0 192c-17.7 0-32 14.3-32 32s14.3 32 32 32l352 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L48 320z\"]\n};\nconst faBlender = {\n prefix: 'fas',\n iconName: 'blender',\n icon: [512, 512, [], \"f517\", \"M0 64C0 28.7 28.7 0 64 0l64 0 32 0L470.1 0c21.1 0 36.4 20.1 30.9 40.4L494.5 64 336 64c-8.8 0-16 7.2-16 16s7.2 16 16 16l149.8 0-17.5 64L336 160c-8.8 0-16 7.2-16 16s7.2 16 16 16l123.6 0-17.5 64L336 256c-8.8 0-16 7.2-16 16s7.2 16 16 16l97.5 0L416 352l-256 0-8.7-96L64 256c-35.3 0-64-28.7-64-64L0 64zM145.5 192L133.8 64 64 64l0 128 81.5 0zM144 384l288 0c26.5 0 48 21.5 48 48l0 32c0 26.5-21.5 48-48 48l-288 0c-26.5 0-48-21.5-48-48l0-32c0-26.5 21.5-48 48-48zm144 96a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faTeeth = {\n prefix: 'fas',\n iconName: 'teeth',\n icon: [576, 512, [], \"f62e\", \"M0 128C0 75 43 32 96 32l384 0c53 0 96 43 96 96l0 256c0 53-43 96-96 96L96 480c-53 0-96-43-96-96L0 128zm176 48l0 56c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24l0-56c0-26.5-21.5-48-48-48s-48 21.5-48 48zm176-48c-26.5 0-48 21.5-48 48l0 56c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24l0-56c0-26.5-21.5-48-48-48zM48 208l0 24c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24l0-24c0-26.5-21.5-48-48-48s-48 21.5-48 48zM96 384c26.5 0 48-21.5 48-48l0-24c0-13.3-10.7-24-24-24l-48 0c-13.3 0-24 10.7-24 24l0 24c0 26.5 21.5 48 48 48zm80-48c0 26.5 21.5 48 48 48s48-21.5 48-48l0-24c0-13.3-10.7-24-24-24l-48 0c-13.3 0-24 10.7-24 24l0 24zm176 48c26.5 0 48-21.5 48-48l0-24c0-13.3-10.7-24-24-24l-48 0c-13.3 0-24 10.7-24 24l0 24c0 26.5 21.5 48 48 48zm80-176l0 24c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24l0-24c0-26.5-21.5-48-48-48s-48 21.5-48 48zm48 176c26.5 0 48-21.5 48-48l0-24c0-13.3-10.7-24-24-24l-48 0c-13.3 0-24 10.7-24 24l0 24c0 26.5 21.5 48 48 48z\"]\n};\nconst faShekelSign = {\n prefix: 'fas',\n iconName: 'shekel-sign',\n icon: [448, 512, [8362, \"ils\", \"shekel\", \"sheqel\", \"sheqel-sign\"], \"f20b\", \"M32 32C14.3 32 0 46.3 0 64L0 448c0 17.7 14.3 32 32 32s32-14.3 32-32L64 96l128 0c35.3 0 64 28.7 64 64l0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160c0-70.7-57.3-128-128-128L32 32zM320 480c70.7 0 128-57.3 128-128l0-288c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 288c0 35.3-28.7 64-64 64l-128 0 0-224c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 256c0 17.7 14.3 32 32 32l160 0z\"]\n};\nconst faIls = faShekelSign;\nconst faShekel = faShekelSign;\nconst faSheqel = faShekelSign;\nconst faSheqelSign = faShekelSign;\nconst faMap = {\n prefix: 'fas',\n iconName: 'map',\n icon: [576, 512, [128506, 62072], \"f279\", \"M384 476.1L192 421.2l0-385.3L384 90.8l0 385.3zm32-1.2l0-386.5L543.1 37.5c15.8-6.3 32.9 5.3 32.9 22.3l0 334.8c0 9.8-6 18.6-15.1 22.3L416 474.8zM15.1 95.1L160 37.2l0 386.5L32.9 474.5C17.1 480.8 0 469.2 0 452.2L0 117.4c0-9.8 6-18.6 15.1-22.3z\"]\n};\nconst faRocket = {\n prefix: 'fas',\n iconName: 'rocket',\n icon: [512, 512, [], \"f135\", \"M156.6 384.9L125.7 354c-8.5-8.5-11.5-20.8-7.7-32.2c3-8.9 7-20.5 11.8-33.8L24 288c-8.6 0-16.6-4.6-20.9-12.1s-4.2-16.7 .2-24.1l52.5-88.5c13-21.9 36.5-35.3 61.9-35.3l82.3 0c2.4-4 4.8-7.7 7.2-11.3C289.1-4.1 411.1-8.1 483.9 5.3c11.6 2.1 20.6 11.2 22.8 22.8c13.4 72.9 9.3 194.8-111.4 276.7c-3.5 2.4-7.3 4.8-11.3 7.2l0 82.3c0 25.4-13.4 49-35.3 61.9l-88.5 52.5c-7.4 4.4-16.6 4.5-24.1 .2s-12.1-12.2-12.1-20.9l0-107.2c-14.1 4.9-26.4 8.9-35.7 11.9c-11.2 3.6-23.4 .5-31.8-7.8zM384 168a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n};\nconst faPhotoFilm = {\n prefix: 'fas',\n iconName: 'photo-film',\n icon: [640, 512, [\"photo-video\"], \"f87c\", \"M256 0L576 0c35.3 0 64 28.7 64 64l0 224c0 35.3-28.7 64-64 64l-320 0c-35.3 0-64-28.7-64-64l0-224c0-35.3 28.7-64 64-64zM476 106.7C471.5 100 464 96 456 96s-15.5 4-20 10.7l-56 84L362.7 169c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6l80 0 48 0 144 0c8.9 0 17-4.9 21.2-12.7s3.7-17.3-1.2-24.6l-96-144zM336 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM64 128l96 0 0 256 0 32c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-32 160 0 0 64c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 192c0-35.3 28.7-64 64-64zm8 64c-8.8 0-16 7.2-16 16l0 16c0 8.8 7.2 16 16 16l16 0c8.8 0 16-7.2 16-16l0-16c0-8.8-7.2-16-16-16l-16 0zm0 104c-8.8 0-16 7.2-16 16l0 16c0 8.8 7.2 16 16 16l16 0c8.8 0 16-7.2 16-16l0-16c0-8.8-7.2-16-16-16l-16 0zm0 104c-8.8 0-16 7.2-16 16l0 16c0 8.8 7.2 16 16 16l16 0c8.8 0 16-7.2 16-16l0-16c0-8.8-7.2-16-16-16l-16 0zm336 16l0 16c0 8.8 7.2 16 16 16l16 0c8.8 0 16-7.2 16-16l0-16c0-8.8-7.2-16-16-16l-16 0c-8.8 0-16 7.2-16 16z\"]\n};\nconst faPhotoVideo = faPhotoFilm;\nconst faFolderMinus = {\n prefix: 'fas',\n iconName: 'folder-minus',\n icon: [512, 512, [], \"f65d\", \"M448 480L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l128 0c20.1 0 39.1 9.5 51.2 25.6l19.2 25.6c6 8.1 15.5 12.8 25.6 12.8l160 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64zM184 272c-13.3 0-24 10.7-24 24s10.7 24 24 24l144 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-144 0z\"]\n};\nconst faStore = {\n prefix: 'fas',\n iconName: 'store',\n icon: [576, 512, [], \"f54e\", \"M547.6 103.8L490.3 13.1C485.2 5 476.1 0 466.4 0L109.6 0C99.9 0 90.8 5 85.7 13.1L28.3 103.8c-29.6 46.8-3.4 111.9 51.9 119.4c4 .5 8.1 .8 12.1 .8c26.1 0 49.3-11.4 65.2-29c15.9 17.6 39.1 29 65.2 29c26.1 0 49.3-11.4 65.2-29c15.9 17.6 39.1 29 65.2 29c26.2 0 49.3-11.4 65.2-29c16 17.6 39.1 29 65.2 29c4.1 0 8.1-.3 12.1-.8c55.5-7.4 81.8-72.5 52.1-119.4zM499.7 254.9c0 0 0 0-.1 0c-5.3 .7-10.7 1.1-16.2 1.1c-12.4 0-24.3-1.9-35.4-5.3L448 384l-320 0 0-133.4c-11.2 3.5-23.2 5.4-35.6 5.4c-5.5 0-11-.4-16.3-1.1l-.1 0c-4.1-.6-8.1-1.3-12-2.3L64 384l0 64c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-64 0-131.4c-4 1-8 1.8-12.3 2.3z\"]\n};\nconst faArrowTrendUp = {\n prefix: 'fas',\n iconName: 'arrow-trend-up',\n icon: [576, 512, [], \"e098\", \"M384 160c-17.7 0-32-14.3-32-32s14.3-32 32-32l160 0c17.7 0 32 14.3 32 32l0 160c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-82.7L342.6 374.6c-12.5 12.5-32.8 12.5-45.3 0L192 269.3 54.6 406.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l160-160c12.5-12.5 32.8-12.5 45.3 0L320 306.7 466.7 160 384 160z\"]\n};\nconst faPlugCircleMinus = {\n prefix: 'fas',\n iconName: 'plug-circle-minus',\n icon: [576, 512, [], \"e55e\", \"M96 0C78.3 0 64 14.3 64 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 32c0 77.4 55 142 128 156.8l0 67.2c0 17.7 14.3 32 32 32s32-14.3 32-32l0-67.2c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32L32 160zM576 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-64 0c0 8.8-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l128 0c8.8 0 16 7.2 16 16z\"]\n};\nconst faSignHanging = {\n prefix: 'fas',\n iconName: 'sign-hanging',\n icon: [512, 512, [\"sign\"], \"f4d9\", \"M96 0c17.7 0 32 14.3 32 32l0 32 352 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-352 0 0 352c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-352-32 0C14.3 128 0 113.7 0 96S14.3 64 32 64l32 0 0-32C64 14.3 78.3 0 96 0zm96 160l256 0c17.7 0 32 14.3 32 32l0 160c0 17.7-14.3 32-32 32l-256 0c-17.7 0-32-14.3-32-32l0-160c0-17.7 14.3-32 32-32z\"]\n};\nconst faSign = faSignHanging;\nconst faBezierCurve = {\n prefix: 'fas',\n iconName: 'bezier-curve',\n icon: [640, 512, [], \"f55b\", \"M296 136l0-48 48 0 0 48-48 0zM288 32c-26.5 0-48 21.5-48 48l0 4L121.6 84C111.2 62.7 89.3 48 64 48C28.7 48 0 76.7 0 112s28.7 64 64 64c25.3 0 47.2-14.7 57.6-36l66.9 0c-58.9 39.6-98.9 105-104 180L80 320c-26.5 0-48 21.5-48 48l0 64c0 26.5 21.5 48 48 48l64 0c26.5 0 48-21.5 48-48l0-64c0-26.5-21.5-48-48-48l-3.3 0c5.9-67 48.5-123.4 107.5-149.1c8.6 12.7 23.2 21.1 39.8 21.1l64 0c16.6 0 31.1-8.4 39.8-21.1c59 25.7 101.6 82.1 107.5 149.1l-3.3 0c-26.5 0-48 21.5-48 48l0 64c0 26.5 21.5 48 48 48l64 0c26.5 0 48-21.5 48-48l0-64c0-26.5-21.5-48-48-48l-4.5 0c-5-75-45.1-140.4-104-180l66.9 0c10.4 21.3 32.3 36 57.6 36c35.3 0 64-28.7 64-64s-28.7-64-64-64c-25.3 0-47.2 14.7-57.6 36L400 84l0-4c0-26.5-21.5-48-48-48l-64 0zM88 376l48 0 0 48-48 0 0-48zm416 48l0-48 48 0 0 48-48 0z\"]\n};\nconst faBellSlash = {\n prefix: 'fas',\n iconName: 'bell-slash',\n icon: [640, 512, [128277, 61943], \"f1f6\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-90.2-70.7c.2-.4 .4-.9 .6-1.3c5.2-11.5 3.1-25-5.3-34.4l-7.4-8.3C497.3 319.2 480 273.9 480 226.8l0-18.8c0-77.4-55-142-128-156.8L352 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 19.2c-42.6 8.6-79 34.2-102 69.3L38.8 5.1zM406.2 416L160 222.1l0 4.8c0 47-17.3 92.4-48.5 127.6l-7.4 8.3c-8.4 9.4-10.4 22.9-5.3 34.4S115.4 416 128 416l278.2 0zm-40.9 77.3c12-12 18.7-28.3 18.7-45.3l-64 0-64 0c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7z\"]\n};\nconst faTablet = {\n prefix: 'fas',\n iconName: 'tablet',\n icon: [448, 512, [\"tablet-android\"], \"f3fb\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64L64 0zM176 432l96 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-96 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faTabletAndroid = faTablet;\nconst faSchoolFlag = {\n prefix: 'fas',\n iconName: 'school-flag',\n icon: [576, 512, [], \"e56e\", \"M288 0L400 0c8.8 0 16 7.2 16 16l0 64c0 8.8-7.2 16-16 16l-79.3 0 89.6 64L512 160c35.3 0 64 28.7 64 64l0 224c0 35.3-28.7 64-64 64l-176 0 0-112c0-26.5-21.5-48-48-48s-48 21.5-48 48l0 112L64 512c-35.3 0-64-28.7-64-64L0 224c0-35.3 28.7-64 64-64l101.7 0L256 95.5 256 32c0-17.7 14.3-32 32-32zm48 240a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM80 224c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-32 0zm368 16l0 64c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM80 352c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-32 0zm384 0c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-32 0z\"]\n};\nconst faFill = {\n prefix: 'fas',\n iconName: 'fill',\n icon: [512, 512, [], \"f575\", \"M86.6 9.4C74.1-3.1 53.9-3.1 41.4 9.4s-12.5 32.8 0 45.3L122.7 136 30.6 228.1c-37.5 37.5-37.5 98.3 0 135.8L148.1 481.4c37.5 37.5 98.3 37.5 135.8 0L474.3 290.9c28.1-28.1 28.1-73.7 0-101.8L322.9 37.7c-28.1-28.1-73.7-28.1-101.8 0L168 90.7 86.6 9.4zM168 181.3l49.4 49.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L213.3 136l53.1-53.1c3.1-3.1 8.2-3.1 11.3 0L429.1 234.3c3.1 3.1 3.1 8.2 0 11.3L386.7 288 67.5 288c1.4-5.4 4.2-10.4 8.4-14.6L168 181.3z\"]\n};\nconst faAngleUp = {\n prefix: 'fas',\n iconName: 'angle-up',\n icon: [448, 512, [8963], \"f106\", \"M201.4 137.4c12.5-12.5 32.8-12.5 45.3 0l160 160c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L224 205.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l160-160z\"]\n};\nconst faDrumstickBite = {\n prefix: 'fas',\n iconName: 'drumstick-bite',\n icon: [512, 512, [], \"f6d7\", \"M160 265.2c0 8.5-3.4 16.6-9.4 22.6l-26.8 26.8c-12.3 12.3-32.5 11.4-49.4 7.2C69.8 320.6 65 320 60 320c-33.1 0-60 26.9-60 60s26.9 60 60 60c6.3 0 12 5.7 12 12c0 33.1 26.9 60 60 60s60-26.9 60-60c0-5-.6-9.8-1.8-14.5c-4.2-16.9-5.2-37.1 7.2-49.4l26.8-26.8c6-6 14.1-9.4 22.6-9.4l89.2 0c6.3 0 12.4-.3 18.5-1c11.9-1.2 16.4-15.5 10.8-26c-8.5-15.8-13.3-33.8-13.3-53c0-61.9 50.1-112 112-112c8 0 15.7 .8 23.2 2.4c11.7 2.5 24.1-5.9 22-17.6C494.5 62.5 422.5 0 336 0C238.8 0 160 78.8 160 176l0 89.2z\"]\n};\nconst faHollyBerry = {\n prefix: 'fas',\n iconName: 'holly-berry',\n icon: [512, 512, [], \"f7aa\", \"M256 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-80 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM276.8 383.8c1 .1 2.1 .2 3.2 .2c39.8 0 72 32.2 72 72l0 22.7c0 16.4 16 27.9 31.6 22.8l12.8-4.3c18-6 37.3-6.5 55.6-1.5l19.4 5.3c17.9 4.9 34.4-11.6 29.5-29.5L495.6 452c-5-18.3-4.4-37.6 1.5-55.6l4.3-12.8c5.2-15.5-6.4-31.6-22.8-31.6c-34.6 0-62.7-28.1-62.7-62.7l0-32c0-16.4-16-27.9-31.6-22.8l-12.8 4.3c-18 6-37.3 6.5-55.6 1.5l-29.6-8.1c-2.9-.8-5.9-1-8.7-.7c4.2 9.7 5.8 20.8 3.7 32.3L275 298.7c-1.5 8.4-1.4 17 .5 25.3l5.3 23.9c2.8 12.7 1.1 25.2-4 35.9zM127.6 234.5c-15.5-5.2-31.6 6.4-31.6 22.8l0 32C96 323.9 67.9 352 33.3 352c-16.4 0-27.9 16-22.8 31.6l4.3 12.8c6 18 6.5 37.3 1.5 55.6l-5.3 19.4C6.2 489.4 22.6 505.8 40.5 501L60 495.6c18.3-5 37.6-4.5 55.6 1.5l12.8 4.3c15.5 5.2 31.6-6.4 31.6-22.8l0-32c0-34.6 28.1-62.7 62.7-62.7c16.4 0 27.9-16 22.8-31.6l-4.3-12.8c-6-18-6.5-37.3-1.5-55.6l5.3-19.4c4.9-17.9-11.6-34.4-29.5-29.5L196 240.4c-18.3 5-37.6 4.4-55.6-1.5l-12.8-4.3zM384 144a48 48 0 1 0 -96 0 48 48 0 1 0 96 0z\"]\n};\nconst faChevronLeft = {\n prefix: 'fas',\n iconName: 'chevron-left',\n icon: [320, 512, [9001], \"f053\", \"M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l192 192c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256 246.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-192 192z\"]\n};\nconst faBacteria = {\n prefix: 'fas',\n iconName: 'bacteria',\n icon: [640, 512, [], \"e059\", \"M304.9 .7c-9.6-2.7-19.5 2.8-22.3 12.4l-4.3 15.2c-8.3-.6-16.8 0-25.2 1.9c-7.3 1.7-14.3 3.5-21.1 5.5l-5.5-12.7c-3.9-9.1-14.5-13.4-23.6-9.5s-13.4 14.5-9.5 23.6l4.4 10.4c-16.6 6.7-31.7 14.4-45.4 22.8L147 62c-5.5-8.3-16.7-10.5-25-5s-10.5 16.7-5 25l6 9c-13.7 11-25.5 22.8-35.8 34.9l-10-8c-7.8-6.2-19.1-5-25.3 2.8s-5 19.1 2.8 25.3L65.9 155c-1.8 2.8-3.5 5.7-5.1 8.5c-6.6 11.4-11.8 22.6-16 33l-8-3.2c-9.2-3.7-19.7 .8-23.4 10s.8 19.7 10 23.4l10.4 4.2c-.2 .8-.4 1.5-.5 2.3c-2.2 9.3-3.4 17.3-4.1 23.4c-.4 3.1-.6 5.7-.8 7.8c-.1 1.1-.1 2-.2 2.8l-.1 1.1 0 .5 0 .2 0 .1c0 0 0 .1 29.1 1c0 0 0 0-.1 0L28 269.3c-.1 3.1 0 6.1 .2 9.1l-15.2 4.3C3.5 285.4-2 295.4 .7 304.9s12.7 15.1 22.3 12.4l15.6-4.5c7.6 13.6 18.9 25 32.6 32.6L66.7 361c-2.7 9.6 2.8 19.5 12.4 22.3s19.5-2.8 22.3-12.4l4.3-15.2c1.2 .1 2.4 .2 3.6 .2c15.6 .5 30.3-3.3 43-10.2l9 9c7 7 18.4 7 25.5 0s7-18.4 0-25.5l-7.2-7.2c9.3-12.6 15.2-27.8 16.3-44.5l7.1 3c9.1 3.9 19.7-.3 23.6-9.5s-.3-19.7-9.5-23.6l-8.6-3.7c6.4-9.9 17.3-22.4 36.9-33.3l1.3 4.4c2.7 9.6 12.7 15.1 22.3 12.4s15.1-12.7 12.4-22.3l-2.3-8.1c3.8-1.1 7.7-2.1 11.9-3.1c11.6-2.7 22.1-7.7 31.1-14.4l7.2 7.2c7 7 18.4 7 25.5 0s7-18.4 0-25.5l-9-9c7.6-13.9 11.3-30.1 10.1-46.6l15.2-4.3c9.6-2.7 15.1-12.7 12.4-22.3S370.6 64 361 66.7l-15.6 4.5c-7.7-13.9-19.1-25.1-32.6-32.6l4.5-15.6c2.7-9.6-2.8-19.5-12.4-22.3zM112 272l-48-1.5c0 0 0 0 0 0c11.7 .4 27.3 .9 48 1.6zm16-80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm64-48a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM322.7 489c-2.7 9.6 2.8 19.5 12.4 22.3s19.5-2.8 22.2-12.4l4.3-15.2c8.3 .6 16.8 0 25.2-1.9c7.3-1.7 14.3-3.5 21.1-5.5l5.5 12.7c3.9 9.1 14.5 13.4 23.6 9.5s13.4-14.5 9.5-23.6l-4.4-10.4c16.6-6.7 31.7-14.4 45.4-22.8L493 450c5.5 8.3 16.7 10.5 25 5s10.5-16.7 5-25l-6-9c13.7-11 25.5-22.8 35.8-34.9l10 8c7.8 6.2 19.1 5 25.3-2.8s5-19.1-2.8-25.3L574.1 357c1.8-2.8 3.5-5.7 5.1-8.5c6.6-11.4 11.8-22.6 16-33l8 3.2c9.2 3.7 19.7-.8 23.4-10s-.8-19.7-10-23.4l-10.4-4.2c.2-.8 .4-1.5 .5-2.3c2.2-9.3 3.4-17.3 4.1-23.4c.4-3.1 .6-5.7 .8-7.8c.1-1.1 .1-2 .2-2.8l.1-1.1 0-.5 0-.2 0-.1c0 0 0-.1-29.1-1c0 0 0 0 .1 0l29.1 .9c.1-3.1 0-6.1-.2-9.1l15.2-4.3c9.6-2.7 15.1-12.7 12.4-22.3s-12.7-15.1-22.3-12.4l-15.6 4.5c-7.6-13.6-18.9-25-32.6-32.6l4.5-15.6c2.7-9.6-2.8-19.5-12.4-22.3s-19.5 2.8-22.3 12.4l-4.3 15.2c-1.2-.1-2.4-.2-3.6-.2c-15.6-.5-30.3 3.3-43 10.2l-9-9c-7-7-18.4-7-25.5 0s-7 18.4 0 25.5l7.2 7.2c-9.3 12.6-15.2 27.8-16.3 44.5l-7.1-3c-9.1-3.9-19.7 .3-23.6 9.5s.3 19.7 9.5 23.6l8.6 3.7c-6.4 9.9-17.3 22.4-36.9 33.3l-1.3-4.4c-2.7-9.6-12.7-15.1-22.3-12.4s-15.1 12.7-12.4 22.3l2.3 8.1c-3.8 1.1-7.7 2.1-11.9 3.1c-11.6 2.7-22.1 7.7-31.1 14.4l-7.2-7.2c-7-7-18.4-7-25.5 0s-7 18.4 0 25.5l9 9c-7.6 13.9-11.3 30.1-10.1 46.6l-15.2 4.3c-9.6 2.7-15.1 12.7-12.4 22.2s12.7 15.1 22.3 12.4l15.6-4.5c7.7 13.9 19.1 25.1 32.6 32.6L322.7 489zM576 241.5c0 0 0 0 0 0c-11.7-.4-27.3-.9-48-1.6l48 1.5zM448 384a32 32 0 1 1 -64 0 32 32 0 1 1 64 0z\"]\n};\nconst faHandLizard = {\n prefix: 'fas',\n iconName: 'hand-lizard',\n icon: [512, 512, [], \"f258\", \"M0 112C0 85.5 21.5 64 48 64l112 0 80 0 46.5 0c36.8 0 71.2 18 92.1 48.2l113.5 164c13 18.7 19.9 41 19.9 63.8l0 12 0 16 0 48c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32l0-13.8L273.9 352 240 352l-80 0-48 0c-26.5 0-48-21.5-48-48s21.5-48 48-48l48 0 80 0c26.5 0 48-21.5 48-48s-21.5-48-48-48l-80 0L48 160c-26.5 0-48-21.5-48-48z\"]\n};\nconst faNotdef = {\n prefix: 'fas',\n iconName: 'notdef',\n icon: [384, 512, [], \"e1fe\", \"M64 390.3L153.5 256 64 121.7l0 268.6zM102.5 448l179.1 0L192 313.7 102.5 448zm128-192L320 390.3l0-268.6L230.5 256zM281.5 64L102.5 64 192 198.3 281.5 64zM0 48C0 21.5 21.5 0 48 0L336 0c26.5 0 48 21.5 48 48l0 416c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 48z\"]\n};\nconst faDisease = {\n prefix: 'fas',\n iconName: 'disease',\n icon: [512, 512, [], \"f7fa\", \"M236.4 61.4L227 75.5c-21.3 32-59.4 48.5-97.3 42.1l-59.6-9.9C33.4 101.6 0 129.9 .1 167.1c0 15.9 6.4 31.2 17.6 42.5l29.2 29.2c11 11 17.2 25.9 17.2 41.5c0 15.8-6.4 30.9-17.7 42L33.3 335.1C22.2 345.9 16 360.7 16 376.2c0 36.8 34.1 64.2 70.1 56.2l62.3-13.8c7.7-1.7 15.7-2.6 23.6-2.6l10 0c27.2 0 53.7 9.3 75 26.3L287.8 467c10.5 8.4 23.6 13 37 13c32.7 0 59.3-26.5 59.3-59.3l0-25.2c0-34.9 21.4-66.2 53.9-78.8l36.9-14.3c22.4-8.7 37.2-30.3 37.2-54.3c0-28.1-20.1-52.3-47.8-57.3l-28-5.1c-36.5-6.7-65.4-34.5-73.6-70.7l-7.1-31.5C348.9 53.4 322.1 32 291.3 32c-22 0-42.6 11-54.9 29.4zM160 192a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm0 80a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faBriefcaseMedical = {\n prefix: 'fas',\n iconName: 'briefcase-medical',\n icon: [512, 512, [], \"f469\", \"M184 48l144 0c4.4 0 8 3.6 8 8l0 40L176 96l0-40c0-4.4 3.6-8 8-8zm-56 8l0 40L64 96C28.7 96 0 124.7 0 160L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64l-64 0 0-40c0-30.9-25.1-56-56-56L184 0c-30.9 0-56 25.1-56 56zm96 152c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 48 48 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-48 0 0 48c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-48-48 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l48 0 0-48z\"]\n};\nconst faGenderless = {\n prefix: 'fas',\n iconName: 'genderless',\n icon: [384, 512, [], \"f22d\", \"M192 144a112 112 0 1 1 0 224 112 112 0 1 1 0-224zm0 288a176 176 0 1 0 0-352 176 176 0 1 0 0 352z\"]\n};\nconst faChevronRight = {\n prefix: 'fas',\n iconName: 'chevron-right',\n icon: [320, 512, [9002], \"f054\", \"M310.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 256 73.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z\"]\n};\nconst faRetweet = {\n prefix: 'fas',\n iconName: 'retweet',\n icon: [576, 512, [], \"f079\", \"M272 416c17.7 0 32-14.3 32-32s-14.3-32-32-32l-112 0c-17.7 0-32-14.3-32-32l0-128 32 0c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-64-64c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8l32 0 0 128c0 53 43 96 96 96l112 0zM304 96c-17.7 0-32 14.3-32 32s14.3 32 32 32l112 0c17.7 0 32 14.3 32 32l0 128-32 0c-12.9 0-24.6 7.8-29.6 19.8s-2.2 25.7 6.9 34.9l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8l-32 0 0-128c0-53-43-96-96-96L304 96z\"]\n};\nconst faCarRear = {\n prefix: 'fas',\n iconName: 'car-rear',\n icon: [512, 512, [\"car-alt\"], \"f5de\", \"M165.4 96l181.2 0c13.6 0 25.7 8.6 30.2 21.4L402.9 192l-293.8 0 26.1-74.6c4.5-12.8 16.6-21.4 30.2-21.4zm-90.6 .3L39.6 196.8C16.4 206.4 0 229.3 0 256l0 80c0 23.7 12.9 44.4 32 55.4L32 448c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-48 256 0 0 48c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-56.6c19.1-11.1 32-31.7 32-55.4l0-80c0-26.7-16.4-49.6-39.6-59.2L437.2 96.3C423.7 57.8 387.4 32 346.6 32L165.4 32c-40.8 0-77.1 25.8-90.6 64.3zM208 272l96 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-96 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zM48 280c0-13.3 10.7-24 24-24l32 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-32 0c-13.3 0-24-10.7-24-24zm360-24l32 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-32 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z\"]\n};\nconst faCarAlt = faCarRear;\nconst faPumpSoap = {\n prefix: 'fas',\n iconName: 'pump-soap',\n icon: [448, 512, [], \"e06b\", \"M128 32l0 96 128 0 0-32 60.1 0c4.2 0 8.3 1.7 11.3 4.7l33.9 33.9c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L372.7 55.4c-15-15-35.4-23.4-56.6-23.4L256 32c0-17.7-14.3-32-32-32L160 0c-17.7 0-32 14.3-32 32zM117.4 160c-33.3 0-61 25.5-63.8 58.7L35 442.7C31.9 480 61.3 512 98.8 512l186.4 0c37.4 0 66.9-32 63.8-69.3l-18.7-224c-2.8-33.2-30.5-58.7-63.8-58.7l-149.1 0zM256 360c0 35.3-28.7 56-64 56s-64-20.7-64-56c0-32.5 37-80.9 50.9-97.9c3.2-3.9 8.1-6.1 13.1-6.1s9.9 2.2 13.1 6.1C219 279.1 256 327.5 256 360z\"]\n};\nconst faVideoSlash = {\n prefix: 'fas',\n iconName: 'video-slash',\n icon: [640, 512, [], \"f4e2\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7l-86.4-67.7 13.8 9.2c9.8 6.5 22.4 7.2 32.9 1.6s16.9-16.4 16.9-28.2l0-256c0-11.8-6.5-22.6-16.9-28.2s-23-5-32.9 1.6l-96 64L448 174.9l0 17.1 0 128 0 5.8-32-25.1L416 128c0-35.3-28.7-64-64-64L113.9 64 38.8 5.1zM407 416.7L32.3 121.5c-.2 2.1-.3 4.3-.3 6.5l0 256c0 35.3 28.7 64 64 64l256 0c23.4 0 43.9-12.6 55-31.3z\"]\n};\nconst faBatteryQuarter = {\n prefix: 'fas',\n iconName: 'battery-quarter',\n icon: [576, 512, [\"battery-2\"], \"f243\", \"M464 160c8.8 0 16 7.2 16 16l0 160c0 8.8-7.2 16-16 16L80 352c-8.8 0-16-7.2-16-16l0-160c0-8.8 7.2-16 16-16l384 0zM80 96C35.8 96 0 131.8 0 176L0 336c0 44.2 35.8 80 80 80l384 0c44.2 0 80-35.8 80-80l0-16c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l0-16c0-44.2-35.8-80-80-80L80 96zm112 96l-96 0 0 128 96 0 0-128z\"]\n};\nconst faBattery2 = faBatteryQuarter;\nconst faRadio = {\n prefix: 'fas',\n iconName: 'radio',\n icon: [512, 512, [128251], \"f8d7\", \"M494.8 47c12.7-3.7 20-17.1 16.3-29.8S494-2.8 481.2 1L51.7 126.9c-9.4 2.7-17.9 7.3-25.1 13.2C10.5 151.7 0 170.6 0 192l0 4L0 304 0 448c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64l-229.5 0L494.8 47zM368 240a80 80 0 1 1 0 160 80 80 0 1 1 0-160zM80 256c0-8.8 7.2-16 16-16l96 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-96 0c-8.8 0-16-7.2-16-16zM64 320c0-8.8 7.2-16 16-16l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L80 336c-8.8 0-16-7.2-16-16zm16 64c0-8.8 7.2-16 16-16l96 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-96 0c-8.8 0-16-7.2-16-16z\"]\n};\nconst faBabyCarriage = {\n prefix: 'fas',\n iconName: 'baby-carriage',\n icon: [512, 512, [\"carriage-baby\"], \"f77d\", \"M256 192L.1 192C2.7 117.9 41.3 52.9 99 14.1c13.3-8.9 30.8-4.3 39.9 8.8L256 192zm128-32c0-35.3 28.7-64 64-64l32 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0 0 64c0 25.2-5.8 50.2-17 73.5s-27.8 44.5-48.6 62.3s-45.5 32-72.7 41.6S253.4 416 224 416s-58.5-5-85.7-14.6s-51.9-23.8-72.7-41.6s-37.3-39-48.6-62.3S0 249.2 0 224l224 0 160 0 0-64zM80 416a48 48 0 1 1 0 96 48 48 0 1 1 0-96zm240 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z\"]\n};\nconst faCarriageBaby = faBabyCarriage;\nconst faTrafficLight = {\n prefix: 'fas',\n iconName: 'traffic-light',\n icon: [320, 512, [128678], \"f637\", \"M64 0C28.7 0 0 28.7 0 64L0 352c0 88.4 71.6 160 160 160s160-71.6 160-160l0-288c0-35.3-28.7-64-64-64L64 0zm96 416a48 48 0 1 1 0-96 48 48 0 1 1 0 96zm48-176a48 48 0 1 1 -96 0 48 48 0 1 1 96 0zm-48-80a48 48 0 1 1 0-96 48 48 0 1 1 0 96z\"]\n};\nconst faThermometer = {\n prefix: 'fas',\n iconName: 'thermometer',\n icon: [512, 512, [], \"f491\", \"M96 382.1l0-88.8c0-14.9 5.9-29.1 16.4-39.6l27.3-27.3 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 41.4-41.4 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 41.4-41.4 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 45.5-45.5C355.2 10.9 381.4 0 408.8 0C465.8 0 512 46.2 512 103.2c0 27.4-10.9 53.6-30.2 73L258.3 399.6c-10.5 10.5-24.7 16.4-39.6 16.4l-88.8 0L41 505c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l89-89z\"]\n};\nconst faVrCardboard = {\n prefix: 'fas',\n iconName: 'vr-cardboard',\n icon: [640, 512, [], \"f729\", \"M576 64L64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l120.4 0c24.2 0 46.4-13.7 57.2-35.4l32-64c8.8-17.5 26.7-28.6 46.3-28.6s37.5 11.1 46.3 28.6l32 64c10.8 21.7 33 35.4 57.2 35.4L576 448c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64zM96 240a64 64 0 1 1 128 0A64 64 0 1 1 96 240zm384-64a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nconst faHandMiddleFinger = {\n prefix: 'fas',\n iconName: 'hand-middle-finger',\n icon: [448, 512, [128405], \"f806\", \"M232 0c-22.1 0-40 17.9-40 40l0 164.2c-8.5-7.6-19.7-12.2-32-12.2c-26.5 0-48 21.5-48 48l0 7 0 73c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-55.7c-2 1.4-3.9 3-5.8 4.5L55 284.8C40.4 297 32 315 32 334L32 372c0 38 16.9 74 46.1 98.3l5.4 4.5c28.8 24 65 37.1 102.4 37.1L304 512c70.7 0 128-57.3 128-128l0-64 0-32c0-26.5-21.5-48-48-48c-12.4 0-23.6 4.7-32.1 12.3C350 227.5 329.3 208 304 208c-12.3 0-23.5 4.6-32 12.2L272 40c0-22.1-17.9-40-40-40z\"]\n};\nconst faPercent = {\n prefix: 'fas',\n iconName: 'percent',\n icon: [384, 512, [62101, 62785, \"percentage\"], \"25\", \"M374.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-320 320c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l320-320zM128 128A64 64 0 1 0 0 128a64 64 0 1 0 128 0zM384 384a64 64 0 1 0 -128 0 64 64 0 1 0 128 0z\"]\n};\nconst faPercentage = faPercent;\nconst faTruckMoving = {\n prefix: 'fas',\n iconName: 'truck-moving',\n icon: [640, 512, [], \"f4df\", \"M64 32C28.7 32 0 60.7 0 96L0 304l0 80 0 16c0 44.2 35.8 80 80 80c26.2 0 49.4-12.6 64-32c14.6 19.4 37.8 32 64 32c44.2 0 80-35.8 80-80c0-5.5-.6-10.8-1.6-16L416 384l33.6 0c-1 5.2-1.6 10.5-1.6 16c0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16l1.6 0c17.7 0 32-14.3 32-32l0-64 0-16 0-10.3c0-9.2-3.2-18.2-9-25.3l-58.8-71.8c-10.6-13-26.5-20.5-43.3-20.5L480 144l0-48c0-35.3-28.7-64-64-64L64 32zM585 256l-105 0 0-64 48.8 0c2.4 0 4.7 1.1 6.2 2.9L585 256zM528 368a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM176 400a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM80 368a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faGlassWaterDroplet = {\n prefix: 'fas',\n iconName: 'glass-water-droplet',\n icon: [384, 512, [], \"e4f5\", \"M32 0C23.1 0 14.6 3.7 8.6 10.2S-.6 25.4 .1 34.3L28.9 437.7c3 41.9 37.8 74.3 79.8 74.3l166.6 0c42 0 76.8-32.4 79.8-74.3L383.9 34.3c.6-8.9-2.4-17.6-8.5-24.1S360.9 0 352 0L32 0zM83 297.5L66.4 64l251.3 0L301 297.5 288 304c-20.1 10.1-43.9 10.1-64 0s-43.9-10.1-64 0s-43.9 10.1-64 0l-13-6.5zM256 196c0-24-33.7-70.1-52.2-93.5c-6.1-7.7-17.5-7.7-23.6 0C161.7 125.9 128 172 128 196c0 33.1 28.7 60 64 60s64-26.9 64-60z\"]\n};\nconst faDisplay = {\n prefix: 'fas',\n iconName: 'display',\n icon: [576, 512, [], \"e163\", \"M64 0C28.7 0 0 28.7 0 64L0 352c0 35.3 28.7 64 64 64l176 0-10.7 32L160 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-69.3 0L336 416l176 0c35.3 0 64-28.7 64-64l0-288c0-35.3-28.7-64-64-64L64 0zM512 64l0 288L64 352 64 64l448 0z\"]\n};\nconst faFaceSmile = {\n prefix: 'fas',\n iconName: 'face-smile',\n icon: [512, 512, [128578, \"smile\"], \"f118\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM164.1 325.5C182 346.2 212.6 368 256 368s74-21.8 91.9-42.5c5.8-6.7 15.9-7.4 22.6-1.6s7.4 15.9 1.6 22.6C349.8 372.1 311.1 400 256 400s-93.8-27.9-116.1-53.5c-5.8-6.7-5.1-16.8 1.6-22.6s16.8-5.1 22.6 1.6zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faSmile = faFaceSmile;\nconst faThumbtack = {\n prefix: 'fas',\n iconName: 'thumbtack',\n icon: [384, 512, [128204, 128392, \"thumb-tack\"], \"f08d\", \"M32 32C32 14.3 46.3 0 64 0L320 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-29.5 0 11.4 148.2c36.7 19.9 65.7 53.2 79.5 94.7l1 3c3.3 9.8 1.6 20.5-4.4 28.8s-15.7 13.3-26 13.3L32 352c-10.3 0-19.9-4.9-26-13.3s-7.7-19.1-4.4-28.8l1-3c13.8-41.5 42.8-74.8 79.5-94.7L93.5 64 64 64C46.3 64 32 49.7 32 32zM160 384l64 0 0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96z\"]\n};\nconst faThumbTack = faThumbtack;\nconst faTrophy = {\n prefix: 'fas',\n iconName: 'trophy',\n icon: [576, 512, [127942], \"f091\", \"M400 0L176 0c-26.5 0-48.1 21.8-47.1 48.2c.2 5.3 .4 10.6 .7 15.8L24 64C10.7 64 0 74.7 0 88c0 92.6 33.5 157 78.5 200.7c44.3 43.1 98.3 64.8 138.1 75.8c23.4 6.5 39.4 26 39.4 45.6c0 20.9-17 37.9-37.9 37.9L192 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l192 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-26.1 0C337 448 320 431 320 410.1c0-19.6 15.9-39.2 39.4-45.6c39.9-11 93.9-32.7 138.2-75.8C542.5 245 576 180.6 576 88c0-13.3-10.7-24-24-24L446.4 64c.3-5.2 .5-10.4 .7-15.8C448.1 21.8 426.5 0 400 0zM48.9 112l84.4 0c9.1 90.1 29.2 150.3 51.9 190.6c-24.9-11-50.8-26.5-73.2-48.3c-32-31.1-58-76-63-142.3zM464.1 254.3c-22.4 21.8-48.3 37.3-73.2 48.3c22.7-40.3 42.8-100.5 51.9-190.6l84.4 0c-5.1 66.3-31.1 111.2-63 142.3z\"]\n};\nconst faPersonPraying = {\n prefix: 'fas',\n iconName: 'person-praying',\n icon: [448, 512, [128720, \"pray\"], \"f683\", \"M352 64A64 64 0 1 0 224 64a64 64 0 1 0 128 0zM232.7 264l22.9 31.5c6.5 8.9 16.3 14.7 27.2 16.1s21.9-1.7 30.4-8.7l88-72c17.1-14 19.6-39.2 5.6-56.3s-39.2-19.6-56.3-5.6l-55.2 45.2-26.2-36C253.6 156.7 228.6 144 202 144c-30.9 0-59.2 17.1-73.6 44.4L79.8 280.9c-20.2 38.5-9.4 85.9 25.6 111.8L158.6 432 72 432c-22.1 0-40 17.9-40 40s17.9 40 40 40l208 0c17.3 0 32.6-11.1 38-27.5s-.3-34.4-14.2-44.7L187.7 354l45-90z\"]\n};\nconst faPray = faPersonPraying;\nconst faHammer = {\n prefix: 'fas',\n iconName: 'hammer',\n icon: [576, 512, [128296], \"f6e3\", \"M413.5 237.5c-28.2 4.8-58.2-3.6-80-25.4l-38.1-38.1C280.4 159 272 138.8 272 117.6l0-12.1L192.3 62c-5.3-2.9-8.6-8.6-8.3-14.7s3.9-11.5 9.5-14l47.2-21C259.1 4.2 279 0 299.2 0l18.1 0c36.7 0 72 14 98.7 39.1l44.6 42c24.2 22.8 33.2 55.7 26.6 86L503 183l8-8c9.4-9.4 24.6-9.4 33.9 0l24 24c9.4 9.4 9.4 24.6 0 33.9l-88 88c-9.4 9.4-24.6 9.4-33.9 0l-24-24c-9.4-9.4-9.4-24.6 0-33.9l8-8-17.5-17.5zM27.4 377.1L260.9 182.6c3.5 4.9 7.5 9.6 11.8 14l38.1 38.1c6 6 12.4 11.2 19.2 15.7L134.9 484.6c-14.5 17.4-36 27.4-58.6 27.4C34.1 512 0 477.8 0 435.7c0-22.6 10.1-44.1 27.4-58.6z\"]\n};\nconst faHandPeace = {\n prefix: 'fas',\n iconName: 'hand-peace',\n icon: [512, 512, [9996], \"f25b\", \"M224 0c17.7 0 32 14.3 32 32l0 208-64 0 0-208c0-17.7 14.3-32 32-32zm96 160c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32zm64 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64zM93.3 51.2L175.9 240l-69.9 0L34.7 76.8C27.6 60.6 35 41.8 51.2 34.7s35.1 .3 42.1 16.5zm27 221.3l-.2-.5 69.9 0 26.1 0c22.1 0 40 17.9 40 40s-17.9 40-40 40l-56 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l56 0c39.8 0 72-32.2 72-72l0-.6c9.4 5.4 20.3 8.6 32 8.6c13.2 0 25.4-4 35.6-10.8c8.7 24.9 32.5 42.8 60.4 42.8c11.7 0 22.6-3.1 32-8.6l0 8.6c0 88.4-71.6 160-160 160l-61.7 0c-42.4 0-83.1-16.9-113.1-46.9l-11.6-11.6C77.5 429.5 64 396.9 64 363l0-27c0-32.7 24.6-59.7 56.3-63.5z\"]\n};\nconst faRotate = {\n prefix: 'fas',\n iconName: 'rotate',\n icon: [512, 512, [128260, \"sync-alt\"], \"f2f1\", \"M142.9 142.9c-17.5 17.5-30.1 38-37.8 59.8c-5.9 16.7-24.2 25.4-40.8 19.5s-25.4-24.2-19.5-40.8C55.6 150.7 73.2 122 97.6 97.6c87.2-87.2 228.3-87.5 315.8-1L455 55c6.9-6.9 17.2-8.9 26.2-5.2s14.8 12.5 14.8 22.2l0 128c0 13.3-10.7 24-24 24l-8.4 0c0 0 0 0 0 0L344 224c-9.7 0-18.5-5.8-22.2-14.8s-1.7-19.3 5.2-26.2l41.1-41.1c-62.6-61.5-163.1-61.2-225.3 1zM16 312c0-13.3 10.7-24 24-24l7.6 0 .7 0L168 288c9.7 0 18.5 5.8 22.2 14.8s1.7 19.3-5.2 26.2l-41.1 41.1c62.6 61.5 163.1 61.2 225.3-1c17.5-17.5 30.1-38 37.8-59.8c5.9-16.7 24.2-25.4 40.8-19.5s25.4 24.2 19.5 40.8c-10.8 30.6-28.4 59.3-52.9 83.8c-87.2 87.2-228.3 87.5-315.8 1L57 457c-6.9 6.9-17.2 8.9-26.2 5.2S16 449.7 16 440l0-119.6 0-.7 0-7.6z\"]\n};\nconst faSyncAlt = faRotate;\nconst faSpinner = {\n prefix: 'fas',\n iconName: 'spinner',\n icon: [512, 512, [], \"f110\", \"M304 48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm0 416a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM48 304a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm464-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM142.9 437A48 48 0 1 0 75 369.1 48 48 0 1 0 142.9 437zm0-294.2A48 48 0 1 0 75 75a48 48 0 1 0 67.9 67.9zM369.1 437A48 48 0 1 0 437 369.1 48 48 0 1 0 369.1 437z\"]\n};\nconst faRobot = {\n prefix: 'fas',\n iconName: 'robot',\n icon: [640, 512, [129302], \"f544\", \"M320 0c17.7 0 32 14.3 32 32l0 64 120 0c39.8 0 72 32.2 72 72l0 272c0 39.8-32.2 72-72 72l-304 0c-39.8 0-72-32.2-72-72l0-272c0-39.8 32.2-72 72-72l120 0 0-64c0-17.7 14.3-32 32-32zM208 384c-8.8 0-16 7.2-16 16s7.2 16 16 16l32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-32 0zm96 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-32 0zm96 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-32 0zM264 256a40 40 0 1 0 -80 0 40 40 0 1 0 80 0zm152 40a40 40 0 1 0 0-80 40 40 0 1 0 0 80zM48 224l16 0 0 192-16 0c-26.5 0-48-21.5-48-48l0-96c0-26.5 21.5-48 48-48zm544 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48l-16 0 0-192 16 0z\"]\n};\nconst faPeace = {\n prefix: 'fas',\n iconName: 'peace',\n icon: [512, 512, [9774], \"f67c\", \"M224 445.3l0-121.8-94.3 77.1c26.1 22.8 58.5 38.7 94.3 44.7zM89.2 351.1L224 240.8l0-174.2C133.2 81.9 64 160.9 64 256c0 34.6 9.2 67.1 25.2 95.1zm293.1 49.5L288 323.5l0 121.8c35.7-6 68.1-21.9 94.3-44.7zm40.6-49.5c16-28 25.2-60.5 25.2-95.1c0-95.1-69.2-174.1-160-189.3l0 174.2L422.8 351.1zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256z\"]\n};\nconst faGears = {\n prefix: 'fas',\n iconName: 'gears',\n icon: [640, 512, [\"cogs\"], \"f085\", \"M308.5 135.3c7.1-6.3 9.9-16.2 6.2-25c-2.3-5.3-4.8-10.5-7.6-15.5L304 89.4c-3-5-6.3-9.9-9.8-14.6c-5.7-7.6-15.7-10.1-24.7-7.1l-28.2 9.3c-10.7-8.8-23-16-36.2-20.9L199 27.1c-1.9-9.3-9.1-16.7-18.5-17.8C173.9 8.4 167.2 8 160.4 8l-.7 0c-6.8 0-13.5 .4-20.1 1.2c-9.4 1.1-16.6 8.6-18.5 17.8L115 56.1c-13.3 5-25.5 12.1-36.2 20.9L50.5 67.8c-9-3-19-.5-24.7 7.1c-3.5 4.7-6.8 9.6-9.9 14.6l-3 5.3c-2.8 5-5.3 10.2-7.6 15.6c-3.7 8.7-.9 18.6 6.2 25l22.2 19.8C32.6 161.9 32 168.9 32 176s.6 14.1 1.7 20.9L11.5 216.7c-7.1 6.3-9.9 16.2-6.2 25c2.3 5.3 4.8 10.5 7.6 15.6l3 5.2c3 5.1 6.3 9.9 9.9 14.6c5.7 7.6 15.7 10.1 24.7 7.1l28.2-9.3c10.7 8.8 23 16 36.2 20.9l6.1 29.1c1.9 9.3 9.1 16.7 18.5 17.8c6.7 .8 13.5 1.2 20.4 1.2s13.7-.4 20.4-1.2c9.4-1.1 16.6-8.6 18.5-17.8l6.1-29.1c13.3-5 25.5-12.1 36.2-20.9l28.2 9.3c9 3 19 .5 24.7-7.1c3.5-4.7 6.8-9.5 9.8-14.6l3.1-5.4c2.8-5 5.3-10.2 7.6-15.5c3.7-8.7 .9-18.6-6.2-25l-22.2-19.8c1.1-6.8 1.7-13.8 1.7-20.9s-.6-14.1-1.7-20.9l22.2-19.8zM112 176a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM504.7 500.5c6.3 7.1 16.2 9.9 25 6.2c5.3-2.3 10.5-4.8 15.5-7.6l5.4-3.1c5-3 9.9-6.3 14.6-9.8c7.6-5.7 10.1-15.7 7.1-24.7l-9.3-28.2c8.8-10.7 16-23 20.9-36.2l29.1-6.1c9.3-1.9 16.7-9.1 17.8-18.5c.8-6.7 1.2-13.5 1.2-20.4s-.4-13.7-1.2-20.4c-1.1-9.4-8.6-16.6-17.8-18.5L583.9 307c-5-13.3-12.1-25.5-20.9-36.2l9.3-28.2c3-9 .5-19-7.1-24.7c-4.7-3.5-9.6-6.8-14.6-9.9l-5.3-3c-5-2.8-10.2-5.3-15.6-7.6c-8.7-3.7-18.6-.9-25 6.2l-19.8 22.2c-6.8-1.1-13.8-1.7-20.9-1.7s-14.1 .6-20.9 1.7l-19.8-22.2c-6.3-7.1-16.2-9.9-25-6.2c-5.3 2.3-10.5 4.8-15.6 7.6l-5.2 3c-5.1 3-9.9 6.3-14.6 9.9c-7.6 5.7-10.1 15.7-7.1 24.7l9.3 28.2c-8.8 10.7-16 23-20.9 36.2L315.1 313c-9.3 1.9-16.7 9.1-17.8 18.5c-.8 6.7-1.2 13.5-1.2 20.4s.4 13.7 1.2 20.4c1.1 9.4 8.6 16.6 17.8 18.5l29.1 6.1c5 13.3 12.1 25.5 20.9 36.2l-9.3 28.2c-3 9-.5 19 7.1 24.7c4.7 3.5 9.5 6.8 14.6 9.8l5.4 3.1c5 2.8 10.2 5.3 15.5 7.6c8.7 3.7 18.6 .9 25-6.2l19.8-22.2c6.8 1.1 13.8 1.7 20.9 1.7s14.1-.6 20.9-1.7l19.8 22.2zM464 304a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nconst faCogs = faGears;\nconst faWarehouse = {\n prefix: 'fas',\n iconName: 'warehouse',\n icon: [640, 512, [], \"f494\", \"M0 488L0 171.3c0-26.2 15.9-49.7 40.2-59.4L308.1 4.8c7.6-3.1 16.1-3.1 23.8 0L599.8 111.9c24.3 9.7 40.2 33.3 40.2 59.4L640 488c0 13.3-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24l0-264c0-17.7-14.3-32-32-32l-384 0c-17.7 0-32 14.3-32 32l0 264c0 13.3-10.7 24-24 24l-48 0c-13.3 0-24-10.7-24-24zm488 24l-336 0c-13.3 0-24-10.7-24-24l0-56 384 0 0 56c0 13.3-10.7 24-24 24zM128 400l0-64 384 0 0 64-384 0zm0-96l0-80 384 0 0 80-384 0z\"]\n};\nconst faArrowUpRightDots = {\n prefix: 'fas',\n iconName: 'arrow-up-right-dots',\n icon: [576, 512, [], \"e4b7\", \"M160 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l50.7 0L9.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L256 109.3l0 50.7c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128c0-17.7-14.3-32-32-32L160 0zM576 80a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM448 208a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM400 384a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm48 80a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm128 0a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM272 384a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm48 80a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM144 512a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM576 336a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zm-48-80a48 48 0 1 0 0-96 48 48 0 1 0 0 96z\"]\n};\nconst faSplotch = {\n prefix: 'fas',\n iconName: 'splotch',\n icon: [512, 512, [], \"f5bc\", \"M208.5 62.3l28.1-36.9C248.8 9.4 267.8 0 288 0c28.5 0 53.6 18.7 61.8 46l17.8 59.4c10.3 34.4 36.1 62 69.8 74.6l39.8 14.9c20.9 7.9 34.8 27.9 34.8 50.2c0 16.9-7.9 32.8-21.5 42.9l-67.3 50.5c-24.3 18.2-37.2 47.9-33.8 78.1l2.5 22.7c4.3 38.7-26 72.6-65 72.6c-14.8 0-29.3-5.1-40.8-14.3l-55.4-44.3c-4.5-3.6-9.3-6.7-14.5-9.2c-15.8-7.9-33.7-10.4-51-7.3L82.4 451.9C47.8 458.2 16 431.6 16 396.5c0-13.2 4.7-26 13.1-36.2l11.2-13.4c14.6-17.4 22.6-39.4 22.6-62.1c0-18.8-5.5-37.2-15.8-53L8.8 173.5C3.1 164.7 0 154.4 0 143.9c0-33.4 30.1-58.8 63-53.2l51.3 8.7c35.9 6.1 72.2-8.2 94.2-37.1z\"]\n};\nconst faFaceGrinHearts = {\n prefix: 'fas',\n iconName: 'face-grin-hearts',\n icon: [512, 512, [128525, \"grin-hearts\"], \"f584\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM388.1 312.8c12.3-3.8 24.3 6.9 19.3 18.7C382.4 390.6 324.2 432 256.3 432s-126.2-41.4-151.1-100.5c-5-11.8 7-22.5 19.3-18.7c39.7 12.2 84.5 19 131.8 19s92.1-6.8 131.8-19zM199.3 129.1c17.8 4.8 28.4 23.1 23.6 40.8l-17.4 65c-2.3 8.5-11.1 13.6-19.6 11.3l-65.1-17.4c-17.8-4.8-28.4-23.1-23.6-40.8s23.1-28.4 40.8-23.6l16.1 4.3 4.3-16.1c4.8-17.8 23.1-28.4 40.8-23.6zm154.3 23.6l4.3 16.1 16.1-4.3c17.8-4.8 36.1 5.8 40.8 23.6s-5.8 36.1-23.6 40.8l-65.1 17.4c-8.5 2.3-17.3-2.8-19.6-11.3l-17.4-65c-4.8-17.8 5.8-36.1 23.6-40.8s36.1 5.8 40.9 23.6z\"]\n};\nconst faGrinHearts = faFaceGrinHearts;\nconst faDiceFour = {\n prefix: 'fas',\n iconName: 'dice-four',\n icon: [448, 512, [9859], \"f524\", \"M0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zm160 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM128 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM352 160a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM320 384a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faSimCard = {\n prefix: 'fas',\n iconName: 'sim-card',\n icon: [384, 512, [], \"f7c4\", \"M64 0L242.7 0c17 0 33.3 6.7 45.3 18.7L365.3 96c12 12 18.7 28.3 18.7 45.3L384 448c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64C0 28.7 28.7 0 64 0zM96 192c-17.7 0-32 14.3-32 32l0 32 64 0 0-64-32 0zM64 352l80 0 96 0 80 0 0-64-80 0-96 0-80 0 0 64zM320 224c0-17.7-14.3-32-32-32l-32 0 0 64 64 0 0-32zM160 192l0 64 64 0 0-64-64 0zM288 448c17.7 0 32-14.3 32-32l0-32-64 0 0 64 32 0zM160 384l0 64 64 0 0-64-64 0zM64 416c0 17.7 14.3 32 32 32l32 0 0-64-64 0 0 32z\"]\n};\nconst faTransgender = {\n prefix: 'fas',\n iconName: 'transgender',\n icon: [512, 512, [9895, \"transgender-alt\"], \"f225\", \"M112 0c6.5 0 12.3 3.9 14.8 9.9s1.1 12.9-3.5 17.4l-31 31L112 78.1l7-7c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-7 7 15.2 15.2C187.7 107.6 220.5 96 256 96s68.3 11.6 94.9 31.2l68.8-68.8-31-31c-4.6-4.6-5.9-11.5-3.5-17.4s8.3-9.9 14.8-9.9l96 0c8.8 0 16 7.2 16 16l0 96c0 6.5-3.9 12.3-9.9 14.8s-12.9 1.1-17.4-3.5l-31-31-68.8 68.8C404.4 187.7 416 220.5 416 256c0 80.2-59 146.6-136 158.2l0 17.8 16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0 0 8c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-8-16 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l16 0 0-17.8C155 402.6 96 336.2 96 256c0-35.5 11.6-68.3 31.2-94.9L112 145.9l-7 7c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l7-7L58.3 92.3l-31 31c-4.6 4.6-11.5 5.9-17.4 3.5S0 118.5 0 112L0 16C0 7.2 7.2 0 16 0l96 0zM352 256a96 96 0 1 0 -192 0 96 96 0 1 0 192 0z\"]\n};\nconst faTransgenderAlt = faTransgender;\nconst faMercury = {\n prefix: 'fas',\n iconName: 'mercury',\n icon: [384, 512, [9791], \"f223\", \"M72.1 7C85.8-4 106-1.8 117 12c17.6 22 44.7 36 75 36s57.3-14 75-36c11.1-13.8 31.2-16 45-5s16 31.2 5 45c-7.8 9.7-16.6 18.4-26.4 26.1C337.3 109.7 368 163.3 368 224c0 89.1-66.2 162.7-152 174.4l0 25.6 32 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-32 0 0 16c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-16-32 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l32 0 0-25.6C82.2 386.7 16 313.1 16 224c0-60.7 30.7-114.3 77.5-145.9C83.7 70.5 74.9 61.7 67.1 52c-11.1-13.8-8.8-33.9 5-45zM80 224a112 112 0 1 0 224 0A112 112 0 1 0 80 224z\"]\n};\nconst faArrowTurnDown = {\n prefix: 'fas',\n iconName: 'arrow-turn-down',\n icon: [384, 512, [\"level-down\"], \"f149\", \"M32 64C14.3 64 0 49.7 0 32S14.3 0 32 0l96 0c53 0 96 43 96 96l0 306.7 73.4-73.4c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3l-128 128c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 402.7 160 96c0-17.7-14.3-32-32-32L32 64z\"]\n};\nconst faLevelDown = faArrowTurnDown;\nconst faPersonFallingBurst = {\n prefix: 'fas',\n iconName: 'person-falling-burst',\n icon: [640, 512, [], \"e547\", \"M256 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 9.8c0 39-23.7 74-59.9 88.4C71.6 154.5 32 213 32 278.2L32 352c0 17.7 14.3 32 32 32s32-14.3 32-32l0-73.8c0-10 1.6-19.8 4.5-29L261.1 497.4c9.6 14.8 29.4 19.1 44.3 9.5s19.1-29.4 9.5-44.3L222.6 320l1.4 0 80 0 38.4 51.2c10.6 14.1 30.7 17 44.8 6.4s17-30.7 6.4-44.8l-43.2-57.6C341.3 263.1 327.1 256 312 256l-71.5 0-56.8-80.2-.2-.3c44.7-29 72.5-79 72.5-133.6l0-9.8zM96 80A48 48 0 1 0 0 80a48 48 0 1 0 96 0zM464 286.1l58.6 53.9c4.8 4.4 11.9 5.5 17.8 2.6s9.5-9 9-15.5l-5.6-79.4 78.7-12.2c6.5-1 11.7-5.9 13.1-12.2s-1.1-13-6.5-16.7l-65.6-45.1L603 92.2c3.3-5.7 2.7-12.8-1.4-17.9s-10.9-7.2-17.2-5.3L508.3 92.1l-29.4-74C476.4 12 470.6 8 464 8s-12.4 4-14.9 10.1l-29.4 74L343.6 68.9c-6.3-1.9-13.1 .2-17.2 5.3s-4.6 12.2-1.4 17.9l39.5 69.1-65.6 45.1c-5.4 3.7-8 10.3-6.5 16.7c.1 .3 .1 .6 .2 .8l19.4 0c20.1 0 39.2 7.5 53.8 20.8l18.4 2.9L383 265.3l36.2 48.3c2.1 2.8 3.9 5.7 5.5 8.6L464 286.1z\"]\n};\nconst faAward = {\n prefix: 'fas',\n iconName: 'award',\n icon: [384, 512, [], \"f559\", \"M173.8 5.5c11-7.3 25.4-7.3 36.4 0L228 17.2c6 3.9 13 5.8 20.1 5.4l21.3-1.3c13.2-.8 25.6 6.4 31.5 18.2l9.6 19.1c3.2 6.4 8.4 11.5 14.7 14.7L344.5 83c11.8 5.9 19 18.3 18.2 31.5l-1.3 21.3c-.4 7.1 1.5 14.2 5.4 20.1l11.8 17.8c7.3 11 7.3 25.4 0 36.4L366.8 228c-3.9 6-5.8 13-5.4 20.1l1.3 21.3c.8 13.2-6.4 25.6-18.2 31.5l-19.1 9.6c-6.4 3.2-11.5 8.4-14.7 14.7L301 344.5c-5.9 11.8-18.3 19-31.5 18.2l-21.3-1.3c-7.1-.4-14.2 1.5-20.1 5.4l-17.8 11.8c-11 7.3-25.4 7.3-36.4 0L156 366.8c-6-3.9-13-5.8-20.1-5.4l-21.3 1.3c-13.2 .8-25.6-6.4-31.5-18.2l-9.6-19.1c-3.2-6.4-8.4-11.5-14.7-14.7L39.5 301c-11.8-5.9-19-18.3-18.2-31.5l1.3-21.3c.4-7.1-1.5-14.2-5.4-20.1L5.5 210.2c-7.3-11-7.3-25.4 0-36.4L17.2 156c3.9-6 5.8-13 5.4-20.1l-1.3-21.3c-.8-13.2 6.4-25.6 18.2-31.5l19.1-9.6C65 70.2 70.2 65 73.4 58.6L83 39.5c5.9-11.8 18.3-19 31.5-18.2l21.3 1.3c7.1 .4 14.2-1.5 20.1-5.4L173.8 5.5zM272 192a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM1.3 441.8L44.4 339.3c.2 .1 .3 .2 .4 .4l9.6 19.1c11.7 23.2 36 37.3 62 35.8l21.3-1.3c.2 0 .5 0 .7 .2l17.8 11.8c5.1 3.3 10.5 5.9 16.1 7.7l-37.6 89.3c-2.3 5.5-7.4 9.2-13.3 9.7s-11.6-2.2-14.8-7.2L74.4 455.5l-56.1 8.3c-5.7 .8-11.4-1.5-15-6s-4.3-10.7-2.1-16zm248 60.4L211.7 413c5.6-1.8 11-4.3 16.1-7.7l17.8-11.8c.2-.1 .4-.2 .7-.2l21.3 1.3c26 1.5 50.3-12.6 62-35.8l9.6-19.1c.1-.2 .2-.3 .4-.4l43.2 102.5c2.2 5.3 1.4 11.4-2.1 16s-9.3 6.9-15 6l-56.1-8.3-32.2 49.2c-3.2 5-8.9 7.7-14.8 7.2s-11-4.3-13.3-9.7z\"]\n};\nconst faTicketSimple = {\n prefix: 'fas',\n iconName: 'ticket-simple',\n icon: [576, 512, [\"ticket-alt\"], \"f3ff\", \"M0 128C0 92.7 28.7 64 64 64l448 0c35.3 0 64 28.7 64 64l0 64c0 8.8-7.4 15.7-15.7 18.6C541.5 217.1 528 235 528 256s13.5 38.9 32.3 45.4c8.3 2.9 15.7 9.8 15.7 18.6l0 64c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64l0-64c0-8.8 7.4-15.7 15.7-18.6C34.5 294.9 48 277 48 256s-13.5-38.9-32.3-45.4C7.4 207.7 0 200.8 0 192l0-64z\"]\n};\nconst faTicketAlt = faTicketSimple;\nconst faBuilding = {\n prefix: 'fas',\n iconName: 'building',\n icon: [384, 512, [127970, 61687], \"f1ad\", \"M48 0C21.5 0 0 21.5 0 48L0 464c0 26.5 21.5 48 48 48l96 0 0-80c0-26.5 21.5-48 48-48s48 21.5 48 48l0 80 96 0c26.5 0 48-21.5 48-48l0-416c0-26.5-21.5-48-48-48L48 0zM64 240c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zm112-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM80 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16zm80 16c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32zM272 96l32 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16z\"]\n};\nconst faAnglesLeft = {\n prefix: 'fas',\n iconName: 'angles-left',\n icon: [512, 512, [171, \"angle-double-left\"], \"f100\", \"M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 246.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160zm352-160l-160 160c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L301.3 256 438.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0z\"]\n};\nconst faAngleDoubleLeft = faAnglesLeft;\nconst faQrcode = {\n prefix: 'fas',\n iconName: 'qrcode',\n icon: [448, 512, [], \"f029\", \"M0 80C0 53.5 21.5 32 48 32l96 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48l-96 0c-26.5 0-48-21.5-48-48L0 80zM64 96l0 64 64 0 0-64L64 96zM0 336c0-26.5 21.5-48 48-48l96 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48l-96 0c-26.5 0-48-21.5-48-48l0-96zm64 16l0 64 64 0 0-64-64 0zM304 32l96 0c26.5 0 48 21.5 48 48l0 96c0 26.5-21.5 48-48 48l-96 0c-26.5 0-48-21.5-48-48l0-96c0-26.5 21.5-48 48-48zm80 64l-64 0 0 64 64 0 0-64zM256 304c0-8.8 7.2-16 16-16l64 0c8.8 0 16 7.2 16 16s7.2 16 16 16l32 0c8.8 0 16-7.2 16-16s7.2-16 16-16s16 7.2 16 16l0 96c0 8.8-7.2 16-16 16l-64 0c-8.8 0-16-7.2-16-16s-7.2-16-16-16s-16 7.2-16 16l0 64c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-160zM368 480a16 16 0 1 1 0-32 16 16 0 1 1 0 32zm64 0a16 16 0 1 1 0-32 16 16 0 1 1 0 32z\"]\n};\nconst faClockRotateLeft = {\n prefix: 'fas',\n iconName: 'clock-rotate-left',\n icon: [512, 512, [\"history\"], \"f1da\", \"M75 75L41 41C25.9 25.9 0 36.6 0 57.9L0 168c0 13.3 10.7 24 24 24l110.1 0c21.4 0 32.1-25.9 17-41l-30.8-30.8C155 85.5 203 64 256 64c106 0 192 86 192 192s-86 192-192 192c-40.8 0-78.6-12.7-109.7-34.4c-14.5-10.1-34.4-6.6-44.6 7.9s-6.6 34.4 7.9 44.6C151.2 495 201.7 512 256 512c141.4 0 256-114.6 256-256S397.4 0 256 0C185.3 0 121.3 28.7 75 75zm181 53c-13.3 0-24 10.7-24 24l0 104c0 6.4 2.5 12.5 7 17l72 72c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-65-65 0-94.1c0-13.3-10.7-24-24-24z\"]\n};\nconst faHistory = faClockRotateLeft;\nconst faFaceGrinBeamSweat = {\n prefix: 'fas',\n iconName: 'face-grin-beam-sweat',\n icon: [512, 512, [128517, \"grin-beam-sweat\"], \"f583\", \"M476.8 126.3c-4.1 1.1-8.4 1.7-12.8 1.7c-26.5 0-48-21-48-47c0-5 1.8-11.3 4.6-18.1c.3-.7 .6-1.4 .9-2.1c9-20.2 26.5-44.9 36-57.5c3.2-4.4 9.6-4.4 12.8 0C483.4 20.6 512 61 512 81c0 21.7-14.9 39.8-35.2 45.3zM256 0c51.4 0 99.3 15.2 139.4 41.2c-1.5 3.1-3 6.2-4.3 9.3c-3.4 8-7.1 19-7.1 30.5c0 44.3 36.6 79 80 79c9.6 0 18.8-1.7 27.4-4.8c13.3 30.9 20.6 65 20.6 100.8c0 141.4-114.6 256-256 256S0 397.4 0 256S114.6 0 256 0zM383.8 317.8C345.3 329.4 301.9 336 256 336s-89.3-6.6-127.8-18.2c-12.3-3.7-24.3 7-19.2 18.7c24.5 56.9 81.1 96.7 147 96.7s122.5-39.8 147-96.7c5.1-11.8-6.9-22.4-19.2-18.7zm-166.2-89s0 0 0 0s0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C126.7 188.4 120 206.1 120 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8c0 0 0 0 0 0s0 0 0 0c0 0 0 0 0 0l.2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2c0 0 0 0 0 0c0 0 0 0 0 0zm160 0s0 0 0 0s0 0 0 0s0 0 0 0c2.1 2.8 5.7 3.9 8.9 2.8s5.5-4.1 5.5-7.6c0-17.9-6.7-35.6-16.6-48.8c-9.8-13-23.9-23.2-39.4-23.2s-29.6 10.2-39.4 23.2C286.7 188.4 280 206.1 280 224c0 3.4 2.2 6.5 5.5 7.6s6.9 0 8.9-2.8c0 0 0 0 0 0s0 0 0 0c0 0 0 0 0 0l.2-.2c.2-.2 .4-.5 .7-.9c.6-.8 1.6-2 2.8-3.4c2.5-2.8 6-6.6 10.2-10.3c8.8-7.8 18.8-14 27.7-14s18.9 6.2 27.7 14c4.2 3.7 7.7 7.5 10.2 10.3c1.2 1.4 2.2 2.6 2.8 3.4c.3 .4 .6 .7 .7 .9l.2 .2c0 0 0 0 0 0z\"]\n};\nconst faGrinBeamSweat = faFaceGrinBeamSweat;\nconst faFileExport = {\n prefix: 'fas',\n iconName: 'file-export',\n icon: [576, 512, [\"arrow-right-from-file\"], \"f56e\", \"M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 128-168 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l168 0 0 112c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zM384 336l0-48 110.1 0-39-39c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l80 80c9.4 9.4 9.4 24.6 0 33.9l-80 80c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l39-39L384 336zm0-208l-128 0L256 0 384 128z\"]\n};\nconst faArrowRightFromFile = faFileExport;\nconst faShield = {\n prefix: 'fas',\n iconName: 'shield',\n icon: [512, 512, [128737, \"shield-blank\"], \"f132\", \"M256 0c4.6 0 9.2 1 13.4 2.9L457.7 82.8c22 9.3 38.4 31 38.3 57.2c-.5 99.2-41.3 280.7-213.6 363.2c-16.7 8-36.1 8-52.8 0C57.3 420.7 16.5 239.2 16 140c-.1-26.2 16.3-47.9 38.3-57.2L242.7 2.9C246.8 1 251.4 0 256 0z\"]\n};\nconst faShieldBlank = faShield;\nconst faArrowUpShortWide = {\n prefix: 'fas',\n iconName: 'arrow-up-short-wide',\n icon: [576, 512, [\"sort-amount-up-alt\"], \"f885\", \"M151.6 42.4C145.5 35.8 137 32 128 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L96 146.3 96 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-301.7 32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 32c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 0zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32l160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-160 0zm0 128c-17.7 0-32 14.3-32 32s14.3 32 32 32l224 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-224 0z\"]\n};\nconst faSortAmountUpAlt = faArrowUpShortWide;\nconst faHouseMedical = {\n prefix: 'fas',\n iconName: 'house-medical',\n icon: [576, 512, [], \"e3b2\", \"M543.8 287.6c17 0 32-14 32-32.1c1-9-3-17-11-24L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1l32 0 0 160.4c0 35.3 28.7 64 64 64l320.4 0c35.5 0 64.2-28.8 64-64.3l-.7-160.2 32 0zM256 208c0-8.8 7.2-16 16-16l32 0c8.8 0 16 7.2 16 16l0 48 48 0c8.8 0 16 7.2 16 16l0 32c0 8.8-7.2 16-16 16l-48 0 0 48c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-48-48 0c-8.8 0-16-7.2-16-16l0-32c0-8.8 7.2-16 16-16l48 0 0-48z\"]\n};\nconst faGolfBallTee = {\n prefix: 'fas',\n iconName: 'golf-ball-tee',\n icon: [384, 512, [\"golf-ball\"], \"f450\", \"M384 192c0 66.8-34.1 125.6-85.8 160L85.8 352C34.1 317.6 0 258.8 0 192C0 86 86 0 192 0S384 86 384 192zM242.1 256.6c0 18.5-15 33.5-33.5 33.5c-4.9 0-9.1 5.1-5.4 8.4c5.9 5.2 13.7 8.4 22.1 8.4c18.5 0 33.5-15 33.5-33.5c0-8.5-3.2-16.2-8.4-22.1c-3.3-3.7-8.4 .5-8.4 5.4zm-52.3-49.3c-4.9 0-9.1 5.1-5.4 8.4c5.9 5.2 13.7 8.4 22.1 8.4c18.5 0 33.5-15 33.5-33.5c0-8.5-3.2-16.2-8.4-22.1c-3.3-3.7-8.4 .5-8.4 5.4c0 18.5-15 33.5-33.5 33.5zm113.5-17.5c0 18.5-15 33.5-33.5 33.5c-4.9 0-9.1 5.1-5.4 8.4c5.9 5.2 13.7 8.4 22.1 8.4c18.5 0 33.5-15 33.5-33.5c0-8.5-3.2-16.2-8.4-22.1c-3.3-3.7-8.4 .5-8.4 5.4zM96 416c0-17.7 14.3-32 32-32l64 0 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-16 0c-8.8 0-16 7.2-16 16l0 16c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-16c0-8.8-7.2-16-16-16l-16 0c-17.7 0-32-14.3-32-32z\"]\n};\nconst faGolfBall = faGolfBallTee;\nconst faCircleChevronLeft = {\n prefix: 'fas',\n iconName: 'circle-chevron-left',\n icon: [512, 512, [\"chevron-circle-left\"], \"f137\", \"M512 256A256 256 0 1 0 0 256a256 256 0 1 0 512 0zM271 135c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-87 87 87 87c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L167 273c-9.4-9.4-9.4-24.6 0-33.9L271 135z\"]\n};\nconst faChevronCircleLeft = faCircleChevronLeft;\nconst faHouseChimneyWindow = {\n prefix: 'fas',\n iconName: 'house-chimney-window',\n icon: [576, 512, [], \"e00d\", \"M575.8 255.5c0 18-15 32.1-32 32.1l-32 0 .7 160.2c.2 35.5-28.5 64.3-64 64.3l-320.4 0c-35.3 0-64-28.7-64-64l0-160.4-32 0c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L416 100.7 416 64c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 121 52.8 46.4c8 7 12 15 11 24zM248 192c-13.3 0-24 10.7-24 24l0 80c0 13.3 10.7 24 24 24l80 0c13.3 0 24-10.7 24-24l0-80c0-13.3-10.7-24-24-24l-80 0z\"]\n};\nconst faPenNib = {\n prefix: 'fas',\n iconName: 'pen-nib',\n icon: [512, 512, [10001], \"f5ad\", \"M368.4 18.3L312.7 74.1 437.9 199.3l55.7-55.7c21.9-21.9 21.9-57.3 0-79.2L447.6 18.3c-21.9-21.9-57.3-21.9-79.2 0zM288 94.6l-9.2 2.8L134.7 140.6c-19.9 6-35.7 21.2-42.3 41L3.8 445.8c-3.8 11.3-1 23.9 7.3 32.4L164.7 324.7c-3-6.3-4.7-13.3-4.7-20.7c0-26.5 21.5-48 48-48s48 21.5 48 48s-21.5 48-48 48c-7.4 0-14.4-1.7-20.7-4.7L33.7 500.9c8.6 8.3 21.1 11.2 32.4 7.3l264.3-88.6c19.7-6.6 35-22.4 41-42.3l43.2-144.1 2.7-9.2L288 94.6z\"]\n};\nconst faTentArrowTurnLeft = {\n prefix: 'fas',\n iconName: 'tent-arrow-turn-left',\n icon: [576, 512, [], \"e580\", \"M120.1 41.8c9.9-8.9 10.7-24 1.8-33.9S97.8-2.7 87.9 6.2l-80 72C2.9 82.7 0 89.2 0 96s2.9 13.3 7.9 17.8l80 72c9.9 8.9 25 8.1 33.9-1.8s8.1-25-1.8-33.9L86.5 120 456 120c39.8 0 72 32.2 72 72l0 40c0 13.3 10.7 24 24 24s24-10.7 24-24l0-40c0-66.3-53.7-120-120-120L86.5 72l33.5-30.2zM307.4 166.5c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6S86.7 512 96 512l144 0 16 0c17.7 0 32-14.3 32-32l0-118.1c0-5.5 4.4-9.9 9.9-9.9c3.7 0 7.2 2.1 8.8 5.5l68.4 136.8c5.4 10.8 16.5 17.7 28.6 17.7l60.2 0 16 0c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z\"]\n};\nconst faTents = {\n prefix: 'fas',\n iconName: 'tents',\n icon: [640, 512, [], \"e582\", \"M396.6 6.5L235.8 129.1c9.6 1.8 18.9 5.8 27 12l168 128c13.2 10.1 22 24.9 24.5 41.4l6.2 41.5L608 352c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128c-11.5-8.7-27.3-8.7-38.8 0zm-153.2 160c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6S22.7 512 32 512l144 0 16 0c17.7 0 32-14.3 32-32l0-118.1c0-5.5 4.4-9.9 9.9-9.9c3.7 0 7.2 2.1 8.8 5.5l68.4 136.8c5.4 10.8 16.5 17.7 28.6 17.7l60.2 0 16 0c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z\"]\n};\nconst faWandMagic = {\n prefix: 'fas',\n iconName: 'wand-magic',\n icon: [512, 512, [\"magic\"], \"f0d0\", \"M14.1 463.3c-18.7-18.7-18.7-49.1 0-67.9L395.4 14.1c18.7-18.7 49.1-18.7 67.9 0l34.6 34.6c18.7 18.7 18.7 49.1 0 67.9L116.5 497.9c-18.7 18.7-49.1 18.7-67.9 0L14.1 463.3zM347.6 187.6l105-105L429.4 59.3l-105 105 23.3 23.3z\"]\n};\nconst faMagic = faWandMagic;\nconst faDog = {\n prefix: 'fas',\n iconName: 'dog',\n icon: [576, 512, [128021], \"f6d3\", \"M309.6 158.5L332.7 19.8C334.6 8.4 344.5 0 356.1 0c7.5 0 14.5 3.5 19 9.5L392 32l52.1 0c12.7 0 24.9 5.1 33.9 14.1L496 64l56 0c13.3 0 24 10.7 24 24l0 24c0 44.2-35.8 80-80 80l-32 0-16 0-21.3 0-5.1 30.5-112-64zM416 256.1L416 480c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-115.2c-24 12.3-51.2 19.2-80 19.2s-56-6.9-80-19.2L160 480c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-230.2c-28.8-10.9-51.4-35.3-59.2-66.5L1 167.8c-4.3-17.1 6.1-34.5 23.3-38.8s34.5 6.1 38.8 23.3l3.9 15.5C70.5 182 83.3 192 98 192l30 0 16 0 159.8 0L416 256.1zM464 80a16 16 0 1 0 -32 0 16 16 0 1 0 32 0z\"]\n};\nconst faCarrot = {\n prefix: 'fas',\n iconName: 'carrot',\n icon: [512, 512, [129365], \"f787\", \"M346.7 6C337.6 17 320 42.3 320 72c0 40 15.3 55.3 40 80s40 40 80 40c29.7 0 55-17.6 66-26.7c4-3.3 6-8.2 6-13.3s-2-10-6-13.2c-11.4-9.1-38.3-26.8-74-26.8c-32 0-40 8-40 8s8-8 8-40c0-35.7-17.7-62.6-26.8-74C370 2 365.1 0 360 0s-10 2-13.3 6zM244.6 136c-40 0-77.1 18.1-101.7 48.2l60.5 60.5c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0l-55.3-55.3 0 .1L2.2 477.9C-2 487-.1 497.8 7 505s17.9 9 27.1 4.8l134.7-62.4-52.1-52.1c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L199.7 433l100.2-46.4c46.4-21.5 76.2-68 76.2-119.2C376 194.8 317.2 136 244.6 136z\"]\n};\nconst faMoon = {\n prefix: 'fas',\n iconName: 'moon',\n icon: [384, 512, [127769, 9214], \"f186\", \"M223.5 32C100 32 0 132.3 0 256S100 480 223.5 480c60.6 0 115.5-24.2 155.8-63.4c5-4.9 6.3-12.5 3.1-18.7s-10.1-9.7-17-8.5c-9.8 1.7-19.8 2.6-30.1 2.6c-96.9 0-175.5-78.8-175.5-176c0-65.8 36-123.1 89.3-153.3c6.1-3.5 9.2-10.5 7.7-17.3s-7.3-11.9-14.3-12.5c-6.3-.5-12.6-.8-19-.8z\"]\n};\nconst faWineGlassEmpty = {\n prefix: 'fas',\n iconName: 'wine-glass-empty',\n icon: [320, 512, [\"wine-glass-alt\"], \"f5ce\", \"M64 0C47.4 0 33.5 12.8 32.1 29.3l-14 168.4c-6 72 42.5 135.2 109.9 150.6l0 99.6-48 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l80 0 80 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-48 0 0-99.6c67.4-15.4 115.9-78.6 109.9-150.6l-14-168.4C286.5 12.8 272.6 0 256 0L64 0zM81.9 203.1L93.4 64l133.1 0 11.6 139.1C242 248.8 205.9 288 160 288s-82-39.2-78.1-84.9z\"]\n};\nconst faWineGlassAlt = faWineGlassEmpty;\nconst faCheese = {\n prefix: 'fas',\n iconName: 'cheese',\n icon: [512, 512, [], \"f7ef\", \"M512 240.2l0 15.8L0 256c0-20 10-38.7 26.6-49.8L274.9 40.7c8.6-5.7 18.6-8.7 28.9-8.7C418.8 32 512 125.2 512 240.2zm0 47.8l0 128c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 288l512 0z\"]\n};\nconst faYinYang = {\n prefix: 'fas',\n iconName: 'yin-yang',\n icon: [512, 512, [9775], \"f6ad\", \"M256 64c53 0 96 43 96 96s-43 96-96 96s-96 43-96 96s43 96 96 96C150 448 64 362 64 256S150 64 256 64zm0 448A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm32-352a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z\"]\n};\nconst faMusic = {\n prefix: 'fas',\n iconName: 'music',\n icon: [512, 512, [127925], \"f001\", \"M499.1 6.3c8.1 6 12.9 15.6 12.9 25.7l0 72 0 264c0 44.2-43 80-96 80s-96-35.8-96-80s43-80 96-80c11.2 0 22 1.6 32 4.6L448 147 192 223.8 192 432c0 44.2-43 80-96 80s-96-35.8-96-80s43-80 96-80c11.2 0 22 1.6 32 4.6L128 200l0-72c0-14.1 9.3-26.6 22.8-30.7l320-96c9.7-2.9 20.2-1.1 28.3 5z\"]\n};\nconst faCodeCommit = {\n prefix: 'fas',\n iconName: 'code-commit',\n icon: [640, 512, [], \"f386\", \"M320 336a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm156.8-48C462 361 397.4 416 320 416s-142-55-156.8-128L32 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l131.2 0C178 151 242.6 96 320 96s142 55 156.8 128L608 224c17.7 0 32 14.3 32 32s-14.3 32-32 32l-131.2 0z\"]\n};\nconst faTemperatureLow = {\n prefix: 'fas',\n iconName: 'temperature-low',\n icon: [512, 512, [], \"f76b\", \"M448 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM320 96a96 96 0 1 1 192 0A96 96 0 1 1 320 96zM144 64c-26.5 0-48 21.5-48 48l0 164.5c0 17.3-7.1 31.9-15.3 42.5C70.2 332.6 64 349.5 64 368c0 44.2 35.8 80 80 80s80-35.8 80-80c0-18.5-6.2-35.4-16.7-48.9c-8.2-10.6-15.3-25.2-15.3-42.5L192 112c0-26.5-21.5-48-48-48zM32 112C32 50.2 82.1 0 144 0s112 50.1 112 112l0 164.4c0 .1 .1 .3 .2 .6c.2 .6 .8 1.6 1.7 2.8c18.9 24.4 30.1 55 30.1 88.1c0 79.5-64.5 144-144 144S0 447.5 0 368c0-33.2 11.2-63.8 30.1-88.1c.9-1.2 1.5-2.2 1.7-2.8c.1-.3 .2-.5 .2-.6L32 112zM192 368c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-20.9 13.4-38.7 32-45.3l0-50.7c0-8.8 7.2-16 16-16s16 7.2 16 16l0 50.7c18.6 6.6 32 24.4 32 45.3z\"]\n};\nconst faPersonBiking = {\n prefix: 'fas',\n iconName: 'person-biking',\n icon: [640, 512, [128692, \"biking\"], \"f84a\", \"M400 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm27.2 64l-61.8-48.8c-17.3-13.6-41.7-13.8-59.1-.3l-83.1 64.2c-30.7 23.8-28.5 70.8 4.3 91.6L288 305.1 288 416c0 17.7 14.3 32 32 32s32-14.3 32-32l0-128c0-10.7-5.3-20.7-14.2-26.6L295 232.9l60.3-48.5L396 217c5.7 4.5 12.7 7 20 7l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-52.8 0zM56 384a72 72 0 1 1 144 0A72 72 0 1 1 56 384zm200 0A128 128 0 1 0 0 384a128 128 0 1 0 256 0zm184 0a72 72 0 1 1 144 0 72 72 0 1 1 -144 0zm200 0a128 128 0 1 0 -256 0 128 128 0 1 0 256 0z\"]\n};\nconst faBiking = faPersonBiking;\nconst faBroom = {\n prefix: 'fas',\n iconName: 'broom',\n icon: [576, 512, [129529], \"f51a\", \"M566.6 54.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-192 192-34.7-34.7c-4.2-4.2-10-6.6-16-6.6c-12.5 0-22.6 10.1-22.6 22.6l0 29.1L364.3 320l29.1 0c12.5 0 22.6-10.1 22.6-22.6c0-6-2.4-11.8-6.6-16l-34.7-34.7 192-192zM341.1 353.4L222.6 234.9c-42.7-3.7-85.2 11.7-115.8 42.3l-8 8C76.5 307.5 64 337.7 64 369.2c0 6.8 7.1 11.2 13.2 8.2l51.1-25.5c5-2.5 9.5 4.1 5.4 7.9L7.3 473.4C2.7 477.6 0 483.6 0 489.9C0 502.1 9.9 512 22.1 512l173.3 0c38.8 0 75.9-15.4 103.4-42.8c30.6-30.6 45.9-73.1 42.3-115.8z\"]\n};\nconst faShieldHeart = {\n prefix: 'fas',\n iconName: 'shield-heart',\n icon: [512, 512, [], \"e574\", \"M269.4 2.9C265.2 1 260.7 0 256 0s-9.2 1-13.4 2.9L54.3 82.8c-22 9.3-38.4 31-38.3 57.2c.5 99.2 41.3 280.7 213.6 363.2c16.7 8 36.1 8 52.8 0C454.7 420.7 495.5 239.2 496 140c.1-26.2-16.3-47.9-38.3-57.2L269.4 2.9zM144 221.3c0-33.8 27.4-61.3 61.3-61.3c16.2 0 31.8 6.5 43.3 17.9l7.4 7.4 7.4-7.4c11.5-11.5 27.1-17.9 43.3-17.9c33.8 0 61.3 27.4 61.3 61.3c0 16.2-6.5 31.8-17.9 43.3l-82.7 82.7c-6.2 6.2-16.4 6.2-22.6 0l-82.7-82.7c-11.5-11.5-17.9-27.1-17.9-43.3z\"]\n};\nconst faGopuram = {\n prefix: 'fas',\n iconName: 'gopuram',\n icon: [512, 512, [], \"f664\", \"M120 0c13.3 0 24 10.7 24 24l0 8 40 0 0-8c0-13.3 10.7-24 24-24s24 10.7 24 24l0 8 48 0 0-8c0-13.3 10.7-24 24-24s24 10.7 24 24l0 8 40 0 0-8c0-13.3 10.7-24 24-24s24 10.7 24 24l0 8 0 32 0 64c17.7 0 32 14.3 32 32l0 64c17.7 0 32 14.3 32 32l0 96c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32l-64 0 0-160-32 0 0-128-32 0 0-96-32 0 0 96 32 0 0 128 32 0 0 160-80 0 0-48c0-26.5-21.5-48-48-48s-48 21.5-48 48l0 48-80 0 0-160 32 0 0-128 32 0 0-96-32 0 0 96-32 0 0 128-32 0 0 160-64 0c-17.7 0-32-14.3-32-32l0-96c0-17.7 14.3-32 32-32l0-96c0-17.7 14.3-32 32-32l0-64c0-17.7 14.3-32 32-32l0-64 0-32 0-8c0-13.3 10.7-24 24-24zM256 272c-17.7 0-32 14.3-32 32l0 48 64 0 0-48c0-17.7-14.3-32-32-32zm-32-80l0 32 64 0 0-32c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nconst faEarthOceania = {\n prefix: 'fas',\n iconName: 'earth-oceania',\n icon: [512, 512, [\"globe-oceania\"], \"e47b\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM208.6 357.3l-39-13.5c-6.5-2.2-13.6-2.3-20.1-.3l-15.3 4.9c-18.5 5.9-38.5-2.4-47.5-19.5l-3.3-6.2c-10.6-20.1-2.3-45 18.2-54.7l35.3-16.8c2.3-1.1 4.4-2.8 5.9-4.8l5.3-7c7.2-9.6 18.6-15.3 30.6-15.3s23.4 5.7 30.6 15.3l4.6 6.1c2 2.6 4.9 4.5 8.1 5.1c7.8 1.6 15.7-1.5 20.4-7.9l10.4-14.2c2-2.8 5.3-4.4 8.7-4.4c4.4 0 8.4 2.7 10 6.8l10.1 25.9c2.8 7.2 6.7 14 11.5 20.2L311 299.8c5.8 7.4 9 16.6 9 26s-3.2 18.6-9 26L299 367.2c-8.3 10.6-21 16.8-34.4 16.8c-8.4 0-16.6-2.4-23.7-7l-25.4-16.4c-2.2-1.4-4.5-2.5-6.9-3.4zm65.2-214.8L296 164.7c10.1 10.1 2.9 27.3-11.3 27.3l-29.9 0c-5.6 0-11.1-1.2-16.2-3.4l-42.8-19c-14.3-6.3-11.9-27.3 3.4-30.3l38.5-7.7c13.1-2.6 26.7 1.5 36.1 10.9zM248 432c0-8.8 7.2-16 16-16l16 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-16 0c-8.8 0-16-7.2-16-16zM431.2 298.9l8 24c2.8 8.4-1.7 17.4-10.1 20.2s-17.4-1.7-20.2-10.1l-8-24c-2.8-8.4 1.7-17.4 10.1-20.2s17.4 1.7 20.2 10.1zm-19.9 80.4l-32 32c-6.2 6.2-16.4 6.2-22.6 0s-6.2-16.4 0-22.6l32-32c6.2-6.2 16.4-6.2 22.6 0s6.2 16.4 0 22.6z\"]\n};\nconst faGlobeOceania = faEarthOceania;\nconst faSquareXmark = {\n prefix: 'fas',\n iconName: 'square-xmark',\n icon: [448, 512, [10062, \"times-square\", \"xmark-square\"], \"f2d3\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm79 143c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nconst faTimesSquare = faSquareXmark;\nconst faXmarkSquare = faSquareXmark;\nconst faHashtag = {\n prefix: 'fas',\n iconName: 'hashtag',\n icon: [448, 512, [62098], \"23\", \"M181.3 32.4c17.4 2.9 29.2 19.4 26.3 36.8L197.8 128l95.1 0 11.5-69.3c2.9-17.4 19.4-29.2 36.8-26.3s29.2 19.4 26.3 36.8L357.8 128l58.2 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-68.9 0L325.8 320l58.2 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-68.9 0-11.5 69.3c-2.9 17.4-19.4 29.2-36.8 26.3s-29.2-19.4-26.3-36.8l9.8-58.7-95.1 0-11.5 69.3c-2.9 17.4-19.4 29.2-36.8 26.3s-29.2-19.4-26.3-36.8L90.2 384 32 384c-17.7 0-32-14.3-32-32s14.3-32 32-32l68.9 0 21.3-128L64 192c-17.7 0-32-14.3-32-32s14.3-32 32-32l68.9 0 11.5-69.3c2.9-17.4 19.4-29.2 36.8-26.3zM187.1 192L165.8 320l95.1 0 21.3-128-95.1 0z\"]\n};\nconst faUpRightAndDownLeftFromCenter = {\n prefix: 'fas',\n iconName: 'up-right-and-down-left-from-center',\n icon: [512, 512, [\"expand-alt\"], \"f424\", \"M344 0L488 0c13.3 0 24 10.7 24 24l0 144c0 9.7-5.8 18.5-14.8 22.2s-19.3 1.7-26.2-5.2l-39-39-87 87c-9.4 9.4-24.6 9.4-33.9 0l-32-32c-9.4-9.4-9.4-24.6 0-33.9l87-87L327 41c-6.9-6.9-8.9-17.2-5.2-26.2S334.3 0 344 0zM168 512L24 512c-13.3 0-24-10.7-24-24L0 344c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2l39 39 87-87c9.4-9.4 24.6-9.4 33.9 0l32 32c9.4 9.4 9.4 24.6 0 33.9l-87 87 39 39c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8z\"]\n};\nconst faExpandAlt = faUpRightAndDownLeftFromCenter;\nconst faOilCan = {\n prefix: 'fas',\n iconName: 'oil-can',\n icon: [640, 512, [], \"f613\", \"M320 128c17.7 0 32-14.3 32-32s-14.3-32-32-32L192 64c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 32-80 0-48 0-48 0c-26.5 0-48 21.5-48 48l0 64.8c0 19 11.2 36.2 28.5 43.9l67.5 30L96 368c0 26.5 21.5 48 48 48l259.1 0c18.4 0 35.8-7.9 48-21.7L633.5 187.7c12.3-13.9-.3-35.4-18.4-31.5L448 192l-50.5-25.2c-8.9-4.4-18.7-6.8-28.6-6.8L288 160l0-32 32 0zM96 208l0 86.1L48 272.8 48 208l48 0z\"]\n};\nconst faT = {\n prefix: 'fas',\n iconName: 't',\n icon: [384, 512, [116], \"54\", \"M32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l128 0 0 352c0 17.7 14.3 32 32 32s32-14.3 32-32l0-352 128 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L192 32 32 32z\"]\n};\nconst faHippo = {\n prefix: 'fas',\n iconName: 'hippo',\n icon: [640, 512, [129435], \"f6ed\", \"M407 47c9.4-9.4 24.6-9.4 33.9 0l17.2 17.2c1.9-.1 3.9-.2 5.8-.2l32 0c11.2 0 21.9 2.3 31.6 6.5L543 55c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L564 101.9c7.6 12.2 12 26.7 12 42.1c0 10.2 7.4 18.8 16.7 23c27.9 12.5 47.3 40.5 47.3 73c0 26.2-12.6 49.4-32 64l0 32c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-16-64 0 0 16c0 8.8-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16l0-17.6c-11.8-2.4-22.7-7.4-32-14.4c-1.5-1.1-2.9-2.3-4.3-3.5c-17-14.7-27.7-36.4-27.7-60.5c0-8.8-7.2-16-16-16s-16 7.2-16 16c0 44.7 26.2 83.2 64 101.2l0 10.8c0 17.7 14.3 32 32 32l32 0 0 64c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-76c-19.8 7.7-41.4 12-64 12s-44.2-4.3-64-12l0 76c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-118.9L45.9 369.7c-5.4 12.1-19.6 17.6-31.7 12.2S-3.3 362.4 2.1 350.3L24 300.9c5.3-11.9 8-24.7 8-37.7C32 155.7 117.2 68 223.8 64.1l.2-.1 7.2 0L256 64l32 0c41.7 0 83.4 12.1 117.2 25.7c1.7-1.8 3.5-3.6 5.3-5.2L407 81c-9.4-9.4-9.4-24.6 0-33.9zm73 185a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zm88 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48zM480 144a16 16 0 1 0 -32 0 16 16 0 1 0 32 0zm48 16a16 16 0 1 0 0-32 16 16 0 1 0 0 32z\"]\n};\nconst faChartColumn = {\n prefix: 'fas',\n iconName: 'chart-column',\n icon: [512, 512, [], \"e0e3\", \"M32 32c17.7 0 32 14.3 32 32l0 336c0 8.8 7.2 16 16 16l400 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L80 480c-44.2 0-80-35.8-80-80L0 64C0 46.3 14.3 32 32 32zM160 224c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32zm128-64l0 160c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-160c0-17.7 14.3-32 32-32s32 14.3 32 32zm64 32c17.7 0 32 14.3 32 32l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96c0-17.7 14.3-32 32-32zM480 96l0 224c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-224c0-17.7 14.3-32 32-32s32 14.3 32 32z\"]\n};\nconst faInfinity = {\n prefix: 'fas',\n iconName: 'infinity',\n icon: [640, 512, [8734, 9854], \"f534\", \"M0 241.1C0 161 65 96 145.1 96c38.5 0 75.4 15.3 102.6 42.5L320 210.7l72.2-72.2C419.5 111.3 456.4 96 494.9 96C575 96 640 161 640 241.1l0 29.7C640 351 575 416 494.9 416c-38.5 0-75.4-15.3-102.6-42.5L320 301.3l-72.2 72.2C220.5 400.7 183.6 416 145.1 416C65 416 0 351 0 270.9l0-29.7zM274.7 256l-72.2-72.2c-15.2-15.2-35.9-23.8-57.4-23.8C100.3 160 64 196.3 64 241.1l0 29.7c0 44.8 36.3 81.1 81.1 81.1c21.5 0 42.2-8.5 57.4-23.8L274.7 256zm90.5 0l72.2 72.2c15.2 15.2 35.9 23.8 57.4 23.8c44.8 0 81.1-36.3 81.1-81.1l0-29.7c0-44.8-36.3-81.1-81.1-81.1c-21.5 0-42.2 8.5-57.4 23.8L365.3 256z\"]\n};\nconst faVialCircleCheck = {\n prefix: 'fas',\n iconName: 'vial-circle-check',\n icon: [512, 512, [], \"e596\", \"M0 64C0 46.3 14.3 32 32 32l64 0 64 0 64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 170.8c-20.2 28.6-32 63.5-32 101.2c0 25.2 5.3 49.1 14.8 70.8C189.5 463.7 160.6 480 128 480c-53 0-96-43-96-96L32 96C14.3 96 0 81.7 0 64zM96 96l0 96 64 0 0-96L96 96zM224 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L352 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nconst faPersonArrowDownToLine = {\n prefix: 'fas',\n iconName: 'person-arrow-down-to-line',\n icon: [640, 512, [], \"e538\", \"M192 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm-8 352l0-96 16 0 0 96-16 0zm-64 0l-88 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l120 0 80 0 376 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-344 0 0-191.1 28.6 47.5c9.1 15.1 28.8 20 43.9 10.9s20-28.8 10.9-43.9l-58.3-97c-17.4-28.9-48.6-46.6-82.3-46.6l-29.7 0c-33.7 0-64.9 17.7-82.3 46.6l-58.3 97c-9.1 15.1-4.2 34.8 10.9 43.9s34.8 4.2 43.9-10.9L120 256.9 120 448zM464 64l0 242.7-25.4-25.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l80 80c12.5 12.5 32.8 12.5 45.3 0l80-80c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L528 306.7 528 64c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nconst faVoicemail = {\n prefix: 'fas',\n iconName: 'voicemail',\n icon: [640, 512, [], \"f897\", \"M144 320a80 80 0 1 1 0-160 80 80 0 1 1 0 160zm119.8 0c15.3-22.9 24.2-50.4 24.2-80c0-79.5-64.5-144-144-144S0 160.5 0 240s64.5 144 144 144l352 0c79.5 0 144-64.5 144-144s-64.5-144-144-144s-144 64.5-144 144c0 29.6 8.9 57.1 24.2 80l-112.5 0zM496 160a80 80 0 1 1 0 160 80 80 0 1 1 0-160z\"]\n};\nconst faFan = {\n prefix: 'fas',\n iconName: 'fan',\n icon: [512, 512, [], \"f863\", \"M258.6 0c-1.7 0-3.4 .1-5.1 .5C168 17 115.6 102.3 130.5 189.3c2.9 17 8.4 32.9 15.9 47.4L32 224l-2.6 0C13.2 224 0 237.2 0 253.4c0 1.7 .1 3.4 .5 5.1C17 344 102.3 396.4 189.3 381.5c17-2.9 32.9-8.4 47.4-15.9L224 480l0 2.6c0 16.2 13.2 29.4 29.4 29.4c1.7 0 3.4-.1 5.1-.5C344 495 396.4 409.7 381.5 322.7c-2.9-17-8.4-32.9-15.9-47.4L480 288l2.6 0c16.2 0 29.4-13.2 29.4-29.4c0-1.7-.1-3.4-.5-5.1C495 168 409.7 115.6 322.7 130.5c-17 2.9-32.9 8.4-47.4 15.9L288 32l0-2.6C288 13.2 274.8 0 258.6 0zM256 224a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faPersonWalkingLuggage = {\n prefix: 'fas',\n iconName: 'person-walking-luggage',\n icon: [576, 512, [], \"e554\", \"M432 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM347.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L505 232.7l-15.3-36.8C472.5 154.8 432.3 128 387.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1l-25 62.4-59.4 59.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L340.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zM256 274.1c-7.7-4.4-17.4-1.8-21.9 5.9l-32 55.4L147.7 304c-15.3-8.8-34.9-3.6-43.7 11.7L40 426.6c-8.8 15.3-3.6 34.9 11.7 43.7l55.4 32c15.3 8.8 34.9 3.6 43.7-11.7l64-110.9c1.5-2.6 2.6-5.2 3.3-8L261.9 296c4.4-7.7 1.8-17.4-5.9-21.9z\"]\n};\nconst faUpDown = {\n prefix: 'fas',\n iconName: 'up-down',\n icon: [256, 512, [8597, 11021, \"arrows-alt-v\"], \"f338\", \"M145.6 7.7C141 2.8 134.7 0 128 0s-13 2.8-17.6 7.7l-104 112c-6.5 7-8.2 17.2-4.4 25.9S14.5 160 24 160l56 0 0 192-56 0c-9.5 0-18.2 5.7-22 14.4s-2.1 18.9 4.4 25.9l104 112c4.5 4.9 10.9 7.7 17.6 7.7s13-2.8 17.6-7.7l104-112c6.5-7 8.2-17.2 4.4-25.9s-12.5-14.4-22-14.4l-56 0 0-192 56 0c9.5 0 18.2-5.7 22-14.4s2.1-18.9-4.4-25.9l-104-112z\"]\n};\nconst faArrowsAltV = faUpDown;\nconst faCloudMoonRain = {\n prefix: 'fas',\n iconName: 'cloud-moon-rain',\n icon: [576, 512, [], \"f73c\", \"M481.2 0C417 0 363.5 46.5 353.7 107.6c35.4 17.6 60.2 53.3 62.1 95.1c23.2 11 42 29.7 53.1 52.7c4 .4 8.1 .6 12.3 .6c34.9 0 66.7-13.8 89.9-36.1c5.1-4.9 6.4-12.5 3.2-18.7s-10.1-9.7-17-8.6c-4.9 .8-10 1.3-15.2 1.3c-49 0-88.4-39.3-88.4-87.4c0-32.6 18-61.1 44.9-76.1c6.1-3.4 9.3-10.5 7.8-17.4s-7.3-12-14.3-12.6c-3.6-.3-7.3-.5-10.9-.5zM367.9 383.9c44.2 0 80-35.8 80-80c0-39.3-28.4-72.1-65.8-78.7c1.2-5.6 1.9-11.3 1.9-17.2c0-44.2-35.8-80-80-80c-17 0-32.8 5.3-45.8 14.4C241.3 114.6 210.8 96 176 96c-53 0-96 43-96 96l0 1.3c-45.4 7.6-80 47.1-80 94.6c0 53 43 96 96 96l271.9 0zM85.4 420.1c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm96 0c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm96 0c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3zm96 0c-11-7.4-25.9-4.4-33.3 6.7l-32 48c-7.4 11-4.4 25.9 6.7 33.3s25.9 4.4 33.3-6.7l32-48c7.4-11 4.4-25.9-6.7-33.3z\"]\n};\nconst faCalendar = {\n prefix: 'fas',\n iconName: 'calendar',\n icon: [448, 512, [128197, 128198], \"f133\", \"M96 32l0 32L48 64C21.5 64 0 85.5 0 112l0 48 448 0 0-48c0-26.5-21.5-48-48-48l-48 0 0-32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 32L160 64l0-32c0-17.7-14.3-32-32-32S96 14.3 96 32zM448 192L0 192 0 464c0 26.5 21.5 48 48 48l352 0c26.5 0 48-21.5 48-48l0-272z\"]\n};\nconst faTrailer = {\n prefix: 'fas',\n iconName: 'trailer',\n icon: [640, 512, [], \"e041\", \"M48 32C21.5 32 0 53.5 0 80L0 336c0 26.5 21.5 48 48 48l17.1 0c7.8-54.3 54.4-96 110.9-96s103.1 41.7 110.9 96L488 384l8 0 112 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-240c0-26.5-21.5-48-48-48L48 32zM80 96c8.8 0 16 7.2 16 16l0 131.2c-11.4 5.9-22.2 12.9-32 21L64 112c0-8.8 7.2-16 16-16zm96 128c-5.4 0-10.7 .2-16 .7L160 112c0-8.8 7.2-16 16-16s16 7.2 16 16l0 112.7c-5.3-.5-10.6-.7-16-.7zm80 19.2L256 112c0-8.8 7.2-16 16-16s16 7.2 16 16l0 152.2c-9.8-8.1-20.6-15.2-32-21zM368 96c8.8 0 16 7.2 16 16l0 192c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-192c0-8.8 7.2-16 16-16zm112 16l0 192c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-192c0-8.8 7.2-16 16-16s16 7.2 16 16zM176 480a80 80 0 1 0 0-160 80 80 0 1 0 0 160zm0-112a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faBahai = {\n prefix: 'fas',\n iconName: 'bahai',\n icon: [576, 512, [\"haykal\"], \"f666\", \"M288 0c14.5 0 27.2 9.7 30.9 23.8l23.9 89.6 75.9-53.3c11.9-8.3 27.8-7.6 39 1.7s14.6 24.9 8.4 38.1l-39.3 84 92.4 8c14.4 1.2 26.2 12 28.8 26.3s-4.9 28.5-18 34.6l-84.1 39.1 65.7 65.5c10.3 10.2 12.4 26.1 5.1 38.7s-22 18.7-36 14.9L391 386.8l8.2 92.4c1.3 14.4-7.3 27.9-20.9 32.9s-28.9 .1-37.2-11.7l-53.1-76-53.1 76c-8.3 11.9-23.6 16.7-37.2 11.7s-22.2-18.5-20.9-32.9l8.2-92.4L95.4 410.9c-14 3.8-28.8-2.3-36-14.9s-5.2-28.4 5.1-38.7l65.7-65.5L46 252.7c-13.1-6.1-20.5-20.3-18-34.6s14.3-25.1 28.8-26.3l92.4-8-39.3-84c-6.1-13.1-2.7-28.8 8.4-38.1s27.1-10 39-1.7l75.9 53.3 23.9-89.6C260.8 9.7 273.5 0 288 0zm0 156.2l-4.8 18c-2.7 10.1-10.2 18.2-20 21.8s-20.8 2.1-29.3-3.9l-15.2-10.7 7.9 16.8c4.4 9.5 4 20.5-1.3 29.6s-14.5 15-25 15.9l-18.5 1.6 16.8 7.8c9.5 4.4 16.2 13.2 18 23.5s-1.5 20.8-8.9 28.2l-13.2 13.1 17.9-4.8c10.1-2.7 20.9-.3 28.9 6.4s12.2 16.9 11.3 27.3l-1.6 18.5 10.6-15.2c6-8.6 15.8-13.7 26.2-13.7s20.2 5.1 26.2 13.7l10.6 15.2-1.6-18.5c-.9-10.4 3.3-20.6 11.3-27.3s18.8-9.1 28.9-6.4l17.9 4.8-13.2-13.1c-7.4-7.4-10.7-17.9-8.9-28.2s8.5-19.1 18-23.5l16.8-7.8-18.5-1.6c-10.4-.9-19.7-6.8-25-15.9s-5.7-20.1-1.3-29.6l7.9-16.8-15.2 10.7c-8.6 6-19.5 7.5-29.3 3.9s-17.3-11.7-20-21.8l-4.8-18z\"]\n};\nconst faHaykal = faBahai;\nconst faSdCard = {\n prefix: 'fas',\n iconName: 'sd-card',\n icon: [384, 512, [], \"f7c2\", \"M320 0L141.3 0C124.3 0 108 6.7 96 18.7L18.7 96C6.7 108 0 124.3 0 141.3L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64zM160 88l0 48c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-48c0-13.3 10.7-24 24-24s24 10.7 24 24zm80 0l0 48c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-48c0-13.3 10.7-24 24-24s24 10.7 24 24zm80 0l0 48c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-48c0-13.3 10.7-24 24-24s24 10.7 24 24z\"]\n};\nconst faDragon = {\n prefix: 'fas',\n iconName: 'dragon',\n icon: [640, 512, [128009], \"f6d5\", \"M352 124.5l-51.9-13c-6.5-1.6-11.3-7.1-12-13.8s2.8-13.1 8.7-16.1l40.8-20.4L294.4 28.8c-5.5-4.1-7.8-11.3-5.6-17.9S297.1 0 304 0L416 0l32 0 16 0c30.2 0 58.7 14.2 76.8 38.4l57.6 76.8c6.2 8.3 9.6 18.4 9.6 28.8c0 26.5-21.5 48-48 48l-21.5 0c-17 0-33.3-6.7-45.3-18.7L480 160l-32 0 0 21.5c0 24.8 12.8 47.9 33.8 61.1l106.6 66.6c32.1 20.1 51.6 55.2 51.6 93.1C640 462.9 590.9 512 530.2 512L496 512l-64 0L32.3 512c-3.3 0-6.6-.4-9.6-1.4C13.5 507.8 6 501 2.4 492.1C1 488.7 .2 485.2 0 481.4c-.2-3.7 .3-7.3 1.3-10.7c2.8-9.2 9.6-16.7 18.6-20.4c3-1.2 6.2-2 9.5-2.2L433.3 412c8.3-.7 14.7-7.7 14.7-16.1c0-4.3-1.7-8.4-4.7-11.4l-44.4-44.4c-30-30-46.9-70.7-46.9-113.1l0-45.5 0-57zM512 72.3c0-.1 0-.2 0-.3s0-.2 0-.3l0 .6zm-1.3 7.4L464.3 68.1c-.2 1.3-.3 2.6-.3 3.9c0 13.3 10.7 24 24 24c10.6 0 19.5-6.8 22.7-16.3zM130.9 116.5c16.3-14.5 40.4-16.2 58.5-4.1l130.6 87 0 27.5c0 32.8 8.4 64.8 24 93l-232 0c-6.7 0-12.7-4.2-15-10.4s-.5-13.3 4.6-17.7L171 232.3 18.4 255.8c-7 1.1-13.9-2.6-16.9-9s-1.5-14.1 3.8-18.8L130.9 116.5z\"]\n};\nconst faShoePrints = {\n prefix: 'fas',\n iconName: 'shoe-prints',\n icon: [640, 512, [], \"f54b\", \"M416 0C352.3 0 256 32 256 32l0 128c48 0 76 16 104 32s56 32 104 32c56.4 0 176-16 176-96S512 0 416 0zM128 96c0 35.3 28.7 64 64 64l32 0 0-128-32 0c-35.3 0-64 28.7-64 64zM288 512c96 0 224-48 224-128s-119.6-96-176-96c-48 0-76 16-104 32s-56 32-104 32l0 128s96.3 32 160 32zM0 416c0 35.3 28.7 64 64 64l32 0 0-128-32 0c-35.3 0-64 28.7-64 64z\"]\n};\nconst faCirclePlus = {\n prefix: 'fas',\n iconName: 'circle-plus',\n icon: [512, 512, [\"plus-circle\"], \"f055\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM232 344l0-64-64 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l64 0 0-64c0-13.3 10.7-24 24-24s24 10.7 24 24l0 64 64 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-64 0 0 64c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n};\nconst faPlusCircle = faCirclePlus;\nconst faFaceGrinTongueWink = {\n prefix: 'fas',\n iconName: 'face-grin-tongue-wink',\n icon: [512, 512, [128540, \"grin-tongue-wink\"], \"f58b\", \"M174.5 498.8C73.1 464.7 0 368.9 0 256C0 114.6 114.6 0 256 0S512 114.6 512 256c0 112.9-73.1 208.7-174.5 242.8C346.7 484 352 466.6 352 448l0-46.9c24.3-17.5 43.6-41.6 55.4-69.6c5-11.8-7-22.5-19.3-18.7c-39.7 12.2-84.5 19-131.8 19s-92.1-6.8-131.8-19c-12.3-3.8-24.3 6.9-19.3 18.7c11.7 27.8 30.8 51.7 54.8 69.2l0 47.3c0 18.6 5.3 36 14.5 50.8zm20.7-265.2c5.3 7.1 15.3 8.5 22.4 3.2s8.5-15.3 3.2-22.4c-30.4-40.5-91.2-40.5-121.6 0c-5.3 7.1-3.9 17.1 3.2 22.4s17.1 3.9 22.4-3.2c17.6-23.5 52.8-23.5 70.4 0zM336 272a64 64 0 1 0 0-128 64 64 0 1 0 0 128zM320 402.6l0 45.4c0 35.3-28.7 64-64 64s-64-28.7-64-64l0-45.4c0-14.7 11.9-26.6 26.6-26.6l2 0c11.3 0 21.1 7.9 23.6 18.9c2.8 12.6 20.8 12.6 23.6 0c2.5-11.1 12.3-18.9 23.6-18.9l2 0c14.7 0 26.6 11.9 26.6 26.6zM336 184a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faGrinTongueWink = faFaceGrinTongueWink;\nconst faHandHolding = {\n prefix: 'fas',\n iconName: 'hand-holding',\n icon: [576, 512, [], \"f4bd\", \"M559.7 392.2c17.8-13.1 21.6-38.1 8.5-55.9s-38.1-21.6-55.9-8.5L392.6 416 272 416c-8.8 0-16-7.2-16-16s7.2-16 16-16l16 0 64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0-16 0-78.3 0c-29.1 0-57.3 9.9-80 28L68.8 384 32 384c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l160 0 160.5 0c29 0 57.3-9.3 80.7-26.5l126.6-93.3zm-367-8.2c.3 0 .6 0 .9 0c0 0 0 0 0 0c-.3 0-.6 0-.9 0z\"]\n};\nconst faPlugCircleExclamation = {\n prefix: 'fas',\n iconName: 'plug-circle-exclamation',\n icon: [576, 512, [], \"e55d\", \"M96 0C78.3 0 64 14.3 64 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM288 0c-17.7 0-32 14.3-32 32l0 96 64 0 0-96c0-17.7-14.3-32-32-32zM32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l0 32c0 77.4 55 142 128 156.8l0 67.2c0 17.7 14.3 32 32 32s32-14.3 32-32l0-67.2c12.3-2.5 24.1-6.4 35.1-11.5c-2.1-10.8-3.1-21.9-3.1-33.3c0-80.3 53.8-148 127.3-169.2c.5-2.2 .7-4.5 .7-6.8c0-17.7-14.3-32-32-32L32 160zM432 512a144 144 0 1 0 0-288 144 144 0 1 0 0 288zm0-96a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm0-144c8.8 0 16 7.2 16 16l0 80c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-80c0-8.8 7.2-16 16-16z\"]\n};\nconst faLinkSlash = {\n prefix: 'fas',\n iconName: 'link-slash',\n icon: [640, 512, [\"chain-broken\", \"chain-slash\", \"unlink\"], \"f127\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L489.3 358.2l90.5-90.5c56.5-56.5 56.5-148 0-204.5c-50-50-128.8-56.5-186.3-15.4l-1.6 1.1c-14.4 10.3-17.7 30.3-7.4 44.6s30.3 17.7 44.6 7.4l1.6-1.1c32.1-22.9 76-19.3 103.8 8.6c31.5 31.5 31.5 82.5 0 114l-96 96-31.9-25C430.9 239.6 420.1 175.1 377 132c-52.2-52.3-134.5-56.2-191.3-11.7L38.8 5.1zM239 162c30.1-14.9 67.7-9.9 92.8 15.3c20 20 27.5 48.3 21.7 74.5L239 162zM406.6 416.4L220.9 270c-2.1 39.8 12.2 80.1 42.2 110c38.9 38.9 94.4 51 143.6 36.3zm-290-228.5L60.2 244.3c-56.5 56.5-56.5 148 0 204.5c50 50 128.8 56.5 186.3 15.4l1.6-1.1c14.4-10.3 17.7-30.3 7.4-44.6s-30.3-17.7-44.6-7.4l-1.6 1.1c-32.1 22.9-76 19.3-103.8-8.6C74 372 74 321 105.5 289.5l61.8-61.8-50.6-39.9z\"]\n};\nconst faChainBroken = faLinkSlash;\nconst faChainSlash = faLinkSlash;\nconst faUnlink = faLinkSlash;\nconst faClone = {\n prefix: 'fas',\n iconName: 'clone',\n icon: [512, 512, [], \"f24d\", \"M288 448L64 448l0-224 64 0 0-64-64 0c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l224 0c35.3 0 64-28.7 64-64l0-64-64 0 0 64zm-64-96l224 0c35.3 0 64-28.7 64-64l0-224c0-35.3-28.7-64-64-64L224 0c-35.3 0-64 28.7-64 64l0 224c0 35.3 28.7 64 64 64z\"]\n};\nconst faPersonWalkingArrowLoopLeft = {\n prefix: 'fas',\n iconName: 'person-walking-arrow-loop-left',\n icon: [640, 512, [], \"e551\", \"M208 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM123.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L281 232.7l-15.3-36.8C248.5 154.8 208.3 128 163.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1L68.7 398 9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L116.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zm347.7 119c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L461.3 384l18.7 0c88.4 0 160-71.6 160-160s-71.6-160-160-160L352 64c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0c53 0 96 43 96 96s-43 96-96 96l-18.7 0 25.4-25.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3l80 80z\"]\n};\nconst faArrowUpZA = {\n prefix: 'fas',\n iconName: 'arrow-up-z-a',\n icon: [576, 512, [\"sort-alpha-up-alt\"], \"f882\", \"M183.6 42.4C177.5 35.8 169 32 160 32s-17.5 3.8-23.6 10.4l-88 96c-11.9 13-11.1 33.3 2 45.2s33.3 11.1 45.2-2L128 146.3 128 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-301.7 32.4 35.4c11.9 13 32.2 13.9 45.2 2s13.9-32.2 2-45.2l-88-96zM320 64c0 17.7 14.3 32 32 32l50.7 0-73.4 73.4c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8l128 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-50.7 0 73.4-73.4c9.2-9.2 11.9-22.9 6.9-34.9s-16.6-19.8-29.6-19.8L352 32c-17.7 0-32 14.3-32 32zm96 192c-12.1 0-23.2 6.8-28.6 17.7l-64 128-16 32c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l7.2-14.3 88.4 0 7.2 14.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9l-16-32-64-128C439.2 262.8 428.1 256 416 256zM395.8 400L416 359.6 436.2 400l-40.4 0z\"]\n};\nconst faSortAlphaUpAlt = faArrowUpZA;\nconst faFireFlameCurved = {\n prefix: 'fas',\n iconName: 'fire-flame-curved',\n icon: [384, 512, [\"fire-alt\"], \"f7e4\", \"M153.6 29.9l16-21.3C173.6 3.2 180 0 186.7 0C198.4 0 208 9.6 208 21.3V43.5c0 13.1 5.4 25.7 14.9 34.7L307.6 159C356.4 205.6 384 270.2 384 337.7C384 434 306 512 209.7 512H192C86 512 0 426 0 320v-3.8c0-48.8 19.4-95.6 53.9-130.1l3.5-3.5c4.2-4.2 10-6.6 16-6.6C85.9 176 96 186.1 96 198.6V288c0 35.3 28.7 64 64 64s64-28.7 64-64v-3.9c0-18-7.2-35.3-19.9-48l-38.6-38.6c-24-24-37.5-56.7-37.5-90.7c0-27.7 9-54.8 25.6-76.9z\"]\n};\nconst faFireAlt = faFireFlameCurved;\nconst faTornado = {\n prefix: 'fas',\n iconName: 'tornado',\n icon: [448, 512, [127786], \"f76f\", \"M0 32L0 45.6C0 62.7 1.7 79.6 5 96l352.8 0c3.2-6.9 7.5-13.3 13-18.8l38.6-38.6c4.2-4.2 6.6-10 6.6-16C416 10.1 405.9 0 393.4 0L32 0C14.3 0 0 14.3 0 32zm352.2 96L13.6 128c12.2 35.9 32.3 68.7 58.8 96L412 224l-47.2-62.9c-7.3-9.7-11.6-21.2-12.6-33.1zm-226 138.2l116.4 68.5c8.2 4.8 15.8 10.7 22.5 17.3L445 352c2-9.8 3-19.9 3-30.1c0-23-5.3-45.5-15.3-65.9l-322.5 0c5.2 3.6 10.5 7 16 10.2zM288 384c10.3 21.4 13.8 45.5 9.9 69l-5.9 35.7c-2 12.2 7.4 23.4 19.8 23.4c5.3 0 10.4-2.1 14.2-5.9l78.2-78.2c12.8-12.8 23.1-27.7 30.4-43.9L288 384z\"]\n};\nconst faFileCirclePlus = {\n prefix: 'fas',\n iconName: 'file-circle-plus',\n icon: [576, 512, [58606], \"e494\", \"M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 38.6C310.1 219.5 256 287.4 256 368c0 59.1 29.1 111.3 73.7 143.3c-3.2 .5-6.4 .7-9.7 .7L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128zm48 96a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm16 80c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 48-48 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l48 0 0 48c0 8.8 7.2 16 16 16s16-7.2 16-16l0-48 48 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-48 0 0-48z\"]\n};\nconst faBookQuran = {\n prefix: 'fas',\n iconName: 'book-quran',\n icon: [448, 512, [\"quran\"], \"f687\", \"M352 0c53 0 96 43 96 96l0 320c0 53-43 96-96 96L64 512l-32 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l0-64c-17.7 0-32-14.3-32-32L0 32C0 14.3 14.3 0 32 0L64 0 352 0zm0 384L96 384l0 64 256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32zM274.1 150.2l-8.9 21.4-23.1 1.9c-5.7 .5-8 7.5-3.7 11.2L256 199.8l-5.4 22.6c-1.3 5.5 4.7 9.9 9.6 6.9L280 217.2l19.8 12.1c4.9 3 10.9-1.4 9.6-6.9L304 199.8l17.6-15.1c4.3-3.7 2-10.8-3.7-11.2l-23.1-1.9-8.9-21.4c-2.2-5.3-9.6-5.3-11.8 0zM96 192c0 70.7 57.3 128 128 128c25.6 0 49.5-7.5 69.5-20.5c3.2-2.1 4.5-6.2 3.1-9.7s-5.2-5.6-9-4.8c-6.1 1.2-12.5 1.9-19 1.9c-52.4 0-94.9-42.5-94.9-94.9s42.5-94.9 94.9-94.9c6.5 0 12.8 .7 19 1.9c3.8 .8 7.5-1.3 9-4.8s.2-7.6-3.1-9.7C273.5 71.5 249.6 64 224 64C153.3 64 96 121.3 96 192z\"]\n};\nconst faQuran = faBookQuran;\nconst faAnchor = {\n prefix: 'fas',\n iconName: 'anchor',\n icon: [576, 512, [9875], \"f13d\", \"M320 96a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm21.1 80C367 158.8 384 129.4 384 96c0-53-43-96-96-96s-96 43-96 96c0 33.4 17 62.8 42.9 80L224 176c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 208-48 0c-53 0-96-43-96-96l0-6.1 7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9L97 263c-9.4-9.4-24.6-9.4-33.9 0L7 319c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7 0 6.1c0 88.4 71.6 160 160 160l80 0 80 0c88.4 0 160-71.6 160-160l0-6.1 7 7c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-56-56c-9.4-9.4-24.6-9.4-33.9 0l-56 56c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l7-7 0 6.1c0 53-43 96-96 96l-48 0 0-208 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-10.9 0z\"]\n};\nconst faBorderAll = {\n prefix: 'fas',\n iconName: 'border-all',\n icon: [448, 512, [], \"f84c\", \"M384 96l0 128-128 0 0-128 128 0zm0 192l0 128-128 0 0-128 128 0zM192 224L64 224 64 96l128 0 0 128zM64 288l128 0 0 128L64 416l0-128zM64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32z\"]\n};\nconst faFaceAngry = {\n prefix: 'fas',\n iconName: 'face-angry',\n icon: [512, 512, [128544, \"angry\"], \"f556\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM338.7 395.9c6.6-5.9 7.1-16 1.2-22.6C323.8 355.4 295.7 336 256 336s-67.8 19.4-83.9 37.3c-5.9 6.6-5.4 16.7 1.2 22.6s16.7 5.4 22.6-1.2c11.7-13 31.6-26.7 60.1-26.7s48.4 13.7 60.1 26.7c5.9 6.6 16 7.1 22.6 1.2zM176.4 272c17.7 0 32-14.3 32-32c0-1.5-.1-3-.3-4.4l10.9 3.6c8.4 2.8 17.4-1.7 20.2-10.1s-1.7-17.4-10.1-20.2l-96-32c-8.4-2.8-17.4 1.7-20.2 10.1s1.7 17.4 10.1 20.2l30.7 10.2c-5.8 5.8-9.3 13.8-9.3 22.6c0 17.7 14.3 32 32 32zm192-32c0-8.9-3.6-17-9.5-22.8l30.2-10.1c8.4-2.8 12.9-11.9 10.1-20.2s-11.9-12.9-20.2-10.1l-96 32c-8.4 2.8-12.9 11.9-10.1 20.2s11.9 12.9 20.2 10.1l11.7-3.9c-.2 1.5-.3 3.1-.3 4.7c0 17.7 14.3 32 32 32s32-14.3 32-32z\"]\n};\nconst faAngry = faFaceAngry;\nconst faCookieBite = {\n prefix: 'fas',\n iconName: 'cookie-bite',\n icon: [512, 512, [], \"f564\", \"M257.5 27.6c-.8-5.4-4.9-9.8-10.3-10.6c-22.1-3.1-44.6 .9-64.4 11.4l-74 39.5C89.1 78.4 73.2 94.9 63.4 115L26.7 190.6c-9.8 20.1-13 42.9-9.1 64.9l14.5 82.8c3.9 22.1 14.6 42.3 30.7 57.9l60.3 58.4c16.1 15.6 36.6 25.6 58.7 28.7l83 11.7c22.1 3.1 44.6-.9 64.4-11.4l74-39.5c19.7-10.5 35.6-27 45.4-47.2l36.7-75.5c9.8-20.1 13-42.9 9.1-64.9c-.9-5.3-5.3-9.3-10.6-10.1c-51.5-8.2-92.8-47.1-104.5-97.4c-1.8-7.6-8-13.4-15.7-14.6c-54.6-8.7-97.7-52-106.2-106.8zM208 144a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM144 336a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm224-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faArrowTrendDown = {\n prefix: 'fas',\n iconName: 'arrow-trend-down',\n icon: [576, 512, [], \"e097\", \"M384 352c-17.7 0-32 14.3-32 32s14.3 32 32 32l160 0c17.7 0 32-14.3 32-32l0-160c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 82.7L342.6 137.4c-12.5-12.5-32.8-12.5-45.3 0L192 242.7 54.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0L320 205.3 466.7 352 384 352z\"]\n};\nconst faRss = {\n prefix: 'fas',\n iconName: 'rss',\n icon: [448, 512, [\"feed\"], \"f09e\", \"M0 64C0 46.3 14.3 32 32 32c229.8 0 416 186.2 416 416c0 17.7-14.3 32-32 32s-32-14.3-32-32C384 253.6 226.4 96 32 96C14.3 96 0 81.7 0 64zM0 416a64 64 0 1 1 128 0A64 64 0 1 1 0 416zM32 160c159.1 0 288 128.9 288 288c0 17.7-14.3 32-32 32s-32-14.3-32-32c0-123.7-100.3-224-224-224c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faFeed = faRss;\nconst faDrawPolygon = {\n prefix: 'fas',\n iconName: 'draw-polygon',\n icon: [448, 512, [], \"f5ee\", \"M96 151.4l0 209.1c9.7 5.6 17.8 13.7 23.4 23.4l209.1 0c0-.1 .1-.2 .1-.3l-4.5-7.9-32-56s0 0 0 0c-1.4 .1-2.8 .1-4.2 .1c-35.3 0-64-28.7-64-64s28.7-64 64-64c1.4 0 2.8 0 4.2 .1c0 0 0 0 0 0l32-56 4.5-7.9-.1-.3-209.1 0c-5.6 9.7-13.7 17.8-23.4 23.4zM384.3 352c35.2 .2 63.7 28.7 63.7 64c0 35.3-28.7 64-64 64c-23.7 0-44.4-12.9-55.4-32l-209.1 0c-11.1 19.1-31.7 32-55.4 32c-35.3 0-64-28.7-64-64c0-23.7 12.9-44.4 32-55.4l0-209.1C12.9 140.4 0 119.7 0 96C0 60.7 28.7 32 64 32c23.7 0 44.4 12.9 55.4 32l209.1 0c11.1-19.1 31.7-32 55.4-32c35.3 0 64 28.7 64 64c0 35.3-28.5 63.8-63.7 64l-4.5 7.9-32 56-2.3 4c4.2 8.5 6.5 18 6.5 28.1s-2.3 19.6-6.5 28.1l2.3 4 32 56 4.5 7.9z\"]\n};\nconst faScaleBalanced = {\n prefix: 'fas',\n iconName: 'scale-balanced',\n icon: [640, 512, [9878, \"balance-scale\"], \"f24e\", \"M384 32l128 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L398.4 96c-5.2 25.8-22.9 47.1-46.4 57.3L352 448l160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-192 0-192 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l160 0 0-294.7c-23.5-10.3-41.2-31.6-46.4-57.3L128 96c-17.7 0-32-14.3-32-32s14.3-32 32-32l128 0c14.6-19.4 37.8-32 64-32s49.4 12.6 64 32zm55.6 288l144.9 0L512 195.8 439.6 320zM512 416c-62.9 0-115.2-34-126-78.9c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1C627.2 382 574.9 416 512 416zM126.8 195.8L54.4 320l144.9 0L126.8 195.8zM.9 337.1c-2.6-11 1-22.3 6.7-32.1l95.2-163.2c5-8.6 14.2-13.8 24.1-13.8s19.1 5.3 24.1 13.8l95.2 163.2c5.7 9.8 9.3 21.1 6.7 32.1C242 382 189.7 416 126.8 416S11.7 382 .9 337.1z\"]\n};\nconst faBalanceScale = faScaleBalanced;\nconst faGaugeSimpleHigh = {\n prefix: 'fas',\n iconName: 'gauge-simple-high',\n icon: [512, 512, [61668, \"tachometer\", \"tachometer-fast\"], \"f62a\", \"M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm320 96c0-15.9-5.8-30.4-15.3-41.6l76.6-147.4c6.1-11.8 1.5-26.3-10.2-32.4s-26.2-1.5-32.4 10.2L262.1 288.3c-2-.2-4-.3-6.1-.3c-35.3 0-64 28.7-64 64s28.7 64 64 64s64-28.7 64-64z\"]\n};\nconst faTachometer = faGaugeSimpleHigh;\nconst faTachometerFast = faGaugeSimpleHigh;\nconst faShower = {\n prefix: 'fas',\n iconName: 'shower',\n icon: [512, 512, [128703], \"f2cc\", \"M64 131.9C64 112.1 80.1 96 99.9 96c9.5 0 18.6 3.8 25.4 10.5l16.2 16.2c-21 38.9-17.4 87.5 10.9 123L151 247c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0L345 121c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-1.3 1.3c-35.5-28.3-84.2-31.9-123-10.9L170.5 61.3C151.8 42.5 126.4 32 99.9 32C44.7 32 0 76.7 0 131.9L0 448c0 17.7 14.3 32 32 32s32-14.3 32-32l0-316.1zM256 352a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm64 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0-128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm64 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0-128a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm64 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm32-32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faDesktop = {\n prefix: 'fas',\n iconName: 'desktop',\n icon: [576, 512, [128421, 61704, \"desktop-alt\"], \"f390\", \"M64 0C28.7 0 0 28.7 0 64L0 352c0 35.3 28.7 64 64 64l176 0-10.7 32L160 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-69.3 0L336 416l176 0c35.3 0 64-28.7 64-64l0-288c0-35.3-28.7-64-64-64L64 0zM512 64l0 224L64 288 64 64l448 0z\"]\n};\nconst faDesktopAlt = faDesktop;\nconst faM = {\n prefix: 'fas',\n iconName: 'm',\n icon: [448, 512, [109], \"4d\", \"M22.7 33.4c13.5-4.1 28.1 1.1 35.9 12.9L224 294.3 389.4 46.3c7.8-11.7 22.4-17 35.9-12.9S448 49.9 448 64l0 384c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-278.3L250.6 369.8c-5.9 8.9-15.9 14.2-26.6 14.2s-20.7-5.3-26.6-14.2L64 169.7 64 448c0 17.7-14.3 32-32 32s-32-14.3-32-32L0 64C0 49.9 9.2 37.5 22.7 33.4z\"]\n};\nconst faTableList = {\n prefix: 'fas',\n iconName: 'table-list',\n icon: [512, 512, [\"th-list\"], \"f00b\", \"M0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zm64 0l0 64 64 0 0-64L64 96zm384 0L192 96l0 64 256 0 0-64zM64 224l0 64 64 0 0-64-64 0zm384 0l-256 0 0 64 256 0 0-64zM64 352l0 64 64 0 0-64-64 0zm384 0l-256 0 0 64 256 0 0-64z\"]\n};\nconst faThList = faTableList;\nconst faCommentSms = {\n prefix: 'fas',\n iconName: 'comment-sms',\n icon: [512, 512, [\"sms\"], \"f7cd\", \"M256 448c141.4 0 256-93.1 256-208S397.4 32 256 32S0 125.1 0 240c0 45.1 17.7 86.8 47.7 120.9c-1.9 24.5-11.4 46.3-21.4 62.9c-5.5 9.2-11.1 16.6-15.2 21.6c-2.1 2.5-3.7 4.4-4.9 5.7c-.6 .6-1 1.1-1.3 1.4l-.3 .3c0 0 0 0 0 0c0 0 0 0 0 0s0 0 0 0s0 0 0 0c-4.6 4.6-5.9 11.4-3.4 17.4c2.5 6 8.3 9.9 14.8 9.9c28.7 0 57.6-8.9 81.6-19.3c22.9-10 42.4-21.9 54.3-30.6c31.8 11.5 67 17.9 104.1 17.9zM96 212.8c0-20.3 16.5-36.8 36.8-36.8l19.2 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-19.2 0c-2.7 0-4.8 2.2-4.8 4.8c0 1.6 .8 3.1 2.2 4l29.4 19.6c10.3 6.8 16.4 18.3 16.4 30.7c0 20.3-16.5 36.8-36.8 36.8L112 304c-8.8 0-16-7.2-16-16s7.2-16 16-16l27.2 0c2.7 0 4.8-2.2 4.8-4.8c0-1.6-.8-3.1-2.2-4l-29.4-19.6C102.2 236.7 96 225.2 96 212.8zM372.8 176l19.2 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-19.2 0c-2.7 0-4.8 2.2-4.8 4.8c0 1.6 .8 3.1 2.2 4l29.4 19.6c10.2 6.8 16.4 18.3 16.4 30.7c0 20.3-16.5 36.8-36.8 36.8L352 304c-8.8 0-16-7.2-16-16s7.2-16 16-16l27.2 0c2.7 0 4.8-2.2 4.8-4.8c0-1.6-.8-3.1-2.2-4l-29.4-19.6c-10.2-6.8-16.4-18.3-16.4-30.7c0-20.3 16.5-36.8 36.8-36.8zm-152 6.4L256 229.3l35.2-46.9c4.1-5.5 11.3-7.8 17.9-5.6s10.9 8.3 10.9 15.2l0 96c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-48-19.2 25.6c-3 4-7.8 6.4-12.8 6.4s-9.8-2.4-12.8-6.4L224 240l0 48c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-96c0-6.9 4.4-13 10.9-15.2s13.7 .1 17.9 5.6z\"]\n};\nconst faSms = faCommentSms;\nconst faBook = {\n prefix: 'fas',\n iconName: 'book',\n icon: [448, 512, [128212], \"f02d\", \"M96 0C43 0 0 43 0 96L0 416c0 53 43 96 96 96l288 0 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l0-64c17.7 0 32-14.3 32-32l0-320c0-17.7-14.3-32-32-32L384 0 96 0zm0 384l256 0 0 64L96 448c-17.7 0-32-14.3-32-32s14.3-32 32-32zm32-240c0-8.8 7.2-16 16-16l192 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-192 0c-8.8 0-16-7.2-16-16zm16 48l192 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-192 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faUserPlus = {\n prefix: 'fas',\n iconName: 'user-plus',\n icon: [640, 512, [], \"f234\", \"M96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM0 482.3C0 383.8 79.8 304 178.3 304l91.4 0C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7L29.7 512C13.3 512 0 498.7 0 482.3zM504 312l0-64-64 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l64 0 0-64c0-13.3 10.7-24 24-24s24 10.7 24 24l0 64 64 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-64 0 0 64c0 13.3-10.7 24-24 24s-24-10.7-24-24z\"]\n};\nconst faCheck = {\n prefix: 'fas',\n iconName: 'check',\n icon: [448, 512, [10003, 10004], \"f00c\", \"M438.6 105.4c12.5 12.5 12.5 32.8 0 45.3l-256 256c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 338.7 393.4 105.4c12.5-12.5 32.8-12.5 45.3 0z\"]\n};\nconst faBatteryThreeQuarters = {\n prefix: 'fas',\n iconName: 'battery-three-quarters',\n icon: [576, 512, [\"battery-4\"], \"f241\", \"M464 160c8.8 0 16 7.2 16 16l0 160c0 8.8-7.2 16-16 16L80 352c-8.8 0-16-7.2-16-16l0-160c0-8.8 7.2-16 16-16l384 0zM80 96C35.8 96 0 131.8 0 176L0 336c0 44.2 35.8 80 80 80l384 0c44.2 0 80-35.8 80-80l0-16c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l0-16c0-44.2-35.8-80-80-80L80 96zm272 96L96 192l0 128 256 0 0-128z\"]\n};\nconst faBattery4 = faBatteryThreeQuarters;\nconst faHouseCircleCheck = {\n prefix: 'fas',\n iconName: 'house-circle-check',\n icon: [640, 512, [], \"e509\", \"M320.7 352c8.1-89.7 83.5-160 175.3-160c8.9 0 17.6 .7 26.1 1.9L309.5 7c-6-5-14-7-21-7s-15 1-22 8L10 231.5c-7 7-10 15-10 24c0 18 14 32.1 32 32.1l32 0 0 69.7c-.1 .9-.1 1.8-.1 2.8l0 112c0 22.1 17.9 40 40 40l16 0c1.2 0 2.4-.1 3.6-.2c1.5 .1 3 .2 4.5 .2l31.9 0 24 0c22.1 0 40-17.9 40-40l0-24 0-64c0-17.7 14.3-32 32-32l64 0 .7 0zM640 368a144 144 0 1 0 -288 0 144 144 0 1 0 288 0zm-76.7-43.3c6.2 6.2 6.2 16.4 0 22.6l-72 72c-6.2 6.2-16.4 6.2-22.6 0l-40-40c-6.2-6.2-6.2-16.4 0-22.6s16.4-6.2 22.6 0L480 385.4l60.7-60.7c6.2-6.2 16.4-6.2 22.6 0z\"]\n};\nconst faAngleLeft = {\n prefix: 'fas',\n iconName: 'angle-left',\n icon: [320, 512, [8249], \"f104\", \"M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 246.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z\"]\n};\nconst faDiagramSuccessor = {\n prefix: 'fas',\n iconName: 'diagram-successor',\n icon: [512, 512, [], \"e47a\", \"M512 416l0-64c0-35.3-28.7-64-64-64L64 288c-35.3 0-64 28.7-64 64l0 64c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64zM64 160l0-64 144 0 16 0 0 64L64 160zm224 0l0-64 80 0c8.8 0 16 7.2 16 16l0 16-38.1 0c-21.4 0-32.1 25.9-17 41L399 239c9.4 9.4 24.6 9.4 33.9 0L503 169c15.1-15.1 4.4-41-17-41L448 128l0-16c0-44.2-35.8-80-80-80L224 32l-16 0L64 32C28.7 32 0 60.7 0 96l0 64c0 35.3 28.7 64 64 64l160 0c35.3 0 64-28.7 64-64z\"]\n};\nconst faTruckArrowRight = {\n prefix: 'fas',\n iconName: 'truck-arrow-right',\n icon: [640, 512, [], \"e58b\", \"M0 48C0 21.5 21.5 0 48 0L368 0c26.5 0 48 21.5 48 48l0 48 50.7 0c17 0 33.3 6.7 45.3 18.7L589.3 192c12 12 18.7 28.3 18.7 45.3l0 18.7 0 32 0 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0c0 53-43 96-96 96s-96-43-96-96l-128 0c0 53-43 96-96 96s-96-43-96-96l-16 0c-26.5 0-48-21.5-48-48L0 48zM416 256l128 0 0-18.7L466.7 160 416 160l0 96zM160 464a48 48 0 1 0 0-96 48 48 0 1 0 0 96zm368-48a48 48 0 1 0 -96 0 48 48 0 1 0 96 0zM257 95c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l39 39L96 168c-13.3 0-24 10.7-24 24s10.7 24 24 24l166.1 0-39 39c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l80-80c9.4-9.4 9.4-24.6 0-33.9L257 95z\"]\n};\nconst faArrowsSplitUpAndLeft = {\n prefix: 'fas',\n iconName: 'arrows-split-up-and-left',\n icon: [512, 512, [], \"e4bc\", \"M246.6 150.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l96-96c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L352 109.3 352 384c0 35.3 28.7 64 64 64l64 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-64 0c-70.7 0-128-57.3-128-128c0-35.3-28.7-64-64-64l-114.7 0 41.4 41.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0l-96-96c-12.5-12.5-12.5-32.8 0-45.3l96-96c12.5-12.5 32.8-12.5 45.3 0s12.5 32.8 0 45.3L109.3 256 224 256c23.3 0 45.2 6.2 64 17.1l0-163.9-41.4 41.4z\"]\n};\nconst faHandFist = {\n prefix: 'fas',\n iconName: 'hand-fist',\n icon: [448, 512, [9994, \"fist-raised\"], \"f6de\", \"M192 0c17.7 0 32 14.3 32 32l0 112-64 0 0-112c0-17.7 14.3-32 32-32zM64 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 80-64 0 0-80zm192 0c0-17.7 14.3-32 32-32s32 14.3 32 32l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-96zm96 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 64c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-64zm-96 88l0-.6c9.4 5.4 20.3 8.6 32 8.6c13.2 0 25.4-4 35.6-10.8c8.7 24.9 32.5 42.8 60.4 42.8c11.7 0 22.6-3.1 32-8.6l0 8.6c0 52.3-25.1 98.8-64 128l0 96c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-78.4c-17.3-7.9-33.2-18.8-46.9-32.5L69.5 357.5C45.5 333.5 32 300.9 32 267l0-27c0-35.3 28.7-64 64-64l88 0c22.1 0 40 17.9 40 40s-17.9 40-40 40l-56 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l56 0c39.8 0 72-32.2 72-72z\"]\n};\nconst faFistRaised = faHandFist;\nconst faCloudMoon = {\n prefix: 'fas',\n iconName: 'cloud-moon',\n icon: [640, 512, [], \"f6c3\", \"M495.8 0c5.5 0 10.9 .2 16.3 .7c7 .6 12.8 5.7 14.3 12.5s-1.6 13.9-7.7 17.3c-44.4 25.2-74.4 73-74.4 127.8c0 81 65.5 146.6 146.2 146.6c8.6 0 17-.7 25.1-2.1c6.9-1.2 13.8 2.2 17 8.5s1.9 13.8-3.1 18.7c-34.5 33.6-81.7 54.4-133.6 54.4c-9.3 0-18.4-.7-27.4-1.9c-11.2-22.6-29.8-40.9-52.6-51.7c-2.7-58.5-50.3-105.3-109.2-106.7c-1.7-10.4-2.6-21-2.6-31.8C304 86.1 389.8 0 495.8 0zM447.9 431.9c0 44.2-35.8 80-80 80L96 511.9c-53 0-96-43-96-96c0-47.6 34.6-87 80-94.6l0-1.3c0-53 43-96 96-96c34.9 0 65.4 18.6 82.2 46.4c13-9.1 28.8-14.4 45.8-14.4c44.2 0 80 35.8 80 80c0 5.9-.6 11.7-1.9 17.2c37.4 6.7 65.8 39.4 65.8 78.7z\"]\n};\nconst faBriefcase = {\n prefix: 'fas',\n iconName: 'briefcase',\n icon: [512, 512, [128188], \"f0b1\", \"M184 48l144 0c4.4 0 8 3.6 8 8l0 40L176 96l0-40c0-4.4 3.6-8 8-8zm-56 8l0 40L64 96C28.7 96 0 124.7 0 160l0 96 192 0 128 0 192 0 0-96c0-35.3-28.7-64-64-64l-64 0 0-40c0-30.9-25.1-56-56-56L184 0c-30.9 0-56 25.1-56 56zM512 288l-192 0 0 32c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-32L0 288 0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-128z\"]\n};\nconst faPersonFalling = {\n prefix: 'fas',\n iconName: 'person-falling',\n icon: [512, 512, [], \"e546\", \"M288 0c17.7 0 32 14.3 32 32l0 9.8c0 54.6-27.9 104.6-72.5 133.6l.2 .3L304.5 256l87.5 0c15.1 0 29.3 7.1 38.4 19.2l43.2 57.6c10.6 14.1 7.7 34.2-6.4 44.8s-34.2 7.7-44.8-6.4L384 320l-96 0-1.4 0 92.3 142.6c9.6 14.8 5.4 34.6-9.5 44.3s-34.6 5.4-44.3-9.5L164.5 249.2c-2.9 9.2-4.5 19-4.5 29l0 73.8c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-73.8c0-65.1 39.6-123.7 100.1-147.9C232.3 115.8 256 80.8 256 41.8l0-9.8c0-17.7 14.3-32 32-32zM112 32a48 48 0 1 1 0 96 48 48 0 1 1 0-96z\"]\n};\nconst faImagePortrait = {\n prefix: 'fas',\n iconName: 'image-portrait',\n icon: [384, 512, [\"portrait\"], \"f3e0\", \"M384 64c0-35.3-28.7-64-64-64L64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-384zM128 192a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM80 356.6c0-37.9 30.7-68.6 68.6-68.6l86.9 0c37.9 0 68.6 30.7 68.6 68.6c0 15.1-12.3 27.4-27.4 27.4l-169.1 0C92.3 384 80 371.7 80 356.6z\"]\n};\nconst faPortrait = faImagePortrait;\nconst faUserTag = {\n prefix: 'fas',\n iconName: 'user-tag',\n icon: [640, 512, [], \"f507\", \"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512l388.6 0c10 0 18.8-4.9 24.2-12.5l-99.2-99.2c-14.9-14.9-23.3-35.1-23.3-56.1l0-33c-15.9-4.7-32.8-7.2-50.3-7.2l-91.4 0zM384 224c-17.7 0-32 14.3-32 32l0 82.7c0 17 6.7 33.3 18.7 45.3L478.1 491.3c18.7 18.7 49.1 18.7 67.9 0l73.4-73.4c18.7-18.7 18.7-49.1 0-67.9L512 242.7c-12-12-28.3-18.7-45.3-18.7L384 224zm24 80a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z\"]\n};\nconst faRug = {\n prefix: 'fas',\n iconName: 'rug',\n icon: [640, 512, [], \"e569\", \"M24 64l32 0 24 0 0 24 0 88 0 80 0 80 0 88 0 24-24 0-32 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l8 0 0-40-8 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l8 0 0-32-8 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l8 0 0-32-8 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l8 0 0-40-8 0C10.7 112 0 101.3 0 88S10.7 64 24 64zm88 0l416 0 0 384-416 0 0-384zM640 88c0 13.3-10.7 24-24 24l-8 0 0 40 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-8 0 0 32 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-8 0 0 32 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-8 0 0 40 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-32 0-24 0 0-24 0-88 0-80 0-80 0-88 0-24 24 0 32 0c13.3 0 24 10.7 24 24z\"]\n};\nconst faEarthEurope = {\n prefix: 'fas',\n iconName: 'earth-europe',\n icon: [512, 512, [\"globe-europe\"], \"f7a2\", \"M266.3 48.3L232.5 73.6c-5.4 4-8.5 10.4-8.5 17.1l0 9.1c0 6.8 5.5 12.3 12.3 12.3c2.4 0 4.8-.7 6.8-2.1l41.8-27.9c2-1.3 4.4-2.1 6.8-2.1l1 0c6.2 0 11.3 5.1 11.3 11.3c0 3-1.2 5.9-3.3 8l-19.9 19.9c-5.8 5.8-12.9 10.2-20.7 12.8l-26.5 8.8c-5.8 1.9-9.6 7.3-9.6 13.4c0 3.7-1.5 7.3-4.1 10l-17.9 17.9c-6.4 6.4-9.9 15-9.9 24l0 4.3c0 16.4 13.6 29.7 29.9 29.7c11 0 21.2-6.2 26.1-16l4-8.1c2.4-4.8 7.4-7.9 12.8-7.9c4.5 0 8.7 2.1 11.4 5.7l16.3 21.7c2.1 2.9 5.5 4.5 9.1 4.5c8.4 0 13.9-8.9 10.1-16.4l-1.1-2.3c-3.5-7 0-15.5 7.5-18l21.2-7.1c7.6-2.5 12.7-9.6 12.7-17.6c0-10.3 8.3-18.6 18.6-18.6l29.4 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-20.7 0c-7.2 0-14.2 2.9-19.3 8l-4.7 4.7c-2.1 2.1-3.3 5-3.3 8c0 6.2 5.1 11.3 11.3 11.3l11.3 0c6 0 11.8 2.4 16 6.6l6.5 6.5c1.8 1.8 2.8 4.3 2.8 6.8s-1 5-2.8 6.8l-7.5 7.5C386 262 384 266.9 384 272s2 10 5.7 13.7L408 304c10.2 10.2 24.1 16 38.6 16l7.3 0c6.5-20.2 10-41.7 10-64c0-111.4-87.6-202.4-197.7-207.7zm172 307.9c-3.7-2.6-8.2-4.1-13-4.1c-6 0-11.8-2.4-16-6.6L396 332c-7.7-7.7-18-12-28.9-12c-9.7 0-19.2-3.5-26.6-9.8L314 287.4c-11.6-9.9-26.4-15.4-41.7-15.4l-20.9 0c-12.6 0-25 3.7-35.5 10.7L188.5 301c-17.8 11.9-28.5 31.9-28.5 53.3l0 3.2c0 17 6.7 33.3 18.7 45.3l16 16c8.5 8.5 20 13.3 32 13.3l21.3 0c13.3 0 24 10.7 24 24c0 2.5 .4 5 1.1 7.3c71.3-5.8 132.5-47.6 165.2-107.2zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM187.3 100.7c-6.2-6.2-16.4-6.2-22.6 0l-32 32c-6.2 6.2-6.2 16.4 0 22.6s16.4 6.2 22.6 0l32-32c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nconst faGlobeEurope = faEarthEurope;\nconst faCartFlatbedSuitcase = {\n prefix: 'fas',\n iconName: 'cart-flatbed-suitcase',\n icon: [640, 512, [\"luggage-cart\"], \"f59d\", \"M0 32C0 14.3 14.3 0 32 0L48 0c44.2 0 80 35.8 80 80l0 288c0 8.8 7.2 16 16 16l464 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-66.7 0c1.8 5 2.7 10.4 2.7 16c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-5.6 1-11 2.7-16l-197.5 0c1.8 5 2.7 10.4 2.7 16c0 26.5-21.5 48-48 48s-48-21.5-48-48c0-5.6 1-11 2.7-16L144 448c-44.2 0-80-35.8-80-80L64 80c0-8.8-7.2-16-16-16L32 64C14.3 64 0 49.7 0 32zM432 96l0-40c0-4.4-3.6-8-8-8l-80 0c-4.4 0-8 3.6-8 8l0 40 96 0zM288 96l0-40c0-30.9 25.1-56 56-56l80 0c30.9 0 56 25.1 56 56l0 40 0 224-192 0 0-224zM512 320l0-224 16 0c26.5 0 48 21.5 48 48l0 128c0 26.5-21.5 48-48 48l-16 0zM240 96l16 0 0 224-16 0c-26.5 0-48-21.5-48-48l0-128c0-26.5 21.5-48 48-48z\"]\n};\nconst faLuggageCart = faCartFlatbedSuitcase;\nconst faRectangleXmark = {\n prefix: 'fas',\n iconName: 'rectangle-xmark',\n icon: [512, 512, [62164, \"rectangle-times\", \"times-rectangle\", \"window-close\"], \"f410\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM175 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nconst faRectangleTimes = faRectangleXmark;\nconst faTimesRectangle = faRectangleXmark;\nconst faWindowClose = faRectangleXmark;\nconst faBahtSign = {\n prefix: 'fas',\n iconName: 'baht-sign',\n icon: [320, 512, [], \"e0ac\", \"M144 0c-17.7 0-32 14.3-32 32l0 32L37.6 64C16.8 64 0 80.8 0 101.6L0 224l0 41.7L0 288 0 406.3c0 23 18.7 41.7 41.7 41.7l70.3 0 0 32c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32 32 0c61.9 0 112-50.1 112-112c0-40.1-21.1-75.3-52.7-95.1C280.3 222.6 288 200.2 288 176c0-61.9-50.1-112-112-112l0-32c0-17.7-14.3-32-32-32zM112 128l0 96-48 0 0-96 48 0zm64 96l0-96c26.5 0 48 21.5 48 48s-21.5 48-48 48zm-64 64l0 96-48 0 0-96 48 0zm64 96l0-96 32 0c26.5 0 48 21.5 48 48s-21.5 48-48 48l-32 0z\"]\n};\nconst faBookOpen = {\n prefix: 'fas',\n iconName: 'book-open',\n icon: [576, 512, [128214, 128366], \"f518\", \"M249.6 471.5c10.8 3.8 22.4-4.1 22.4-15.5l0-377.4c0-4.2-1.6-8.4-5-11C247.4 52 202.4 32 144 32C93.5 32 46.3 45.3 18.1 56.1C6.8 60.5 0 71.7 0 83.8L0 454.1c0 11.9 12.8 20.2 24.1 16.5C55.6 460.1 105.5 448 144 448c33.9 0 79 14 105.6 23.5zm76.8 0C353 462 398.1 448 432 448c38.5 0 88.4 12.1 119.9 22.6c11.3 3.8 24.1-4.6 24.1-16.5l0-370.3c0-12.1-6.8-23.3-18.1-27.6C529.7 45.3 482.5 32 432 32c-58.4 0-103.4 20-123 35.6c-3.3 2.6-5 6.8-5 11L304 456c0 11.4 11.7 19.3 22.4 15.5z\"]\n};\nconst faBookJournalWhills = {\n prefix: 'fas',\n iconName: 'book-journal-whills',\n icon: [448, 512, [\"journal-whills\"], \"f66a\", \"M0 96C0 43 43 0 96 0L384 0l32 0c17.7 0 32 14.3 32 32l0 320c0 17.7-14.3 32-32 32l0 64c17.7 0 32 14.3 32 32s-14.3 32-32 32l-32 0L96 512c-53 0-96-43-96-96L0 96zM64 416c0 17.7 14.3 32 32 32l256 0 0-64L96 384c-17.7 0-32 14.3-32 32zm90.4-234.4l-21.2-21.2c-3 10.1-5.1 20.6-5.1 31.6c0 .2 0 .5 .1 .8s.1 .5 .1 .8L165.2 226c2.5 2.1 3.4 5.8 2.3 8.9c-1.3 3-4.1 5.1-7.5 5.1c-1.9-.1-3.8-.8-5.2-2l-23.6-20.6C142.8 267 186.9 304 240 304s97.3-37 108.9-86.6L325.3 238c-1.4 1.2-3.3 2-5.3 2c-2.2-.1-4.4-1.1-6-2.8c-1.2-1.5-1.9-3.4-2-5.2c.1-2.2 1.1-4.4 2.8-6l37.1-32.5c0-.3 0-.5 .1-.8s.1-.5 .1-.8c0-11-2.1-21.5-5.1-31.6l-21.2 21.2c-3.1 3.1-8.1 3.1-11.3 0s-3.1-8.1 0-11.2l26.4-26.5c-8.2-17-20.5-31.7-35.9-42.6c-2.7-1.9-6.2 1.4-5 4.5c8.5 22.4 3.6 48-13 65.6c-3.2 3.4-3.6 8.9-.9 12.7c9.8 14 12.7 31.9 7.5 48.5c-5.9 19.4-22 34.1-41.9 38.3l-1.4-34.3 12.6 8.6c.6 .4 1.5 .6 2.3 .6c1.5 0 2.7-.8 3.5-2s.6-2.8-.1-4L260 225.4l18-3.6c1.8-.4 3.1-2.1 3.1-4s-1.4-3.5-3.1-3.9l-18-3.7 8.5-14.3c.8-1.2 .9-2.9 .1-4.1s-2-2-3.5-2l-.1 0c-.7 .1-1.5 .3-2.1 .7l-14.1 9.6L244 87.9c-.1-2.2-1.9-3.9-4-3.9s-3.9 1.6-4 3.9l-4.6 110.8-12-8.1c-1.5-1.1-3.6-.9-5 .4s-1.6 3.4-.8 5l8.6 14.3-18 3.7c-1.8 .4-3.1 2-3.1 3.9s1.4 3.6 3.1 4l18 3.8-8.6 14.2c-.2 .6-.5 1.4-.5 2c0 1.1 .5 2.1 1.2 3c.8 .6 1.8 1 2.8 1c.7 0 1.6-.2 2.2-.6l10.4-7.1-1.4 32.8c-19.9-4.1-36-18.9-41.9-38.3c-5.1-16.6-2.2-34.4 7.6-48.5c2.7-3.9 2.3-9.3-.9-12.7c-16.6-17.5-21.6-43.1-13.1-65.5c1.2-3.1-2.3-6.4-5-4.5c-15.3 10.9-27.6 25.6-35.8 42.6l26.4 26.5c3.1 3.1 3.1 8.1 0 11.2s-8.1 3.1-11.2 0z\"]\n};\nconst faJournalWhills = faBookJournalWhills;\nconst faHandcuffs = {\n prefix: 'fas',\n iconName: 'handcuffs',\n icon: [640, 512, [], \"e4f8\", \"M240 32a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM192 48a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm-32 80c17.7 0 32 14.3 32 32l8 0c13.3 0 24 10.7 24 24l0 16c0 1.7-.2 3.4-.5 5.1C280.3 229.6 320 286.2 320 352c0 88.4-71.6 160-160 160S0 440.4 0 352c0-65.8 39.7-122.4 96.5-146.9c-.4-1.6-.5-3.3-.5-5.1l0-16c0-13.3 10.7-24 24-24l8 0c0-17.7 14.3-32 32-32zm0 320a96 96 0 1 0 0-192 96 96 0 1 0 0 192zm192-96c0-25.9-5.1-50.5-14.4-73.1c16.9-32.9 44.8-59.1 78.9-73.9c-.4-1.6-.5-3.3-.5-5.1l0-16c0-13.3 10.7-24 24-24l8 0c0-17.7 14.3-32 32-32s32 14.3 32 32l8 0c13.3 0 24 10.7 24 24l0 16c0 1.7-.2 3.4-.5 5.1C600.3 229.6 640 286.2 640 352c0 88.4-71.6 160-160 160c-62 0-115.8-35.3-142.4-86.9c9.3-22.5 14.4-47.2 14.4-73.1zm224 0a96 96 0 1 0 -192 0 96 96 0 1 0 192 0zM368 0a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm80 48a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faTriangleExclamation = {\n prefix: 'fas',\n iconName: 'triangle-exclamation',\n icon: [512, 512, [9888, \"exclamation-triangle\", \"warning\"], \"f071\", \"M256 32c14.2 0 27.3 7.5 34.5 19.8l216 368c7.3 12.4 7.3 27.7 .2 40.1S486.3 480 472 480L40 480c-14.3 0-27.6-7.7-34.7-20.1s-7-27.8 .2-40.1l216-368C228.7 39.5 241.8 32 256 32zm0 128c-13.3 0-24 10.7-24 24l0 112c0 13.3 10.7 24 24 24s24-10.7 24-24l0-112c0-13.3-10.7-24-24-24zm32 224a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z\"]\n};\nconst faExclamationTriangle = faTriangleExclamation;\nconst faWarning = faTriangleExclamation;\nconst faDatabase = {\n prefix: 'fas',\n iconName: 'database',\n icon: [448, 512, [], \"f1c0\", \"M448 80l0 48c0 44.2-100.3 80-224 80S0 172.2 0 128L0 80C0 35.8 100.3 0 224 0S448 35.8 448 80zM393.2 214.7c20.8-7.4 39.9-16.9 54.8-28.6L448 288c0 44.2-100.3 80-224 80S0 332.2 0 288L0 186.1c14.9 11.8 34 21.2 54.8 28.6C99.7 230.7 159.5 240 224 240s124.3-9.3 169.2-25.3zM0 346.1c14.9 11.8 34 21.2 54.8 28.6C99.7 390.7 159.5 400 224 400s124.3-9.3 169.2-25.3c20.8-7.4 39.9-16.9 54.8-28.6l0 85.9c0 44.2-100.3 80-224 80S0 476.2 0 432l0-85.9z\"]\n};\nconst faShare = {\n prefix: 'fas',\n iconName: 'share',\n icon: [512, 512, [\"mail-forward\"], \"f064\", \"M307 34.8c-11.5 5.1-19 16.6-19 29.2l0 64-112 0C78.8 128 0 206.8 0 304C0 417.3 81.5 467.9 100.2 478.1c2.5 1.4 5.3 1.9 8.1 1.9c10.9 0 19.7-8.9 19.7-19.7c0-7.5-4.3-14.4-9.8-19.5C108.8 431.9 96 414.4 96 384c0-53 43-96 96-96l96 0 0 64c0 12.6 7.4 24.1 19 29.2s25 3 34.4-5.4l160-144c6.7-6.1 10.6-14.7 10.6-23.8s-3.8-17.7-10.6-23.8l-160-144c-9.4-8.5-22.9-10.6-34.4-5.4z\"]\n};\nconst faMailForward = faShare;\nconst faBottleDroplet = {\n prefix: 'fas',\n iconName: 'bottle-droplet',\n icon: [320, 512, [], \"e4c4\", \"M96 0C82.7 0 72 10.7 72 24s10.7 24 24 24c4.4 0 8 3.6 8 8l0 64.9c0 12.2-7.2 23.1-17.2 30.1C53.7 174.1 32 212.5 32 256l0 192c0 35.3 28.7 64 64 64l128 0c35.3 0 64-28.7 64-64l0-192c0-43.5-21.7-81.9-54.8-105c-10-7-17.2-17.9-17.2-30.1L216 56c0-4.4 3.6-8 8-8c13.3 0 24-10.7 24-24s-10.7-24-24-24l-8 0s0 0 0 0s0 0 0 0L104 0s0 0 0 0s0 0 0 0L96 0zm64 382c-26.5 0-48-20.1-48-45c0-16.8 22.1-48.1 36.3-66.4c6-7.8 17.5-7.8 23.5 0C185.9 288.9 208 320.2 208 337c0 24.9-21.5 45-48 45z\"]\n};\nconst faMaskFace = {\n prefix: 'fas',\n iconName: 'mask-face',\n icon: [640, 512, [], \"e1d7\", \"M320 64c-27.2 0-53.8 8-76.4 23.1l-37.1 24.8c-15.8 10.5-34.3 16.1-53.3 16.1l-9.2 0-16 0-72 0c-30.9 0-56 25.1-56 56l0 85c0 55.1 37.5 103.1 90.9 116.4l108 27C233.8 435 275.4 448 320 448s86.2-13 121.1-35.5l108-27C602.5 372.1 640 324.1 640 269l0-85c0-30.9-25.1-56-56-56l-72 0-16 0-9.2 0c-19 0-37.5-5.6-53.3-16.1L396.4 87.1C373.8 72 347.2 64 320 64zM132.3 346.3l-29.8-7.4C70.5 330.9 48 302.1 48 269l0-85c0-4.4 3.6-8 8-8l40 0 0 48c0 45.1 13.4 87.2 36.3 122.3zm405.1-7.4l-29.8 7.4c23-35.2 36.3-77.2 36.3-122.3l0-48 40 0c4.4 0 8 3.6 8 8l0 85c0 33-22.5 61.8-54.5 69.9zM192 208c0-8.8 7.2-16 16-16l224 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-224 0c-8.8 0-16-7.2-16-16zm16 48l224 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-224 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm16 80c0-8.8 7.2-16 16-16l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16z\"]\n};\nconst faHillRockslide = {\n prefix: 'fas',\n iconName: 'hill-rockslide',\n icon: [576, 512, [], \"e508\", \"M252.4 103.8l27 48c2.8 5 8.2 8.2 13.9 8.2l53.3 0c5.8 0 11.1-3.1 13.9-8.2l27-48c2.7-4.9 2.7-10.8 0-15.7l-27-48c-2.8-5-8.2-8.2-13.9-8.2l-53.3 0c-5.8 0-11.1 3.1-13.9 8.2l-27 48c-2.7 4.9-2.7 10.8 0 15.7zM68.3 87C43.1 61.8 0 79.7 0 115.3L0 432c0 44.2 35.8 80 80 80l316.7 0c35.6 0 53.5-43.1 28.3-68.3L68.3 87zM504.2 403.6c4.9 2.7 10.8 2.7 15.7 0l48-27c5-2.8 8.2-8.2 8.2-13.9l0-53.3c0-5.8-3.1-11.1-8.2-13.9l-48-27c-4.9-2.7-10.8-2.7-15.7 0l-48 27c-5 2.8-8.2 8.2-8.2 13.9l0 53.3c0 5.8 3.1 11.1 8.2 13.9l48 27zM192 64a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM384 288a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faRightLeft = {\n prefix: 'fas',\n iconName: 'right-left',\n icon: [512, 512, [\"exchange-alt\"], \"f362\", \"M32 96l320 0 0-64c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l96 96c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-96 96c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6l0-64L32 160c-17.7 0-32-14.3-32-32s14.3-32 32-32zM480 352c17.7 0 32 14.3 32 32s-14.3 32-32 32l-320 0 0 64c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9l-96-96c-6-6-9.4-14.1-9.4-22.6s3.4-16.6 9.4-22.6l96-96c9.2-9.2 22.9-11.9 34.9-6.9s19.8 16.6 19.8 29.6l0 64 320 0z\"]\n};\nconst faExchangeAlt = faRightLeft;\nconst faPaperPlane = {\n prefix: 'fas',\n iconName: 'paper-plane',\n icon: [512, 512, [61913], \"f1d8\", \"M498.1 5.6c10.1 7 15.4 19.1 13.5 31.2l-64 416c-1.5 9.7-7.4 18.2-16 23s-18.9 5.4-28 1.6L284 427.7l-68.5 74.1c-8.9 9.7-22.9 12.9-35.2 8.1S160 493.2 160 480l0-83.6c0-4 1.5-7.8 4.2-10.8L331.8 202.8c5.8-6.3 5.6-16-.4-22s-15.7-6.4-22-.7L106 360.8 17.7 316.6C7.1 311.3 .3 300.7 0 288.9s5.9-22.8 16.1-28.7l448-256c10.7-6.1 23.9-5.5 34 1.4z\"]\n};\nconst faRoadCircleExclamation = {\n prefix: 'fas',\n iconName: 'road-circle-exclamation',\n icon: [640, 512, [], \"e565\", \"M213.2 32L288 32l0 64c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 74.8 0c27.1 0 51.3 17.1 60.3 42.6l42.7 120.6c-10.9-2.1-22.2-3.2-33.8-3.2c-59.5 0-112.1 29.6-144 74.8l0-42.8c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32c2.3 0 4.6-.3 6.8-.7c-4.5 15.5-6.8 31.8-6.8 48.7c0 5.4 .2 10.7 .7 16l-.7 0c-17.7 0-32 14.3-32 32l0 64L86.6 480C56.5 480 32 455.5 32 425.4c0-6.2 1.1-12.4 3.1-18.2L152.9 74.6C162 49.1 186.1 32 213.2 32zM496 224a144 144 0 1 1 0 288 144 144 0 1 1 0-288zm0 240a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm0-192c-8.8 0-16 7.2-16 16l0 80c0 8.8 7.2 16 16 16s16-7.2 16-16l0-80c0-8.8-7.2-16-16-16z\"]\n};\nconst faDungeon = {\n prefix: 'fas',\n iconName: 'dungeon',\n icon: [512, 512, [], \"f6d9\", \"M336.6 156.5c1.3 1.1 2.7 2.2 3.9 3.3c9.3 8.2 23 10.5 33.4 3.6l67.6-45.1c11.4-7.6 14.2-23.2 5.1-33.4C430 66.6 410.9 50.6 389.7 37.6c-11.9-7.3-26.9-1.4-32.1 11.6l-30.5 76.2c-4.5 11.1 .2 23.6 9.5 31.2zM328 36.8c5.1-12.8-1.6-27.4-15-30.5C294.7 2.2 275.6 0 256 0s-38.7 2.2-57 6.4C185.5 9.4 178.8 24 184 36.8l30.3 75.8c4.5 11.3 16.8 17.2 29 16c4.2-.4 8.4-.6 12.7-.6s8.6 .2 12.7 .6c12.1 1.2 24.4-4.7 29-16L328 36.8zM65.5 85c-9.1 10.2-6.3 25.8 5.1 33.4l67.6 45.1c10.3 6.9 24.1 4.6 33.4-3.6c1.3-1.1 2.6-2.3 4-3.3c9.3-7.5 13.9-20.1 9.5-31.2L154.4 49.2c-5.2-12.9-20.3-18.8-32.1-11.6C101.1 50.6 82 66.6 65.5 85zm314 137.1c.9 3.3 1.7 6.6 2.3 10c2.5 13 13 23.9 26.2 23.9l80 0c13.3 0 24.1-10.8 22.9-24c-2.5-27.2-9.3-53.2-19.7-77.3c-5.5-12.9-21.4-16.6-33.1-8.9l-68.6 45.7c-9.8 6.5-13.2 19.2-10 30.5zM53.9 145.8c-11.6-7.8-27.6-4-33.1 8.9C10.4 178.8 3.6 204.8 1.1 232c-1.2 13.2 9.6 24 22.9 24l80 0c13.3 0 23.8-10.8 26.2-23.9c.6-3.4 1.4-6.7 2.3-10c3.1-11.4-.2-24-10-30.5L53.9 145.8zM104 288l-80 0c-13.3 0-24 10.7-24 24l0 48c0 13.3 10.7 24 24 24l80 0c13.3 0 24-10.7 24-24l0-48c0-13.3-10.7-24-24-24zm304 0c-13.3 0-24 10.7-24 24l0 48c0 13.3 10.7 24 24 24l80 0c13.3 0 24-10.7 24-24l0-48c0-13.3-10.7-24-24-24l-80 0zM24 416c-13.3 0-24 10.7-24 24l0 48c0 13.3 10.7 24 24 24l80 0c13.3 0 24-10.7 24-24l0-48c0-13.3-10.7-24-24-24l-80 0zm384 0c-13.3 0-24 10.7-24 24l0 48c0 13.3 10.7 24 24 24l80 0c13.3 0 24-10.7 24-24l0-48c0-13.3-10.7-24-24-24l-80 0zM272 192c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 272c0 8.8 7.2 16 16 16s16-7.2 16-16l0-272zm-64 32c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 240c0 8.8 7.2 16 16 16s16-7.2 16-16l0-240zm128 0c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 240c0 8.8 7.2 16 16 16s16-7.2 16-16l0-240z\"]\n};\nconst faAlignRight = {\n prefix: 'fas',\n iconName: 'align-right',\n icon: [448, 512, [], \"f038\", \"M448 64c0 17.7-14.3 32-32 32L192 96c-17.7 0-32-14.3-32-32s14.3-32 32-32l224 0c17.7 0 32 14.3 32 32zm0 256c0 17.7-14.3 32-32 32l-224 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l224 0c17.7 0 32 14.3 32 32zM0 192c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 224c-17.7 0-32-14.3-32-32zM448 448c0 17.7-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0c17.7 0 32 14.3 32 32z\"]\n};\nconst faMoneyBill1Wave = {\n prefix: 'fas',\n iconName: 'money-bill-1-wave',\n icon: [576, 512, [\"money-bill-wave-alt\"], \"f53b\", \"M0 112.5L0 422.3c0 18 10.1 35 27 41.3c87 32.5 174 10.3 261-11.9c79.8-20.3 159.6-40.7 239.3-18.9c23 6.3 48.7-9.5 48.7-33.4l0-309.9c0-18-10.1-35-27-41.3C462 15.9 375 38.1 288 60.3C208.2 80.6 128.4 100.9 48.7 79.1C25.6 72.8 0 88.6 0 112.5zM128 416l-64 0 0-64c35.3 0 64 28.7 64 64zM64 224l0-64 64 0c0 35.3-28.7 64-64 64zM448 352c0-35.3 28.7-64 64-64l0 64-64 0zm64-192c-35.3 0-64-28.7-64-64l64 0 0 64zM384 256c0 61.9-43 112-96 112s-96-50.1-96-112s43-112 96-112s96 50.1 96 112zM252 208c0 9.7 6.9 17.7 16 19.6l0 48.4-4 0c-11 0-20 9-20 20s9 20 20 20l24 0 24 0c11 0 20-9 20-20s-9-20-20-20l-4 0 0-68c0-11-9-20-20-20l-16 0c-11 0-20 9-20 20z\"]\n};\nconst faMoneyBillWaveAlt = faMoneyBill1Wave;\nconst faLifeRing = {\n prefix: 'fas',\n iconName: 'life-ring',\n icon: [512, 512, [], \"f1cd\", \"M367.2 412.5C335.9 434.9 297.5 448 256 448s-79.9-13.1-111.2-35.5l58-58c15.8 8.6 34 13.5 53.3 13.5s37.4-4.9 53.3-13.5l58 58zm90.7 .8c33.8-43.4 54-98 54-157.3s-20.2-113.9-54-157.3c9-12.5 7.9-30.1-3.4-41.3S425.8 45 413.3 54C369.9 20.2 315.3 0 256 0S142.1 20.2 98.7 54c-12.5-9-30.1-7.9-41.3 3.4S45 86.2 54 98.7C20.2 142.1 0 196.7 0 256s20.2 113.9 54 157.3c-9 12.5-7.9 30.1 3.4 41.3S86.2 467 98.7 458c43.4 33.8 98 54 157.3 54s113.9-20.2 157.3-54c12.5 9 30.1 7.9 41.3-3.4s12.4-28.8 3.4-41.3zm-45.5-46.1l-58-58c8.6-15.8 13.5-34 13.5-53.3s-4.9-37.4-13.5-53.3l58-58C434.9 176.1 448 214.5 448 256s-13.1 79.9-35.5 111.2zM367.2 99.5l-58 58c-15.8-8.6-34-13.5-53.3-13.5s-37.4 4.9-53.3 13.5l-58-58C176.1 77.1 214.5 64 256 64s79.9 13.1 111.2 35.5zM157.5 309.3l-58 58C77.1 335.9 64 297.5 64 256s13.1-79.9 35.5-111.2l58 58c-8.6 15.8-13.5 34-13.5 53.3s4.9 37.4 13.5 53.3zM208 256a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z\"]\n};\nconst faHands = {\n prefix: 'fas',\n iconName: 'hands',\n icon: [576, 512, [\"sign-language\", \"signing\"], \"f2a7\", \"M544 160l-.1 72.6c-.1 52.2-24 101-64 133.1c.1-1.9 .1-3.8 .1-5.7l0-8c0-71.8-37-138.6-97.9-176.7l-60.2-37.6c-8.6-5.4-17.9-8.4-27.3-9.4L248.7 48.8c-6.6-11.5-2.7-26.2 8.8-32.8s26.2-2.7 32.8 8.8l78 135.1c3.3 5.7 10.7 7.7 16.4 4.4s7.7-10.7 4.4-16.4l-62-107.4c-6.6-11.5-2.7-26.2 8.8-32.8S362 5 368.6 16.5l68 117.8s0 0 0 0s0 0 0 0l43.3 75L480 160c0-17.7 14.4-32 32-32s32 14.4 32 32zM243.9 88.5L268.5 131c-13.9 4.5-26.4 13.7-34.7 27c-.9 1.4-1.7 2.9-2.5 4.4l-28.9-50c-6.6-11.5-2.7-26.2 8.8-32.8s26.2-2.7 32.8 8.8zm-46.4 63.7l26.8 46.4c.6 6 2.1 11.8 4.3 17.4l-4.7 0-13.3 0s0 0 0 0L179 216l-23-39.8c-6.6-11.5-2.7-26.2 8.8-32.8s26.2-2.7 32.8 8.8zM260.9 175c9.4-15 29.1-19.5 44.1-10.2l60.2 37.6C416.7 234.7 448 291.2 448 352l0 8c0 83.9-68.1 152-152 152l-176 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l92 0c6.6 0 12-5.4 12-12s-5.4-12-12-12L88 440c-13.3 0-24-10.7-24-24s10.7-24 24-24l124 0c6.6 0 12-5.4 12-12s-5.4-12-12-12L56 368c-13.3 0-24-10.7-24-24s10.7-24 24-24l156 0c6.6 0 12-5.4 12-12s-5.4-12-12-12L88 296c-13.3 0-24-10.7-24-24s10.7-24 24-24l136 0s0 0 0 0s0 0 0 0l93.2 0L271 219.1c-15-9.4-19.5-29.1-10.2-44.1z\"]\n};\nconst faSignLanguage = faHands;\nconst faSigning = faHands;\nconst faCalendarDay = {\n prefix: 'fas',\n iconName: 'calendar-day',\n icon: [448, 512, [], \"f783\", \"M128 0c17.7 0 32 14.3 32 32l0 32 128 0 0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32 48 0c26.5 0 48 21.5 48 48l0 48L0 160l0-48C0 85.5 21.5 64 48 64l48 0 0-32c0-17.7 14.3-32 32-32zM0 192l448 0 0 272c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 192zm80 64c-8.8 0-16 7.2-16 16l0 96c0 8.8 7.2 16 16 16l96 0c8.8 0 16-7.2 16-16l0-96c0-8.8-7.2-16-16-16l-96 0z\"]\n};\nconst faWaterLadder = {\n prefix: 'fas',\n iconName: 'water-ladder',\n icon: [576, 512, [\"ladder-water\", \"swimming-pool\"], \"f5c5\", \"M128 127.7C128 74.9 170.9 32 223.7 32c48.3 0 89 36 95 83.9l1 8.2c2.2 17.5-10.2 33.5-27.8 35.7s-33.5-10.2-35.7-27.8l-1-8.2c-2-15.9-15.5-27.8-31.5-27.8c-17.5 0-31.7 14.2-31.7 31.7l0 96.3 192 0 0-96.3C384 74.9 426.9 32 479.7 32c48.3 0 89 36 95 83.9l1 8.2c2.2 17.5-10.2 33.5-27.8 35.7s-33.5-10.2-35.7-27.8l-1-8.2c-2-15.9-15.5-27.8-31.5-27.8c-17.5 0-31.7 14.2-31.7 31.7L448 361c-1.6 1-3.3 2-4.8 3.1c-18 12.4-40.1 20.3-59.2 20.3c0 0 0 0 0 0l0-96.5-192 0 0 96.5c-19 0-41.2-7.9-59.1-20.3c-1.6-1.1-3.2-2.2-4.9-3.1l0-233.3zM306.5 389.9C329 405.4 356.5 416 384 416c26.9 0 55.4-10.8 77.4-26.1c0 0 0 0 0 0c11.9-8.5 28.1-7.8 39.2 1.7c14.4 11.9 32.5 21 50.6 25.2c17.2 4 27.9 21.2 23.9 38.4s-21.2 27.9-38.4 23.9c-24.5-5.7-44.9-16.5-58.2-25C449.5 469.7 417 480 384 480c-31.9 0-60.6-9.9-80.4-18.9c-5.8-2.7-11.1-5.3-15.6-7.7c-4.5 2.4-9.7 5.1-15.6 7.7c-19.8 9-48.5 18.9-80.4 18.9c-33 0-65.5-10.3-94.5-25.8c-13.4 8.4-33.7 19.3-58.2 25c-17.2 4-34.4-6.7-38.4-23.9s6.7-34.4 23.9-38.4c18.1-4.2 36.2-13.3 50.6-25.2c11.1-9.4 27.3-10.1 39.2-1.7c0 0 0 0 0 0C136.7 405.2 165.1 416 192 416c27.5 0 55-10.6 77.5-26.1c11.1-7.9 25.9-7.9 37 0z\"]\n};\nconst faLadderWater = faWaterLadder;\nconst faSwimmingPool = faWaterLadder;\nconst faArrowsUpDown = {\n prefix: 'fas',\n iconName: 'arrows-up-down',\n icon: [320, 512, [\"arrows-v\"], \"f07d\", \"M182.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L128 109.3l0 293.5L86.6 361.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l96 96c12.5 12.5 32.8 12.5 45.3 0l96-96c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 402.7l0-293.5 41.4 41.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-96-96z\"]\n};\nconst faArrowsV = faArrowsUpDown;\nconst faFaceGrimace = {\n prefix: 'fas',\n iconName: 'face-grimace',\n icon: [512, 512, [128556, \"grimace\"], \"f57f\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm96-112l-8 0 0-40 55.3 0c-3.8 22.7-23.6 40-47.3 40zm47.3-56L344 344l0-40 8 0c23.8 0 43.5 17.3 47.3 40zM328 344l-64 0 0-40 64 0 0 40zm0 56l-64 0 0-40 64 0 0 40zm-80-96l0 40-64 0 0-40 64 0zm0 56l0 40-64 0 0-40 64 0zm-80-16l-55.3 0c3.8-22.7 23.6-40 47.3-40l8 0 0 40zm0 56l-8 0c-23.8 0-43.5-17.3-47.3-40l55.3 0 0 40zM144.4 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faGrimace = faFaceGrimace;\nconst faWheelchairMove = {\n prefix: 'fas',\n iconName: 'wheelchair-move',\n icon: [448, 512, [\"wheelchair-alt\"], \"e2ce\", \"M320 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM204.5 121.3c-5.4-2.5-11.7-1.9-16.4 1.7l-40.9 30.7c-14.1 10.6-34.2 7.7-44.8-6.4s-7.7-34.2 6.4-44.8l40.9-30.7c23.7-17.8 55.3-21 82.1-8.4l90.4 42.5c29.1 13.7 36.8 51.6 15.2 75.5L299.1 224l97.4 0c30.3 0 53 27.7 47.1 57.4L415.4 422.3c-3.5 17.3-20.3 28.6-37.7 25.1s-28.6-20.3-25.1-37.7L377 288l-70.3 0c8.6 19.6 13.3 41.2 13.3 64c0 88.4-71.6 160-160 160S0 440.4 0 352s71.6-160 160-160c11.1 0 22 1.1 32.4 3.3l54.2-54.2-42.1-19.8zM160 448a96 96 0 1 0 0-192 96 96 0 1 0 0 192z\"]\n};\nconst faWheelchairAlt = faWheelchairMove;\nconst faTurnDown = {\n prefix: 'fas',\n iconName: 'turn-down',\n icon: [384, 512, [10549, \"level-down-alt\"], \"f3be\", \"M350 334.5c3.8 8.8 2 19-4.6 26l-136 144c-4.5 4.8-10.8 7.5-17.4 7.5s-12.9-2.7-17.4-7.5l-136-144c-6.6-7-8.4-17.2-4.6-26s12.5-14.5 22-14.5l88 0 0-192c0-17.7-14.3-32-32-32L32 96C14.3 96 0 81.7 0 64L0 32C0 14.3 14.3 0 32 0l80 0c70.7 0 128 57.3 128 128l0 192 88 0c9.6 0 18.2 5.7 22 14.5z\"]\n};\nconst faLevelDownAlt = faTurnDown;\nconst faPersonWalkingArrowRight = {\n prefix: 'fas',\n iconName: 'person-walking-arrow-right',\n icon: [640, 512, [], \"e552\", \"M208 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM123.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L281 232.7l-15.3-36.8C248.5 154.8 208.3 128 163.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1L68.7 398 9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L116.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zM550.6 153.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L530.7 224 384 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l146.7 0-25.4 25.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l80-80c12.5-12.5 12.5-32.8 0-45.3l-80-80z\"]\n};\nconst faSquareEnvelope = {\n prefix: 'fas',\n iconName: 'square-envelope',\n icon: [448, 512, [\"envelope-square\"], \"f199\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM218 271.7L64.2 172.4C66 156.4 79.5 144 96 144l256 0c16.5 0 30 12.4 31.8 28.4L230 271.7c-1.8 1.2-3.9 1.8-6 1.8s-4.2-.6-6-1.8zm29.4 26.9L384 210.4 384 336c0 17.7-14.3 32-32 32L96 368c-17.7 0-32-14.3-32-32l0-125.6 136.6 88.2c7 4.5 15.1 6.9 23.4 6.9s16.4-2.4 23.4-6.9z\"]\n};\nconst faEnvelopeSquare = faSquareEnvelope;\nconst faDice = {\n prefix: 'fas',\n iconName: 'dice',\n icon: [640, 512, [127922], \"f522\", \"M274.9 34.3c-28.1-28.1-73.7-28.1-101.8 0L34.3 173.1c-28.1 28.1-28.1 73.7 0 101.8L173.1 413.7c28.1 28.1 73.7 28.1 101.8 0L413.7 274.9c28.1-28.1 28.1-73.7 0-101.8L274.9 34.3zM200 224a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM96 200a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM224 376a24 24 0 1 1 0-48 24 24 0 1 1 0 48zM352 200a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM224 120a24 24 0 1 1 0-48 24 24 0 1 1 0 48zm96 328c0 35.3 28.7 64 64 64l192 0c35.3 0 64-28.7 64-64l0-192c0-35.3-28.7-64-64-64l-114.3 0c11.6 36 3.1 77-25.4 105.5L320 413.8l0 34.2zM480 328a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faBowlingBall = {\n prefix: 'fas',\n iconName: 'bowling-ball',\n icon: [512, 512, [], \"f436\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM240 80a32 32 0 1 1 0 64 32 32 0 1 1 0-64zM208 208a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm-64-64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faBrain = {\n prefix: 'fas',\n iconName: 'brain',\n icon: [512, 512, [129504], \"f5dc\", \"M184 0c30.9 0 56 25.1 56 56l0 400c0 30.9-25.1 56-56 56c-28.9 0-52.7-21.9-55.7-50.1c-5.2 1.4-10.7 2.1-16.3 2.1c-35.3 0-64-28.7-64-64c0-7.4 1.3-14.6 3.6-21.2C21.4 367.4 0 338.2 0 304c0-31.9 18.7-59.5 45.8-72.3C37.1 220.8 32 207 32 192c0-30.7 21.6-56.3 50.4-62.6C80.8 123.9 80 118 80 112c0-29.9 20.6-55.1 48.3-62.1C131.3 21.9 155.1 0 184 0zM328 0c28.9 0 52.6 21.9 55.7 49.9c27.8 7 48.3 32.1 48.3 62.1c0 6-.8 11.9-2.4 17.4c28.8 6.2 50.4 31.9 50.4 62.6c0 15-5.1 28.8-13.8 39.7C493.3 244.5 512 272.1 512 304c0 34.2-21.4 63.4-51.6 74.8c2.3 6.6 3.6 13.8 3.6 21.2c0 35.3-28.7 64-64 64c-5.6 0-11.1-.7-16.3-2.1c-3 28.2-26.8 50.1-55.7 50.1c-30.9 0-56-25.1-56-56l0-400c0-30.9 25.1-56 56-56z\"]\n};\nconst faBandage = {\n prefix: 'fas',\n iconName: 'bandage',\n icon: [640, 512, [129657, \"band-aid\"], \"f462\", \"M480 416l96 0c35.3 0 64-28.7 64-64l0-192c0-35.3-28.7-64-64-64l-96 0 0 320zM448 96L192 96l0 320 256 0 0-320zM64 96C28.7 96 0 124.7 0 160L0 352c0 35.3 28.7 64 64 64l96 0 0-320L64 96zM248 208a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm120-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48zM248 304a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zm120-24a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faBandAid = faBandage;\nconst faCalendarMinus = {\n prefix: 'fas',\n iconName: 'calendar-minus',\n icon: [448, 512, [], \"f272\", \"M128 0c17.7 0 32 14.3 32 32l0 32 128 0 0-32c0-17.7 14.3-32 32-32s32 14.3 32 32l0 32 48 0c26.5 0 48 21.5 48 48l0 48L0 160l0-48C0 85.5 21.5 64 48 64l48 0 0-32c0-17.7 14.3-32 32-32zM0 192l448 0 0 272c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 192zM312 376c13.3 0 24-10.7 24-24s-10.7-24-24-24l-176 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l176 0z\"]\n};\nconst faCircleXmark = {\n prefix: 'fas',\n iconName: 'circle-xmark',\n icon: [512, 512, [61532, \"times-circle\", \"xmark-circle\"], \"f057\", \"M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM175 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z\"]\n};\nconst faTimesCircle = faCircleXmark;\nconst faXmarkCircle = faCircleXmark;\nconst faGifts = {\n prefix: 'fas',\n iconName: 'gifts',\n icon: [640, 512, [], \"f79c\", \"M200.6 32C205 19.5 198.5 5.8 186 1.4S159.8 3.5 155.4 16L144.7 46.2l-9.9-29.8C130.6 3.8 117-3 104.4 1.2S85 19 89.2 31.6l8.3 25-27.4-20c-10.7-7.8-25.7-5.4-33.5 5.3s-5.4 25.7 5.3 33.5L70.2 96 48 96C21.5 96 0 117.5 0 144L0 464c0 26.5 21.5 48 48 48l152.6 0c-5.4-9.4-8.6-20.3-8.6-32l0-224c0-29.9 20.5-55 48.2-62c1.8-31 17.1-58.2 40.1-76.1C271.7 104.7 256.9 96 240 96l-22.2 0 28.3-20.6c10.7-7.8 13.1-22.8 5.3-33.5s-22.8-13.1-33.5-5.3L192.5 55.1 200.6 32zM363.5 185.5L393.1 224 344 224c-13.3 0-24-10.7-24-24c0-13.1 10.8-24 24.2-24c7.6 0 14.7 3.5 19.3 9.5zM272 200c0 8.4 1.4 16.5 4.1 24l-4.1 0c-26.5 0-48 21.5-48 48l0 80 192 0 0-96 32 0 0 96 192 0 0-80c0-26.5-21.5-48-48-48l-4.1 0c2.7-7.5 4.1-15.6 4.1-24c0-39.9-32.5-72-72.2-72c-22.4 0-43.6 10.4-57.3 28.2L432 195.8l-30.5-39.6c-13.7-17.8-35-28.2-57.3-28.2c-39.7 0-72.2 32.1-72.2 72zM224 464c0 26.5 21.5 48 48 48l144 0 0-128-192 0 0 80zm224 48l144 0c26.5 0 48-21.5 48-48l0-80-192 0 0 128zm96-312c0 13.3-10.7 24-24 24l-49.1 0 29.6-38.5c4.6-5.9 11.7-9.5 19.3-9.5c13.4 0 24.2 10.9 24.2 24z\"]\n};\nconst faHotel = {\n prefix: 'fas',\n iconName: 'hotel',\n icon: [512, 512, [127976], \"f594\", \"M0 32C0 14.3 14.3 0 32 0L480 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l0 384c17.7 0 32 14.3 32 32s-14.3 32-32 32l-176 0 0-48c0-26.5-21.5-48-48-48s-48 21.5-48 48l0 48L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32L32 64C14.3 64 0 49.7 0 32zm96 80l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM240 96c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm112 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zM112 192c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zm112 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm144-16c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM328 384c13.3 0 24.3-10.9 21-23.8c-10.6-41.5-48.2-72.2-93-72.2s-82.5 30.7-93 72.2c-3.3 12.8 7.8 23.8 21 23.8l144 0z\"]\n};\nconst faEarthAsia = {\n prefix: 'fas',\n iconName: 'earth-asia',\n icon: [512, 512, [127759, \"globe-asia\"], \"f57e\", \"M51.7 295.1l31.7 6.3c7.9 1.6 16-.9 21.7-6.6l15.4-15.4c11.6-11.6 31.1-8.4 38.4 6.2l9.3 18.5c4.8 9.6 14.6 15.7 25.4 15.7c15.2 0 26.1-14.6 21.7-29.2l-6-19.9c-4.6-15.4 6.9-30.9 23-30.9l2.3 0c13.4 0 25.9-6.7 33.3-17.8l10.7-16.1c5.6-8.5 5.3-19.6-.8-27.7l-16.1-21.5c-10.3-13.7-3.3-33.5 13.4-37.7l17-4.3c7.5-1.9 13.6-7.2 16.5-14.4l16.4-40.9C303.4 52.1 280.2 48 256 48C141.1 48 48 141.1 48 256c0 13.4 1.3 26.5 3.7 39.1zm407.7 4.6c-3-.3-6-.1-9 .8l-15.8 4.4c-6.7 1.9-13.8-.9-17.5-6.7l-2-3.1c-6-9.4-16.4-15.1-27.6-15.1s-21.6 5.7-27.6 15.1l-6.1 9.5c-1.4 2.2-3.4 4.1-5.7 5.3L312 330.1c-18.1 10.1-25.5 32.4-17 51.3l5.5 12.4c8.6 19.2 30.7 28.5 50.5 21.1l2.6-1c10-3.7 21.3-2.2 29.9 4.1l1.5 1.1c37.2-29.5 64.1-71.4 74.4-119.5zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm144.5 92.1c-2.1 8.6 3.1 17.3 11.6 19.4l32 8c8.6 2.1 17.3-3.1 19.4-11.6s-3.1-17.3-11.6-19.4l-32-8c-8.6-2.1-17.3 3.1-19.4 11.6zm92-20c-2.1 8.6 3.1 17.3 11.6 19.4s17.3-3.1 19.4-11.6l8-32c2.1-8.6-3.1-17.3-11.6-19.4s-17.3 3.1-19.4 11.6l-8 32zM343.2 113.7c-7.9-4-17.5-.7-21.5 7.2l-16 32c-4 7.9-.7 17.5 7.2 21.5s17.5 .7 21.5-7.2l16-32c4-7.9 .7-17.5-7.2-21.5z\"]\n};\nconst faGlobeAsia = faEarthAsia;\nconst faIdCardClip = {\n prefix: 'fas',\n iconName: 'id-card-clip',\n icon: [576, 512, [\"id-card-alt\"], \"f47f\", \"M256 0l64 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32zM64 64l128 0 0 48c0 26.5 21.5 48 48 48l96 0c26.5 0 48-21.5 48-48l0-48 128 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 128C0 92.7 28.7 64 64 64zM176 437.3c0 5.9 4.8 10.7 10.7 10.7l202.7 0c5.9 0 10.7-4.8 10.7-10.7c0-29.5-23.9-53.3-53.3-53.3l-117.3 0c-29.5 0-53.3 23.9-53.3 53.3zM288 352a64 64 0 1 0 0-128 64 64 0 1 0 0 128z\"]\n};\nconst faIdCardAlt = faIdCardClip;\nconst faMagnifyingGlassPlus = {\n prefix: 'fas',\n iconName: 'magnifying-glass-plus',\n icon: [512, 512, [\"search-plus\"], \"f00e\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM184 296c0 13.3 10.7 24 24 24s24-10.7 24-24l0-64 64 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-64 0 0-64c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 64-64 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l64 0 0 64z\"]\n};\nconst faSearchPlus = faMagnifyingGlassPlus;\nconst faThumbsUp = {\n prefix: 'fas',\n iconName: 'thumbs-up',\n icon: [512, 512, [128077, 61575], \"f164\", \"M313.4 32.9c26 5.2 42.9 30.5 37.7 56.5l-2.3 11.4c-5.3 26.7-15.1 52.1-28.8 75.2l144 0c26.5 0 48 21.5 48 48c0 18.5-10.5 34.6-25.9 42.6C497 275.4 504 288.9 504 304c0 23.4-16.8 42.9-38.9 47.1c4.4 7.3 6.9 15.8 6.9 24.9c0 21.3-13.9 39.4-33.1 45.6c.7 3.3 1.1 6.8 1.1 10.4c0 26.5-21.5 48-48 48l-97.5 0c-19 0-37.5-5.6-53.3-16.1l-38.5-25.7C176 420.4 160 390.4 160 358.3l0-38.3 0-48 0-24.9c0-29.2 13.3-56.7 36-75l7.4-5.9c26.5-21.2 44.6-51 51.2-84.2l2.3-11.4c5.2-26 30.5-42.9 56.5-37.7zM32 192l64 0c17.7 0 32 14.3 32 32l0 224c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32L0 224c0-17.7 14.3-32 32-32z\"]\n};\nconst faUserClock = {\n prefix: 'fas',\n iconName: 'user-clock',\n icon: [640, 512, [], \"f4fd\", \"M224 0a128 128 0 1 1 0 256A128 128 0 1 1 224 0zM178.3 304l91.4 0c20.6 0 40.4 3.5 58.8 9.9C323 331 320 349.1 320 368c0 59.5 29.5 112.1 74.8 144L29.7 512C13.3 512 0 498.7 0 482.3C0 383.8 79.8 304 178.3 304zM352 368a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm144-80c-8.8 0-16 7.2-16 16l0 64c0 8.8 7.2 16 16 16l48 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-32 0 0-48c0-8.8-7.2-16-16-16z\"]\n};\nconst faHandDots = {\n prefix: 'fas',\n iconName: 'hand-dots',\n icon: [512, 512, [\"allergies\"], \"f461\", \"M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 208c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-176c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 272c0 1.5 0 3.1 .1 4.6L67.6 283c-16-15.2-41.3-14.6-56.6 1.4s-14.6 41.3 1.4 56.6L124.8 448c43.1 41.1 100.4 64 160 64l19.2 0c97.2 0 176-78.8 176-176l0-208c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 112c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-176c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 176c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-208zM240 336a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm80 16a16 16 0 1 1 0 32 16 16 0 1 1 0-32zm48-16a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm-16 80a16 16 0 1 1 0 32 16 16 0 1 1 0-32zM240 432a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zm-48-48a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nconst faAllergies = faHandDots;\nconst faFileInvoice = {\n prefix: 'fas',\n iconName: 'file-invoice',\n icon: [384, 512, [], \"f570\", \"M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-288-128 0c-17.7 0-32-14.3-32-32L224 0 64 0zM256 0l0 128 128 0L256 0zM80 64l64 0c8.8 0 16 7.2 16 16s-7.2 16-16 16L80 96c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64l64 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-64 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm16 96l192 0c17.7 0 32 14.3 32 32l0 64c0 17.7-14.3 32-32 32L96 352c-17.7 0-32-14.3-32-32l0-64c0-17.7 14.3-32 32-32zm0 32l0 64 192 0 0-64L96 256zM240 416l64 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-64 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z\"]\n};\nconst faWindowMinimize = {\n prefix: 'fas',\n iconName: 'window-minimize',\n icon: [512, 512, [128469], \"f2d1\", \"M32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l448 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 416z\"]\n};\nconst faMugSaucer = {\n prefix: 'fas',\n iconName: 'mug-saucer',\n icon: [640, 512, [\"coffee\"], \"f0f4\", \"M96 64c0-17.7 14.3-32 32-32l320 0 64 0c70.7 0 128 57.3 128 128s-57.3 128-128 128l-32 0c0 53-43 96-96 96l-192 0c-53 0-96-43-96-96L96 64zM480 224l32 0c35.3 0 64-28.7 64-64s-28.7-64-64-64l-32 0 0 128zM32 416l512 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"]\n};\nconst faCoffee = faMugSaucer;\nconst faBrush = {\n prefix: 'fas',\n iconName: 'brush',\n icon: [384, 512, [], \"f55d\", \"M162.4 6c-1.5-3.6-5-6-8.9-6l-19 0c-3.9 0-7.5 2.4-8.9 6L104.9 57.7c-3.2 8-14.6 8-17.8 0L66.4 6c-1.5-3.6-5-6-8.9-6L48 0C21.5 0 0 21.5 0 48L0 224l0 22.4L0 256l9.6 0 364.8 0 9.6 0 0-9.6 0-22.4 0-176c0-26.5-21.5-48-48-48L230.5 0c-3.9 0-7.5 2.4-8.9 6L200.9 57.7c-3.2 8-14.6 8-17.8 0L162.4 6zM0 288l0 32c0 35.3 28.7 64 64 64l64 0 0 64c0 35.3 28.7 64 64 64s64-28.7 64-64l0-64 64 0c35.3 0 64-28.7 64-64l0-32L0 288zM192 432a16 16 0 1 1 0 32 16 16 0 1 1 0-32z\"]\n};\nconst faMask = {\n prefix: 'fas',\n iconName: 'mask',\n icon: [576, 512, [], \"f6fa\", \"M288 64C64 64 0 160 0 272S80 448 176 448l8.4 0c24.2 0 46.4-13.7 57.2-35.4l23.2-46.3c4.4-8.8 13.3-14.3 23.2-14.3s18.8 5.5 23.2 14.3l23.2 46.3c10.8 21.7 33 35.4 57.2 35.4l8.4 0c96 0 176-64 176-176s-64-208-288-208zM96 256a64 64 0 1 1 128 0A64 64 0 1 1 96 256zm320-64a64 64 0 1 1 0 128 64 64 0 1 1 0-128z\"]\n};\nconst faMagnifyingGlassMinus = {\n prefix: 'fas',\n iconName: 'magnifying-glass-minus',\n icon: [512, 512, [\"search-minus\"], \"f010\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM136 184c-13.3 0-24 10.7-24 24s10.7 24 24 24l144 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-144 0z\"]\n};\nconst faSearchMinus = faMagnifyingGlassMinus;\nconst faRulerVertical = {\n prefix: 'fas',\n iconName: 'ruler-vertical',\n icon: [256, 512, [], \"f548\", \"M0 48C0 21.5 21.5 0 48 0L208 0c26.5 0 48 21.5 48 48l0 48-80 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l80 0 0 64-80 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l80 0 0 64-80 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l80 0 0 64-80 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l80 0 0 48c0 26.5-21.5 48-48 48L48 512c-26.5 0-48-21.5-48-48L0 48z\"]\n};\nconst faUserLarge = {\n prefix: 'fas',\n iconName: 'user-large',\n icon: [512, 512, [\"user-alt\"], \"f406\", \"M256 288A144 144 0 1 0 256 0a144 144 0 1 0 0 288zm-94.7 32C72.2 320 0 392.2 0 481.3c0 17 13.8 30.7 30.7 30.7l450.6 0c17 0 30.7-13.8 30.7-30.7C512 392.2 439.8 320 350.7 320l-189.4 0z\"]\n};\nconst faUserAlt = faUserLarge;\nconst faTrainTram = {\n prefix: 'fas',\n iconName: 'train-tram',\n icon: [448, 512, [128650], \"e5b4\", \"M86.8 48c-12.2 0-23.6 5.5-31.2 15L42.7 79C34.5 89.3 19.4 91 9 82.7S-3 59.4 5.3 49L18 33C34.7 12.2 60 0 86.8 0L361.2 0c26.7 0 52 12.2 68.7 33l12.8 16c8.3 10.4 6.6 25.5-3.8 33.7s-25.5 6.6-33.7-3.7L392.5 63c-7.6-9.5-19.1-15-31.2-15L248 48l0 48 40 0c53 0 96 43 96 96l0 160c0 30.6-14.3 57.8-36.6 75.4l65.5 65.5c7.1 7.1 2.1 19.1-7.9 19.1l-39.7 0c-8.5 0-16.6-3.4-22.6-9.4L288 448l-128 0-54.6 54.6c-6 6-14.1 9.4-22.6 9.4L43 512c-10 0-15-12.1-7.9-19.1l65.5-65.5C78.3 409.8 64 382.6 64 352l0-160c0-53 43-96 96-96l40 0 0-48L86.8 48zM160 160c-17.7 0-32 14.3-32 32l0 32c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-32c0-17.7-14.3-32-32-32l-128 0zm32 192a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm96 32a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"]\n};\nconst faUserNurse = {\n prefix: 'fas',\n iconName: 'user-nurse',\n icon: [448, 512, [], \"f82f\", \"M96 128l0-57.8c0-13.3 8.3-25.3 20.8-30l96-36c7.2-2.7 15.2-2.7 22.5 0l96 36c12.5 4.7 20.8 16.6 20.8 30l0 57.8-.3 0c.2 2.6 .3 5.3 .3 8l0 40c0 70.7-57.3 128-128 128s-128-57.3-128-128l0-40c0-2.7 .1-5.4 .3-8l-.3 0zm48 48c0 44.2 35.8 80 80 80s80-35.8 80-80l0-16-160 0 0 16zM111.9 327.7c10.5-3.4 21.8 .4 29.4 8.5l71 75.5c6.3 6.7 17 6.7 23.3 0l71-75.5c7.6-8.1 18.9-11.9 29.4-8.5C401 348.6 448 409.4 448 481.3c0 17-13.8 30.7-30.7 30.7L30.7 512C13.8 512 0 498.2 0 481.3c0-71.9 47-132.7 111.9-153.6zM208 48l0 16-16 0c-4.4 0-8 3.6-8 8l0 16c0 4.4 3.6 8 8 8l16 0 0 16c0 4.4 3.6 8 8 8l16 0c4.4 0 8-3.6 8-8l0-16 16 0c4.4 0 8-3.6 8-8l0-16c0-4.4-3.6-8-8-8l-16 0 0-16c0-4.4-3.6-8-8-8l-16 0c-4.4 0-8 3.6-8 8z\"]\n};\nconst faSyringe = {\n prefix: 'fas',\n iconName: 'syringe',\n icon: [512, 512, [128137], \"f48e\", \"M441 7l32 32 32 32c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-15-15L417.9 128l55 55c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-72-72L295 73c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l55 55L422.1 56 407 41c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0zM210.3 155.7l61.1-61.1c.3 .3 .6 .7 1 1l16 16 56 56 56 56 16 16c.3 .3 .6 .6 1 1l-191 191c-10.5 10.5-24.7 16.4-39.6 16.4l-88.8 0L41 505c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l57-57 0-88.8c0-14.9 5.9-29.1 16.4-39.6l43.3-43.3 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57 41.4-41.4 57 57c6.2 6.2 16.4 6.2 22.6 0s6.2-16.4 0-22.6l-57-57z\"]\n};\nconst faCloudSun = {\n prefix: 'fas',\n iconName: 'cloud-sun',\n icon: [640, 512, [9925], \"f6c4\", \"M294.2 1.2c5.1 2.1 8.7 6.7 9.6 12.1l14.1 84.7 84.7 14.1c5.4 .9 10 4.5 12.1 9.6s1.5 10.9-1.6 15.4l-38.5 55c-2.2-.1-4.4-.2-6.7-.2c-23.3 0-45.1 6.2-64 17.1l0-1.1c0-53-43-96-96-96s-96 43-96 96s43 96 96 96c8.1 0 15.9-1 23.4-2.9c-36.6 18.1-63.3 53.1-69.8 94.9l-24.4 17c-4.5 3.2-10.3 3.8-15.4 1.6s-8.7-6.7-9.6-12.1L98.1 317.9 13.4 303.8c-5.4-.9-10-4.5-12.1-9.6s-1.5-10.9 1.6-15.4L52.5 208 2.9 137.2c-3.2-4.5-3.8-10.3-1.6-15.4s6.7-8.7 12.1-9.6L98.1 98.1l14.1-84.7c.9-5.4 4.5-10 9.6-12.1s10.9-1.5 15.4 1.6L208 52.5 278.8 2.9c4.5-3.2 10.3-3.8 15.4-1.6zM144 208a64 64 0 1 1 128 0 64 64 0 1 1 -128 0zM639.9 431.9c0 44.2-35.8 80-80 80l-271.9 0c-53 0-96-43-96-96c0-47.6 34.6-87 80-94.6l0-1.3c0-53 43-96 96-96c34.9 0 65.4 18.6 82.2 46.4c13-9.1 28.8-14.4 45.8-14.4c44.2 0 80 35.8 80 80c0 5.9-.6 11.7-1.9 17.2c37.4 6.7 65.8 39.4 65.8 78.7z\"]\n};\nconst faStopwatch20 = {\n prefix: 'fas',\n iconName: 'stopwatch-20',\n icon: [448, 512, [], \"e06f\", \"M176 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l16 0 0 34.4C92.3 113.8 16 200 16 304c0 114.9 93.1 208 208 208s208-93.1 208-208c0-41.8-12.3-80.7-33.5-113.2l24.1-24.1c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L355.7 143c-28.1-23-62.2-38.8-99.7-44.6L256 64l16 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L176 0zM288 204c28.7 0 52 23.3 52 52l0 96c0 28.7-23.3 52-52 52s-52-23.3-52-52l0-96c0-28.7 23.3-52 52-52zm-12 52l0 96c0 6.6 5.4 12 12 12s12-5.4 12-12l0-96c0-6.6-5.4-12-12-12s-12 5.4-12 12zM159.5 244c-5.4 0-10.2 3.5-11.9 8.6l-.6 1.7c-3.5 10.5-14.8 16.1-25.3 12.6s-16.1-14.8-12.6-25.3l.6-1.7c7.2-21.5 27.2-35.9 49.8-35.9c29 0 52.5 23.5 52.5 52.5l0 2.2c0 13.4-4.9 26.4-13.8 36.4l-39 43.9c-6.2 7-10 15.7-10.9 24.9l43.8 0c11 0 20 9 20 20s-9 20-20 20l-64 0c-11 0-20-9-20-20l0-15.7c0-20.6 7.5-40.4 21.2-55.8l39-43.9c2.4-2.7 3.7-6.2 3.7-9.8l0-2.2c0-6.9-5.6-12.5-12.5-12.5z\"]\n};\nconst faSquareFull = {\n prefix: 'fas',\n iconName: 'square-full',\n icon: [512, 512, [128997, 128998, 128999, 129000, 129001, 129002, 129003, 11035, 11036], \"f45c\", \"M0 0H512V512H0V0z\"]\n};\nconst faMagnet = {\n prefix: 'fas',\n iconName: 'magnet',\n icon: [448, 512, [129522], \"f076\", \"M0 160l0 96C0 379.7 100.3 480 224 480s224-100.3 224-224l0-96-128 0 0 96c0 53-43 96-96 96s-96-43-96-96l0-96L0 160zm0-32l128 0 0-64c0-17.7-14.3-32-32-32L32 32C14.3 32 0 46.3 0 64l0 64zm320 0l128 0 0-64c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32 14.3-32 32l0 64z\"]\n};\nconst faJar = {\n prefix: 'fas',\n iconName: 'jar',\n icon: [320, 512, [], \"e516\", \"M32 32C32 14.3 46.3 0 64 0L256 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L64 64C46.3 64 32 49.7 32 32zM0 160c0-35.3 28.7-64 64-64l192 0c35.3 0 64 28.7 64 64l0 288c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 160zm96 64c-17.7 0-32 14.3-32 32l0 96c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-96c0-17.7-14.3-32-32-32L96 224z\"]\n};\nconst faNoteSticky = {\n prefix: 'fas',\n iconName: 'note-sticky',\n icon: [448, 512, [62026, \"sticky-note\"], \"f249\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l224 0 0-112c0-26.5 21.5-48 48-48l112 0 0-224c0-35.3-28.7-64-64-64L64 32zM448 352l-45.3 0L336 352c-8.8 0-16 7.2-16 16l0 66.7 0 45.3 32-32 64-64 32-32z\"]\n};\nconst faStickyNote = faNoteSticky;\nconst faBugSlash = {\n prefix: 'fas',\n iconName: 'bug-slash',\n icon: [640, 512, [], \"e490\", \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L477.4 348.9c1.7-9.4 2.6-19 2.6-28.9l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64.3 0c-1.1-14.1-5-27.5-11.1-39.5c.7-.6 1.4-1.2 2.1-1.9l64-64c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-64 64c-.7 .7-1.3 1.4-1.9 2.1C409.2 164.1 393.1 160 376 160l-112 0c-8.3 0-16.3 1-24 2.8L38.8 5.1zM320 0c-53 0-96 43-96 96l0 3.6c0 15.7 12.7 28.4 28.4 28.4l135.1 0c15.7 0 28.4-12.7 28.4-28.4l0-3.6c0-53-43-96-96-96zM160.3 256L96 256c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c0 24.6 5.5 47.8 15.4 68.6c-2.2 1.3-4.2 2.9-6 4.8l-64 64c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l63.1-63.1c24.5 21.8 55.8 36.2 90.3 39.6l0-143.7L166.7 227.3c-3.4 9-5.6 18.7-6.4 28.7zM336 479.2c36.6-3.6 69.7-19.6 94.8-43.8L336 360.7l0 118.5z\"]\n};\nconst faArrowUpFromWaterPump = {\n prefix: 'fas',\n iconName: 'arrow-up-from-water-pump',\n icon: [576, 512, [], \"e4b6\", \"M112 0C85.5 0 64 21.5 64 48l0 208-16 0c-26.5 0-48 21.5-48 48l0 96c0 8 2 15.6 5.4 22.2c3.8-1.7 7.8-3.1 12-4.1c13.1-3.1 26.7-9.8 37.3-18.6c22.2-18.7 54.3-20.1 78.1-3.4c18 12.4 40.1 20.3 59.2 20.3c21.1 0 42-8.5 59.2-20.3c22.1-15.5 51.6-15.5 73.7 0c18.4 12.7 39.6 20.3 59.2 20.3c19 0 41.2-7.9 59.2-20.3c23.8-16.7 55.8-15.3 78.1 3.4c10.6 8.8 24.2 15.6 37.3 18.6c4.2 1 8.2 2.4 12 4.1C574 415.6 576 408 576 400l0-96c0-26.5-21.5-48-48-48l-48 0 0-146.7 25.4 25.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-80-80c-12.5-12.5-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L416 109.3 416 256l-128 0 0-208c0-26.5-21.5-48-48-48L112 0zM306.5 421.9c-11.1-7.9-25.9-7.9-37 0C247 437.4 219.5 448 192 448c-26.9 0-55.3-10.8-77.4-26.1c0 0 0 0 0 0c-11.9-8.5-28.1-7.8-39.2 1.7c-14.4 11.9-32.5 21-50.6 25.2c-17.2 4-27.9 21.2-23.9 38.4s21.2 27.9 38.4 23.9c24.5-5.7 44.9-16.5 58.2-25C126.5 501.7 159 512 192 512c31.9 0 60.6-9.9 80.4-18.9c5.8-2.7 11.1-5.3 15.6-7.7c4.5 2.4 9.7 5.1 15.6 7.7c19.8 9 48.5 18.9 80.4 18.9c33 0 65.5-10.3 94.5-25.8c13.4 8.4 33.7 19.3 58.2 25c17.2 4 34.4-6.7 38.4-23.9s-6.7-34.4-23.9-38.4c-18.1-4.2-36.2-13.3-50.6-25.2c-11.1-9.4-27.3-10.1-39.2-1.7c0 0 0 0 0 0C439.4 437.2 410.9 448 384 448c-27.5 0-55-10.6-77.5-26.1z\"]\n};\nconst faBone = {\n prefix: 'fas',\n iconName: 'bone',\n icon: [576, 512, [129460], \"f5d7\", \"M153.7 144.8c6.9 16.3 20.6 31.2 38.3 31.2l192 0c17.7 0 31.4-14.9 38.3-31.2C434.4 116.1 462.9 96 496 96c44.2 0 80 35.8 80 80c0 30.4-17 56.9-42 70.4c-3.6 1.9-6 5.5-6 9.6s2.4 7.7 6 9.6c25 13.5 42 40 42 70.4c0 44.2-35.8 80-80 80c-33.1 0-61.6-20.1-73.7-48.8C415.4 350.9 401.7 336 384 336l-192 0c-17.7 0-31.4 14.9-38.3 31.2C141.6 395.9 113.1 416 80 416c-44.2 0-80-35.8-80-80c0-30.4 17-56.9 42-70.4c3.6-1.9 6-5.5 6-9.6s-2.4-7.7-6-9.6C17 232.9 0 206.4 0 176c0-44.2 35.8-80 80-80c33.1 0 61.6 20.1 73.7 48.8z\"]\n};\nconst faTableCellsRowUnlock = {\n prefix: 'fas',\n iconName: 'table-cells-row-unlock',\n icon: [640, 512, [], \"e691\", \"M0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 65.1c-37.8 5.4-69.4 29.6-85.2 62.9L360 224l0 64 56 0 0 8.6c-19.1 11.1-32 31.7-32 55.4l-24 0 0 64 24 0 0 64L64 480c-35.3 0-64-28.7-64-64L0 96zM64 224l0 64 88 0 0-64-88 0zm232 0l-88 0 0 64 88 0 0-64zM152 352l-88 0 0 64 88 0 0-64zm56 0l0 64 88 0 0-64-88 0zm288-80l0 48 32 0 32 0 48 0c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-160 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32l0-48c0-44.2 35.8-80 80-80s80 35.8 80 80l-48 0c0-17.7-14.3-32-32-32s-32 14.3-32 32z\"]\n};\nconst faUserInjured = {\n prefix: 'fas',\n iconName: 'user-injured',\n icon: [448, 512, [], \"f728\", \"M240 80l102.7 0c-7.9-19.5-20.4-36.5-36.2-49.9L240 80zm37.7-68.2C261.3 4.2 243.2 0 224 0c-53.7 0-99.7 33.1-118.7 80l81.4 0 91-68.2zM224 256c70.7 0 128-57.3 128-128c0-5.4-.3-10.8-1-16L97 112c-.7 5.2-1 10.6-1 16c0 70.7 57.3 128 128 128zM124 312.4c-9.7 3.1-19.1 7-28 11.7L96 512l147.7 0L181.5 408.2 124 312.4zm33-7.2L204.3 384l67.7 0c44.2 0 80 35.8 80 80c0 18-6 34.6-16 48l82.3 0c16.4 0 29.7-13.3 29.7-29.7C448 383.8 368.2 304 269.7 304l-91.4 0c-7.2 0-14.3 .4-21.3 1.3zM0 482.3C0 498.7 13.3 512 29.7 512L64 512l0-166.6C24.9 378.1 0 427.3 0 482.3zM320 464c0-26.5-21.5-48-48-48l-48.5 0 57.1 95.2C303 507.2 320 487.6 320 464z\"]\n};\nconst faFaceSadTear = {\n prefix: 'fas',\n iconName: 'face-sad-tear',\n icon: [512, 512, [128546, \"sad-tear\"], \"f5b4\", \"M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zm240 80c0-8.8 7.2-16 16-16c45 0 85.6 20.5 115.7 53.1c6 6.5 5.6 16.6-.9 22.6s-16.6 5.6-22.6-.9c-25-27.1-57.4-42.9-92.3-42.9c-8.8 0-16-7.2-16-16zm-80 80c-26.5 0-48-21-48-47c0-20 28.6-60.4 41.6-77.7c3.2-4.4 9.6-4.4 12.8 0C179.6 308.6 208 349 208 369c0 26-21.5 47-48 47zM367.6 208a32 32 0 1 1 -64 0 32 32 0 1 1 64 0zm-192-32a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faSadTear = faFaceSadTear;\nconst faPlane = {\n prefix: 'fas',\n iconName: 'plane',\n icon: [576, 512, [], \"f072\", \"M482.3 192c34.2 0 93.7 29 93.7 64c0 36-59.5 64-93.7 64l-116.6 0L265.2 495.9c-5.7 10-16.3 16.1-27.8 16.1l-56.2 0c-10.6 0-18.3-10.2-15.4-20.4l49-171.6L112 320 68.8 377.6c-3 4-7.8 6.4-12.8 6.4l-42 0c-7.8 0-14-6.3-14-14c0-1.3 .2-2.6 .5-3.9L32 256 .5 145.9c-.4-1.3-.5-2.6-.5-3.9c0-7.8 6.3-14 14-14l42 0c5 0 9.8 2.4 12.8 6.4L112 192l102.9 0-49-171.6C162.9 10.2 170.6 0 181.2 0l56.2 0c11.5 0 22.1 6.2 27.8 16.1L365.7 192l116.6 0z\"]\n};\nconst faTentArrowsDown = {\n prefix: 'fas',\n iconName: 'tent-arrows-down',\n icon: [576, 512, [], \"e581\", \"M209.8 111.9c-8.9-9.9-24-10.7-33.9-1.8l-39.9 36L136 24c0-13.3-10.7-24-24-24S88 10.7 88 24l0 122.1-39.9-36c-9.9-8.9-25-8.1-33.9 1.8s-8.1 25 1.8 33.9l80 72c9.1 8.2 23 8.2 32.1 0l80-72c9.9-8.9 10.7-24 1.8-33.9zm352 0c-8.9-9.9-24-10.7-33.9-1.8l-39.9 36L488 24c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 122.1-39.9-36c-9.9-8.9-25-8.1-33.9 1.8s-8.1 25 1.8 33.9l80 72c9.1 8.2 23 8.2 32.1 0l80-72c9.9-8.9 10.7-24 1.8-33.9zM307.4 166.5c-11.5-8.7-27.3-8.7-38.8 0l-168 128c-6.6 5-11 12.5-12.3 20.7l-24 160c-1.4 9.2 1.3 18.6 7.4 25.6S86.7 512 96 512l144 0 16 0c17.7 0 32-14.3 32-32l0-118.1c0-5.5 4.4-9.9 9.9-9.9c3.7 0 7.2 2.1 8.8 5.5l68.4 136.8c5.4 10.8 16.5 17.7 28.6 17.7l60.2 0 16 0c9.3 0 18.2-4.1 24.2-11.1s8.8-16.4 7.4-25.6l-24-160c-1.2-8.2-5.6-15.7-12.3-20.7l-168-128z\"]\n};\nconst faExclamation = {\n prefix: 'fas',\n iconName: 'exclamation',\n icon: [128, 512, [10069, 10071, 61738], \"21\", \"M96 64c0-17.7-14.3-32-32-32S32 46.3 32 64l0 256c0 17.7 14.3 32 32 32s32-14.3 32-32L96 64zM64 480a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"]\n};\nconst faArrowsSpin = {\n prefix: 'fas',\n iconName: 'arrows-spin',\n icon: [512, 512, [], \"e4bb\", \"M256 96c38.4 0 73.7 13.5 101.3 36.1l-32.6 32.6c-4.6 4.6-5.9 11.5-3.5 17.4s8.3 9.9 14.8 9.9l112 0c8.8 0 16-7.2 16-16l0-112c0-6.5-3.9-12.3-9.9-14.8s-12.9-1.1-17.4 3.5l-34 34C363.4 52.6 312.1 32 256 32c-10.9 0-21.5 .8-32 2.3l0 64.9c10.3-2.1 21-3.2 32-3.2zM132.1 154.7l32.6 32.6c4.6 4.6 11.5 5.9 17.4 3.5s9.9-8.3 9.9-14.8l0-112c0-8.8-7.2-16-16-16L64 48c-6.5 0-12.3 3.9-14.8 9.9s-1.1 12.9 3.5 17.4l34 34C52.6 148.6 32 199.9 32 256c0 10.9 .8 21.5 2.3 32l64.9 0c-2.1-10.3-3.2-21-3.2-32c0-38.4 13.5-73.7 36.1-101.3zM477.7 224l-64.9 0c2.1 10.3 3.2 21 3.2 32c0 38.4-13.5 73.7-36.1 101.3l-32.6-32.6c-4.6-4.6-11.5-5.9-17.4-3.5s-9.9 8.3-9.9 14.8l0 112c0 8.8 7.2 16 16 16l112 0c6.5 0 12.3-3.9 14.8-9.9s1.1-12.9-3.5-17.4l-34-34C459.4 363.4 480 312.1 480 256c0-10.9-.8-21.5-2.3-32zM256 416c-38.4 0-73.7-13.5-101.3-36.1l32.6-32.6c4.6-4.6 5.9-11.5 3.5-17.4s-8.3-9.9-14.8-9.9L64 320c-8.8 0-16 7.2-16 16l0 112c0 6.5 3.9 12.3 9.9 14.8s12.9 1.1 17.4-3.5l34-34C148.6 459.4 199.9 480 256 480c10.9 0 21.5-.8 32-2.3l0-64.9c-10.3 2.1-21 3.2-32 3.2z\"]\n};\nconst faPrint = {\n prefix: 'fas',\n iconName: 'print',\n icon: [512, 512, [128424, 128438, 9113], \"f02f\", \"M128 0C92.7 0 64 28.7 64 64l0 96 64 0 0-96 226.7 0L384 93.3l0 66.7 64 0 0-66.7c0-17-6.7-33.3-18.7-45.3L400 18.7C388 6.7 371.7 0 354.7 0L128 0zM384 352l0 32 0 64-256 0 0-64 0-16 0-16 256 0zm64 32l32 0c17.7 0 32-14.3 32-32l0-96c0-35.3-28.7-64-64-64L64 192c-35.3 0-64 28.7-64 64l0 96c0 17.7 14.3 32 32 32l32 0 0 64c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-64zM432 248a24 24 0 1 1 0 48 24 24 0 1 1 0-48z\"]\n};\nconst faTurkishLiraSign = {\n prefix: 'fas',\n iconName: 'turkish-lira-sign',\n icon: [384, 512, [\"try\", \"turkish-lira\"], \"e2bb\", \"M96 32c17.7 0 32 14.3 32 32l0 35.3L247.2 65.2c17-4.9 34.7 5 39.6 22s-5 34.7-22 39.6L128 165.9l0 29.4 119.2-34.1c17-4.9 34.7 5 39.6 22s-5 34.7-22 39.6L128 261.9 128 416l63.8 0c68.2 0 124.4-53.5 127.8-121.6l.4-8c.9-17.7 15.9-31.2 33.6-30.4s31.2 15.9 30.4 33.6l-.4 8C378.5 399.8 294.1 480 191.8 480L96 480c-17.7 0-32-14.3-32-32l0-167.9-23.2 6.6c-17 4.9-34.7-5-39.6-22s5-34.7 22-39.6L64 213.6l0-29.4-23.2 6.6c-17 4.9-34.7-5-39.6-22s5-34.7 22-39.6L64 117.6 64 64c0-17.7 14.3-32 32-32z\"]\n};\nconst faTry = faTurkishLiraSign;\nconst faTurkishLira = faTurkishLiraSign;\nconst faDollarSign = {\n prefix: 'fas',\n iconName: 'dollar-sign',\n icon: [320, 512, [128178, 61781, \"dollar\", \"usd\"], \"24\", \"M160 0c17.7 0 32 14.3 32 32l0 35.7c1.6 .2 3.1 .4 4.7 .7c.4 .1 .7 .1 1.1 .2l48 8.8c17.4 3.2 28.9 19.9 25.7 37.2s-19.9 28.9-37.2 25.7l-47.5-8.7c-31.3-4.6-58.9-1.5-78.3 6.2s-27.2 18.3-29 28.1c-2 10.7-.5 16.7 1.2 20.4c1.8 3.9 5.5 8.3 12.8 13.2c16.3 10.7 41.3 17.7 73.7 26.3l2.9 .8c28.6 7.6 63.6 16.8 89.6 33.8c14.2 9.3 27.6 21.9 35.9 39.5c8.5 17.9 10.3 37.9 6.4 59.2c-6.9 38-33.1 63.4-65.6 76.7c-13.7 5.6-28.6 9.2-44.4 11l0 33.4c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-34.9c-.4-.1-.9-.1-1.3-.2l-.2 0s0 0 0 0c-24.4-3.8-64.5-14.3-91.5-26.3c-16.1-7.2-23.4-26.1-16.2-42.2s26.1-23.4 42.2-16.2c20.9 9.3 55.3 18.5 75.2 21.6c31.9 4.7 58.2 2 76-5.3c16.9-6.9 24.6-16.9 26.8-28.9c1.9-10.6 .4-16.7-1.3-20.4c-1.9-4-5.6-8.4-13-13.3c-16.4-10.7-41.5-17.7-74-26.3l-2.8-.7s0 0 0 0C119.4 279.3 84.4 270 58.4 253c-14.2-9.3-27.5-22-35.8-39.6c-8.4-17.9-10.1-37.9-6.1-59.2C23.7 116 52.3 91.2 84.8 78.3c13.3-5.3 27.9-8.9 43.2-11L128 32c0-17.7 14.3-32 32-32z\"]\n};\nconst faDollar = faDollarSign;\nconst faUsd = faDollarSign;\nconst faX = {\n prefix: 'fas',\n iconName: 'x',\n icon: [384, 512, [120], \"58\", \"M376.6 84.5c11.3-13.6 9.5-33.8-4.1-45.1s-33.8-9.5-45.1 4.1L192 206 56.6 43.5C45.3 29.9 25.1 28.1 11.5 39.4S-3.9 70.9 7.4 84.5L150.3 256 7.4 427.5c-11.3 13.6-9.5 33.8 4.1 45.1s33.8 9.5 45.1-4.1L192 306 327.4 468.5c11.3 13.6 31.5 15.4 45.1 4.1s15.4-31.5 4.1-45.1L233.7 256 376.6 84.5z\"]\n};\nconst faMagnifyingGlassDollar = {\n prefix: 'fas',\n iconName: 'magnifying-glass-dollar',\n icon: [512, 512, [\"search-dollar\"], \"f688\", \"M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM228 104c0-11-9-20-20-20s-20 9-20 20l0 14c-7.6 1.7-15.2 4.4-22.2 8.5c-13.9 8.3-25.9 22.8-25.8 43.9c.1 20.3 12 33.1 24.7 40.7c11 6.6 24.7 10.8 35.6 14l1.7 .5c12.6 3.8 21.8 6.8 28 10.7c5.1 3.2 5.8 5.4 5.9 8.2c.1 5-1.8 8-5.9 10.5c-5 3.1-12.9 5-21.4 4.7c-11.1-.4-21.5-3.9-35.1-8.5c-2.3-.8-4.7-1.6-7.2-2.4c-10.5-3.5-21.8 2.2-25.3 12.6s2.2 21.8 12.6 25.3c1.9 .6 4 1.3 6.1 2.1c0 0 0 0 0 0s0 0 0 0c8.3 2.9 17.9 6.2 28.2 8.4l0 14.6c0 11 9 20 20 20s20-9 20-20l0-13.8c8-1.7 16-4.5 23.2-9c14.3-8.9 25.1-24.1 24.8-45c-.3-20.3-11.7-33.4-24.6-41.6c-11.5-7.2-25.9-11.6-37.1-15l-.7-.2c-12.8-3.9-21.9-6.7-28.3-10.5c-5.2-3.1-5.3-4.9-5.3-6.7c0-3.7 1.4-6.5 6.2-9.3c5.4-3.2 13.6-5.1 21.5-5c9.6 .1 20.2 2.2 31.2 5.2c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-6.5-1.7-13.7-3.4-21.1-4.7l0-13.9z\"]\n};\nconst faSearchDollar = faMagnifyingGlassDollar;\nconst faUsersGear = {\n prefix: 'fas',\n iconName: 'users-gear',\n icon: [640, 512, [\"users-cog\"], \"f509\", \"M144 160A80 80 0 1 0 144 0a80 80 0 1 0 0 160zm368 0A80 80 0 1 0 512 0a80 80 0 1 0 0 160zM0 298.7C0 310.4 9.6 320 21.3 320l213.3 0c.2 0 .4 0 .7 0c-26.6-23.5-43.3-57.8-43.3-96c0-7.6 .7-15 1.9-22.3c-13.6-6.3-28.7-9.7-44.6-9.7l-42.7 0C47.8 192 0 239.8 0 298.7zM320 320c24 0 45.9-8.8 62.7-23.3c2.5-3.7 5.2-7.3 8-10.7c2.7-3.3 5.7-6.1 9-8.3C410 262.3 416 243.9 416 224c0-53-43-96-96-96s-96 43-96 96s43 96 96 96zm65.4 60.2c-10.3-5.9-18.1-16.2-20.8-28.2l-103.2 0C187.7 352 128 411.7 128 485.3c0 14.7 11.9 26.7 26.7 26.7l300.6 0c-2.1-5.2-3.2-10.9-3.2-16.4l0-3c-1.3-.7-2.7-1.5-4-2.3l-2.6 1.5c-16.8 9.7-40.5 8-54.7-9.7c-4.5-5.6-8.6-11.5-12.4-17.6l-.1-.2-.1-.2-2.4-4.1-.1-.2-.1-.2c-3.4-6.2-6.4-12.6-9-19.3c-8.2-21.2 2.2-42.6 19-52.3l2.7-1.5c0-.8 0-1.5 0-2.3s0-1.5 0-2.3l-2.7-1.5zM533.3 192l-42.7 0c-15.9 0-31 3.5-44.6 9.7c1.3 7.2 1.9 14.7 1.9 22.3c0 17.4-3.5 33.9-9.7 49c2.5 .9 4.9 2 7.1 3.3l2.6 1.5c1.3-.8 2.6-1.6 4-2.3l0-3c0-19.4 13.3-39.1 35.8-42.6c7.9-1.2 16-1.9 24.2-1.9s16.3 .6 24.2 1.9c22.5 3.5 35.8 23.2 35.8 42.6l0 3c1.3 .7 2.7 1.5 4 2.3l2.6-1.5c16.8-9.7 40.5-8 54.7 9.7c2.3 2.8 4.5 5.8 6.6 8.7c-2.1-57.1-49-102.7-106.6-102.7zm91.3 163.9c6.3-3.6 9.5-11.1 6.8-18c-2.1-5.5-4.6-10.8-7.4-15.9l-2.3-4c-3.1-5.1-6.5-9.9-10.2-14.5c-4.6-5.7-12.7-6.7-19-3l-2.9 1.7c-9.2 5.3-20.4 4-29.6-1.3s-16.1-14.5-16.1-25.1l0-3.4c0-7.3-4.9-13.8-12.1-14.9c-6.5-1-13.1-1.5-19.9-1.5s-13.4 .5-19.9 1.5c-7.2 1.1-12.1 7.6-12.1 14.9l0 3.4c0 10.6-6.9 19.8-16.1 25.1s-20.4 6.6-29.6 1.3l-2.9-1.7c-6.3-3.6-14.4-2.6-19 3c-3.7 4.6-7.1 9.5-10.2 14.6l-2.3 3.9c-2.8 5.1-5.3 10.4-7.4 15.9c-2.6 6.8 .5 14.3 6.8 17.9l2.9 1.7c9.2 5.3 13.7 15.8 13.7 26.4s-4.5 21.1-13.7 26.4l-3 1.7c-6.3 3.6-9.5 11.1-6.8 17.9c2.1 5.5 4.6 10.7 7.4 15.8l2.4 4.1c3 5.1 6.4 9.9 10.1 14.5c4.6 5.7 12.7 6.7 19 3l2.9-1.7c9.2-5.3 20.4-4 29.6 1.3s16.1 14.5 16.1 25.1l0 3.4c0 7.3 4.9 13.8 12.1 14.9c6.5 1 13.1 1.5 19.9 1.5s13.4-.5 19.9-1.5c7.2-1.1 12.1-7.6 12.1-14.9l0-3.4c0-10.6 6.9-19.8 16.1-25.1s20.4-6.6 29.6-1.3l2.9 1.7c6.3 3.6 14.4 2.6 19-3c3.7-4.6 7.1-9.4 10.1-14.5l2.4-4.2c2.8-5.1 5.3-10.3 7.4-15.8c2.6-6.8-.5-14.3-6.8-17.9l-3-1.7c-9.2-5.3-13.7-15.8-13.7-26.4s4.5-21.1 13.7-26.4l3-1.7zM472 384a40 40 0 1 1 80 0 40 40 0 1 1 -80 0z\"]\n};\nconst faUsersCog = faUsersGear;\nconst faPersonMilitaryPointing = {\n prefix: 'fas',\n iconName: 'person-military-pointing',\n icon: [576, 512, [], \"e54a\", \"M246.9 14.1C234 15.2 224 26 224 39c0 13.8 11.2 25 25 25l151 0c8.8 0 16-7.2 16-16l0-30.6C416 8 408 .7 398.7 1.4L246.9 14.1zM240 112c0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16L241.6 96c-1 5.2-1.6 10.5-1.6 16zM72 224c-22.1 0-40 17.9-40 40s17.9 40 40 40l152 0 0 89.4L386.8 230.5c-13.3-4.3-27.3-6.5-41.6-6.5L240 224 72 224zm345.7 20.9L246.6 416 416 416l0-46.3 53.6 90.6c11.2 19 35.8 25.3 54.8 14.1s25.3-35.8 14.1-54.8L462.3 290.8c-11.2-18.9-26.6-34.5-44.6-45.9zM224 448l0 32c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-32-192 0z\"]\n};\nconst faBuildingColumns = {\n prefix: 'fas',\n iconName: 'building-columns',\n icon: [512, 512, [\"bank\", \"institution\", \"museum\", \"university\"], \"f19c\", \"M243.4 2.6l-224 96c-14 6-21.8 21-18.7 35.8S16.8 160 32 160l0 8c0 13.3 10.7 24 24 24l400 0c13.3 0 24-10.7 24-24l0-8c15.2 0 28.3-10.7 31.3-25.6s-4.8-29.9-18.7-35.8l-224-96c-8-3.4-17.2-3.4-25.2 0zM128 224l-64 0 0 196.3c-.6 .3-1.2 .7-1.8 1.1l-48 32c-11.7 7.8-17 22.4-12.9 35.9S17.9 512 32 512l448 0c14.1 0 26.5-9.2 30.6-22.7s-1.1-28.1-12.9-35.9l-48-32c-.6-.4-1.2-.7-1.8-1.1L448 224l-64 0 0 192-40 0 0-192-64 0 0 192-48 0 0-192-64 0 0 192-40 0 0-192zM256 64a32 32 0 1 1 0 64 32 32 0 1 1 0-64z\"]\n};\nconst faBank = faBuildingColumns;\nconst faInstitution = faBuildingColumns;\nconst faMuseum = faBuildingColumns;\nconst faUniversity = faBuildingColumns;\nconst faUmbrella = {\n prefix: 'fas',\n iconName: 'umbrella',\n icon: [576, 512, [], \"f0e9\", \"M288 0c17.7 0 32 14.3 32 32l0 17.7C451.8 63.4 557.7 161 573.9 285.9c2 15.6-17.3 24.4-27.8 12.7C532.1 283 504.8 272 480 272c-38.7 0-71 27.5-78.4 64.1c-1.7 8.7-8.7 15.9-17.6 15.9s-15.8-7.2-17.6-15.9C359 299.5 326.7 272 288 272s-71 27.5-78.4 64.1c-1.7 8.7-8.7 15.9-17.6 15.9s-15.8-7.2-17.6-15.9C167 299.5 134.7 272 96 272c-24.8 0-52.1 11-66.1 26.7C19.4 310.4 .1 301.5 2.1 285.9C18.3 161 124.2 63.4 256 49.7L256 32c0-17.7 14.3-32 32-32zm0 304c12.3 0 23.5 4.6 32 12.2l0 114.3c0 45-36.5 81.4-81.4 81.4c-30.8 0-59-17.4-72.8-45l-2.3-4.7c-7.9-15.8-1.5-35 14.3-42.9s35-1.5 42.9 14.3l2.3 4.7c3 5.9 9 9.6 15.6 9.6c9.6 0 17.4-7.8 17.4-17.4l0-114.3c8.5-7.6 19.7-12.2 32-12.2z\"]\n};\nconst faTrowel = {\n prefix: 'fas',\n iconName: 'trowel',\n icon: [512, 512, [], \"e589\", \"M343.9 213.4L245.3 312l65.4 65.4c7.9 7.9 11.1 19.4 8.4 30.3s-10.8 19.6-21.5 22.9l-256 80c-11.4 3.5-23.8 .5-32.2-7.9S-2.1 481.8 1.5 470.5l80-256c3.3-10.7 12-18.9 22.9-21.5s22.4 .5 30.3 8.4L200 266.7l98.6-98.6c-14.3-14.6-14.2-38 .3-52.5l95.4-95.4c26.9-26.9 70.5-26.9 97.5 0s26.9 70.5 0 97.5l-95.4 95.4c-14.5 14.5-37.9 14.6-52.5 .3z\"]\n};\nconst faD = {\n prefix: 'fas',\n iconName: 'd',\n icon: [384, 512, [100], \"44\", \"M0 96C0 60.7 28.7 32 64 32l96 0c123.7 0 224 100.3 224 224s-100.3 224-224 224l-96 0c-35.3 0-64-28.7-64-64L0 96zm160 0L64 96l0 320 96 0c88.4 0 160-71.6 160-160s-71.6-160-160-160z\"]\n};\nconst faStapler = {\n prefix: 'fas',\n iconName: 'stapler',\n icon: [640, 512, [], \"e5af\", \"M640 299.3l0 4.7 0 128c0 26.5-21.5 48-48 48l-80 0-64 0L64 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0 0-48L96 368c-17.7 0-32-14.3-32-32l0-116.6L33.8 214C14.2 210.5 0 193.5 0 173.7c0-8.9 2.9-17.5 8.2-24.6l35.6-47.5C76.7 57.8 128.2 32 182.9 32c27 0 53.6 6.3 77.8 18.4L586.9 213.5C619.5 229.7 640 263 640 299.3zM448 304l0-16L128 230.9l0 73.1 320 0z\"]\n};\nconst faMasksTheater = {\n prefix: 'fas',\n iconName: 'masks-theater',\n icon: [640, 512, [127917, \"theater-masks\"], \"f630\", \"M74.6 373.2c41.7 36.1 108 82.5 166.1 73.7c6.1-.9 12.1-2.5 18-4.5c-9.2-12.3-17.3-24.4-24.2-35.4c-21.9-35-28.8-75.2-25.9-113.6c-20.6 4.1-39.2 13-54.7 25.4c-6.5 5.2-16.3 1.3-14.8-7c6.4-33.5 33-60.9 68.2-66.3c2.6-.4 5.3-.7 7.9-.8l19.4-131.3c2-13.8 8-32.7 25-45.9C278.2 53.2 310.5 37 363.2 32.2c-.8-.7-1.6-1.4-2.4-2.1C340.6 14.5 288.4-11.5 175.7 5.6S20.5 63 5.7 83.9C0 91.9-.8 102 .6 111.8L24.8 276.1c5.5 37.3 21.5 72.6 49.8 97.2zm87.7-219.6c4.4-3.1 10.8-2 11.8 3.3c.1 .5 .2 1.1 .3 1.6c3.2 21.8-11.6 42-33.1 45.3s-41.5-11.8-44.7-33.5c-.1-.5-.1-1.1-.2-1.6c-.6-5.4 5.2-8.4 10.3-6.7c9 3 18.8 3.9 28.7 2.4s19.1-5.3 26.8-10.8zM261.6 390c29.4 46.9 79.5 110.9 137.6 119.7s124.5-37.5 166.1-73.7c28.3-24.5 44.3-59.8 49.8-97.2l24.2-164.3c1.4-9.8 .6-19.9-5.1-27.9c-14.8-20.9-57.3-61.2-170-78.3S299.4 77.2 279.2 92.8c-7.8 6-11.5 15.4-12.9 25.2L242.1 282.3c-5.5 37.3-.4 75.8 19.6 107.7zM404.5 235.3c-7.7-5.5-16.8-9.3-26.8-10.8s-19.8-.6-28.7 2.4c-5.1 1.7-10.9-1.3-10.3-6.7c.1-.5 .1-1.1 .2-1.6c3.2-21.8 23.2-36.8 44.7-33.5s36.3 23.5 33.1 45.3c-.1 .5-.2 1.1-.3 1.6c-1 5.3-7.4 6.4-11.8 3.3zm136.2 15.5c-1 5.3-7.4 6.4-11.8 3.3c-7.7-5.5-16.8-9.3-26.8-10.8s-19.8-.6-28.7 2.4c-5.1 1.7-10.9-1.3-10.3-6.7c.1-.5 .1-1.1 .2-1.6c3.2-21.8 23.2-36.8 44.7-33.5s36.3 23.5 33.1 45.3c-.1 .5-.2 1.1-.3 1.6zM530 350.2c-19.6 44.7-66.8 72.5-116.8 64.9s-87.1-48.2-93-96.7c-1-8.3 8.9-12.1 15.2-6.7c23.9 20.8 53.6 35.3 87 40.3s66.1 .1 94.9-12.8c7.6-3.4 16 3.2 12.6 10.9z\"]\n};\nconst faTheaterMasks = faMasksTheater;\nconst faKipSign = {\n prefix: 'fas',\n iconName: 'kip-sign',\n icon: [384, 512, [], \"e1c4\", \"M340.8 88.3c13.4-11.5 15-31.7 3.5-45.1s-31.7-15-45.1-3.5L128 186.4 128 64c0-17.7-14.3-32-32-32S64 46.3 64 64l0 160-32 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l32 0 0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-122.4L299.2 472.3c13.4 11.5 33.6 9.9 45.1-3.5s9.9-33.6-3.5-45.1L182.5 288 352 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-169.5 0L340.8 88.3z\"]\n};\nconst faHandPointLeft = {\n prefix: 'fas',\n iconName: 'hand-point-left',\n icon: [512, 512, [], \"f0a5\", \"M32 96C14.3 96 0 110.3 0 128s14.3 32 32 32l208 0 0-64L32 96zM192 288c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0zm-64-64c0 17.7 14.3 32 32 32l48 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-48 0c-17.7 0-32 14.3-32 32zm96 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0zm88-96l-.6 0c5.4 9.4 8.6 20.3 8.6 32c0 13.2-4 25.4-10.8 35.6c24.9 8.7 42.8 32.5 42.8 60.4c0 11.7-3.1 22.6-8.6 32l8.6 0c88.4 0 160-71.6 160-160l0-61.7c0-42.4-16.9-83.1-46.9-113.1l-11.6-11.6C429.5 77.5 396.9 64 363 64l-27 0c-35.3 0-64 28.7-64 64l0 88c0 22.1 17.9 40 40 40s40-17.9 40-40l0-56c0-8.8 7.2-16 16-16s16 7.2 16 16l0 56c0 39.8-32.2 72-72 72z\"]\n};\nconst faHandshakeSimple = {\n prefix: 'fas',\n iconName: 'handshake-simple',\n icon: [640, 512, [129309, \"handshake-alt\"], \"f4c6\", \"M323.4 85.2l-96.8 78.4c-16.1 13-19.2 36.4-7 53.1c12.9 17.8 38 21.3 55.3 7.8l99.3-77.2c7-5.4 17-4.2 22.5 2.8s4.2 17-2.8 22.5l-20.9 16.2L550.2 352l41.8 0c26.5 0 48-21.5 48-48l0-128c0-26.5-21.5-48-48-48l-76 0-4 0-.7 0-3.9-2.5L434.8 79c-15.3-9.8-33.2-15-51.4-15c-21.8 0-43 7.5-60 21.2zm22.8 124.4l-51.7 40.2C263 274.4 217.3 268 193.7 235.6c-22.2-30.5-16.6-73.1 12.7-96.8l83.2-67.3c-11.6-4.9-24.1-7.4-36.8-7.4C234 64 215.7 69.6 200 80l-72 48-80 0c-26.5 0-48 21.5-48 48L0 304c0 26.5 21.5 48 48 48l108.2 0 91.4 83.4c19.6 17.9 49.9 16.5 67.8-3.1c5.5-6.1 9.2-13.2 11.1-20.6l17 15.6c19.5 17.9 49.9 16.6 67.8-2.9c4.5-4.9 7.8-10.6 9.9-16.5c19.4 13 45.8 10.3 62.1-7.5c17.9-19.5 16.6-49.9-2.9-67.8l-134.2-123z\"]\n};\nconst faHandshakeAlt = faHandshakeSimple;\nconst faJetFighter = {\n prefix: 'fas',\n iconName: 'jet-fighter',\n icon: [640, 512, [\"fighter-jet\"], \"f0fb\", \"M160 24c0-13.3 10.7-24 24-24L296 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-16 0L384 192l116.4 0c7.7 0 15.3 1.4 22.5 4.1L625 234.4c9 3.4 15 12 15 21.6s-6 18.2-15 21.6L522.9 315.9c-7.2 2.7-14.8 4.1-22.5 4.1L384 320 280 464l16 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-112 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l8 0 0-144-32 0-54.6 54.6c-6 6-14.1 9.4-22.6 9.4L64 384c-17.7 0-32-14.3-32-32l0-64c-17.7 0-32-14.3-32-32s14.3-32 32-32l0-64c0-17.7 14.3-32 32-32l18.7 0c8.5 0 16.6 3.4 22.6 9.4L160 192l32 0 0-144-8 0c-13.3 0-24-10.7-24-24zM80 240c-8.8 0-16 7.2-16 16s7.2 16 16 16l64 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-64 0z\"]\n};\nconst faFighterJet = faJetFighter;\nconst faSquareShareNodes = {\n prefix: 'fas',\n iconName: 'square-share-nodes',\n icon: [448, 512, [\"share-alt-square\"], \"f1e1\", \"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM384 160c0 35.3-28.7 64-64 64c-15.4 0-29.5-5.4-40.6-14.5L194.1 256l85.3 46.5c11-9.1 25.2-14.5 40.6-14.5c35.3 0 64 28.7 64 64s-28.7 64-64 64s-64-28.7-64-64c0-2.5 .1-4.9 .4-7.3L174.5 300c-11.7 12.3-28.2 20-46.5 20c-35.3 0-64-28.7-64-64s28.7-64 64-64c18.3 0 34.8 7.7 46.5 20l81.9-44.7c-.3-2.4-.4-4.9-.4-7.3c0-35.3 28.7-64 64-64s64 28.7 64 64z\"]\n};\nconst faShareAltSquare = faSquareShareNodes;\nconst faBarcode = {\n prefix: 'fas',\n iconName: 'barcode',\n icon: [512, 512, [], \"f02a\", \"M24 32C10.7 32 0 42.7 0 56L0 456c0 13.3 10.7 24 24 24l16 0c13.3 0 24-10.7 24-24L64 56c0-13.3-10.7-24-24-24L24 32zm88 0c-8.8 0-16 7.2-16 16l0 416c0 8.8 7.2 16 16 16s16-7.2 16-16l0-416c0-8.8-7.2-16-16-16zm72 0c-13.3 0-24 10.7-24 24l0 400c0 13.3 10.7 24 24 24l16 0c13.3 0 24-10.7 24-24l0-400c0-13.3-10.7-24-24-24l-16 0zm96 0c-13.3 0-24 10.7-24 24l0 400c0 13.3 10.7 24 24 24l16 0c13.3 0 24-10.7 24-24l0-400c0-13.3-10.7-24-24-24l-16 0zM448 56l0 400c0 13.3 10.7 24 24 24l16 0c13.3 0 24-10.7 24-24l0-400c0-13.3-10.7-24-24-24l-16 0c-13.3 0-24 10.7-24 24zm-64-8l0 416c0 8.8 7.2 16 16 16s16-7.2 16-16l0-416c0-8.8-7.2-16-16-16s-16 7.2-16 16z\"]\n};\nconst faPlusMinus = {\n prefix: 'fas',\n iconName: 'plus-minus',\n icon: [384, 512, [], \"e43c\", \"M224 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 112L48 144c-17.7 0-32 14.3-32 32s14.3 32 32 32l112 0 0 112c0 17.7 14.3 32 32 32s32-14.3 32-32l0-112 112 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-112 0 0-112zM0 480c0 17.7 14.3 32 32 32l320 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 448c-17.7 0-32 14.3-32 32z\"]\n};\nconst faVideo = {\n prefix: 'fas',\n iconName: 'video',\n icon: [576, 512, [\"video-camera\"], \"f03d\", \"M0 128C0 92.7 28.7 64 64 64l256 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 128zM559.1 99.8c10.4 5.6 16.9 16.4 16.9 28.2l0 256c0 11.8-6.5 22.6-16.9 28.2s-23 5-32.9-1.6l-96-64L416 337.1l0-17.1 0-128 0-17.1 14.2-9.5 96-64c9.8-6.5 22.4-7.2 32.9-1.6z\"]\n};\nconst faVideoCamera = faVideo;\nconst faGraduationCap = {\n prefix: 'fas',\n iconName: 'graduation-cap',\n icon: [640, 512, [127891, \"mortar-board\"], \"f19d\", \"M320 32c-8.1 0-16.1 1.4-23.7 4.1L15.8 137.4C6.3 140.9 0 149.9 0 160s6.3 19.1 15.8 22.6l57.9 20.9C57.3 229.3 48 259.8 48 291.9l0 28.1c0 28.4-10.8 57.7-22.3 80.8c-6.5 13-13.9 25.8-22.5 37.6C0 442.7-.9 448.3 .9 453.4s6 8.9 11.2 10.2l64 16c4.2 1.1 8.7 .3 12.4-2s6.3-6.1 7.1-10.4c8.6-42.8 4.3-81.2-2.1-108.7C90.3 344.3 86 329.8 80 316.5l0-24.6c0-30.2 10.2-58.7 27.9-81.5c12.9-15.5 29.6-28 49.2-35.7l157-61.7c8.2-3.2 17.5 .8 20.7 9s-.8 17.5-9 20.7l-157 61.7c-12.4 4.9-23.3 12.4-32.2 21.6l159.6 57.6c7.6 2.7 15.6 4.1 23.7 4.1s16.1-1.4 23.7-4.1L624.2 182.6c9.5-3.4 15.8-12.5 15.8-22.6s-6.3-19.1-15.8-22.6L343.7 36.1C336.1 33.4 328.1 32 320 32zM128 408c0 35.3 86 72 192 72s192-36.7 192-72L496.7 262.6 354.5 314c-11.1 4-22.8 6-34.5 6s-23.5-2-34.5-6L143.3 262.6 128 408z\"]\n};\nconst faMortarBoard = faGraduationCap;\nconst faHandHoldingMedical = {\n prefix: 'fas',\n iconName: 'hand-holding-medical',\n icon: [576, 512, [], \"e05c\", \"M224 24l0 56-56 0c-13.3 0-24 10.7-24 24l0 48c0 13.3 10.7 24 24 24l56 0 0 56c0 13.3 10.7 24 24 24l48 0c13.3 0 24-10.7 24-24l0-56 56 0c13.3 0 24-10.7 24-24l0-48c0-13.3-10.7-24-24-24l-56 0 0-56c0-13.3-10.7-24-24-24L248 0c-13.3 0-24 10.7-24 24zM559.7 392.2c17.8-13.1 21.6-38.1 8.5-55.9s-38.1-21.6-55.9-8.5L392.6 416 272 416c-8.8 0-16-7.2-16-16s7.2-16 16-16l16 0 64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0-16 0-78.3 0c-29.1 0-57.3 9.9-80 28L68.8 384 32 384c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l160 0 160.5 0c29 0 57.3-9.3 80.7-26.5l126.6-93.3zm-367-8.2l.9 0c0 0 0 0 0 0c-.3 0-.6 0-.9 0z\"]\n};\nconst faPersonCircleCheck = {\n prefix: 'fas',\n iconName: 'person-circle-check',\n icon: [576, 512, [], \"e53e\", \"M112 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zm40 304l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-223.1L59.4 304.5c-9.1 15.1-28.8 20-43.9 10.9s-20-28.8-10.9-43.9l58.3-97c17.4-28.9 48.6-46.6 82.3-46.6l29.7 0c33.7 0 64.9 17.7 82.3 46.6l44.9 74.7c-16.1 17.6-28.6 38.5-36.6 61.5c-1.9-1.8-3.5-3.9-4.9-6.3L232 256.9 232 480c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128-16 0zm136 16a144 144 0 1 1 288 0 144 144 0 1 1 -288 0zm211.3-43.3c-6.2-6.2-16.4-6.2-22.6 0L416 385.4l-28.7-28.7c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l40 40c6.2 6.2 16.4 6.2 22.6 0l72-72c6.2-6.2 6.2-16.4 0-22.6z\"]\n};\nconst faTurnUp = {\n prefix: 'fas',\n iconName: 'turn-up',\n icon: [384, 512, [10548, \"level-up-alt\"], \"f3bf\", \"M350 177.5c3.8-8.8 2-19-4.6-26l-136-144C204.9 2.7 198.6 0 192 0s-12.9 2.7-17.4 7.5l-136 144c-6.6 7-8.4 17.2-4.6 26s12.5 14.5 22 14.5l88 0 0 192c0 17.7-14.3 32-32 32l-80 0c-17.7 0-32 14.3-32 32l0 32c0 17.7 14.3 32 32 32l80 0c70.7 0 128-57.3 128-128l0-192 88 0c9.6 0 18.2-5.7 22-14.5z\"]\n};\nconst faLevelUpAlt = faTurnUp;\nvar icons = {\n fa0,\n fa1,\n fa2,\n fa3,\n fa4,\n fa5,\n fa6,\n fa7,\n fa8,\n fa9,\n faFillDrip,\n faArrowsToCircle,\n faCircleChevronRight,\n faChevronCircleRight,\n faAt,\n faTrashCan,\n faTrashAlt,\n faTextHeight,\n faUserXmark,\n faUserTimes,\n faStethoscope,\n faMessage,\n faCommentAlt,\n faInfo,\n faDownLeftAndUpRightToCenter,\n faCompressAlt,\n faExplosion,\n faFileLines,\n faFileAlt,\n faFileText,\n faWaveSquare,\n faRing,\n faBuildingUn,\n faDiceThree,\n faCalendarDays,\n faCalendarAlt,\n faAnchorCircleCheck,\n faBuildingCircleArrowRight,\n faVolleyball,\n faVolleyballBall,\n faArrowsUpToLine,\n faSortDown,\n faSortDesc,\n faCircleMinus,\n faMinusCircle,\n faDoorOpen,\n faRightFromBracket,\n faSignOutAlt,\n faAtom,\n faSoap,\n faIcons,\n faHeartMusicCameraBolt,\n faMicrophoneLinesSlash,\n faMicrophoneAltSlash,\n faBridgeCircleCheck,\n faPumpMedical,\n faFingerprint,\n faHandPointRight,\n faMagnifyingGlassLocation,\n faSearchLocation,\n faForwardStep,\n faStepForward,\n faFaceSmileBeam,\n faSmileBeam,\n faFlagCheckered,\n faFootball,\n faFootballBall,\n faSchoolCircleExclamation,\n faCrop,\n faAnglesDown,\n faAngleDoubleDown,\n faUsersRectangle,\n faPeopleRoof,\n faPeopleLine,\n faBeerMugEmpty,\n faBeer,\n faDiagramPredecessor,\n faArrowUpLong,\n faLongArrowUp,\n faFireFlameSimple,\n faBurn,\n faPerson,\n faMale,\n faLaptop,\n faFileCsv,\n faMenorah,\n faTruckPlane,\n faRecordVinyl,\n faFaceGrinStars,\n faGrinStars,\n faBong,\n faSpaghettiMonsterFlying,\n faPastafarianism,\n faArrowDownUpAcrossLine,\n faSpoon,\n faUtensilSpoon,\n faJarWheat,\n faEnvelopesBulk,\n faMailBulk,\n faFileCircleExclamation,\n faCircleH,\n faHospitalSymbol,\n faPager,\n faAddressBook,\n faContactBook,\n faStrikethrough,\n faK,\n faLandmarkFlag,\n faPencil,\n faPencilAlt,\n faBackward,\n faCaretRight,\n faComments,\n faPaste,\n faFileClipboard,\n faCodePullRequest,\n faClipboardList,\n faTruckRampBox,\n faTruckLoading,\n faUserCheck,\n faVialVirus,\n faSheetPlastic,\n faBlog,\n faUserNinja,\n faPersonArrowUpFromLine,\n faScrollTorah,\n faTorah,\n faBroomBall,\n faQuidditch,\n faQuidditchBroomBall,\n faToggleOff,\n faBoxArchive,\n faArchive,\n faPersonDrowning,\n faArrowDown91,\n faSortNumericDesc,\n faSortNumericDownAlt,\n faFaceGrinTongueSquint,\n faGrinTongueSquint,\n faSprayCan,\n faTruckMonster,\n faW,\n faEarthAfrica,\n faGlobeAfrica,\n faRainbow,\n faCircleNotch,\n faTabletScreenButton,\n faTabletAlt,\n faPaw,\n faCloud,\n faTrowelBricks,\n faFaceFlushed,\n faFlushed,\n faHospitalUser,\n faTentArrowLeftRight,\n faGavel,\n faLegal,\n faBinoculars,\n faMicrophoneSlash,\n faBoxTissue,\n faMotorcycle,\n faBellConcierge,\n faConciergeBell,\n faPenRuler,\n faPencilRuler,\n faPeopleArrows,\n faPeopleArrowsLeftRight,\n faMarsAndVenusBurst,\n faSquareCaretRight,\n faCaretSquareRight,\n faScissors,\n faCut,\n faSunPlantWilt,\n faToiletsPortable,\n faHockeyPuck,\n faTable,\n faMagnifyingGlassArrowRight,\n faTachographDigital,\n faDigitalTachograph,\n faUsersSlash,\n faClover,\n faReply,\n faMailReply,\n faStarAndCrescent,\n faHouseFire,\n faSquareMinus,\n faMinusSquare,\n faHelicopter,\n faCompass,\n faSquareCaretDown,\n faCaretSquareDown,\n faFileCircleQuestion,\n faLaptopCode,\n faSwatchbook,\n faPrescriptionBottle,\n faBars,\n faNavicon,\n faPeopleGroup,\n faHourglassEnd,\n faHourglass3,\n faHeartCrack,\n faHeartBroken,\n faSquareUpRight,\n faExternalLinkSquareAlt,\n faFaceKissBeam,\n faKissBeam,\n faFilm,\n faRulerHorizontal,\n faPeopleRobbery,\n faLightbulb,\n faCaretLeft,\n faCircleExclamation,\n faExclamationCircle,\n faSchoolCircleXmark,\n faArrowRightFromBracket,\n faSignOut,\n faCircleChevronDown,\n faChevronCircleDown,\n faUnlockKeyhole,\n faUnlockAlt,\n faCloudShowersHeavy,\n faHeadphonesSimple,\n faHeadphonesAlt,\n faSitemap,\n faCircleDollarToSlot,\n faDonate,\n faMemory,\n faRoadSpikes,\n faFireBurner,\n faFlag,\n faHanukiah,\n faFeather,\n faVolumeLow,\n faVolumeDown,\n faCommentSlash,\n faCloudSunRain,\n faCompress,\n faWheatAwn,\n faWheatAlt,\n faAnkh,\n faHandsHoldingChild,\n faAsterisk,\n faSquareCheck,\n faCheckSquare,\n faPesetaSign,\n faHeading,\n faHeader,\n faGhost,\n faList,\n faListSquares,\n faSquarePhoneFlip,\n faPhoneSquareAlt,\n faCartPlus,\n faGamepad,\n faCircleDot,\n faDotCircle,\n faFaceDizzy,\n faDizzy,\n faEgg,\n faHouseMedicalCircleXmark,\n faCampground,\n faFolderPlus,\n faFutbol,\n faFutbolBall,\n faSoccerBall,\n faPaintbrush,\n faPaintBrush,\n faLock,\n faGasPump,\n faHotTubPerson,\n faHotTub,\n faMapLocation,\n faMapMarked,\n faHouseFloodWater,\n faTree,\n faBridgeLock,\n faSackDollar,\n faPenToSquare,\n faEdit,\n faCarSide,\n faShareNodes,\n faShareAlt,\n faHeartCircleMinus,\n faHourglassHalf,\n faHourglass2,\n faMicroscope,\n faSink,\n faBagShopping,\n faShoppingBag,\n faArrowDownZA,\n faSortAlphaDesc,\n faSortAlphaDownAlt,\n faMitten,\n faPersonRays,\n faUsers,\n faEyeSlash,\n faFlaskVial,\n faHand,\n faHandPaper,\n faOm,\n faWorm,\n faHouseCircleXmark,\n faPlug,\n faChevronUp,\n faHandSpock,\n faStopwatch,\n faFaceKiss,\n faKiss,\n faBridgeCircleXmark,\n faFaceGrinTongue,\n faGrinTongue,\n faChessBishop,\n faFaceGrinWink,\n faGrinWink,\n faEarDeaf,\n faDeaf,\n faDeafness,\n faHardOfHearing,\n faRoadCircleCheck,\n faDiceFive,\n faSquareRss,\n faRssSquare,\n faLandMineOn,\n faICursor,\n faStamp,\n faStairs,\n faI,\n faHryvniaSign,\n faHryvnia,\n faPills,\n faFaceGrinWide,\n faGrinAlt,\n faTooth,\n faV,\n faBangladeshiTakaSign,\n faBicycle,\n faStaffSnake,\n faRodAsclepius,\n faRodSnake,\n faStaffAesculapius,\n faHeadSideCoughSlash,\n faTruckMedical,\n faAmbulance,\n faWheatAwnCircleExclamation,\n faSnowman,\n faMortarPestle,\n faRoadBarrier,\n faSchool,\n faIgloo,\n faJoint,\n faAngleRight,\n faHorse,\n faQ,\n faG,\n faNotesMedical,\n faTemperatureHalf,\n faTemperature2,\n faThermometer2,\n faThermometerHalf,\n faDongSign,\n faCapsules,\n faPooStorm,\n faPooBolt,\n faFaceFrownOpen,\n faFrownOpen,\n faHandPointUp,\n faMoneyBill,\n faBookmark,\n faAlignJustify,\n faUmbrellaBeach,\n faHelmetUn,\n faBullseye,\n faBacon,\n faHandPointDown,\n faArrowUpFromBracket,\n faFolder,\n faFolderBlank,\n faFileWaveform,\n faFileMedicalAlt,\n faRadiation,\n faChartSimple,\n faMarsStroke,\n faVial,\n faGauge,\n faDashboard,\n faGaugeMed,\n faTachometerAltAverage,\n faWandMagicSparkles,\n faMagicWandSparkles,\n faE,\n faPenClip,\n faPenAlt,\n faBridgeCircleExclamation,\n faUser,\n faSchoolCircleCheck,\n faDumpster,\n faVanShuttle,\n faShuttleVan,\n faBuildingUser,\n faSquareCaretLeft,\n faCaretSquareLeft,\n faHighlighter,\n faKey,\n faBullhorn,\n faGlobe,\n faSynagogue,\n faPersonHalfDress,\n faRoadBridge,\n faLocationArrow,\n faC,\n faTabletButton,\n faBuildingLock,\n faPizzaSlice,\n faMoneyBillWave,\n faChartArea,\n faAreaChart,\n faHouseFlag,\n faPersonCircleMinus,\n faBan,\n faCancel,\n faCameraRotate,\n faSprayCanSparkles,\n faAirFreshener,\n faStar,\n faRepeat,\n faCross,\n faBox,\n faVenusMars,\n faArrowPointer,\n faMousePointer,\n faMaximize,\n faExpandArrowsAlt,\n faChargingStation,\n faShapes,\n faTriangleCircleSquare,\n faShuffle,\n faRandom,\n faPersonRunning,\n faRunning,\n faMobileRetro,\n faGripLinesVertical,\n faSpider,\n faHandsBound,\n faFileInvoiceDollar,\n faPlaneCircleExclamation,\n faXRay,\n faSpellCheck,\n faSlash,\n faComputerMouse,\n faMouse,\n faArrowRightToBracket,\n faSignIn,\n faShopSlash,\n faStoreAltSlash,\n faServer,\n faVirusCovidSlash,\n faShopLock,\n faHourglassStart,\n faHourglass1,\n faBlenderPhone,\n faBuildingWheat,\n faPersonBreastfeeding,\n faRightToBracket,\n faSignInAlt,\n faVenus,\n faPassport,\n faThumbtackSlash,\n faThumbTackSlash,\n faHeartPulse,\n faHeartbeat,\n faPeopleCarryBox,\n faPeopleCarry,\n faTemperatureHigh,\n faMicrochip,\n faCrown,\n faWeightHanging,\n faXmarksLines,\n faFilePrescription,\n faWeightScale,\n faWeight,\n faUserGroup,\n faUserFriends,\n faArrowUpAZ,\n faSortAlphaUp,\n faChessKnight,\n faFaceLaughSquint,\n faLaughSquint,\n faWheelchair,\n faCircleArrowUp,\n faArrowCircleUp,\n faToggleOn,\n faPersonWalking,\n faWalking,\n faL,\n faFire,\n faBedPulse,\n faProcedures,\n faShuttleSpace,\n faSpaceShuttle,\n faFaceLaugh,\n faLaugh,\n faFolderOpen,\n faHeartCirclePlus,\n faCodeFork,\n faCity,\n faMicrophoneLines,\n faMicrophoneAlt,\n faPepperHot,\n faUnlock,\n faColonSign,\n faHeadset,\n faStoreSlash,\n faRoadCircleXmark,\n faUserMinus,\n faMarsStrokeUp,\n faMarsStrokeV,\n faChampagneGlasses,\n faGlassCheers,\n faClipboard,\n faHouseCircleExclamation,\n faFileArrowUp,\n faFileUpload,\n faWifi,\n faWifi3,\n faWifiStrong,\n faBath,\n faBathtub,\n faUnderline,\n faUserPen,\n faUserEdit,\n faSignature,\n faStroopwafel,\n faBold,\n faAnchorLock,\n faBuildingNgo,\n faManatSign,\n faNotEqual,\n faBorderTopLeft,\n faBorderStyle,\n faMapLocationDot,\n faMapMarkedAlt,\n faJedi,\n faSquarePollVertical,\n faPoll,\n faMugHot,\n faCarBattery,\n faBatteryCar,\n faGift,\n faDiceTwo,\n faChessQueen,\n faGlasses,\n faChessBoard,\n faBuildingCircleCheck,\n faPersonChalkboard,\n faMarsStrokeRight,\n faMarsStrokeH,\n faHandBackFist,\n faHandRock,\n faSquareCaretUp,\n faCaretSquareUp,\n faCloudShowersWater,\n faChartBar,\n faBarChart,\n faHandsBubbles,\n faHandsWash,\n faLessThanEqual,\n faTrain,\n faEyeLowVision,\n faLowVision,\n faCrow,\n faSailboat,\n faWindowRestore,\n faSquarePlus,\n faPlusSquare,\n faToriiGate,\n faFrog,\n faBucket,\n faImage,\n faMicrophone,\n faCow,\n faCaretUp,\n faScrewdriver,\n faFolderClosed,\n faHouseTsunami,\n faSquareNfi,\n faArrowUpFromGroundWater,\n faMartiniGlass,\n faGlassMartiniAlt,\n faRotateLeft,\n faRotateBack,\n faRotateBackward,\n faUndoAlt,\n faTableColumns,\n faColumns,\n faLemon,\n faHeadSideMask,\n faHandshake,\n faGem,\n faDolly,\n faDollyBox,\n faSmoking,\n faMinimize,\n faCompressArrowsAlt,\n faMonument,\n faSnowplow,\n faAnglesRight,\n faAngleDoubleRight,\n faCannabis,\n faCirclePlay,\n faPlayCircle,\n faTablets,\n faEthernet,\n faEuroSign,\n faEur,\n faEuro,\n faChair,\n faCircleCheck,\n faCheckCircle,\n faCircleStop,\n faStopCircle,\n faCompassDrafting,\n faDraftingCompass,\n faPlateWheat,\n faIcicles,\n faPersonShelter,\n faNeuter,\n faIdBadge,\n faMarker,\n faFaceLaughBeam,\n faLaughBeam,\n faHelicopterSymbol,\n faUniversalAccess,\n faCircleChevronUp,\n faChevronCircleUp,\n faLariSign,\n faVolcano,\n faPersonWalkingDashedLineArrowRight,\n faSterlingSign,\n faGbp,\n faPoundSign,\n faViruses,\n faSquarePersonConfined,\n faUserTie,\n faArrowDownLong,\n faLongArrowDown,\n faTentArrowDownToLine,\n faCertificate,\n faReplyAll,\n faMailReplyAll,\n faSuitcase,\n faPersonSkating,\n faSkating,\n faFilterCircleDollar,\n faFunnelDollar,\n faCameraRetro,\n faCircleArrowDown,\n faArrowCircleDown,\n faFileImport,\n faArrowRightToFile,\n faSquareArrowUpRight,\n faExternalLinkSquare,\n faBoxOpen,\n faScroll,\n faSpa,\n faLocationPinLock,\n faPause,\n faHillAvalanche,\n faTemperatureEmpty,\n faTemperature0,\n faThermometer0,\n faThermometerEmpty,\n faBomb,\n faRegistered,\n faAddressCard,\n faContactCard,\n faVcard,\n faScaleUnbalancedFlip,\n faBalanceScaleRight,\n faSubscript,\n faDiamondTurnRight,\n faDirections,\n faBurst,\n faHouseLaptop,\n faLaptopHouse,\n faFaceTired,\n faTired,\n faMoneyBills,\n faSmog,\n faCrutch,\n faFontAwesome,\n faFontAwesomeFlag,\n faFontAwesomeLogoFull,\n faCloudArrowUp,\n faCloudUpload,\n faCloudUploadAlt,\n faPalette,\n faArrowsTurnRight,\n faVest,\n faFerry,\n faArrowsDownToPeople,\n faSeedling,\n faSprout,\n faLeftRight,\n faArrowsAltH,\n faBoxesPacking,\n faCircleArrowLeft,\n faArrowCircleLeft,\n faGroupArrowsRotate,\n faBowlFood,\n faCandyCane,\n faArrowDownWideShort,\n faSortAmountAsc,\n faSortAmountDown,\n faCloudBolt,\n faThunderstorm,\n faTextSlash,\n faRemoveFormat,\n faFaceSmileWink,\n faSmileWink,\n faFileWord,\n faFilePowerpoint,\n faArrowsLeftRight,\n faArrowsH,\n faHouseLock,\n faCloudArrowDown,\n faCloudDownload,\n faCloudDownloadAlt,\n faChildren,\n faChalkboard,\n faBlackboard,\n faUserLargeSlash,\n faUserAltSlash,\n faEnvelopeOpen,\n faHandshakeSimpleSlash,\n faHandshakeAltSlash,\n faMattressPillow,\n faGuaraniSign,\n faArrowsRotate,\n faRefresh,\n faSync,\n faFireExtinguisher,\n faCruzeiroSign,\n faGreaterThanEqual,\n faShieldHalved,\n faShieldAlt,\n faBookAtlas,\n faAtlas,\n faVirus,\n faEnvelopeCircleCheck,\n faLayerGroup,\n faArrowsToDot,\n faArchway,\n faHeartCircleCheck,\n faHouseChimneyCrack,\n faHouseDamage,\n faFileZipper,\n faFileArchive,\n faSquare,\n faMartiniGlassEmpty,\n faGlassMartini,\n faCouch,\n faCediSign,\n faItalic,\n faTableCellsColumnLock,\n faChurch,\n faCommentsDollar,\n faDemocrat,\n faZ,\n faPersonSkiing,\n faSkiing,\n faRoadLock,\n faA,\n faTemperatureArrowDown,\n faTemperatureDown,\n faFeatherPointed,\n faFeatherAlt,\n faP,\n faSnowflake,\n faNewspaper,\n faRectangleAd,\n faAd,\n faCircleArrowRight,\n faArrowCircleRight,\n faFilterCircleXmark,\n faLocust,\n faSort,\n faUnsorted,\n faListOl,\n faList12,\n faListNumeric,\n faPersonDressBurst,\n faMoneyCheckDollar,\n faMoneyCheckAlt,\n faVectorSquare,\n faBreadSlice,\n faLanguage,\n faFaceKissWinkHeart,\n faKissWinkHeart,\n faFilter,\n faQuestion,\n faFileSignature,\n faUpDownLeftRight,\n faArrowsAlt,\n faHouseChimneyUser,\n faHandHoldingHeart,\n faPuzzlePiece,\n faMoneyCheck,\n faStarHalfStroke,\n faStarHalfAlt,\n faCode,\n faWhiskeyGlass,\n faGlassWhiskey,\n faBuildingCircleExclamation,\n faMagnifyingGlassChart,\n faArrowUpRightFromSquare,\n faExternalLink,\n faCubesStacked,\n faWonSign,\n faKrw,\n faWon,\n faVirusCovid,\n faAustralSign,\n faF,\n faLeaf,\n faRoad,\n faTaxi,\n faCab,\n faPersonCirclePlus,\n faChartPie,\n faPieChart,\n faBoltLightning,\n faSackXmark,\n faFileExcel,\n faFileContract,\n faFishFins,\n faBuildingFlag,\n faFaceGrinBeam,\n faGrinBeam,\n faObjectUngroup,\n faPoop,\n faLocationPin,\n faMapMarker,\n faKaaba,\n faToiletPaper,\n faHelmetSafety,\n faHardHat,\n faHatHard,\n faEject,\n faCircleRight,\n faArrowAltCircleRight,\n faPlaneCircleCheck,\n faFaceRollingEyes,\n faMehRollingEyes,\n faObjectGroup,\n faChartLine,\n faLineChart,\n faMaskVentilator,\n faArrowRight,\n faSignsPost,\n faMapSigns,\n faCashRegister,\n faPersonCircleQuestion,\n faH,\n faTarp,\n faScrewdriverWrench,\n faTools,\n faArrowsToEye,\n faPlugCircleBolt,\n faHeart,\n faMarsAndVenus,\n faHouseUser,\n faHomeUser,\n faDumpsterFire,\n faHouseCrack,\n faMartiniGlassCitrus,\n faCocktail,\n faFaceSurprise,\n faSurprise,\n faBottleWater,\n faCirclePause,\n faPauseCircle,\n faToiletPaperSlash,\n faAppleWhole,\n faAppleAlt,\n faKitchenSet,\n faR,\n faTemperatureQuarter,\n faTemperature1,\n faThermometer1,\n faThermometerQuarter,\n faCube,\n faBitcoinSign,\n faShieldDog,\n faSolarPanel,\n faLockOpen,\n faElevator,\n faMoneyBillTransfer,\n faMoneyBillTrendUp,\n faHouseFloodWaterCircleArrowRight,\n faSquarePollHorizontal,\n faPollH,\n faCircle,\n faBackwardFast,\n faFastBackward,\n faRecycle,\n faUserAstronaut,\n faPlaneSlash,\n faTrademark,\n faBasketball,\n faBasketballBall,\n faSatelliteDish,\n faCircleUp,\n faArrowAltCircleUp,\n faMobileScreenButton,\n faMobileAlt,\n faVolumeHigh,\n faVolumeUp,\n faUsersRays,\n faWallet,\n faClipboardCheck,\n faFileAudio,\n faBurger,\n faHamburger,\n faWrench,\n faBugs,\n faRupeeSign,\n faRupee,\n faFileImage,\n faCircleQuestion,\n faQuestionCircle,\n faPlaneDeparture,\n faHandshakeSlash,\n faBookBookmark,\n faCodeBranch,\n faHatCowboy,\n faBridge,\n faPhoneFlip,\n faPhoneAlt,\n faTruckFront,\n faCat,\n faAnchorCircleExclamation,\n faTruckField,\n faRoute,\n faClipboardQuestion,\n faPanorama,\n faCommentMedical,\n faTeethOpen,\n faFileCircleMinus,\n faTags,\n faWineGlass,\n faForwardFast,\n faFastForward,\n faFaceMehBlank,\n faMehBlank,\n faSquareParking,\n faParking,\n faHouseSignal,\n faBarsProgress,\n faTasksAlt,\n faFaucetDrip,\n faCartFlatbed,\n faDollyFlatbed,\n faBanSmoking,\n faSmokingBan,\n faTerminal,\n faMobileButton,\n faHouseMedicalFlag,\n faBasketShopping,\n faShoppingBasket,\n faTape,\n faBusSimple,\n faBusAlt,\n faEye,\n faFaceSadCry,\n faSadCry,\n faAudioDescription,\n faPersonMilitaryToPerson,\n faFileShield,\n faUserSlash,\n faPen,\n faTowerObservation,\n faFileCode,\n faSignal,\n faSignal5,\n faSignalPerfect,\n faBus,\n faHeartCircleXmark,\n faHouseChimney,\n faHomeLg,\n faWindowMaximize,\n faFaceFrown,\n faFrown,\n faPrescription,\n faShop,\n faStoreAlt,\n faFloppyDisk,\n faSave,\n faVihara,\n faScaleUnbalanced,\n faBalanceScaleLeft,\n faSortUp,\n faSortAsc,\n faCommentDots,\n faCommenting,\n faPlantWilt,\n faDiamond,\n faFaceGrinSquint,\n faGrinSquint,\n faHandHoldingDollar,\n faHandHoldingUsd,\n faBacterium,\n faHandPointer,\n faDrumSteelpan,\n faHandScissors,\n faHandsPraying,\n faPrayingHands,\n faArrowRotateRight,\n faArrowRightRotate,\n faArrowRotateForward,\n faRedo,\n faWebAwesome,\n faBiohazard,\n faLocationCrosshairs,\n faLocation,\n faMarsDouble,\n faChildDress,\n faUsersBetweenLines,\n faLungsVirus,\n faFaceGrinTears,\n faGrinTears,\n faPhone,\n faCalendarXmark,\n faCalendarTimes,\n faChildReaching,\n faHeadSideVirus,\n faUserGear,\n faUserCog,\n faArrowUp19,\n faSortNumericUp,\n faDoorClosed,\n faShieldVirus,\n faDiceSix,\n faMosquitoNet,\n faBridgeWater,\n faPersonBooth,\n faTextWidth,\n faHatWizard,\n faPenFancy,\n faPersonDigging,\n faDigging,\n faTrash,\n faGaugeSimple,\n faGaugeSimpleMed,\n faTachometerAverage,\n faBookMedical,\n faPoo,\n faQuoteRight,\n faQuoteRightAlt,\n faShirt,\n faTShirt,\n faTshirt,\n faCubes,\n faDivide,\n faTengeSign,\n faTenge,\n faHeadphones,\n faHandsHolding,\n faHandsClapping,\n faRepublican,\n faArrowLeft,\n faPersonCircleXmark,\n faRuler,\n faAlignLeft,\n faDiceD6,\n faRestroom,\n faJ,\n faUsersViewfinder,\n faFileVideo,\n faUpRightFromSquare,\n faExternalLinkAlt,\n faTableCells,\n faTh,\n faFilePdf,\n faBookBible,\n faBible,\n faO,\n faSuitcaseMedical,\n faMedkit,\n faUserSecret,\n faOtter,\n faPersonDress,\n faFemale,\n faCommentDollar,\n faBusinessTime,\n faBriefcaseClock,\n faTableCellsLarge,\n faThLarge,\n faBookTanakh,\n faTanakh,\n faPhoneVolume,\n faVolumeControlPhone,\n faHatCowboySide,\n faClipboardUser,\n faChild,\n faLiraSign,\n faSatellite,\n faPlaneLock,\n faTag,\n faComment,\n faCakeCandles,\n faBirthdayCake,\n faCake,\n faEnvelope,\n faAnglesUp,\n faAngleDoubleUp,\n faPaperclip,\n faArrowRightToCity,\n faRibbon,\n faLungs,\n faArrowUp91,\n faSortNumericUpAlt,\n faLitecoinSign,\n faBorderNone,\n faCircleNodes,\n faParachuteBox,\n faIndent,\n faTruckFieldUn,\n faHourglass,\n faHourglassEmpty,\n faMountain,\n faUserDoctor,\n faUserMd,\n faCircleInfo,\n faInfoCircle,\n faCloudMeatball,\n faCamera,\n faCameraAlt,\n faSquareVirus,\n faMeteor,\n faCarOn,\n faSleigh,\n faArrowDown19,\n faSortNumericAsc,\n faSortNumericDown,\n faHandHoldingDroplet,\n faHandHoldingWater,\n faWater,\n faCalendarCheck,\n faBraille,\n faPrescriptionBottleMedical,\n faPrescriptionBottleAlt,\n faLandmark,\n faTruck,\n faCrosshairs,\n faPersonCane,\n faTent,\n faVestPatches,\n faCheckDouble,\n faArrowDownAZ,\n faSortAlphaAsc,\n faSortAlphaDown,\n faMoneyBillWheat,\n faCookie,\n faArrowRotateLeft,\n faArrowLeftRotate,\n faArrowRotateBack,\n faArrowRotateBackward,\n faUndo,\n faHardDrive,\n faHdd,\n faFaceGrinSquintTears,\n faGrinSquintTears,\n faDumbbell,\n faRectangleList,\n faListAlt,\n faTarpDroplet,\n faHouseMedicalCircleCheck,\n faPersonSkiingNordic,\n faSkiingNordic,\n faCalendarPlus,\n faPlaneArrival,\n faCircleLeft,\n faArrowAltCircleLeft,\n faTrainSubway,\n faSubway,\n faChartGantt,\n faIndianRupeeSign,\n faIndianRupee,\n faInr,\n faCropSimple,\n faCropAlt,\n faMoneyBill1,\n faMoneyBillAlt,\n faLeftLong,\n faLongArrowAltLeft,\n faDna,\n faVirusSlash,\n faMinus,\n faSubtract,\n faChess,\n faArrowLeftLong,\n faLongArrowLeft,\n faPlugCircleCheck,\n faStreetView,\n faFrancSign,\n faVolumeOff,\n faHandsAslInterpreting,\n faAmericanSignLanguageInterpreting,\n faAslInterpreting,\n faHandsAmericanSignLanguageInterpreting,\n faGear,\n faCog,\n faDropletSlash,\n faTintSlash,\n faMosque,\n faMosquito,\n faStarOfDavid,\n faPersonMilitaryRifle,\n faCartShopping,\n faShoppingCart,\n faVials,\n faPlugCirclePlus,\n faPlaceOfWorship,\n faGripVertical,\n faArrowTurnUp,\n faLevelUp,\n faU,\n faSquareRootVariable,\n faSquareRootAlt,\n faClock,\n faClockFour,\n faBackwardStep,\n faStepBackward,\n faPallet,\n faFaucet,\n faBaseballBatBall,\n faS,\n faTimeline,\n faKeyboard,\n faCaretDown,\n faHouseChimneyMedical,\n faClinicMedical,\n faTemperatureThreeQuarters,\n faTemperature3,\n faThermometer3,\n faThermometerThreeQuarters,\n faMobileScreen,\n faMobileAndroidAlt,\n faPlaneUp,\n faPiggyBank,\n faBatteryHalf,\n faBattery3,\n faMountainCity,\n faCoins,\n faKhanda,\n faSliders,\n faSlidersH,\n faFolderTree,\n faNetworkWired,\n faMapPin,\n faHamsa,\n faCentSign,\n faFlask,\n faPersonPregnant,\n faWandSparkles,\n faEllipsisVertical,\n faEllipsisV,\n faTicket,\n faPowerOff,\n faRightLong,\n faLongArrowAltRight,\n faFlagUsa,\n faLaptopFile,\n faTty,\n faTeletype,\n faDiagramNext,\n faPersonRifle,\n faHouseMedicalCircleExclamation,\n faClosedCaptioning,\n faPersonHiking,\n faHiking,\n faVenusDouble,\n faImages,\n faCalculator,\n faPeoplePulling,\n faN,\n faCableCar,\n faTram,\n faCloudRain,\n faBuildingCircleXmark,\n faShip,\n faArrowsDownToLine,\n faDownload,\n faFaceGrin,\n faGrin,\n faDeleteLeft,\n faBackspace,\n faEyeDropper,\n faEyeDropperEmpty,\n faEyedropper,\n faFileCircleCheck,\n faForward,\n faMobile,\n faMobileAndroid,\n faMobilePhone,\n faFaceMeh,\n faMeh,\n faAlignCenter,\n faBookSkull,\n faBookDead,\n faIdCard,\n faDriversLicense,\n faOutdent,\n faDedent,\n faHeartCircleExclamation,\n faHouse,\n faHome,\n faHomeAlt,\n faHomeLgAlt,\n faCalendarWeek,\n faLaptopMedical,\n faB,\n faFileMedical,\n faDiceOne,\n faKiwiBird,\n faArrowRightArrowLeft,\n faExchange,\n faRotateRight,\n faRedoAlt,\n faRotateForward,\n faUtensils,\n faCutlery,\n faArrowUpWideShort,\n faSortAmountUp,\n faMillSign,\n faBowlRice,\n faSkull,\n faTowerBroadcast,\n faBroadcastTower,\n faTruckPickup,\n faUpLong,\n faLongArrowAltUp,\n faStop,\n faCodeMerge,\n faUpload,\n faHurricane,\n faMound,\n faToiletPortable,\n faCompactDisc,\n faFileArrowDown,\n faFileDownload,\n faCaravan,\n faShieldCat,\n faBolt,\n faZap,\n faGlassWater,\n faOilWell,\n faVault,\n faMars,\n faToilet,\n faPlaneCircleXmark,\n faYenSign,\n faCny,\n faJpy,\n faRmb,\n faYen,\n faRubleSign,\n faRouble,\n faRub,\n faRuble,\n faSun,\n faGuitar,\n faFaceLaughWink,\n faLaughWink,\n faHorseHead,\n faBoreHole,\n faIndustry,\n faCircleDown,\n faArrowAltCircleDown,\n faArrowsTurnToDots,\n faFlorinSign,\n faArrowDownShortWide,\n faSortAmountDesc,\n faSortAmountDownAlt,\n faLessThan,\n faAngleDown,\n faCarTunnel,\n faHeadSideCough,\n faGripLines,\n faThumbsDown,\n faUserLock,\n faArrowRightLong,\n faLongArrowRight,\n faAnchorCircleXmark,\n faEllipsis,\n faEllipsisH,\n faChessPawn,\n faKitMedical,\n faFirstAid,\n faPersonThroughWindow,\n faToolbox,\n faHandsHoldingCircle,\n faBug,\n faCreditCard,\n faCreditCardAlt,\n faCar,\n faAutomobile,\n faHandHoldingHand,\n faBookOpenReader,\n faBookReader,\n faMountainSun,\n faArrowsLeftRightToLine,\n faDiceD20,\n faTruckDroplet,\n faFileCircleXmark,\n faTemperatureArrowUp,\n faTemperatureUp,\n faMedal,\n faBed,\n faSquareH,\n faHSquare,\n faPodcast,\n faTemperatureFull,\n faTemperature4,\n faThermometer4,\n faThermometerFull,\n faBell,\n faSuperscript,\n faPlugCircleXmark,\n faStarOfLife,\n faPhoneSlash,\n faPaintRoller,\n faHandshakeAngle,\n faHandsHelping,\n faLocationDot,\n faMapMarkerAlt,\n faFile,\n faGreaterThan,\n faPersonSwimming,\n faSwimmer,\n faArrowDown,\n faDroplet,\n faTint,\n faEraser,\n faEarthAmericas,\n faEarth,\n faEarthAmerica,\n faGlobeAmericas,\n faPersonBurst,\n faDove,\n faBatteryEmpty,\n faBattery0,\n faSocks,\n faInbox,\n faSection,\n faGaugeHigh,\n faTachometerAlt,\n faTachometerAltFast,\n faEnvelopeOpenText,\n faHospital,\n faHospitalAlt,\n faHospitalWide,\n faWineBottle,\n faChessRook,\n faBarsStaggered,\n faReorder,\n faStream,\n faDharmachakra,\n faHotdog,\n faPersonWalkingWithCane,\n faBlind,\n faDrum,\n faIceCream,\n faHeartCircleBolt,\n faFax,\n faParagraph,\n faCheckToSlot,\n faVoteYea,\n faStarHalf,\n faBoxesStacked,\n faBoxes,\n faBoxesAlt,\n faLink,\n faChain,\n faEarListen,\n faAssistiveListeningSystems,\n faTreeCity,\n faPlay,\n faFont,\n faTableCellsRowLock,\n faRupiahSign,\n faMagnifyingGlass,\n faSearch,\n faTableTennisPaddleBall,\n faPingPongPaddleBall,\n faTableTennis,\n faPersonDotsFromLine,\n faDiagnoses,\n faTrashCanArrowUp,\n faTrashRestoreAlt,\n faNairaSign,\n faCartArrowDown,\n faWalkieTalkie,\n faFilePen,\n faFileEdit,\n faReceipt,\n faSquarePen,\n faPenSquare,\n faPencilSquare,\n faSuitcaseRolling,\n faPersonCircleExclamation,\n faChevronDown,\n faBatteryFull,\n faBattery,\n faBattery5,\n faSkullCrossbones,\n faCodeCompare,\n faListUl,\n faListDots,\n faSchoolLock,\n faTowerCell,\n faDownLong,\n faLongArrowAltDown,\n faRankingStar,\n faChessKing,\n faPersonHarassing,\n faBrazilianRealSign,\n faLandmarkDome,\n faLandmarkAlt,\n faArrowUp,\n faTv,\n faTelevision,\n faTvAlt,\n faShrimp,\n faListCheck,\n faTasks,\n faJugDetergent,\n faCircleUser,\n faUserCircle,\n faUserShield,\n faWind,\n faCarBurst,\n faCarCrash,\n faY,\n faPersonSnowboarding,\n faSnowboarding,\n faTruckFast,\n faShippingFast,\n faFish,\n faUserGraduate,\n faCircleHalfStroke,\n faAdjust,\n faClapperboard,\n faCircleRadiation,\n faRadiationAlt,\n faBaseball,\n faBaseballBall,\n faJetFighterUp,\n faDiagramProject,\n faProjectDiagram,\n faCopy,\n faVolumeXmark,\n faVolumeMute,\n faVolumeTimes,\n faHandSparkles,\n faGrip,\n faGripHorizontal,\n faShareFromSquare,\n faShareSquare,\n faChildCombatant,\n faChildRifle,\n faGun,\n faSquarePhone,\n faPhoneSquare,\n faPlus,\n faAdd,\n faExpand,\n faComputer,\n faXmark,\n faClose,\n faMultiply,\n faRemove,\n faTimes,\n faArrowsUpDownLeftRight,\n faArrows,\n faChalkboardUser,\n faChalkboardTeacher,\n faPesoSign,\n faBuildingShield,\n faBaby,\n faUsersLine,\n faQuoteLeft,\n faQuoteLeftAlt,\n faTractor,\n faTrashArrowUp,\n faTrashRestore,\n faArrowDownUpLock,\n faLinesLeaning,\n faRulerCombined,\n faCopyright,\n faEquals,\n faBlender,\n faTeeth,\n faShekelSign,\n faIls,\n faShekel,\n faSheqel,\n faSheqelSign,\n faMap,\n faRocket,\n faPhotoFilm,\n faPhotoVideo,\n faFolderMinus,\n faStore,\n faArrowTrendUp,\n faPlugCircleMinus,\n faSignHanging,\n faSign,\n faBezierCurve,\n faBellSlash,\n faTablet,\n faTabletAndroid,\n faSchoolFlag,\n faFill,\n faAngleUp,\n faDrumstickBite,\n faHollyBerry,\n faChevronLeft,\n faBacteria,\n faHandLizard,\n faNotdef,\n faDisease,\n faBriefcaseMedical,\n faGenderless,\n faChevronRight,\n faRetweet,\n faCarRear,\n faCarAlt,\n faPumpSoap,\n faVideoSlash,\n faBatteryQuarter,\n faBattery2,\n faRadio,\n faBabyCarriage,\n faCarriageBaby,\n faTrafficLight,\n faThermometer,\n faVrCardboard,\n faHandMiddleFinger,\n faPercent,\n faPercentage,\n faTruckMoving,\n faGlassWaterDroplet,\n faDisplay,\n faFaceSmile,\n faSmile,\n faThumbtack,\n faThumbTack,\n faTrophy,\n faPersonPraying,\n faPray,\n faHammer,\n faHandPeace,\n faRotate,\n faSyncAlt,\n faSpinner,\n faRobot,\n faPeace,\n faGears,\n faCogs,\n faWarehouse,\n faArrowUpRightDots,\n faSplotch,\n faFaceGrinHearts,\n faGrinHearts,\n faDiceFour,\n faSimCard,\n faTransgender,\n faTransgenderAlt,\n faMercury,\n faArrowTurnDown,\n faLevelDown,\n faPersonFallingBurst,\n faAward,\n faTicketSimple,\n faTicketAlt,\n faBuilding,\n faAnglesLeft,\n faAngleDoubleLeft,\n faQrcode,\n faClockRotateLeft,\n faHistory,\n faFaceGrinBeamSweat,\n faGrinBeamSweat,\n faFileExport,\n faArrowRightFromFile,\n faShield,\n faShieldBlank,\n faArrowUpShortWide,\n faSortAmountUpAlt,\n faHouseMedical,\n faGolfBallTee,\n faGolfBall,\n faCircleChevronLeft,\n faChevronCircleLeft,\n faHouseChimneyWindow,\n faPenNib,\n faTentArrowTurnLeft,\n faTents,\n faWandMagic,\n faMagic,\n faDog,\n faCarrot,\n faMoon,\n faWineGlassEmpty,\n faWineGlassAlt,\n faCheese,\n faYinYang,\n faMusic,\n faCodeCommit,\n faTemperatureLow,\n faPersonBiking,\n faBiking,\n faBroom,\n faShieldHeart,\n faGopuram,\n faEarthOceania,\n faGlobeOceania,\n faSquareXmark,\n faTimesSquare,\n faXmarkSquare,\n faHashtag,\n faUpRightAndDownLeftFromCenter,\n faExpandAlt,\n faOilCan,\n faT,\n faHippo,\n faChartColumn,\n faInfinity,\n faVialCircleCheck,\n faPersonArrowDownToLine,\n faVoicemail,\n faFan,\n faPersonWalkingLuggage,\n faUpDown,\n faArrowsAltV,\n faCloudMoonRain,\n faCalendar,\n faTrailer,\n faBahai,\n faHaykal,\n faSdCard,\n faDragon,\n faShoePrints,\n faCirclePlus,\n faPlusCircle,\n faFaceGrinTongueWink,\n faGrinTongueWink,\n faHandHolding,\n faPlugCircleExclamation,\n faLinkSlash,\n faChainBroken,\n faChainSlash,\n faUnlink,\n faClone,\n faPersonWalkingArrowLoopLeft,\n faArrowUpZA,\n faSortAlphaUpAlt,\n faFireFlameCurved,\n faFireAlt,\n faTornado,\n faFileCirclePlus,\n faBookQuran,\n faQuran,\n faAnchor,\n faBorderAll,\n faFaceAngry,\n faAngry,\n faCookieBite,\n faArrowTrendDown,\n faRss,\n faFeed,\n faDrawPolygon,\n faScaleBalanced,\n faBalanceScale,\n faGaugeSimpleHigh,\n faTachometer,\n faTachometerFast,\n faShower,\n faDesktop,\n faDesktopAlt,\n faM,\n faTableList,\n faThList,\n faCommentSms,\n faSms,\n faBook,\n faUserPlus,\n faCheck,\n faBatteryThreeQuarters,\n faBattery4,\n faHouseCircleCheck,\n faAngleLeft,\n faDiagramSuccessor,\n faTruckArrowRight,\n faArrowsSplitUpAndLeft,\n faHandFist,\n faFistRaised,\n faCloudMoon,\n faBriefcase,\n faPersonFalling,\n faImagePortrait,\n faPortrait,\n faUserTag,\n faRug,\n faEarthEurope,\n faGlobeEurope,\n faCartFlatbedSuitcase,\n faLuggageCart,\n faRectangleXmark,\n faRectangleTimes,\n faTimesRectangle,\n faWindowClose,\n faBahtSign,\n faBookOpen,\n faBookJournalWhills,\n faJournalWhills,\n faHandcuffs,\n faTriangleExclamation,\n faExclamationTriangle,\n faWarning,\n faDatabase,\n faShare,\n faMailForward,\n faBottleDroplet,\n faMaskFace,\n faHillRockslide,\n faRightLeft,\n faExchangeAlt,\n faPaperPlane,\n faRoadCircleExclamation,\n faDungeon,\n faAlignRight,\n faMoneyBill1Wave,\n faMoneyBillWaveAlt,\n faLifeRing,\n faHands,\n faSignLanguage,\n faSigning,\n faCalendarDay,\n faWaterLadder,\n faLadderWater,\n faSwimmingPool,\n faArrowsUpDown,\n faArrowsV,\n faFaceGrimace,\n faGrimace,\n faWheelchairMove,\n faWheelchairAlt,\n faTurnDown,\n faLevelDownAlt,\n faPersonWalkingArrowRight,\n faSquareEnvelope,\n faEnvelopeSquare,\n faDice,\n faBowlingBall,\n faBrain,\n faBandage,\n faBandAid,\n faCalendarMinus,\n faCircleXmark,\n faTimesCircle,\n faXmarkCircle,\n faGifts,\n faHotel,\n faEarthAsia,\n faGlobeAsia,\n faIdCardClip,\n faIdCardAlt,\n faMagnifyingGlassPlus,\n faSearchPlus,\n faThumbsUp,\n faUserClock,\n faHandDots,\n faAllergies,\n faFileInvoice,\n faWindowMinimize,\n faMugSaucer,\n faCoffee,\n faBrush,\n faMask,\n faMagnifyingGlassMinus,\n faSearchMinus,\n faRulerVertical,\n faUserLarge,\n faUserAlt,\n faTrainTram,\n faUserNurse,\n faSyringe,\n faCloudSun,\n faStopwatch20,\n faSquareFull,\n faMagnet,\n faJar,\n faNoteSticky,\n faStickyNote,\n faBugSlash,\n faArrowUpFromWaterPump,\n faBone,\n faTableCellsRowUnlock,\n faUserInjured,\n faFaceSadTear,\n faSadTear,\n faPlane,\n faTentArrowsDown,\n faExclamation,\n faArrowsSpin,\n faPrint,\n faTurkishLiraSign,\n faTry,\n faTurkishLira,\n faDollarSign,\n faDollar,\n faUsd,\n faX,\n faMagnifyingGlassDollar,\n faSearchDollar,\n faUsersGear,\n faUsersCog,\n faPersonMilitaryPointing,\n faBuildingColumns,\n faBank,\n faInstitution,\n faMuseum,\n faUniversity,\n faUmbrella,\n faTrowel,\n faD,\n faStapler,\n faMasksTheater,\n faTheaterMasks,\n faKipSign,\n faHandPointLeft,\n faHandshakeSimple,\n faHandshakeAlt,\n faJetFighter,\n faFighterJet,\n faSquareShareNodes,\n faShareAltSquare,\n faBarcode,\n faPlusMinus,\n faVideo,\n faVideoCamera,\n faGraduationCap,\n faMortarBoard,\n faHandHoldingMedical,\n faPersonCircleCheck,\n faTurnUp,\n faLevelUpAlt\n};\n\nexport { icons as fas, prefix, fa0, fa1, fa2, fa3, fa4, fa5, fa6, fa7, fa8, fa9, faFillDrip, faArrowsToCircle, faCircleChevronRight, faChevronCircleRight, faAt, faTrashCan, faTrashAlt, faTextHeight, faUserXmark, faUserTimes, faStethoscope, faMessage, faCommentAlt, faInfo, faDownLeftAndUpRightToCenter, faCompressAlt, faExplosion, faFileLines, faFileAlt, faFileText, faWaveSquare, faRing, faBuildingUn, faDiceThree, faCalendarDays, faCalendarAlt, faAnchorCircleCheck, faBuildingCircleArrowRight, faVolleyball, faVolleyballBall, faArrowsUpToLine, faSortDown, faSortDesc, faCircleMinus, faMinusCircle, faDoorOpen, faRightFromBracket, faSignOutAlt, faAtom, faSoap, faIcons, faHeartMusicCameraBolt, faMicrophoneLinesSlash, faMicrophoneAltSlash, faBridgeCircleCheck, faPumpMedical, faFingerprint, faHandPointRight, faMagnifyingGlassLocation, faSearchLocation, faForwardStep, faStepForward, faFaceSmileBeam, faSmileBeam, faFlagCheckered, faFootball, faFootballBall, faSchoolCircleExclamation, faCrop, faAnglesDown, faAngleDoubleDown, faUsersRectangle, faPeopleRoof, faPeopleLine, faBeerMugEmpty, faBeer, faDiagramPredecessor, faArrowUpLong, faLongArrowUp, faFireFlameSimple, faBurn, faPerson, faMale, faLaptop, faFileCsv, faMenorah, faTruckPlane, faRecordVinyl, faFaceGrinStars, faGrinStars, faBong, faSpaghettiMonsterFlying, faPastafarianism, faArrowDownUpAcrossLine, faSpoon, faUtensilSpoon, faJarWheat, faEnvelopesBulk, faMailBulk, faFileCircleExclamation, faCircleH, faHospitalSymbol, faPager, faAddressBook, faContactBook, faStrikethrough, faK, faLandmarkFlag, faPencil, faPencilAlt, faBackward, faCaretRight, faComments, faPaste, faFileClipboard, faCodePullRequest, faClipboardList, faTruckRampBox, faTruckLoading, faUserCheck, faVialVirus, faSheetPlastic, faBlog, faUserNinja, faPersonArrowUpFromLine, faScrollTorah, faTorah, faBroomBall, faQuidditch, faQuidditchBroomBall, faToggleOff, faBoxArchive, faArchive, faPersonDrowning, faArrowDown91, faSortNumericDesc, faSortNumericDownAlt, faFaceGrinTongueSquint, faGrinTongueSquint, faSprayCan, faTruckMonster, faW, faEarthAfrica, faGlobeAfrica, faRainbow, faCircleNotch, faTabletScreenButton, faTabletAlt, faPaw, faCloud, faTrowelBricks, faFaceFlushed, faFlushed, faHospitalUser, faTentArrowLeftRight, faGavel, faLegal, faBinoculars, faMicrophoneSlash, faBoxTissue, faMotorcycle, faBellConcierge, faConciergeBell, faPenRuler, faPencilRuler, faPeopleArrows, faPeopleArrowsLeftRight, faMarsAndVenusBurst, faSquareCaretRight, faCaretSquareRight, faScissors, faCut, faSunPlantWilt, faToiletsPortable, faHockeyPuck, faTable, faMagnifyingGlassArrowRight, faTachographDigital, faDigitalTachograph, faUsersSlash, faClover, faReply, faMailReply, faStarAndCrescent, faHouseFire, faSquareMinus, faMinusSquare, faHelicopter, faCompass, faSquareCaretDown, faCaretSquareDown, faFileCircleQuestion, faLaptopCode, faSwatchbook, faPrescriptionBottle, faBars, faNavicon, faPeopleGroup, faHourglassEnd, faHourglass3, faHeartCrack, faHeartBroken, faSquareUpRight, faExternalLinkSquareAlt, faFaceKissBeam, faKissBeam, faFilm, faRulerHorizontal, faPeopleRobbery, faLightbulb, faCaretLeft, faCircleExclamation, faExclamationCircle, faSchoolCircleXmark, faArrowRightFromBracket, faSignOut, faCircleChevronDown, faChevronCircleDown, faUnlockKeyhole, faUnlockAlt, faCloudShowersHeavy, faHeadphonesSimple, faHeadphonesAlt, faSitemap, faCircleDollarToSlot, faDonate, faMemory, faRoadSpikes, faFireBurner, faFlag, faHanukiah, faFeather, faVolumeLow, faVolumeDown, faCommentSlash, faCloudSunRain, faCompress, faWheatAwn, faWheatAlt, faAnkh, faHandsHoldingChild, faAsterisk, faSquareCheck, faCheckSquare, faPesetaSign, faHeading, faHeader, faGhost, faList, faListSquares, faSquarePhoneFlip, faPhoneSquareAlt, faCartPlus, faGamepad, faCircleDot, faDotCircle, faFaceDizzy, faDizzy, faEgg, faHouseMedicalCircleXmark, faCampground, faFolderPlus, faFutbol, faFutbolBall, faSoccerBall, faPaintbrush, faPaintBrush, faLock, faGasPump, faHotTubPerson, faHotTub, faMapLocation, faMapMarked, faHouseFloodWater, faTree, faBridgeLock, faSackDollar, faPenToSquare, faEdit, faCarSide, faShareNodes, faShareAlt, faHeartCircleMinus, faHourglassHalf, faHourglass2, faMicroscope, faSink, faBagShopping, faShoppingBag, faArrowDownZA, faSortAlphaDesc, faSortAlphaDownAlt, faMitten, faPersonRays, faUsers, faEyeSlash, faFlaskVial, faHand, faHandPaper, faOm, faWorm, faHouseCircleXmark, faPlug, faChevronUp, faHandSpock, faStopwatch, faFaceKiss, faKiss, faBridgeCircleXmark, faFaceGrinTongue, faGrinTongue, faChessBishop, faFaceGrinWink, faGrinWink, faEarDeaf, faDeaf, faDeafness, faHardOfHearing, faRoadCircleCheck, faDiceFive, faSquareRss, faRssSquare, faLandMineOn, faICursor, faStamp, faStairs, faI, faHryvniaSign, faHryvnia, faPills, faFaceGrinWide, faGrinAlt, faTooth, faV, faBangladeshiTakaSign, faBicycle, faStaffSnake, faRodAsclepius, faRodSnake, faStaffAesculapius, faHeadSideCoughSlash, faTruckMedical, faAmbulance, faWheatAwnCircleExclamation, faSnowman, faMortarPestle, faRoadBarrier, faSchool, faIgloo, faJoint, faAngleRight, faHorse, faQ, faG, faNotesMedical, faTemperatureHalf, faTemperature2, faThermometer2, faThermometerHalf, faDongSign, faCapsules, faPooStorm, faPooBolt, faFaceFrownOpen, faFrownOpen, faHandPointUp, faMoneyBill, faBookmark, faAlignJustify, faUmbrellaBeach, faHelmetUn, faBullseye, faBacon, faHandPointDown, faArrowUpFromBracket, faFolder, faFolderBlank, faFileWaveform, faFileMedicalAlt, faRadiation, faChartSimple, faMarsStroke, faVial, faGauge, faDashboard, faGaugeMed, faTachometerAltAverage, faWandMagicSparkles, faMagicWandSparkles, faE, faPenClip, faPenAlt, faBridgeCircleExclamation, faUser, faSchoolCircleCheck, faDumpster, faVanShuttle, faShuttleVan, faBuildingUser, faSquareCaretLeft, faCaretSquareLeft, faHighlighter, faKey, faBullhorn, faGlobe, faSynagogue, faPersonHalfDress, faRoadBridge, faLocationArrow, faC, faTabletButton, faBuildingLock, faPizzaSlice, faMoneyBillWave, faChartArea, faAreaChart, faHouseFlag, faPersonCircleMinus, faBan, faCancel, faCameraRotate, faSprayCanSparkles, faAirFreshener, faStar, faRepeat, faCross, faBox, faVenusMars, faArrowPointer, faMousePointer, faMaximize, faExpandArrowsAlt, faChargingStation, faShapes, faTriangleCircleSquare, faShuffle, faRandom, faPersonRunning, faRunning, faMobileRetro, faGripLinesVertical, faSpider, faHandsBound, faFileInvoiceDollar, faPlaneCircleExclamation, faXRay, faSpellCheck, faSlash, faComputerMouse, faMouse, faArrowRightToBracket, faSignIn, faShopSlash, faStoreAltSlash, faServer, faVirusCovidSlash, faShopLock, faHourglassStart, faHourglass1, faBlenderPhone, faBuildingWheat, faPersonBreastfeeding, faRightToBracket, faSignInAlt, faVenus, faPassport, faThumbtackSlash, faThumbTackSlash, faHeartPulse, faHeartbeat, faPeopleCarryBox, faPeopleCarry, faTemperatureHigh, faMicrochip, faCrown, faWeightHanging, faXmarksLines, faFilePrescription, faWeightScale, faWeight, faUserGroup, faUserFriends, faArrowUpAZ, faSortAlphaUp, faChessKnight, faFaceLaughSquint, faLaughSquint, faWheelchair, faCircleArrowUp, faArrowCircleUp, faToggleOn, faPersonWalking, faWalking, faL, faFire, faBedPulse, faProcedures, faShuttleSpace, faSpaceShuttle, faFaceLaugh, faLaugh, faFolderOpen, faHeartCirclePlus, faCodeFork, faCity, faMicrophoneLines, faMicrophoneAlt, faPepperHot, faUnlock, faColonSign, faHeadset, faStoreSlash, faRoadCircleXmark, faUserMinus, faMarsStrokeUp, faMarsStrokeV, faChampagneGlasses, faGlassCheers, faClipboard, faHouseCircleExclamation, faFileArrowUp, faFileUpload, faWifi, faWifi3, faWifiStrong, faBath, faBathtub, faUnderline, faUserPen, faUserEdit, faSignature, faStroopwafel, faBold, faAnchorLock, faBuildingNgo, faManatSign, faNotEqual, faBorderTopLeft, faBorderStyle, faMapLocationDot, faMapMarkedAlt, faJedi, faSquarePollVertical, faPoll, faMugHot, faCarBattery, faBatteryCar, faGift, faDiceTwo, faChessQueen, faGlasses, faChessBoard, faBuildingCircleCheck, faPersonChalkboard, faMarsStrokeRight, faMarsStrokeH, faHandBackFist, faHandRock, faSquareCaretUp, faCaretSquareUp, faCloudShowersWater, faChartBar, faBarChart, faHandsBubbles, faHandsWash, faLessThanEqual, faTrain, faEyeLowVision, faLowVision, faCrow, faSailboat, faWindowRestore, faSquarePlus, faPlusSquare, faToriiGate, faFrog, faBucket, faImage, faMicrophone, faCow, faCaretUp, faScrewdriver, faFolderClosed, faHouseTsunami, faSquareNfi, faArrowUpFromGroundWater, faMartiniGlass, faGlassMartiniAlt, faRotateLeft, faRotateBack, faRotateBackward, faUndoAlt, faTableColumns, faColumns, faLemon, faHeadSideMask, faHandshake, faGem, faDolly, faDollyBox, faSmoking, faMinimize, faCompressArrowsAlt, faMonument, faSnowplow, faAnglesRight, faAngleDoubleRight, faCannabis, faCirclePlay, faPlayCircle, faTablets, faEthernet, faEuroSign, faEur, faEuro, faChair, faCircleCheck, faCheckCircle, faCircleStop, faStopCircle, faCompassDrafting, faDraftingCompass, faPlateWheat, faIcicles, faPersonShelter, faNeuter, faIdBadge, faMarker, faFaceLaughBeam, faLaughBeam, faHelicopterSymbol, faUniversalAccess, faCircleChevronUp, faChevronCircleUp, faLariSign, faVolcano, faPersonWalkingDashedLineArrowRight, faSterlingSign, faGbp, faPoundSign, faViruses, faSquarePersonConfined, faUserTie, faArrowDownLong, faLongArrowDown, faTentArrowDownToLine, faCertificate, faReplyAll, faMailReplyAll, faSuitcase, faPersonSkating, faSkating, faFilterCircleDollar, faFunnelDollar, faCameraRetro, faCircleArrowDown, faArrowCircleDown, faFileImport, faArrowRightToFile, faSquareArrowUpRight, faExternalLinkSquare, faBoxOpen, faScroll, faSpa, faLocationPinLock, faPause, faHillAvalanche, faTemperatureEmpty, faTemperature0, faThermometer0, faThermometerEmpty, faBomb, faRegistered, faAddressCard, faContactCard, faVcard, faScaleUnbalancedFlip, faBalanceScaleRight, faSubscript, faDiamondTurnRight, faDirections, faBurst, faHouseLaptop, faLaptopHouse, faFaceTired, faTired, faMoneyBills, faSmog, faCrutch, faFontAwesome, faFontAwesomeFlag, faFontAwesomeLogoFull, faCloudArrowUp, faCloudUpload, faCloudUploadAlt, faPalette, faArrowsTurnRight, faVest, faFerry, faArrowsDownToPeople, faSeedling, faSprout, faLeftRight, faArrowsAltH, faBoxesPacking, faCircleArrowLeft, faArrowCircleLeft, faGroupArrowsRotate, faBowlFood, faCandyCane, faArrowDownWideShort, faSortAmountAsc, faSortAmountDown, faCloudBolt, faThunderstorm, faTextSlash, faRemoveFormat, faFaceSmileWink, faSmileWink, faFileWord, faFilePowerpoint, faArrowsLeftRight, faArrowsH, faHouseLock, faCloudArrowDown, faCloudDownload, faCloudDownloadAlt, faChildren, faChalkboard, faBlackboard, faUserLargeSlash, faUserAltSlash, faEnvelopeOpen, faHandshakeSimpleSlash, faHandshakeAltSlash, faMattressPillow, faGuaraniSign, faArrowsRotate, faRefresh, faSync, faFireExtinguisher, faCruzeiroSign, faGreaterThanEqual, faShieldHalved, faShieldAlt, faBookAtlas, faAtlas, faVirus, faEnvelopeCircleCheck, faLayerGroup, faArrowsToDot, faArchway, faHeartCircleCheck, faHouseChimneyCrack, faHouseDamage, faFileZipper, faFileArchive, faSquare, faMartiniGlassEmpty, faGlassMartini, faCouch, faCediSign, faItalic, faTableCellsColumnLock, faChurch, faCommentsDollar, faDemocrat, faZ, faPersonSkiing, faSkiing, faRoadLock, faA, faTemperatureArrowDown, faTemperatureDown, faFeatherPointed, faFeatherAlt, faP, faSnowflake, faNewspaper, faRectangleAd, faAd, faCircleArrowRight, faArrowCircleRight, faFilterCircleXmark, faLocust, faSort, faUnsorted, faListOl, faList12, faListNumeric, faPersonDressBurst, faMoneyCheckDollar, faMoneyCheckAlt, faVectorSquare, faBreadSlice, faLanguage, faFaceKissWinkHeart, faKissWinkHeart, faFilter, faQuestion, faFileSignature, faUpDownLeftRight, faArrowsAlt, faHouseChimneyUser, faHandHoldingHeart, faPuzzlePiece, faMoneyCheck, faStarHalfStroke, faStarHalfAlt, faCode, faWhiskeyGlass, faGlassWhiskey, faBuildingCircleExclamation, faMagnifyingGlassChart, faArrowUpRightFromSquare, faExternalLink, faCubesStacked, faWonSign, faKrw, faWon, faVirusCovid, faAustralSign, faF, faLeaf, faRoad, faTaxi, faCab, faPersonCirclePlus, faChartPie, faPieChart, faBoltLightning, faSackXmark, faFileExcel, faFileContract, faFishFins, faBuildingFlag, faFaceGrinBeam, faGrinBeam, faObjectUngroup, faPoop, faLocationPin, faMapMarker, faKaaba, faToiletPaper, faHelmetSafety, faHardHat, faHatHard, faEject, faCircleRight, faArrowAltCircleRight, faPlaneCircleCheck, faFaceRollingEyes, faMehRollingEyes, faObjectGroup, faChartLine, faLineChart, faMaskVentilator, faArrowRight, faSignsPost, faMapSigns, faCashRegister, faPersonCircleQuestion, faH, faTarp, faScrewdriverWrench, faTools, faArrowsToEye, faPlugCircleBolt, faHeart, faMarsAndVenus, faHouseUser, faHomeUser, faDumpsterFire, faHouseCrack, faMartiniGlassCitrus, faCocktail, faFaceSurprise, faSurprise, faBottleWater, faCirclePause, faPauseCircle, faToiletPaperSlash, faAppleWhole, faAppleAlt, faKitchenSet, faR, faTemperatureQuarter, faTemperature1, faThermometer1, faThermometerQuarter, faCube, faBitcoinSign, faShieldDog, faSolarPanel, faLockOpen, faElevator, faMoneyBillTransfer, faMoneyBillTrendUp, faHouseFloodWaterCircleArrowRight, faSquarePollHorizontal, faPollH, faCircle, faBackwardFast, faFastBackward, faRecycle, faUserAstronaut, faPlaneSlash, faTrademark, faBasketball, faBasketballBall, faSatelliteDish, faCircleUp, faArrowAltCircleUp, faMobileScreenButton, faMobileAlt, faVolumeHigh, faVolumeUp, faUsersRays, faWallet, faClipboardCheck, faFileAudio, faBurger, faHamburger, faWrench, faBugs, faRupeeSign, faRupee, faFileImage, faCircleQuestion, faQuestionCircle, faPlaneDeparture, faHandshakeSlash, faBookBookmark, faCodeBranch, faHatCowboy, faBridge, faPhoneFlip, faPhoneAlt, faTruckFront, faCat, faAnchorCircleExclamation, faTruckField, faRoute, faClipboardQuestion, faPanorama, faCommentMedical, faTeethOpen, faFileCircleMinus, faTags, faWineGlass, faForwardFast, faFastForward, faFaceMehBlank, faMehBlank, faSquareParking, faParking, faHouseSignal, faBarsProgress, faTasksAlt, faFaucetDrip, faCartFlatbed, faDollyFlatbed, faBanSmoking, faSmokingBan, faTerminal, faMobileButton, faHouseMedicalFlag, faBasketShopping, faShoppingBasket, faTape, faBusSimple, faBusAlt, faEye, faFaceSadCry, faSadCry, faAudioDescription, faPersonMilitaryToPerson, faFileShield, faUserSlash, faPen, faTowerObservation, faFileCode, faSignal, faSignal5, faSignalPerfect, faBus, faHeartCircleXmark, faHouseChimney, faHomeLg, faWindowMaximize, faFaceFrown, faFrown, faPrescription, faShop, faStoreAlt, faFloppyDisk, faSave, faVihara, faScaleUnbalanced, faBalanceScaleLeft, faSortUp, faSortAsc, faCommentDots, faCommenting, faPlantWilt, faDiamond, faFaceGrinSquint, faGrinSquint, faHandHoldingDollar, faHandHoldingUsd, faBacterium, faHandPointer, faDrumSteelpan, faHandScissors, faHandsPraying, faPrayingHands, faArrowRotateRight, faArrowRightRotate, faArrowRotateForward, faRedo, faWebAwesome, faBiohazard, faLocationCrosshairs, faLocation, faMarsDouble, faChildDress, faUsersBetweenLines, faLungsVirus, faFaceGrinTears, faGrinTears, faPhone, faCalendarXmark, faCalendarTimes, faChildReaching, faHeadSideVirus, faUserGear, faUserCog, faArrowUp19, faSortNumericUp, faDoorClosed, faShieldVirus, faDiceSix, faMosquitoNet, faBridgeWater, faPersonBooth, faTextWidth, faHatWizard, faPenFancy, faPersonDigging, faDigging, faTrash, faGaugeSimple, faGaugeSimpleMed, faTachometerAverage, faBookMedical, faPoo, faQuoteRight, faQuoteRightAlt, faShirt, faTShirt, faTshirt, faCubes, faDivide, faTengeSign, faTenge, faHeadphones, faHandsHolding, faHandsClapping, faRepublican, faArrowLeft, faPersonCircleXmark, faRuler, faAlignLeft, faDiceD6, faRestroom, faJ, faUsersViewfinder, faFileVideo, faUpRightFromSquare, faExternalLinkAlt, faTableCells, faTh, faFilePdf, faBookBible, faBible, faO, faSuitcaseMedical, faMedkit, faUserSecret, faOtter, faPersonDress, faFemale, faCommentDollar, faBusinessTime, faBriefcaseClock, faTableCellsLarge, faThLarge, faBookTanakh, faTanakh, faPhoneVolume, faVolumeControlPhone, faHatCowboySide, faClipboardUser, faChild, faLiraSign, faSatellite, faPlaneLock, faTag, faComment, faCakeCandles, faBirthdayCake, faCake, faEnvelope, faAnglesUp, faAngleDoubleUp, faPaperclip, faArrowRightToCity, faRibbon, faLungs, faArrowUp91, faSortNumericUpAlt, faLitecoinSign, faBorderNone, faCircleNodes, faParachuteBox, faIndent, faTruckFieldUn, faHourglass, faHourglassEmpty, faMountain, faUserDoctor, faUserMd, faCircleInfo, faInfoCircle, faCloudMeatball, faCamera, faCameraAlt, faSquareVirus, faMeteor, faCarOn, faSleigh, faArrowDown19, faSortNumericAsc, faSortNumericDown, faHandHoldingDroplet, faHandHoldingWater, faWater, faCalendarCheck, faBraille, faPrescriptionBottleMedical, faPrescriptionBottleAlt, faLandmark, faTruck, faCrosshairs, faPersonCane, faTent, faVestPatches, faCheckDouble, faArrowDownAZ, faSortAlphaAsc, faSortAlphaDown, faMoneyBillWheat, faCookie, faArrowRotateLeft, faArrowLeftRotate, faArrowRotateBack, faArrowRotateBackward, faUndo, faHardDrive, faHdd, faFaceGrinSquintTears, faGrinSquintTears, faDumbbell, faRectangleList, faListAlt, faTarpDroplet, faHouseMedicalCircleCheck, faPersonSkiingNordic, faSkiingNordic, faCalendarPlus, faPlaneArrival, faCircleLeft, faArrowAltCircleLeft, faTrainSubway, faSubway, faChartGantt, faIndianRupeeSign, faIndianRupee, faInr, faCropSimple, faCropAlt, faMoneyBill1, faMoneyBillAlt, faLeftLong, faLongArrowAltLeft, faDna, faVirusSlash, faMinus, faSubtract, faChess, faArrowLeftLong, faLongArrowLeft, faPlugCircleCheck, faStreetView, faFrancSign, faVolumeOff, faHandsAslInterpreting, faAmericanSignLanguageInterpreting, faAslInterpreting, faHandsAmericanSignLanguageInterpreting, faGear, faCog, faDropletSlash, faTintSlash, faMosque, faMosquito, faStarOfDavid, faPersonMilitaryRifle, faCartShopping, faShoppingCart, faVials, faPlugCirclePlus, faPlaceOfWorship, faGripVertical, faArrowTurnUp, faLevelUp, faU, faSquareRootVariable, faSquareRootAlt, faClock, faClockFour, faBackwardStep, faStepBackward, faPallet, faFaucet, faBaseballBatBall, faS, faTimeline, faKeyboard, faCaretDown, faHouseChimneyMedical, faClinicMedical, faTemperatureThreeQuarters, faTemperature3, faThermometer3, faThermometerThreeQuarters, faMobileScreen, faMobileAndroidAlt, faPlaneUp, faPiggyBank, faBatteryHalf, faBattery3, faMountainCity, faCoins, faKhanda, faSliders, faSlidersH, faFolderTree, faNetworkWired, faMapPin, faHamsa, faCentSign, faFlask, faPersonPregnant, faWandSparkles, faEllipsisVertical, faEllipsisV, faTicket, faPowerOff, faRightLong, faLongArrowAltRight, faFlagUsa, faLaptopFile, faTty, faTeletype, faDiagramNext, faPersonRifle, faHouseMedicalCircleExclamation, faClosedCaptioning, faPersonHiking, faHiking, faVenusDouble, faImages, faCalculator, faPeoplePulling, faN, faCableCar, faTram, faCloudRain, faBuildingCircleXmark, faShip, faArrowsDownToLine, faDownload, faFaceGrin, faGrin, faDeleteLeft, faBackspace, faEyeDropper, faEyeDropperEmpty, faEyedropper, faFileCircleCheck, faForward, faMobile, faMobileAndroid, faMobilePhone, faFaceMeh, faMeh, faAlignCenter, faBookSkull, faBookDead, faIdCard, faDriversLicense, faOutdent, faDedent, faHeartCircleExclamation, faHouse, faHome, faHomeAlt, faHomeLgAlt, faCalendarWeek, faLaptopMedical, faB, faFileMedical, faDiceOne, faKiwiBird, faArrowRightArrowLeft, faExchange, faRotateRight, faRedoAlt, faRotateForward, faUtensils, faCutlery, faArrowUpWideShort, faSortAmountUp, faMillSign, faBowlRice, faSkull, faTowerBroadcast, faBroadcastTower, faTruckPickup, faUpLong, faLongArrowAltUp, faStop, faCodeMerge, faUpload, faHurricane, faMound, faToiletPortable, faCompactDisc, faFileArrowDown, faFileDownload, faCaravan, faShieldCat, faBolt, faZap, faGlassWater, faOilWell, faVault, faMars, faToilet, faPlaneCircleXmark, faYenSign, faCny, faJpy, faRmb, faYen, faRubleSign, faRouble, faRub, faRuble, faSun, faGuitar, faFaceLaughWink, faLaughWink, faHorseHead, faBoreHole, faIndustry, faCircleDown, faArrowAltCircleDown, faArrowsTurnToDots, faFlorinSign, faArrowDownShortWide, faSortAmountDesc, faSortAmountDownAlt, faLessThan, faAngleDown, faCarTunnel, faHeadSideCough, faGripLines, faThumbsDown, faUserLock, faArrowRightLong, faLongArrowRight, faAnchorCircleXmark, faEllipsis, faEllipsisH, faChessPawn, faKitMedical, faFirstAid, faPersonThroughWindow, faToolbox, faHandsHoldingCircle, faBug, faCreditCard, faCreditCardAlt, faCar, faAutomobile, faHandHoldingHand, faBookOpenReader, faBookReader, faMountainSun, faArrowsLeftRightToLine, faDiceD20, faTruckDroplet, faFileCircleXmark, faTemperatureArrowUp, faTemperatureUp, faMedal, faBed, faSquareH, faHSquare, faPodcast, faTemperatureFull, faTemperature4, faThermometer4, faThermometerFull, faBell, faSuperscript, faPlugCircleXmark, faStarOfLife, faPhoneSlash, faPaintRoller, faHandshakeAngle, faHandsHelping, faLocationDot, faMapMarkerAlt, faFile, faGreaterThan, faPersonSwimming, faSwimmer, faArrowDown, faDroplet, faTint, faEraser, faEarthAmericas, faEarth, faEarthAmerica, faGlobeAmericas, faPersonBurst, faDove, faBatteryEmpty, faBattery0, faSocks, faInbox, faSection, faGaugeHigh, faTachometerAlt, faTachometerAltFast, faEnvelopeOpenText, faHospital, faHospitalAlt, faHospitalWide, faWineBottle, faChessRook, faBarsStaggered, faReorder, faStream, faDharmachakra, faHotdog, faPersonWalkingWithCane, faBlind, faDrum, faIceCream, faHeartCircleBolt, faFax, faParagraph, faCheckToSlot, faVoteYea, faStarHalf, faBoxesStacked, faBoxes, faBoxesAlt, faLink, faChain, faEarListen, faAssistiveListeningSystems, faTreeCity, faPlay, faFont, faTableCellsRowLock, faRupiahSign, faMagnifyingGlass, faSearch, faTableTennisPaddleBall, faPingPongPaddleBall, faTableTennis, faPersonDotsFromLine, faDiagnoses, faTrashCanArrowUp, faTrashRestoreAlt, faNairaSign, faCartArrowDown, faWalkieTalkie, faFilePen, faFileEdit, faReceipt, faSquarePen, faPenSquare, faPencilSquare, faSuitcaseRolling, faPersonCircleExclamation, faChevronDown, faBatteryFull, faBattery, faBattery5, faSkullCrossbones, faCodeCompare, faListUl, faListDots, faSchoolLock, faTowerCell, faDownLong, faLongArrowAltDown, faRankingStar, faChessKing, faPersonHarassing, faBrazilianRealSign, faLandmarkDome, faLandmarkAlt, faArrowUp, faTv, faTelevision, faTvAlt, faShrimp, faListCheck, faTasks, faJugDetergent, faCircleUser, faUserCircle, faUserShield, faWind, faCarBurst, faCarCrash, faY, faPersonSnowboarding, faSnowboarding, faTruckFast, faShippingFast, faFish, faUserGraduate, faCircleHalfStroke, faAdjust, faClapperboard, faCircleRadiation, faRadiationAlt, faBaseball, faBaseballBall, faJetFighterUp, faDiagramProject, faProjectDiagram, faCopy, faVolumeXmark, faVolumeMute, faVolumeTimes, faHandSparkles, faGrip, faGripHorizontal, faShareFromSquare, faShareSquare, faChildCombatant, faChildRifle, faGun, faSquarePhone, faPhoneSquare, faPlus, faAdd, faExpand, faComputer, faXmark, faClose, faMultiply, faRemove, faTimes, faArrowsUpDownLeftRight, faArrows, faChalkboardUser, faChalkboardTeacher, faPesoSign, faBuildingShield, faBaby, faUsersLine, faQuoteLeft, faQuoteLeftAlt, faTractor, faTrashArrowUp, faTrashRestore, faArrowDownUpLock, faLinesLeaning, faRulerCombined, faCopyright, faEquals, faBlender, faTeeth, faShekelSign, faIls, faShekel, faSheqel, faSheqelSign, faMap, faRocket, faPhotoFilm, faPhotoVideo, faFolderMinus, faStore, faArrowTrendUp, faPlugCircleMinus, faSignHanging, faSign, faBezierCurve, faBellSlash, faTablet, faTabletAndroid, faSchoolFlag, faFill, faAngleUp, faDrumstickBite, faHollyBerry, faChevronLeft, faBacteria, faHandLizard, faNotdef, faDisease, faBriefcaseMedical, faGenderless, faChevronRight, faRetweet, faCarRear, faCarAlt, faPumpSoap, faVideoSlash, faBatteryQuarter, faBattery2, faRadio, faBabyCarriage, faCarriageBaby, faTrafficLight, faThermometer, faVrCardboard, faHandMiddleFinger, faPercent, faPercentage, faTruckMoving, faGlassWaterDroplet, faDisplay, faFaceSmile, faSmile, faThumbtack, faThumbTack, faTrophy, faPersonPraying, faPray, faHammer, faHandPeace, faRotate, faSyncAlt, faSpinner, faRobot, faPeace, faGears, faCogs, faWarehouse, faArrowUpRightDots, faSplotch, faFaceGrinHearts, faGrinHearts, faDiceFour, faSimCard, faTransgender, faTransgenderAlt, faMercury, faArrowTurnDown, faLevelDown, faPersonFallingBurst, faAward, faTicketSimple, faTicketAlt, faBuilding, faAnglesLeft, faAngleDoubleLeft, faQrcode, faClockRotateLeft, faHistory, faFaceGrinBeamSweat, faGrinBeamSweat, faFileExport, faArrowRightFromFile, faShield, faShieldBlank, faArrowUpShortWide, faSortAmountUpAlt, faHouseMedical, faGolfBallTee, faGolfBall, faCircleChevronLeft, faChevronCircleLeft, faHouseChimneyWindow, faPenNib, faTentArrowTurnLeft, faTents, faWandMagic, faMagic, faDog, faCarrot, faMoon, faWineGlassEmpty, faWineGlassAlt, faCheese, faYinYang, faMusic, faCodeCommit, faTemperatureLow, faPersonBiking, faBiking, faBroom, faShieldHeart, faGopuram, faEarthOceania, faGlobeOceania, faSquareXmark, faTimesSquare, faXmarkSquare, faHashtag, faUpRightAndDownLeftFromCenter, faExpandAlt, faOilCan, faT, faHippo, faChartColumn, faInfinity, faVialCircleCheck, faPersonArrowDownToLine, faVoicemail, faFan, faPersonWalkingLuggage, faUpDown, faArrowsAltV, faCloudMoonRain, faCalendar, faTrailer, faBahai, faHaykal, faSdCard, faDragon, faShoePrints, faCirclePlus, faPlusCircle, faFaceGrinTongueWink, faGrinTongueWink, faHandHolding, faPlugCircleExclamation, faLinkSlash, faChainBroken, faChainSlash, faUnlink, faClone, faPersonWalkingArrowLoopLeft, faArrowUpZA, faSortAlphaUpAlt, faFireFlameCurved, faFireAlt, faTornado, faFileCirclePlus, faBookQuran, faQuran, faAnchor, faBorderAll, faFaceAngry, faAngry, faCookieBite, faArrowTrendDown, faRss, faFeed, faDrawPolygon, faScaleBalanced, faBalanceScale, faGaugeSimpleHigh, faTachometer, faTachometerFast, faShower, faDesktop, faDesktopAlt, faM, faTableList, faThList, faCommentSms, faSms, faBook, faUserPlus, faCheck, faBatteryThreeQuarters, faBattery4, faHouseCircleCheck, faAngleLeft, faDiagramSuccessor, faTruckArrowRight, faArrowsSplitUpAndLeft, faHandFist, faFistRaised, faCloudMoon, faBriefcase, faPersonFalling, faImagePortrait, faPortrait, faUserTag, faRug, faEarthEurope, faGlobeEurope, faCartFlatbedSuitcase, faLuggageCart, faRectangleXmark, faRectangleTimes, faTimesRectangle, faWindowClose, faBahtSign, faBookOpen, faBookJournalWhills, faJournalWhills, faHandcuffs, faTriangleExclamation, faExclamationTriangle, faWarning, faDatabase, faShare, faMailForward, faBottleDroplet, faMaskFace, faHillRockslide, faRightLeft, faExchangeAlt, faPaperPlane, faRoadCircleExclamation, faDungeon, faAlignRight, faMoneyBill1Wave, faMoneyBillWaveAlt, faLifeRing, faHands, faSignLanguage, faSigning, faCalendarDay, faWaterLadder, faLadderWater, faSwimmingPool, faArrowsUpDown, faArrowsV, faFaceGrimace, faGrimace, faWheelchairMove, faWheelchairAlt, faTurnDown, faLevelDownAlt, faPersonWalkingArrowRight, faSquareEnvelope, faEnvelopeSquare, faDice, faBowlingBall, faBrain, faBandage, faBandAid, faCalendarMinus, faCircleXmark, faTimesCircle, faXmarkCircle, faGifts, faHotel, faEarthAsia, faGlobeAsia, faIdCardClip, faIdCardAlt, faMagnifyingGlassPlus, faSearchPlus, faThumbsUp, faUserClock, faHandDots, faAllergies, faFileInvoice, faWindowMinimize, faMugSaucer, faCoffee, faBrush, faMask, faMagnifyingGlassMinus, faSearchMinus, faRulerVertical, faUserLarge, faUserAlt, faTrainTram, faUserNurse, faSyringe, faCloudSun, faStopwatch20, faSquareFull, faMagnet, faJar, faNoteSticky, faStickyNote, faBugSlash, faArrowUpFromWaterPump, faBone, faTableCellsRowUnlock, faUserInjured, faFaceSadTear, faSadTear, faPlane, faTentArrowsDown, faExclamation, faArrowsSpin, faPrint, faTurkishLiraSign, faTry, faTurkishLira, faDollarSign, faDollar, faUsd, faX, faMagnifyingGlassDollar, faSearchDollar, faUsersGear, faUsersCog, faPersonMilitaryPointing, faBuildingColumns, faBank, faInstitution, faMuseum, faUniversity, faUmbrella, faTrowel, faD, faStapler, faMasksTheater, faTheaterMasks, faKipSign, faHandPointLeft, faHandshakeSimple, faHandshakeAlt, faJetFighter, faFighterJet, faSquareShareNodes, faShareAltSquare, faBarcode, faPlusMinus, faVideo, faVideoCamera, faGraduationCap, faMortarBoard, faHandHoldingMedical, faPersonCircleCheck, faTurnUp, faLevelUpAlt };\n","////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Actions represent the type of change to a location value.\n */\nexport enum Action {\n /**\n * A POP indicates a change to an arbitrary index in the history stack, such\n * as a back or forward navigation. It does not describe the direction of the\n * navigation, only that the current index changed.\n *\n * Note: This is the default action for newly created history objects.\n */\n Pop = \"POP\",\n\n /**\n * A PUSH indicates a new entry being added to the history stack, such as when\n * a link is clicked and a new page loads. When this happens, all subsequent\n * entries in the stack are lost.\n */\n Push = \"PUSH\",\n\n /**\n * A REPLACE indicates the entry at the current index in the history stack\n * being replaced by a new one.\n */\n Replace = \"REPLACE\",\n}\n\n/**\n * The pathname, search, and hash values of a URL.\n */\nexport interface Path {\n /**\n * A URL pathname, beginning with a /.\n */\n pathname: string;\n\n /**\n * A URL search string, beginning with a ?.\n */\n search: string;\n\n /**\n * A URL fragment identifier, beginning with a #.\n */\n hash: string;\n}\n\n// TODO: (v7) Change the Location generic default from `any` to `unknown` and\n// remove Remix `useLocation` wrapper.\n\n/**\n * An entry in a history stack. A location contains information about the\n * URL path, as well as possibly some arbitrary state and a key.\n */\nexport interface Location extends Path {\n /**\n * A value of arbitrary data associated with this location.\n */\n state: State;\n\n /**\n * A unique string associated with this location. May be used to safely store\n * and retrieve data in some other storage API, like `localStorage`.\n *\n * Note: This value is always \"default\" on the initial location.\n */\n key: string;\n}\n\n/**\n * A change to the current location.\n */\nexport interface Update {\n /**\n * The action that triggered the change.\n */\n action: Action;\n\n /**\n * The new location.\n */\n location: Location;\n\n /**\n * The delta between this location and the former location in the history stack\n */\n delta: number | null;\n}\n\n/**\n * A function that receives notifications about location changes.\n */\nexport interface Listener {\n (update: Update): void;\n}\n\n/**\n * Describes a location that is the destination of some navigation, either via\n * `history.push` or `history.replace`. This may be either a URL or the pieces\n * of a URL path.\n */\nexport type To = string | Partial;\n\n/**\n * A history is an interface to the navigation stack. The history serves as the\n * source of truth for the current location, as well as provides a set of\n * methods that may be used to change it.\n *\n * It is similar to the DOM's `window.history` object, but with a smaller, more\n * focused API.\n */\nexport interface History {\n /**\n * The last action that modified the current location. This will always be\n * Action.Pop when a history instance is first created. This value is mutable.\n */\n readonly action: Action;\n\n /**\n * The current location. This value is mutable.\n */\n readonly location: Location;\n\n /**\n * Returns a valid href for the given `to` value that may be used as\n * the value of an attribute.\n *\n * @param to - The destination URL\n */\n createHref(to: To): string;\n\n /**\n * Returns a URL for the given `to` value\n *\n * @param to - The destination URL\n */\n createURL(to: To): URL;\n\n /**\n * Encode a location the same way window.history would do (no-op for memory\n * history) so we ensure our PUSH/REPLACE navigations for data routers\n * behave the same as POP\n *\n * @param to Unencoded path\n */\n encodeLocation(to: To): Path;\n\n /**\n * Pushes a new location onto the history stack, increasing its length by one.\n * If there were any entries in the stack after the current one, they are\n * lost.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n push(to: To, state?: any): void;\n\n /**\n * Replaces the current location in the history stack with a new one. The\n * location that was replaced will no longer be available.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n replace(to: To, state?: any): void;\n\n /**\n * Navigates `n` entries backward/forward in the history stack relative to the\n * current index. For example, a \"back\" navigation would use go(-1).\n *\n * @param delta - The delta in the stack index\n */\n go(delta: number): void;\n\n /**\n * Sets up a listener that will be called whenever the current location\n * changes.\n *\n * @param listener - A function that will be called when the location changes\n * @returns unlisten - A function that may be used to stop listening\n */\n listen(listener: Listener): () => void;\n}\n\ntype HistoryState = {\n usr: any;\n key?: string;\n idx: number;\n};\n\nconst PopStateEventType = \"popstate\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Memory History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A user-supplied object that describes a location. Used when providing\n * entries to `createMemoryHistory` via its `initialEntries` option.\n */\nexport type InitialEntry = string | Partial;\n\nexport type MemoryHistoryOptions = {\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n v5Compat?: boolean;\n};\n\n/**\n * A memory history stores locations in memory. This is useful in stateful\n * environments where there is no web browser, such as node tests or React\n * Native.\n */\nexport interface MemoryHistory extends History {\n /**\n * The current index in the history stack.\n */\n readonly index: number;\n}\n\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nexport function createMemoryHistory(\n options: MemoryHistoryOptions = {}\n): MemoryHistory {\n let { initialEntries = [\"/\"], initialIndex, v5Compat = false } = options;\n let entries: Location[]; // Declare so we can access from createMemoryLocation\n entries = initialEntries.map((entry, index) =>\n createMemoryLocation(\n entry,\n typeof entry === \"string\" ? null : entry.state,\n index === 0 ? \"default\" : undefined\n )\n );\n let index = clampIndex(\n initialIndex == null ? entries.length - 1 : initialIndex\n );\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n function clampIndex(n: number): number {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation(): Location {\n return entries[index];\n }\n function createMemoryLocation(\n to: To,\n state: any = null,\n key?: string\n ): Location {\n let location = createLocation(\n entries ? getCurrentLocation().pathname : \"/\",\n to,\n state,\n key\n );\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in memory history: ${JSON.stringify(\n to\n )}`\n );\n return location;\n }\n\n function createHref(to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n let history: MemoryHistory = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref,\n createURL(to) {\n return new URL(createHref(to), \"http://localhost\");\n },\n encodeLocation(to: To) {\n let path = typeof to === \"string\" ? parsePath(to) : to;\n return {\n pathname: path.pathname || \"\",\n search: path.search || \"\",\n hash: path.hash || \"\",\n };\n },\n push(to, state) {\n action = Action.Push;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 1 });\n }\n },\n replace(to, state) {\n action = Action.Replace;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 0 });\n }\n },\n go(delta) {\n action = Action.Pop;\n let nextIndex = clampIndex(index + delta);\n let nextLocation = entries[nextIndex];\n index = nextIndex;\n if (listener) {\n listener({ action, location: nextLocation, delta });\n }\n },\n listen(fn: Listener) {\n listener = fn;\n return () => {\n listener = null;\n };\n },\n };\n\n return history;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Browser History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A browser history stores the current location in regular URLs in a web\n * browser environment. This is the standard for most web apps and provides the\n * cleanest URLs the browser's address bar.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#browserhistory\n */\nexport interface BrowserHistory extends UrlHistory {}\n\nexport type BrowserHistoryOptions = UrlHistoryOptions;\n\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nexport function createBrowserHistory(\n options: BrowserHistoryOptions = {}\n): BrowserHistory {\n function createBrowserLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let { pathname, search, hash } = window.location;\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createBrowserHref(window: Window, to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n return getUrlBasedHistory(\n createBrowserLocation,\n createBrowserHref,\n null,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hash History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A hash history stores the current location in the fragment identifier portion\n * of the URL in a web browser environment.\n *\n * This is ideal for apps that do not control the server for some reason\n * (because the fragment identifier is never sent to the server), including some\n * shared hosting environments that do not provide fine-grained controls over\n * which pages are served at which URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#hashhistory\n */\nexport interface HashHistory extends UrlHistory {}\n\nexport type HashHistoryOptions = UrlHistoryOptions;\n\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nexport function createHashHistory(\n options: HashHistoryOptions = {}\n): HashHistory {\n function createHashLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n } = parsePath(window.location.hash.substr(1));\n\n // Hash URL should always have a leading / just like window.location.pathname\n // does, so if an app ends up at a route like /#something then we add a\n // leading slash so all of our path-matching behaves the same as if it would\n // in a browser router. This is particularly important when there exists a\n // root splat route () since that matches internally against\n // \"/*\" and we'd expect /#something to 404 in a hash router app.\n if (!pathname.startsWith(\"/\") && !pathname.startsWith(\".\")) {\n pathname = \"/\" + pathname;\n }\n\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createHashHref(window: Window, to: To) {\n let base = window.document.querySelector(\"base\");\n let href = \"\";\n\n if (base && base.getAttribute(\"href\")) {\n let url = window.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n\n function validateHashLocation(location: Location, to: To) {\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in hash history.push(${JSON.stringify(\n to\n )})`\n );\n }\n\n return getUrlBasedHistory(\n createHashLocation,\n createHashHref,\n validateHashLocation,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region UTILS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * @private\n */\nexport function invariant(value: boolean, message?: string): asserts value;\nexport function invariant(\n value: T | null | undefined,\n message?: string\n): asserts value is T;\nexport function invariant(value: any, message?: string) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\n\nexport function warning(cond: any, message: string) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience, so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location: Location, index: number): HistoryState {\n return {\n usr: location.state,\n key: location.key,\n idx: index,\n };\n}\n\n/**\n * Creates a Location object with a unique key from the given Path\n */\nexport function createLocation(\n current: string | Location,\n to: To,\n state: any = null,\n key?: string\n): Readonly {\n let location: Readonly = {\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\",\n ...(typeof to === \"string\" ? parsePath(to) : to),\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: (to && (to as Location).key) || key || createKey(),\n };\n return location;\n}\n\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nexport function createPath({\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n}: Partial) {\n if (search && search !== \"?\")\n pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\")\n pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\n\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nexport function parsePath(path: string): Partial {\n let parsedPath: Partial = {};\n\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n\n if (path) {\n parsedPath.pathname = path;\n }\n }\n\n return parsedPath;\n}\n\nexport interface UrlHistory extends History {}\n\nexport type UrlHistoryOptions = {\n window?: Window;\n v5Compat?: boolean;\n};\n\nfunction getUrlBasedHistory(\n getLocation: (window: Window, globalHistory: Window[\"history\"]) => Location,\n createHref: (window: Window, to: To) => string,\n validateLocation: ((location: Location, to: To) => void) | null,\n options: UrlHistoryOptions = {}\n): UrlHistory {\n let { window = document.defaultView!, v5Compat = false } = options;\n let globalHistory = window.history;\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n let index = getIndex()!;\n // Index should only be null when we initialize. If not, it's because the\n // user called history.pushState or history.replaceState directly, in which\n // case we should log a warning as it will result in bugs.\n if (index == null) {\n index = 0;\n globalHistory.replaceState({ ...globalHistory.state, idx: index }, \"\");\n }\n\n function getIndex(): number {\n let state = globalHistory.state || { idx: null };\n return state.idx;\n }\n\n function handlePop() {\n action = Action.Pop;\n let nextIndex = getIndex();\n let delta = nextIndex == null ? null : nextIndex - index;\n index = nextIndex;\n if (listener) {\n listener({ action, location: history.location, delta });\n }\n }\n\n function push(to: To, state?: any) {\n action = Action.Push;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex() + 1;\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n\n // try...catch because iOS limits us to 100 pushState calls :/\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n // If the exception is because `state` can't be serialized, let that throw\n // outwards just like a replace call would so the dev knows the cause\n // https://html.spec.whatwg.org/multipage/nav-history-apis.html#shared-history-push/replace-state-steps\n // https://html.spec.whatwg.org/multipage/structured-data.html#structuredserializeinternal\n if (error instanceof DOMException && error.name === \"DataCloneError\") {\n throw error;\n }\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 1 });\n }\n }\n\n function replace(to: To, state?: any) {\n action = Action.Replace;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex();\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 0 });\n }\n }\n\n function createURL(to: To): URL {\n // window.location.origin is \"null\" (the literal string value) in Firefox\n // under certain conditions, notably when serving from a local HTML file\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n let base =\n window.location.origin !== \"null\"\n ? window.location.origin\n : window.location.href;\n\n let href = typeof to === \"string\" ? to : createPath(to);\n // Treating this as a full URL will strip any trailing spaces so we need to\n // pre-encode them since they might be part of a matching splat param from\n // an ancestor route\n href = href.replace(/ $/, \"%20\");\n invariant(\n base,\n `No window.location.(origin|href) available to create URL for href: ${href}`\n );\n return new URL(href, base);\n }\n\n let history: History = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window, globalHistory);\n },\n listen(fn: Listener) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n\n return () => {\n window.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref(window, to);\n },\n createURL,\n encodeLocation(to) {\n // Encode a Location the same way window.location would\n let url = createURL(to);\n return {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash,\n };\n },\n push,\n replace,\n go(n) {\n return globalHistory.go(n);\n },\n };\n\n return history;\n}\n\n//#endregion\n","import type { Location, Path, To } from \"./history\";\nimport { invariant, parsePath, warning } from \"./history\";\n\n/**\n * Map of routeId -> data returned from a loader/action/error\n */\nexport interface RouteData {\n [routeId: string]: any;\n}\n\nexport enum ResultType {\n data = \"data\",\n deferred = \"deferred\",\n redirect = \"redirect\",\n error = \"error\",\n}\n\n/**\n * Successful result from a loader or action\n */\nexport interface SuccessResult {\n type: ResultType.data;\n data: unknown;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Successful defer() result from a loader or action\n */\nexport interface DeferredResult {\n type: ResultType.deferred;\n deferredData: DeferredData;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Redirect result from a loader or action\n */\nexport interface RedirectResult {\n type: ResultType.redirect;\n // We keep the raw Response for redirects so we can return it verbatim\n response: Response;\n}\n\n/**\n * Unsuccessful result from a loader or action\n */\nexport interface ErrorResult {\n type: ResultType.error;\n error: unknown;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Result from a loader or action - potentially successful or unsuccessful\n */\nexport type DataResult =\n | SuccessResult\n | DeferredResult\n | RedirectResult\n | ErrorResult;\n\ntype LowerCaseFormMethod = \"get\" | \"post\" | \"put\" | \"patch\" | \"delete\";\ntype UpperCaseFormMethod = Uppercase;\n\n/**\n * Users can specify either lowercase or uppercase form methods on `
`,\n * useSubmit(), ``, etc.\n */\nexport type HTMLFormMethod = LowerCaseFormMethod | UpperCaseFormMethod;\n\n/**\n * Active navigation/fetcher form methods are exposed in lowercase on the\n * RouterState\n */\nexport type FormMethod = LowerCaseFormMethod;\nexport type MutationFormMethod = Exclude;\n\n/**\n * In v7, active navigation/fetcher form methods are exposed in uppercase on the\n * RouterState. This is to align with the normalization done via fetch().\n */\nexport type V7_FormMethod = UpperCaseFormMethod;\nexport type V7_MutationFormMethod = Exclude;\n\nexport type FormEncType =\n | \"application/x-www-form-urlencoded\"\n | \"multipart/form-data\"\n | \"application/json\"\n | \"text/plain\";\n\n// Thanks https://github.com/sindresorhus/type-fest!\ntype JsonObject = { [Key in string]: JsonValue } & {\n [Key in string]?: JsonValue | undefined;\n};\ntype JsonArray = JsonValue[] | readonly JsonValue[];\ntype JsonPrimitive = string | number | boolean | null;\ntype JsonValue = JsonPrimitive | JsonObject | JsonArray;\n\n/**\n * @private\n * Internal interface to pass around for action submissions, not intended for\n * external consumption\n */\nexport type Submission =\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n json: undefined;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: JsonValue;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: undefined;\n text: string;\n };\n\n/**\n * @private\n * Arguments passed to route loader/action functions. Same for now but we keep\n * this as a private implementation detail in case they diverge in the future.\n */\ninterface DataFunctionArgs {\n request: Request;\n params: Params;\n context?: Context;\n}\n\n// TODO: (v7) Change the defaults from any to unknown in and remove Remix wrappers:\n// ActionFunction, ActionFunctionArgs, LoaderFunction, LoaderFunctionArgs\n// Also, make them a type alias instead of an interface\n\n/**\n * Arguments passed to loader functions\n */\nexport interface LoaderFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Arguments passed to action functions\n */\nexport interface ActionFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Loaders and actions can return anything except `undefined` (`null` is a\n * valid return value if there is no data to return). Responses are preferred\n * and will ease any future migration to Remix\n */\ntype DataFunctionValue = Response | NonNullable | null;\n\ntype DataFunctionReturnValue = Promise | DataFunctionValue;\n\n/**\n * Route loader function signature\n */\nexport type LoaderFunction = {\n (\n args: LoaderFunctionArgs,\n handlerCtx?: unknown\n ): DataFunctionReturnValue;\n} & { hydrate?: boolean };\n\n/**\n * Route action function signature\n */\nexport interface ActionFunction {\n (\n args: ActionFunctionArgs,\n handlerCtx?: unknown\n ): DataFunctionReturnValue;\n}\n\n/**\n * Arguments passed to shouldRevalidate function\n */\nexport interface ShouldRevalidateFunctionArgs {\n currentUrl: URL;\n currentParams: AgnosticDataRouteMatch[\"params\"];\n nextUrl: URL;\n nextParams: AgnosticDataRouteMatch[\"params\"];\n formMethod?: Submission[\"formMethod\"];\n formAction?: Submission[\"formAction\"];\n formEncType?: Submission[\"formEncType\"];\n text?: Submission[\"text\"];\n formData?: Submission[\"formData\"];\n json?: Submission[\"json\"];\n actionStatus?: number;\n actionResult?: any;\n defaultShouldRevalidate: boolean;\n}\n\n/**\n * Route shouldRevalidate function signature. This runs after any submission\n * (navigation or fetcher), so we flatten the navigation/fetcher submission\n * onto the arguments. It shouldn't matter whether it came from a navigation\n * or a fetcher, what really matters is the URLs and the formData since loaders\n * have to re-run based on the data models that were potentially mutated.\n */\nexport interface ShouldRevalidateFunction {\n (args: ShouldRevalidateFunctionArgs): boolean;\n}\n\n/**\n * Function provided by the framework-aware layers to set `hasErrorBoundary`\n * from the framework-aware `errorElement` prop\n *\n * @deprecated Use `mapRouteProperties` instead\n */\nexport interface DetectErrorBoundaryFunction {\n (route: AgnosticRouteObject): boolean;\n}\n\nexport interface DataStrategyMatch\n extends AgnosticRouteMatch {\n shouldLoad: boolean;\n resolve: (\n handlerOverride?: (\n handler: (ctx?: unknown) => DataFunctionReturnValue\n ) => DataFunctionReturnValue\n ) => Promise;\n}\n\nexport interface DataStrategyFunctionArgs\n extends DataFunctionArgs {\n matches: DataStrategyMatch[];\n fetcherKey: string | null;\n}\n\n/**\n * Result from a loader or action called via dataStrategy\n */\nexport interface DataStrategyResult {\n type: \"data\" | \"error\";\n result: unknown; // data, Error, Response, DeferredData, DataWithResponseInit\n}\n\nexport interface DataStrategyFunction {\n (args: DataStrategyFunctionArgs): Promise>;\n}\n\nexport interface AgnosticPatchRoutesOnNavigationFunction<\n M extends AgnosticRouteMatch = AgnosticRouteMatch\n> {\n (opts: {\n path: string;\n matches: M[];\n patch: (routeId: string | null, children: AgnosticRouteObject[]) => void;\n }): void | Promise;\n}\n\n/**\n * Function provided by the framework-aware layers to set any framework-specific\n * properties from framework-agnostic properties\n */\nexport interface MapRoutePropertiesFunction {\n (route: AgnosticRouteObject): {\n hasErrorBoundary: boolean;\n } & Record;\n}\n\n/**\n * Keys we cannot change from within a lazy() function. We spread all other keys\n * onto the route. Either they're meaningful to the router, or they'll get\n * ignored.\n */\nexport type ImmutableRouteKey =\n | \"lazy\"\n | \"caseSensitive\"\n | \"path\"\n | \"id\"\n | \"index\"\n | \"children\";\n\nexport const immutableRouteKeys = new Set([\n \"lazy\",\n \"caseSensitive\",\n \"path\",\n \"id\",\n \"index\",\n \"children\",\n]);\n\ntype RequireOne = Exclude<\n {\n [K in keyof T]: K extends Key ? Omit & Required> : never;\n }[keyof T],\n undefined\n>;\n\n/**\n * lazy() function to load a route definition, which can add non-matching\n * related properties to a route\n */\nexport interface LazyRouteFunction {\n (): Promise>>;\n}\n\n/**\n * Base RouteObject with common props shared by all types of routes\n */\ntype AgnosticBaseRouteObject = {\n caseSensitive?: boolean;\n path?: string;\n id?: string;\n loader?: LoaderFunction | boolean;\n action?: ActionFunction | boolean;\n hasErrorBoundary?: boolean;\n shouldRevalidate?: ShouldRevalidateFunction;\n handle?: any;\n lazy?: LazyRouteFunction;\n};\n\n/**\n * Index routes must not have children\n */\nexport type AgnosticIndexRouteObject = AgnosticBaseRouteObject & {\n children?: undefined;\n index: true;\n};\n\n/**\n * Non-index routes may have children, but cannot have index\n */\nexport type AgnosticNonIndexRouteObject = AgnosticBaseRouteObject & {\n children?: AgnosticRouteObject[];\n index?: false;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport type AgnosticRouteObject =\n | AgnosticIndexRouteObject\n | AgnosticNonIndexRouteObject;\n\nexport type AgnosticDataIndexRouteObject = AgnosticIndexRouteObject & {\n id: string;\n};\n\nexport type AgnosticDataNonIndexRouteObject = AgnosticNonIndexRouteObject & {\n children?: AgnosticDataRouteObject[];\n id: string;\n};\n\n/**\n * A data route object, which is just a RouteObject with a required unique ID\n */\nexport type AgnosticDataRouteObject =\n | AgnosticDataIndexRouteObject\n | AgnosticDataNonIndexRouteObject;\n\nexport type RouteManifest = Record;\n\n// Recursive helper for finding path parameters in the absence of wildcards\ntype _PathParam =\n // split path into individual path segments\n Path extends `${infer L}/${infer R}`\n ? _PathParam | _PathParam\n : // find params after `:`\n Path extends `:${infer Param}`\n ? Param extends `${infer Optional}?`\n ? Optional\n : Param\n : // otherwise, there aren't any params present\n never;\n\n/**\n * Examples:\n * \"/a/b/*\" -> \"*\"\n * \":a\" -> \"a\"\n * \"/a/:b\" -> \"b\"\n * \"/a/blahblahblah:b\" -> \"b\"\n * \"/:a/:b\" -> \"a\" | \"b\"\n * \"/:a/b/:c/*\" -> \"a\" | \"c\" | \"*\"\n */\nexport type PathParam =\n // check if path is just a wildcard\n Path extends \"*\" | \"/*\"\n ? \"*\"\n : // look for wildcard at the end of the path\n Path extends `${infer Rest}/*`\n ? \"*\" | _PathParam\n : // look for params in the absence of wildcards\n _PathParam;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise, return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\nexport type ParamParseKey =\n // if you could not find path params, fallback to `string`\n [PathParam] extends [never] ? string : PathParam;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface AgnosticRouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObjectType;\n}\n\nexport interface AgnosticDataRouteMatch\n extends AgnosticRouteMatch {}\n\nfunction isIndexRoute(\n route: AgnosticRouteObject\n): route is AgnosticIndexRouteObject {\n return route.index === true;\n}\n\n// Walk the route tree generating unique IDs where necessary, so we are working\n// solely with AgnosticDataRouteObject's within the Router\nexport function convertRoutesToDataRoutes(\n routes: AgnosticRouteObject[],\n mapRouteProperties: MapRoutePropertiesFunction,\n parentPath: string[] = [],\n manifest: RouteManifest = {}\n): AgnosticDataRouteObject[] {\n return routes.map((route, index) => {\n let treePath = [...parentPath, String(index)];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(\n route.index !== true || !route.children,\n `Cannot specify children on an index route`\n );\n invariant(\n !manifest[id],\n `Found a route id collision on id \"${id}\". Route ` +\n \"id's must be globally unique within Data Router usages\"\n );\n\n if (isIndexRoute(route)) {\n let indexRoute: AgnosticDataIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n };\n manifest[id] = indexRoute;\n return indexRoute;\n } else {\n let pathOrLayoutRoute: AgnosticDataNonIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n children: undefined,\n };\n manifest[id] = pathOrLayoutRoute;\n\n if (route.children) {\n pathOrLayoutRoute.children = convertRoutesToDataRoutes(\n route.children,\n mapRouteProperties,\n treePath,\n manifest\n );\n }\n\n return pathOrLayoutRoute;\n }\n });\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/utils/match-routes\n */\nexport function matchRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial | string,\n basename = \"/\"\n): AgnosticRouteMatch[] | null {\n return matchRoutesImpl(routes, locationArg, basename, false);\n}\n\nexport function matchRoutesImpl<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial | string,\n basename: string,\n allowPartial: boolean\n): AgnosticRouteMatch[] | null {\n let location =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n let pathname = stripBasename(location.pathname || \"/\", basename);\n\n if (pathname == null) {\n return null;\n }\n\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n // Incoming pathnames are generally encoded from either window.location\n // or from router.navigate, but we want to match against the unencoded\n // paths in the route definitions. Memory router locations won't be\n // encoded here but there also shouldn't be anything to decode so this\n // should be a safe operation. This avoids needing matchRoutes to be\n // history-aware.\n let decoded = decodePath(pathname);\n matches = matchRouteBranch(\n branches[i],\n decoded,\n allowPartial\n );\n }\n\n return matches;\n}\n\nexport interface UIMatch {\n id: string;\n pathname: string;\n params: AgnosticRouteMatch[\"params\"];\n data: Data;\n handle: Handle;\n}\n\nexport function convertRouteMatchToUiMatch(\n match: AgnosticDataRouteMatch,\n loaderData: RouteData\n): UIMatch {\n let { route, pathname, params } = match;\n return {\n id: route.id,\n pathname,\n params,\n data: loaderData[route.id],\n handle: route.handle,\n };\n}\n\ninterface RouteMeta<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObjectType;\n}\n\ninterface RouteBranch<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n path: string;\n score: number;\n routesMeta: RouteMeta[];\n}\n\nfunction flattenRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n branches: RouteBranch[] = [],\n parentsMeta: RouteMeta[] = [],\n parentPath = \"\"\n): RouteBranch[] {\n let flattenRoute = (\n route: RouteObjectType,\n index: number,\n relativePath?: string\n ) => {\n let meta: RouteMeta = {\n relativePath:\n relativePath === undefined ? route.path || \"\" : relativePath,\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route,\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array, so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n // Our types know better, but runtime JS may not!\n // @ts-expect-error\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({\n path,\n score: computeScore(path, route.index),\n routesMeta,\n });\n };\n routes.forEach((route, index) => {\n // coarse-grain check for optional params\n if (route.path === \"\" || !route.path?.includes(\"?\")) {\n flattenRoute(route, index);\n } else {\n for (let exploded of explodeOptionalSegments(route.path)) {\n flattenRoute(route, index, exploded);\n }\n }\n });\n\n return branches;\n}\n\n/**\n * Computes all combinations of optional path segments for a given path,\n * excluding combinations that are ambiguous and of lower priority.\n *\n * For example, `/one/:two?/three/:four?/:five?` explodes to:\n * - `/one/three`\n * - `/one/:two/three`\n * - `/one/three/:four`\n * - `/one/three/:five`\n * - `/one/:two/three/:four`\n * - `/one/:two/three/:five`\n * - `/one/three/:four/:five`\n * - `/one/:two/three/:four/:five`\n */\nfunction explodeOptionalSegments(path: string): string[] {\n let segments = path.split(\"/\");\n if (segments.length === 0) return [];\n\n let [first, ...rest] = segments;\n\n // Optional path segments are denoted by a trailing `?`\n let isOptional = first.endsWith(\"?\");\n // Compute the corresponding required segment: `foo?` -> `foo`\n let required = first.replace(/\\?$/, \"\");\n\n if (rest.length === 0) {\n // Intepret empty string as omitting an optional segment\n // `[\"one\", \"\", \"three\"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`\n return isOptional ? [required, \"\"] : [required];\n }\n\n let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n\n let result: string[] = [];\n\n // All child paths with the prefix. Do this for all children before the\n // optional version for all children, so we get consistent ordering where the\n // parent optional aspect is preferred as required. Otherwise, we can get\n // child sections interspersed where deeper optional segments are higher than\n // parent optional segments, where for example, /:two would explode _earlier_\n // then /:one. By always including the parent as required _for all children_\n // first, we avoid this issue\n result.push(\n ...restExploded.map((subpath) =>\n subpath === \"\" ? required : [required, subpath].join(\"/\")\n )\n );\n\n // Then, if this is an optional value, add all child versions without\n if (isOptional) {\n result.push(...restExploded);\n }\n\n // for absolute paths, ensure `/` instead of empty segment\n return result.map((exploded) =>\n path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded\n );\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:[\\w-]+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter((s) => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n branch: RouteBranch,\n pathname: string,\n allowPartial = false\n): AgnosticRouteMatch[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: AgnosticRouteMatch[] = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname =\n matchedPathname === \"/\"\n ? pathname\n : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n\n let route = meta.route;\n\n if (\n !match &&\n end &&\n allowPartial &&\n !routesMeta[routesMeta.length - 1].route.index\n ) {\n match = matchPath(\n {\n path: meta.relativePath,\n caseSensitive: meta.caseSensitive,\n end: false,\n },\n remainingPathname\n );\n }\n\n if (!match) {\n return null;\n }\n\n Object.assign(matchedParams, match.params);\n\n matches.push({\n // TODO: Can this as be avoided?\n params: matchedParams as Params,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route,\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n\n return matches;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/utils/generate-path\n */\nexport function generatePath(\n originalPath: Path,\n params: {\n [key in PathParam]: string | null;\n } = {} as any\n): string {\n let path: string = originalPath;\n if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n warning(\n false,\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n path = path.replace(/\\*$/, \"/*\") as Path;\n }\n\n // ensure `/` is added at the beginning if the path is absolute\n const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n\n const stringify = (p: any) =>\n p == null ? \"\" : typeof p === \"string\" ? p : String(p);\n\n const segments = path\n .split(/\\/+/)\n .map((segment, index, array) => {\n const isLastSegment = index === array.length - 1;\n\n // only apply the splat if it's the last segment\n if (isLastSegment && segment === \"*\") {\n const star = \"*\" as PathParam;\n // Apply the splat\n return stringify(params[star]);\n }\n\n const keyMatch = segment.match(/^:([\\w-]+)(\\??)$/);\n if (keyMatch) {\n const [, key, optional] = keyMatch;\n let param = params[key as PathParam];\n invariant(optional === \"?\" || param != null, `Missing \":${key}\" param`);\n return stringify(param);\n }\n\n // Remove any optional markers from optional static segments\n return segment.replace(/\\?$/g, \"\");\n })\n // Remove empty segments\n .filter((segment) => !!segment);\n\n return prefix + segments.join(\"/\");\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern {\n /**\n * A string to match against a URL pathname. May contain `:id`-style segments\n * to indicate placeholders for dynamic parameters. May also end with `/*` to\n * indicate matching the rest of the URL pathname.\n */\n path: Path;\n /**\n * Should be `true` if the static portions of the `path` should be matched in\n * the same case.\n */\n caseSensitive?: boolean;\n /**\n * Should be `true` if this pattern should match the entire URL pathname.\n */\n end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The pattern that was used to match.\n */\n pattern: PathPattern;\n}\n\ntype Mutable = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/utils/match-path\n */\nexport function matchPath<\n ParamKey extends ParamParseKey,\n Path extends string\n>(\n pattern: PathPattern | Path,\n pathname: string\n): PathMatch | null {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n\n let [matcher, compiledParams] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n\n let match = pathname.match(matcher);\n if (!match) return null;\n\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params: Params = compiledParams.reduce>(\n (memo, { paramName, isOptional }, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname\n .slice(0, matchedPathname.length - splatValue.length)\n .replace(/(.)\\/+$/, \"$1\");\n }\n\n const value = captureGroups[index];\n if (isOptional && !value) {\n memo[paramName] = undefined;\n } else {\n memo[paramName] = (value || \"\").replace(/%2F/g, \"/\");\n }\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\ntype CompiledPathParam = { paramName: string; isOptional?: boolean };\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, CompiledPathParam[]] {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n\n let params: CompiledPathParam[] = [];\n let regexpSource =\n \"^\" +\n path\n .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^${}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(\n /\\/:([\\w-]+)(\\?)?/g,\n (_: string, paramName: string, isOptional) => {\n params.push({ paramName, isOptional: isOptional != null });\n return isOptional ? \"/?([^\\\\/]+)?\" : \"/([^\\\\/]+)\";\n }\n );\n\n if (path.endsWith(\"*\")) {\n params.push({ paramName: \"*\" });\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else if (end) {\n // When matching to the end, ignore trailing slashes\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n // If our path is non-empty and contains anything beyond an initial slash,\n // then we have _some_ form of path in our regex, so we should expect to\n // match only if we find the end of this path segment. Look for an optional\n // non-captured trailing slash (to match a portion of the URL) or the end\n // of the path (if we've matched to the end). We used to do this with a\n // word boundary but that gives false positives on routes like\n // /user-preferences since `-` counts as a word boundary.\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else {\n // Nothing to match for \"\" or \"/\"\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, params];\n}\n\nexport function decodePath(value: string) {\n try {\n return value\n .split(\"/\")\n .map((v) => decodeURIComponent(v).replace(/\\//g, \"%2F\"))\n .join(\"/\");\n } catch (error) {\n warning(\n false,\n `The URL path \"${value}\" could not be decoded because it is is a ` +\n `malformed URL segment. This is probably due to a bad percent ` +\n `encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * @private\n */\nexport function stripBasename(\n pathname: string,\n basename: string\n): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n let startIndex = basename.endsWith(\"/\")\n ? basename.length - 1\n : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(startIndex) || \"/\";\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/utils/resolve-path\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\",\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash),\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach((segment) => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nfunction getInvalidPathError(\n char: string,\n field: string,\n dest: string,\n path: Partial\n) {\n return (\n `Cannot include a '${char}' character in a manually specified ` +\n `\\`to.${field}\\` field [${JSON.stringify(\n path\n )}]. Please separate it out to the ` +\n `\\`to.${dest}\\` field. Alternatively you may provide the full path as ` +\n `a string in and the router will parse it for you.`\n );\n}\n\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same. Both of the following examples should link back to the root:\n *\n * \n * \n * \n *\n * \n * \n * }> // <-- Does not contribute\n * // <-- Does not contribute\n * \n * \n */\nexport function getPathContributingMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[]) {\n return matches.filter(\n (match, index) =>\n index === 0 || (match.route.path && match.route.path.length > 0)\n );\n}\n\n// Return the array of pathnames for the current route matches - used to\n// generate the routePathnames input for resolveTo()\nexport function getResolveToMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[], v7_relativeSplatPath: boolean) {\n let pathMatches = getPathContributingMatches(matches);\n\n // When v7_relativeSplatPath is enabled, use the full pathname for the leaf\n // match so we include splat values for \".\" links. See:\n // https://github.com/remix-run/react-router/issues/11052#issuecomment-1836589329\n if (v7_relativeSplatPath) {\n return pathMatches.map((match, idx) =>\n idx === pathMatches.length - 1 ? match.pathname : match.pathnameBase\n );\n }\n\n return pathMatches.map((match) => match.pathnameBase);\n}\n\n/**\n * @private\n */\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string,\n isPathRelative = false\n): Path {\n let to: Partial;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = { ...toArg };\n\n invariant(\n !to.pathname || !to.pathname.includes(\"?\"),\n getInvalidPathError(\"?\", \"pathname\", \"search\", to)\n );\n invariant(\n !to.pathname || !to.pathname.includes(\"#\"),\n getInvalidPathError(\"#\", \"pathname\", \"hash\", to)\n );\n invariant(\n !to.search || !to.search.includes(\"#\"),\n getInvalidPathError(\"#\", \"search\", \"hash\", to)\n );\n }\n\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n\n let from: string;\n\n // Routing is relative to the current pathname if explicitly requested.\n //\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n if (toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n // With relative=\"route\" (the default), each leading .. segment means\n // \"go up one route\" instead of \"go up one URL segment\". This is a key\n // difference from how works and a major reason we call this a\n // \"to\" value instead of a \"href\".\n if (!isPathRelative && toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from);\n\n // Ensure the pathname has a trailing slash if the original \"to\" had one\n let hasExplicitTrailingSlash =\n toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n // Or if this was a link to the current path which has a trailing slash\n let hasCurrentTrailingSlash =\n (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (\n !path.pathname.endsWith(\"/\") &&\n (hasExplicitTrailingSlash || hasCurrentTrailingSlash)\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\n/**\n * @private\n */\nexport function getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\n/**\n * @private\n */\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\n/**\n * @private\n */\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\n/**\n * @private\n */\nexport const normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\n/**\n * @private\n */\nexport const normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n\nexport type JsonFunction = (\n data: Data,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n */\nexport const json: JsonFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n let headers = new Headers(responseInit.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n\n return new Response(JSON.stringify(data), {\n ...responseInit,\n headers,\n });\n};\n\nexport class DataWithResponseInit {\n type: string = \"DataWithResponseInit\";\n data: D;\n init: ResponseInit | null;\n\n constructor(data: D, init?: ResponseInit) {\n this.data = data;\n this.init = init || null;\n }\n}\n\n/**\n * Create \"responses\" that contain `status`/`headers` without forcing\n * serialization into an actual `Response` - used by Remix single fetch\n */\nexport function data(data: D, init?: number | ResponseInit) {\n return new DataWithResponseInit(\n data,\n typeof init === \"number\" ? { status: init } : init\n );\n}\n\nexport interface TrackedPromise extends Promise {\n _tracked?: boolean;\n _data?: any;\n _error?: any;\n}\n\nexport class AbortedDeferredError extends Error {}\n\nexport class DeferredData {\n private pendingKeysSet: Set = new Set();\n private controller: AbortController;\n private abortPromise: Promise;\n private unlistenAbortSignal: () => void;\n private subscribers: Set<(aborted: boolean, settledKey?: string) => void> =\n new Set();\n data: Record;\n init?: ResponseInit;\n deferredKeys: string[] = [];\n\n constructor(data: Record, responseInit?: ResponseInit) {\n invariant(\n data && typeof data === \"object\" && !Array.isArray(data),\n \"defer() only accepts plain objects\"\n );\n\n // Set up an AbortController + Promise we can race against to exit early\n // cancellation\n let reject: (e: AbortedDeferredError) => void;\n this.abortPromise = new Promise((_, r) => (reject = r));\n this.controller = new AbortController();\n let onAbort = () =>\n reject(new AbortedDeferredError(\"Deferred data aborted\"));\n this.unlistenAbortSignal = () =>\n this.controller.signal.removeEventListener(\"abort\", onAbort);\n this.controller.signal.addEventListener(\"abort\", onAbort);\n\n this.data = Object.entries(data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: this.trackPromise(key, value),\n }),\n {}\n );\n\n if (this.done) {\n // All incoming values were resolved\n this.unlistenAbortSignal();\n }\n\n this.init = responseInit;\n }\n\n private trackPromise(\n key: string,\n value: Promise | unknown\n ): TrackedPromise | unknown {\n if (!(value instanceof Promise)) {\n return value;\n }\n\n this.deferredKeys.push(key);\n this.pendingKeysSet.add(key);\n\n // We store a little wrapper promise that will be extended with\n // _data/_error props upon resolve/reject\n let promise: TrackedPromise = Promise.race([value, this.abortPromise]).then(\n (data) => this.onSettle(promise, key, undefined, data as unknown),\n (error) => this.onSettle(promise, key, error as unknown)\n );\n\n // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n promise.catch(() => {});\n\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n return promise;\n }\n\n private onSettle(\n promise: TrackedPromise,\n key: string,\n error: unknown,\n data?: unknown\n ): unknown {\n if (\n this.controller.signal.aborted &&\n error instanceof AbortedDeferredError\n ) {\n this.unlistenAbortSignal();\n Object.defineProperty(promise, \"_error\", { get: () => error });\n return Promise.reject(error);\n }\n\n this.pendingKeysSet.delete(key);\n\n if (this.done) {\n // Nothing left to abort!\n this.unlistenAbortSignal();\n }\n\n // If the promise was resolved/rejected with undefined, we'll throw an error as you\n // should always resolve with a value or null\n if (error === undefined && data === undefined) {\n let undefinedError = new Error(\n `Deferred data for key \"${key}\" resolved/rejected with \\`undefined\\`, ` +\n `you must resolve/reject with a value or \\`null\\`.`\n );\n Object.defineProperty(promise, \"_error\", { get: () => undefinedError });\n this.emit(false, key);\n return Promise.reject(undefinedError);\n }\n\n if (data === undefined) {\n Object.defineProperty(promise, \"_error\", { get: () => error });\n this.emit(false, key);\n return Promise.reject(error);\n }\n\n Object.defineProperty(promise, \"_data\", { get: () => data });\n this.emit(false, key);\n return data;\n }\n\n private emit(aborted: boolean, settledKey?: string) {\n this.subscribers.forEach((subscriber) => subscriber(aborted, settledKey));\n }\n\n subscribe(fn: (aborted: boolean, settledKey?: string) => void) {\n this.subscribers.add(fn);\n return () => this.subscribers.delete(fn);\n }\n\n cancel() {\n this.controller.abort();\n this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));\n this.emit(true);\n }\n\n async resolveData(signal: AbortSignal) {\n let aborted = false;\n if (!this.done) {\n let onAbort = () => this.cancel();\n signal.addEventListener(\"abort\", onAbort);\n aborted = await new Promise((resolve) => {\n this.subscribe((aborted) => {\n signal.removeEventListener(\"abort\", onAbort);\n if (aborted || this.done) {\n resolve(aborted);\n }\n });\n });\n }\n return aborted;\n }\n\n get done() {\n return this.pendingKeysSet.size === 0;\n }\n\n get unwrappedData() {\n invariant(\n this.data !== null && this.done,\n \"Can only unwrap data on initialized and settled deferreds\"\n );\n\n return Object.entries(this.data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: unwrapTrackedPromise(value),\n }),\n {}\n );\n }\n\n get pendingKeys() {\n return Array.from(this.pendingKeysSet);\n }\n}\n\nfunction isTrackedPromise(value: any): value is TrackedPromise {\n return (\n value instanceof Promise && (value as TrackedPromise)._tracked === true\n );\n}\n\nfunction unwrapTrackedPromise(value: any) {\n if (!isTrackedPromise(value)) {\n return value;\n }\n\n if (value._error) {\n throw value._error;\n }\n return value._data;\n}\n\nexport type DeferFunction = (\n data: Record,\n init?: number | ResponseInit\n) => DeferredData;\n\nexport const defer: DeferFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n return new DeferredData(data, responseInit);\n};\n\nexport type RedirectFunction = (\n url: string,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirect: RedirectFunction = (url, init = 302) => {\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = { status: responseInit };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n\n return new Response(null, {\n ...responseInit,\n headers,\n });\n};\n\n/**\n * A redirect response that will force a document reload to the new location.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirectDocument: RedirectFunction = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Reload-Document\", \"true\");\n return response;\n};\n\n/**\n * A redirect response that will perform a `history.replaceState` instead of a\n * `history.pushState` for client-side navigation redirects.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const replace: RedirectFunction = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Replace\", \"true\");\n return response;\n};\n\nexport type ErrorResponse = {\n status: number;\n statusText: string;\n data: any;\n};\n\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n *\n * We don't export the class for public use since it's an implementation\n * detail, but we export the interface above so folks can build their own\n * abstractions around instances via isRouteErrorResponse()\n */\nexport class ErrorResponseImpl implements ErrorResponse {\n status: number;\n statusText: string;\n data: any;\n private error?: Error;\n private internal: boolean;\n\n constructor(\n status: number,\n statusText: string | undefined,\n data: any,\n internal = false\n ) {\n this.status = status;\n this.statusText = statusText || \"\";\n this.internal = internal;\n if (data instanceof Error) {\n this.data = data.toString();\n this.error = data;\n } else {\n this.data = data;\n }\n }\n}\n\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response thrown from an action/loader\n */\nexport function isRouteErrorResponse(error: any): error is ErrorResponse {\n return (\n error != null &&\n typeof error.status === \"number\" &&\n typeof error.statusText === \"string\" &&\n typeof error.internal === \"boolean\" &&\n \"data\" in error\n );\n}\n","import type { History, Location, Path, To } from \"./history\";\nimport {\n Action as HistoryAction,\n createLocation,\n createPath,\n invariant,\n parsePath,\n warning,\n} from \"./history\";\nimport type {\n AgnosticDataRouteMatch,\n AgnosticDataRouteObject,\n DataStrategyMatch,\n AgnosticRouteObject,\n DataResult,\n DataStrategyFunction,\n DataStrategyFunctionArgs,\n DeferredData,\n DeferredResult,\n DetectErrorBoundaryFunction,\n ErrorResult,\n FormEncType,\n FormMethod,\n HTMLFormMethod,\n DataStrategyResult,\n ImmutableRouteKey,\n MapRoutePropertiesFunction,\n MutationFormMethod,\n RedirectResult,\n RouteData,\n RouteManifest,\n ShouldRevalidateFunctionArgs,\n Submission,\n SuccessResult,\n UIMatch,\n V7_FormMethod,\n V7_MutationFormMethod,\n AgnosticPatchRoutesOnNavigationFunction,\n DataWithResponseInit,\n} from \"./utils\";\nimport {\n ErrorResponseImpl,\n ResultType,\n convertRouteMatchToUiMatch,\n convertRoutesToDataRoutes,\n getPathContributingMatches,\n getResolveToMatches,\n immutableRouteKeys,\n isRouteErrorResponse,\n joinPaths,\n matchRoutes,\n matchRoutesImpl,\n resolveTo,\n stripBasename,\n} from \"./utils\";\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A Router instance manages all navigation and data loading/mutations\n */\nexport interface Router {\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the basename for the router\n */\n get basename(): RouterInit[\"basename\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the future config for the router\n */\n get future(): FutureConfig;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the current state of the router\n */\n get state(): RouterState;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the routes for this router instance\n */\n get routes(): AgnosticDataRouteObject[];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the window associated with the router\n */\n get window(): RouterInit[\"window\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Initialize the router, including adding history listeners and kicking off\n * initial data fetches. Returns a function to cleanup listeners and abort\n * any in-progress loads\n */\n initialize(): Router;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Subscribe to router.state updates\n *\n * @param fn function to call with the new state\n */\n subscribe(fn: RouterSubscriber): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Enable scroll restoration behavior in the router\n *\n * @param savedScrollPositions Object that will manage positions, in case\n * it's being restored from sessionStorage\n * @param getScrollPosition Function to get the active Y scroll position\n * @param getKey Function to get the key to use for restoration\n */\n enableScrollRestoration(\n savedScrollPositions: Record,\n getScrollPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Navigate forward/backward in the history stack\n * @param to Delta to move in the history stack\n */\n navigate(to: number): Promise;\n\n /**\n * Navigate to the given path\n * @param to Path to navigate to\n * @param opts Navigation options (method, submission, etc.)\n */\n navigate(to: To | null, opts?: RouterNavigateOptions): Promise;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a fetcher load/submission\n *\n * @param key Fetcher key\n * @param routeId Route that owns the fetcher\n * @param href href to fetch\n * @param opts Fetcher options, (method, submission, etc.)\n */\n fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a revalidation of all current route loaders and fetcher loads\n */\n revalidate(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to create an href for the given location\n * @param location\n */\n createHref(location: Location | URL): string;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to URL encode a destination path according to the internal\n * history implementation\n * @param to\n */\n encodeLocation(to: To): Path;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get/create a fetcher for the given key\n * @param key\n */\n getFetcher(key: string): Fetcher;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete the fetcher for a given key\n * @param key\n */\n deleteFetcher(key: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Cleanup listeners and abort any in-progress loads\n */\n dispose(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get a navigation blocker\n * @param key The identifier for the blocker\n * @param fn The blocker function implementation\n */\n getBlocker(key: string, fn: BlockerFunction): Blocker;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete a navigation blocker\n * @param key The identifier for the blocker\n */\n deleteBlocker(key: string): void;\n\n /**\n * @internal\n * PRIVATE DO NOT USE\n *\n * Patch additional children routes into an existing parent route\n * @param routeId The parent route id or a callback function accepting `patch`\n * to perform batch patching\n * @param children The additional children routes\n */\n patchRoutes(routeId: string | null, children: AgnosticRouteObject[]): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * HMR needs to pass in-flight route updates to React Router\n * TODO: Replace this with granular route update APIs (addRoute, updateRoute, deleteRoute)\n */\n _internalSetRoutes(routes: AgnosticRouteObject[]): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal fetch AbortControllers accessed by unit tests\n */\n _internalFetchControllers: Map;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal pending DeferredData instances accessed by unit tests\n */\n _internalActiveDeferreds: Map;\n}\n\n/**\n * State maintained internally by the router. During a navigation, all states\n * reflect the the \"old\" location unless otherwise noted.\n */\nexport interface RouterState {\n /**\n * The action of the most recent navigation\n */\n historyAction: HistoryAction;\n\n /**\n * The current location reflected by the router\n */\n location: Location;\n\n /**\n * The current set of route matches\n */\n matches: AgnosticDataRouteMatch[];\n\n /**\n * Tracks whether we've completed our initial data load\n */\n initialized: boolean;\n\n /**\n * Current scroll position we should start at for a new view\n * - number -> scroll position to restore to\n * - false -> do not restore scroll at all (used during submissions)\n * - null -> don't have a saved position, scroll to hash or top of page\n */\n restoreScrollPosition: number | false | null;\n\n /**\n * Indicate whether this navigation should skip resetting the scroll position\n * if we are unable to restore the scroll position\n */\n preventScrollReset: boolean;\n\n /**\n * Tracks the state of the current navigation\n */\n navigation: Navigation;\n\n /**\n * Tracks any in-progress revalidations\n */\n revalidation: RevalidationState;\n\n /**\n * Data from the loaders for the current matches\n */\n loaderData: RouteData;\n\n /**\n * Data from the action for the current matches\n */\n actionData: RouteData | null;\n\n /**\n * Errors caught from loaders for the current matches\n */\n errors: RouteData | null;\n\n /**\n * Map of current fetchers\n */\n fetchers: Map;\n\n /**\n * Map of current blockers\n */\n blockers: Map;\n}\n\n/**\n * Data that can be passed into hydrate a Router from SSR\n */\nexport type HydrationState = Partial<\n Pick\n>;\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface FutureConfig {\n v7_fetcherPersist: boolean;\n v7_normalizeFormMethod: boolean;\n v7_partialHydration: boolean;\n v7_prependBasename: boolean;\n v7_relativeSplatPath: boolean;\n v7_skipActionErrorRevalidation: boolean;\n}\n\n/**\n * Initialization options for createRouter\n */\nexport interface RouterInit {\n routes: AgnosticRouteObject[];\n history: History;\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial;\n hydrationData?: HydrationState;\n window?: Window;\n unstable_patchRoutesOnNavigation?: AgnosticPatchRoutesOnNavigationFunction;\n unstable_dataStrategy?: DataStrategyFunction;\n}\n\n/**\n * State returned from a server-side query() call\n */\nexport interface StaticHandlerContext {\n basename: Router[\"basename\"];\n location: RouterState[\"location\"];\n matches: RouterState[\"matches\"];\n loaderData: RouterState[\"loaderData\"];\n actionData: RouterState[\"actionData\"];\n errors: RouterState[\"errors\"];\n statusCode: number;\n loaderHeaders: Record;\n actionHeaders: Record;\n activeDeferreds: Record | null;\n _deepestRenderedBoundaryId?: string | null;\n}\n\n/**\n * A StaticHandler instance manages a singular SSR navigation/fetch event\n */\nexport interface StaticHandler {\n dataRoutes: AgnosticDataRouteObject[];\n query(\n request: Request,\n opts?: {\n requestContext?: unknown;\n skipLoaderErrorBubbling?: boolean;\n unstable_dataStrategy?: DataStrategyFunction;\n }\n ): Promise;\n queryRoute(\n request: Request,\n opts?: {\n routeId?: string;\n requestContext?: unknown;\n unstable_dataStrategy?: DataStrategyFunction;\n }\n ): Promise;\n}\n\ntype ViewTransitionOpts = {\n currentLocation: Location;\n nextLocation: Location;\n};\n\n/**\n * Subscriber function signature for changes to router state\n */\nexport interface RouterSubscriber {\n (\n state: RouterState,\n opts: {\n deletedFetchers: string[];\n unstable_viewTransitionOpts?: ViewTransitionOpts;\n unstable_flushSync: boolean;\n }\n ): void;\n}\n\n/**\n * Function signature for determining the key to be used in scroll restoration\n * for a given location\n */\nexport interface GetScrollRestorationKeyFunction {\n (location: Location, matches: UIMatch[]): string | null;\n}\n\n/**\n * Function signature for determining the current scroll position\n */\nexport interface GetScrollPositionFunction {\n (): number;\n}\n\nexport type RelativeRoutingType = \"route\" | \"path\";\n\n// Allowed for any navigation or fetch\ntype BaseNavigateOrFetchOptions = {\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n unstable_flushSync?: boolean;\n};\n\n// Only allowed for navigations\ntype BaseNavigateOptions = BaseNavigateOrFetchOptions & {\n replace?: boolean;\n state?: any;\n fromRouteId?: string;\n unstable_viewTransition?: boolean;\n};\n\n// Only allowed for submission navigations\ntype BaseSubmissionOptions = {\n formMethod?: HTMLFormMethod;\n formEncType?: FormEncType;\n} & (\n | { formData: FormData; body?: undefined }\n | { formData?: undefined; body: any }\n);\n\n/**\n * Options for a navigate() call for a normal (non-submission) navigation\n */\ntype LinkNavigateOptions = BaseNavigateOptions;\n\n/**\n * Options for a navigate() call for a submission navigation\n */\ntype SubmissionNavigateOptions = BaseNavigateOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to navigate() for a navigation\n */\nexport type RouterNavigateOptions =\n | LinkNavigateOptions\n | SubmissionNavigateOptions;\n\n/**\n * Options for a fetch() load\n */\ntype LoadFetchOptions = BaseNavigateOrFetchOptions;\n\n/**\n * Options for a fetch() submission\n */\ntype SubmitFetchOptions = BaseNavigateOrFetchOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to fetch()\n */\nexport type RouterFetchOptions = LoadFetchOptions | SubmitFetchOptions;\n\n/**\n * Potential states for state.navigation\n */\nexport type NavigationStates = {\n Idle: {\n state: \"idle\";\n location: undefined;\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n formData: undefined;\n json: undefined;\n text: undefined;\n };\n Loading: {\n state: \"loading\";\n location: Location;\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n text: Submission[\"text\"] | undefined;\n };\n Submitting: {\n state: \"submitting\";\n location: Location;\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n text: Submission[\"text\"];\n };\n};\n\nexport type Navigation = NavigationStates[keyof NavigationStates];\n\nexport type RevalidationState = \"idle\" | \"loading\";\n\n/**\n * Potential states for fetchers\n */\ntype FetcherStates = {\n Idle: {\n state: \"idle\";\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n text: undefined;\n formData: undefined;\n json: undefined;\n data: TData | undefined;\n };\n Loading: {\n state: \"loading\";\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n text: Submission[\"text\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n data: TData | undefined;\n };\n Submitting: {\n state: \"submitting\";\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n text: Submission[\"text\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n data: TData | undefined;\n };\n};\n\nexport type Fetcher =\n FetcherStates[keyof FetcherStates];\n\ninterface BlockerBlocked {\n state: \"blocked\";\n reset(): void;\n proceed(): void;\n location: Location;\n}\n\ninterface BlockerUnblocked {\n state: \"unblocked\";\n reset: undefined;\n proceed: undefined;\n location: undefined;\n}\n\ninterface BlockerProceeding {\n state: \"proceeding\";\n reset: undefined;\n proceed: undefined;\n location: Location;\n}\n\nexport type Blocker = BlockerUnblocked | BlockerBlocked | BlockerProceeding;\n\nexport type BlockerFunction = (args: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n}) => boolean;\n\ninterface ShortCircuitable {\n /**\n * startNavigation does not need to complete the navigation because we\n * redirected or got interrupted\n */\n shortCircuited?: boolean;\n}\n\ntype PendingActionResult = [string, SuccessResult | ErrorResult];\n\ninterface HandleActionResult extends ShortCircuitable {\n /**\n * Route matches which may have been updated from fog of war discovery\n */\n matches?: RouterState[\"matches\"];\n /**\n * Tuple for the returned or thrown value from the current action. The routeId\n * is the action route for success and the bubbled boundary route for errors.\n */\n pendingActionResult?: PendingActionResult;\n}\n\ninterface HandleLoadersResult extends ShortCircuitable {\n /**\n * Route matches which may have been updated from fog of war discovery\n */\n matches?: RouterState[\"matches\"];\n /**\n * loaderData returned from the current set of loaders\n */\n loaderData?: RouterState[\"loaderData\"];\n /**\n * errors thrown from the current set of loaders\n */\n errors?: RouterState[\"errors\"];\n}\n\n/**\n * Cached info for active fetcher.load() instances so they can participate\n * in revalidation\n */\ninterface FetchLoadMatch {\n routeId: string;\n path: string;\n}\n\n/**\n * Identified fetcher.load() calls that need to be revalidated\n */\ninterface RevalidatingFetcher extends FetchLoadMatch {\n key: string;\n match: AgnosticDataRouteMatch | null;\n matches: AgnosticDataRouteMatch[] | null;\n controller: AbortController | null;\n}\n\nconst validMutationMethodsArr: MutationFormMethod[] = [\n \"post\",\n \"put\",\n \"patch\",\n \"delete\",\n];\nconst validMutationMethods = new Set(\n validMutationMethodsArr\n);\n\nconst validRequestMethodsArr: FormMethod[] = [\n \"get\",\n ...validMutationMethodsArr,\n];\nconst validRequestMethods = new Set(validRequestMethodsArr);\n\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\n\nexport const IDLE_NAVIGATION: NavigationStates[\"Idle\"] = {\n state: \"idle\",\n location: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_FETCHER: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_BLOCKER: BlockerUnblocked = {\n state: \"unblocked\",\n proceed: undefined,\n reset: undefined,\n location: undefined,\n};\n\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n\nconst defaultMapRouteProperties: MapRoutePropertiesFunction = (route) => ({\n hasErrorBoundary: Boolean(route.hasErrorBoundary),\n});\n\nconst TRANSITIONS_STORAGE_KEY = \"remix-router-transitions\";\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Create a router and listen to history POP navigations\n */\nexport function createRouter(init: RouterInit): Router {\n const routerWindow = init.window\n ? init.window\n : typeof window !== \"undefined\"\n ? window\n : undefined;\n const isBrowser =\n typeof routerWindow !== \"undefined\" &&\n typeof routerWindow.document !== \"undefined\" &&\n typeof routerWindow.document.createElement !== \"undefined\";\n const isServer = !isBrowser;\n\n invariant(\n init.routes.length > 0,\n \"You must provide a non-empty routes array to createRouter\"\n );\n\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (init.mapRouteProperties) {\n mapRouteProperties = init.mapRouteProperties;\n } else if (init.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = init.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n\n // Routes keyed by ID\n let manifest: RouteManifest = {};\n // Routes in tree format for matching\n let dataRoutes = convertRoutesToDataRoutes(\n init.routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n let inFlightDataRoutes: AgnosticDataRouteObject[] | undefined;\n let basename = init.basename || \"/\";\n let dataStrategyImpl = init.unstable_dataStrategy || defaultDataStrategy;\n let patchRoutesOnNavigationImpl = init.unstable_patchRoutesOnNavigation;\n\n // Config driven behavior flags\n let future: FutureConfig = {\n v7_fetcherPersist: false,\n v7_normalizeFormMethod: false,\n v7_partialHydration: false,\n v7_prependBasename: false,\n v7_relativeSplatPath: false,\n v7_skipActionErrorRevalidation: false,\n ...init.future,\n };\n // Cleanup function for history\n let unlistenHistory: (() => void) | null = null;\n // Externally-provided functions to call on all state changes\n let subscribers = new Set();\n // FIFO queue of previously discovered routes to prevent re-calling on\n // subsequent navigations to the same path\n let discoveredRoutesMaxSize = 1000;\n let discoveredRoutes = new Set();\n // Externally-provided object to hold scroll restoration locations during routing\n let savedScrollPositions: Record | null = null;\n // Externally-provided function to get scroll restoration keys\n let getScrollRestorationKey: GetScrollRestorationKeyFunction | null = null;\n // Externally-provided function to get current scroll position\n let getScrollPosition: GetScrollPositionFunction | null = null;\n // One-time flag to control the initial hydration scroll restoration. Because\n // we don't get the saved positions from until _after_\n // the initial render, we need to manually trigger a separate updateState to\n // send along the restoreScrollPosition\n // Set to true if we have `hydrationData` since we assume we were SSR'd and that\n // SSR did the initial scroll restoration.\n let initialScrollRestored = init.hydrationData != null;\n\n let initialMatches = matchRoutes(dataRoutes, init.history.location, basename);\n let initialErrors: RouteData | null = null;\n\n if (initialMatches == null && !patchRoutesOnNavigationImpl) {\n // If we do not match a user-provided-route, fall back to the root\n // to allow the error boundary to take over\n let error = getInternalRouterError(404, {\n pathname: init.history.location.pathname,\n });\n let { matches, route } = getShortCircuitMatches(dataRoutes);\n initialMatches = matches;\n initialErrors = { [route.id]: error };\n }\n\n // In SPA apps, if the user provided a patchRoutesOnNavigation implementation and\n // our initial match is a splat route, clear them out so we run through lazy\n // discovery on hydration in case there's a more accurate lazy route match.\n // In SSR apps (with `hydrationData`), we expect that the server will send\n // up the proper matched routes so we don't want to run lazy discovery on\n // initial hydration and want to hydrate into the splat route.\n if (initialMatches && !init.hydrationData) {\n let fogOfWar = checkFogOfWar(\n initialMatches,\n dataRoutes,\n init.history.location.pathname\n );\n if (fogOfWar.active) {\n initialMatches = null;\n }\n }\n\n let initialized: boolean;\n if (!initialMatches) {\n initialized = false;\n initialMatches = [];\n\n // If partial hydration and fog of war is enabled, we will be running\n // `patchRoutesOnNavigation` during hydration so include any partial matches as\n // the initial matches so we can properly render `HydrateFallback`'s\n if (future.v7_partialHydration) {\n let fogOfWar = checkFogOfWar(\n null,\n dataRoutes,\n init.history.location.pathname\n );\n if (fogOfWar.active && fogOfWar.matches) {\n initialMatches = fogOfWar.matches;\n }\n }\n } else if (initialMatches.some((m) => m.route.lazy)) {\n // All initialMatches need to be loaded before we're ready. If we have lazy\n // functions around still then we'll need to run them in initialize()\n initialized = false;\n } else if (!initialMatches.some((m) => m.route.loader)) {\n // If we've got no loaders to run, then we're good to go\n initialized = true;\n } else if (future.v7_partialHydration) {\n // If partial hydration is enabled, we're initialized so long as we were\n // provided with hydrationData for every route with a loader, and no loaders\n // were marked for explicit hydration\n let loaderData = init.hydrationData ? init.hydrationData.loaderData : null;\n let errors = init.hydrationData ? init.hydrationData.errors : null;\n let isRouteInitialized = (m: AgnosticDataRouteMatch) => {\n // No loader, nothing to initialize\n if (!m.route.loader) {\n return true;\n }\n // Explicitly opting-in to running on hydration\n if (\n typeof m.route.loader === \"function\" &&\n m.route.loader.hydrate === true\n ) {\n return false;\n }\n // Otherwise, initialized if hydrated with data or an error\n return (\n (loaderData && loaderData[m.route.id] !== undefined) ||\n (errors && errors[m.route.id] !== undefined)\n );\n };\n\n // If errors exist, don't consider routes below the boundary\n if (errors) {\n let idx = initialMatches.findIndex(\n (m) => errors![m.route.id] !== undefined\n );\n initialized = initialMatches.slice(0, idx + 1).every(isRouteInitialized);\n } else {\n initialized = initialMatches.every(isRouteInitialized);\n }\n } else {\n // Without partial hydration - we're initialized if we were provided any\n // hydrationData - which is expected to be complete\n initialized = init.hydrationData != null;\n }\n\n let router: Router;\n let state: RouterState = {\n historyAction: init.history.action,\n location: init.history.location,\n matches: initialMatches,\n initialized,\n navigation: IDLE_NAVIGATION,\n // Don't restore on initial updateState() if we were SSR'd\n restoreScrollPosition: init.hydrationData != null ? false : null,\n preventScrollReset: false,\n revalidation: \"idle\",\n loaderData: (init.hydrationData && init.hydrationData.loaderData) || {},\n actionData: (init.hydrationData && init.hydrationData.actionData) || null,\n errors: (init.hydrationData && init.hydrationData.errors) || initialErrors,\n fetchers: new Map(),\n blockers: new Map(),\n };\n\n // -- Stateful internal variables to manage navigations --\n // Current navigation in progress (to be committed in completeNavigation)\n let pendingAction: HistoryAction = HistoryAction.Pop;\n\n // Should the current navigation prevent the scroll reset if scroll cannot\n // be restored?\n let pendingPreventScrollReset = false;\n\n // AbortController for the active navigation\n let pendingNavigationController: AbortController | null;\n\n // Should the current navigation enable document.startViewTransition?\n let pendingViewTransitionEnabled = false;\n\n // Store applied view transitions so we can apply them on POP\n let appliedViewTransitions: Map> = new Map<\n string,\n Set\n >();\n\n // Cleanup function for persisting applied transitions to sessionStorage\n let removePageHideEventListener: (() => void) | null = null;\n\n // We use this to avoid touching history in completeNavigation if a\n // revalidation is entirely uninterrupted\n let isUninterruptedRevalidation = false;\n\n // Use this internal flag to force revalidation of all loaders:\n // - submissions (completed or interrupted)\n // - useRevalidator()\n // - X-Remix-Revalidate (from redirect)\n let isRevalidationRequired = false;\n\n // Use this internal array to capture routes that require revalidation due\n // to a cancelled deferred on action submission\n let cancelledDeferredRoutes: string[] = [];\n\n // Use this internal array to capture fetcher loads that were cancelled by an\n // action navigation and require revalidation\n let cancelledFetcherLoads: Set = new Set();\n\n // AbortControllers for any in-flight fetchers\n let fetchControllers = new Map();\n\n // Track loads based on the order in which they started\n let incrementingLoadId = 0;\n\n // Track the outstanding pending navigation data load to be compared against\n // the globally incrementing load when a fetcher load lands after a completed\n // navigation\n let pendingNavigationLoadId = -1;\n\n // Fetchers that triggered data reloads as a result of their actions\n let fetchReloadIds = new Map();\n\n // Fetchers that triggered redirect navigations\n let fetchRedirectIds = new Set();\n\n // Most recent href/match for fetcher.load calls for fetchers\n let fetchLoadMatches = new Map();\n\n // Ref-count mounted fetchers so we know when it's ok to clean them up\n let activeFetchers = new Map();\n\n // Fetchers that have requested a delete when using v7_fetcherPersist,\n // they'll be officially removed after they return to idle\n let deletedFetchers = new Set();\n\n // Store DeferredData instances for active route matches. When a\n // route loader returns defer() we stick one in here. Then, when a nested\n // promise resolves we update loaderData. If a new navigation starts we\n // cancel active deferreds for eliminated routes.\n let activeDeferreds = new Map();\n\n // Store blocker functions in a separate Map outside of router state since\n // we don't need to update UI state if they change\n let blockerFunctions = new Map();\n\n // Map of pending patchRoutesOnNavigation() promises (keyed by path/matches) so\n // that we only kick them off once for a given combo\n let pendingPatchRoutes = new Map<\n string,\n ReturnType\n >();\n\n // Flag to ignore the next history update, so we can revert the URL change on\n // a POP navigation that was blocked by the user without touching router state\n let unblockBlockerHistoryUpdate: (() => void) | undefined = undefined;\n\n // Initialize the router, all side effects should be kicked off from here.\n // Implemented as a Fluent API for ease of:\n // let router = createRouter(init).initialize();\n function initialize() {\n // If history informs us of a POP navigation, start the navigation but do not update\n // state. We'll update our own state once the navigation completes\n unlistenHistory = init.history.listen(\n ({ action: historyAction, location, delta }) => {\n // Ignore this event if it was just us resetting the URL from a\n // blocked POP navigation\n if (unblockBlockerHistoryUpdate) {\n unblockBlockerHistoryUpdate();\n unblockBlockerHistoryUpdate = undefined;\n return;\n }\n\n warning(\n blockerFunctions.size === 0 || delta != null,\n \"You are trying to use a blocker on a POP navigation to a location \" +\n \"that was not created by @remix-run/router. This will fail silently in \" +\n \"production. This can happen if you are navigating outside the router \" +\n \"via `window.history.pushState`/`window.location.hash` instead of using \" +\n \"router navigation APIs. This can also happen if you are using \" +\n \"createHashRouter and the user manually changes the URL.\"\n );\n\n let blockerKey = shouldBlockNavigation({\n currentLocation: state.location,\n nextLocation: location,\n historyAction,\n });\n\n if (blockerKey && delta != null) {\n // Restore the URL to match the current UI, but don't update router state\n let nextHistoryUpdatePromise = new Promise((resolve) => {\n unblockBlockerHistoryUpdate = resolve;\n });\n init.history.go(delta * -1);\n\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location,\n });\n // Re-do the same POP navigation we just blocked, after the url\n // restoration is also complete. See:\n // https://github.com/remix-run/react-router/issues/11613\n nextHistoryUpdatePromise.then(() => init.history.go(delta));\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return startNavigation(historyAction, location);\n }\n );\n\n if (isBrowser) {\n // FIXME: This feels gross. How can we cleanup the lines between\n // scrollRestoration/appliedTransitions persistance?\n restoreAppliedTransitions(routerWindow, appliedViewTransitions);\n let _saveAppliedTransitions = () =>\n persistAppliedTransitions(routerWindow, appliedViewTransitions);\n routerWindow.addEventListener(\"pagehide\", _saveAppliedTransitions);\n removePageHideEventListener = () =>\n routerWindow.removeEventListener(\"pagehide\", _saveAppliedTransitions);\n }\n\n // Kick off initial data load if needed. Use Pop to avoid modifying history\n // Note we don't do any handling of lazy here. For SPA's it'll get handled\n // in the normal navigation flow. For SSR it's expected that lazy modules are\n // resolved prior to router creation since we can't go into a fallbackElement\n // UI for SSR'd apps\n if (!state.initialized) {\n startNavigation(HistoryAction.Pop, state.location, {\n initialHydration: true,\n });\n }\n\n return router;\n }\n\n // Clean up a router and it's side effects\n function dispose() {\n if (unlistenHistory) {\n unlistenHistory();\n }\n if (removePageHideEventListener) {\n removePageHideEventListener();\n }\n subscribers.clear();\n pendingNavigationController && pendingNavigationController.abort();\n state.fetchers.forEach((_, key) => deleteFetcher(key));\n state.blockers.forEach((_, key) => deleteBlocker(key));\n }\n\n // Subscribe to state updates for the router\n function subscribe(fn: RouterSubscriber) {\n subscribers.add(fn);\n return () => subscribers.delete(fn);\n }\n\n // Update our state and notify the calling context of the change\n function updateState(\n newState: Partial,\n opts: {\n flushSync?: boolean;\n viewTransitionOpts?: ViewTransitionOpts;\n } = {}\n ): void {\n state = {\n ...state,\n ...newState,\n };\n\n // Prep fetcher cleanup so we can tell the UI which fetcher data entries\n // can be removed\n let completedFetchers: string[] = [];\n let deletedFetchersKeys: string[] = [];\n\n if (future.v7_fetcherPersist) {\n state.fetchers.forEach((fetcher, key) => {\n if (fetcher.state === \"idle\") {\n if (deletedFetchers.has(key)) {\n // Unmounted from the UI and can be totally removed\n deletedFetchersKeys.push(key);\n } else {\n // Returned to idle but still mounted in the UI, so semi-remains for\n // revalidations and such\n completedFetchers.push(key);\n }\n }\n });\n }\n\n // Iterate over a local copy so that if flushSync is used and we end up\n // removing and adding a new subscriber due to the useCallback dependencies,\n // we don't get ourselves into a loop calling the new subscriber immediately\n [...subscribers].forEach((subscriber) =>\n subscriber(state, {\n deletedFetchers: deletedFetchersKeys,\n unstable_viewTransitionOpts: opts.viewTransitionOpts,\n unstable_flushSync: opts.flushSync === true,\n })\n );\n\n // Remove idle fetchers from state since we only care about in-flight fetchers.\n if (future.v7_fetcherPersist) {\n completedFetchers.forEach((key) => state.fetchers.delete(key));\n deletedFetchersKeys.forEach((key) => deleteFetcher(key));\n }\n }\n\n // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n // and setting state.[historyAction/location/matches] to the new route.\n // - Location is a required param\n // - Navigation will always be set to IDLE_NAVIGATION\n // - Can pass any other state in newState\n function completeNavigation(\n location: Location,\n newState: Partial>,\n { flushSync }: { flushSync?: boolean } = {}\n ): void {\n // Deduce if we're in a loading/actionReload state:\n // - We have committed actionData in the store\n // - The current navigation was a mutation submission\n // - We're past the submitting state and into the loading state\n // - The location being loaded is not the result of a redirect\n let isActionReload =\n state.actionData != null &&\n state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n state.navigation.state === \"loading\" &&\n location.state?._isRedirect !== true;\n\n let actionData: RouteData | null;\n if (newState.actionData) {\n if (Object.keys(newState.actionData).length > 0) {\n actionData = newState.actionData;\n } else {\n // Empty actionData -> clear prior actionData due to an action error\n actionData = null;\n }\n } else if (isActionReload) {\n // Keep the current data if we're wrapping up the action reload\n actionData = state.actionData;\n } else {\n // Clear actionData on any other completed navigations\n actionData = null;\n }\n\n // Always preserve any existing loaderData from re-used routes\n let loaderData = newState.loaderData\n ? mergeLoaderData(\n state.loaderData,\n newState.loaderData,\n newState.matches || [],\n newState.errors\n )\n : state.loaderData;\n\n // On a successful navigation we can assume we got through all blockers\n // so we can start fresh\n let blockers = state.blockers;\n if (blockers.size > 0) {\n blockers = new Map(blockers);\n blockers.forEach((_, k) => blockers.set(k, IDLE_BLOCKER));\n }\n\n // Always respect the user flag. Otherwise don't reset on mutation\n // submission navigations unless they redirect\n let preventScrollReset =\n pendingPreventScrollReset === true ||\n (state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n location.state?._isRedirect !== true);\n\n // Commit any in-flight routes at the end of the HMR revalidation \"navigation\"\n if (inFlightDataRoutes) {\n dataRoutes = inFlightDataRoutes;\n inFlightDataRoutes = undefined;\n }\n\n if (isUninterruptedRevalidation) {\n // If this was an uninterrupted revalidation then do not touch history\n } else if (pendingAction === HistoryAction.Pop) {\n // Do nothing for POP - URL has already been updated\n } else if (pendingAction === HistoryAction.Push) {\n init.history.push(location, location.state);\n } else if (pendingAction === HistoryAction.Replace) {\n init.history.replace(location, location.state);\n }\n\n let viewTransitionOpts: ViewTransitionOpts | undefined;\n\n // On POP, enable transitions if they were enabled on the original navigation\n if (pendingAction === HistoryAction.Pop) {\n // Forward takes precedence so they behave like the original navigation\n let priorPaths = appliedViewTransitions.get(state.location.pathname);\n if (priorPaths && priorPaths.has(location.pathname)) {\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location,\n };\n } else if (appliedViewTransitions.has(location.pathname)) {\n // If we don't have a previous forward nav, assume we're popping back to\n // the new location and enable if that location previously enabled\n viewTransitionOpts = {\n currentLocation: location,\n nextLocation: state.location,\n };\n }\n } else if (pendingViewTransitionEnabled) {\n // Store the applied transition on PUSH/REPLACE\n let toPaths = appliedViewTransitions.get(state.location.pathname);\n if (toPaths) {\n toPaths.add(location.pathname);\n } else {\n toPaths = new Set([location.pathname]);\n appliedViewTransitions.set(state.location.pathname, toPaths);\n }\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location,\n };\n }\n\n updateState(\n {\n ...newState, // matches, errors, fetchers go through as-is\n actionData,\n loaderData,\n historyAction: pendingAction,\n location,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n revalidation: \"idle\",\n restoreScrollPosition: getSavedScrollPosition(\n location,\n newState.matches || state.matches\n ),\n preventScrollReset,\n blockers,\n },\n {\n viewTransitionOpts,\n flushSync: flushSync === true,\n }\n );\n\n // Reset stateful navigation vars\n pendingAction = HistoryAction.Pop;\n pendingPreventScrollReset = false;\n pendingViewTransitionEnabled = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n cancelledDeferredRoutes = [];\n }\n\n // Trigger a navigation event, which can either be a numerical POP or a PUSH\n // replace with an optional submission\n async function navigate(\n to: number | To | null,\n opts?: RouterNavigateOptions\n ): Promise {\n if (typeof to === \"number\") {\n init.history.go(to);\n return;\n }\n\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n to,\n future.v7_relativeSplatPath,\n opts?.fromRouteId,\n opts?.relative\n );\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n false,\n normalizedPath,\n opts\n );\n\n let currentLocation = state.location;\n let nextLocation = createLocation(state.location, path, opts && opts.state);\n\n // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n // URL from window.location, so we need to encode it here so the behavior\n // remains the same as POP and non-data-router usages. new URL() does all\n // the same encoding we'd get from a history.pushState/window.location read\n // without having to touch history\n nextLocation = {\n ...nextLocation,\n ...init.history.encodeLocation(nextLocation),\n };\n\n let userReplace = opts && opts.replace != null ? opts.replace : undefined;\n\n let historyAction = HistoryAction.Push;\n\n if (userReplace === true) {\n historyAction = HistoryAction.Replace;\n } else if (userReplace === false) {\n // no-op\n } else if (\n submission != null &&\n isMutationMethod(submission.formMethod) &&\n submission.formAction === state.location.pathname + state.location.search\n ) {\n // By default on submissions to the current location we REPLACE so that\n // users don't have to double-click the back button to get to the prior\n // location. If the user redirects to a different location from the\n // action/loader this will be ignored and the redirect will be a PUSH\n historyAction = HistoryAction.Replace;\n }\n\n let preventScrollReset =\n opts && \"preventScrollReset\" in opts\n ? opts.preventScrollReset === true\n : undefined;\n\n let flushSync = (opts && opts.unstable_flushSync) === true;\n\n let blockerKey = shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n });\n\n if (blockerKey) {\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location: nextLocation,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location: nextLocation,\n });\n // Send the same navigation through\n navigate(to, opts);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return await startNavigation(historyAction, nextLocation, {\n submission,\n // Send through the formData serialization error if we have one so we can\n // render at the right error boundary after we match routes\n pendingError: error,\n preventScrollReset,\n replace: opts && opts.replace,\n enableViewTransition: opts && opts.unstable_viewTransition,\n flushSync,\n });\n }\n\n // Revalidate all current loaders. If a navigation is in progress or if this\n // is interrupted by a navigation, allow this to \"succeed\" by calling all\n // loaders during the next loader round\n function revalidate() {\n interruptActiveLoads();\n updateState({ revalidation: \"loading\" });\n\n // If we're currently submitting an action, we don't need to start a new\n // navigation, we'll just let the follow up loader execution call all loaders\n if (state.navigation.state === \"submitting\") {\n return;\n }\n\n // If we're currently in an idle state, start a new navigation for the current\n // action/location and mark it as uninterrupted, which will skip the history\n // update in completeNavigation\n if (state.navigation.state === \"idle\") {\n startNavigation(state.historyAction, state.location, {\n startUninterruptedRevalidation: true,\n });\n return;\n }\n\n // Otherwise, if we're currently in a loading state, just start a new\n // navigation to the navigation.location but do not trigger an uninterrupted\n // revalidation so that history correctly updates once the navigation completes\n startNavigation(\n pendingAction || state.historyAction,\n state.navigation.location,\n {\n overrideNavigation: state.navigation,\n // Proxy through any rending view transition\n enableViewTransition: pendingViewTransitionEnabled === true,\n }\n );\n }\n\n // Start a navigation to the given action/location. Can optionally provide a\n // overrideNavigation which will override the normalLoad in the case of a redirect\n // navigation\n async function startNavigation(\n historyAction: HistoryAction,\n location: Location,\n opts?: {\n initialHydration?: boolean;\n submission?: Submission;\n fetcherSubmission?: Submission;\n overrideNavigation?: Navigation;\n pendingError?: ErrorResponseImpl;\n startUninterruptedRevalidation?: boolean;\n preventScrollReset?: boolean;\n replace?: boolean;\n enableViewTransition?: boolean;\n flushSync?: boolean;\n }\n ): Promise {\n // Abort any in-progress navigations and start a new one. Unset any ongoing\n // uninterrupted revalidations unless told otherwise, since we want this\n // new navigation to update history normally\n pendingNavigationController && pendingNavigationController.abort();\n pendingNavigationController = null;\n pendingAction = historyAction;\n isUninterruptedRevalidation =\n (opts && opts.startUninterruptedRevalidation) === true;\n\n // Save the current scroll position every time we start a new navigation,\n // and track whether we should reset scroll on completion\n saveScrollPosition(state.location, state.matches);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n pendingViewTransitionEnabled = (opts && opts.enableViewTransition) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches = matchRoutes(routesToUse, location, basename);\n let flushSync = (opts && opts.flushSync) === true;\n\n let fogOfWar = checkFogOfWar(matches, routesToUse, location.pathname);\n if (fogOfWar.active && fogOfWar.matches) {\n matches = fogOfWar.matches;\n }\n\n // Short circuit with a 404 on the root error boundary if we match nothing\n if (!matches) {\n let { error, notFoundMatches, route } = handleNavigational404(\n location.pathname\n );\n completeNavigation(\n location,\n {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n },\n { flushSync }\n );\n return;\n }\n\n // Short circuit if it's only a hash change and not a revalidation or\n // mutation submission.\n //\n // Ignore on initial page loads because since the initial load will always\n // be \"same hash\". For example, on /page#hash and submit a \n // which will default to a navigation to /page\n if (\n state.initialized &&\n !isRevalidationRequired &&\n isHashChangeOnly(state.location, location) &&\n !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))\n ) {\n completeNavigation(location, { matches }, { flushSync });\n return;\n }\n\n // Create a controller/Request for this navigation\n pendingNavigationController = new AbortController();\n let request = createClientSideRequest(\n init.history,\n location,\n pendingNavigationController.signal,\n opts && opts.submission\n );\n let pendingActionResult: PendingActionResult | undefined;\n\n if (opts && opts.pendingError) {\n // If we have a pendingError, it means the user attempted a GET submission\n // with binary FormData so assign here and skip to handleLoaders. That\n // way we handle calling loaders above the boundary etc. It's not really\n // different from an actionError in that sense.\n pendingActionResult = [\n findNearestBoundary(matches).route.id,\n { type: ResultType.error, error: opts.pendingError },\n ];\n } else if (\n opts &&\n opts.submission &&\n isMutationMethod(opts.submission.formMethod)\n ) {\n // Call action if we received an action submission\n let actionResult = await handleAction(\n request,\n location,\n opts.submission,\n matches,\n fogOfWar.active,\n { replace: opts.replace, flushSync }\n );\n\n if (actionResult.shortCircuited) {\n return;\n }\n\n // If we received a 404 from handleAction, it's because we couldn't lazily\n // discover the destination route so we don't want to call loaders\n if (actionResult.pendingActionResult) {\n let [routeId, result] = actionResult.pendingActionResult;\n if (\n isErrorResult(result) &&\n isRouteErrorResponse(result.error) &&\n result.error.status === 404\n ) {\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches: actionResult.matches,\n loaderData: {},\n errors: {\n [routeId]: result.error,\n },\n });\n return;\n }\n }\n\n matches = actionResult.matches || matches;\n pendingActionResult = actionResult.pendingActionResult;\n loadingNavigation = getLoadingNavigation(location, opts.submission);\n flushSync = false;\n // No need to do fog of war matching again on loader execution\n fogOfWar.active = false;\n\n // Create a GET request for the loaders\n request = createClientSideRequest(\n init.history,\n request.url,\n request.signal\n );\n }\n\n // Call loaders\n let {\n shortCircuited,\n matches: updatedMatches,\n loaderData,\n errors,\n } = await handleLoaders(\n request,\n location,\n matches,\n fogOfWar.active,\n loadingNavigation,\n opts && opts.submission,\n opts && opts.fetcherSubmission,\n opts && opts.replace,\n opts && opts.initialHydration === true,\n flushSync,\n pendingActionResult\n );\n\n if (shortCircuited) {\n return;\n }\n\n // Clean up now that the action/loaders have completed. Don't clean up if\n // we short circuited because pendingNavigationController will have already\n // been assigned to a new controller for the next navigation\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches: updatedMatches || matches,\n ...getActionDataForCommit(pendingActionResult),\n loaderData,\n errors,\n });\n }\n\n // Call the action matched by the leaf route for this navigation and handle\n // redirects/errors\n async function handleAction(\n request: Request,\n location: Location,\n submission: Submission,\n matches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n opts: { replace?: boolean; flushSync?: boolean } = {}\n ): Promise {\n interruptActiveLoads();\n\n // Put us in a submitting state\n let navigation = getSubmittingNavigation(location, submission);\n updateState({ navigation }, { flushSync: opts.flushSync === true });\n\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n matches,\n location.pathname,\n request.signal\n );\n if (discoverResult.type === \"aborted\") {\n return { shortCircuited: true };\n } else if (discoverResult.type === \"error\") {\n let { boundaryId, error } = handleDiscoverRouteError(\n location.pathname,\n discoverResult\n );\n return {\n matches: discoverResult.partialMatches,\n pendingActionResult: [\n boundaryId,\n {\n type: ResultType.error,\n error,\n },\n ],\n };\n } else if (!discoverResult.matches) {\n let { notFoundMatches, error, route } = handleNavigational404(\n location.pathname\n );\n return {\n matches: notFoundMatches,\n pendingActionResult: [\n route.id,\n {\n type: ResultType.error,\n error,\n },\n ],\n };\n } else {\n matches = discoverResult.matches;\n }\n }\n\n // Call our action and get the result\n let result: DataResult;\n let actionMatch = getTargetMatch(matches, location);\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n result = {\n type: ResultType.error,\n error: getInternalRouterError(405, {\n method: request.method,\n pathname: location.pathname,\n routeId: actionMatch.route.id,\n }),\n };\n } else {\n let results = await callDataStrategy(\n \"action\",\n state,\n request,\n [actionMatch],\n matches,\n null\n );\n result = results[actionMatch.route.id];\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n }\n\n if (isRedirectResult(result)) {\n let replace: boolean;\n if (opts && opts.replace != null) {\n replace = opts.replace;\n } else {\n // If the user didn't explicity indicate replace behavior, replace if\n // we redirected to the exact same location we're currently at to avoid\n // double back-buttons\n let location = normalizeRedirectLocation(\n result.response.headers.get(\"Location\")!,\n new URL(request.url),\n basename\n );\n replace = location === state.location.pathname + state.location.search;\n }\n await startRedirectNavigation(request, result, true, {\n submission,\n replace,\n });\n return { shortCircuited: true };\n }\n\n if (isDeferredResult(result)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n\n // By default, all submissions to the current location are REPLACE\n // navigations, but if the action threw an error that'll be rendered in\n // an errorElement, we fall back to PUSH so that the user can use the\n // back button to get back to the pre-submission form location to try\n // again\n if ((opts && opts.replace) !== true) {\n pendingAction = HistoryAction.Push;\n }\n\n return {\n matches,\n pendingActionResult: [boundaryMatch.route.id, result],\n };\n }\n\n return {\n matches,\n pendingActionResult: [actionMatch.route.id, result],\n };\n }\n\n // Call all applicable loaders for the given matches, handling redirects,\n // errors, etc.\n async function handleLoaders(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n overrideNavigation?: Navigation,\n submission?: Submission,\n fetcherSubmission?: Submission,\n replace?: boolean,\n initialHydration?: boolean,\n flushSync?: boolean,\n pendingActionResult?: PendingActionResult\n ): Promise {\n // Figure out the right navigation we want to use for data loading\n let loadingNavigation =\n overrideNavigation || getLoadingNavigation(location, submission);\n\n // If this was a redirect from an action we don't have a \"submission\" but\n // we have it on the loading navigation so use that if available\n let activeSubmission =\n submission ||\n fetcherSubmission ||\n getSubmissionFromNavigation(loadingNavigation);\n\n // If this is an uninterrupted revalidation, we remain in our current idle\n // state. If not, we need to switch to our loading state and load data,\n // preserving any new action data or existing action data (in the case of\n // a revalidation interrupting an actionReload)\n // If we have partialHydration enabled, then don't update the state for the\n // initial data load since it's not a \"navigation\"\n let shouldUpdateNavigationState =\n !isUninterruptedRevalidation &&\n (!future.v7_partialHydration || !initialHydration);\n\n // When fog of war is enabled, we enter our `loading` state earlier so we\n // can discover new routes during the `loading` state. We skip this if\n // we've already run actions since we would have done our matching already.\n // If the children() function threw then, we want to proceed with the\n // partial matches it discovered.\n if (isFogOfWar) {\n if (shouldUpdateNavigationState) {\n let actionData = getUpdatedActionData(pendingActionResult);\n updateState(\n {\n navigation: loadingNavigation,\n ...(actionData !== undefined ? { actionData } : {}),\n },\n {\n flushSync,\n }\n );\n }\n\n let discoverResult = await discoverRoutes(\n matches,\n location.pathname,\n request.signal\n );\n\n if (discoverResult.type === \"aborted\") {\n return { shortCircuited: true };\n } else if (discoverResult.type === \"error\") {\n let { boundaryId, error } = handleDiscoverRouteError(\n location.pathname,\n discoverResult\n );\n return {\n matches: discoverResult.partialMatches,\n loaderData: {},\n errors: {\n [boundaryId]: error,\n },\n };\n } else if (!discoverResult.matches) {\n let { error, notFoundMatches, route } = handleNavigational404(\n location.pathname\n );\n return {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n };\n } else {\n matches = discoverResult.matches;\n }\n }\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n activeSubmission,\n location,\n future.v7_partialHydration && initialHydration === true,\n future.v7_skipActionErrorRevalidation,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n deletedFetchers,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n pendingActionResult\n );\n\n // Cancel pending deferreds for no-longer-matched routes or routes we're\n // about to reload. Note that if this is an action reload we would have\n // already cancelled all pending deferreds so this would be a no-op\n cancelActiveDeferreds(\n (routeId) =>\n !(matches && matches.some((m) => m.route.id === routeId)) ||\n (matchesToLoad && matchesToLoad.some((m) => m.route.id === routeId))\n );\n\n pendingNavigationLoadId = ++incrementingLoadId;\n\n // Short circuit if we have no loaders to run\n if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n let updatedFetchers = markFetchRedirectsDone();\n completeNavigation(\n location,\n {\n matches,\n loaderData: {},\n // Commit pending error if we're short circuiting\n errors:\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? { [pendingActionResult[0]]: pendingActionResult[1].error }\n : null,\n ...getActionDataForCommit(pendingActionResult),\n ...(updatedFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n },\n { flushSync }\n );\n return { shortCircuited: true };\n }\n\n if (shouldUpdateNavigationState) {\n let updates: Partial = {};\n if (!isFogOfWar) {\n // Only update navigation/actionNData if we didn't already do it above\n updates.navigation = loadingNavigation;\n let actionData = getUpdatedActionData(pendingActionResult);\n if (actionData !== undefined) {\n updates.actionData = actionData;\n }\n }\n if (revalidatingFetchers.length > 0) {\n updates.fetchers = getUpdatedRevalidatingFetchers(revalidatingFetchers);\n }\n updateState(updates, { flushSync });\n }\n\n revalidatingFetchers.forEach((rf) => {\n if (fetchControllers.has(rf.key)) {\n abortFetcher(rf.key);\n }\n if (rf.controller) {\n // Fetchers use an independent AbortController so that aborting a fetcher\n // (via deleteFetcher) does not abort the triggering navigation that\n // triggered the revalidation\n fetchControllers.set(rf.key, rf.controller);\n }\n });\n\n // Proxy navigation abort through to revalidation fetchers\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((f) => abortFetcher(f.key));\n if (pendingNavigationController) {\n pendingNavigationController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n\n let { loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n request\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n\n // Clean up _after_ loaders have completed. Don't clean up if we short\n // circuited because fetchControllers would have been aborted and\n // reassigned to new controllers for the next navigation\n if (pendingNavigationController) {\n pendingNavigationController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n revalidatingFetchers.forEach((rf) => fetchControllers.delete(rf.key));\n\n // If any loaders returned a redirect Response, start a new REPLACE navigation\n let redirect = findRedirect(loaderResults);\n if (redirect) {\n await startRedirectNavigation(request, redirect.result, true, {\n replace,\n });\n return { shortCircuited: true };\n }\n\n redirect = findRedirect(fetcherResults);\n if (redirect) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n fetchRedirectIds.add(redirect.key);\n await startRedirectNavigation(request, redirect.result, true, {\n replace,\n });\n return { shortCircuited: true };\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n matchesToLoad,\n loaderResults,\n pendingActionResult,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Wire up subscribers to update loaderData as promises settle\n activeDeferreds.forEach((deferredData, routeId) => {\n deferredData.subscribe((aborted) => {\n // Note: No need to updateState here since the TrackedPromise on\n // loaderData is stable across resolve/reject\n // Remove this instance if we were aborted or if promises have settled\n if (aborted || deferredData.done) {\n activeDeferreds.delete(routeId);\n }\n });\n });\n\n // During partial hydration, preserve SSR errors for routes that don't re-run\n if (future.v7_partialHydration && initialHydration && state.errors) {\n Object.entries(state.errors)\n .filter(([id]) => !matchesToLoad.some((m) => m.route.id === id))\n .forEach(([routeId, error]) => {\n errors = Object.assign(errors || {}, { [routeId]: error });\n });\n }\n\n let updatedFetchers = markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n let shouldUpdateFetchers =\n updatedFetchers || didAbortFetchLoads || revalidatingFetchers.length > 0;\n\n return {\n matches,\n loaderData,\n errors,\n ...(shouldUpdateFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n };\n }\n\n function getUpdatedActionData(\n pendingActionResult: PendingActionResult | undefined\n ): Record | null | undefined {\n if (pendingActionResult && !isErrorResult(pendingActionResult[1])) {\n // This is cast to `any` currently because `RouteData`uses any and it\n // would be a breaking change to use any.\n // TODO: v7 - change `RouteData` to use `unknown` instead of `any`\n return {\n [pendingActionResult[0]]: pendingActionResult[1].data as any,\n };\n } else if (state.actionData) {\n if (Object.keys(state.actionData).length === 0) {\n return null;\n } else {\n return state.actionData;\n }\n }\n }\n\n function getUpdatedRevalidatingFetchers(\n revalidatingFetchers: RevalidatingFetcher[]\n ) {\n revalidatingFetchers.forEach((rf) => {\n let fetcher = state.fetchers.get(rf.key);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n fetcher ? fetcher.data : undefined\n );\n state.fetchers.set(rf.key, revalidatingFetcher);\n });\n return new Map(state.fetchers);\n }\n\n // Trigger a fetcher load/submit for the given fetcher key\n function fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ) {\n if (isServer) {\n throw new Error(\n \"router.fetch() was called during the server render, but it shouldn't be. \" +\n \"You are likely calling a useFetcher() method in the body of your component. \" +\n \"Try moving it to a useEffect or a callback.\"\n );\n }\n\n if (fetchControllers.has(key)) abortFetcher(key);\n let flushSync = (opts && opts.unstable_flushSync) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n href,\n future.v7_relativeSplatPath,\n routeId,\n opts?.relative\n );\n let matches = matchRoutes(routesToUse, normalizedPath, basename);\n\n let fogOfWar = checkFogOfWar(matches, routesToUse, normalizedPath);\n if (fogOfWar.active && fogOfWar.matches) {\n matches = fogOfWar.matches;\n }\n\n if (!matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: normalizedPath }),\n { flushSync }\n );\n return;\n }\n\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n true,\n normalizedPath,\n opts\n );\n\n if (error) {\n setFetcherError(key, routeId, error, { flushSync });\n return;\n }\n\n let match = getTargetMatch(matches, path);\n\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n if (submission && isMutationMethod(submission.formMethod)) {\n handleFetcherAction(\n key,\n routeId,\n path,\n match,\n matches,\n fogOfWar.active,\n flushSync,\n submission\n );\n return;\n }\n\n // Store off the match so we can call it's shouldRevalidate on subsequent\n // revalidations\n fetchLoadMatches.set(key, { routeId, path });\n handleFetcherLoader(\n key,\n routeId,\n path,\n match,\n matches,\n fogOfWar.active,\n flushSync,\n submission\n );\n }\n\n // Call the action for the matched fetcher.submit(), and then handle redirects,\n // errors, and revalidation\n async function handleFetcherAction(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n requestMatches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n flushSync: boolean,\n submission: Submission\n ) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n\n function detectAndHandle405Error(m: AgnosticDataRouteMatch) {\n if (!m.route.action && !m.route.lazy) {\n let error = getInternalRouterError(405, {\n method: submission.formMethod,\n pathname: path,\n routeId: routeId,\n });\n setFetcherError(key, routeId, error, { flushSync });\n return true;\n }\n return false;\n }\n\n if (!isFogOfWar && detectAndHandle405Error(match)) {\n return;\n }\n\n // Put this fetcher into it's submitting state\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(key, getSubmittingFetcher(submission, existingFetcher), {\n flushSync,\n });\n\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal,\n submission\n );\n\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n requestMatches,\n path,\n fetchRequest.signal\n );\n\n if (discoverResult.type === \"aborted\") {\n return;\n } else if (discoverResult.type === \"error\") {\n let { error } = handleDiscoverRouteError(path, discoverResult);\n setFetcherError(key, routeId, error, { flushSync });\n return;\n } else if (!discoverResult.matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: path }),\n { flushSync }\n );\n return;\n } else {\n requestMatches = discoverResult.matches;\n match = getTargetMatch(requestMatches, path);\n\n if (detectAndHandle405Error(match)) {\n return;\n }\n }\n }\n\n // Call the action for the fetcher\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let actionResults = await callDataStrategy(\n \"action\",\n state,\n fetchRequest,\n [match],\n requestMatches,\n key\n );\n let actionResult = actionResults[match.route.id];\n\n if (fetchRequest.signal.aborted) {\n // We can delete this so long as we weren't aborted by our own fetcher\n // re-submit which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n return;\n }\n\n // When using v7_fetcherPersist, we don't want errors bubbling up to the UI\n // or redirects processed for unmounted fetchers so we just revert them to\n // idle\n if (future.v7_fetcherPersist && deletedFetchers.has(key)) {\n if (isRedirectResult(actionResult) || isErrorResult(actionResult)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n // Let SuccessResult's fall through for revalidation\n } else {\n if (isRedirectResult(actionResult)) {\n fetchControllers.delete(key);\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our action started, so that\n // should take precedence over this redirect navigation. We already\n // set isRevalidationRequired so all loaders for the new route should\n // fire unless opted out via shouldRevalidate\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n updateFetcherState(key, getLoadingFetcher(submission));\n return startRedirectNavigation(fetchRequest, actionResult, false, {\n fetcherSubmission: submission,\n });\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(actionResult)) {\n setFetcherError(key, routeId, actionResult.error);\n return;\n }\n }\n\n if (isDeferredResult(actionResult)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n // Start the data load for current matches, or the next location if we're\n // in the middle of a navigation\n let nextLocation = state.navigation.location || state.location;\n let revalidationRequest = createClientSideRequest(\n init.history,\n nextLocation,\n abortController.signal\n );\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let matches =\n state.navigation.state !== \"idle\"\n ? matchRoutes(routesToUse, state.navigation.location, basename)\n : state.matches;\n\n invariant(matches, \"Didn't find any matches after fetcher action\");\n\n let loadId = ++incrementingLoadId;\n fetchReloadIds.set(key, loadId);\n\n let loadFetcher = getLoadingFetcher(submission, actionResult.data);\n state.fetchers.set(key, loadFetcher);\n\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n submission,\n nextLocation,\n false,\n future.v7_skipActionErrorRevalidation,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n deletedFetchers,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n [match.route.id, actionResult]\n );\n\n // Put all revalidating fetchers into the loading state, except for the\n // current fetcher which we want to keep in it's current loading state which\n // contains it's action submission info + action data\n revalidatingFetchers\n .filter((rf) => rf.key !== key)\n .forEach((rf) => {\n let staleKey = rf.key;\n let existingFetcher = state.fetchers.get(staleKey);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n existingFetcher ? existingFetcher.data : undefined\n );\n state.fetchers.set(staleKey, revalidatingFetcher);\n if (fetchControllers.has(staleKey)) {\n abortFetcher(staleKey);\n }\n if (rf.controller) {\n fetchControllers.set(staleKey, rf.controller);\n }\n });\n\n updateState({ fetchers: new Map(state.fetchers) });\n\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((rf) => abortFetcher(rf.key));\n\n abortController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n let { loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n revalidationRequest\n );\n\n if (abortController.signal.aborted) {\n return;\n }\n\n abortController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n fetchReloadIds.delete(key);\n fetchControllers.delete(key);\n revalidatingFetchers.forEach((r) => fetchControllers.delete(r.key));\n\n let redirect = findRedirect(loaderResults);\n if (redirect) {\n return startRedirectNavigation(\n revalidationRequest,\n redirect.result,\n false\n );\n }\n\n redirect = findRedirect(fetcherResults);\n if (redirect) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n fetchRedirectIds.add(redirect.key);\n return startRedirectNavigation(\n revalidationRequest,\n redirect.result,\n false\n );\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n matchesToLoad,\n loaderResults,\n undefined,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Since we let revalidations complete even if the submitting fetcher was\n // deleted, only put it back to idle if it hasn't been deleted\n if (state.fetchers.has(key)) {\n let doneFetcher = getDoneFetcher(actionResult.data);\n state.fetchers.set(key, doneFetcher);\n }\n\n abortStaleFetchLoads(loadId);\n\n // If we are currently in a navigation loading state and this fetcher is\n // more recent than the navigation, we want the newer data so abort the\n // navigation and complete it with the fetcher data\n if (\n state.navigation.state === \"loading\" &&\n loadId > pendingNavigationLoadId\n ) {\n invariant(pendingAction, \"Expected pending action\");\n pendingNavigationController && pendingNavigationController.abort();\n\n completeNavigation(state.navigation.location, {\n matches,\n loaderData,\n errors,\n fetchers: new Map(state.fetchers),\n });\n } else {\n // otherwise just update with the fetcher data, preserving any existing\n // loaderData for loaders that did not need to reload. We have to\n // manually merge here since we aren't going through completeNavigation\n updateState({\n errors,\n loaderData: mergeLoaderData(\n state.loaderData,\n loaderData,\n matches,\n errors\n ),\n fetchers: new Map(state.fetchers),\n });\n isRevalidationRequired = false;\n }\n }\n\n // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n async function handleFetcherLoader(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n flushSync: boolean,\n submission?: Submission\n ) {\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(\n key,\n getLoadingFetcher(\n submission,\n existingFetcher ? existingFetcher.data : undefined\n ),\n { flushSync }\n );\n\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal\n );\n\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n matches,\n path,\n fetchRequest.signal\n );\n\n if (discoverResult.type === \"aborted\") {\n return;\n } else if (discoverResult.type === \"error\") {\n let { error } = handleDiscoverRouteError(path, discoverResult);\n setFetcherError(key, routeId, error, { flushSync });\n return;\n } else if (!discoverResult.matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: path }),\n { flushSync }\n );\n return;\n } else {\n matches = discoverResult.matches;\n match = getTargetMatch(matches, path);\n }\n }\n\n // Call the loader for this fetcher route match\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let results = await callDataStrategy(\n \"loader\",\n state,\n fetchRequest,\n [match],\n matches,\n key\n );\n let result = results[match.route.id];\n\n // Deferred isn't supported for fetcher loads, await everything and treat it\n // as a normal load. resolveDeferredData will return undefined if this\n // fetcher gets aborted, so we just leave result untouched and short circuit\n // below if that happens\n if (isDeferredResult(result)) {\n result =\n (await resolveDeferredData(result, fetchRequest.signal, true)) ||\n result;\n }\n\n // We can delete this so long as we weren't aborted by our our own fetcher\n // re-load which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n\n if (fetchRequest.signal.aborted) {\n return;\n }\n\n // We don't want errors bubbling up or redirects followed for unmounted\n // fetchers, so short circuit here if it was removed from the UI\n if (deletedFetchers.has(key)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n\n // If the loader threw a redirect Response, start a new REPLACE navigation\n if (isRedirectResult(result)) {\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our loader started, so that\n // should take precedence over this redirect navigation\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n await startRedirectNavigation(fetchRequest, result, false);\n return;\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(result)) {\n setFetcherError(key, routeId, result.error);\n return;\n }\n\n invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n\n // Put the fetcher back into an idle state\n updateFetcherState(key, getDoneFetcher(result.data));\n }\n\n /**\n * Utility function to handle redirects returned from an action or loader.\n * Normally, a redirect \"replaces\" the navigation that triggered it. So, for\n * example:\n *\n * - user is on /a\n * - user clicks a link to /b\n * - loader for /b redirects to /c\n *\n * In a non-JS app the browser would track the in-flight navigation to /b and\n * then replace it with /c when it encountered the redirect response. In\n * the end it would only ever update the URL bar with /c.\n *\n * In client-side routing using pushState/replaceState, we aim to emulate\n * this behavior and we also do not update history until the end of the\n * navigation (including processed redirects). This means that we never\n * actually touch history until we've processed redirects, so we just use\n * the history action from the original navigation (PUSH or REPLACE).\n */\n async function startRedirectNavigation(\n request: Request,\n redirect: RedirectResult,\n isNavigation: boolean,\n {\n submission,\n fetcherSubmission,\n replace,\n }: {\n submission?: Submission;\n fetcherSubmission?: Submission;\n replace?: boolean;\n } = {}\n ) {\n if (redirect.response.headers.has(\"X-Remix-Revalidate\")) {\n isRevalidationRequired = true;\n }\n\n let location = redirect.response.headers.get(\"Location\");\n invariant(location, \"Expected a Location header on the redirect Response\");\n location = normalizeRedirectLocation(\n location,\n new URL(request.url),\n basename\n );\n let redirectLocation = createLocation(state.location, location, {\n _isRedirect: true,\n });\n\n if (isBrowser) {\n let isDocumentReload = false;\n\n if (redirect.response.headers.has(\"X-Remix-Reload-Document\")) {\n // Hard reload if the response contained X-Remix-Reload-Document\n isDocumentReload = true;\n } else if (ABSOLUTE_URL_REGEX.test(location)) {\n const url = init.history.createURL(location);\n isDocumentReload =\n // Hard reload if it's an absolute URL to a new origin\n url.origin !== routerWindow.location.origin ||\n // Hard reload if it's an absolute URL that does not match our basename\n stripBasename(url.pathname, basename) == null;\n }\n\n if (isDocumentReload) {\n if (replace) {\n routerWindow.location.replace(location);\n } else {\n routerWindow.location.assign(location);\n }\n return;\n }\n }\n\n // There's no need to abort on redirects, since we don't detect the\n // redirect until the action/loaders have settled\n pendingNavigationController = null;\n\n let redirectHistoryAction =\n replace === true || redirect.response.headers.has(\"X-Remix-Replace\")\n ? HistoryAction.Replace\n : HistoryAction.Push;\n\n // Use the incoming submission if provided, fallback on the active one in\n // state.navigation\n let { formMethod, formAction, formEncType } = state.navigation;\n if (\n !submission &&\n !fetcherSubmission &&\n formMethod &&\n formAction &&\n formEncType\n ) {\n submission = getSubmissionFromNavigation(state.navigation);\n }\n\n // If this was a 307/308 submission we want to preserve the HTTP method and\n // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the\n // redirected location\n let activeSubmission = submission || fetcherSubmission;\n if (\n redirectPreserveMethodStatusCodes.has(redirect.response.status) &&\n activeSubmission &&\n isMutationMethod(activeSubmission.formMethod)\n ) {\n await startNavigation(redirectHistoryAction, redirectLocation, {\n submission: {\n ...activeSubmission,\n formAction: location,\n },\n // Preserve these flags across redirects\n preventScrollReset: pendingPreventScrollReset,\n enableViewTransition: isNavigation\n ? pendingViewTransitionEnabled\n : undefined,\n });\n } else {\n // If we have a navigation submission, we will preserve it through the\n // redirect navigation\n let overrideNavigation = getLoadingNavigation(\n redirectLocation,\n submission\n );\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation,\n // Send fetcher submissions through for shouldRevalidate\n fetcherSubmission,\n // Preserve these flags across redirects\n preventScrollReset: pendingPreventScrollReset,\n enableViewTransition: isNavigation\n ? pendingViewTransitionEnabled\n : undefined,\n });\n }\n }\n\n // Utility wrapper for calling dataStrategy client-side without having to\n // pass around the manifest, mapRouteProperties, etc.\n async function callDataStrategy(\n type: \"loader\" | \"action\",\n state: RouterState,\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n fetcherKey: string | null\n ): Promise> {\n let results: Record;\n let dataResults: Record = {};\n try {\n results = await callDataStrategyImpl(\n dataStrategyImpl,\n type,\n state,\n request,\n matchesToLoad,\n matches,\n fetcherKey,\n manifest,\n mapRouteProperties\n );\n } catch (e) {\n // If the outer dataStrategy method throws, just return the error for all\n // matches - and it'll naturally bubble to the root\n matchesToLoad.forEach((m) => {\n dataResults[m.route.id] = {\n type: ResultType.error,\n error: e,\n };\n });\n return dataResults;\n }\n\n for (let [routeId, result] of Object.entries(results)) {\n if (isRedirectDataStrategyResultResult(result)) {\n let response = result.result as Response;\n dataResults[routeId] = {\n type: ResultType.redirect,\n response: normalizeRelativeRoutingRedirectResponse(\n response,\n request,\n routeId,\n matches,\n basename,\n future.v7_relativeSplatPath\n ),\n };\n } else {\n dataResults[routeId] = await convertDataStrategyResultToDataResult(\n result\n );\n }\n }\n\n return dataResults;\n }\n\n async function callLoadersAndMaybeResolveData(\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n fetchersToLoad: RevalidatingFetcher[],\n request: Request\n ) {\n let currentMatches = state.matches;\n\n // Kick off loaders and fetchers in parallel\n let loaderResultsPromise = callDataStrategy(\n \"loader\",\n state,\n request,\n matchesToLoad,\n matches,\n null\n );\n\n let fetcherResultsPromise = Promise.all(\n fetchersToLoad.map(async (f) => {\n if (f.matches && f.match && f.controller) {\n let results = await callDataStrategy(\n \"loader\",\n state,\n createClientSideRequest(init.history, f.path, f.controller.signal),\n [f.match],\n f.matches,\n f.key\n );\n let result = results[f.match.route.id];\n // Fetcher results are keyed by fetcher key from here on out, not routeId\n return { [f.key]: result };\n } else {\n return Promise.resolve({\n [f.key]: {\n type: ResultType.error,\n error: getInternalRouterError(404, {\n pathname: f.path,\n }),\n } as ErrorResult,\n });\n }\n })\n );\n\n let loaderResults = await loaderResultsPromise;\n let fetcherResults = (await fetcherResultsPromise).reduce(\n (acc, r) => Object.assign(acc, r),\n {}\n );\n\n await Promise.all([\n resolveNavigationDeferredResults(\n matches,\n loaderResults,\n request.signal,\n currentMatches,\n state.loaderData\n ),\n resolveFetcherDeferredResults(matches, fetcherResults, fetchersToLoad),\n ]);\n\n return {\n loaderResults,\n fetcherResults,\n };\n }\n\n function interruptActiveLoads() {\n // Every interruption triggers a revalidation\n isRevalidationRequired = true;\n\n // Cancel pending route-level deferreds and mark cancelled routes for\n // revalidation\n cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n\n // Abort in-flight fetcher loads\n fetchLoadMatches.forEach((_, key) => {\n if (fetchControllers.has(key)) {\n cancelledFetcherLoads.add(key);\n abortFetcher(key);\n }\n });\n }\n\n function updateFetcherState(\n key: string,\n fetcher: Fetcher,\n opts: { flushSync?: boolean } = {}\n ) {\n state.fetchers.set(key, fetcher);\n updateState(\n { fetchers: new Map(state.fetchers) },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n\n function setFetcherError(\n key: string,\n routeId: string,\n error: any,\n opts: { flushSync?: boolean } = {}\n ) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState(\n {\n errors: {\n [boundaryMatch.route.id]: error,\n },\n fetchers: new Map(state.fetchers),\n },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n\n function getFetcher(key: string): Fetcher {\n if (future.v7_fetcherPersist) {\n activeFetchers.set(key, (activeFetchers.get(key) || 0) + 1);\n // If this fetcher was previously marked for deletion, unmark it since we\n // have a new instance\n if (deletedFetchers.has(key)) {\n deletedFetchers.delete(key);\n }\n }\n return state.fetchers.get(key) || IDLE_FETCHER;\n }\n\n function deleteFetcher(key: string): void {\n let fetcher = state.fetchers.get(key);\n // Don't abort the controller if this is a deletion of a fetcher.submit()\n // in it's loading phase since - we don't want to abort the corresponding\n // revalidation and want them to complete and land\n if (\n fetchControllers.has(key) &&\n !(fetcher && fetcher.state === \"loading\" && fetchReloadIds.has(key))\n ) {\n abortFetcher(key);\n }\n fetchLoadMatches.delete(key);\n fetchReloadIds.delete(key);\n fetchRedirectIds.delete(key);\n deletedFetchers.delete(key);\n cancelledFetcherLoads.delete(key);\n state.fetchers.delete(key);\n }\n\n function deleteFetcherAndUpdateState(key: string): void {\n if (future.v7_fetcherPersist) {\n let count = (activeFetchers.get(key) || 0) - 1;\n if (count <= 0) {\n activeFetchers.delete(key);\n deletedFetchers.add(key);\n } else {\n activeFetchers.set(key, count);\n }\n } else {\n deleteFetcher(key);\n }\n updateState({ fetchers: new Map(state.fetchers) });\n }\n\n function abortFetcher(key: string) {\n let controller = fetchControllers.get(key);\n invariant(controller, `Expected fetch controller: ${key}`);\n controller.abort();\n fetchControllers.delete(key);\n }\n\n function markFetchersDone(keys: string[]) {\n for (let key of keys) {\n let fetcher = getFetcher(key);\n let doneFetcher = getDoneFetcher(fetcher.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n function markFetchRedirectsDone(): boolean {\n let doneKeys = [];\n let updatedFetchers = false;\n for (let key of fetchRedirectIds) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n fetchRedirectIds.delete(key);\n doneKeys.push(key);\n updatedFetchers = true;\n }\n }\n markFetchersDone(doneKeys);\n return updatedFetchers;\n }\n\n function abortStaleFetchLoads(landedId: number): boolean {\n let yeetedKeys = [];\n for (let [key, id] of fetchReloadIds) {\n if (id < landedId) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n abortFetcher(key);\n fetchReloadIds.delete(key);\n yeetedKeys.push(key);\n }\n }\n }\n markFetchersDone(yeetedKeys);\n return yeetedKeys.length > 0;\n }\n\n function getBlocker(key: string, fn: BlockerFunction) {\n let blocker: Blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n if (blockerFunctions.get(key) !== fn) {\n blockerFunctions.set(key, fn);\n }\n\n return blocker;\n }\n\n function deleteBlocker(key: string) {\n state.blockers.delete(key);\n blockerFunctions.delete(key);\n }\n\n // Utility function to update blockers, ensuring valid state transitions\n function updateBlocker(key: string, newBlocker: Blocker) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n // Poor mans state machine :)\n // https://mermaid.live/edit#pako:eNqVkc9OwzAMxl8l8nnjAYrEtDIOHEBIgwvKJTReGy3_lDpIqO27k6awMG0XcrLlnz87nwdonESogKXXBuE79rq75XZO3-yHds0RJVuv70YrPlUrCEe2HfrORS3rubqZfuhtpg5C9wk5tZ4VKcRUq88q9Z8RS0-48cE1iHJkL0ugbHuFLus9L6spZy8nX9MP2CNdomVaposqu3fGayT8T8-jJQwhepo_UtpgBQaDEUom04dZhAN1aJBDlUKJBxE1ceB2Smj0Mln-IBW5AFU2dwUiktt_2Qaq2dBfaKdEup85UV7Yd-dKjlnkabl2Pvr0DTkTreM\n invariant(\n (blocker.state === \"unblocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"proceeding\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"unblocked\") ||\n (blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\"),\n `Invalid blocker state transition: ${blocker.state} -> ${newBlocker.state}`\n );\n\n let blockers = new Map(state.blockers);\n blockers.set(key, newBlocker);\n updateState({ blockers });\n }\n\n function shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n }: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n }): string | undefined {\n if (blockerFunctions.size === 0) {\n return;\n }\n\n // We ony support a single active blocker at the moment since we don't have\n // any compelling use cases for multi-blocker yet\n if (blockerFunctions.size > 1) {\n warning(false, \"A router only supports one blocker at a time\");\n }\n\n let entries = Array.from(blockerFunctions.entries());\n let [blockerKey, blockerFunction] = entries[entries.length - 1];\n let blocker = state.blockers.get(blockerKey);\n\n if (blocker && blocker.state === \"proceeding\") {\n // If the blocker is currently proceeding, we don't need to re-check\n // it and can let this navigation continue\n return;\n }\n\n // At this point, we know we're unblocked/blocked so we need to check the\n // user-provided blocker function\n if (blockerFunction({ currentLocation, nextLocation, historyAction })) {\n return blockerKey;\n }\n }\n\n function handleNavigational404(pathname: string) {\n let error = getInternalRouterError(404, { pathname });\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let { matches, route } = getShortCircuitMatches(routesToUse);\n\n // Cancel all pending deferred on 404s since we don't keep any routes\n cancelActiveDeferreds();\n\n return { notFoundMatches: matches, route, error };\n }\n\n function handleDiscoverRouteError(\n pathname: string,\n discoverResult: DiscoverRoutesErrorResult\n ) {\n return {\n boundaryId: findNearestBoundary(discoverResult.partialMatches).route.id,\n error: getInternalRouterError(400, {\n type: \"route-discovery\",\n pathname,\n message:\n discoverResult.error != null && \"message\" in discoverResult.error\n ? discoverResult.error\n : String(discoverResult.error),\n }),\n };\n }\n\n function cancelActiveDeferreds(\n predicate?: (routeId: string) => boolean\n ): string[] {\n let cancelledRouteIds: string[] = [];\n activeDeferreds.forEach((dfd, routeId) => {\n if (!predicate || predicate(routeId)) {\n // Cancel the deferred - but do not remove from activeDeferreds here -\n // we rely on the subscribers to do that so our tests can assert proper\n // cleanup via _internalActiveDeferreds\n dfd.cancel();\n cancelledRouteIds.push(routeId);\n activeDeferreds.delete(routeId);\n }\n });\n return cancelledRouteIds;\n }\n\n // Opt in to capturing and reporting scroll positions during navigations,\n // used by the component\n function enableScrollRestoration(\n positions: Record,\n getPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ) {\n savedScrollPositions = positions;\n getScrollPosition = getPosition;\n getScrollRestorationKey = getKey || null;\n\n // Perform initial hydration scroll restoration, since we miss the boat on\n // the initial updateState() because we've not yet rendered \n // and therefore have no savedScrollPositions available\n if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n initialScrollRestored = true;\n let y = getSavedScrollPosition(state.location, state.matches);\n if (y != null) {\n updateState({ restoreScrollPosition: y });\n }\n }\n\n return () => {\n savedScrollPositions = null;\n getScrollPosition = null;\n getScrollRestorationKey = null;\n };\n }\n\n function getScrollKey(location: Location, matches: AgnosticDataRouteMatch[]) {\n if (getScrollRestorationKey) {\n let key = getScrollRestorationKey(\n location,\n matches.map((m) => convertRouteMatchToUiMatch(m, state.loaderData))\n );\n return key || location.key;\n }\n return location.key;\n }\n\n function saveScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): void {\n if (savedScrollPositions && getScrollPosition) {\n let key = getScrollKey(location, matches);\n savedScrollPositions[key] = getScrollPosition();\n }\n }\n\n function getSavedScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): number | null {\n if (savedScrollPositions) {\n let key = getScrollKey(location, matches);\n let y = savedScrollPositions[key];\n if (typeof y === \"number\") {\n return y;\n }\n }\n return null;\n }\n\n function checkFogOfWar(\n matches: AgnosticDataRouteMatch[] | null,\n routesToUse: AgnosticDataRouteObject[],\n pathname: string\n ): { active: boolean; matches: AgnosticDataRouteMatch[] | null } {\n if (patchRoutesOnNavigationImpl) {\n // Don't bother re-calling patchRouteOnMiss for a path we've already\n // processed. the last execution would have patched the route tree\n // accordingly so `matches` here are already accurate.\n if (discoveredRoutes.has(pathname)) {\n return { active: false, matches };\n }\n\n if (!matches) {\n let fogMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n\n return { active: true, matches: fogMatches || [] };\n } else {\n if (Object.keys(matches[0].params).length > 0) {\n // If we matched a dynamic param or a splat, it might only be because\n // we haven't yet discovered other routes that would match with a\n // higher score. Call patchRoutesOnNavigation just to be sure\n let partialMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n return { active: true, matches: partialMatches };\n }\n }\n }\n\n return { active: false, matches: null };\n }\n\n type DiscoverRoutesSuccessResult = {\n type: \"success\";\n matches: AgnosticDataRouteMatch[] | null;\n };\n type DiscoverRoutesErrorResult = {\n type: \"error\";\n error: any;\n partialMatches: AgnosticDataRouteMatch[];\n };\n type DiscoverRoutesAbortedResult = { type: \"aborted\" };\n type DiscoverRoutesResult =\n | DiscoverRoutesSuccessResult\n | DiscoverRoutesErrorResult\n | DiscoverRoutesAbortedResult;\n\n async function discoverRoutes(\n matches: AgnosticDataRouteMatch[],\n pathname: string,\n signal: AbortSignal\n ): Promise {\n let partialMatches: AgnosticDataRouteMatch[] | null = matches;\n while (true) {\n let isNonHMR = inFlightDataRoutes == null;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n try {\n await loadLazyRouteChildren(\n patchRoutesOnNavigationImpl!,\n pathname,\n partialMatches,\n routesToUse,\n manifest,\n mapRouteProperties,\n pendingPatchRoutes,\n signal\n );\n } catch (e) {\n return { type: \"error\", error: e, partialMatches };\n } finally {\n // If we are not in the middle of an HMR revalidation and we changed the\n // routes, provide a new identity so when we `updateState` at the end of\n // this navigation/fetch `router.routes` will be a new identity and\n // trigger a re-run of memoized `router.routes` dependencies.\n // HMR will already update the identity and reflow when it lands\n // `inFlightDataRoutes` in `completeNavigation`\n if (isNonHMR) {\n dataRoutes = [...dataRoutes];\n }\n }\n\n if (signal.aborted) {\n return { type: \"aborted\" };\n }\n\n let newMatches = matchRoutes(routesToUse, pathname, basename);\n if (newMatches) {\n addToFifoQueue(pathname, discoveredRoutes);\n return { type: \"success\", matches: newMatches };\n }\n\n let newPartialMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n\n // Avoid loops if the second pass results in the same partial matches\n if (\n !newPartialMatches ||\n (partialMatches.length === newPartialMatches.length &&\n partialMatches.every(\n (m, i) => m.route.id === newPartialMatches![i].route.id\n ))\n ) {\n addToFifoQueue(pathname, discoveredRoutes);\n return { type: \"success\", matches: null };\n }\n\n partialMatches = newPartialMatches;\n }\n }\n\n function addToFifoQueue(path: string, queue: Set) {\n if (queue.size >= discoveredRoutesMaxSize) {\n let first = queue.values().next().value;\n queue.delete(first);\n }\n queue.add(path);\n }\n\n function _internalSetRoutes(newRoutes: AgnosticDataRouteObject[]) {\n manifest = {};\n inFlightDataRoutes = convertRoutesToDataRoutes(\n newRoutes,\n mapRouteProperties,\n undefined,\n manifest\n );\n }\n\n function patchRoutes(\n routeId: string | null,\n children: AgnosticRouteObject[]\n ): void {\n let isNonHMR = inFlightDataRoutes == null;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n patchRoutesImpl(\n routeId,\n children,\n routesToUse,\n manifest,\n mapRouteProperties\n );\n\n // If we are not in the middle of an HMR revalidation and we changed the\n // routes, provide a new identity and trigger a reflow via `updateState`\n // to re-run memoized `router.routes` dependencies.\n // HMR will already update the identity and reflow when it lands\n // `inFlightDataRoutes` in `completeNavigation`\n if (isNonHMR) {\n dataRoutes = [...dataRoutes];\n updateState({});\n }\n }\n\n router = {\n get basename() {\n return basename;\n },\n get future() {\n return future;\n },\n get state() {\n return state;\n },\n get routes() {\n return dataRoutes;\n },\n get window() {\n return routerWindow;\n },\n initialize,\n subscribe,\n enableScrollRestoration,\n navigate,\n fetch,\n revalidate,\n // Passthrough to history-aware createHref used by useHref so we get proper\n // hash-aware URLs in DOM paths\n createHref: (to: To) => init.history.createHref(to),\n encodeLocation: (to: To) => init.history.encodeLocation(to),\n getFetcher,\n deleteFetcher: deleteFetcherAndUpdateState,\n dispose,\n getBlocker,\n deleteBlocker,\n patchRoutes,\n _internalFetchControllers: fetchControllers,\n _internalActiveDeferreds: activeDeferreds,\n // TODO: Remove setRoutes, it's temporary to avoid dealing with\n // updating the tree while validating the update algorithm.\n _internalSetRoutes,\n };\n\n return router;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\n\nexport const UNSAFE_DEFERRED_SYMBOL = Symbol(\"deferred\");\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface StaticHandlerFutureConfig {\n v7_relativeSplatPath: boolean;\n v7_throwAbortReason: boolean;\n}\n\nexport interface CreateStaticHandlerOptions {\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial;\n}\n\nexport function createStaticHandler(\n routes: AgnosticRouteObject[],\n opts?: CreateStaticHandlerOptions\n): StaticHandler {\n invariant(\n routes.length > 0,\n \"You must provide a non-empty routes array to createStaticHandler\"\n );\n\n let manifest: RouteManifest = {};\n let basename = (opts ? opts.basename : null) || \"/\";\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (opts?.mapRouteProperties) {\n mapRouteProperties = opts.mapRouteProperties;\n } else if (opts?.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = opts.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n // Config driven behavior flags\n let future: StaticHandlerFutureConfig = {\n v7_relativeSplatPath: false,\n v7_throwAbortReason: false,\n ...(opts ? opts.future : null),\n };\n\n let dataRoutes = convertRoutesToDataRoutes(\n routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n\n /**\n * The query() method is intended for document requests, in which we want to\n * call an optional action and potentially multiple loaders for all nested\n * routes. It returns a StaticHandlerContext object, which is very similar\n * to the router state (location, loaderData, actionData, errors, etc.) and\n * also adds SSR-specific information such as the statusCode and headers\n * from action/loaders Responses.\n *\n * It _should_ never throw and should report all errors through the\n * returned context.errors object, properly associating errors to their error\n * boundary. Additionally, it tracks _deepestRenderedBoundaryId which can be\n * used to emulate React error boundaries during SSr by performing a second\n * pass only down to the boundaryId.\n *\n * The one exception where we do not return a StaticHandlerContext is when a\n * redirect response is returned or thrown from any action/loader. We\n * propagate that out and return the raw Response so the HTTP server can\n * return it directly.\n *\n * - `opts.requestContext` is an optional server context that will be passed\n * to actions/loaders in the `context` parameter\n * - `opts.skipLoaderErrorBubbling` is an optional parameter that will prevent\n * the bubbling of errors which allows single-fetch-type implementations\n * where the client will handle the bubbling and we may need to return data\n * for the handling route\n */\n async function query(\n request: Request,\n {\n requestContext,\n skipLoaderErrorBubbling,\n unstable_dataStrategy,\n }: {\n requestContext?: unknown;\n skipLoaderErrorBubbling?: boolean;\n unstable_dataStrategy?: DataStrategyFunction;\n } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\") {\n let error = getInternalRouterError(405, { method });\n let { matches: methodNotAllowedMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: methodNotAllowedMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n } else if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: notFoundMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n unstable_dataStrategy || null,\n skipLoaderErrorBubbling === true,\n null\n );\n if (isResponse(result)) {\n return result;\n }\n\n // When returning StaticHandlerContext, we patch back in the location here\n // since we need it for React Context. But this helps keep our submit and\n // loadRouteData operating on a Request instead of a Location\n return { location, basename, ...result };\n }\n\n /**\n * The queryRoute() method is intended for targeted route requests, either\n * for fetch ?_data requests or resource route requests. In this case, we\n * are only ever calling a single action or loader, and we are returning the\n * returned value directly. In most cases, this will be a Response returned\n * from the action/loader, but it may be a primitive or other value as well -\n * and in such cases the calling context should handle that accordingly.\n *\n * We do respect the throw/return differentiation, so if an action/loader\n * throws, then this method will throw the value. This is important so we\n * can do proper boundary identification in Remix where a thrown Response\n * must go to the Catch Boundary but a returned Response is happy-path.\n *\n * One thing to note is that any Router-initiated Errors that make sense\n * to associate with a status code will be thrown as an ErrorResponse\n * instance which include the raw Error, such that the calling context can\n * serialize the error as they see fit while including the proper response\n * code. Examples here are 404 and 405 errors that occur prior to reaching\n * any user-defined loaders.\n *\n * - `opts.routeId` allows you to specify the specific route handler to call.\n * If not provided the handler will determine the proper route by matching\n * against `request.url`\n * - `opts.requestContext` is an optional server context that will be passed\n * to actions/loaders in the `context` parameter\n */\n async function queryRoute(\n request: Request,\n {\n routeId,\n requestContext,\n unstable_dataStrategy,\n }: {\n requestContext?: unknown;\n routeId?: string;\n unstable_dataStrategy?: DataStrategyFunction;\n } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\" && method !== \"OPTIONS\") {\n throw getInternalRouterError(405, { method });\n } else if (!matches) {\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let match = routeId\n ? matches.find((m) => m.route.id === routeId)\n : getTargetMatch(matches, location);\n\n if (routeId && !match) {\n throw getInternalRouterError(403, {\n pathname: location.pathname,\n routeId,\n });\n } else if (!match) {\n // This should never hit I don't think?\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n unstable_dataStrategy || null,\n false,\n match\n );\n\n if (isResponse(result)) {\n return result;\n }\n\n let error = result.errors ? Object.values(result.errors)[0] : undefined;\n if (error !== undefined) {\n // If we got back result.errors, that means the loader/action threw\n // _something_ that wasn't a Response, but it's not guaranteed/required\n // to be an `instanceof Error` either, so we have to use throw here to\n // preserve the \"error\" state outside of queryImpl.\n throw error;\n }\n\n // Pick off the right state value to return\n if (result.actionData) {\n return Object.values(result.actionData)[0];\n }\n\n if (result.loaderData) {\n let data = Object.values(result.loaderData)[0];\n if (result.activeDeferreds?.[match.route.id]) {\n data[UNSAFE_DEFERRED_SYMBOL] = result.activeDeferreds[match.route.id];\n }\n return data;\n }\n\n return undefined;\n }\n\n async function queryImpl(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n unstable_dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n routeMatch: AgnosticDataRouteMatch | null\n ): Promise | Response> {\n invariant(\n request.signal,\n \"query()/queryRoute() requests must contain an AbortController signal\"\n );\n\n try {\n if (isMutationMethod(request.method.toLowerCase())) {\n let result = await submit(\n request,\n matches,\n routeMatch || getTargetMatch(matches, location),\n requestContext,\n unstable_dataStrategy,\n skipLoaderErrorBubbling,\n routeMatch != null\n );\n return result;\n }\n\n let result = await loadRouteData(\n request,\n matches,\n requestContext,\n unstable_dataStrategy,\n skipLoaderErrorBubbling,\n routeMatch\n );\n return isResponse(result)\n ? result\n : {\n ...result,\n actionData: null,\n actionHeaders: {},\n };\n } catch (e) {\n // If the user threw/returned a Response in callLoaderOrAction for a\n // `queryRoute` call, we throw the `DataStrategyResult` to bail out early\n // and then return or throw the raw Response here accordingly\n if (isDataStrategyResult(e) && isResponse(e.result)) {\n if (e.type === ResultType.error) {\n throw e.result;\n }\n return e.result;\n }\n // Redirects are always returned since they don't propagate to catch\n // boundaries\n if (isRedirectResponse(e)) {\n return e;\n }\n throw e;\n }\n }\n\n async function submit(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n actionMatch: AgnosticDataRouteMatch,\n requestContext: unknown,\n unstable_dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n isRouteRequest: boolean\n ): Promise | Response> {\n let result: DataResult;\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n let error = getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: actionMatch.route.id,\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n } else {\n let results = await callDataStrategy(\n \"action\",\n request,\n [actionMatch],\n matches,\n isRouteRequest,\n requestContext,\n unstable_dataStrategy\n );\n result = results[actionMatch.route.id];\n\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n }\n\n if (isRedirectResult(result)) {\n // Uhhhh - this should never happen, we should always throw these from\n // callLoaderOrAction, but the type narrowing here keeps TS happy and we\n // can get back on the \"throw all redirect responses\" train here should\n // this ever happen :/\n throw new Response(null, {\n status: result.response.status,\n headers: {\n Location: result.response.headers.get(\"Location\")!,\n },\n });\n }\n\n if (isDeferredResult(result)) {\n let error = getInternalRouterError(400, { type: \"defer-action\" });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n }\n\n if (isRouteRequest) {\n // Note: This should only be non-Response values if we get here, since\n // isRouteRequest should throw any Response received in callLoaderOrAction\n if (isErrorResult(result)) {\n throw result.error;\n }\n\n return {\n matches: [actionMatch],\n loaderData: {},\n actionData: { [actionMatch.route.id]: result.data },\n errors: null,\n // Note: statusCode + headers are unused here since queryRoute will\n // return the raw Response or value\n statusCode: 200,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n // Create a GET request for the loaders\n let loaderRequest = new Request(request.url, {\n headers: request.headers,\n redirect: request.redirect,\n signal: request.signal,\n });\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = skipLoaderErrorBubbling\n ? actionMatch\n : findNearestBoundary(matches, actionMatch.route.id);\n\n let context = await loadRouteData(\n loaderRequest,\n matches,\n requestContext,\n unstable_dataStrategy,\n skipLoaderErrorBubbling,\n null,\n [boundaryMatch.route.id, result]\n );\n\n // action status codes take precedence over loader status codes\n return {\n ...context,\n statusCode: isRouteErrorResponse(result.error)\n ? result.error.status\n : result.statusCode != null\n ? result.statusCode\n : 500,\n actionData: null,\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n let context = await loadRouteData(\n loaderRequest,\n matches,\n requestContext,\n unstable_dataStrategy,\n skipLoaderErrorBubbling,\n null\n );\n\n return {\n ...context,\n actionData: {\n [actionMatch.route.id]: result.data,\n },\n // action status codes take precedence over loader status codes\n ...(result.statusCode ? { statusCode: result.statusCode } : {}),\n actionHeaders: result.headers\n ? { [actionMatch.route.id]: result.headers }\n : {},\n };\n }\n\n async function loadRouteData(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n unstable_dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n routeMatch: AgnosticDataRouteMatch | null,\n pendingActionResult?: PendingActionResult\n ): Promise<\n | Omit<\n StaticHandlerContext,\n \"location\" | \"basename\" | \"actionData\" | \"actionHeaders\"\n >\n | Response\n > {\n let isRouteRequest = routeMatch != null;\n\n // Short circuit if we have no loaders to run (queryRoute())\n if (\n isRouteRequest &&\n !routeMatch?.route.loader &&\n !routeMatch?.route.lazy\n ) {\n throw getInternalRouterError(400, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: routeMatch?.route.id,\n });\n }\n\n let requestMatches = routeMatch\n ? [routeMatch]\n : pendingActionResult && isErrorResult(pendingActionResult[1])\n ? getLoaderMatchesUntilBoundary(matches, pendingActionResult[0])\n : matches;\n let matchesToLoad = requestMatches.filter(\n (m) => m.route.loader || m.route.lazy\n );\n\n // Short circuit if we have no loaders to run (query())\n if (matchesToLoad.length === 0) {\n return {\n matches,\n // Add a null for all matched routes for proper revalidation on the client\n loaderData: matches.reduce(\n (acc, m) => Object.assign(acc, { [m.route.id]: null }),\n {}\n ),\n errors:\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? {\n [pendingActionResult[0]]: pendingActionResult[1].error,\n }\n : null,\n statusCode: 200,\n loaderHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let results = await callDataStrategy(\n \"loader\",\n request,\n matchesToLoad,\n matches,\n isRouteRequest,\n requestContext,\n unstable_dataStrategy\n );\n\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n\n // Process and commit output from loaders\n let activeDeferreds = new Map();\n let context = processRouteLoaderData(\n matches,\n results,\n pendingActionResult,\n activeDeferreds,\n skipLoaderErrorBubbling\n );\n\n // Add a null for any non-loader matches for proper revalidation on the client\n let executedLoaders = new Set(\n matchesToLoad.map((match) => match.route.id)\n );\n matches.forEach((match) => {\n if (!executedLoaders.has(match.route.id)) {\n context.loaderData[match.route.id] = null;\n }\n });\n\n return {\n ...context,\n matches,\n activeDeferreds:\n activeDeferreds.size > 0\n ? Object.fromEntries(activeDeferreds.entries())\n : null,\n };\n }\n\n // Utility wrapper for calling dataStrategy server-side without having to\n // pass around the manifest, mapRouteProperties, etc.\n async function callDataStrategy(\n type: \"loader\" | \"action\",\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n isRouteRequest: boolean,\n requestContext: unknown,\n unstable_dataStrategy: DataStrategyFunction | null\n ): Promise> {\n let results = await callDataStrategyImpl(\n unstable_dataStrategy || defaultDataStrategy,\n type,\n null,\n request,\n matchesToLoad,\n matches,\n null,\n manifest,\n mapRouteProperties,\n requestContext\n );\n\n let dataResults: Record = {};\n await Promise.all(\n matches.map(async (match) => {\n if (!(match.route.id in results)) {\n return;\n }\n let result = results[match.route.id];\n if (isRedirectDataStrategyResultResult(result)) {\n let response = result.result as Response;\n // Throw redirects and let the server handle them with an HTTP redirect\n throw normalizeRelativeRoutingRedirectResponse(\n response,\n request,\n match.route.id,\n matches,\n basename,\n future.v7_relativeSplatPath\n );\n }\n if (isResponse(result.result) && isRouteRequest) {\n // For SSR single-route requests, we want to hand Responses back\n // directly without unwrapping\n throw result;\n }\n\n dataResults[match.route.id] =\n await convertDataStrategyResultToDataResult(result);\n })\n );\n return dataResults;\n }\n\n return {\n dataRoutes,\n query,\n queryRoute,\n };\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Helpers\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Given an existing StaticHandlerContext and an error thrown at render time,\n * provide an updated StaticHandlerContext suitable for a second SSR render\n */\nexport function getStaticContextFromError(\n routes: AgnosticDataRouteObject[],\n context: StaticHandlerContext,\n error: any\n) {\n let newContext: StaticHandlerContext = {\n ...context,\n statusCode: isRouteErrorResponse(error) ? error.status : 500,\n errors: {\n [context._deepestRenderedBoundaryId || routes[0].id]: error,\n },\n };\n return newContext;\n}\n\nfunction throwStaticHandlerAbortedError(\n request: Request,\n isRouteRequest: boolean,\n future: StaticHandlerFutureConfig\n) {\n if (future.v7_throwAbortReason && request.signal.reason !== undefined) {\n throw request.signal.reason;\n }\n\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(`${method}() call aborted: ${request.method} ${request.url}`);\n}\n\nfunction isSubmissionNavigation(\n opts: BaseNavigateOrFetchOptions\n): opts is SubmissionNavigateOptions {\n return (\n opts != null &&\n ((\"formData\" in opts && opts.formData != null) ||\n (\"body\" in opts && opts.body !== undefined))\n );\n}\n\nfunction normalizeTo(\n location: Path,\n matches: AgnosticDataRouteMatch[],\n basename: string,\n prependBasename: boolean,\n to: To | null,\n v7_relativeSplatPath: boolean,\n fromRouteId?: string,\n relative?: RelativeRoutingType\n) {\n let contextualMatches: AgnosticDataRouteMatch[];\n let activeRouteMatch: AgnosticDataRouteMatch | undefined;\n if (fromRouteId) {\n // Grab matches up to the calling route so our route-relative logic is\n // relative to the correct source route\n contextualMatches = [];\n for (let match of matches) {\n contextualMatches.push(match);\n if (match.route.id === fromRouteId) {\n activeRouteMatch = match;\n break;\n }\n }\n } else {\n contextualMatches = matches;\n activeRouteMatch = matches[matches.length - 1];\n }\n\n // Resolve the relative path\n let path = resolveTo(\n to ? to : \".\",\n getResolveToMatches(contextualMatches, v7_relativeSplatPath),\n stripBasename(location.pathname, basename) || location.pathname,\n relative === \"path\"\n );\n\n // When `to` is not specified we inherit search/hash from the current\n // location, unlike when to=\".\" and we just inherit the path.\n // See https://github.com/remix-run/remix/issues/927\n if (to == null) {\n path.search = location.search;\n path.hash = location.hash;\n }\n\n // Add an ?index param for matched index routes if we don't already have one\n if (\n (to == null || to === \"\" || to === \".\") &&\n activeRouteMatch &&\n activeRouteMatch.route.index &&\n !hasNakedIndexQuery(path.search)\n ) {\n path.search = path.search\n ? path.search.replace(/^\\?/, \"?index&\")\n : \"?index\";\n }\n\n // If we're operating within a basename, prepend it to the pathname. If\n // this is a root navigation, then just use the raw basename which allows\n // the basename to have full control over the presence of a trailing slash\n // on root actions\n if (prependBasename && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n\n return createPath(path);\n}\n\n// Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\nfunction normalizeNavigateOptions(\n normalizeFormMethod: boolean,\n isFetcher: boolean,\n path: string,\n opts?: BaseNavigateOrFetchOptions\n): {\n path: string;\n submission?: Submission;\n error?: ErrorResponseImpl;\n} {\n // Return location verbatim on non-submission navigations\n if (!opts || !isSubmissionNavigation(opts)) {\n return { path };\n }\n\n if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n return {\n path,\n error: getInternalRouterError(405, { method: opts.formMethod }),\n };\n }\n\n let getInvalidBodyError = () => ({\n path,\n error: getInternalRouterError(400, { type: \"invalid-body\" }),\n });\n\n // Create a Submission on non-GET navigations\n let rawFormMethod = opts.formMethod || \"get\";\n let formMethod = normalizeFormMethod\n ? (rawFormMethod.toUpperCase() as V7_FormMethod)\n : (rawFormMethod.toLowerCase() as FormMethod);\n let formAction = stripHashFromPath(path);\n\n if (opts.body !== undefined) {\n if (opts.formEncType === \"text/plain\") {\n // text only support POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n let text =\n typeof opts.body === \"string\"\n ? opts.body\n : opts.body instanceof FormData ||\n opts.body instanceof URLSearchParams\n ? // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#plain-text-form-data\n Array.from(opts.body.entries()).reduce(\n (acc, [name, value]) => `${acc}${name}=${value}\\n`,\n \"\"\n )\n : String(opts.body);\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json: undefined,\n text,\n },\n };\n } else if (opts.formEncType === \"application/json\") {\n // json only supports POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n try {\n let json =\n typeof opts.body === \"string\" ? JSON.parse(opts.body) : opts.body;\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json,\n text: undefined,\n },\n };\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n }\n\n invariant(\n typeof FormData === \"function\",\n \"FormData is not available in this environment\"\n );\n\n let searchParams: URLSearchParams;\n let formData: FormData;\n\n if (opts.formData) {\n searchParams = convertFormDataToSearchParams(opts.formData);\n formData = opts.formData;\n } else if (opts.body instanceof FormData) {\n searchParams = convertFormDataToSearchParams(opts.body);\n formData = opts.body;\n } else if (opts.body instanceof URLSearchParams) {\n searchParams = opts.body;\n formData = convertSearchParamsToFormData(searchParams);\n } else if (opts.body == null) {\n searchParams = new URLSearchParams();\n formData = new FormData();\n } else {\n try {\n searchParams = new URLSearchParams(opts.body);\n formData = convertSearchParamsToFormData(searchParams);\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n\n let submission: Submission = {\n formMethod,\n formAction,\n formEncType:\n (opts && opts.formEncType) || \"application/x-www-form-urlencoded\",\n formData,\n json: undefined,\n text: undefined,\n };\n\n if (isMutationMethod(submission.formMethod)) {\n return { path, submission };\n }\n\n // Flatten submission onto URLSearchParams for GET submissions\n let parsedPath = parsePath(path);\n // On GET navigation submissions we can drop the ?index param from the\n // resulting location since all loaders will run. But fetcher GET submissions\n // only run a single loader so we need to preserve any incoming ?index params\n if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n searchParams.append(\"index\", \"\");\n }\n parsedPath.search = `?${searchParams}`;\n\n return { path: createPath(parsedPath), submission };\n}\n\n// Filter out all routes below any caught error as they aren't going to\n// render so we don't need to load them\nfunction getLoaderMatchesUntilBoundary(\n matches: AgnosticDataRouteMatch[],\n boundaryId: string\n) {\n let boundaryMatches = matches;\n if (boundaryId) {\n let index = matches.findIndex((m) => m.route.id === boundaryId);\n if (index >= 0) {\n boundaryMatches = matches.slice(0, index);\n }\n }\n return boundaryMatches;\n}\n\nfunction getMatchesToLoad(\n history: History,\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n submission: Submission | undefined,\n location: Location,\n isInitialLoad: boolean,\n skipActionErrorRevalidation: boolean,\n isRevalidationRequired: boolean,\n cancelledDeferredRoutes: string[],\n cancelledFetcherLoads: Set,\n deletedFetchers: Set,\n fetchLoadMatches: Map,\n fetchRedirectIds: Set,\n routesToUse: AgnosticDataRouteObject[],\n basename: string | undefined,\n pendingActionResult?: PendingActionResult\n): [AgnosticDataRouteMatch[], RevalidatingFetcher[]] {\n let actionResult = pendingActionResult\n ? isErrorResult(pendingActionResult[1])\n ? pendingActionResult[1].error\n : pendingActionResult[1].data\n : undefined;\n let currentUrl = history.createURL(state.location);\n let nextUrl = history.createURL(location);\n\n // Pick navigation matches that are net-new or qualify for revalidation\n let boundaryId =\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? pendingActionResult[0]\n : undefined;\n let boundaryMatches = boundaryId\n ? getLoaderMatchesUntilBoundary(matches, boundaryId)\n : matches;\n\n // Don't revalidate loaders by default after action 4xx/5xx responses\n // when the flag is enabled. They can still opt-into revalidation via\n // `shouldRevalidate` via `actionResult`\n let actionStatus = pendingActionResult\n ? pendingActionResult[1].statusCode\n : undefined;\n let shouldSkipRevalidation =\n skipActionErrorRevalidation && actionStatus && actionStatus >= 400;\n\n let navigationMatches = boundaryMatches.filter((match, index) => {\n let { route } = match;\n if (route.lazy) {\n // We haven't loaded this route yet so we don't know if it's got a loader!\n return true;\n }\n\n if (route.loader == null) {\n return false;\n }\n\n if (isInitialLoad) {\n if (typeof route.loader !== \"function\" || route.loader.hydrate) {\n return true;\n }\n return (\n state.loaderData[route.id] === undefined &&\n // Don't re-run if the loader ran and threw an error\n (!state.errors || state.errors[route.id] === undefined)\n );\n }\n\n // Always call the loader on new route instances and pending defer cancellations\n if (\n isNewLoader(state.loaderData, state.matches[index], match) ||\n cancelledDeferredRoutes.some((id) => id === match.route.id)\n ) {\n return true;\n }\n\n // This is the default implementation for when we revalidate. If the route\n // provides it's own implementation, then we give them full control but\n // provide this value so they can leverage it if needed after they check\n // their own specific use cases\n let currentRouteMatch = state.matches[index];\n let nextRouteMatch = match;\n\n return shouldRevalidateLoader(match, {\n currentUrl,\n currentParams: currentRouteMatch.params,\n nextUrl,\n nextParams: nextRouteMatch.params,\n ...submission,\n actionResult,\n actionStatus,\n defaultShouldRevalidate: shouldSkipRevalidation\n ? false\n : // Forced revalidation due to submission, useRevalidator, or X-Remix-Revalidate\n isRevalidationRequired ||\n currentUrl.pathname + currentUrl.search ===\n nextUrl.pathname + nextUrl.search ||\n // Search params affect all loaders\n currentUrl.search !== nextUrl.search ||\n isNewRouteInstance(currentRouteMatch, nextRouteMatch),\n });\n });\n\n // Pick fetcher.loads that need to be revalidated\n let revalidatingFetchers: RevalidatingFetcher[] = [];\n fetchLoadMatches.forEach((f, key) => {\n // Don't revalidate:\n // - on initial load (shouldn't be any fetchers then anyway)\n // - if fetcher won't be present in the subsequent render\n // - no longer matches the URL (v7_fetcherPersist=false)\n // - was unmounted but persisted due to v7_fetcherPersist=true\n if (\n isInitialLoad ||\n !matches.some((m) => m.route.id === f.routeId) ||\n deletedFetchers.has(key)\n ) {\n return;\n }\n\n let fetcherMatches = matchRoutes(routesToUse, f.path, basename);\n\n // If the fetcher path no longer matches, push it in with null matches so\n // we can trigger a 404 in callLoadersAndMaybeResolveData. Note this is\n // currently only a use-case for Remix HMR where the route tree can change\n // at runtime and remove a route previously loaded via a fetcher\n if (!fetcherMatches) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: null,\n match: null,\n controller: null,\n });\n return;\n }\n\n // Revalidating fetchers are decoupled from the route matches since they\n // load from a static href. They revalidate based on explicit revalidation\n // (submission, useRevalidator, or X-Remix-Revalidate)\n let fetcher = state.fetchers.get(key);\n let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n\n let shouldRevalidate = false;\n if (fetchRedirectIds.has(key)) {\n // Never trigger a revalidation of an actively redirecting fetcher\n shouldRevalidate = false;\n } else if (cancelledFetcherLoads.has(key)) {\n // Always mark for revalidation if the fetcher was cancelled\n cancelledFetcherLoads.delete(key);\n shouldRevalidate = true;\n } else if (\n fetcher &&\n fetcher.state !== \"idle\" &&\n fetcher.data === undefined\n ) {\n // If the fetcher hasn't ever completed loading yet, then this isn't a\n // revalidation, it would just be a brand new load if an explicit\n // revalidation is required\n shouldRevalidate = isRevalidationRequired;\n } else {\n // Otherwise fall back on any user-defined shouldRevalidate, defaulting\n // to explicit revalidations only\n shouldRevalidate = shouldRevalidateLoader(fetcherMatch, {\n currentUrl,\n currentParams: state.matches[state.matches.length - 1].params,\n nextUrl,\n nextParams: matches[matches.length - 1].params,\n ...submission,\n actionResult,\n actionStatus,\n defaultShouldRevalidate: shouldSkipRevalidation\n ? false\n : isRevalidationRequired,\n });\n }\n\n if (shouldRevalidate) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: fetcherMatches,\n match: fetcherMatch,\n controller: new AbortController(),\n });\n }\n });\n\n return [navigationMatches, revalidatingFetchers];\n}\n\nfunction isNewLoader(\n currentLoaderData: RouteData,\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let isNew =\n // [a] -> [a, b]\n !currentMatch ||\n // [a, b] -> [a, c]\n match.route.id !== currentMatch.route.id;\n\n // Handle the case that we don't have data for a re-used route, potentially\n // from a prior error or from a cancelled pending deferred\n let isMissingData = currentLoaderData[match.route.id] === undefined;\n\n // Always load if this is a net-new route or we don't yet have data\n return isNew || isMissingData;\n}\n\nfunction isNewRouteInstance(\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let currentPath = currentMatch.route.path;\n return (\n // param change for this match, /users/123 -> /users/456\n currentMatch.pathname !== match.pathname ||\n // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n (currentPath != null &&\n currentPath.endsWith(\"*\") &&\n currentMatch.params[\"*\"] !== match.params[\"*\"])\n );\n}\n\nfunction shouldRevalidateLoader(\n loaderMatch: AgnosticDataRouteMatch,\n arg: ShouldRevalidateFunctionArgs\n) {\n if (loaderMatch.route.shouldRevalidate) {\n let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n\n return arg.defaultShouldRevalidate;\n}\n\n/**\n * Idempotent utility to execute patchRoutesOnNavigation() to lazily load route\n * definitions and update the routes/routeManifest\n */\nasync function loadLazyRouteChildren(\n patchRoutesOnNavigationImpl: AgnosticPatchRoutesOnNavigationFunction,\n path: string,\n matches: AgnosticDataRouteMatch[],\n routes: AgnosticDataRouteObject[],\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n pendingRouteChildren: Map<\n string,\n ReturnType\n >,\n signal: AbortSignal\n) {\n let key = [path, ...matches.map((m) => m.route.id)].join(\"-\");\n try {\n let pending = pendingRouteChildren.get(key);\n if (!pending) {\n pending = patchRoutesOnNavigationImpl({\n path,\n matches,\n patch: (routeId, children) => {\n if (!signal.aborted) {\n patchRoutesImpl(\n routeId,\n children,\n routes,\n manifest,\n mapRouteProperties\n );\n }\n },\n });\n pendingRouteChildren.set(key, pending);\n }\n\n if (pending && isPromise(pending)) {\n await pending;\n }\n } finally {\n pendingRouteChildren.delete(key);\n }\n}\n\nfunction patchRoutesImpl(\n routeId: string | null,\n children: AgnosticRouteObject[],\n routesToUse: AgnosticDataRouteObject[],\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction\n) {\n if (routeId) {\n let route = manifest[routeId];\n invariant(\n route,\n `No route found to patch children into: routeId = ${routeId}`\n );\n let dataChildren = convertRoutesToDataRoutes(\n children,\n mapRouteProperties,\n [routeId, \"patch\", String(route.children?.length || \"0\")],\n manifest\n );\n if (route.children) {\n route.children.push(...dataChildren);\n } else {\n route.children = dataChildren;\n }\n } else {\n let dataChildren = convertRoutesToDataRoutes(\n children,\n mapRouteProperties,\n [\"patch\", String(routesToUse.length || \"0\")],\n manifest\n );\n routesToUse.push(...dataChildren);\n }\n}\n\n/**\n * Execute route.lazy() methods to lazily load route modules (loader, action,\n * shouldRevalidate) and update the routeManifest in place which shares objects\n * with dataRoutes so those get updated as well.\n */\nasync function loadLazyRouteModule(\n route: AgnosticDataRouteObject,\n mapRouteProperties: MapRoutePropertiesFunction,\n manifest: RouteManifest\n) {\n if (!route.lazy) {\n return;\n }\n\n let lazyRoute = await route.lazy();\n\n // If the lazy route function was executed and removed by another parallel\n // call then we can return - first lazy() to finish wins because the return\n // value of lazy is expected to be static\n if (!route.lazy) {\n return;\n }\n\n let routeToUpdate = manifest[route.id];\n invariant(routeToUpdate, \"No route found in manifest\");\n\n // Update the route in place. This should be safe because there's no way\n // we could yet be sitting on this route as we can't get there without\n // resolving lazy() first.\n //\n // This is different than the HMR \"update\" use-case where we may actively be\n // on the route being updated. The main concern boils down to \"does this\n // mutation affect any ongoing navigations or any current state.matches\n // values?\". If not, it should be safe to update in place.\n let routeUpdates: Record = {};\n for (let lazyRouteProperty in lazyRoute) {\n let staticRouteValue =\n routeToUpdate[lazyRouteProperty as keyof typeof routeToUpdate];\n\n let isPropertyStaticallyDefined =\n staticRouteValue !== undefined &&\n // This property isn't static since it should always be updated based\n // on the route updates\n lazyRouteProperty !== \"hasErrorBoundary\";\n\n warning(\n !isPropertyStaticallyDefined,\n `Route \"${routeToUpdate.id}\" has a static property \"${lazyRouteProperty}\" ` +\n `defined but its lazy function is also returning a value for this property. ` +\n `The lazy route property \"${lazyRouteProperty}\" will be ignored.`\n );\n\n if (\n !isPropertyStaticallyDefined &&\n !immutableRouteKeys.has(lazyRouteProperty as ImmutableRouteKey)\n ) {\n routeUpdates[lazyRouteProperty] =\n lazyRoute[lazyRouteProperty as keyof typeof lazyRoute];\n }\n }\n\n // Mutate the route with the provided updates. Do this first so we pass\n // the updated version to mapRouteProperties\n Object.assign(routeToUpdate, routeUpdates);\n\n // Mutate the `hasErrorBoundary` property on the route based on the route\n // updates and remove the `lazy` function so we don't resolve the lazy\n // route again.\n Object.assign(routeToUpdate, {\n // To keep things framework agnostic, we use the provided\n // `mapRouteProperties` (or wrapped `detectErrorBoundary`) function to\n // set the framework-aware properties (`element`/`hasErrorBoundary`) since\n // the logic will differ between frameworks.\n ...mapRouteProperties(routeToUpdate),\n lazy: undefined,\n });\n}\n\n// Default implementation of `dataStrategy` which fetches all loaders in parallel\nasync function defaultDataStrategy({\n matches,\n}: DataStrategyFunctionArgs): ReturnType {\n let matchesToLoad = matches.filter((m) => m.shouldLoad);\n let results = await Promise.all(matchesToLoad.map((m) => m.resolve()));\n return results.reduce(\n (acc, result, i) =>\n Object.assign(acc, { [matchesToLoad[i].route.id]: result }),\n {}\n );\n}\n\nasync function callDataStrategyImpl(\n dataStrategyImpl: DataStrategyFunction,\n type: \"loader\" | \"action\",\n state: RouterState | null,\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n fetcherKey: string | null,\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n requestContext?: unknown\n): Promise> {\n let loadRouteDefinitionsPromises = matches.map((m) =>\n m.route.lazy\n ? loadLazyRouteModule(m.route, mapRouteProperties, manifest)\n : undefined\n );\n\n let dsMatches = matches.map((match, i) => {\n let loadRoutePromise = loadRouteDefinitionsPromises[i];\n let shouldLoad = matchesToLoad.some((m) => m.route.id === match.route.id);\n // `resolve` encapsulates route.lazy(), executing the loader/action,\n // and mapping return values/thrown errors to a `DataStrategyResult`. Users\n // can pass a callback to take fine-grained control over the execution\n // of the loader/action\n let resolve: DataStrategyMatch[\"resolve\"] = async (handlerOverride) => {\n if (\n handlerOverride &&\n request.method === \"GET\" &&\n (match.route.lazy || match.route.loader)\n ) {\n shouldLoad = true;\n }\n return shouldLoad\n ? callLoaderOrAction(\n type,\n request,\n match,\n loadRoutePromise,\n handlerOverride,\n requestContext\n )\n : Promise.resolve({ type: ResultType.data, result: undefined });\n };\n\n return {\n ...match,\n shouldLoad,\n resolve,\n };\n });\n\n // Send all matches here to allow for a middleware-type implementation.\n // handler will be a no-op for unneeded routes and we filter those results\n // back out below.\n let results = await dataStrategyImpl({\n matches: dsMatches,\n request,\n params: matches[0].params,\n fetcherKey,\n context: requestContext,\n });\n\n // Wait for all routes to load here but 'swallow the error since we want\n // it to bubble up from the `await loadRoutePromise` in `callLoaderOrAction` -\n // called from `match.resolve()`\n try {\n await Promise.all(loadRouteDefinitionsPromises);\n } catch (e) {\n // No-op\n }\n\n return results;\n}\n\n// Default logic for calling a loader/action is the user has no specified a dataStrategy\nasync function callLoaderOrAction(\n type: \"loader\" | \"action\",\n request: Request,\n match: AgnosticDataRouteMatch,\n loadRoutePromise: Promise | undefined,\n handlerOverride: Parameters[0],\n staticContext?: unknown\n): Promise {\n let result: DataStrategyResult;\n let onReject: (() => void) | undefined;\n\n let runHandler = (\n handler: AgnosticRouteObject[\"loader\"] | AgnosticRouteObject[\"action\"]\n ): Promise => {\n // Setup a promise we can race against so that abort signals short circuit\n let reject: () => void;\n // This will never resolve so safe to type it as Promise to\n // satisfy the function return value\n let abortPromise = new Promise((_, r) => (reject = r));\n onReject = () => reject();\n request.signal.addEventListener(\"abort\", onReject);\n\n let actualHandler = (ctx?: unknown) => {\n if (typeof handler !== \"function\") {\n return Promise.reject(\n new Error(\n `You cannot call the handler for a route which defines a boolean ` +\n `\"${type}\" [routeId: ${match.route.id}]`\n )\n );\n }\n return handler(\n {\n request,\n params: match.params,\n context: staticContext,\n },\n ...(ctx !== undefined ? [ctx] : [])\n );\n };\n\n let handlerPromise: Promise = (async () => {\n try {\n let val = await (handlerOverride\n ? handlerOverride((ctx: unknown) => actualHandler(ctx))\n : actualHandler());\n return { type: \"data\", result: val };\n } catch (e) {\n return { type: \"error\", result: e };\n }\n })();\n\n return Promise.race([handlerPromise, abortPromise]);\n };\n\n try {\n let handler = match.route[type];\n\n // If we have a route.lazy promise, await that first\n if (loadRoutePromise) {\n if (handler) {\n // Run statically defined handler in parallel with lazy()\n let handlerError;\n let [value] = await Promise.all([\n // If the handler throws, don't let it immediately bubble out,\n // since we need to let the lazy() execution finish so we know if this\n // route has a boundary that can handle the error\n runHandler(handler).catch((e) => {\n handlerError = e;\n }),\n loadRoutePromise,\n ]);\n if (handlerError !== undefined) {\n throw handlerError;\n }\n result = value!;\n } else {\n // Load lazy route module, then run any returned handler\n await loadRoutePromise;\n\n handler = match.route[type];\n if (handler) {\n // Handler still runs even if we got interrupted to maintain consistency\n // with un-abortable behavior of handler execution on non-lazy or\n // previously-lazy-loaded routes\n result = await runHandler(handler);\n } else if (type === \"action\") {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(405, {\n method: request.method,\n pathname,\n routeId: match.route.id,\n });\n } else {\n // lazy() route has no loader to run. Short circuit here so we don't\n // hit the invariant below that errors on returning undefined.\n return { type: ResultType.data, result: undefined };\n }\n }\n } else if (!handler) {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(404, {\n pathname,\n });\n } else {\n result = await runHandler(handler);\n }\n\n invariant(\n result.result !== undefined,\n `You defined ${type === \"action\" ? \"an action\" : \"a loader\"} for route ` +\n `\"${match.route.id}\" but didn't return anything from your \\`${type}\\` ` +\n `function. Please return a value or \\`null\\`.`\n );\n } catch (e) {\n // We should already be catching and converting normal handler executions to\n // DataStrategyResults and returning them, so anything that throws here is an\n // unexpected error we still need to wrap\n return { type: ResultType.error, result: e };\n } finally {\n if (onReject) {\n request.signal.removeEventListener(\"abort\", onReject);\n }\n }\n\n return result;\n}\n\nasync function convertDataStrategyResultToDataResult(\n dataStrategyResult: DataStrategyResult\n): Promise {\n let { result, type } = dataStrategyResult;\n\n if (isResponse(result)) {\n let data: any;\n\n try {\n let contentType = result.headers.get(\"Content-Type\");\n // Check between word boundaries instead of startsWith() due to the last\n // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n if (result.body == null) {\n data = null;\n } else {\n data = await result.json();\n }\n } else {\n data = await result.text();\n }\n } catch (e) {\n return { type: ResultType.error, error: e };\n }\n\n if (type === ResultType.error) {\n return {\n type: ResultType.error,\n error: new ErrorResponseImpl(result.status, result.statusText, data),\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n return {\n type: ResultType.data,\n data,\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n if (type === ResultType.error) {\n if (isDataWithResponseInit(result)) {\n if (result.data instanceof Error) {\n return {\n type: ResultType.error,\n error: result.data,\n statusCode: result.init?.status,\n };\n }\n\n // Convert thrown unstable_data() to ErrorResponse instances\n result = new ErrorResponseImpl(\n result.init?.status || 500,\n undefined,\n result.data\n );\n }\n return {\n type: ResultType.error,\n error: result,\n statusCode: isRouteErrorResponse(result) ? result.status : undefined,\n };\n }\n\n if (isDeferredData(result)) {\n return {\n type: ResultType.deferred,\n deferredData: result,\n statusCode: result.init?.status,\n headers: result.init?.headers && new Headers(result.init.headers),\n };\n }\n\n if (isDataWithResponseInit(result)) {\n return {\n type: ResultType.data,\n data: result.data,\n statusCode: result.init?.status,\n headers: result.init?.headers\n ? new Headers(result.init.headers)\n : undefined,\n };\n }\n\n return { type: ResultType.data, data: result };\n}\n\n// Support relative routing in internal redirects\nfunction normalizeRelativeRoutingRedirectResponse(\n response: Response,\n request: Request,\n routeId: string,\n matches: AgnosticDataRouteMatch[],\n basename: string,\n v7_relativeSplatPath: boolean\n) {\n let location = response.headers.get(\"Location\");\n invariant(\n location,\n \"Redirects returned/thrown from loaders/actions must have a Location header\"\n );\n\n if (!ABSOLUTE_URL_REGEX.test(location)) {\n let trimmedMatches = matches.slice(\n 0,\n matches.findIndex((m) => m.route.id === routeId) + 1\n );\n location = normalizeTo(\n new URL(request.url),\n trimmedMatches,\n basename,\n true,\n location,\n v7_relativeSplatPath\n );\n response.headers.set(\"Location\", location);\n }\n\n return response;\n}\n\nfunction normalizeRedirectLocation(\n location: string,\n currentUrl: URL,\n basename: string\n): string {\n if (ABSOLUTE_URL_REGEX.test(location)) {\n // Strip off the protocol+origin for same-origin + same-basename absolute redirects\n let normalizedLocation = location;\n let url = normalizedLocation.startsWith(\"//\")\n ? new URL(currentUrl.protocol + normalizedLocation)\n : new URL(normalizedLocation);\n let isSameBasename = stripBasename(url.pathname, basename) != null;\n if (url.origin === currentUrl.origin && isSameBasename) {\n return url.pathname + url.search + url.hash;\n }\n }\n return location;\n}\n\n// Utility method for creating the Request instances for loaders/actions during\n// client-side navigations and fetches. During SSR we will always have a\n// Request instance from the static handler (query/queryRoute)\nfunction createClientSideRequest(\n history: History,\n location: string | Location,\n signal: AbortSignal,\n submission?: Submission\n): Request {\n let url = history.createURL(stripHashFromPath(location)).toString();\n let init: RequestInit = { signal };\n\n if (submission && isMutationMethod(submission.formMethod)) {\n let { formMethod, formEncType } = submission;\n // Didn't think we needed this but it turns out unlike other methods, patch\n // won't be properly normalized to uppercase and results in a 405 error.\n // See: https://fetch.spec.whatwg.org/#concept-method\n init.method = formMethod.toUpperCase();\n\n if (formEncType === \"application/json\") {\n init.headers = new Headers({ \"Content-Type\": formEncType });\n init.body = JSON.stringify(submission.json);\n } else if (formEncType === \"text/plain\") {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.text;\n } else if (\n formEncType === \"application/x-www-form-urlencoded\" &&\n submission.formData\n ) {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = convertFormDataToSearchParams(submission.formData);\n } else {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.formData;\n }\n }\n\n return new Request(url, init);\n}\n\nfunction convertFormDataToSearchParams(formData: FormData): URLSearchParams {\n let searchParams = new URLSearchParams();\n\n for (let [key, value] of formData.entries()) {\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs\n searchParams.append(key, typeof value === \"string\" ? value : value.name);\n }\n\n return searchParams;\n}\n\nfunction convertSearchParamsToFormData(\n searchParams: URLSearchParams\n): FormData {\n let formData = new FormData();\n for (let [key, value] of searchParams.entries()) {\n formData.append(key, value);\n }\n return formData;\n}\n\nfunction processRouteLoaderData(\n matches: AgnosticDataRouteMatch[],\n results: Record,\n pendingActionResult: PendingActionResult | undefined,\n activeDeferreds: Map,\n skipLoaderErrorBubbling: boolean\n): {\n loaderData: RouterState[\"loaderData\"];\n errors: RouterState[\"errors\"] | null;\n statusCode: number;\n loaderHeaders: Record;\n} {\n // Fill in loaderData/errors from our loaders\n let loaderData: RouterState[\"loaderData\"] = {};\n let errors: RouterState[\"errors\"] | null = null;\n let statusCode: number | undefined;\n let foundError = false;\n let loaderHeaders: Record = {};\n let pendingError =\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? pendingActionResult[1].error\n : undefined;\n\n // Process loader results into state.loaderData/state.errors\n matches.forEach((match) => {\n if (!(match.route.id in results)) {\n return;\n }\n let id = match.route.id;\n let result = results[id];\n invariant(\n !isRedirectResult(result),\n \"Cannot handle redirect results in processLoaderData\"\n );\n if (isErrorResult(result)) {\n let error = result.error;\n // If we have a pending action error, we report it at the highest-route\n // that throws a loader error, and then clear it out to indicate that\n // it was consumed\n if (pendingError !== undefined) {\n error = pendingError;\n pendingError = undefined;\n }\n\n errors = errors || {};\n\n if (skipLoaderErrorBubbling) {\n errors[id] = error;\n } else {\n // Look upwards from the matched route for the closest ancestor error\n // boundary, defaulting to the root match. Prefer higher error values\n // if lower errors bubble to the same boundary\n let boundaryMatch = findNearestBoundary(matches, id);\n if (errors[boundaryMatch.route.id] == null) {\n errors[boundaryMatch.route.id] = error;\n }\n }\n\n // Clear our any prior loaderData for the throwing route\n loaderData[id] = undefined;\n\n // Once we find our first (highest) error, we set the status code and\n // prevent deeper status codes from overriding\n if (!foundError) {\n foundError = true;\n statusCode = isRouteErrorResponse(result.error)\n ? result.error.status\n : 500;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n if (isDeferredResult(result)) {\n activeDeferreds.set(id, result.deferredData);\n loaderData[id] = result.deferredData.data;\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (\n result.statusCode != null &&\n result.statusCode !== 200 &&\n !foundError\n ) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n loaderData[id] = result.data;\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (result.statusCode && result.statusCode !== 200 && !foundError) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n }\n }\n });\n\n // If we didn't consume the pending action error (i.e., all loaders\n // resolved), then consume it here. Also clear out any loaderData for the\n // throwing route\n if (pendingError !== undefined && pendingActionResult) {\n errors = { [pendingActionResult[0]]: pendingError };\n loaderData[pendingActionResult[0]] = undefined;\n }\n\n return {\n loaderData,\n errors,\n statusCode: statusCode || 200,\n loaderHeaders,\n };\n}\n\nfunction processLoaderData(\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: Record,\n pendingActionResult: PendingActionResult | undefined,\n revalidatingFetchers: RevalidatingFetcher[],\n fetcherResults: Record,\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors?: RouterState[\"errors\"];\n} {\n let { loaderData, errors } = processRouteLoaderData(\n matches,\n results,\n pendingActionResult,\n activeDeferreds,\n false // This method is only called client side so we always want to bubble\n );\n\n // Process results from our revalidating fetchers\n revalidatingFetchers.forEach((rf) => {\n let { key, match, controller } = rf;\n let result = fetcherResults[key];\n invariant(result, \"Did not find corresponding fetcher result\");\n\n // Process fetcher non-redirect errors\n if (controller && controller.signal.aborted) {\n // Nothing to do for aborted fetchers\n return;\n } else if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, match?.route.id);\n if (!(errors && errors[boundaryMatch.route.id])) {\n errors = {\n ...errors,\n [boundaryMatch.route.id]: result.error,\n };\n }\n state.fetchers.delete(key);\n } else if (isRedirectResult(result)) {\n // Should never get here, redirects should get processed above, but we\n // keep this to type narrow to a success result in the else\n invariant(false, \"Unhandled fetcher revalidation redirect\");\n } else if (isDeferredResult(result)) {\n // Should never get here, deferred data should be awaited for fetchers\n // in resolveDeferredResults\n invariant(false, \"Unhandled fetcher deferred data\");\n } else {\n let doneFetcher = getDoneFetcher(result.data);\n state.fetchers.set(key, doneFetcher);\n }\n });\n\n return { loaderData, errors };\n}\n\nfunction mergeLoaderData(\n loaderData: RouteData,\n newLoaderData: RouteData,\n matches: AgnosticDataRouteMatch[],\n errors: RouteData | null | undefined\n): RouteData {\n let mergedLoaderData = { ...newLoaderData };\n for (let match of matches) {\n let id = match.route.id;\n if (newLoaderData.hasOwnProperty(id)) {\n if (newLoaderData[id] !== undefined) {\n mergedLoaderData[id] = newLoaderData[id];\n } else {\n // No-op - this is so we ignore existing data if we have a key in the\n // incoming object with an undefined value, which is how we unset a prior\n // loaderData if we encounter a loader error\n }\n } else if (loaderData[id] !== undefined && match.route.loader) {\n // Preserve existing keys not included in newLoaderData and where a loader\n // wasn't removed by HMR\n mergedLoaderData[id] = loaderData[id];\n }\n\n if (errors && errors.hasOwnProperty(id)) {\n // Don't keep any loader data below the boundary\n break;\n }\n }\n return mergedLoaderData;\n}\n\nfunction getActionDataForCommit(\n pendingActionResult: PendingActionResult | undefined\n) {\n if (!pendingActionResult) {\n return {};\n }\n return isErrorResult(pendingActionResult[1])\n ? {\n // Clear out prior actionData on errors\n actionData: {},\n }\n : {\n actionData: {\n [pendingActionResult[0]]: pendingActionResult[1].data,\n },\n };\n}\n\n// Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\nfunction findNearestBoundary(\n matches: AgnosticDataRouteMatch[],\n routeId?: string\n): AgnosticDataRouteMatch {\n let eligibleMatches = routeId\n ? matches.slice(0, matches.findIndex((m) => m.route.id === routeId) + 1)\n : [...matches];\n return (\n eligibleMatches.reverse().find((m) => m.route.hasErrorBoundary === true) ||\n matches[0]\n );\n}\n\nfunction getShortCircuitMatches(routes: AgnosticDataRouteObject[]): {\n matches: AgnosticDataRouteMatch[];\n route: AgnosticDataRouteObject;\n} {\n // Prefer a root layout route if present, otherwise shim in a route object\n let route =\n routes.length === 1\n ? routes[0]\n : routes.find((r) => r.index || !r.path || r.path === \"/\") || {\n id: `__shim-error-route__`,\n };\n\n return {\n matches: [\n {\n params: {},\n pathname: \"\",\n pathnameBase: \"\",\n route,\n },\n ],\n route,\n };\n}\n\nfunction getInternalRouterError(\n status: number,\n {\n pathname,\n routeId,\n method,\n type,\n message,\n }: {\n pathname?: string;\n routeId?: string;\n method?: string;\n type?: \"defer-action\" | \"invalid-body\" | \"route-discovery\";\n message?: string;\n } = {}\n) {\n let statusText = \"Unknown Server Error\";\n let errorMessage = \"Unknown @remix-run/router error\";\n\n if (status === 400) {\n statusText = \"Bad Request\";\n if (type === \"route-discovery\") {\n errorMessage =\n `Unable to match URL \"${pathname}\" - the \\`unstable_patchRoutesOnNavigation()\\` ` +\n `function threw the following error:\\n${message}`;\n } else if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method} request to \"${pathname}\" but ` +\n `did not provide a \\`loader\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (type === \"defer-action\") {\n errorMessage = \"defer() is not supported in actions\";\n } else if (type === \"invalid-body\") {\n errorMessage = \"Unable to encode submission body\";\n }\n } else if (status === 403) {\n statusText = \"Forbidden\";\n errorMessage = `Route \"${routeId}\" does not match URL \"${pathname}\"`;\n } else if (status === 404) {\n statusText = \"Not Found\";\n errorMessage = `No route matches URL \"${pathname}\"`;\n } else if (status === 405) {\n statusText = \"Method Not Allowed\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method.toUpperCase()} request to \"${pathname}\" but ` +\n `did not provide an \\`action\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (method) {\n errorMessage = `Invalid request method \"${method.toUpperCase()}\"`;\n }\n }\n\n return new ErrorResponseImpl(\n status || 500,\n statusText,\n new Error(errorMessage),\n true\n );\n}\n\n// Find any returned redirect errors, starting from the lowest match\nfunction findRedirect(\n results: Record\n): { key: string; result: RedirectResult } | undefined {\n let entries = Object.entries(results);\n for (let i = entries.length - 1; i >= 0; i--) {\n let [key, result] = entries[i];\n if (isRedirectResult(result)) {\n return { key, result };\n }\n }\n}\n\nfunction stripHashFromPath(path: To) {\n let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n return createPath({ ...parsedPath, hash: \"\" });\n}\n\nfunction isHashChangeOnly(a: Location, b: Location): boolean {\n if (a.pathname !== b.pathname || a.search !== b.search) {\n return false;\n }\n\n if (a.hash === \"\") {\n // /page -> /page#hash\n return b.hash !== \"\";\n } else if (a.hash === b.hash) {\n // /page#hash -> /page#hash\n return true;\n } else if (b.hash !== \"\") {\n // /page#hash -> /page#other\n return true;\n }\n\n // If the hash is removed the browser will re-perform a request to the server\n // /page#hash -> /page\n return false;\n}\n\nfunction isPromise(val: unknown): val is Promise {\n return typeof val === \"object\" && val != null && \"then\" in val;\n}\n\nfunction isDataStrategyResult(result: unknown): result is DataStrategyResult {\n return (\n result != null &&\n typeof result === \"object\" &&\n \"type\" in result &&\n \"result\" in result &&\n (result.type === ResultType.data || result.type === ResultType.error)\n );\n}\n\nfunction isRedirectDataStrategyResultResult(result: DataStrategyResult) {\n return (\n isResponse(result.result) && redirectStatusCodes.has(result.result.status)\n );\n}\n\nfunction isDeferredResult(result: DataResult): result is DeferredResult {\n return result.type === ResultType.deferred;\n}\n\nfunction isErrorResult(result: DataResult): result is ErrorResult {\n return result.type === ResultType.error;\n}\n\nfunction isRedirectResult(result?: DataResult): result is RedirectResult {\n return (result && result.type) === ResultType.redirect;\n}\n\nexport function isDataWithResponseInit(\n value: any\n): value is DataWithResponseInit {\n return (\n typeof value === \"object\" &&\n value != null &&\n \"type\" in value &&\n \"data\" in value &&\n \"init\" in value &&\n value.type === \"DataWithResponseInit\"\n );\n}\n\nexport function isDeferredData(value: any): value is DeferredData {\n let deferred: DeferredData = value;\n return (\n deferred &&\n typeof deferred === \"object\" &&\n typeof deferred.data === \"object\" &&\n typeof deferred.subscribe === \"function\" &&\n typeof deferred.cancel === \"function\" &&\n typeof deferred.resolveData === \"function\"\n );\n}\n\nfunction isResponse(value: any): value is Response {\n return (\n value != null &&\n typeof value.status === \"number\" &&\n typeof value.statusText === \"string\" &&\n typeof value.headers === \"object\" &&\n typeof value.body !== \"undefined\"\n );\n}\n\nfunction isRedirectResponse(result: any): result is Response {\n if (!isResponse(result)) {\n return false;\n }\n\n let status = result.status;\n let location = result.headers.get(\"Location\");\n return status >= 300 && status <= 399 && location != null;\n}\n\nfunction isValidMethod(method: string): method is FormMethod | V7_FormMethod {\n return validRequestMethods.has(method.toLowerCase() as FormMethod);\n}\n\nfunction isMutationMethod(\n method: string\n): method is MutationFormMethod | V7_MutationFormMethod {\n return validMutationMethods.has(method.toLowerCase() as MutationFormMethod);\n}\n\nasync function resolveNavigationDeferredResults(\n matches: (AgnosticDataRouteMatch | null)[],\n results: Record,\n signal: AbortSignal,\n currentMatches: AgnosticDataRouteMatch[],\n currentLoaderData: RouteData\n) {\n let entries = Object.entries(results);\n for (let index = 0; index < entries.length; index++) {\n let [routeId, result] = entries[index];\n let match = matches.find((m) => m?.route.id === routeId);\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n\n let currentMatch = currentMatches.find(\n (m) => m.route.id === match!.route.id\n );\n let isRevalidatingLoader =\n currentMatch != null &&\n !isNewRouteInstance(currentMatch, match) &&\n (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n\n if (isDeferredResult(result) && isRevalidatingLoader) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n await resolveDeferredData(result, signal, false).then((result) => {\n if (result) {\n results[routeId] = result;\n }\n });\n }\n }\n}\n\nasync function resolveFetcherDeferredResults(\n matches: (AgnosticDataRouteMatch | null)[],\n results: Record,\n revalidatingFetchers: RevalidatingFetcher[]\n) {\n for (let index = 0; index < revalidatingFetchers.length; index++) {\n let { key, routeId, controller } = revalidatingFetchers[index];\n let result = results[key];\n let match = matches.find((m) => m?.route.id === routeId);\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n\n if (isDeferredResult(result)) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n invariant(\n controller,\n \"Expected an AbortController for revalidating fetcher deferred result\"\n );\n await resolveDeferredData(result, controller.signal, true).then(\n (result) => {\n if (result) {\n results[key] = result;\n }\n }\n );\n }\n }\n}\n\nasync function resolveDeferredData(\n result: DeferredResult,\n signal: AbortSignal,\n unwrap = false\n): Promise {\n let aborted = await result.deferredData.resolveData(signal);\n if (aborted) {\n return;\n }\n\n if (unwrap) {\n try {\n return {\n type: ResultType.data,\n data: result.deferredData.unwrappedData,\n };\n } catch (e) {\n // Handle any TrackedPromise._error values encountered while unwrapping\n return {\n type: ResultType.error,\n error: e,\n };\n }\n }\n\n return {\n type: ResultType.data,\n data: result.deferredData.data,\n };\n}\n\nfunction hasNakedIndexQuery(search: string): boolean {\n return new URLSearchParams(search).getAll(\"index\").some((v) => v === \"\");\n}\n\nfunction getTargetMatch(\n matches: AgnosticDataRouteMatch[],\n location: Location | string\n) {\n let search =\n typeof location === \"string\" ? parsePath(location).search : location.search;\n if (\n matches[matches.length - 1].route.index &&\n hasNakedIndexQuery(search || \"\")\n ) {\n // Return the leaf index route when index is present\n return matches[matches.length - 1];\n }\n // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n // pathless layout routes)\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches[pathMatches.length - 1];\n}\n\nfunction getSubmissionFromNavigation(\n navigation: Navigation\n): Submission | undefined {\n let { formMethod, formAction, formEncType, text, formData, json } =\n navigation;\n if (!formMethod || !formAction || !formEncType) {\n return;\n }\n\n if (text != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json: undefined,\n text,\n };\n } else if (formData != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData,\n json: undefined,\n text: undefined,\n };\n } else if (json !== undefined) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json,\n text: undefined,\n };\n }\n}\n\nfunction getLoadingNavigation(\n location: Location,\n submission?: Submission\n): NavigationStates[\"Loading\"] {\n if (submission) {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n } else {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n };\n return navigation;\n }\n}\n\nfunction getSubmittingNavigation(\n location: Location,\n submission: Submission\n): NavigationStates[\"Submitting\"] {\n let navigation: NavigationStates[\"Submitting\"] = {\n state: \"submitting\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n}\n\nfunction getLoadingFetcher(\n submission?: Submission,\n data?: Fetcher[\"data\"]\n): FetcherStates[\"Loading\"] {\n if (submission) {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data,\n };\n return fetcher;\n } else {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n }\n}\n\nfunction getSubmittingFetcher(\n submission: Submission,\n existingFetcher?: Fetcher\n): FetcherStates[\"Submitting\"] {\n let fetcher: FetcherStates[\"Submitting\"] = {\n state: \"submitting\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data: existingFetcher ? existingFetcher.data : undefined,\n };\n return fetcher;\n}\n\nfunction getDoneFetcher(data: Fetcher[\"data\"]): FetcherStates[\"Idle\"] {\n let fetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n}\n\nfunction restoreAppliedTransitions(\n _window: Window,\n transitions: Map>\n) {\n try {\n let sessionPositions = _window.sessionStorage.getItem(\n TRANSITIONS_STORAGE_KEY\n );\n if (sessionPositions) {\n let json = JSON.parse(sessionPositions);\n for (let [k, v] of Object.entries(json || {})) {\n if (v && Array.isArray(v)) {\n transitions.set(k, new Set(v || []));\n }\n }\n }\n } catch (e) {\n // no-op, use default empty object\n }\n}\n\nfunction persistAppliedTransitions(\n _window: Window,\n transitions: Map>\n) {\n if (transitions.size > 0) {\n let json: Record = {};\n for (let [k, v] of transitions) {\n json[k] = [...v];\n }\n try {\n _window.sessionStorage.setItem(\n TRANSITIONS_STORAGE_KEY,\n JSON.stringify(json)\n );\n } catch (error) {\n warning(\n false,\n `Failed to save applied view transitions in sessionStorage (${error}).`\n );\n }\n }\n}\n//#endregion\n","import * as React from \"react\";\nimport type {\n AgnosticIndexRouteObject,\n AgnosticNonIndexRouteObject,\n AgnosticRouteMatch,\n History,\n LazyRouteFunction,\n Location,\n Action as NavigationType,\n RelativeRoutingType,\n Router,\n StaticHandlerContext,\n To,\n TrackedPromise,\n} from \"@remix-run/router\";\n\n// Create react-specific types from the agnostic types in @remix-run/router to\n// export from react-router\nexport interface IndexRouteObject {\n caseSensitive?: AgnosticIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticIndexRouteObject[\"path\"];\n id?: AgnosticIndexRouteObject[\"id\"];\n loader?: AgnosticIndexRouteObject[\"loader\"];\n action?: AgnosticIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticIndexRouteObject[\"handle\"];\n index: true;\n children?: undefined;\n element?: React.ReactNode | null;\n hydrateFallbackElement?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n HydrateFallback?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction;\n}\n\nexport interface NonIndexRouteObject {\n caseSensitive?: AgnosticNonIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticNonIndexRouteObject[\"path\"];\n id?: AgnosticNonIndexRouteObject[\"id\"];\n loader?: AgnosticNonIndexRouteObject[\"loader\"];\n action?: AgnosticNonIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticNonIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticNonIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticNonIndexRouteObject[\"handle\"];\n index?: false;\n children?: RouteObject[];\n element?: React.ReactNode | null;\n hydrateFallbackElement?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n HydrateFallback?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction;\n}\n\nexport type RouteObject = IndexRouteObject | NonIndexRouteObject;\n\nexport type DataRouteObject = RouteObject & {\n children?: DataRouteObject[];\n id: string;\n};\n\nexport interface RouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends RouteObject = RouteObject\n> extends AgnosticRouteMatch {}\n\nexport interface DataRouteMatch extends RouteMatch {}\n\nexport interface DataRouterContextObject\n // Omit `future` since those can be pulled from the `router`\n // `NavigationContext` needs future since it doesn't have a `router` in all cases\n extends Omit {\n router: Router;\n staticContext?: StaticHandlerContext;\n}\n\nexport const DataRouterContext =\n React.createContext(null);\nif (__DEV__) {\n DataRouterContext.displayName = \"DataRouter\";\n}\n\nexport const DataRouterStateContext = React.createContext<\n Router[\"state\"] | null\n>(null);\nif (__DEV__) {\n DataRouterStateContext.displayName = \"DataRouterState\";\n}\n\nexport const AwaitContext = React.createContext(null);\nif (__DEV__) {\n AwaitContext.displayName = \"Await\";\n}\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n unstable_flushSync?: boolean;\n unstable_viewTransition?: boolean;\n}\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level `` API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport interface Navigator {\n createHref: History[\"createHref\"];\n // Optional for backwards-compat with Router/HistoryRouter usage (edge case)\n encodeLocation?: History[\"encodeLocation\"];\n go: History[\"go\"];\n push(to: To, state?: any, opts?: NavigateOptions): void;\n replace(to: To, state?: any, opts?: NavigateOptions): void;\n}\n\ninterface NavigationContextObject {\n basename: string;\n navigator: Navigator;\n static: boolean;\n future: {\n v7_relativeSplatPath: boolean;\n };\n}\n\nexport const NavigationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n location: Location;\n navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n LocationContext.displayName = \"Location\";\n}\n\nexport interface RouteContextObject {\n outlet: React.ReactElement | null;\n matches: RouteMatch[];\n isDataRoute: boolean;\n}\n\nexport const RouteContext = React.createContext({\n outlet: null,\n matches: [],\n isDataRoute: false,\n});\n\nif (__DEV__) {\n RouteContext.displayName = \"Route\";\n}\n\nexport const RouteErrorContext = React.createContext(null);\n\nif (__DEV__) {\n RouteErrorContext.displayName = \"RouteError\";\n}\n","import * as React from \"react\";\nimport type {\n Blocker,\n BlockerFunction,\n Location,\n ParamParseKey,\n Params,\n Path,\n PathMatch,\n PathPattern,\n RelativeRoutingType,\n Router as RemixRouter,\n RevalidationState,\n To,\n UIMatch,\n} from \"@remix-run/router\";\nimport {\n IDLE_BLOCKER,\n Action as NavigationType,\n UNSAFE_convertRouteMatchToUiMatch as convertRouteMatchToUiMatch,\n UNSAFE_decodePath as decodePath,\n UNSAFE_getResolveToMatches as getResolveToMatches,\n UNSAFE_invariant as invariant,\n isRouteErrorResponse,\n joinPaths,\n matchPath,\n matchRoutes,\n parsePath,\n resolveTo,\n stripBasename,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n DataRouteMatch,\n NavigateOptions,\n RouteContextObject,\n RouteMatch,\n RouteObject,\n} from \"./context\";\nimport {\n AwaitContext,\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n RouteErrorContext,\n} from \"./context\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/hooks/use-href\n */\nexport function useHref(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useHref() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { hash, pathname, search } = useResolvedPath(to, { relative });\n\n let joinedPathname = pathname;\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to creating the href. If this is a root navigation, then just use the raw\n // basename which allows the basename to have full control over the presence\n // of a trailing slash on root links\n if (basename !== \"/\") {\n joinedPathname =\n pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n }\n\n return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a ``.\n *\n * @see https://reactrouter.com/hooks/use-in-router-context\n */\nexport function useInRouterContext(): boolean {\n return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/hooks/use-location\n */\nexport function useLocation(): Location {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useLocation() may be used only in the context of a component.`\n );\n\n return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/hooks/use-navigation-type\n */\nexport function useNavigationType(): NavigationType {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns a PathMatch object if the given pattern matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * ``.\n *\n * @see https://reactrouter.com/hooks/use-match\n */\nexport function useMatch<\n ParamKey extends ParamParseKey,\n Path extends string\n>(pattern: PathPattern | Path): PathMatch | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useMatch() may be used only in the context of a component.`\n );\n\n let { pathname } = useLocation();\n return React.useMemo(\n () => matchPath(pattern, decodePath(pathname)),\n [pathname, pattern]\n );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n (to: To, options?: NavigateOptions): void;\n (delta: number): void;\n}\n\nconst navigateEffectWarning =\n `You should call navigate() in a React.useEffect(), not when ` +\n `your component is first rendered.`;\n\n// Mute warnings for calls to useNavigate in SSR environments\nfunction useIsomorphicLayoutEffect(\n cb: Parameters[0]\n) {\n let isStatic = React.useContext(NavigationContext).static;\n if (!isStatic) {\n // We should be able to get rid of this once react 18.3 is released\n // See: https://github.com/facebook/react/pull/26395\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useLayoutEffect(cb);\n }\n}\n\n/**\n * Returns an imperative method for changing the location. Used by ``s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/hooks/use-navigate\n */\nexport function useNavigate(): NavigateFunction {\n let { isDataRoute } = React.useContext(RouteContext);\n // Conditional usage is OK here because the usage of a data router is static\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return isDataRoute ? useNavigateStable() : useNavigateUnstable();\n}\n\nfunction useNavigateUnstable(): NavigateFunction {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useNavigate() may be used only in the context of a component.`\n );\n\n let dataRouterContext = React.useContext(DataRouterContext);\n let { basename, future, navigator } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n getResolveToMatches(matches, future.v7_relativeSplatPath)\n );\n\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our history listener yet\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n\n let path = resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n options.relative === \"path\"\n );\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to handing off to history (but only if we're not in a data router,\n // otherwise it'll prepend the basename inside of the router).\n // If this is a root navigation, then we navigate to the raw basename\n // which allows the basename to have full control over the presence of a\n // trailing slash on root links\n if (dataRouterContext == null && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\"\n ? basename\n : joinPaths([basename, path.pathname]);\n }\n\n (!!options.replace ? navigator.replace : navigator.push)(\n path,\n options.state,\n options\n );\n },\n [\n basename,\n navigator,\n routePathnamesJson,\n locationPathname,\n dataRouterContext,\n ]\n );\n\n return navigate;\n}\n\nconst OutletContext = React.createContext(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/hooks/use-outlet-context\n */\nexport function useOutletContext(): Context {\n return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by `` to render child routes.\n *\n * @see https://reactrouter.com/hooks/use-outlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n let outlet = React.useContext(RouteContext).outlet;\n if (outlet) {\n return (\n {outlet}\n );\n }\n return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/hooks/use-params\n */\nexport function useParams<\n ParamsOrKey extends string | Record = string\n>(): Readonly<\n [ParamsOrKey] extends [string] ? Params : Partial\n> {\n let { matches } = React.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/hooks/use-resolved-path\n */\nexport function useResolvedPath(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): Path {\n let { future } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n let routePathnamesJson = JSON.stringify(\n getResolveToMatches(matches, future.v7_relativeSplatPath)\n );\n\n return React.useMemo(\n () =>\n resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n relative === \"path\"\n ),\n [to, routePathnamesJson, locationPathname, relative]\n );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an `` to render their child route's\n * element.\n *\n * @see https://reactrouter.com/hooks/use-routes\n */\nexport function useRoutes(\n routes: RouteObject[],\n locationArg?: Partial | string\n): React.ReactElement | null {\n return useRoutesImpl(routes, locationArg);\n}\n\n// Internal implementation with accept optional param for RouterProvider usage\nexport function useRoutesImpl(\n routes: RouteObject[],\n locationArg?: Partial | string,\n dataRouterState?: RemixRouter[\"state\"],\n future?: RemixRouter[\"future\"]\n): React.ReactElement | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useRoutes() may be used only in the context of a component.`\n );\n\n let { navigator } = React.useContext(NavigationContext);\n let { matches: parentMatches } = React.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n\n if (__DEV__) {\n // You won't get a warning about 2 different under a \n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // \n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // } />\n // } />\n // \n //\n // function Blog() {\n // return (\n // \n // } />\n // \n // );\n // }\n let parentPath = (parentRoute && parentRoute.path) || \"\";\n warningOnce(\n parentPathname,\n !parentRoute || parentPath.endsWith(\"*\"),\n `You rendered descendant (or called \\`useRoutes()\\`) at ` +\n `\"${parentPathname}\" (under ) but the ` +\n `parent route path has no trailing \"*\". This means if you navigate ` +\n `deeper, the parent won't match anymore and therefore the child ` +\n `routes will never render.\\n\\n` +\n `Please change the parent to .`\n );\n }\n\n let locationFromContext = useLocation();\n\n let location;\n if (locationArg) {\n let parsedLocationArg =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n invariant(\n parentPathnameBase === \"/\" ||\n parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n `When overriding the location using \\`\\` or \\`useRoutes(routes, location)\\`, ` +\n `the location pathname must begin with the portion of the URL pathname that was ` +\n `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n );\n\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n\n let pathname = location.pathname || \"/\";\n\n let remainingPathname = pathname;\n if (parentPathnameBase !== \"/\") {\n // Determine the remaining pathname by removing the # of URL segments the\n // parentPathnameBase has, instead of removing based on character count.\n // This is because we can't guarantee that incoming/outgoing encodings/\n // decodings will match exactly.\n // We decode paths before matching on a per-segment basis with\n // decodeURIComponent(), but we re-encode pathnames via `new URL()` so they\n // match what `window.location.pathname` would reflect. Those don't 100%\n // align when it comes to encoded URI characters such as % and &.\n //\n // So we may end up with:\n // pathname: \"/descendant/a%25b/match\"\n // parentPathnameBase: \"/descendant/a%b\"\n //\n // And the direct substring removal approach won't work :/\n let parentSegments = parentPathnameBase.replace(/^\\//, \"\").split(\"/\");\n let segments = pathname.replace(/^\\//, \"\").split(\"/\");\n remainingPathname = \"/\" + segments.slice(parentSegments.length).join(\"/\");\n }\n\n let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n if (__DEV__) {\n warning(\n parentRoute || matches != null,\n `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n );\n\n warning(\n matches == null ||\n matches[matches.length - 1].route.element !== undefined ||\n matches[matches.length - 1].route.Component !== undefined ||\n matches[matches.length - 1].route.lazy !== undefined,\n `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" ` +\n `does not have an element or Component. This means it will render an with a ` +\n `null value by default resulting in an \"empty\" page.`\n );\n }\n\n let renderedMatches = _renderMatches(\n matches &&\n matches.map((match) =>\n Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathname).pathname\n : match.pathname,\n ]),\n pathnameBase:\n match.pathnameBase === \"/\"\n ? parentPathnameBase\n : joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathnameBase).pathname\n : match.pathnameBase,\n ]),\n })\n ),\n parentMatches,\n dataRouterState,\n future\n );\n\n // When a user passes in a `locationArg`, the associated routes need to\n // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n // to use the scoped location instead of the global location.\n if (locationArg && renderedMatches) {\n return (\n \n {renderedMatches}\n \n );\n }\n\n return renderedMatches;\n}\n\nfunction DefaultErrorComponent() {\n let error = useRouteError();\n let message = isRouteErrorResponse(error)\n ? `${error.status} ${error.statusText}`\n : error instanceof Error\n ? error.message\n : JSON.stringify(error);\n let stack = error instanceof Error ? error.stack : null;\n let lightgrey = \"rgba(200,200,200, 0.5)\";\n let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n\n let devInfo = null;\n if (__DEV__) {\n console.error(\n \"Error handled by React Router default ErrorBoundary:\",\n error\n );\n\n devInfo = (\n <>\n

💿 Hey developer 👋

\n

\n You can provide a way better UX than this when your app throws errors\n by providing your own ErrorBoundary or{\" \"}\n errorElement prop on your route.\n

\n \n );\n }\n\n return (\n <>\n

Unexpected Application Error!

\n

{message}

\n {stack ?
{stack}
: null}\n {devInfo}\n \n );\n}\n\nconst defaultErrorElement = ;\n\ntype RenderErrorBoundaryProps = React.PropsWithChildren<{\n location: Location;\n revalidation: RevalidationState;\n error: any;\n component: React.ReactNode;\n routeContext: RouteContextObject;\n}>;\n\ntype RenderErrorBoundaryState = {\n location: Location;\n revalidation: RevalidationState;\n error: any;\n};\n\nexport class RenderErrorBoundary extends React.Component<\n RenderErrorBoundaryProps,\n RenderErrorBoundaryState\n> {\n constructor(props: RenderErrorBoundaryProps) {\n super(props);\n this.state = {\n location: props.location,\n revalidation: props.revalidation,\n error: props.error,\n };\n }\n\n static getDerivedStateFromError(error: any) {\n return { error: error };\n }\n\n static getDerivedStateFromProps(\n props: RenderErrorBoundaryProps,\n state: RenderErrorBoundaryState\n ) {\n // When we get into an error state, the user will likely click \"back\" to the\n // previous page that didn't have an error. Because this wraps the entire\n // application, that will have no effect--the error page continues to display.\n // This gives us a mechanism to recover from the error when the location changes.\n //\n // Whether we're in an error state or not, we update the location in state\n // so that when we are in an error state, it gets reset when a new location\n // comes in and the user recovers from the error.\n if (\n state.location !== props.location ||\n (state.revalidation !== \"idle\" && props.revalidation === \"idle\")\n ) {\n return {\n error: props.error,\n location: props.location,\n revalidation: props.revalidation,\n };\n }\n\n // If we're not changing locations, preserve the location but still surface\n // any new errors that may come through. We retain the existing error, we do\n // this because the error provided from the app state may be cleared without\n // the location changing.\n return {\n error: props.error !== undefined ? props.error : state.error,\n location: state.location,\n revalidation: props.revalidation || state.revalidation,\n };\n }\n\n componentDidCatch(error: any, errorInfo: any) {\n console.error(\n \"React Router caught the following error during render\",\n error,\n errorInfo\n );\n }\n\n render() {\n return this.state.error !== undefined ? (\n \n \n \n ) : (\n this.props.children\n );\n }\n}\n\ninterface RenderedRouteProps {\n routeContext: RouteContextObject;\n match: RouteMatch;\n children: React.ReactNode | null;\n}\n\nfunction RenderedRoute({ routeContext, match, children }: RenderedRouteProps) {\n let dataRouterContext = React.useContext(DataRouterContext);\n\n // Track how deep we got in our render pass to emulate SSR componentDidCatch\n // in a DataStaticRouter\n if (\n dataRouterContext &&\n dataRouterContext.static &&\n dataRouterContext.staticContext &&\n (match.route.errorElement || match.route.ErrorBoundary)\n ) {\n dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n }\n\n return (\n \n {children}\n \n );\n}\n\nexport function _renderMatches(\n matches: RouteMatch[] | null,\n parentMatches: RouteMatch[] = [],\n dataRouterState: RemixRouter[\"state\"] | null = null,\n future: RemixRouter[\"future\"] | null = null\n): React.ReactElement | null {\n if (matches == null) {\n if (!dataRouterState) {\n return null;\n }\n\n if (dataRouterState.errors) {\n // Don't bail if we have data router errors so we can render them in the\n // boundary. Use the pre-matched (or shimmed) matches\n matches = dataRouterState.matches as DataRouteMatch[];\n } else if (\n future?.v7_partialHydration &&\n parentMatches.length === 0 &&\n !dataRouterState.initialized &&\n dataRouterState.matches.length > 0\n ) {\n // Don't bail if we're initializing with partial hydration and we have\n // router matches. That means we're actively running `patchRoutesOnNavigation`\n // so we should render down the partial matches to the appropriate\n // `HydrateFallback`. We only do this if `parentMatches` is empty so it\n // only impacts the root matches for `RouterProvider` and no descendant\n // ``\n matches = dataRouterState.matches as DataRouteMatch[];\n } else {\n return null;\n }\n }\n\n let renderedMatches = matches;\n\n // If we have data errors, trim matches to the highest error boundary\n let errors = dataRouterState?.errors;\n if (errors != null) {\n let errorIndex = renderedMatches.findIndex(\n (m) => m.route.id && errors?.[m.route.id] !== undefined\n );\n invariant(\n errorIndex >= 0,\n `Could not find a matching route for errors on route IDs: ${Object.keys(\n errors\n ).join(\",\")}`\n );\n renderedMatches = renderedMatches.slice(\n 0,\n Math.min(renderedMatches.length, errorIndex + 1)\n );\n }\n\n // If we're in a partial hydration mode, detect if we need to render down to\n // a given HydrateFallback while we load the rest of the hydration data\n let renderFallback = false;\n let fallbackIndex = -1;\n if (dataRouterState && future && future.v7_partialHydration) {\n for (let i = 0; i < renderedMatches.length; i++) {\n let match = renderedMatches[i];\n // Track the deepest fallback up until the first route without data\n if (match.route.HydrateFallback || match.route.hydrateFallbackElement) {\n fallbackIndex = i;\n }\n\n if (match.route.id) {\n let { loaderData, errors } = dataRouterState;\n let needsToRunLoader =\n match.route.loader &&\n loaderData[match.route.id] === undefined &&\n (!errors || errors[match.route.id] === undefined);\n if (match.route.lazy || needsToRunLoader) {\n // We found the first route that's not ready to render (waiting on\n // lazy, or has a loader that hasn't run yet). Flag that we need to\n // render a fallback and render up until the appropriate fallback\n renderFallback = true;\n if (fallbackIndex >= 0) {\n renderedMatches = renderedMatches.slice(0, fallbackIndex + 1);\n } else {\n renderedMatches = [renderedMatches[0]];\n }\n break;\n }\n }\n }\n }\n\n return renderedMatches.reduceRight((outlet, match, index) => {\n // Only data routers handle errors/fallbacks\n let error: any;\n let shouldRenderHydrateFallback = false;\n let errorElement: React.ReactNode | null = null;\n let hydrateFallbackElement: React.ReactNode | null = null;\n if (dataRouterState) {\n error = errors && match.route.id ? errors[match.route.id] : undefined;\n errorElement = match.route.errorElement || defaultErrorElement;\n\n if (renderFallback) {\n if (fallbackIndex < 0 && index === 0) {\n warningOnce(\n \"route-fallback\",\n false,\n \"No `HydrateFallback` element provided to render during initial hydration\"\n );\n shouldRenderHydrateFallback = true;\n hydrateFallbackElement = null;\n } else if (fallbackIndex === index) {\n shouldRenderHydrateFallback = true;\n hydrateFallbackElement = match.route.hydrateFallbackElement || null;\n }\n }\n }\n\n let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));\n let getChildren = () => {\n let children: React.ReactNode;\n if (error) {\n children = errorElement;\n } else if (shouldRenderHydrateFallback) {\n children = hydrateFallbackElement;\n } else if (match.route.Component) {\n // Note: This is a de-optimized path since React won't re-use the\n // ReactElement since it's identity changes with each new\n // React.createElement call. We keep this so folks can use\n // `` in `` but generally `Component`\n // usage is only advised in `RouterProvider` when we can convert it to\n // `element` ahead of time.\n children = ;\n } else if (match.route.element) {\n children = match.route.element;\n } else {\n children = outlet;\n }\n return (\n \n );\n };\n // Only wrap in an error boundary within data router usages when we have an\n // ErrorBoundary/errorElement on this route. Otherwise let it bubble up to\n // an ancestor ErrorBoundary/errorElement\n return dataRouterState &&\n (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? (\n \n ) : (\n getChildren()\n );\n }, null as React.ReactElement | null);\n}\n\nenum DataRouterHook {\n UseBlocker = \"useBlocker\",\n UseRevalidator = \"useRevalidator\",\n UseNavigateStable = \"useNavigate\",\n}\n\nenum DataRouterStateHook {\n UseBlocker = \"useBlocker\",\n UseLoaderData = \"useLoaderData\",\n UseActionData = \"useActionData\",\n UseRouteError = \"useRouteError\",\n UseNavigation = \"useNavigation\",\n UseRouteLoaderData = \"useRouteLoaderData\",\n UseMatches = \"useMatches\",\n UseRevalidator = \"useRevalidator\",\n UseNavigateStable = \"useNavigate\",\n UseRouteId = \"useRouteId\",\n}\n\nfunction getDataRouterConsoleError(\n hookName: DataRouterHook | DataRouterStateHook\n) {\n return `${hookName} must be used within a data router. See https://reactrouter.com/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n let ctx = React.useContext(DataRouterContext);\n invariant(ctx, getDataRouterConsoleError(hookName));\n return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n let state = React.useContext(DataRouterStateContext);\n invariant(state, getDataRouterConsoleError(hookName));\n return state;\n}\n\nfunction useRouteContext(hookName: DataRouterStateHook) {\n let route = React.useContext(RouteContext);\n invariant(route, getDataRouterConsoleError(hookName));\n return route;\n}\n\n// Internal version with hookName-aware debugging\nfunction useCurrentRouteId(hookName: DataRouterStateHook) {\n let route = useRouteContext(hookName);\n let thisRoute = route.matches[route.matches.length - 1];\n invariant(\n thisRoute.route.id,\n `${hookName} can only be used on routes that contain a unique \"id\"`\n );\n return thisRoute.route.id;\n}\n\n/**\n * Returns the ID for the nearest contextual route\n */\nexport function useRouteId() {\n return useCurrentRouteId(DataRouterStateHook.UseRouteId);\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nexport function useNavigation() {\n let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nexport function useRevalidator() {\n let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n return React.useMemo(\n () => ({\n revalidate: dataRouterContext.router.revalidate,\n state: state.revalidation,\n }),\n [dataRouterContext.router.revalidate, state.revalidation]\n );\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nexport function useMatches(): UIMatch[] {\n let { matches, loaderData } = useDataRouterState(\n DataRouterStateHook.UseMatches\n );\n return React.useMemo(\n () => matches.map((m) => convertRouteMatchToUiMatch(m, loaderData)),\n [matches, loaderData]\n );\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nexport function useLoaderData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n\n if (state.errors && state.errors[routeId] != null) {\n console.error(\n `You cannot \\`useLoaderData\\` in an errorElement (routeId: ${routeId})`\n );\n return undefined;\n }\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nexport function useRouteLoaderData(routeId: string): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nexport function useActionData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseActionData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n return state.actionData ? state.actionData[routeId] : undefined;\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error. This is intended to be called from your\n * ErrorBoundary/errorElement to display a proper error message.\n */\nexport function useRouteError(): unknown {\n let error = React.useContext(RouteErrorContext);\n let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);\n\n // If this was a render error, we put it in a RouteError context inside\n // of RenderErrorBoundary\n if (error !== undefined) {\n return error;\n }\n\n // Otherwise look for errors from our data router state\n return state.errors?.[routeId];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor `` value\n */\nexport function useAsyncValue(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._data;\n}\n\n/**\n * Returns the error from the nearest ancestor `` value\n */\nexport function useAsyncError(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._error;\n}\n\nlet blockerId = 0;\n\n/**\n * Allow the application to block navigations within the SPA and present the\n * user a confirmation dialog to confirm the navigation. Mostly used to avoid\n * using half-filled form data. This does not handle hard-reloads or\n * cross-origin navigations.\n */\nexport function useBlocker(shouldBlock: boolean | BlockerFunction): Blocker {\n let { router, basename } = useDataRouterContext(DataRouterHook.UseBlocker);\n let state = useDataRouterState(DataRouterStateHook.UseBlocker);\n\n let [blockerKey, setBlockerKey] = React.useState(\"\");\n let blockerFunction = React.useCallback(\n (arg) => {\n if (typeof shouldBlock !== \"function\") {\n return !!shouldBlock;\n }\n if (basename === \"/\") {\n return shouldBlock(arg);\n }\n\n // If they provided us a function and we've got an active basename, strip\n // it from the locations we expose to the user to match the behavior of\n // useLocation\n let { currentLocation, nextLocation, historyAction } = arg;\n return shouldBlock({\n currentLocation: {\n ...currentLocation,\n pathname:\n stripBasename(currentLocation.pathname, basename) ||\n currentLocation.pathname,\n },\n nextLocation: {\n ...nextLocation,\n pathname:\n stripBasename(nextLocation.pathname, basename) ||\n nextLocation.pathname,\n },\n historyAction,\n });\n },\n [basename, shouldBlock]\n );\n\n // This effect is in charge of blocker key assignment and deletion (which is\n // tightly coupled to the key)\n React.useEffect(() => {\n let key = String(++blockerId);\n setBlockerKey(key);\n return () => router.deleteBlocker(key);\n }, [router]);\n\n // This effect handles assigning the blockerFunction. This is to handle\n // unstable blocker function identities, and happens only after the prior\n // effect so we don't get an orphaned blockerFunction in the router with a\n // key of \"\". Until then we just have the IDLE_BLOCKER.\n React.useEffect(() => {\n if (blockerKey !== \"\") {\n router.getBlocker(blockerKey, blockerFunction);\n }\n }, [router, blockerKey, blockerFunction]);\n\n // Prefer the blocker from `state` not `router.state` since DataRouterContext\n // is memoized so this ensures we update on blocker state updates\n return blockerKey && state.blockers.has(blockerKey)\n ? state.blockers.get(blockerKey)!\n : IDLE_BLOCKER;\n}\n\n/**\n * Stable version of useNavigate that is used when we are in the context of\n * a RouterProvider.\n */\nfunction useNavigateStable(): NavigateFunction {\n let { router } = useDataRouterContext(DataRouterHook.UseNavigateStable);\n let id = useCurrentRouteId(DataRouterStateHook.UseNavigateStable);\n\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our router subscriber yet\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n router.navigate(to);\n } else {\n router.navigate(to, { fromRouteId: id, ...options });\n }\n },\n [router, id]\n );\n\n return navigate;\n}\n\nconst alreadyWarned: Record = {};\n\nfunction warningOnce(key: string, cond: boolean, message: string) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\n","import type {\n InitialEntry,\n LazyRouteFunction,\n Location,\n MemoryHistory,\n RelativeRoutingType,\n Router as RemixRouter,\n RouterState,\n RouterSubscriber,\n To,\n TrackedPromise,\n} from \"@remix-run/router\";\nimport {\n AbortedDeferredError,\n Action as NavigationType,\n createMemoryHistory,\n UNSAFE_getResolveToMatches as getResolveToMatches,\n UNSAFE_invariant as invariant,\n parsePath,\n resolveTo,\n stripBasename,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\nimport * as React from \"react\";\n\nimport type {\n DataRouteObject,\n IndexRouteObject,\n Navigator,\n NonIndexRouteObject,\n RouteMatch,\n RouteObject,\n} from \"./context\";\nimport {\n AwaitContext,\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n} from \"./context\";\nimport {\n _renderMatches,\n useAsyncValue,\n useInRouterContext,\n useLocation,\n useNavigate,\n useOutlet,\n useRoutes,\n useRoutesImpl,\n} from \"./hooks\";\n\nexport interface FutureConfig {\n v7_relativeSplatPath: boolean;\n v7_startTransition: boolean;\n}\n\nexport interface RouterProviderProps {\n fallbackElement?: React.ReactNode;\n router: RemixRouter;\n // Only accept future flags relevant to rendering behavior\n // routing flags should be accessed via router.future\n future?: Partial>;\n}\n\n/**\n Webpack + React 17 fails to compile on any of the following because webpack\n complains that `startTransition` doesn't exist in `React`:\n * import { startTransition } from \"react\"\n * import * as React from from \"react\";\n \"startTransition\" in React ? React.startTransition(() => setState()) : setState()\n * import * as React from from \"react\";\n \"startTransition\" in React ? React[\"startTransition\"](() => setState()) : setState()\n\n Moving it to a constant such as the following solves the Webpack/React 17 issue:\n * import * as React from from \"react\";\n const START_TRANSITION = \"startTransition\";\n START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()\n\n However, that introduces webpack/terser minification issues in production builds\n in React 18 where minification/obfuscation ends up removing the call of\n React.startTransition entirely from the first half of the ternary. Grabbing\n this exported reference once up front resolves that issue.\n\n See https://github.com/remix-run/react-router/issues/10579\n*/\nconst START_TRANSITION = \"startTransition\";\nconst startTransitionImpl = React[START_TRANSITION];\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nexport function RouterProvider({\n fallbackElement,\n router,\n future,\n}: RouterProviderProps): React.ReactElement {\n let [state, setStateImpl] = React.useState(router.state);\n let { v7_startTransition } = future || {};\n\n let setState = React.useCallback(\n (newState: RouterState) => {\n if (v7_startTransition && startTransitionImpl) {\n startTransitionImpl(() => setStateImpl(newState));\n } else {\n setStateImpl(newState);\n }\n },\n [setStateImpl, v7_startTransition]\n );\n\n // Need to use a layout effect here so we are subscribed early enough to\n // pick up on any render-driven redirects/navigations (useEffect/)\n React.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n\n React.useEffect(() => {\n warning(\n fallbackElement == null || !router.future.v7_partialHydration,\n \"`` is deprecated when using \" +\n \"`v7_partialHydration`, use a `HydrateFallback` component instead\"\n );\n // Only log this once on initial mount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n let navigator = React.useMemo((): Navigator => {\n return {\n createHref: router.createHref,\n encodeLocation: router.encodeLocation,\n go: (n) => router.navigate(n),\n push: (to, state, opts) =>\n router.navigate(to, {\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n replace: (to, state, opts) =>\n router.navigate(to, {\n replace: true,\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n };\n }, [router]);\n\n let basename = router.basename || \"/\";\n\n let dataRouterContext = React.useMemo(\n () => ({\n router,\n navigator,\n static: false,\n basename,\n }),\n [router, navigator, basename]\n );\n\n // The fragment and {null} here are important! We need them to keep React 18's\n // useId happy when we are server-rendering since we may have a \";\r\n var nW = globalObject.open();\r\n\r\n if (nW !== null) {\r\n nW.document.write(htmlForNewWindow);\r\n }\r\n return nW;\r\n } else {\r\n throw new Error(\r\n \"The option pdfobjectnewwindow just works in a browser-environment.\"\r\n );\r\n }\r\n case \"pdfjsnewwindow\":\r\n if (\r\n Object.prototype.toString.call(globalObject) === \"[object Window]\"\r\n ) {\r\n var pdfJsUrl = options.pdfJsUrl || \"examples/PDF.js/web/viewer.html\";\r\n var htmlForPDFjsNewWindow =\r\n \"\" +\r\n \"\" +\r\n '' +\r\n \"\";\r\n var dataURLNewWindow = globalObject.open();\r\n if (dataURLNewWindow !== null) {\r\n dataURLNewWindow.document.write(htmlForDataURLNewWindow);\r\n dataURLNewWindow.document.title = options.filename;\r\n }\r\n if (dataURLNewWindow || typeof safari === \"undefined\")\r\n return dataURLNewWindow;\r\n } else {\r\n throw new Error(\r\n \"The option dataurlnewwindow just works in a browser-environment.\"\r\n );\r\n }\r\n break;\r\n case \"datauri\":\r\n case \"dataurl\":\r\n return (globalObject.document.location.href = this.output(\r\n \"datauristring\",\r\n options\r\n ));\r\n default:\r\n return null;\r\n }\r\n }));\r\n\r\n /**\r\n * Used to see if a supplied hotfix was requested when the pdf instance was created.\r\n * @param {string} hotfixName - The name of the hotfix to check.\r\n * @returns {boolean}\r\n */\r\n var hasHotfix = function(hotfixName) {\r\n return (\r\n Array.isArray(hotfixes) === true && hotfixes.indexOf(hotfixName) > -1\r\n );\r\n };\r\n\r\n switch (unit) {\r\n case \"pt\":\r\n scaleFactor = 1;\r\n break;\r\n case \"mm\":\r\n scaleFactor = 72 / 25.4;\r\n break;\r\n case \"cm\":\r\n scaleFactor = 72 / 2.54;\r\n break;\r\n case \"in\":\r\n scaleFactor = 72;\r\n break;\r\n case \"px\":\r\n if (hasHotfix(\"px_scaling\") == true) {\r\n scaleFactor = 72 / 96;\r\n } else {\r\n scaleFactor = 96 / 72;\r\n }\r\n break;\r\n case \"pc\":\r\n scaleFactor = 12;\r\n break;\r\n case \"em\":\r\n scaleFactor = 12;\r\n break;\r\n case \"ex\":\r\n scaleFactor = 6;\r\n break;\r\n default:\r\n if (typeof unit === \"number\") {\r\n scaleFactor = unit;\r\n } else {\r\n throw new Error(\"Invalid unit: \" + unit);\r\n }\r\n }\r\n\r\n var encryption = null;\r\n setCreationDate();\r\n setFileId();\r\n\r\n var getEncryptor = function(objectId) {\r\n if (encryptionOptions !== null) {\r\n return encryption.encryptor(objectId, 0);\r\n }\r\n return function(data) {\r\n return data;\r\n };\r\n };\r\n\r\n //---------------------------------------\r\n // Public API\r\n\r\n var getPageInfo = (API.__private__.getPageInfo = API.getPageInfo = function(\r\n pageNumberOneBased\r\n ) {\r\n if (isNaN(pageNumberOneBased) || pageNumberOneBased % 1 !== 0) {\r\n throw new Error(\"Invalid argument passed to jsPDF.getPageInfo\");\r\n }\r\n var objId = pagesContext[pageNumberOneBased].objId;\r\n return {\r\n objId: objId,\r\n pageNumber: pageNumberOneBased,\r\n pageContext: pagesContext[pageNumberOneBased]\r\n };\r\n });\r\n\r\n var getPageInfoByObjId = (API.__private__.getPageInfoByObjId = function(\r\n objId\r\n ) {\r\n if (isNaN(objId) || objId % 1 !== 0) {\r\n throw new Error(\"Invalid argument passed to jsPDF.getPageInfoByObjId\");\r\n }\r\n for (var pageNumber in pagesContext) {\r\n if (pagesContext[pageNumber].objId === objId) {\r\n break;\r\n }\r\n }\r\n return getPageInfo(pageNumber);\r\n });\r\n\r\n var getCurrentPageInfo = (API.__private__.getCurrentPageInfo = API.getCurrentPageInfo = function() {\r\n return {\r\n objId: pagesContext[currentPage].objId,\r\n pageNumber: currentPage,\r\n pageContext: pagesContext[currentPage]\r\n };\r\n });\r\n\r\n /**\r\n * Adds (and transfers the focus to) new page to the PDF document.\r\n * @param format {String/Array} The format of the new page. Can be:
  • a0 - a10
  • b0 - b10
  • c0 - c10
  • dl
  • letter
  • government-letter
  • legal
  • junior-legal
  • ledger
  • tabloid
  • credit-card

\r\n * Default is \"a4\". If you want to use your own format just pass instead of one of the above predefined formats the size as an number-array, e.g. [595.28, 841.89]\r\n * @param orientation {string} Orientation of the new page. Possible values are \"portrait\" or \"landscape\" (or shortcuts \"p\" (Default), \"l\").\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n *\r\n * @memberof jsPDF#\r\n * @name addPage\r\n */\r\n API.addPage = function() {\r\n _addPage.apply(this, arguments);\r\n return this;\r\n };\r\n /**\r\n * Adds (and transfers the focus to) new page to the PDF document.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n *\r\n * @memberof jsPDF#\r\n * @name setPage\r\n * @param {number} page Switch the active page to the page number specified (indexed starting at 1).\r\n * @example\r\n * doc = jsPDF()\r\n * doc.addPage()\r\n * doc.addPage()\r\n * doc.text('I am on page 3', 10, 10)\r\n * doc.setPage(1)\r\n * doc.text('I am on page 1', 10, 10)\r\n */\r\n API.setPage = function() {\r\n _setPage.apply(this, arguments);\r\n setOutputDestination.call(this, pages[currentPage]);\r\n return this;\r\n };\r\n\r\n /**\r\n * @name insertPage\r\n * @memberof jsPDF#\r\n *\r\n * @function\r\n * @instance\r\n * @param {Object} beforePage\r\n * @returns {jsPDF}\r\n */\r\n API.insertPage = function(beforePage) {\r\n this.addPage();\r\n this.movePage(currentPage, beforePage);\r\n return this;\r\n };\r\n\r\n /**\r\n * @name movePage\r\n * @memberof jsPDF#\r\n * @function\r\n * @instance\r\n * @param {number} targetPage\r\n * @param {number} beforePage\r\n * @returns {jsPDF}\r\n */\r\n API.movePage = function(targetPage, beforePage) {\r\n var tmpPages, tmpPagesContext;\r\n if (targetPage > beforePage) {\r\n tmpPages = pages[targetPage];\r\n tmpPagesContext = pagesContext[targetPage];\r\n for (var i = targetPage; i > beforePage; i--) {\r\n pages[i] = pages[i - 1];\r\n pagesContext[i] = pagesContext[i - 1];\r\n }\r\n pages[beforePage] = tmpPages;\r\n pagesContext[beforePage] = tmpPagesContext;\r\n this.setPage(beforePage);\r\n } else if (targetPage < beforePage) {\r\n tmpPages = pages[targetPage];\r\n tmpPagesContext = pagesContext[targetPage];\r\n for (var j = targetPage; j < beforePage; j++) {\r\n pages[j] = pages[j + 1];\r\n pagesContext[j] = pagesContext[j + 1];\r\n }\r\n pages[beforePage] = tmpPages;\r\n pagesContext[beforePage] = tmpPagesContext;\r\n this.setPage(beforePage);\r\n }\r\n return this;\r\n };\r\n\r\n /**\r\n * Deletes a page from the PDF.\r\n * @name deletePage\r\n * @memberof jsPDF#\r\n * @function\r\n * @param {number} targetPage\r\n * @instance\r\n * @returns {jsPDF}\r\n */\r\n API.deletePage = function() {\r\n _deletePage.apply(this, arguments);\r\n return this;\r\n };\r\n\r\n /**\r\n * Adds text to page. Supports adding multiline text when 'text' argument is an Array of Strings.\r\n *\r\n * @function\r\n * @instance\r\n * @param {String|Array} text String or array of strings to be added to the page. Each line is shifted one line down per font, spacing settings declared before this call.\r\n * @param {number} x Coordinate (in units declared at inception of PDF document) against left edge of the page.\r\n * @param {number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page.\r\n * @param {Object} [options] - Collection of settings signaling how the text must be encoded.\r\n * @param {string} [options.align=left] - The alignment of the text, possible values: left, center, right, justify.\r\n * @param {string} [options.baseline=alphabetic] - Sets text baseline used when drawing the text, possible values: alphabetic, ideographic, bottom, top, middle, hanging\r\n * @param {number|Matrix} [options.angle=0] - Rotate the text clockwise or counterclockwise. Expects the angle in degree.\r\n * @param {number} [options.rotationDirection=1] - Direction of the rotation. 0 = clockwise, 1 = counterclockwise.\r\n * @param {number} [options.charSpace=0] - The space between each letter.\r\n * @param {number} [options.horizontalScale=1] - Horizontal scale of the text as a factor of the regular size.\r\n * @param {number} [options.lineHeightFactor=1.15] - The lineheight of each line.\r\n * @param {Object} [options.flags] - Flags for to8bitStream.\r\n * @param {boolean} [options.flags.noBOM=true] - Don't add BOM to Unicode-text.\r\n * @param {boolean} [options.flags.autoencode=true] - Autoencode the Text.\r\n * @param {number} [options.maxWidth=0] - Split the text by given width, 0 = no split.\r\n * @param {string} [options.renderingMode=fill] - Set how the text should be rendered, possible values: fill, stroke, fillThenStroke, invisible, fillAndAddForClipping, strokeAndAddPathForClipping, fillThenStrokeAndAddToPathForClipping, addToPathForClipping.\r\n * @param {boolean} [options.isInputVisual] - Option for the BidiEngine\r\n * @param {boolean} [options.isOutputVisual] - Option for the BidiEngine\r\n * @param {boolean} [options.isInputRtl] - Option for the BidiEngine\r\n * @param {boolean} [options.isOutputRtl] - Option for the BidiEngine\r\n * @param {boolean} [options.isSymmetricSwapping] - Option for the BidiEngine\r\n * @param {number|Matrix} transform If transform is a number the text will be rotated by this value around the anchor set by x and y.\r\n *\r\n * If it is a Matrix, this matrix gets directly applied to the text, which allows shearing\r\n * effects etc.; the x and y offsets are then applied AFTER the coordinate system has been established by this\r\n * matrix. This means passing a rotation matrix that is equivalent to some rotation angle will in general yield a\r\n * DIFFERENT result. A matrix is only allowed in \"advanced\" API mode.\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name text\r\n */\r\n API.__private__.text = API.text = function(text, x, y, options, transform) {\r\n /*\r\n * Inserts something like this into PDF\r\n * BT\r\n * /F1 16 Tf % Font name + size\r\n * 16 TL % How many units down for next line in multiline text\r\n * 0 g % color\r\n * 28.35 813.54 Td % position\r\n * (line one) Tj\r\n * T* (line two) Tj\r\n * T* (line three) Tj\r\n * ET\r\n */\r\n options = options || {};\r\n var scope = options.scope || this;\r\n var payload, da, angle, align, charSpace, maxWidth, flags, horizontalScale;\r\n\r\n // Pre-August-2012 the order of arguments was function(x, y, text, flags)\r\n // in effort to make all calls have similar signature like\r\n // function(data, coordinates... , miscellaneous)\r\n // this method had its args flipped.\r\n // code below allows backward compatibility with old arg order.\r\n if (\r\n typeof text === \"number\" &&\r\n typeof x === \"number\" &&\r\n (typeof y === \"string\" || Array.isArray(y))\r\n ) {\r\n var tmp = y;\r\n y = x;\r\n x = text;\r\n text = tmp;\r\n }\r\n\r\n var transformationMatrix;\r\n\r\n if (arguments[3] instanceof Matrix === false) {\r\n flags = arguments[3];\r\n angle = arguments[4];\r\n align = arguments[5];\r\n\r\n if (typeof flags !== \"object\" || flags === null) {\r\n if (typeof angle === \"string\") {\r\n align = angle;\r\n angle = null;\r\n }\r\n if (typeof flags === \"string\") {\r\n align = flags;\r\n flags = null;\r\n }\r\n if (typeof flags === \"number\") {\r\n angle = flags;\r\n flags = null;\r\n }\r\n options = {\r\n flags: flags,\r\n angle: angle,\r\n align: align\r\n };\r\n }\r\n } else {\r\n advancedApiModeTrap(\r\n \"The transform parameter of text() with a Matrix value\"\r\n );\r\n transformationMatrix = transform;\r\n }\r\n\r\n if (isNaN(x) || isNaN(y) || typeof text === \"undefined\" || text === null) {\r\n throw new Error(\"Invalid arguments passed to jsPDF.text\");\r\n }\r\n\r\n if (text.length === 0) {\r\n return scope;\r\n }\r\n\r\n var xtra = \"\";\r\n var isHex = false;\r\n var lineHeight =\r\n typeof options.lineHeightFactor === \"number\"\r\n ? options.lineHeightFactor\r\n : lineHeightFactor;\r\n var scaleFactor = scope.internal.scaleFactor;\r\n\r\n function ESC(s) {\r\n s = s.split(\"\\t\").join(Array(options.TabLen || 9).join(\" \"));\r\n return pdfEscape(s, flags);\r\n }\r\n\r\n function transformTextToSpecialArray(text) {\r\n //we don't want to destroy original text array, so cloning it\r\n var sa = text.concat();\r\n var da = [];\r\n var len = sa.length;\r\n var curDa;\r\n //we do array.join('text that must not be PDFescaped\")\r\n //thus, pdfEscape each component separately\r\n while (len--) {\r\n curDa = sa.shift();\r\n if (typeof curDa === \"string\") {\r\n da.push(curDa);\r\n } else {\r\n if (\r\n Array.isArray(text) &&\r\n (curDa.length === 1 ||\r\n (curDa[1] === undefined && curDa[2] === undefined))\r\n ) {\r\n da.push(curDa[0]);\r\n } else {\r\n da.push([curDa[0], curDa[1], curDa[2]]);\r\n }\r\n }\r\n }\r\n return da;\r\n }\r\n\r\n function processTextByFunction(text, processingFunction) {\r\n var result;\r\n if (typeof text === \"string\") {\r\n result = processingFunction(text)[0];\r\n } else if (Array.isArray(text)) {\r\n //we don't want to destroy original text array, so cloning it\r\n var sa = text.concat();\r\n var da = [];\r\n var len = sa.length;\r\n var curDa;\r\n var tmpResult;\r\n //we do array.join('text that must not be PDFescaped\")\r\n //thus, pdfEscape each component separately\r\n while (len--) {\r\n curDa = sa.shift();\r\n if (typeof curDa === \"string\") {\r\n da.push(processingFunction(curDa)[0]);\r\n } else if (Array.isArray(curDa) && typeof curDa[0] === \"string\") {\r\n tmpResult = processingFunction(curDa[0], curDa[1], curDa[2]);\r\n da.push([tmpResult[0], tmpResult[1], tmpResult[2]]);\r\n }\r\n }\r\n result = da;\r\n }\r\n return result;\r\n }\r\n\r\n //Check if text is of type String\r\n var textIsOfTypeString = false;\r\n var tmpTextIsOfTypeString = true;\r\n\r\n if (typeof text === \"string\") {\r\n textIsOfTypeString = true;\r\n } else if (Array.isArray(text)) {\r\n //we don't want to destroy original text array, so cloning it\r\n var sa = text.concat();\r\n da = [];\r\n var len = sa.length;\r\n var curDa;\r\n //we do array.join('text that must not be PDFescaped\")\r\n //thus, pdfEscape each component separately\r\n while (len--) {\r\n curDa = sa.shift();\r\n if (\r\n typeof curDa !== \"string\" ||\r\n (Array.isArray(curDa) && typeof curDa[0] !== \"string\")\r\n ) {\r\n tmpTextIsOfTypeString = false;\r\n }\r\n }\r\n textIsOfTypeString = tmpTextIsOfTypeString;\r\n }\r\n if (textIsOfTypeString === false) {\r\n throw new Error(\r\n 'Type of text must be string or Array. \"' +\r\n text +\r\n '\" is not recognized.'\r\n );\r\n }\r\n\r\n //If there are any newlines in text, we assume\r\n //the user wanted to print multiple lines, so break the\r\n //text up into an array. If the text is already an array,\r\n //we assume the user knows what they are doing.\r\n //Convert text into an array anyway to simplify\r\n //later code.\r\n\r\n if (typeof text === \"string\") {\r\n if (text.match(/[\\r?\\n]/)) {\r\n text = text.split(/\\r\\n|\\r|\\n/g);\r\n } else {\r\n text = [text];\r\n }\r\n }\r\n\r\n //baseline\r\n var height = activeFontSize / scope.internal.scaleFactor;\r\n var descent = height * (lineHeight - 1);\r\n\r\n switch (options.baseline) {\r\n case \"bottom\":\r\n y -= descent;\r\n break;\r\n case \"top\":\r\n y += height - descent;\r\n break;\r\n case \"hanging\":\r\n y += height - 2 * descent;\r\n break;\r\n case \"middle\":\r\n y += height / 2 - descent;\r\n break;\r\n case \"ideographic\":\r\n case \"alphabetic\":\r\n default:\r\n // do nothing, everything is fine\r\n break;\r\n }\r\n\r\n //multiline\r\n maxWidth = options.maxWidth || 0;\r\n\r\n if (maxWidth > 0) {\r\n if (typeof text === \"string\") {\r\n text = scope.splitTextToSize(text, maxWidth);\r\n } else if (Object.prototype.toString.call(text) === \"[object Array]\") {\r\n text = text.reduce(function(acc, textLine) {\r\n return acc.concat(scope.splitTextToSize(textLine, maxWidth));\r\n }, []);\r\n }\r\n }\r\n\r\n //creating Payload-Object to make text byRef\r\n payload = {\r\n text: text,\r\n x: x,\r\n y: y,\r\n options: options,\r\n mutex: {\r\n pdfEscape: pdfEscape,\r\n activeFontKey: activeFontKey,\r\n fonts: fonts,\r\n activeFontSize: activeFontSize\r\n }\r\n };\r\n events.publish(\"preProcessText\", payload);\r\n\r\n text = payload.text;\r\n options = payload.options;\r\n\r\n //angle\r\n angle = options.angle;\r\n\r\n if (\r\n transformationMatrix instanceof Matrix === false &&\r\n angle &&\r\n typeof angle === \"number\"\r\n ) {\r\n angle *= Math.PI / 180;\r\n\r\n if (options.rotationDirection === 0) {\r\n angle = -angle;\r\n }\r\n\r\n if (apiMode === ApiMode.ADVANCED) {\r\n angle = -angle;\r\n }\r\n\r\n var c = Math.cos(angle);\r\n var s = Math.sin(angle);\r\n transformationMatrix = new Matrix(c, s, -s, c, 0, 0);\r\n } else if (angle && angle instanceof Matrix) {\r\n transformationMatrix = angle;\r\n }\r\n\r\n if (apiMode === ApiMode.ADVANCED && !transformationMatrix) {\r\n transformationMatrix = identityMatrix;\r\n }\r\n\r\n //charSpace\r\n\r\n charSpace = options.charSpace || activeCharSpace;\r\n\r\n if (typeof charSpace !== \"undefined\") {\r\n xtra += hpf(scale(charSpace)) + \" Tc\\n\";\r\n this.setCharSpace(this.getCharSpace() || 0);\r\n }\r\n\r\n horizontalScale = options.horizontalScale;\r\n if (typeof horizontalScale !== \"undefined\") {\r\n xtra += hpf(horizontalScale * 100) + \" Tz\\n\";\r\n }\r\n\r\n //lang\r\n\r\n var lang = options.lang;\r\n\r\n if (lang) {\r\n // xtra += \"/Lang (\" + lang +\")\\n\";\r\n }\r\n\r\n //renderingMode\r\n var renderingMode = -1;\r\n var parmRenderingMode =\r\n typeof options.renderingMode !== \"undefined\"\r\n ? options.renderingMode\r\n : options.stroke;\r\n var pageContext = scope.internal.getCurrentPageInfo().pageContext;\r\n\r\n switch (parmRenderingMode) {\r\n case 0:\r\n case false:\r\n case \"fill\":\r\n renderingMode = 0;\r\n break;\r\n case 1:\r\n case true:\r\n case \"stroke\":\r\n renderingMode = 1;\r\n break;\r\n case 2:\r\n case \"fillThenStroke\":\r\n renderingMode = 2;\r\n break;\r\n case 3:\r\n case \"invisible\":\r\n renderingMode = 3;\r\n break;\r\n case 4:\r\n case \"fillAndAddForClipping\":\r\n renderingMode = 4;\r\n break;\r\n case 5:\r\n case \"strokeAndAddPathForClipping\":\r\n renderingMode = 5;\r\n break;\r\n case 6:\r\n case \"fillThenStrokeAndAddToPathForClipping\":\r\n renderingMode = 6;\r\n break;\r\n case 7:\r\n case \"addToPathForClipping\":\r\n renderingMode = 7;\r\n break;\r\n }\r\n\r\n var usedRenderingMode =\r\n typeof pageContext.usedRenderingMode !== \"undefined\"\r\n ? pageContext.usedRenderingMode\r\n : -1;\r\n\r\n //if the coder wrote it explicitly to use a specific\r\n //renderingMode, then use it\r\n if (renderingMode !== -1) {\r\n xtra += renderingMode + \" Tr\\n\";\r\n //otherwise check if we used the rendering Mode already\r\n //if so then set the rendering Mode...\r\n } else if (usedRenderingMode !== -1) {\r\n xtra += \"0 Tr\\n\";\r\n }\r\n\r\n if (renderingMode !== -1) {\r\n pageContext.usedRenderingMode = renderingMode;\r\n }\r\n\r\n //align\r\n align = options.align || \"left\";\r\n var leading = activeFontSize * lineHeight;\r\n var pageWidth = scope.internal.pageSize.getWidth();\r\n var activeFont = fonts[activeFontKey];\r\n charSpace = options.charSpace || activeCharSpace;\r\n maxWidth = options.maxWidth || 0;\r\n\r\n var lineWidths;\r\n flags = Object.assign({ autoencode: true, noBOM: true }, options.flags);\r\n\r\n var wordSpacingPerLine = [];\r\n var findWidth = function(v) {\r\n return (\r\n (scope.getStringUnitWidth(v, {\r\n font: activeFont,\r\n charSpace: charSpace,\r\n fontSize: activeFontSize,\r\n doKerning: false\r\n }) *\r\n activeFontSize) /\r\n scaleFactor\r\n );\r\n };\r\n if (Object.prototype.toString.call(text) === \"[object Array]\") {\r\n da = transformTextToSpecialArray(text);\r\n var newY;\r\n if (align !== \"left\") {\r\n lineWidths = da.map(findWidth);\r\n }\r\n //The first line uses the \"main\" Td setting,\r\n //and the subsequent lines are offset by the\r\n //previous line's x coordinate.\r\n var prevWidth = 0;\r\n var newX;\r\n if (align === \"right\") {\r\n //The passed in x coordinate defines the\r\n //rightmost point of the text.\r\n x -= lineWidths[0];\r\n text = [];\r\n len = da.length;\r\n for (var i = 0; i < len; i++) {\r\n if (i === 0) {\r\n newX = getHorizontalCoordinate(x);\r\n newY = getVerticalCoordinate(y);\r\n } else {\r\n newX = scale(prevWidth - lineWidths[i]);\r\n newY = -leading;\r\n }\r\n text.push([da[i], newX, newY]);\r\n prevWidth = lineWidths[i];\r\n }\r\n } else if (align === \"center\") {\r\n //The passed in x coordinate defines\r\n //the center point.\r\n x -= lineWidths[0] / 2;\r\n text = [];\r\n len = da.length;\r\n for (var j = 0; j < len; j++) {\r\n if (j === 0) {\r\n newX = getHorizontalCoordinate(x);\r\n newY = getVerticalCoordinate(y);\r\n } else {\r\n newX = scale((prevWidth - lineWidths[j]) / 2);\r\n newY = -leading;\r\n }\r\n text.push([da[j], newX, newY]);\r\n prevWidth = lineWidths[j];\r\n }\r\n } else if (align === \"left\") {\r\n text = [];\r\n len = da.length;\r\n for (var h = 0; h < len; h++) {\r\n text.push(da[h]);\r\n }\r\n } else if (align === \"justify\" && activeFont.encoding === \"Identity-H\") {\r\n // when using unicode fonts, wordSpacePerLine does not apply\r\n text = [];\r\n len = da.length;\r\n maxWidth = maxWidth !== 0 ? maxWidth : pageWidth;\r\n let backToStartX = 0;\r\n for (var l = 0; l < len; l++) {\r\n newY = l === 0 ? getVerticalCoordinate(y) : -leading;\r\n newX = l === 0 ? getHorizontalCoordinate(x) : backToStartX;\r\n if (l < len - 1) {\r\n let spacing = scale(\r\n (maxWidth - lineWidths[l]) / (da[l].split(\" \").length - 1)\r\n );\r\n let words = da[l].split(\" \");\r\n text.push([words[0] + \" \", newX, newY]);\r\n backToStartX = 0; // distance to reset back to the left\r\n for (let i = 1; i < words.length; i++) {\r\n let shiftAmount =\r\n (findWidth(words[i - 1] + \" \" + words[i]) -\r\n findWidth(words[i])) *\r\n scaleFactor +\r\n spacing;\r\n if (i == words.length - 1) text.push([words[i], shiftAmount, 0]);\r\n else text.push([words[i] + \" \", shiftAmount, 0]);\r\n backToStartX -= shiftAmount;\r\n }\r\n } else {\r\n text.push([da[l], newX, newY]);\r\n }\r\n }\r\n text.push([\"\", backToStartX, 0]);\r\n } else if (align === \"justify\") {\r\n text = [];\r\n len = da.length;\r\n maxWidth = maxWidth !== 0 ? maxWidth : pageWidth;\r\n for (var l = 0; l < len; l++) {\r\n newY = l === 0 ? getVerticalCoordinate(y) : -leading;\r\n newX = l === 0 ? getHorizontalCoordinate(x) : 0;\r\n if (l < len - 1) {\r\n wordSpacingPerLine.push(\r\n hpf(\r\n scale(\r\n (maxWidth - lineWidths[l]) / (da[l].split(\" \").length - 1)\r\n )\r\n )\r\n );\r\n } else {\r\n wordSpacingPerLine.push(0);\r\n }\r\n text.push([da[l], newX, newY]);\r\n }\r\n } else {\r\n throw new Error(\r\n 'Unrecognized alignment option, use \"left\", \"center\", \"right\" or \"justify\".'\r\n );\r\n }\r\n }\r\n\r\n //R2L\r\n var doReversing = typeof options.R2L === \"boolean\" ? options.R2L : R2L;\r\n if (doReversing === true) {\r\n text = processTextByFunction(text, function(text, posX, posY) {\r\n return [\r\n text\r\n .split(\"\")\r\n .reverse()\r\n .join(\"\"),\r\n posX,\r\n posY\r\n ];\r\n });\r\n }\r\n\r\n //creating Payload-Object to make text byRef\r\n payload = {\r\n text: text,\r\n x: x,\r\n y: y,\r\n options: options,\r\n mutex: {\r\n pdfEscape: pdfEscape,\r\n activeFontKey: activeFontKey,\r\n fonts: fonts,\r\n activeFontSize: activeFontSize\r\n }\r\n };\r\n events.publish(\"postProcessText\", payload);\r\n\r\n text = payload.text;\r\n isHex = payload.mutex.isHex || false;\r\n\r\n //Escaping\r\n var activeFontEncoding = fonts[activeFontKey].encoding;\r\n\r\n if (\r\n activeFontEncoding === \"WinAnsiEncoding\" ||\r\n activeFontEncoding === \"StandardEncoding\"\r\n ) {\r\n text = processTextByFunction(text, function(text, posX, posY) {\r\n return [ESC(text), posX, posY];\r\n });\r\n }\r\n\r\n da = transformTextToSpecialArray(text);\r\n\r\n text = [];\r\n var STRING = 0;\r\n var ARRAY = 1;\r\n var variant = Array.isArray(da[0]) ? ARRAY : STRING;\r\n var posX;\r\n var posY;\r\n var content;\r\n var wordSpacing = \"\";\r\n\r\n var generatePosition = function(\r\n parmPosX,\r\n parmPosY,\r\n parmTransformationMatrix\r\n ) {\r\n var position = \"\";\r\n if (parmTransformationMatrix instanceof Matrix) {\r\n // It is kind of more intuitive to apply a plain rotation around the text anchor set by x and y\r\n // but when the user supplies an arbitrary transformation matrix, the x and y offsets should be applied\r\n // in the coordinate system established by this matrix\r\n if (typeof options.angle === \"number\") {\r\n parmTransformationMatrix = matrixMult(\r\n parmTransformationMatrix,\r\n new Matrix(1, 0, 0, 1, parmPosX, parmPosY)\r\n );\r\n } else {\r\n parmTransformationMatrix = matrixMult(\r\n new Matrix(1, 0, 0, 1, parmPosX, parmPosY),\r\n parmTransformationMatrix\r\n );\r\n }\r\n\r\n if (apiMode === ApiMode.ADVANCED) {\r\n parmTransformationMatrix = matrixMult(\r\n new Matrix(1, 0, 0, -1, 0, 0),\r\n parmTransformationMatrix\r\n );\r\n }\r\n\r\n position = parmTransformationMatrix.join(\" \") + \" Tm\\n\";\r\n } else {\r\n position = hpf(parmPosX) + \" \" + hpf(parmPosY) + \" Td\\n\";\r\n }\r\n return position;\r\n };\r\n\r\n for (var lineIndex = 0; lineIndex < da.length; lineIndex++) {\r\n wordSpacing = \"\";\r\n\r\n switch (variant) {\r\n case ARRAY:\r\n content =\r\n (isHex ? \"<\" : \"(\") + da[lineIndex][0] + (isHex ? \">\" : \")\");\r\n posX = parseFloat(da[lineIndex][1]);\r\n posY = parseFloat(da[lineIndex][2]);\r\n break;\r\n case STRING:\r\n content = (isHex ? \"<\" : \"(\") + da[lineIndex] + (isHex ? \">\" : \")\");\r\n posX = getHorizontalCoordinate(x);\r\n posY = getVerticalCoordinate(y);\r\n break;\r\n }\r\n\r\n if (\r\n typeof wordSpacingPerLine !== \"undefined\" &&\r\n typeof wordSpacingPerLine[lineIndex] !== \"undefined\"\r\n ) {\r\n wordSpacing = wordSpacingPerLine[lineIndex] + \" Tw\\n\";\r\n }\r\n\r\n if (lineIndex === 0) {\r\n text.push(\r\n wordSpacing +\r\n generatePosition(posX, posY, transformationMatrix) +\r\n content\r\n );\r\n } else if (variant === STRING) {\r\n text.push(wordSpacing + content);\r\n } else if (variant === ARRAY) {\r\n text.push(\r\n wordSpacing +\r\n generatePosition(posX, posY, transformationMatrix) +\r\n content\r\n );\r\n }\r\n }\r\n\r\n text = variant === STRING ? text.join(\" Tj\\nT* \") : text.join(\" Tj\\n\");\r\n text += \" Tj\\n\";\r\n\r\n var result = \"BT\\n/\";\r\n result += activeFontKey + \" \" + activeFontSize + \" Tf\\n\"; // font face, style, size\r\n result += hpf(activeFontSize * lineHeight) + \" TL\\n\"; // line spacing\r\n result += textColor + \"\\n\";\r\n result += xtra;\r\n result += text;\r\n result += \"ET\";\r\n\r\n out(result);\r\n usedFonts[activeFontKey] = true;\r\n return scope;\r\n };\r\n\r\n // PDF supports these path painting and clip path operators:\r\n //\r\n // S - stroke\r\n // s - close/stroke\r\n // f (F) - fill non-zero\r\n // f* - fill evenodd\r\n // B - fill stroke nonzero\r\n // B* - fill stroke evenodd\r\n // b - close fill stroke nonzero\r\n // b* - close fill stroke evenodd\r\n // n - nothing (consume path)\r\n // W - clip nonzero\r\n // W* - clip evenodd\r\n //\r\n // In order to keep the API small, we omit the close-and-fill/stroke operators and provide a separate close()\r\n // method.\r\n /**\r\n *\r\n * @name clip\r\n * @function\r\n * @instance\r\n * @param {string} rule Only possible value is 'evenodd'\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @description All .clip() after calling drawing ops with a style argument of null.\r\n */\r\n var clip = (API.__private__.clip = API.clip = function(rule) {\r\n // Call .clip() after calling drawing ops with a style argument of null\r\n // W is the PDF clipping op\r\n if (\"evenodd\" === rule) {\r\n out(\"W*\");\r\n } else {\r\n out(\"W\");\r\n }\r\n return this;\r\n });\r\n\r\n /**\r\n * @name clipEvenOdd\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @description Modify the current clip path by intersecting it with the current path using the even-odd rule. Note\r\n * that this will NOT consume the current path. In order to only use this path for clipping call\r\n * {@link API.discardPath} afterwards.\r\n */\r\n API.clipEvenOdd = function() {\r\n return clip(\"evenodd\");\r\n };\r\n\r\n /**\r\n * Consumes the current path without any effect. Mainly used in combination with {@link clip} or\r\n * {@link clipEvenOdd}. The PDF \"n\" operator.\r\n * @name discardPath\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n */\r\n API.__private__.discardPath = API.discardPath = function() {\r\n out(\"n\");\r\n return this;\r\n };\r\n\r\n var isValidStyle = (API.__private__.isValidStyle = function(style) {\r\n var validStyleVariants = [\r\n undefined,\r\n null,\r\n \"S\",\r\n \"D\",\r\n \"F\",\r\n \"DF\",\r\n \"FD\",\r\n \"f\",\r\n \"f*\",\r\n \"B\",\r\n \"B*\",\r\n \"n\"\r\n ];\r\n var result = false;\r\n if (validStyleVariants.indexOf(style) !== -1) {\r\n result = true;\r\n }\r\n return result;\r\n });\r\n\r\n API.__private__.setDefaultPathOperation = API.setDefaultPathOperation = function(\r\n operator\r\n ) {\r\n if (isValidStyle(operator)) {\r\n defaultPathOperation = operator;\r\n }\r\n return this;\r\n };\r\n\r\n var getStyle = (API.__private__.getStyle = API.getStyle = function(style) {\r\n // see path-painting operators in PDF spec\r\n var op = defaultPathOperation; // stroke\r\n\r\n switch (style) {\r\n case \"D\":\r\n case \"S\":\r\n op = \"S\"; // stroke\r\n break;\r\n case \"F\":\r\n op = \"f\"; // fill\r\n break;\r\n case \"FD\":\r\n case \"DF\":\r\n op = \"B\";\r\n break;\r\n case \"f\":\r\n case \"f*\":\r\n case \"B\":\r\n case \"B*\":\r\n /*\r\n Allow direct use of these PDF path-painting operators:\r\n - f fill using nonzero winding number rule\r\n - f* fill using even-odd rule\r\n - B fill then stroke with fill using non-zero winding number rule\r\n - B* fill then stroke with fill using even-odd rule\r\n */\r\n op = style;\r\n break;\r\n }\r\n return op;\r\n });\r\n\r\n /**\r\n * Close the current path. The PDF \"h\" operator.\r\n * @name close\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n */\r\n var close = (API.close = function() {\r\n out(\"h\");\r\n return this;\r\n });\r\n\r\n /**\r\n * Stroke the path. The PDF \"S\" operator.\r\n * @name stroke\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n */\r\n API.stroke = function() {\r\n out(\"S\");\r\n return this;\r\n };\r\n\r\n /**\r\n * Fill the current path using the nonzero winding number rule. If a pattern is provided, the path will be filled\r\n * with this pattern, otherwise with the current fill color. Equivalent to the PDF \"f\" operator.\r\n * @name fill\r\n * @function\r\n * @instance\r\n * @param {PatternData=} pattern If provided the path will be filled with this pattern\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n */\r\n API.fill = function(pattern) {\r\n fillWithOptionalPattern(\"f\", pattern);\r\n return this;\r\n };\r\n\r\n /**\r\n * Fill the current path using the even-odd rule. The PDF f* operator.\r\n * @see API.fill\r\n * @name fillEvenOdd\r\n * @function\r\n * @instance\r\n * @param {PatternData=} pattern If provided the path will be filled with this pattern\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n */\r\n API.fillEvenOdd = function(pattern) {\r\n fillWithOptionalPattern(\"f*\", pattern);\r\n return this;\r\n };\r\n\r\n /**\r\n * Fill using the nonzero winding number rule and then stroke the current Path. The PDF \"B\" operator.\r\n * @see API.fill\r\n * @name fillStroke\r\n * @function\r\n * @instance\r\n * @param {PatternData=} pattern If provided the path will be stroked with this pattern\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n */\r\n API.fillStroke = function(pattern) {\r\n fillWithOptionalPattern(\"B\", pattern);\r\n return this;\r\n };\r\n\r\n /**\r\n * Fill using the even-odd rule and then stroke the current Path. The PDF \"B\" operator.\r\n * @see API.fill\r\n * @name fillStrokeEvenOdd\r\n * @function\r\n * @instance\r\n * @param {PatternData=} pattern If provided the path will be fill-stroked with this pattern\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n */\r\n API.fillStrokeEvenOdd = function(pattern) {\r\n fillWithOptionalPattern(\"B*\", pattern);\r\n return this;\r\n };\r\n\r\n var fillWithOptionalPattern = function(style, pattern) {\r\n if (typeof pattern === \"object\") {\r\n fillWithPattern(pattern, style);\r\n } else {\r\n out(style);\r\n }\r\n };\r\n\r\n var putStyle = function(style) {\r\n if (\r\n style === null ||\r\n (apiMode === ApiMode.ADVANCED && style === undefined)\r\n ) {\r\n return;\r\n }\r\n\r\n style = getStyle(style);\r\n\r\n // stroking / filling / both the path\r\n out(style);\r\n };\r\n\r\n function cloneTilingPattern(patternKey, boundingBox, xStep, yStep, matrix) {\r\n var clone = new TilingPattern(\r\n boundingBox || this.boundingBox,\r\n xStep || this.xStep,\r\n yStep || this.yStep,\r\n this.gState,\r\n matrix || this.matrix\r\n );\r\n clone.stream = this.stream;\r\n var key = patternKey + \"$$\" + this.cloneIndex++ + \"$$\";\r\n addPattern(key, clone);\r\n return clone;\r\n }\r\n\r\n var fillWithPattern = function(patternData, style) {\r\n var patternId = patternMap[patternData.key];\r\n var pattern = patterns[patternId];\r\n\r\n if (pattern instanceof ShadingPattern) {\r\n out(\"q\");\r\n\r\n out(clipRuleFromStyle(style));\r\n\r\n if (pattern.gState) {\r\n API.setGState(pattern.gState);\r\n }\r\n out(patternData.matrix.toString() + \" cm\");\r\n out(\"/\" + patternId + \" sh\");\r\n out(\"Q\");\r\n } else if (pattern instanceof TilingPattern) {\r\n // pdf draws patterns starting at the bottom left corner and they are not affected by the global transformation,\r\n // so we must flip them\r\n var matrix = new Matrix(1, 0, 0, -1, 0, getPageHeight());\r\n\r\n if (patternData.matrix) {\r\n matrix = matrix.multiply(patternData.matrix || identityMatrix);\r\n // we cannot apply a matrix to the pattern on use so we must abuse the pattern matrix and create new instances\r\n // for each use\r\n patternId = cloneTilingPattern.call(\r\n pattern,\r\n patternData.key,\r\n patternData.boundingBox,\r\n patternData.xStep,\r\n patternData.yStep,\r\n matrix\r\n ).id;\r\n }\r\n\r\n out(\"q\");\r\n out(\"/Pattern cs\");\r\n out(\"/\" + patternId + \" scn\");\r\n\r\n if (pattern.gState) {\r\n API.setGState(pattern.gState);\r\n }\r\n\r\n out(style);\r\n out(\"Q\");\r\n }\r\n };\r\n\r\n var clipRuleFromStyle = function(style) {\r\n switch (style) {\r\n case \"f\":\r\n case \"F\":\r\n return \"W n\";\r\n case \"f*\":\r\n return \"W* n\";\r\n case \"B\":\r\n return \"W S\";\r\n case \"B*\":\r\n return \"W* S\";\r\n\r\n // these two are for compatibility reasons (in the past, calling any primitive method with a shading pattern\r\n // and \"n\"/\"S\" as style would still fill/fill and stroke the path)\r\n case \"S\":\r\n return \"W S\";\r\n case \"n\":\r\n return \"W n\";\r\n }\r\n };\r\n\r\n /**\r\n * Begin a new subpath by moving the current point to coordinates (x, y). The PDF \"m\" operator.\r\n * @param {number} x\r\n * @param {number} y\r\n * @name moveTo\r\n * @function\r\n * @instance\r\n * @memberof jsPDF#\r\n * @returns {jsPDF}\r\n */\r\n var moveTo = (API.moveTo = function(x, y) {\r\n out(hpf(scale(x)) + \" \" + hpf(transformScaleY(y)) + \" m\");\r\n return this;\r\n });\r\n\r\n /**\r\n * Append a straight line segment from the current point to the point (x, y). The PDF \"l\" operator.\r\n * @param {number} x\r\n * @param {number} y\r\n * @memberof jsPDF#\r\n * @name lineTo\r\n * @function\r\n * @instance\r\n * @memberof jsPDF#\r\n * @returns {jsPDF}\r\n */\r\n var lineTo = (API.lineTo = function(x, y) {\r\n out(hpf(scale(x)) + \" \" + hpf(transformScaleY(y)) + \" l\");\r\n return this;\r\n });\r\n\r\n /**\r\n * Append a cubic Bézier curve to the current path. The curve shall extend from the current point to the point\r\n * (x3, y3), using (x1, y1) and (x2, y2) as Bézier control points. The new current point shall be (x3, x3).\r\n * @param {number} x1\r\n * @param {number} y1\r\n * @param {number} x2\r\n * @param {number} y2\r\n * @param {number} x3\r\n * @param {number} y3\r\n * @memberof jsPDF#\r\n * @name curveTo\r\n * @function\r\n * @instance\r\n * @memberof jsPDF#\r\n * @returns {jsPDF}\r\n */\r\n var curveTo = (API.curveTo = function(x1, y1, x2, y2, x3, y3) {\r\n out(\r\n [\r\n hpf(scale(x1)),\r\n hpf(transformScaleY(y1)),\r\n hpf(scale(x2)),\r\n hpf(transformScaleY(y2)),\r\n hpf(scale(x3)),\r\n hpf(transformScaleY(y3)),\r\n \"c\"\r\n ].join(\" \")\r\n );\r\n return this;\r\n });\r\n\r\n /**\r\n * Draw a line on the current page.\r\n *\r\n * @name line\r\n * @function\r\n * @instance\r\n * @param {number} x1\r\n * @param {number} y1\r\n * @param {number} x2\r\n * @param {number} y2\r\n * @param {string} style A string specifying the painting style or null. Valid styles include: 'S' [default] - stroke, 'F' - fill, and 'DF' (or 'FD') - fill then stroke. A null value postpones setting the style so that a shape may be composed using multiple method calls. The last drawing method call used to define the shape should not have a null style argument. default: 'S'\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n */\r\n API.__private__.line = API.line = function(x1, y1, x2, y2, style) {\r\n if (\r\n isNaN(x1) ||\r\n isNaN(y1) ||\r\n isNaN(x2) ||\r\n isNaN(y2) ||\r\n !isValidStyle(style)\r\n ) {\r\n throw new Error(\"Invalid arguments passed to jsPDF.line\");\r\n }\r\n if (apiMode === ApiMode.COMPAT) {\r\n return this.lines([[x2 - x1, y2 - y1]], x1, y1, [1, 1], style || \"S\");\r\n } else {\r\n return this.lines([[x2 - x1, y2 - y1]], x1, y1, [1, 1]).stroke();\r\n }\r\n };\r\n\r\n /**\r\n * @typedef {Object} PatternData\r\n * {Matrix|undefined} matrix\r\n * {Number|undefined} xStep\r\n * {Number|undefined} yStep\r\n * {Array.|undefined} boundingBox\r\n */\r\n\r\n /**\r\n * Adds series of curves (straight lines or cubic bezier curves) to canvas, starting at `x`, `y` coordinates.\r\n * All data points in `lines` are relative to last line origin.\r\n * `x`, `y` become x1,y1 for first line / curve in the set.\r\n * For lines you only need to specify [x2, y2] - (ending point) vector against x1, y1 starting point.\r\n * For bezier curves you need to specify [x2,y2,x3,y3,x4,y4] - vectors to control points 1, 2, ending point. All vectors are against the start of the curve - x1,y1.\r\n *\r\n * @example .lines([[2,2],[-2,2],[1,1,2,2,3,3],[2,1]], 212,110, [1,1], 'F', false) // line, line, bezier curve, line\r\n * @param {Array} lines Array of *vector* shifts as pairs (lines) or sextets (cubic bezier curves).\r\n * @param {number} x Coordinate (in units declared at inception of PDF document) against left edge of the page\r\n * @param {number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page\r\n * @param {number} scale (Defaults to [1.0,1.0]) x,y Scaling factor for all vectors. Elements can be any floating number Sub-one makes drawing smaller. Over-one grows the drawing. Negative flips the direction.\r\n * @param {string=} style A string specifying the painting style or null. Valid styles include:\r\n * 'S' [default] - stroke,\r\n * 'F' - fill,\r\n * and 'DF' (or 'FD') - fill then stroke.\r\n * In \"compat\" API mode, a null value postpones setting the style so that a shape may be composed using multiple\r\n * method calls. The last drawing method call used to define the shape should not have a null style argument.\r\n *\r\n * In \"advanced\" API mode this parameter is deprecated.\r\n * @param {Boolean=} closed If true, the path is closed with a straight line from the end of the last curve to the starting point.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name lines\r\n */\r\n API.__private__.lines = API.lines = function(\r\n lines,\r\n x,\r\n y,\r\n scale,\r\n style,\r\n closed\r\n ) {\r\n var scalex, scaley, i, l, leg, x2, y2, x3, y3, x4, y4, tmp;\r\n\r\n // Pre-August-2012 the order of arguments was function(x, y, lines, scale, style)\r\n // in effort to make all calls have similar signature like\r\n // function(content, coordinateX, coordinateY , miscellaneous)\r\n // this method had its args flipped.\r\n // code below allows backward compatibility with old arg order.\r\n if (typeof lines === \"number\") {\r\n tmp = y;\r\n y = x;\r\n x = lines;\r\n lines = tmp;\r\n }\r\n\r\n scale = scale || [1, 1];\r\n closed = closed || false;\r\n\r\n if (\r\n isNaN(x) ||\r\n isNaN(y) ||\r\n !Array.isArray(lines) ||\r\n !Array.isArray(scale) ||\r\n !isValidStyle(style) ||\r\n typeof closed !== \"boolean\"\r\n ) {\r\n throw new Error(\"Invalid arguments passed to jsPDF.lines\");\r\n }\r\n\r\n // starting point\r\n moveTo(x, y);\r\n\r\n scalex = scale[0];\r\n scaley = scale[1];\r\n l = lines.length;\r\n //, x2, y2 // bezier only. In page default measurement \"units\", *after* scaling\r\n //, x3, y3 // bezier only. In page default measurement \"units\", *after* scaling\r\n // ending point for all, lines and bezier. . In page default measurement \"units\", *after* scaling\r\n x4 = x; // last / ending point = starting point for first item.\r\n y4 = y; // last / ending point = starting point for first item.\r\n\r\n for (i = 0; i < l; i++) {\r\n leg = lines[i];\r\n if (leg.length === 2) {\r\n // simple line\r\n x4 = leg[0] * scalex + x4; // here last x4 was prior ending point\r\n y4 = leg[1] * scaley + y4; // here last y4 was prior ending point\r\n lineTo(x4, y4);\r\n } else {\r\n // bezier curve\r\n x2 = leg[0] * scalex + x4; // here last x4 is prior ending point\r\n y2 = leg[1] * scaley + y4; // here last y4 is prior ending point\r\n x3 = leg[2] * scalex + x4; // here last x4 is prior ending point\r\n y3 = leg[3] * scaley + y4; // here last y4 is prior ending point\r\n x4 = leg[4] * scalex + x4; // here last x4 was prior ending point\r\n y4 = leg[5] * scaley + y4; // here last y4 was prior ending point\r\n curveTo(x2, y2, x3, y3, x4, y4);\r\n }\r\n }\r\n\r\n if (closed) {\r\n close();\r\n }\r\n\r\n putStyle(style);\r\n return this;\r\n };\r\n\r\n /**\r\n * Similar to {@link API.lines} but all coordinates are interpreted as absolute coordinates instead of relative.\r\n * @param {Array} lines An array of {op: operator, c: coordinates} object, where op is one of \"m\" (move to), \"l\" (line to)\r\n * \"c\" (cubic bezier curve) and \"h\" (close (sub)path)). c is an array of coordinates. \"m\" and \"l\" expect two, \"c\"\r\n * six and \"h\" an empty array (or undefined).\r\n * @function\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name path\r\n */\r\n API.path = function(lines) {\r\n for (var i = 0; i < lines.length; i++) {\r\n var leg = lines[i];\r\n var coords = leg.c;\r\n switch (leg.op) {\r\n case \"m\":\r\n moveTo(coords[0], coords[1]);\r\n break;\r\n case \"l\":\r\n lineTo(coords[0], coords[1]);\r\n break;\r\n case \"c\":\r\n curveTo.apply(this, coords);\r\n break;\r\n case \"h\":\r\n close();\r\n break;\r\n }\r\n }\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * Adds a rectangle to PDF.\r\n *\r\n * @param {number} x Coordinate (in units declared at inception of PDF document) against left edge of the page\r\n * @param {number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page\r\n * @param {number} w Width (in units declared at inception of PDF document)\r\n * @param {number} h Height (in units declared at inception of PDF document)\r\n * @param {string=} style A string specifying the painting style or null. Valid styles include:\r\n * 'S' [default] - stroke,\r\n * 'F' - fill,\r\n * and 'DF' (or 'FD') - fill then stroke.\r\n * In \"compat\" API mode, a null value postpones setting the style so that a shape may be composed using multiple\r\n * method calls. The last drawing method call used to define the shape should not have a null style argument.\r\n *\r\n * In \"advanced\" API mode this parameter is deprecated.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name rect\r\n */\r\n API.__private__.rect = API.rect = function(x, y, w, h, style) {\r\n if (isNaN(x) || isNaN(y) || isNaN(w) || isNaN(h) || !isValidStyle(style)) {\r\n throw new Error(\"Invalid arguments passed to jsPDF.rect\");\r\n }\r\n if (apiMode === ApiMode.COMPAT) {\r\n h = -h;\r\n }\r\n\r\n out(\r\n [\r\n hpf(scale(x)),\r\n hpf(transformScaleY(y)),\r\n hpf(scale(w)),\r\n hpf(scale(h)),\r\n \"re\"\r\n ].join(\" \")\r\n );\r\n\r\n putStyle(style);\r\n return this;\r\n };\r\n\r\n /**\r\n * Adds a triangle to PDF.\r\n *\r\n * @param {number} x1 Coordinate (in units declared at inception of PDF document) against left edge of the page\r\n * @param {number} y1 Coordinate (in units declared at inception of PDF document) against upper edge of the page\r\n * @param {number} x2 Coordinate (in units declared at inception of PDF document) against left edge of the page\r\n * @param {number} y2 Coordinate (in units declared at inception of PDF document) against upper edge of the page\r\n * @param {number} x3 Coordinate (in units declared at inception of PDF document) against left edge of the page\r\n * @param {number} y3 Coordinate (in units declared at inception of PDF document) against upper edge of the page\r\n * @param {string=} style A string specifying the painting style or null. Valid styles include:\r\n * 'S' [default] - stroke,\r\n * 'F' - fill,\r\n * and 'DF' (or 'FD') - fill then stroke.\r\n * In \"compat\" API mode, a null value postpones setting the style so that a shape may be composed using multiple\r\n * method calls. The last drawing method call used to define the shape should not have a null style argument.\r\n *\r\n * In \"advanced\" API mode this parameter is deprecated.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name triangle\r\n */\r\n API.__private__.triangle = API.triangle = function(\r\n x1,\r\n y1,\r\n x2,\r\n y2,\r\n x3,\r\n y3,\r\n style\r\n ) {\r\n if (\r\n isNaN(x1) ||\r\n isNaN(y1) ||\r\n isNaN(x2) ||\r\n isNaN(y2) ||\r\n isNaN(x3) ||\r\n isNaN(y3) ||\r\n !isValidStyle(style)\r\n ) {\r\n throw new Error(\"Invalid arguments passed to jsPDF.triangle\");\r\n }\r\n this.lines(\r\n [\r\n [x2 - x1, y2 - y1], // vector to point 2\r\n [x3 - x2, y3 - y2], // vector to point 3\r\n [x1 - x3, y1 - y3] // closing vector back to point 1\r\n ],\r\n x1,\r\n y1, // start of path\r\n [1, 1],\r\n style,\r\n true\r\n );\r\n return this;\r\n };\r\n\r\n /**\r\n * Adds a rectangle with rounded corners to PDF.\r\n *\r\n * @param {number} x Coordinate (in units declared at inception of PDF document) against left edge of the page\r\n * @param {number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page\r\n * @param {number} w Width (in units declared at inception of PDF document)\r\n * @param {number} h Height (in units declared at inception of PDF document)\r\n * @param {number} rx Radius along x axis (in units declared at inception of PDF document)\r\n * @param {number} ry Radius along y axis (in units declared at inception of PDF document)\r\n * @param {string=} style A string specifying the painting style or null. Valid styles include:\r\n * 'S' [default] - stroke,\r\n * 'F' - fill,\r\n * and 'DF' (or 'FD') - fill then stroke.\r\n * In \"compat\" API mode, a null value postpones setting the style so that a shape may be composed using multiple\r\n * method calls. The last drawing method call used to define the shape should not have a null style argument.\r\n *\r\n * In \"advanced\" API mode this parameter is deprecated.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name roundedRect\r\n */\r\n API.__private__.roundedRect = API.roundedRect = function(\r\n x,\r\n y,\r\n w,\r\n h,\r\n rx,\r\n ry,\r\n style\r\n ) {\r\n if (\r\n isNaN(x) ||\r\n isNaN(y) ||\r\n isNaN(w) ||\r\n isNaN(h) ||\r\n isNaN(rx) ||\r\n isNaN(ry) ||\r\n !isValidStyle(style)\r\n ) {\r\n throw new Error(\"Invalid arguments passed to jsPDF.roundedRect\");\r\n }\r\n var MyArc = (4 / 3) * (Math.SQRT2 - 1);\r\n\r\n rx = Math.min(rx, w * 0.5);\r\n ry = Math.min(ry, h * 0.5);\r\n\r\n this.lines(\r\n [\r\n [w - 2 * rx, 0],\r\n [rx * MyArc, 0, rx, ry - ry * MyArc, rx, ry],\r\n [0, h - 2 * ry],\r\n [0, ry * MyArc, -(rx * MyArc), ry, -rx, ry],\r\n [-w + 2 * rx, 0],\r\n [-(rx * MyArc), 0, -rx, -(ry * MyArc), -rx, -ry],\r\n [0, -h + 2 * ry],\r\n [0, -(ry * MyArc), rx * MyArc, -ry, rx, -ry]\r\n ],\r\n x + rx,\r\n y, // start of path\r\n [1, 1],\r\n style,\r\n true\r\n );\r\n return this;\r\n };\r\n\r\n /**\r\n * Adds an ellipse to PDF.\r\n *\r\n * @param {number} x Coordinate (in units declared at inception of PDF document) against left edge of the page\r\n * @param {number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page\r\n * @param {number} rx Radius along x axis (in units declared at inception of PDF document)\r\n * @param {number} ry Radius along y axis (in units declared at inception of PDF document)\r\n * @param {string=} style A string specifying the painting style or null. Valid styles include:\r\n * 'S' [default] - stroke,\r\n * 'F' - fill,\r\n * and 'DF' (or 'FD') - fill then stroke.\r\n * In \"compat\" API mode, a null value postpones setting the style so that a shape may be composed using multiple\r\n * method calls. The last drawing method call used to define the shape should not have a null style argument.\r\n *\r\n * In \"advanced\" API mode this parameter is deprecated.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name ellipse\r\n */\r\n API.__private__.ellipse = API.ellipse = function(x, y, rx, ry, style) {\r\n if (\r\n isNaN(x) ||\r\n isNaN(y) ||\r\n isNaN(rx) ||\r\n isNaN(ry) ||\r\n !isValidStyle(style)\r\n ) {\r\n throw new Error(\"Invalid arguments passed to jsPDF.ellipse\");\r\n }\r\n var lx = (4 / 3) * (Math.SQRT2 - 1) * rx,\r\n ly = (4 / 3) * (Math.SQRT2 - 1) * ry;\r\n\r\n moveTo(x + rx, y);\r\n curveTo(x + rx, y - ly, x + lx, y - ry, x, y - ry);\r\n curveTo(x - lx, y - ry, x - rx, y - ly, x - rx, y);\r\n curveTo(x - rx, y + ly, x - lx, y + ry, x, y + ry);\r\n curveTo(x + lx, y + ry, x + rx, y + ly, x + rx, y);\r\n\r\n putStyle(style);\r\n return this;\r\n };\r\n\r\n /**\r\n * Adds an circle to PDF.\r\n *\r\n * @param {number} x Coordinate (in units declared at inception of PDF document) against left edge of the page\r\n * @param {number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page\r\n * @param {number} r Radius (in units declared at inception of PDF document)\r\n * @param {string=} style A string specifying the painting style or null. Valid styles include:\r\n * 'S' [default] - stroke,\r\n * 'F' - fill,\r\n * and 'DF' (or 'FD') - fill then stroke.\r\n * In \"compat\" API mode, a null value postpones setting the style so that a shape may be composed using multiple\r\n * method calls. The last drawing method call used to define the shape should not have a null style argument.\r\n *\r\n * In \"advanced\" API mode this parameter is deprecated.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name circle\r\n */\r\n API.__private__.circle = API.circle = function(x, y, r, style) {\r\n if (isNaN(x) || isNaN(y) || isNaN(r) || !isValidStyle(style)) {\r\n throw new Error(\"Invalid arguments passed to jsPDF.circle\");\r\n }\r\n return this.ellipse(x, y, r, r, style);\r\n };\r\n\r\n /**\r\n * Sets text font face, variant for upcoming text elements.\r\n * See output of jsPDF.getFontList() for possible font names, styles.\r\n *\r\n * @param {string} fontName Font name or family. Example: \"times\".\r\n * @param {string} fontStyle Font style or variant. Example: \"italic\".\r\n * @param {number | string} fontWeight Weight of the Font. Example: \"normal\" | 400\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setFont\r\n */\r\n API.setFont = function(fontName, fontStyle, fontWeight) {\r\n if (fontWeight) {\r\n fontStyle = combineFontStyleAndFontWeight(fontStyle, fontWeight);\r\n }\r\n activeFontKey = getFont(fontName, fontStyle, {\r\n disableWarning: false\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * Gets text font face, variant for upcoming text elements.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {Object}\r\n * @memberof jsPDF#\r\n * @name getFont\r\n */\r\n var getFontEntry = (API.__private__.getFont = API.getFont = function() {\r\n return fonts[getFont.apply(API, arguments)];\r\n });\r\n\r\n /**\r\n * Returns an object - a tree of fontName to fontStyle relationships available to\r\n * active PDF document.\r\n *\r\n * @public\r\n * @function\r\n * @instance\r\n * @returns {Object} Like {'times':['normal', 'italic', ... ], 'arial':['normal', 'bold', ... ], ... }\r\n * @memberof jsPDF#\r\n * @name getFontList\r\n */\r\n API.__private__.getFontList = API.getFontList = function() {\r\n var list = {},\r\n fontName,\r\n fontStyle;\r\n\r\n for (fontName in fontmap) {\r\n if (fontmap.hasOwnProperty(fontName)) {\r\n list[fontName] = [];\r\n for (fontStyle in fontmap[fontName]) {\r\n if (fontmap[fontName].hasOwnProperty(fontStyle)) {\r\n list[fontName].push(fontStyle);\r\n }\r\n }\r\n }\r\n }\r\n return list;\r\n };\r\n\r\n /**\r\n * Add a custom font to the current instance.\r\n *\r\n * @param {string} postScriptName PDF specification full name for the font.\r\n * @param {string} id PDF-document-instance-specific label assinged to the font.\r\n * @param {string} fontStyle Style of the Font.\r\n * @param {number | string} fontWeight Weight of the Font.\r\n * @param {Object} encoding Encoding_name-to-Font_metrics_object mapping.\r\n * @function\r\n * @instance\r\n * @memberof jsPDF#\r\n * @name addFont\r\n * @returns {string} fontId\r\n */\r\n API.addFont = function(\r\n postScriptName,\r\n fontName,\r\n fontStyle,\r\n fontWeight,\r\n encoding\r\n ) {\r\n var encodingOptions = [\r\n \"StandardEncoding\",\r\n \"MacRomanEncoding\",\r\n \"Identity-H\",\r\n \"WinAnsiEncoding\"\r\n ];\r\n if (arguments[3] && encodingOptions.indexOf(arguments[3]) !== -1) {\r\n //IE 11 fix\r\n encoding = arguments[3];\r\n } else if (arguments[3] && encodingOptions.indexOf(arguments[3]) == -1) {\r\n fontStyle = combineFontStyleAndFontWeight(fontStyle, fontWeight);\r\n }\r\n encoding = encoding || \"Identity-H\";\r\n return addFont.call(this, postScriptName, fontName, fontStyle, encoding);\r\n };\r\n\r\n var lineWidth = options.lineWidth || 0.200025; // 2mm\r\n /**\r\n * Gets the line width, default: 0.200025.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {number} lineWidth\r\n * @memberof jsPDF#\r\n * @name getLineWidth\r\n */\r\n var getLineWidth = (API.__private__.getLineWidth = API.getLineWidth = function() {\r\n return lineWidth;\r\n });\r\n\r\n /**\r\n * Sets line width for upcoming lines.\r\n *\r\n * @param {number} width Line width (in units declared at inception of PDF document).\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setLineWidth\r\n */\r\n var setLineWidth = (API.__private__.setLineWidth = API.setLineWidth = function(\r\n width\r\n ) {\r\n lineWidth = width;\r\n out(hpf(scale(width)) + \" w\");\r\n return this;\r\n });\r\n\r\n /**\r\n * Sets the dash pattern for upcoming lines.\r\n *\r\n * To reset the settings simply call the method without any parameters.\r\n * @param {Array} dashArray An array containing 0-2 numbers. The first number sets the length of the\r\n * dashes, the second number the length of the gaps. If the second number is missing, the gaps are considered\r\n * to be as long as the dashes. An empty array means solid, unbroken lines.\r\n * @param {number} dashPhase The phase lines start with.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setLineDashPattern\r\n */\r\n API.__private__.setLineDash = jsPDF.API.setLineDash = jsPDF.API.setLineDashPattern = function(\r\n dashArray,\r\n dashPhase\r\n ) {\r\n dashArray = dashArray || [];\r\n dashPhase = dashPhase || 0;\r\n\r\n if (isNaN(dashPhase) || !Array.isArray(dashArray)) {\r\n throw new Error(\"Invalid arguments passed to jsPDF.setLineDash\");\r\n }\r\n\r\n dashArray = dashArray\r\n .map(function(x) {\r\n return hpf(scale(x));\r\n })\r\n .join(\" \");\r\n dashPhase = hpf(scale(dashPhase));\r\n\r\n out(\"[\" + dashArray + \"] \" + dashPhase + \" d\");\r\n return this;\r\n };\r\n\r\n var lineHeightFactor;\r\n\r\n var getLineHeight = (API.__private__.getLineHeight = API.getLineHeight = function() {\r\n return activeFontSize * lineHeightFactor;\r\n });\r\n\r\n API.__private__.getLineHeight = API.getLineHeight = function() {\r\n return activeFontSize * lineHeightFactor;\r\n };\r\n\r\n /**\r\n * Sets the LineHeightFactor of proportion.\r\n *\r\n * @param {number} value LineHeightFactor value. Default: 1.15.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setLineHeightFactor\r\n */\r\n var setLineHeightFactor = (API.__private__.setLineHeightFactor = API.setLineHeightFactor = function(\r\n value\r\n ) {\r\n value = value || 1.15;\r\n if (typeof value === \"number\") {\r\n lineHeightFactor = value;\r\n }\r\n return this;\r\n });\r\n\r\n /**\r\n * Gets the LineHeightFactor, default: 1.15.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {number} lineHeightFactor\r\n * @memberof jsPDF#\r\n * @name getLineHeightFactor\r\n */\r\n var getLineHeightFactor = (API.__private__.getLineHeightFactor = API.getLineHeightFactor = function() {\r\n return lineHeightFactor;\r\n });\r\n\r\n setLineHeightFactor(options.lineHeight);\r\n\r\n var getHorizontalCoordinate = (API.__private__.getHorizontalCoordinate = function(\r\n value\r\n ) {\r\n return scale(value);\r\n });\r\n\r\n var getVerticalCoordinate = (API.__private__.getVerticalCoordinate = function(\r\n value\r\n ) {\r\n if (apiMode === ApiMode.ADVANCED) {\r\n return value;\r\n } else {\r\n var pageHeight =\r\n pagesContext[currentPage].mediaBox.topRightY -\r\n pagesContext[currentPage].mediaBox.bottomLeftY;\r\n return pageHeight - scale(value);\r\n }\r\n });\r\n\r\n var getHorizontalCoordinateString = (API.__private__.getHorizontalCoordinateString = API.getHorizontalCoordinateString = function(\r\n value\r\n ) {\r\n return hpf(getHorizontalCoordinate(value));\r\n });\r\n\r\n var getVerticalCoordinateString = (API.__private__.getVerticalCoordinateString = API.getVerticalCoordinateString = function(\r\n value\r\n ) {\r\n return hpf(getVerticalCoordinate(value));\r\n });\r\n\r\n var strokeColor = options.strokeColor || \"0 G\";\r\n\r\n /**\r\n * Gets the stroke color for upcoming elements.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {string} colorAsHex\r\n * @memberof jsPDF#\r\n * @name getDrawColor\r\n */\r\n API.__private__.getStrokeColor = API.getDrawColor = function() {\r\n return decodeColorString(strokeColor);\r\n };\r\n\r\n /**\r\n * Sets the stroke color for upcoming elements.\r\n *\r\n * Depending on the number of arguments given, Gray, RGB, or CMYK\r\n * color space is implied.\r\n *\r\n * When only ch1 is given, \"Gray\" color space is implied and it\r\n * must be a value in the range from 0.00 (solid black) to to 1.00 (white)\r\n * if values are communicated as String types, or in range from 0 (black)\r\n * to 255 (white) if communicated as Number type.\r\n * The RGB-like 0-255 range is provided for backward compatibility.\r\n *\r\n * When only ch1,ch2,ch3 are given, \"RGB\" color space is implied and each\r\n * value must be in the range from 0.00 (minimum intensity) to to 1.00\r\n * (max intensity) if values are communicated as String types, or\r\n * from 0 (min intensity) to to 255 (max intensity) if values are communicated\r\n * as Number types.\r\n * The RGB-like 0-255 range is provided for backward compatibility.\r\n *\r\n * When ch1,ch2,ch3,ch4 are given, \"CMYK\" color space is implied and each\r\n * value must be a in the range from 0.00 (0% concentration) to to\r\n * 1.00 (100% concentration)\r\n *\r\n * Because JavaScript treats fixed point numbers badly (rounds to\r\n * floating point nearest to binary representation) it is highly advised to\r\n * communicate the fractional numbers as String types, not JavaScript Number type.\r\n *\r\n * @param {Number|String} ch1 Color channel value or {string} ch1 color value in hexadecimal, example: '#FFFFFF'.\r\n * @param {Number} ch2 Color channel value.\r\n * @param {Number} ch3 Color channel value.\r\n * @param {Number} ch4 Color channel value.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setDrawColor\r\n */\r\n API.__private__.setStrokeColor = API.setDrawColor = function(\r\n ch1,\r\n ch2,\r\n ch3,\r\n ch4\r\n ) {\r\n var options = {\r\n ch1: ch1,\r\n ch2: ch2,\r\n ch3: ch3,\r\n ch4: ch4,\r\n pdfColorType: \"draw\",\r\n precision: 2\r\n };\r\n\r\n strokeColor = encodeColorString(options);\r\n out(strokeColor);\r\n return this;\r\n };\r\n\r\n var fillColor = options.fillColor || \"0 g\";\r\n\r\n /**\r\n * Gets the fill color for upcoming elements.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {string} colorAsHex\r\n * @memberof jsPDF#\r\n * @name getFillColor\r\n */\r\n API.__private__.getFillColor = API.getFillColor = function() {\r\n return decodeColorString(fillColor);\r\n };\r\n\r\n /**\r\n * Sets the fill color for upcoming elements.\r\n *\r\n * Depending on the number of arguments given, Gray, RGB, or CMYK\r\n * color space is implied.\r\n *\r\n * When only ch1 is given, \"Gray\" color space is implied and it\r\n * must be a value in the range from 0.00 (solid black) to to 1.00 (white)\r\n * if values are communicated as String types, or in range from 0 (black)\r\n * to 255 (white) if communicated as Number type.\r\n * The RGB-like 0-255 range is provided for backward compatibility.\r\n *\r\n * When only ch1,ch2,ch3 are given, \"RGB\" color space is implied and each\r\n * value must be in the range from 0.00 (minimum intensity) to to 1.00\r\n * (max intensity) if values are communicated as String types, or\r\n * from 0 (min intensity) to to 255 (max intensity) if values are communicated\r\n * as Number types.\r\n * The RGB-like 0-255 range is provided for backward compatibility.\r\n *\r\n * When ch1,ch2,ch3,ch4 are given, \"CMYK\" color space is implied and each\r\n * value must be a in the range from 0.00 (0% concentration) to to\r\n * 1.00 (100% concentration)\r\n *\r\n * Because JavaScript treats fixed point numbers badly (rounds to\r\n * floating point nearest to binary representation) it is highly advised to\r\n * communicate the fractional numbers as String types, not JavaScript Number type.\r\n *\r\n * @param {Number|String} ch1 Color channel value or {string} ch1 color value in hexadecimal, example: '#FFFFFF'.\r\n * @param {Number} ch2 Color channel value.\r\n * @param {Number} ch3 Color channel value.\r\n * @param {Number} ch4 Color channel value.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setFillColor\r\n */\r\n API.__private__.setFillColor = API.setFillColor = function(\r\n ch1,\r\n ch2,\r\n ch3,\r\n ch4\r\n ) {\r\n var options = {\r\n ch1: ch1,\r\n ch2: ch2,\r\n ch3: ch3,\r\n ch4: ch4,\r\n pdfColorType: \"fill\",\r\n precision: 2\r\n };\r\n\r\n fillColor = encodeColorString(options);\r\n out(fillColor);\r\n return this;\r\n };\r\n\r\n var textColor = options.textColor || \"0 g\";\r\n /**\r\n * Gets the text color for upcoming elements.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {string} colorAsHex\r\n * @memberof jsPDF#\r\n * @name getTextColor\r\n */\r\n var getTextColor = (API.__private__.getTextColor = API.getTextColor = function() {\r\n return decodeColorString(textColor);\r\n });\r\n /**\r\n * Sets the text color for upcoming elements.\r\n *\r\n * Depending on the number of arguments given, Gray, RGB, or CMYK\r\n * color space is implied.\r\n *\r\n * When only ch1 is given, \"Gray\" color space is implied and it\r\n * must be a value in the range from 0.00 (solid black) to to 1.00 (white)\r\n * if values are communicated as String types, or in range from 0 (black)\r\n * to 255 (white) if communicated as Number type.\r\n * The RGB-like 0-255 range is provided for backward compatibility.\r\n *\r\n * When only ch1,ch2,ch3 are given, \"RGB\" color space is implied and each\r\n * value must be in the range from 0.00 (minimum intensity) to to 1.00\r\n * (max intensity) if values are communicated as String types, or\r\n * from 0 (min intensity) to to 255 (max intensity) if values are communicated\r\n * as Number types.\r\n * The RGB-like 0-255 range is provided for backward compatibility.\r\n *\r\n * When ch1,ch2,ch3,ch4 are given, \"CMYK\" color space is implied and each\r\n * value must be a in the range from 0.00 (0% concentration) to to\r\n * 1.00 (100% concentration)\r\n *\r\n * Because JavaScript treats fixed point numbers badly (rounds to\r\n * floating point nearest to binary representation) it is highly advised to\r\n * communicate the fractional numbers as String types, not JavaScript Number type.\r\n *\r\n * @param {Number|String} ch1 Color channel value or {string} ch1 color value in hexadecimal, example: '#FFFFFF'.\r\n * @param {Number} ch2 Color channel value.\r\n * @param {Number} ch3 Color channel value.\r\n * @param {Number} ch4 Color channel value.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setTextColor\r\n */\r\n API.__private__.setTextColor = API.setTextColor = function(\r\n ch1,\r\n ch2,\r\n ch3,\r\n ch4\r\n ) {\r\n var options = {\r\n ch1: ch1,\r\n ch2: ch2,\r\n ch3: ch3,\r\n ch4: ch4,\r\n pdfColorType: \"text\",\r\n precision: 3\r\n };\r\n textColor = encodeColorString(options);\r\n\r\n return this;\r\n };\r\n\r\n var activeCharSpace = options.charSpace;\r\n\r\n /**\r\n * Get global value of CharSpace.\r\n *\r\n * @function\r\n * @instance\r\n * @returns {number} charSpace\r\n * @memberof jsPDF#\r\n * @name getCharSpace\r\n */\r\n var getCharSpace = (API.__private__.getCharSpace = API.getCharSpace = function() {\r\n return parseFloat(activeCharSpace || 0);\r\n });\r\n\r\n /**\r\n * Set global value of CharSpace.\r\n *\r\n * @param {number} charSpace\r\n * @function\r\n * @instance\r\n * @returns {jsPDF} jsPDF-instance\r\n * @memberof jsPDF#\r\n * @name setCharSpace\r\n */\r\n API.__private__.setCharSpace = API.setCharSpace = function(charSpace) {\r\n if (isNaN(charSpace)) {\r\n throw new Error(\"Invalid argument passed to jsPDF.setCharSpace\");\r\n }\r\n activeCharSpace = charSpace;\r\n return this;\r\n };\r\n\r\n var lineCapID = 0;\r\n /**\r\n * Is an Object providing a mapping from human-readable to\r\n * integer flag values designating the varieties of line cap\r\n * and join styles.\r\n *\r\n * @memberof jsPDF#\r\n * @name CapJoinStyles\r\n */\r\n API.CapJoinStyles = {\r\n 0: 0,\r\n butt: 0,\r\n but: 0,\r\n miter: 0,\r\n 1: 1,\r\n round: 1,\r\n rounded: 1,\r\n circle: 1,\r\n 2: 2,\r\n projecting: 2,\r\n project: 2,\r\n square: 2,\r\n bevel: 2\r\n };\r\n\r\n /**\r\n * Sets the line cap styles.\r\n * See {jsPDF.CapJoinStyles} for variants.\r\n *\r\n * @param {String|Number} style A string or number identifying the type of line cap.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setLineCap\r\n */\r\n API.__private__.setLineCap = API.setLineCap = function(style) {\r\n var id = API.CapJoinStyles[style];\r\n if (id === undefined) {\r\n throw new Error(\r\n \"Line cap style of '\" +\r\n style +\r\n \"' is not recognized. See or extend .CapJoinStyles property for valid styles\"\r\n );\r\n }\r\n lineCapID = id;\r\n out(id + \" J\");\r\n\r\n return this;\r\n };\r\n\r\n var lineJoinID = 0;\r\n /**\r\n * Sets the line join styles.\r\n * See {jsPDF.CapJoinStyles} for variants.\r\n *\r\n * @param {String|Number} style A string or number identifying the type of line join.\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setLineJoin\r\n */\r\n API.__private__.setLineJoin = API.setLineJoin = function(style) {\r\n var id = API.CapJoinStyles[style];\r\n if (id === undefined) {\r\n throw new Error(\r\n \"Line join style of '\" +\r\n style +\r\n \"' is not recognized. See or extend .CapJoinStyles property for valid styles\"\r\n );\r\n }\r\n lineJoinID = id;\r\n out(id + \" j\");\r\n\r\n return this;\r\n };\r\n\r\n var miterLimit;\r\n /**\r\n * Sets the miterLimit property, which effects the maximum miter length.\r\n *\r\n * @param {number} length The length of the miter\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setLineMiterLimit\r\n */\r\n API.__private__.setLineMiterLimit = API.__private__.setMiterLimit = API.setLineMiterLimit = API.setMiterLimit = function(\r\n length\r\n ) {\r\n length = length || 0;\r\n if (isNaN(length)) {\r\n throw new Error(\"Invalid argument passed to jsPDF.setLineMiterLimit\");\r\n }\r\n out(hpf(scale(length)) + \" M\");\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * An object representing a pdf graphics state.\r\n * @class GState\r\n */\r\n\r\n /**\r\n *\r\n * @param parameters A parameter object that contains all properties this graphics state wants to set.\r\n * Supported are: opacity, stroke-opacity\r\n * @constructor\r\n */\r\n API.GState = GState;\r\n\r\n /**\r\n * Sets a either previously added {@link GState} (via {@link addGState}) or a new {@link GState}.\r\n * @param {String|GState} gState If type is string, a previously added GState is used, if type is GState\r\n * it will be added before use.\r\n * @function\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setGState\r\n */\r\n API.setGState = function(gState) {\r\n if (typeof gState === \"string\") {\r\n gState = gStates[gStatesMap[gState]];\r\n } else {\r\n gState = addGState(null, gState);\r\n }\r\n\r\n if (!gState.equals(activeGState)) {\r\n out(\"/\" + gState.id + \" gs\");\r\n activeGState = gState;\r\n }\r\n };\r\n\r\n /**\r\n * Adds a new Graphics State. Duplicates are automatically eliminated.\r\n * @param {String} key Might also be null, if no later reference to this gState is needed\r\n * @param {Object} gState The gState object\r\n */\r\n var addGState = function(key, gState) {\r\n // only add it if it is not already present (the keys provided by the user must be unique!)\r\n if (key && gStatesMap[key]) return;\r\n var duplicate = false;\r\n for (var s in gStates) {\r\n if (gStates.hasOwnProperty(s)) {\r\n if (gStates[s].equals(gState)) {\r\n duplicate = true;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (duplicate) {\r\n gState = gStates[s];\r\n } else {\r\n var gStateKey = \"GS\" + (Object.keys(gStates).length + 1).toString(10);\r\n gStates[gStateKey] = gState;\r\n gState.id = gStateKey;\r\n }\r\n\r\n // several user keys may point to the same GState object\r\n key && (gStatesMap[key] = gState.id);\r\n\r\n events.publish(\"addGState\", gState);\r\n\r\n return gState;\r\n };\r\n\r\n /**\r\n * Adds a new {@link GState} for later use. See {@link setGState}.\r\n * @param {String} key\r\n * @param {GState} gState\r\n * @function\r\n * @instance\r\n * @returns {jsPDF}\r\n *\r\n * @memberof jsPDF#\r\n * @name addGState\r\n */\r\n API.addGState = function(key, gState) {\r\n addGState(key, gState);\r\n return this;\r\n };\r\n\r\n /**\r\n * Saves the current graphics state (\"pushes it on the stack\"). It can be restored by {@link restoreGraphicsState}\r\n * later. Here, the general pdf graphics state is meant, also including the current transformation matrix,\r\n * fill and stroke colors etc.\r\n * @function\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name saveGraphicsState\r\n */\r\n API.saveGraphicsState = function() {\r\n out(\"q\");\r\n // as we cannot set font key and size independently we must keep track of both\r\n fontStateStack.push({\r\n key: activeFontKey,\r\n size: activeFontSize,\r\n color: textColor\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * Restores a previously saved graphics state saved by {@link saveGraphicsState} (\"pops the stack\").\r\n * @function\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name restoreGraphicsState\r\n */\r\n API.restoreGraphicsState = function() {\r\n out(\"Q\");\r\n\r\n // restore previous font state\r\n var fontState = fontStateStack.pop();\r\n activeFontKey = fontState.key;\r\n activeFontSize = fontState.size;\r\n textColor = fontState.color;\r\n\r\n activeGState = null;\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * Appends this matrix to the left of all previously applied matrices.\r\n *\r\n * @param {Matrix} matrix\r\n * @function\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name setCurrentTransformationMatrix\r\n */\r\n API.setCurrentTransformationMatrix = function(matrix) {\r\n out(matrix.toString() + \" cm\");\r\n return this;\r\n };\r\n\r\n /**\r\n * Inserts a debug comment into the generated pdf.\r\n * @function\r\n * @instance\r\n * @param {String} text\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name comment\r\n */\r\n API.comment = function(text) {\r\n out(\"#\" + text);\r\n return this;\r\n };\r\n\r\n /**\r\n * Point\r\n */\r\n var Point = function(x, y) {\r\n var _x = x || 0;\r\n Object.defineProperty(this, \"x\", {\r\n enumerable: true,\r\n get: function() {\r\n return _x;\r\n },\r\n set: function(value) {\r\n if (!isNaN(value)) {\r\n _x = parseFloat(value);\r\n }\r\n }\r\n });\r\n\r\n var _y = y || 0;\r\n Object.defineProperty(this, \"y\", {\r\n enumerable: true,\r\n get: function() {\r\n return _y;\r\n },\r\n set: function(value) {\r\n if (!isNaN(value)) {\r\n _y = parseFloat(value);\r\n }\r\n }\r\n });\r\n\r\n var _type = \"pt\";\r\n Object.defineProperty(this, \"type\", {\r\n enumerable: true,\r\n get: function() {\r\n return _type;\r\n },\r\n set: function(value) {\r\n _type = value.toString();\r\n }\r\n });\r\n return this;\r\n };\r\n\r\n /**\r\n * Rectangle\r\n */\r\n var Rectangle = function(x, y, w, h) {\r\n Point.call(this, x, y);\r\n this.type = \"rect\";\r\n\r\n var _w = w || 0;\r\n Object.defineProperty(this, \"w\", {\r\n enumerable: true,\r\n get: function() {\r\n return _w;\r\n },\r\n set: function(value) {\r\n if (!isNaN(value)) {\r\n _w = parseFloat(value);\r\n }\r\n }\r\n });\r\n\r\n var _h = h || 0;\r\n Object.defineProperty(this, \"h\", {\r\n enumerable: true,\r\n get: function() {\r\n return _h;\r\n },\r\n set: function(value) {\r\n if (!isNaN(value)) {\r\n _h = parseFloat(value);\r\n }\r\n }\r\n });\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * FormObject/RenderTarget\r\n */\r\n\r\n var RenderTarget = function() {\r\n this.page = page;\r\n this.currentPage = currentPage;\r\n this.pages = pages.slice(0);\r\n this.pagesContext = pagesContext.slice(0);\r\n this.x = pageX;\r\n this.y = pageY;\r\n this.matrix = pageMatrix;\r\n this.width = getPageWidth(currentPage);\r\n this.height = getPageHeight(currentPage);\r\n this.outputDestination = outputDestination;\r\n\r\n this.id = \"\"; // set by endFormObject()\r\n this.objectNumber = -1; // will be set by putXObject()\r\n };\r\n\r\n RenderTarget.prototype.restore = function() {\r\n page = this.page;\r\n currentPage = this.currentPage;\r\n pagesContext = this.pagesContext;\r\n pages = this.pages;\r\n pageX = this.x;\r\n pageY = this.y;\r\n pageMatrix = this.matrix;\r\n setPageWidth(currentPage, this.width);\r\n setPageHeight(currentPage, this.height);\r\n outputDestination = this.outputDestination;\r\n };\r\n\r\n var beginNewRenderTarget = function(x, y, width, height, matrix) {\r\n // save current state\r\n renderTargetStack.push(new RenderTarget());\r\n\r\n // clear pages\r\n page = currentPage = 0;\r\n pages = [];\r\n pageX = x;\r\n pageY = y;\r\n\r\n pageMatrix = matrix;\r\n\r\n beginPage([width, height]);\r\n };\r\n\r\n var endFormObject = function(key) {\r\n // only add it if it is not already present (the keys provided by the user must be unique!)\r\n if (renderTargetMap[key]) {\r\n renderTargetStack.pop().restore();\r\n return;\r\n }\r\n\r\n // save the created xObject\r\n var newXObject = new RenderTarget();\r\n\r\n var xObjectId = \"Xo\" + (Object.keys(renderTargets).length + 1).toString(10);\r\n newXObject.id = xObjectId;\r\n\r\n renderTargetMap[key] = xObjectId;\r\n renderTargets[xObjectId] = newXObject;\r\n\r\n events.publish(\"addFormObject\", newXObject);\r\n\r\n // restore state from stack\r\n renderTargetStack.pop().restore();\r\n };\r\n\r\n /**\r\n * Starts a new pdf form object, which means that all consequent draw calls target a new independent object\r\n * until {@link endFormObject} is called. The created object can be referenced and drawn later using\r\n * {@link doFormObject}. Nested form objects are possible.\r\n * x, y, width, height set the bounding box that is used to clip the content.\r\n *\r\n * @param {number} x\r\n * @param {number} y\r\n * @param {number} width\r\n * @param {number} height\r\n * @param {Matrix} matrix The matrix that will be applied to convert the form objects coordinate system to\r\n * the parent's.\r\n * @function\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name beginFormObject\r\n */\r\n API.beginFormObject = function(x, y, width, height, matrix) {\r\n // The user can set the output target to a new form object. Nested form objects are possible.\r\n // Currently, they use the resource dictionary of the surrounding stream. This should be changed, as\r\n // the PDF-Spec states:\r\n // \"In PDF 1.2 and later versions, form XObjects may be independent of the content streams in which\r\n // they appear, and this is strongly recommended although not requiredIn PDF 1.2 and later versions,\r\n // form XObjects may be independent of the content streams in which they appear, and this is strongly\r\n // recommended although not required\"\r\n beginNewRenderTarget(x, y, width, height, matrix);\r\n return this;\r\n };\r\n\r\n /**\r\n * Completes and saves the form object.\r\n * @param {String} key The key by which this form object can be referenced.\r\n * @function\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name endFormObject\r\n */\r\n API.endFormObject = function(key) {\r\n endFormObject(key);\r\n return this;\r\n };\r\n\r\n /**\r\n * Draws the specified form object by referencing to the respective pdf XObject created with\r\n * {@link API.beginFormObject} and {@link endFormObject}.\r\n * The location is determined by matrix.\r\n *\r\n * @param {String} key The key to the form object.\r\n * @param {Matrix} matrix The matrix applied before drawing the form object.\r\n * @function\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name doFormObject\r\n */\r\n API.doFormObject = function(key, matrix) {\r\n var xObject = renderTargets[renderTargetMap[key]];\r\n out(\"q\");\r\n out(matrix.toString() + \" cm\");\r\n out(\"/\" + xObject.id + \" Do\");\r\n out(\"Q\");\r\n return this;\r\n };\r\n\r\n /**\r\n * Returns the form object specified by key.\r\n * @param key {String}\r\n * @returns {{x: number, y: number, width: number, height: number, matrix: Matrix}}\r\n * @function\r\n * @returns {jsPDF}\r\n * @memberof jsPDF#\r\n * @name getFormObject\r\n */\r\n API.getFormObject = function(key) {\r\n var xObject = renderTargets[renderTargetMap[key]];\r\n return {\r\n x: xObject.x,\r\n y: xObject.y,\r\n width: xObject.width,\r\n height: xObject.height,\r\n matrix: xObject.matrix\r\n };\r\n };\r\n\r\n /**\r\n * Saves as PDF document. An alias of jsPDF.output('save', 'filename.pdf').\r\n * Uses FileSaver.js-method saveAs.\r\n *\r\n * @memberof jsPDF#\r\n * @name save\r\n * @function\r\n * @instance\r\n * @param {string} filename The filename including extension.\r\n * @param {Object} options An Object with additional options, possible options: 'returnPromise'.\r\n * @returns {jsPDF|Promise} jsPDF-instance */\r\n API.save = function(filename, options) {\r\n filename = filename || \"generated.pdf\";\r\n\r\n options = options || {};\r\n options.returnPromise = options.returnPromise || false;\r\n\r\n if (options.returnPromise === false) {\r\n saveAs(getBlob(buildDocument()), filename);\r\n if (typeof saveAs.unload === \"function\") {\r\n if (globalObject.setTimeout) {\r\n setTimeout(saveAs.unload, 911);\r\n }\r\n }\r\n return this;\r\n } else {\r\n return new Promise(function(resolve, reject) {\r\n try {\r\n var result = saveAs(getBlob(buildDocument()), filename);\r\n if (typeof saveAs.unload === \"function\") {\r\n if (globalObject.setTimeout) {\r\n setTimeout(saveAs.unload, 911);\r\n }\r\n }\r\n resolve(result);\r\n } catch (e) {\r\n reject(e.message);\r\n }\r\n });\r\n }\r\n\r\n };\r\n\r\n // applying plugins (more methods) ON TOP of built-in API.\r\n // this is intentional as we allow plugins to override\r\n // built-ins\r\n for (var plugin in jsPDF.API) {\r\n if (jsPDF.API.hasOwnProperty(plugin)) {\r\n if (plugin === \"events\" && jsPDF.API.events.length) {\r\n (function(events, newEvents) {\r\n // jsPDF.API.events is a JS Array of Arrays\r\n // where each Array is a pair of event name, handler\r\n // Events were added by plugins to the jsPDF instantiator.\r\n // These are always added to the new instance and some ran\r\n // during instantiation.\r\n var eventname, handler_and_args, i;\r\n\r\n for (i = newEvents.length - 1; i !== -1; i--) {\r\n // subscribe takes 3 args: 'topic', function, runonce_flag\r\n // if undefined, runonce is false.\r\n // users can attach callback directly,\r\n // or they can attach an array with [callback, runonce_flag]\r\n // that's what the \"apply\" magic is for below.\r\n eventname = newEvents[i][0];\r\n handler_and_args = newEvents[i][1];\r\n events.subscribe.apply(\r\n events,\r\n [eventname].concat(\r\n typeof handler_and_args === \"function\"\r\n ? [handler_and_args]\r\n : handler_and_args\r\n )\r\n );\r\n }\r\n })(events, jsPDF.API.events);\r\n } else {\r\n API[plugin] = jsPDF.API[plugin];\r\n }\r\n }\r\n }\r\n\r\n var getPageWidth = (API.getPageWidth = function(pageNumber) {\r\n pageNumber = pageNumber || currentPage;\r\n return (\r\n (pagesContext[pageNumber].mediaBox.topRightX -\r\n pagesContext[pageNumber].mediaBox.bottomLeftX) /\r\n scaleFactor\r\n );\r\n });\r\n\r\n var setPageWidth = (API.setPageWidth = function(pageNumber, value) {\r\n pagesContext[pageNumber].mediaBox.topRightX =\r\n value * scaleFactor + pagesContext[pageNumber].mediaBox.bottomLeftX;\r\n });\r\n\r\n var getPageHeight = (API.getPageHeight = function(pageNumber) {\r\n pageNumber = pageNumber || currentPage;\r\n return (\r\n (pagesContext[pageNumber].mediaBox.topRightY -\r\n pagesContext[pageNumber].mediaBox.bottomLeftY) /\r\n scaleFactor\r\n );\r\n });\r\n\r\n var setPageHeight = (API.setPageHeight = function(pageNumber, value) {\r\n pagesContext[pageNumber].mediaBox.topRightY =\r\n value * scaleFactor + pagesContext[pageNumber].mediaBox.bottomLeftY;\r\n });\r\n\r\n /**\r\n * Object exposing internal API to plugins\r\n * @public\r\n * @ignore\r\n */\r\n API.internal = {\r\n pdfEscape: pdfEscape,\r\n getStyle: getStyle,\r\n getFont: getFontEntry,\r\n getFontSize: getFontSize,\r\n getCharSpace: getCharSpace,\r\n getTextColor: getTextColor,\r\n getLineHeight: getLineHeight,\r\n getLineHeightFactor: getLineHeightFactor,\r\n getLineWidth: getLineWidth,\r\n write: write,\r\n getHorizontalCoordinate: getHorizontalCoordinate,\r\n getVerticalCoordinate: getVerticalCoordinate,\r\n getCoordinateString: getHorizontalCoordinateString,\r\n getVerticalCoordinateString: getVerticalCoordinateString,\r\n collections: {},\r\n newObject: newObject,\r\n newAdditionalObject: newAdditionalObject,\r\n newObjectDeferred: newObjectDeferred,\r\n newObjectDeferredBegin: newObjectDeferredBegin,\r\n getFilters: getFilters,\r\n putStream: putStream,\r\n events: events,\r\n scaleFactor: scaleFactor,\r\n pageSize: {\r\n getWidth: function() {\r\n return getPageWidth(currentPage);\r\n },\r\n setWidth: function(value) {\r\n setPageWidth(currentPage, value);\r\n },\r\n getHeight: function() {\r\n return getPageHeight(currentPage);\r\n },\r\n setHeight: function(value) {\r\n setPageHeight(currentPage, value);\r\n }\r\n },\r\n encryptionOptions: encryptionOptions,\r\n encryption: encryption,\r\n getEncryptor: getEncryptor,\r\n output: output,\r\n getNumberOfPages: getNumberOfPages,\r\n pages: pages,\r\n out: out,\r\n f2: f2,\r\n f3: f3,\r\n getPageInfo: getPageInfo,\r\n getPageInfoByObjId: getPageInfoByObjId,\r\n getCurrentPageInfo: getCurrentPageInfo,\r\n getPDFVersion: getPdfVersion,\r\n Point: Point,\r\n Rectangle: Rectangle,\r\n Matrix: Matrix,\r\n hasHotfix: hasHotfix //Expose the hasHotfix check so plugins can also check them.\r\n };\r\n\r\n Object.defineProperty(API.internal.pageSize, \"width\", {\r\n get: function() {\r\n return getPageWidth(currentPage);\r\n },\r\n set: function(value) {\r\n setPageWidth(currentPage, value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(API.internal.pageSize, \"height\", {\r\n get: function() {\r\n return getPageHeight(currentPage);\r\n },\r\n set: function(value) {\r\n setPageHeight(currentPage, value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n\r\n //////////////////////////////////////////////////////\r\n // continuing initialization of jsPDF Document object\r\n //////////////////////////////////////////////////////\r\n // Add the first page automatically\r\n addFonts.call(API, standardFonts);\r\n activeFontKey = \"F1\";\r\n _addPage(format, orientation);\r\n\r\n events.publish(\"initialized\");\r\n return API;\r\n}\r\n\r\n/**\r\n * jsPDF.API is a STATIC property of jsPDF class.\r\n * jsPDF.API is an object you can add methods and properties to.\r\n * The methods / properties you add will show up in new jsPDF objects.\r\n *\r\n * One property is prepopulated. It is the 'events' Object. Plugin authors can add topics,\r\n * callbacks to this object. These will be reassigned to all new instances of jsPDF.\r\n *\r\n * @static\r\n * @public\r\n * @memberof jsPDF#\r\n * @name API\r\n *\r\n * @example\r\n * jsPDF.API.mymethod = function(){\r\n * // 'this' will be ref to internal API object. see jsPDF source\r\n * // , so you can refer to built-in methods like so:\r\n * // this.line(....)\r\n * // this.text(....)\r\n * }\r\n * var pdfdoc = new jsPDF()\r\n * pdfdoc.mymethod() // <- !!!!!!\r\n */\r\njsPDF.API = {\r\n events: []\r\n};\r\n/**\r\n * The version of jsPDF.\r\n * @name version\r\n * @type {string}\r\n * @memberof jsPDF#\r\n */\r\njsPDF.version = \"0.0.0\";\r\n\r\nexport { jsPDF, ShadingPattern, TilingPattern, GState };\r\nexport default jsPDF;\r\n","/* global jsPDF */\n/**\n * @license\n * Copyright (c) 2016 Alexander Weidt,\n * https://github.com/BiggA94\n *\n * Licensed under the MIT License. http://opensource.org/licenses/mit-license\n */\n\n/**\n * jsPDF AcroForm Plugin\n * @module AcroForm\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\nvar jsPDFAPI = jsPDF.API;\nvar scaleFactor = 1;\n\nvar pdfEscape = function(value) {\n return value\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\\(/g, \"\\\\(\")\n .replace(/\\)/g, \"\\\\)\");\n};\nvar pdfUnescape = function(value) {\n return value\n .replace(/\\\\\\\\/g, \"\\\\\")\n .replace(/\\\\\\(/g, \"(\")\n .replace(/\\\\\\)/g, \")\");\n};\n\nvar f2 = function(number) {\n return number.toFixed(2); // Ie, %.2f\n};\n\nvar f5 = function(number) {\n return number.toFixed(5); // Ie, %.2f\n};\n\njsPDFAPI.__acroform__ = {};\nvar inherit = function(child, parent) {\n child.prototype = Object.create(parent.prototype);\n child.prototype.constructor = child;\n};\n\nvar scale = function(x) {\n return x * scaleFactor;\n};\n\nvar createFormXObject = function(formObject) {\n var xobj = new AcroFormXObject();\n var height = AcroFormAppearance.internal.getHeight(formObject) || 0;\n var width = AcroFormAppearance.internal.getWidth(formObject) || 0;\n xobj.BBox = [0, 0, Number(f2(width)), Number(f2(height))];\n return xobj;\n};\n\n/**\n * Bit-Operations\n */\nvar setBit = (jsPDFAPI.__acroform__.setBit = function(number, bitPosition) {\n number = number || 0;\n bitPosition = bitPosition || 0;\n\n if (isNaN(number) || isNaN(bitPosition)) {\n throw new Error(\n \"Invalid arguments passed to jsPDF.API.__acroform__.setBit\"\n );\n }\n var bitMask = 1 << bitPosition;\n\n number |= bitMask;\n\n return number;\n});\n\nvar clearBit = (jsPDFAPI.__acroform__.clearBit = function(number, bitPosition) {\n number = number || 0;\n bitPosition = bitPosition || 0;\n\n if (isNaN(number) || isNaN(bitPosition)) {\n throw new Error(\n \"Invalid arguments passed to jsPDF.API.__acroform__.clearBit\"\n );\n }\n var bitMask = 1 << bitPosition;\n\n number &= ~bitMask;\n\n return number;\n});\n\nvar getBit = (jsPDFAPI.__acroform__.getBit = function(number, bitPosition) {\n if (isNaN(number) || isNaN(bitPosition)) {\n throw new Error(\n \"Invalid arguments passed to jsPDF.API.__acroform__.getBit\"\n );\n }\n return (number & (1 << bitPosition)) === 0 ? 0 : 1;\n});\n\n/*\n * Ff starts counting the bit position at 1 and not like javascript at 0\n */\nvar getBitForPdf = (jsPDFAPI.__acroform__.getBitForPdf = function(\n number,\n bitPosition\n) {\n if (isNaN(number) || isNaN(bitPosition)) {\n throw new Error(\n \"Invalid arguments passed to jsPDF.API.__acroform__.getBitForPdf\"\n );\n }\n return getBit(number, bitPosition - 1);\n});\n\nvar setBitForPdf = (jsPDFAPI.__acroform__.setBitForPdf = function(\n number,\n bitPosition\n) {\n if (isNaN(number) || isNaN(bitPosition)) {\n throw new Error(\n \"Invalid arguments passed to jsPDF.API.__acroform__.setBitForPdf\"\n );\n }\n return setBit(number, bitPosition - 1);\n});\n\nvar clearBitForPdf = (jsPDFAPI.__acroform__.clearBitForPdf = function(\n number,\n bitPosition\n) {\n if (isNaN(number) || isNaN(bitPosition)) {\n throw new Error(\n \"Invalid arguments passed to jsPDF.API.__acroform__.clearBitForPdf\"\n );\n }\n return clearBit(number, bitPosition - 1);\n});\n\nvar calculateCoordinates = (jsPDFAPI.__acroform__.calculateCoordinates = function(\n args,\n scope\n) {\n var getHorizontalCoordinate = scope.internal.getHorizontalCoordinate;\n var getVerticalCoordinate = scope.internal.getVerticalCoordinate;\n var x = args[0];\n var y = args[1];\n var w = args[2];\n var h = args[3];\n\n var coordinates = {};\n\n coordinates.lowerLeft_X = getHorizontalCoordinate(x) || 0;\n coordinates.lowerLeft_Y = getVerticalCoordinate(y + h) || 0;\n coordinates.upperRight_X = getHorizontalCoordinate(x + w) || 0;\n coordinates.upperRight_Y = getVerticalCoordinate(y) || 0;\n\n return [\n Number(f2(coordinates.lowerLeft_X)),\n Number(f2(coordinates.lowerLeft_Y)),\n Number(f2(coordinates.upperRight_X)),\n Number(f2(coordinates.upperRight_Y))\n ];\n});\n\nvar calculateAppearanceStream = function(formObject) {\n if (formObject.appearanceStreamContent) {\n return formObject.appearanceStreamContent;\n }\n\n if (!formObject.V && !formObject.DV) {\n return;\n }\n\n // else calculate it\n\n var stream = [];\n var text = formObject._V || formObject.DV;\n var calcRes = calculateX(formObject, text);\n var fontKey = formObject.scope.internal.getFont(\n formObject.fontName,\n formObject.fontStyle\n ).id;\n\n //PDF 32000-1:2008, page 444\n stream.push(\"/Tx BMC\");\n stream.push(\"q\");\n stream.push(\"BT\"); // Begin Text\n stream.push(formObject.scope.__private__.encodeColorString(formObject.color));\n stream.push(\"/\" + fontKey + \" \" + f2(calcRes.fontSize) + \" Tf\");\n stream.push(\"1 0 0 1 0 0 Tm\"); // Transformation Matrix\n stream.push(calcRes.text);\n stream.push(\"ET\"); // End Text\n stream.push(\"Q\");\n stream.push(\"EMC\");\n\n var appearanceStreamContent = createFormXObject(formObject);\n appearanceStreamContent.scope = formObject.scope;\n appearanceStreamContent.stream = stream.join(\"\\n\");\n return appearanceStreamContent;\n};\n\nvar calculateX = function(formObject, text) {\n var maxFontSize =\n formObject.fontSize === 0 ? formObject.maxFontSize : formObject.fontSize;\n var returnValue = {\n text: \"\",\n fontSize: \"\"\n };\n // Remove Brackets\n text = text.substr(0, 1) == \"(\" ? text.substr(1) : text;\n text =\n text.substr(text.length - 1) == \")\"\n ? text.substr(0, text.length - 1)\n : text;\n // split into array of words\n var textSplit = text.split(\" \");\n if (formObject.multiline) {\n textSplit = textSplit.map(word => word.split(\"\\n\"));\n } else {\n textSplit = textSplit.map(word => [word]);\n }\n\n var fontSize = maxFontSize; // The Starting fontSize (The Maximum)\n var lineSpacing = 2;\n var borderPadding = 2;\n\n var height = AcroFormAppearance.internal.getHeight(formObject) || 0;\n height = height < 0 ? -height : height;\n var width = AcroFormAppearance.internal.getWidth(formObject) || 0;\n width = width < 0 ? -width : width;\n\n var isSmallerThanWidth = function(i, lastLine, fontSize) {\n if (i + 1 < textSplit.length) {\n var tmp = lastLine + \" \" + textSplit[i + 1][0];\n var TextWidth = calculateFontSpace(tmp, formObject, fontSize).width;\n var FieldWidth = width - 2 * borderPadding;\n return TextWidth <= FieldWidth;\n } else {\n return false;\n }\n };\n\n fontSize++;\n FontSize: while (fontSize > 0) {\n text = \"\";\n fontSize--;\n var textHeight = calculateFontSpace(\"3\", formObject, fontSize).height;\n var startY = formObject.multiline\n ? height - fontSize\n : (height - textHeight) / 2;\n startY += lineSpacing;\n var startX;\n\n var lastY = startY;\n var firstWordInLine = 0,\n lastWordInLine = 0;\n var lastLength;\n var currWord = 0;\n\n if (fontSize <= 0) {\n // In case, the Text doesn't fit at all\n fontSize = 12;\n text = \"(...) Tj\\n\";\n text +=\n \"% Width of Text: \" +\n calculateFontSpace(text, formObject, fontSize).width +\n \", FieldWidth:\" +\n width +\n \"\\n\";\n break;\n }\n\n var lastLine = \"\";\n var lineCount = 0;\n Line: for (var i = 0; i < textSplit.length; i++) {\n if (textSplit.hasOwnProperty(i)) {\n let isWithNewLine = false;\n if (textSplit[i].length !== 1 && currWord !== textSplit[i].length - 1) {\n if (\n (textHeight + lineSpacing) * (lineCount + 2) + lineSpacing >\n height\n ) {\n continue FontSize;\n }\n\n lastLine += textSplit[i][currWord];\n isWithNewLine = true;\n lastWordInLine = i;\n i--;\n } else {\n lastLine += textSplit[i][currWord] + \" \";\n lastLine =\n lastLine.substr(lastLine.length - 1) == \" \"\n ? lastLine.substr(0, lastLine.length - 1)\n : lastLine;\n var key = parseInt(i);\n var nextLineIsSmaller = isSmallerThanWidth(key, lastLine, fontSize);\n var isLastWord = i >= textSplit.length - 1;\n\n if (nextLineIsSmaller && !isLastWord) {\n lastLine += \" \";\n currWord = 0;\n continue; // Line\n } else if (!nextLineIsSmaller && !isLastWord) {\n if (!formObject.multiline) {\n continue FontSize;\n } else {\n if (\n (textHeight + lineSpacing) * (lineCount + 2) + lineSpacing >\n height\n ) {\n // If the Text is higher than the\n // FieldObject\n continue FontSize;\n }\n lastWordInLine = key;\n // go on\n }\n } else if (isLastWord) {\n lastWordInLine = key;\n } else {\n if (\n formObject.multiline &&\n (textHeight + lineSpacing) * (lineCount + 2) + lineSpacing >\n height\n ) {\n // If the Text is higher than the FieldObject\n continue FontSize;\n }\n }\n }\n // Remove last blank\n\n var line = \"\";\n\n for (var x = firstWordInLine; x <= lastWordInLine; x++) {\n var currLine = textSplit[x];\n if (formObject.multiline) {\n if (x === lastWordInLine) {\n line += currLine[currWord] + \" \";\n currWord = (currWord + 1) % currLine.length;\n continue;\n }\n if (x === firstWordInLine) {\n line += currLine[currLine.length - 1] + \" \";\n continue;\n }\n }\n line += currLine[0] + \" \";\n }\n\n // Remove last blank\n line =\n line.substr(line.length - 1) == \" \"\n ? line.substr(0, line.length - 1)\n : line;\n // lastLength -= blankSpace.width;\n lastLength = calculateFontSpace(line, formObject, fontSize).width;\n\n // Calculate startX\n switch (formObject.textAlign) {\n case \"right\":\n startX = width - lastLength - borderPadding;\n break;\n case \"center\":\n startX = (width - lastLength) / 2;\n break;\n case \"left\":\n default:\n startX = borderPadding;\n break;\n }\n text += f2(startX) + \" \" + f2(lastY) + \" Td\\n\";\n text += \"(\" + pdfEscape(line) + \") Tj\\n\";\n // reset X in PDF\n text += -f2(startX) + \" 0 Td\\n\";\n\n // After a Line, adjust y position\n lastY = -(fontSize + lineSpacing);\n\n // Reset for next iteration step\n lastLength = 0;\n firstWordInLine = isWithNewLine ? lastWordInLine : lastWordInLine + 1;\n lineCount++;\n\n lastLine = \"\";\n continue Line;\n }\n }\n break;\n }\n\n returnValue.text = text;\n returnValue.fontSize = fontSize;\n\n return returnValue;\n};\n\n/**\n * Small workaround for calculating the TextMetric approximately.\n *\n * @param text\n * @param fontsize\n * @returns {TextMetrics} (Has Height and Width)\n */\nvar calculateFontSpace = function(text, formObject, fontSize) {\n var font = formObject.scope.internal.getFont(\n formObject.fontName,\n formObject.fontStyle\n );\n var width =\n formObject.scope.getStringUnitWidth(text, {\n font: font,\n fontSize: parseFloat(fontSize),\n charSpace: 0\n }) * parseFloat(fontSize);\n var height =\n formObject.scope.getStringUnitWidth(\"3\", {\n font: font,\n fontSize: parseFloat(fontSize),\n charSpace: 0\n }) *\n parseFloat(fontSize) *\n 1.5;\n return { height: height, width: width };\n};\n\nvar acroformPluginTemplate = {\n fields: [],\n xForms: [],\n /**\n * acroFormDictionaryRoot contains information about the AcroForm\n * Dictionary 0: The Event-Token, the AcroFormDictionaryCallback has\n * 1: The Object ID of the Root\n */\n acroFormDictionaryRoot: null,\n /**\n * After the PDF gets evaluated, the reference to the root has to be\n * reset, this indicates, whether the root has already been printed\n * out\n */\n printedOut: false,\n internal: null,\n isInitialized: false\n};\n\nvar annotReferenceCallback = function(scope) {\n //set objId to undefined and force it to get a new objId on buildDocument\n scope.internal.acroformPlugin.acroFormDictionaryRoot.objId = undefined;\n var fields = scope.internal.acroformPlugin.acroFormDictionaryRoot.Fields;\n for (var i in fields) {\n if (fields.hasOwnProperty(i)) {\n var formObject = fields[i];\n //set objId to undefined and force it to get a new objId on buildDocument\n formObject.objId = undefined;\n // add Annot Reference!\n if (formObject.hasAnnotation) {\n // If theres an Annotation Widget in the Form Object, put the\n // Reference in the /Annot array\n createAnnotationReference(formObject, scope);\n }\n }\n }\n};\n\nvar putForm = function(formObject) {\n if (formObject.scope.internal.acroformPlugin.printedOut) {\n formObject.scope.internal.acroformPlugin.printedOut = false;\n formObject.scope.internal.acroformPlugin.acroFormDictionaryRoot = null;\n }\n formObject.scope.internal.acroformPlugin.acroFormDictionaryRoot.Fields.push(\n formObject\n );\n};\n/**\n * Create the Reference to the widgetAnnotation, so that it gets referenced\n * in the Annot[] int the+ (Requires the Annotation Plugin)\n */\nvar createAnnotationReference = function(object, scope) {\n var options = {\n type: \"reference\",\n object: object\n };\n var findEntry = function(entry) {\n return entry.type === options.type && entry.object === options.object;\n };\n if (\n scope.internal\n .getPageInfo(object.page)\n .pageContext.annotations.find(findEntry) === undefined\n ) {\n scope.internal\n .getPageInfo(object.page)\n .pageContext.annotations.push(options);\n }\n};\n\n// Callbacks\n\nvar putCatalogCallback = function(scope) {\n // Put reference to AcroForm to DocumentCatalog\n if (\n typeof scope.internal.acroformPlugin.acroFormDictionaryRoot !== \"undefined\"\n ) {\n // for safety, shouldn't normally be the case\n scope.internal.write(\n \"/AcroForm \" +\n scope.internal.acroformPlugin.acroFormDictionaryRoot.objId +\n \" \" +\n 0 +\n \" R\"\n );\n } else {\n throw new Error(\"putCatalogCallback: Root missing.\");\n }\n};\n\n/**\n * Adds /Acroform X 0 R to Document Catalog, and creates the AcroForm\n * Dictionary\n */\nvar AcroFormDictionaryCallback = function(scope) {\n // Remove event\n scope.internal.events.unsubscribe(\n scope.internal.acroformPlugin.acroFormDictionaryRoot._eventID\n );\n delete scope.internal.acroformPlugin.acroFormDictionaryRoot._eventID;\n scope.internal.acroformPlugin.printedOut = true;\n};\n\n/**\n * Creates the single Fields and writes them into the Document\n *\n * If fieldArray is set, use the fields that are inside it instead of the\n * fields from the AcroRoot (for the FormXObjects...)\n */\nvar createFieldCallback = function(fieldArray, scope) {\n var standardFields = !fieldArray;\n\n if (!fieldArray) {\n // in case there is no fieldArray specified, we want to print out\n // the Fields of the AcroForm\n // Print out Root\n scope.internal.newObjectDeferredBegin(\n scope.internal.acroformPlugin.acroFormDictionaryRoot.objId,\n true\n );\n scope.internal.acroformPlugin.acroFormDictionaryRoot.putStream();\n }\n\n fieldArray =\n fieldArray || scope.internal.acroformPlugin.acroFormDictionaryRoot.Kids;\n\n for (var i in fieldArray) {\n if (fieldArray.hasOwnProperty(i)) {\n var fieldObject = fieldArray[i];\n var keyValueList = [];\n var oldRect = fieldObject.Rect;\n\n if (fieldObject.Rect) {\n fieldObject.Rect = calculateCoordinates(fieldObject.Rect, scope);\n }\n\n // Start Writing the Object\n scope.internal.newObjectDeferredBegin(fieldObject.objId, true);\n\n fieldObject.DA = AcroFormAppearance.createDefaultAppearanceStream(\n fieldObject\n );\n\n if (\n typeof fieldObject === \"object\" &&\n typeof fieldObject.getKeyValueListForStream === \"function\"\n ) {\n keyValueList = fieldObject.getKeyValueListForStream();\n }\n\n fieldObject.Rect = oldRect;\n\n if (\n fieldObject.hasAppearanceStream &&\n !fieldObject.appearanceStreamContent\n ) {\n // Calculate Appearance\n var appearance = calculateAppearanceStream(fieldObject);\n keyValueList.push({ key: \"AP\", value: \"<>\" });\n\n scope.internal.acroformPlugin.xForms.push(appearance);\n }\n\n // Assume AppearanceStreamContent is a Array with N,R,D (at least\n // one of them!)\n if (fieldObject.appearanceStreamContent) {\n var appearanceStreamString = \"\";\n // Iterate over N,R and D\n for (var k in fieldObject.appearanceStreamContent) {\n if (fieldObject.appearanceStreamContent.hasOwnProperty(k)) {\n var value = fieldObject.appearanceStreamContent[k];\n appearanceStreamString += \"/\" + k + \" \";\n appearanceStreamString += \"<<\";\n if (Object.keys(value).length >= 1 || Array.isArray(value)) {\n // appearanceStream is an Array or Object!\n for (var i in value) {\n if (value.hasOwnProperty(i)) {\n var obj = value[i];\n if (typeof obj === \"function\") {\n // if Function is referenced, call it in order\n // to get the FormXObject\n obj = obj.call(scope, fieldObject);\n }\n appearanceStreamString += \"/\" + i + \" \" + obj + \" \";\n\n // In case the XForm is already used, e.g. OffState\n // of CheckBoxes, don't add it\n if (!(scope.internal.acroformPlugin.xForms.indexOf(obj) >= 0))\n scope.internal.acroformPlugin.xForms.push(obj);\n }\n }\n } else {\n obj = value;\n if (typeof obj === \"function\") {\n // if Function is referenced, call it in order to\n // get the FormXObject\n obj = obj.call(scope, fieldObject);\n }\n appearanceStreamString += \"/\" + i + \" \" + obj;\n if (!(scope.internal.acroformPlugin.xForms.indexOf(obj) >= 0))\n scope.internal.acroformPlugin.xForms.push(obj);\n }\n appearanceStreamString += \">>\";\n }\n }\n\n // appearance stream is a normal Object..\n keyValueList.push({\n key: \"AP\",\n value: \"<<\\n\" + appearanceStreamString + \">>\"\n });\n }\n\n scope.internal.putStream({\n additionalKeyValues: keyValueList,\n objectId: fieldObject.objId\n });\n\n scope.internal.out(\"endobj\");\n }\n }\n if (standardFields) {\n createXFormObjectCallback(scope.internal.acroformPlugin.xForms, scope);\n }\n};\n\nvar createXFormObjectCallback = function(fieldArray, scope) {\n for (var i in fieldArray) {\n if (fieldArray.hasOwnProperty(i)) {\n var key = i;\n var fieldObject = fieldArray[i];\n // Start Writing the Object\n scope.internal.newObjectDeferredBegin(fieldObject.objId, true);\n\n if (\n typeof fieldObject === \"object\" &&\n typeof fieldObject.putStream === \"function\"\n ) {\n fieldObject.putStream();\n }\n delete fieldArray[key];\n }\n }\n};\n\nvar initializeAcroForm = function(scope, formObject) {\n formObject.scope = scope;\n if (\n scope.internal !== undefined &&\n (scope.internal.acroformPlugin === undefined ||\n scope.internal.acroformPlugin.isInitialized === false)\n ) {\n AcroFormField.FieldNum = 0;\n scope.internal.acroformPlugin = JSON.parse(\n JSON.stringify(acroformPluginTemplate)\n );\n if (scope.internal.acroformPlugin.acroFormDictionaryRoot) {\n throw new Error(\"Exception while creating AcroformDictionary\");\n }\n scaleFactor = scope.internal.scaleFactor;\n // The Object Number of the AcroForm Dictionary\n scope.internal.acroformPlugin.acroFormDictionaryRoot = new AcroFormDictionary();\n scope.internal.acroformPlugin.acroFormDictionaryRoot.scope = scope;\n\n // add Callback for creating the AcroForm Dictionary\n scope.internal.acroformPlugin.acroFormDictionaryRoot._eventID = scope.internal.events.subscribe(\n \"postPutResources\",\n function() {\n AcroFormDictionaryCallback(scope);\n }\n );\n\n scope.internal.events.subscribe(\"buildDocument\", function() {\n annotReferenceCallback(scope);\n }); // buildDocument\n\n // Register event, that is triggered when the DocumentCatalog is\n // written, in order to add /AcroForm\n\n scope.internal.events.subscribe(\"putCatalog\", function() {\n putCatalogCallback(scope);\n });\n\n // Register event, that creates all Fields\n scope.internal.events.subscribe(\"postPutPages\", function(fieldArray) {\n createFieldCallback(fieldArray, scope);\n });\n\n scope.internal.acroformPlugin.isInitialized = true;\n }\n};\n\n//PDF 32000-1:2008, page 26, 7.3.6\nvar arrayToPdfArray = (jsPDFAPI.__acroform__.arrayToPdfArray = function(\n array,\n objId,\n scope\n) {\n var encryptor = function(data) {\n return data;\n };\n if (Array.isArray(array)) {\n var content = \"[\";\n for (var i = 0; i < array.length; i++) {\n if (i !== 0) {\n content += \" \";\n }\n switch (typeof array[i]) {\n case \"boolean\":\n case \"number\":\n case \"object\":\n content += array[i].toString();\n break;\n case \"string\":\n if (array[i].substr(0, 1) !== \"/\") {\n if (typeof objId !== \"undefined\" && scope)\n encryptor = scope.internal.getEncryptor(objId);\n content += \"(\" + pdfEscape(encryptor(array[i].toString())) + \")\";\n } else {\n content += array[i].toString();\n }\n break;\n }\n }\n content += \"]\";\n return content;\n }\n throw new Error(\n \"Invalid argument passed to jsPDF.__acroform__.arrayToPdfArray\"\n );\n});\nfunction getMatches(string, regex, index) {\n index || (index = 1); // default to the first capturing group\n var matches = [];\n var match;\n while ((match = regex.exec(string))) {\n matches.push(match[index]);\n }\n return matches;\n}\nvar pdfArrayToStringArray = function(array) {\n var result = [];\n if (typeof array === \"string\") {\n result = getMatches(array, /\\((.*?)\\)/g);\n }\n return result;\n};\n\nvar toPdfString = function(string, objId, scope) {\n var encryptor = function(data) {\n return data;\n };\n if (typeof objId !== \"undefined\" && scope)\n encryptor = scope.internal.getEncryptor(objId);\n string = string || \"\";\n string.toString();\n string = \"(\" + pdfEscape(encryptor(string)) + \")\";\n return string;\n};\n\n// ##########################\n// Classes\n// ##########################\n\n/**\n * @class AcroFormPDFObject\n * @classdesc A AcroFormPDFObject\n */\nvar AcroFormPDFObject = function() {\n this._objId = undefined;\n this._scope = undefined;\n\n /**\n * @name AcroFormPDFObject#objId\n * @type {any}\n */\n Object.defineProperty(this, \"objId\", {\n get: function() {\n if (typeof this._objId === \"undefined\") {\n if (typeof this.scope === \"undefined\") {\n return undefined;\n }\n this._objId = this.scope.internal.newObjectDeferred();\n }\n return this._objId;\n },\n set: function(value) {\n this._objId = value;\n }\n });\n Object.defineProperty(this, \"scope\", {\n value: this._scope,\n writable: true\n });\n};\n\n/**\n * @function AcroFormPDFObject.toString\n */\nAcroFormPDFObject.prototype.toString = function() {\n return this.objId + \" 0 R\";\n};\n\nAcroFormPDFObject.prototype.putStream = function() {\n var keyValueList = this.getKeyValueListForStream();\n this.scope.internal.putStream({\n data: this.stream,\n additionalKeyValues: keyValueList,\n objectId: this.objId\n });\n this.scope.internal.out(\"endobj\");\n};\n\n/**\n * Returns an key-value-List of all non-configurable Variables from the Object\n *\n * @name getKeyValueListForStream\n * @returns {string}\n */\nAcroFormPDFObject.prototype.getKeyValueListForStream = function() {\n var keyValueList = [];\n var keys = Object.getOwnPropertyNames(this).filter(function(key) {\n return (\n key != \"content\" &&\n key != \"appearanceStreamContent\" &&\n key != \"scope\" &&\n key != \"objId\" &&\n key.substring(0, 1) != \"_\"\n );\n });\n\n for (var i in keys) {\n if (Object.getOwnPropertyDescriptor(this, keys[i]).configurable === false) {\n var key = keys[i];\n var value = this[key];\n\n if (value) {\n if (Array.isArray(value)) {\n keyValueList.push({\n key: key,\n value: arrayToPdfArray(value, this.objId, this.scope)\n });\n } else if (value instanceof AcroFormPDFObject) {\n // In case it is a reference to another PDFObject,\n // take the reference number\n value.scope = this.scope;\n keyValueList.push({ key: key, value: value.objId + \" 0 R\" });\n } else if (typeof value !== \"function\") {\n keyValueList.push({ key: key, value: value });\n }\n }\n }\n }\n return keyValueList;\n};\n\nvar AcroFormXObject = function() {\n AcroFormPDFObject.call(this);\n\n Object.defineProperty(this, \"Type\", {\n value: \"/XObject\",\n configurable: false,\n writable: true\n });\n\n Object.defineProperty(this, \"Subtype\", {\n value: \"/Form\",\n configurable: false,\n writable: true\n });\n\n Object.defineProperty(this, \"FormType\", {\n value: 1,\n configurable: false,\n writable: true\n });\n\n var _BBox = [];\n Object.defineProperty(this, \"BBox\", {\n configurable: false,\n get: function() {\n return _BBox;\n },\n set: function(value) {\n _BBox = value;\n }\n });\n\n Object.defineProperty(this, \"Resources\", {\n value: \"2 0 R\",\n configurable: false,\n writable: true\n });\n\n var _stream;\n Object.defineProperty(this, \"stream\", {\n enumerable: false,\n configurable: true,\n set: function(value) {\n _stream = value.trim();\n },\n get: function() {\n if (_stream) {\n return _stream;\n } else {\n return null;\n }\n }\n });\n};\n\ninherit(AcroFormXObject, AcroFormPDFObject);\n\nvar AcroFormDictionary = function() {\n AcroFormPDFObject.call(this);\n\n var _Kids = [];\n\n Object.defineProperty(this, \"Kids\", {\n enumerable: false,\n configurable: true,\n get: function() {\n if (_Kids.length > 0) {\n return _Kids;\n } else {\n return undefined;\n }\n }\n });\n Object.defineProperty(this, \"Fields\", {\n enumerable: false,\n configurable: false,\n get: function() {\n return _Kids;\n }\n });\n\n // Default Appearance\n var _DA;\n Object.defineProperty(this, \"DA\", {\n enumerable: false,\n configurable: false,\n get: function() {\n if (!_DA) {\n return undefined;\n }\n var encryptor = function(data) {\n return data;\n };\n if (this.scope) encryptor = this.scope.internal.getEncryptor(this.objId);\n return \"(\" + pdfEscape(encryptor(_DA)) + \")\";\n },\n set: function(value) {\n _DA = value;\n }\n });\n};\n\ninherit(AcroFormDictionary, AcroFormPDFObject);\n\n/**\n * The Field Object contains the Variables, that every Field needs\n *\n * @class AcroFormField\n * @classdesc An AcroForm FieldObject\n */\nvar AcroFormField = function() {\n AcroFormPDFObject.call(this);\n\n //Annotation-Flag See Table 165\n var _F = 4;\n Object.defineProperty(this, \"F\", {\n enumerable: false,\n configurable: false,\n get: function() {\n return _F;\n },\n set: function(value) {\n if (!isNaN(value)) {\n _F = value;\n } else {\n throw new Error(\n 'Invalid value \"' + value + '\" for attribute F supplied.'\n );\n }\n }\n });\n\n /**\n * (PDF 1.2) If set, print the annotation when the page is printed. If clear, never print the annotation, regardless of wether is is displayed on the screen.\n * NOTE 2 This can be useful for annotations representing interactive pushbuttons, which would serve no meaningful purpose on the printed page.\n *\n * @name AcroFormField#showWhenPrinted\n * @default true\n * @type {boolean}\n */\n Object.defineProperty(this, \"showWhenPrinted\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(_F, 3));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.F = setBitForPdf(_F, 3);\n } else {\n this.F = clearBitForPdf(_F, 3);\n }\n }\n });\n\n var _Ff = 0;\n Object.defineProperty(this, \"Ff\", {\n enumerable: false,\n configurable: false,\n get: function() {\n return _Ff;\n },\n set: function(value) {\n if (!isNaN(value)) {\n _Ff = value;\n } else {\n throw new Error(\n 'Invalid value \"' + value + '\" for attribute Ff supplied.'\n );\n }\n }\n });\n\n var _Rect = [];\n Object.defineProperty(this, \"Rect\", {\n enumerable: false,\n configurable: false,\n get: function() {\n if (_Rect.length === 0) {\n return undefined;\n }\n return _Rect;\n },\n set: function(value) {\n if (typeof value !== \"undefined\") {\n _Rect = value;\n } else {\n _Rect = [];\n }\n }\n });\n\n /**\n * The x-position of the field.\n *\n * @name AcroFormField#x\n * @default null\n * @type {number}\n */\n Object.defineProperty(this, \"x\", {\n enumerable: true,\n configurable: true,\n get: function() {\n if (!_Rect || isNaN(_Rect[0])) {\n return 0;\n }\n return _Rect[0];\n },\n set: function(value) {\n _Rect[0] = value;\n }\n });\n\n /**\n * The y-position of the field.\n *\n * @name AcroFormField#y\n * @default null\n * @type {number}\n */\n Object.defineProperty(this, \"y\", {\n enumerable: true,\n configurable: true,\n get: function() {\n if (!_Rect || isNaN(_Rect[1])) {\n return 0;\n }\n return _Rect[1];\n },\n set: function(value) {\n _Rect[1] = value;\n }\n });\n\n /**\n * The width of the field.\n *\n * @name AcroFormField#width\n * @default null\n * @type {number}\n */\n Object.defineProperty(this, \"width\", {\n enumerable: true,\n configurable: true,\n get: function() {\n if (!_Rect || isNaN(_Rect[2])) {\n return 0;\n }\n return _Rect[2];\n },\n set: function(value) {\n _Rect[2] = value;\n }\n });\n\n /**\n * The height of the field.\n *\n * @name AcroFormField#height\n * @default null\n * @type {number}\n */\n Object.defineProperty(this, \"height\", {\n enumerable: true,\n configurable: true,\n get: function() {\n if (!_Rect || isNaN(_Rect[3])) {\n return 0;\n }\n return _Rect[3];\n },\n set: function(value) {\n _Rect[3] = value;\n }\n });\n\n var _FT = \"\";\n Object.defineProperty(this, \"FT\", {\n enumerable: true,\n configurable: false,\n get: function() {\n return _FT;\n },\n set: function(value) {\n switch (value) {\n case \"/Btn\":\n case \"/Tx\":\n case \"/Ch\":\n case \"/Sig\":\n _FT = value;\n break;\n default:\n throw new Error(\n 'Invalid value \"' + value + '\" for attribute FT supplied.'\n );\n }\n }\n });\n\n var _T = null;\n\n Object.defineProperty(this, \"T\", {\n enumerable: true,\n configurable: false,\n get: function() {\n if (!_T || _T.length < 1) {\n // In case of a Child from a Radio´Group, you don't need a FieldName\n if (this instanceof AcroFormChildClass) {\n return undefined;\n }\n _T = \"FieldObject\" + AcroFormField.FieldNum++;\n }\n var encryptor = function(data) {\n return data;\n };\n if (this.scope) encryptor = this.scope.internal.getEncryptor(this.objId);\n return \"(\" + pdfEscape(encryptor(_T)) + \")\";\n },\n set: function(value) {\n _T = value.toString();\n }\n });\n\n /**\n * (Optional) The partial field name (see 12.7.3.2, “Field Names”).\n *\n * @name AcroFormField#fieldName\n * @default null\n * @type {string}\n */\n Object.defineProperty(this, \"fieldName\", {\n configurable: true,\n enumerable: true,\n get: function() {\n return _T;\n },\n set: function(value) {\n _T = value;\n }\n });\n\n var _fontName = \"helvetica\";\n /**\n * The fontName of the font to be used.\n *\n * @name AcroFormField#fontName\n * @default 'helvetica'\n * @type {string}\n */\n Object.defineProperty(this, \"fontName\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _fontName;\n },\n set: function(value) {\n _fontName = value;\n }\n });\n\n var _fontStyle = \"normal\";\n /**\n * The fontStyle of the font to be used.\n *\n * @name AcroFormField#fontStyle\n * @default 'normal'\n * @type {string}\n */\n Object.defineProperty(this, \"fontStyle\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _fontStyle;\n },\n set: function(value) {\n _fontStyle = value;\n }\n });\n\n var _fontSize = 0;\n /**\n * The fontSize of the font to be used.\n *\n * @name AcroFormField#fontSize\n * @default 0 (for auto)\n * @type {number}\n */\n Object.defineProperty(this, \"fontSize\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _fontSize;\n },\n set: function(value) {\n _fontSize = value;\n }\n });\n\n var _maxFontSize = undefined;\n /**\n * The maximum fontSize of the font to be used.\n *\n * @name AcroFormField#maxFontSize\n * @default 0 (for auto)\n * @type {number}\n */\n Object.defineProperty(this, \"maxFontSize\", {\n enumerable: true,\n configurable: true,\n get: function() {\n if (_maxFontSize === undefined) {\n // use the old default value here - the value is some kind of random as it depends on the scaleFactor (user unit)\n // (\"50\" is transformed to the \"user space\" but then used in \"pdf space\")\n return 50 / scaleFactor;\n } else {\n return _maxFontSize;\n }\n },\n set: function(value) {\n _maxFontSize = value;\n }\n });\n\n var _color = \"black\";\n /**\n * The color of the text\n *\n * @name AcroFormField#color\n * @default 'black'\n * @type {string|rgba}\n */\n Object.defineProperty(this, \"color\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _color;\n },\n set: function(value) {\n _color = value;\n }\n });\n\n var _DA = \"/F1 0 Tf 0 g\";\n // Defines the default appearance (Needed for variable Text)\n Object.defineProperty(this, \"DA\", {\n enumerable: true,\n configurable: false,\n get: function() {\n if (\n !_DA ||\n this instanceof AcroFormChildClass ||\n this instanceof AcroFormTextField\n ) {\n return undefined;\n }\n return toPdfString(_DA, this.objId, this.scope);\n },\n set: function(value) {\n value = value.toString();\n _DA = value;\n }\n });\n\n var _DV = null;\n Object.defineProperty(this, \"DV\", {\n enumerable: false,\n configurable: false,\n get: function() {\n if (!_DV) {\n return undefined;\n }\n if (this instanceof AcroFormButton === false) {\n return toPdfString(_DV, this.objId, this.scope);\n }\n return _DV;\n },\n set: function(value) {\n value = value.toString();\n if (this instanceof AcroFormButton === false) {\n if (value.substr(0, 1) === \"(\") {\n _DV = pdfUnescape(value.substr(1, value.length - 2));\n } else {\n _DV = pdfUnescape(value);\n }\n } else {\n _DV = value;\n }\n }\n });\n\n /**\n * (Optional; inheritable) The default value to which the field reverts when a reset-form action is executed (see 12.7.5.3, “Reset-Form Action”). The format of this value is the same as that of value.\n *\n * @name AcroFormField#defaultValue\n * @default null\n * @type {any}\n */\n Object.defineProperty(this, \"defaultValue\", {\n enumerable: true,\n configurable: true,\n get: function() {\n if (this instanceof AcroFormButton === true) {\n return pdfUnescape(_DV.substr(1, _DV.length - 1));\n } else {\n return _DV;\n }\n },\n set: function(value) {\n value = value.toString();\n if (this instanceof AcroFormButton === true) {\n _DV = \"/\" + value;\n } else {\n _DV = value;\n }\n }\n });\n\n var _V = null;\n Object.defineProperty(this, \"_V\", {\n enumerable: false,\n configurable: false,\n get: function() {\n if (!_V) {\n return undefined;\n }\n return _V;\n },\n set: function(value) {\n this.V = value;\n }\n });\n Object.defineProperty(this, \"V\", {\n enumerable: false,\n configurable: false,\n get: function() {\n if (!_V) {\n return undefined;\n }\n if (this instanceof AcroFormButton === false) {\n return toPdfString(_V, this.objId, this.scope);\n }\n return _V;\n },\n set: function(value) {\n value = value.toString();\n if (this instanceof AcroFormButton === false) {\n if (value.substr(0, 1) === \"(\") {\n _V = pdfUnescape(value.substr(1, value.length - 2));\n } else {\n _V = pdfUnescape(value);\n }\n } else {\n _V = value;\n }\n }\n });\n\n /**\n * (Optional; inheritable) The field’s value, whose format varies depending on the field type. See the descriptions of individual field types for further information.\n *\n * @name AcroFormField#value\n * @default null\n * @type {any}\n */\n Object.defineProperty(this, \"value\", {\n enumerable: true,\n configurable: true,\n get: function() {\n if (this instanceof AcroFormButton === true) {\n return pdfUnescape(_V.substr(1, _V.length - 1));\n } else {\n return _V;\n }\n },\n set: function(value) {\n value = value.toString();\n if (this instanceof AcroFormButton === true) {\n _V = \"/\" + value;\n } else {\n _V = value;\n }\n }\n });\n\n /**\n * Check if field has annotations\n *\n * @name AcroFormField#hasAnnotation\n * @readonly\n * @type {boolean}\n */\n Object.defineProperty(this, \"hasAnnotation\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return this.Rect;\n }\n });\n\n Object.defineProperty(this, \"Type\", {\n enumerable: true,\n configurable: false,\n get: function() {\n return this.hasAnnotation ? \"/Annot\" : null;\n }\n });\n\n Object.defineProperty(this, \"Subtype\", {\n enumerable: true,\n configurable: false,\n get: function() {\n return this.hasAnnotation ? \"/Widget\" : null;\n }\n });\n\n var _hasAppearanceStream = false;\n /**\n * true if field has an appearanceStream\n *\n * @name AcroFormField#hasAppearanceStream\n * @readonly\n * @type {boolean}\n */\n Object.defineProperty(this, \"hasAppearanceStream\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _hasAppearanceStream;\n },\n set: function(value) {\n value = Boolean(value);\n _hasAppearanceStream = value;\n }\n });\n\n /**\n * The page on which the AcroFormField is placed\n *\n * @name AcroFormField#page\n * @type {number}\n */\n var _page;\n Object.defineProperty(this, \"page\", {\n enumerable: true,\n configurable: true,\n get: function() {\n if (!_page) {\n return undefined;\n }\n return _page;\n },\n set: function(value) {\n _page = value;\n }\n });\n\n /**\n * If set, the user may not change the value of the field. Any associated widget annotations will not interact with the user; that is, they will not respond to mouse clicks or change their appearance in response to mouse motions. This flag is useful for fields whose values are computed or imported from a database.\n *\n * @name AcroFormField#readOnly\n * @default false\n * @type {boolean}\n */\n Object.defineProperty(this, \"readOnly\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 1));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 1);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 1);\n }\n }\n });\n\n /**\n * If set, the field shall have a value at the time it is exported by a submitform action (see 12.7.5.2, “Submit-Form Action”).\n *\n * @name AcroFormField#required\n * @default false\n * @type {boolean}\n */\n Object.defineProperty(this, \"required\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 2));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 2);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 2);\n }\n }\n });\n\n /**\n * If set, the field shall not be exported by a submit-form action (see 12.7.5.2, “Submit-Form Action”)\n *\n * @name AcroFormField#noExport\n * @default false\n * @type {boolean}\n */\n Object.defineProperty(this, \"noExport\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 3));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 3);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 3);\n }\n }\n });\n\n var _Q = null;\n Object.defineProperty(this, \"Q\", {\n enumerable: true,\n configurable: false,\n get: function() {\n if (_Q === null) {\n return undefined;\n }\n return _Q;\n },\n set: function(value) {\n if ([0, 1, 2].indexOf(value) !== -1) {\n _Q = value;\n } else {\n throw new Error(\n 'Invalid value \"' + value + '\" for attribute Q supplied.'\n );\n }\n }\n });\n\n /**\n * (Optional; inheritable) A code specifying the form of quadding (justification) that shall be used in displaying the text:\n * 'left', 'center', 'right'\n *\n * @name AcroFormField#textAlign\n * @default 'left'\n * @type {string}\n */\n Object.defineProperty(this, \"textAlign\", {\n get: function() {\n var result;\n switch (_Q) {\n case 0:\n default:\n result = \"left\";\n break;\n case 1:\n result = \"center\";\n break;\n case 2:\n result = \"right\";\n break;\n }\n return result;\n },\n configurable: true,\n enumerable: true,\n set: function(value) {\n switch (value) {\n case \"right\":\n case 2:\n _Q = 2;\n break;\n case \"center\":\n case 1:\n _Q = 1;\n break;\n case \"left\":\n case 0:\n default:\n _Q = 0;\n }\n }\n });\n};\n\ninherit(AcroFormField, AcroFormPDFObject);\n\n/**\n * @class AcroFormChoiceField\n * @extends AcroFormField\n */\nvar AcroFormChoiceField = function() {\n AcroFormField.call(this);\n // Field Type = Choice Field\n this.FT = \"/Ch\";\n // options\n this.V = \"()\";\n\n this.fontName = \"zapfdingbats\";\n // Top Index\n var _TI = 0;\n\n Object.defineProperty(this, \"TI\", {\n enumerable: true,\n configurable: false,\n get: function() {\n return _TI;\n },\n set: function(value) {\n _TI = value;\n }\n });\n\n /**\n * (Optional) For scrollable list boxes, the top index (the index in the Opt array of the first option visible in the list). Default value: 0.\n *\n * @name AcroFormChoiceField#topIndex\n * @default 0\n * @type {number}\n */\n Object.defineProperty(this, \"topIndex\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _TI;\n },\n set: function(value) {\n _TI = value;\n }\n });\n\n var _Opt = [];\n Object.defineProperty(this, \"Opt\", {\n enumerable: true,\n configurable: false,\n get: function() {\n return arrayToPdfArray(_Opt, this.objId, this.scope);\n },\n set: function(value) {\n _Opt = pdfArrayToStringArray(value);\n }\n });\n\n /**\n * @memberof AcroFormChoiceField\n * @name getOptions\n * @function\n * @instance\n * @returns {array} array of Options\n */\n this.getOptions = function() {\n return _Opt;\n };\n\n /**\n * @memberof AcroFormChoiceField\n * @name setOptions\n * @function\n * @instance\n * @param {array} value\n */\n this.setOptions = function(value) {\n _Opt = value;\n if (this.sort) {\n _Opt.sort();\n }\n };\n\n /**\n * @memberof AcroFormChoiceField\n * @name addOption\n * @function\n * @instance\n * @param {string} value\n */\n this.addOption = function(value) {\n value = value || \"\";\n value = value.toString();\n _Opt.push(value);\n if (this.sort) {\n _Opt.sort();\n }\n };\n\n /**\n * @memberof AcroFormChoiceField\n * @name removeOption\n * @function\n * @instance\n * @param {string} value\n * @param {boolean} allEntries (default: false)\n */\n this.removeOption = function(value, allEntries) {\n allEntries = allEntries || false;\n value = value || \"\";\n value = value.toString();\n\n while (_Opt.indexOf(value) !== -1) {\n _Opt.splice(_Opt.indexOf(value), 1);\n if (allEntries === false) {\n break;\n }\n }\n };\n\n /**\n * If set, the field is a combo box; if clear, the field is a list box.\n *\n * @name AcroFormChoiceField#combo\n * @default false\n * @type {boolean}\n */\n Object.defineProperty(this, \"combo\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 18));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 18);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 18);\n }\n }\n });\n\n /**\n * If set, the combo box shall include an editable text box as well as a drop-down list; if clear, it shall include only a drop-down list. This flag shall be used only if the Combo flag is set.\n *\n * @name AcroFormChoiceField#edit\n * @default false\n * @type {boolean}\n */\n Object.defineProperty(this, \"edit\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 19));\n },\n set: function(value) {\n //PDF 32000-1:2008, page 444\n if (this.combo === true) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 19);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 19);\n }\n }\n }\n });\n\n /**\n * If set, the field’s option items shall be sorted alphabetically. This flag is intended for use by writers, not by readers. Conforming readers shall display the options in the order in which they occur in the Opt array (see Table 231).\n *\n * @name AcroFormChoiceField#sort\n * @default false\n * @type {boolean}\n */\n Object.defineProperty(this, \"sort\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 20));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 20);\n _Opt.sort();\n } else {\n this.Ff = clearBitForPdf(this.Ff, 20);\n }\n }\n });\n\n /**\n * (PDF 1.4) If set, more than one of the field’s option items may be selected simultaneously; if clear, at most one item shall be selected\n *\n * @name AcroFormChoiceField#multiSelect\n * @default false\n * @type {boolean}\n */\n Object.defineProperty(this, \"multiSelect\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 22));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 22);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 22);\n }\n }\n });\n\n /**\n * (PDF 1.4) If set, text entered in the field shall not be spellchecked. This flag shall not be used unless the Combo and Edit flags are both set.\n *\n * @name AcroFormChoiceField#doNotSpellCheck\n * @default false\n * @type {boolean}\n */\n Object.defineProperty(this, \"doNotSpellCheck\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 23));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 23);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 23);\n }\n }\n });\n\n /**\n * (PDF 1.5) If set, the new value shall be committed as soon as a selection is made (commonly with the pointing device). In this case, supplying a value for a field involves three actions: selecting the field for fill-in, selecting a choice for the fill-in value, and leaving that field, which finalizes or “commits” the data choice and triggers any actions associated with the entry or changing of this data. If this flag is on, then processing does not wait for leaving the field action to occur, but immediately proceeds to the third step.\n * This option enables applications to perform an action once a selection is made, without requiring the user to exit the field. If clear, the new value is not committed until the user exits the field.\n *\n * @name AcroFormChoiceField#commitOnSelChange\n * @default false\n * @type {boolean}\n */\n Object.defineProperty(this, \"commitOnSelChange\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 27));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 27);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 27);\n }\n }\n });\n\n this.hasAppearanceStream = false;\n};\ninherit(AcroFormChoiceField, AcroFormField);\n\n/**\n * @class AcroFormListBox\n * @extends AcroFormChoiceField\n * @extends AcroFormField\n */\nvar AcroFormListBox = function() {\n AcroFormChoiceField.call(this);\n this.fontName = \"helvetica\";\n\n //PDF 32000-1:2008, page 444\n this.combo = false;\n};\ninherit(AcroFormListBox, AcroFormChoiceField);\n\n/**\n * @class AcroFormComboBox\n * @extends AcroFormListBox\n * @extends AcroFormChoiceField\n * @extends AcroFormField\n */\nvar AcroFormComboBox = function() {\n AcroFormListBox.call(this);\n this.combo = true;\n};\ninherit(AcroFormComboBox, AcroFormListBox);\n\n/**\n * @class AcroFormEditBox\n * @extends AcroFormComboBox\n * @extends AcroFormListBox\n * @extends AcroFormChoiceField\n * @extends AcroFormField\n */\nvar AcroFormEditBox = function() {\n AcroFormComboBox.call(this);\n this.edit = true;\n};\ninherit(AcroFormEditBox, AcroFormComboBox);\n\n/**\n * @class AcroFormButton\n * @extends AcroFormField\n */\nvar AcroFormButton = function() {\n AcroFormField.call(this);\n this.FT = \"/Btn\";\n\n /**\n * (Radio buttons only) If set, exactly one radio button shall be selected at all times; selecting the currently selected button has no effect. If clear, clicking the selected button deselects it, leaving no button selected.\n *\n * @name AcroFormButton#noToggleToOff\n * @type {boolean}\n */\n Object.defineProperty(this, \"noToggleToOff\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 15));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 15);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 15);\n }\n }\n });\n\n /**\n * If set, the field is a set of radio buttons; if clear, the field is a checkbox. This flag may be set only if the Pushbutton flag is clear.\n *\n * @name AcroFormButton#radio\n * @type {boolean}\n */\n Object.defineProperty(this, \"radio\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 16));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 16);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 16);\n }\n }\n });\n\n /**\n * If set, the field is a pushbutton that does not retain a permanent value.\n *\n * @name AcroFormButton#pushButton\n * @type {boolean}\n */\n Object.defineProperty(this, \"pushButton\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 17));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 17);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 17);\n }\n }\n });\n\n /**\n * (PDF 1.5) If set, a group of radio buttons within a radio button field that use the same value for the on state will turn on and off in unison; that is if one is checked, they are all checked. If clear, the buttons are mutually exclusive (the same behavior as HTML radio buttons).\n *\n * @name AcroFormButton#radioIsUnison\n * @type {boolean}\n */\n Object.defineProperty(this, \"radioIsUnison\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 26));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 26);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 26);\n }\n }\n });\n\n var _MK = {};\n Object.defineProperty(this, \"MK\", {\n enumerable: false,\n configurable: false,\n get: function() {\n var encryptor = function(data) {\n return data;\n };\n if (this.scope) encryptor = this.scope.internal.getEncryptor(this.objId);\n if (Object.keys(_MK).length !== 0) {\n var result = [];\n result.push(\"<<\");\n var key;\n for (key in _MK) {\n result.push(\"/\" + key + \" (\" + pdfEscape(encryptor(_MK[key])) + \")\");\n }\n result.push(\">>\");\n return result.join(\"\\n\");\n }\n return undefined;\n },\n set: function(value) {\n if (typeof value === \"object\") {\n _MK = value;\n }\n }\n });\n\n /**\n * From the PDF reference:\n * (Optional, button fields only) The widget annotation's normal caption which shall be displayed when it is not interacting with the user.\n * Unlike the remaining entries listed in this Table which apply only to widget annotations associated with pushbutton fields (see Pushbuttons in 12.7.4.2, \"Button Fields\"), the CA entry may be used with any type of button field, including check boxes (see Check Boxes in 12.7.4.2, \"Button Fields\") and radio buttons (Radio Buttons in 12.7.4.2, \"Button Fields\").\n *\n * - '8' = Cross,\n * - 'l' = Circle,\n * - '' = nothing\n * @name AcroFormButton#caption\n * @type {string}\n */\n Object.defineProperty(this, \"caption\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _MK.CA || \"\";\n },\n set: function(value) {\n if (typeof value === \"string\") {\n _MK.CA = value;\n }\n }\n });\n\n var _AS;\n Object.defineProperty(this, \"AS\", {\n enumerable: false,\n configurable: false,\n get: function() {\n return _AS;\n },\n set: function(value) {\n _AS = value;\n }\n });\n\n /**\n * (Required if the appearance dictionary AP contains one or more subdictionaries; PDF 1.2) The annotation's appearance state, which selects the applicable appearance stream from an appearance subdictionary (see Section 12.5.5, \"Appearance Streams\")\n *\n * @name AcroFormButton#appearanceState\n * @type {any}\n */\n Object.defineProperty(this, \"appearanceState\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _AS.substr(1, _AS.length - 1);\n },\n set: function(value) {\n _AS = \"/\" + value;\n }\n });\n};\ninherit(AcroFormButton, AcroFormField);\n\n/**\n * @class AcroFormPushButton\n * @extends AcroFormButton\n * @extends AcroFormField\n */\nvar AcroFormPushButton = function() {\n AcroFormButton.call(this);\n this.pushButton = true;\n};\ninherit(AcroFormPushButton, AcroFormButton);\n\n/**\n * @class AcroFormRadioButton\n * @extends AcroFormButton\n * @extends AcroFormField\n */\nvar AcroFormRadioButton = function() {\n AcroFormButton.call(this);\n this.radio = true;\n this.pushButton = false;\n\n var _Kids = [];\n Object.defineProperty(this, \"Kids\", {\n enumerable: true,\n configurable: false,\n get: function() {\n return _Kids;\n },\n set: function(value) {\n if (typeof value !== \"undefined\") {\n _Kids = value;\n } else {\n _Kids = [];\n }\n }\n });\n};\ninherit(AcroFormRadioButton, AcroFormButton);\n\n/**\n * The Child class of a RadioButton (the radioGroup) -> The single Buttons\n *\n * @class AcroFormChildClass\n * @extends AcroFormField\n * @ignore\n */\nvar AcroFormChildClass = function() {\n AcroFormField.call(this);\n\n var _parent;\n Object.defineProperty(this, \"Parent\", {\n enumerable: false,\n configurable: false,\n get: function() {\n return _parent;\n },\n set: function(value) {\n _parent = value;\n }\n });\n\n var _optionName;\n Object.defineProperty(this, \"optionName\", {\n enumerable: false,\n configurable: true,\n get: function() {\n return _optionName;\n },\n set: function(value) {\n _optionName = value;\n }\n });\n\n var _MK = {};\n Object.defineProperty(this, \"MK\", {\n enumerable: false,\n configurable: false,\n get: function() {\n var encryptor = function(data) {\n return data;\n };\n if (this.scope) encryptor = this.scope.internal.getEncryptor(this.objId);\n var result = [];\n result.push(\"<<\");\n var key;\n for (key in _MK) {\n result.push(\"/\" + key + \" (\" + pdfEscape(encryptor(_MK[key])) + \")\");\n }\n result.push(\">>\");\n return result.join(\"\\n\");\n },\n set: function(value) {\n if (typeof value === \"object\") {\n _MK = value;\n }\n }\n });\n\n /**\n * From the PDF reference:\n * (Optional, button fields only) The widget annotation's normal caption which shall be displayed when it is not interacting with the user.\n * Unlike the remaining entries listed in this Table which apply only to widget annotations associated with pushbutton fields (see Pushbuttons in 12.7.4.2, \"Button Fields\"), the CA entry may be used with any type of button field, including check boxes (see Check Boxes in 12.7.4.2, \"Button Fields\") and radio buttons (Radio Buttons in 12.7.4.2, \"Button Fields\").\n *\n * - '8' = Cross,\n * - 'l' = Circle,\n * - '' = nothing\n * @name AcroFormButton#caption\n * @type {string}\n */\n Object.defineProperty(this, \"caption\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _MK.CA || \"\";\n },\n set: function(value) {\n if (typeof value === \"string\") {\n _MK.CA = value;\n }\n }\n });\n\n var _AS;\n Object.defineProperty(this, \"AS\", {\n enumerable: false,\n configurable: false,\n get: function() {\n return _AS;\n },\n set: function(value) {\n _AS = value;\n }\n });\n\n /**\n * (Required if the appearance dictionary AP contains one or more subdictionaries; PDF 1.2) The annotation's appearance state, which selects the applicable appearance stream from an appearance subdictionary (see Section 12.5.5, \"Appearance Streams\")\n *\n * @name AcroFormButton#appearanceState\n * @type {any}\n */\n Object.defineProperty(this, \"appearanceState\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _AS.substr(1, _AS.length - 1);\n },\n set: function(value) {\n _AS = \"/\" + value;\n }\n });\n this.caption = \"l\";\n this.appearanceState = \"Off\";\n // todo: set AppearanceType as variable that can be set from the\n // outside...\n this._AppearanceType = AcroFormAppearance.RadioButton.Circle;\n // The Default appearanceType is the Circle\n this.appearanceStreamContent = this._AppearanceType.createAppearanceStream(\n this.optionName\n );\n};\ninherit(AcroFormChildClass, AcroFormField);\n\nAcroFormRadioButton.prototype.setAppearance = function(appearance) {\n if (!(\"createAppearanceStream\" in appearance && \"getCA\" in appearance)) {\n throw new Error(\n \"Couldn't assign Appearance to RadioButton. Appearance was Invalid!\"\n );\n }\n for (var objId in this.Kids) {\n if (this.Kids.hasOwnProperty(objId)) {\n var child = this.Kids[objId];\n child.appearanceStreamContent = appearance.createAppearanceStream(\n child.optionName\n );\n child.caption = appearance.getCA();\n }\n }\n};\n\nAcroFormRadioButton.prototype.createOption = function(name) {\n // Create new Child for RadioGroup\n var child = new AcroFormChildClass();\n child.Parent = this;\n child.optionName = name;\n // Add to Parent\n this.Kids.push(child);\n\n addField.call(this.scope, child);\n\n return child;\n};\n\n/**\n * @class AcroFormCheckBox\n * @extends AcroFormButton\n * @extends AcroFormField\n */\nvar AcroFormCheckBox = function() {\n AcroFormButton.call(this);\n\n this.fontName = \"zapfdingbats\";\n this.caption = \"3\";\n this.appearanceState = \"On\";\n this.value = \"On\";\n this.textAlign = \"center\";\n this.appearanceStreamContent = AcroFormAppearance.CheckBox.createAppearanceStream();\n};\ninherit(AcroFormCheckBox, AcroFormButton);\n\n/**\n * @class AcroFormTextField\n * @extends AcroFormField\n */\nvar AcroFormTextField = function() {\n AcroFormField.call(this);\n this.FT = \"/Tx\";\n\n /**\n * If set, the field may contain multiple lines of text; if clear, the field’s text shall be restricted to a single line.\n *\n * @name AcroFormTextField#multiline\n * @type {boolean}\n */\n Object.defineProperty(this, \"multiline\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 13));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 13);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 13);\n }\n }\n });\n\n /**\n * (PDF 1.4) If set, the text entered in the field represents the pathname of a file whose contents shall be submitted as the value of the field.\n *\n * @name AcroFormTextField#fileSelect\n * @type {boolean}\n */\n Object.defineProperty(this, \"fileSelect\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 21));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 21);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 21);\n }\n }\n });\n\n /**\n * (PDF 1.4) If set, text entered in the field shall not be spell-checked.\n *\n * @name AcroFormTextField#doNotSpellCheck\n * @type {boolean}\n */\n Object.defineProperty(this, \"doNotSpellCheck\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 23));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 23);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 23);\n }\n }\n });\n\n /**\n * (PDF 1.4) If set, the field shall not scroll (horizontally for single-line fields, vertically for multiple-line fields) to accommodate more text than fits within its annotation rectangle. Once the field is full, no further text shall be accepted for interactive form filling; for noninteractive form filling, the filler should take care not to add more character than will visibly fit in the defined area.\n *\n * @name AcroFormTextField#doNotScroll\n * @type {boolean}\n */\n Object.defineProperty(this, \"doNotScroll\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 24));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 24);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 24);\n }\n }\n });\n\n /**\n * (PDF 1.5) May be set only if the MaxLen entry is present in the text field dictionary (see Table 229) and if the Multiline, Password, and FileSelect flags are clear. If set, the field shall be automatically divided into as many equally spaced positions, or combs, as the value of MaxLen, and the text is laid out into those combs.\n *\n * @name AcroFormTextField#comb\n * @type {boolean}\n */\n Object.defineProperty(this, \"comb\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 25));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 25);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 25);\n }\n }\n });\n\n /**\n * (PDF 1.5) If set, the value of this field shall be a rich text string (see 12.7.3.4, “Rich Text Strings”). If the field has a value, the RV entry of the field dictionary (Table 222) shall specify the rich text string.\n *\n * @name AcroFormTextField#richText\n * @type {boolean}\n */\n Object.defineProperty(this, \"richText\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 26));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 26);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 26);\n }\n }\n });\n\n var _MaxLen = null;\n Object.defineProperty(this, \"MaxLen\", {\n enumerable: true,\n configurable: false,\n get: function() {\n return _MaxLen;\n },\n set: function(value) {\n _MaxLen = value;\n }\n });\n\n /**\n * (Optional; inheritable) The maximum length of the field’s text, in characters.\n *\n * @name AcroFormTextField#maxLength\n * @type {number}\n */\n Object.defineProperty(this, \"maxLength\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return _MaxLen;\n },\n set: function(value) {\n if (Number.isInteger(value)) {\n _MaxLen = value;\n }\n }\n });\n\n Object.defineProperty(this, \"hasAppearanceStream\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return this.V || this.DV;\n }\n });\n};\ninherit(AcroFormTextField, AcroFormField);\n\n/**\n * @class AcroFormPasswordField\n * @extends AcroFormTextField\n * @extends AcroFormField\n */\nvar AcroFormPasswordField = function() {\n AcroFormTextField.call(this);\n\n /**\n * If set, the field is intended for entering a secure password that should not be echoed visibly to the screen. Characters typed from the keyboard shall instead be echoed in some unreadable form, such as asterisks or bullet characters.\n * NOTE To protect password confidentiality, readers should never store the value of the text field in the PDF file if this flag is set.\n *\n * @name AcroFormTextField#password\n * @type {boolean}\n */\n Object.defineProperty(this, \"password\", {\n enumerable: true,\n configurable: true,\n get: function() {\n return Boolean(getBitForPdf(this.Ff, 14));\n },\n set: function(value) {\n if (Boolean(value) === true) {\n this.Ff = setBitForPdf(this.Ff, 14);\n } else {\n this.Ff = clearBitForPdf(this.Ff, 14);\n }\n }\n });\n this.password = true;\n};\ninherit(AcroFormPasswordField, AcroFormTextField);\n\n// Contains Methods for creating standard appearances\nvar AcroFormAppearance = {\n CheckBox: {\n createAppearanceStream: function() {\n var appearance = {\n N: {\n On: AcroFormAppearance.CheckBox.YesNormal\n },\n D: {\n On: AcroFormAppearance.CheckBox.YesPushDown,\n Off: AcroFormAppearance.CheckBox.OffPushDown\n }\n };\n\n return appearance;\n },\n /**\n * Returns the standard On Appearance for a CheckBox\n *\n * @returns {AcroFormXObject}\n */\n YesPushDown: function(formObject) {\n var xobj = createFormXObject(formObject);\n xobj.scope = formObject.scope;\n var stream = [];\n var fontKey = formObject.scope.internal.getFont(\n formObject.fontName,\n formObject.fontStyle\n ).id;\n var encodedColor = formObject.scope.__private__.encodeColorString(\n formObject.color\n );\n var calcRes = calculateX(formObject, formObject.caption);\n stream.push(\"0.749023 g\");\n stream.push(\n \"0 0 \" +\n f2(AcroFormAppearance.internal.getWidth(formObject)) +\n \" \" +\n f2(AcroFormAppearance.internal.getHeight(formObject)) +\n \" re\"\n );\n stream.push(\"f\");\n stream.push(\"BMC\");\n stream.push(\"q\");\n stream.push(\"0 0 1 rg\");\n stream.push(\n \"/\" + fontKey + \" \" + f2(calcRes.fontSize) + \" Tf \" + encodedColor\n );\n stream.push(\"BT\");\n stream.push(calcRes.text);\n stream.push(\"ET\");\n stream.push(\"Q\");\n stream.push(\"EMC\");\n xobj.stream = stream.join(\"\\n\");\n return xobj;\n },\n\n YesNormal: function(formObject) {\n var xobj = createFormXObject(formObject);\n xobj.scope = formObject.scope;\n var fontKey = formObject.scope.internal.getFont(\n formObject.fontName,\n formObject.fontStyle\n ).id;\n var encodedColor = formObject.scope.__private__.encodeColorString(\n formObject.color\n );\n var stream = [];\n var height = AcroFormAppearance.internal.getHeight(formObject);\n var width = AcroFormAppearance.internal.getWidth(formObject);\n var calcRes = calculateX(formObject, formObject.caption);\n stream.push(\"1 g\");\n stream.push(\"0 0 \" + f2(width) + \" \" + f2(height) + \" re\");\n stream.push(\"f\");\n stream.push(\"q\");\n stream.push(\"0 0 1 rg\");\n stream.push(\"0 0 \" + f2(width - 1) + \" \" + f2(height - 1) + \" re\");\n stream.push(\"W\");\n stream.push(\"n\");\n stream.push(\"0 g\");\n stream.push(\"BT\");\n stream.push(\n \"/\" + fontKey + \" \" + f2(calcRes.fontSize) + \" Tf \" + encodedColor\n );\n stream.push(calcRes.text);\n stream.push(\"ET\");\n stream.push(\"Q\");\n xobj.stream = stream.join(\"\\n\");\n return xobj;\n },\n\n /**\n * Returns the standard Off Appearance for a CheckBox\n *\n * @returns {AcroFormXObject}\n */\n OffPushDown: function(formObject) {\n var xobj = createFormXObject(formObject);\n xobj.scope = formObject.scope;\n var stream = [];\n stream.push(\"0.749023 g\");\n stream.push(\n \"0 0 \" +\n f2(AcroFormAppearance.internal.getWidth(formObject)) +\n \" \" +\n f2(AcroFormAppearance.internal.getHeight(formObject)) +\n \" re\"\n );\n stream.push(\"f\");\n xobj.stream = stream.join(\"\\n\");\n return xobj;\n }\n },\n\n RadioButton: {\n Circle: {\n createAppearanceStream: function(name) {\n var appearanceStreamContent = {\n D: {\n Off: AcroFormAppearance.RadioButton.Circle.OffPushDown\n },\n N: {}\n };\n appearanceStreamContent.N[name] =\n AcroFormAppearance.RadioButton.Circle.YesNormal;\n appearanceStreamContent.D[name] =\n AcroFormAppearance.RadioButton.Circle.YesPushDown;\n return appearanceStreamContent;\n },\n getCA: function() {\n return \"l\";\n },\n\n YesNormal: function(formObject) {\n var xobj = createFormXObject(formObject);\n xobj.scope = formObject.scope;\n var stream = [];\n // Make the Radius of the Circle relative to min(height, width) of formObject\n var DotRadius =\n AcroFormAppearance.internal.getWidth(formObject) <=\n AcroFormAppearance.internal.getHeight(formObject)\n ? AcroFormAppearance.internal.getWidth(formObject) / 4\n : AcroFormAppearance.internal.getHeight(formObject) / 4;\n // The Borderpadding...\n DotRadius = Number((DotRadius * 0.9).toFixed(5));\n var c = AcroFormAppearance.internal.Bezier_C;\n var DotRadiusBezier = Number((DotRadius * c).toFixed(5));\n /*\n * The Following is a Circle created with Bezier-Curves.\n */\n stream.push(\"q\");\n stream.push(\n \"1 0 0 1 \" +\n f5(AcroFormAppearance.internal.getWidth(formObject) / 2) +\n \" \" +\n f5(AcroFormAppearance.internal.getHeight(formObject) / 2) +\n \" cm\"\n );\n stream.push(DotRadius + \" 0 m\");\n stream.push(\n DotRadius +\n \" \" +\n DotRadiusBezier +\n \" \" +\n DotRadiusBezier +\n \" \" +\n DotRadius +\n \" 0 \" +\n DotRadius +\n \" c\"\n );\n stream.push(\n \"-\" +\n DotRadiusBezier +\n \" \" +\n DotRadius +\n \" -\" +\n DotRadius +\n \" \" +\n DotRadiusBezier +\n \" -\" +\n DotRadius +\n \" 0 c\"\n );\n stream.push(\n \"-\" +\n DotRadius +\n \" -\" +\n DotRadiusBezier +\n \" -\" +\n DotRadiusBezier +\n \" -\" +\n DotRadius +\n \" 0 -\" +\n DotRadius +\n \" c\"\n );\n stream.push(\n DotRadiusBezier +\n \" -\" +\n DotRadius +\n \" \" +\n DotRadius +\n \" -\" +\n DotRadiusBezier +\n \" \" +\n DotRadius +\n \" 0 c\"\n );\n stream.push(\"f\");\n stream.push(\"Q\");\n xobj.stream = stream.join(\"\\n\");\n return xobj;\n },\n YesPushDown: function(formObject) {\n var xobj = createFormXObject(formObject);\n xobj.scope = formObject.scope;\n var stream = [];\n var DotRadius =\n AcroFormAppearance.internal.getWidth(formObject) <=\n AcroFormAppearance.internal.getHeight(formObject)\n ? AcroFormAppearance.internal.getWidth(formObject) / 4\n : AcroFormAppearance.internal.getHeight(formObject) / 4;\n // The Borderpadding...\n DotRadius = Number((DotRadius * 0.9).toFixed(5));\n // Save results for later use; no need to waste\n // processor ticks on doing math\n var k = Number((DotRadius * 2).toFixed(5));\n var kc = Number((k * AcroFormAppearance.internal.Bezier_C).toFixed(5));\n var dc = Number(\n (DotRadius * AcroFormAppearance.internal.Bezier_C).toFixed(5)\n );\n\n stream.push(\"0.749023 g\");\n stream.push(\"q\");\n stream.push(\n \"1 0 0 1 \" +\n f5(AcroFormAppearance.internal.getWidth(formObject) / 2) +\n \" \" +\n f5(AcroFormAppearance.internal.getHeight(formObject) / 2) +\n \" cm\"\n );\n stream.push(k + \" 0 m\");\n stream.push(k + \" \" + kc + \" \" + kc + \" \" + k + \" 0 \" + k + \" c\");\n stream.push(\n \"-\" + kc + \" \" + k + \" -\" + k + \" \" + kc + \" -\" + k + \" 0 c\"\n );\n stream.push(\n \"-\" + k + \" -\" + kc + \" -\" + kc + \" -\" + k + \" 0 -\" + k + \" c\"\n );\n stream.push(kc + \" -\" + k + \" \" + k + \" -\" + kc + \" \" + k + \" 0 c\");\n stream.push(\"f\");\n stream.push(\"Q\");\n stream.push(\"0 g\");\n stream.push(\"q\");\n stream.push(\n \"1 0 0 1 \" +\n f5(AcroFormAppearance.internal.getWidth(formObject) / 2) +\n \" \" +\n f5(AcroFormAppearance.internal.getHeight(formObject) / 2) +\n \" cm\"\n );\n stream.push(DotRadius + \" 0 m\");\n stream.push(\n \"\" +\n DotRadius +\n \" \" +\n dc +\n \" \" +\n dc +\n \" \" +\n DotRadius +\n \" 0 \" +\n DotRadius +\n \" c\"\n );\n stream.push(\n \"-\" +\n dc +\n \" \" +\n DotRadius +\n \" -\" +\n DotRadius +\n \" \" +\n dc +\n \" -\" +\n DotRadius +\n \" 0 c\"\n );\n stream.push(\n \"-\" +\n DotRadius +\n \" -\" +\n dc +\n \" -\" +\n dc +\n \" -\" +\n DotRadius +\n \" 0 -\" +\n DotRadius +\n \" c\"\n );\n stream.push(\n dc +\n \" -\" +\n DotRadius +\n \" \" +\n DotRadius +\n \" -\" +\n dc +\n \" \" +\n DotRadius +\n \" 0 c\"\n );\n stream.push(\"f\");\n stream.push(\"Q\");\n xobj.stream = stream.join(\"\\n\");\n return xobj;\n },\n OffPushDown: function(formObject) {\n var xobj = createFormXObject(formObject);\n xobj.scope = formObject.scope;\n var stream = [];\n var DotRadius =\n AcroFormAppearance.internal.getWidth(formObject) <=\n AcroFormAppearance.internal.getHeight(formObject)\n ? AcroFormAppearance.internal.getWidth(formObject) / 4\n : AcroFormAppearance.internal.getHeight(formObject) / 4;\n // The Borderpadding...\n DotRadius = Number((DotRadius * 0.9).toFixed(5));\n // Save results for later use; no need to waste\n // processor ticks on doing math\n var k = Number((DotRadius * 2).toFixed(5));\n var kc = Number((k * AcroFormAppearance.internal.Bezier_C).toFixed(5));\n\n stream.push(\"0.749023 g\");\n stream.push(\"q\");\n stream.push(\n \"1 0 0 1 \" +\n f5(AcroFormAppearance.internal.getWidth(formObject) / 2) +\n \" \" +\n f5(AcroFormAppearance.internal.getHeight(formObject) / 2) +\n \" cm\"\n );\n stream.push(k + \" 0 m\");\n stream.push(k + \" \" + kc + \" \" + kc + \" \" + k + \" 0 \" + k + \" c\");\n stream.push(\n \"-\" + kc + \" \" + k + \" -\" + k + \" \" + kc + \" -\" + k + \" 0 c\"\n );\n stream.push(\n \"-\" + k + \" -\" + kc + \" -\" + kc + \" -\" + k + \" 0 -\" + k + \" c\"\n );\n stream.push(kc + \" -\" + k + \" \" + k + \" -\" + kc + \" \" + k + \" 0 c\");\n stream.push(\"f\");\n stream.push(\"Q\");\n xobj.stream = stream.join(\"\\n\");\n return xobj;\n }\n },\n\n Cross: {\n /**\n * Creates the Actual AppearanceDictionary-References\n *\n * @param {string} name\n * @returns {Object}\n * @ignore\n */\n createAppearanceStream: function(name) {\n var appearanceStreamContent = {\n D: {\n Off: AcroFormAppearance.RadioButton.Cross.OffPushDown\n },\n N: {}\n };\n appearanceStreamContent.N[name] =\n AcroFormAppearance.RadioButton.Cross.YesNormal;\n appearanceStreamContent.D[name] =\n AcroFormAppearance.RadioButton.Cross.YesPushDown;\n return appearanceStreamContent;\n },\n getCA: function() {\n return \"8\";\n },\n\n YesNormal: function(formObject) {\n var xobj = createFormXObject(formObject);\n xobj.scope = formObject.scope;\n var stream = [];\n var cross = AcroFormAppearance.internal.calculateCross(formObject);\n stream.push(\"q\");\n stream.push(\n \"1 1 \" +\n f2(AcroFormAppearance.internal.getWidth(formObject) - 2) +\n \" \" +\n f2(AcroFormAppearance.internal.getHeight(formObject) - 2) +\n \" re\"\n );\n stream.push(\"W\");\n stream.push(\"n\");\n stream.push(f2(cross.x1.x) + \" \" + f2(cross.x1.y) + \" m\");\n stream.push(f2(cross.x2.x) + \" \" + f2(cross.x2.y) + \" l\");\n stream.push(f2(cross.x4.x) + \" \" + f2(cross.x4.y) + \" m\");\n stream.push(f2(cross.x3.x) + \" \" + f2(cross.x3.y) + \" l\");\n stream.push(\"s\");\n stream.push(\"Q\");\n xobj.stream = stream.join(\"\\n\");\n return xobj;\n },\n YesPushDown: function(formObject) {\n var xobj = createFormXObject(formObject);\n xobj.scope = formObject.scope;\n var cross = AcroFormAppearance.internal.calculateCross(formObject);\n var stream = [];\n stream.push(\"0.749023 g\");\n stream.push(\n \"0 0 \" +\n f2(AcroFormAppearance.internal.getWidth(formObject)) +\n \" \" +\n f2(AcroFormAppearance.internal.getHeight(formObject)) +\n \" re\"\n );\n stream.push(\"f\");\n stream.push(\"q\");\n stream.push(\n \"1 1 \" +\n f2(AcroFormAppearance.internal.getWidth(formObject) - 2) +\n \" \" +\n f2(AcroFormAppearance.internal.getHeight(formObject) - 2) +\n \" re\"\n );\n stream.push(\"W\");\n stream.push(\"n\");\n stream.push(f2(cross.x1.x) + \" \" + f2(cross.x1.y) + \" m\");\n stream.push(f2(cross.x2.x) + \" \" + f2(cross.x2.y) + \" l\");\n stream.push(f2(cross.x4.x) + \" \" + f2(cross.x4.y) + \" m\");\n stream.push(f2(cross.x3.x) + \" \" + f2(cross.x3.y) + \" l\");\n stream.push(\"s\");\n stream.push(\"Q\");\n xobj.stream = stream.join(\"\\n\");\n return xobj;\n },\n OffPushDown: function(formObject) {\n var xobj = createFormXObject(formObject);\n xobj.scope = formObject.scope;\n var stream = [];\n stream.push(\"0.749023 g\");\n stream.push(\n \"0 0 \" +\n f2(AcroFormAppearance.internal.getWidth(formObject)) +\n \" \" +\n f2(AcroFormAppearance.internal.getHeight(formObject)) +\n \" re\"\n );\n stream.push(\"f\");\n xobj.stream = stream.join(\"\\n\");\n return xobj;\n }\n }\n },\n\n /**\n * Returns the standard Appearance\n *\n * @returns {AcroFormXObject}\n */\n createDefaultAppearanceStream: function(formObject) {\n // Set Helvetica to Standard Font (size: auto)\n // Color: Black\n var fontKey = formObject.scope.internal.getFont(\n formObject.fontName,\n formObject.fontStyle\n ).id;\n var encodedColor = formObject.scope.__private__.encodeColorString(\n formObject.color\n );\n var fontSize = formObject.fontSize;\n var result = \"/\" + fontKey + \" \" + fontSize + \" Tf \" + encodedColor;\n return result;\n }\n};\n\nAcroFormAppearance.internal = {\n Bezier_C: 0.551915024494,\n\n calculateCross: function(formObject) {\n var width = AcroFormAppearance.internal.getWidth(formObject);\n var height = AcroFormAppearance.internal.getHeight(formObject);\n var a = Math.min(width, height);\n\n var cross = {\n x1: {\n // upperLeft\n x: (width - a) / 2,\n y: (height - a) / 2 + a // height - borderPadding\n },\n x2: {\n // lowerRight\n x: (width - a) / 2 + a,\n y: (height - a) / 2 // borderPadding\n },\n x3: {\n // lowerLeft\n x: (width - a) / 2,\n y: (height - a) / 2 // borderPadding\n },\n x4: {\n // upperRight\n x: (width - a) / 2 + a,\n y: (height - a) / 2 + a // height - borderPadding\n }\n };\n\n return cross;\n }\n};\nAcroFormAppearance.internal.getWidth = function(formObject) {\n var result = 0;\n if (typeof formObject === \"object\") {\n result = scale(formObject.Rect[2]);\n }\n return result;\n};\nAcroFormAppearance.internal.getHeight = function(formObject) {\n var result = 0;\n if (typeof formObject === \"object\") {\n result = scale(formObject.Rect[3]);\n }\n return result;\n};\n\n// Public:\n\n/**\n * Add an AcroForm-Field to the jsPDF-instance\n *\n * @name addField\n * @function\n * @instance\n * @param {Object} fieldObject\n * @returns {jsPDF}\n */\nvar addField = (jsPDFAPI.addField = function(fieldObject) {\n initializeAcroForm(this, fieldObject);\n\n if (fieldObject instanceof AcroFormField) {\n putForm(fieldObject);\n } else {\n throw new Error(\"Invalid argument passed to jsPDF.addField.\");\n }\n fieldObject.page = fieldObject.scope.internal.getCurrentPageInfo().pageNumber;\n return this;\n});\n\njsPDFAPI.AcroFormChoiceField = AcroFormChoiceField;\njsPDFAPI.AcroFormListBox = AcroFormListBox;\njsPDFAPI.AcroFormComboBox = AcroFormComboBox;\njsPDFAPI.AcroFormEditBox = AcroFormEditBox;\njsPDFAPI.AcroFormButton = AcroFormButton;\njsPDFAPI.AcroFormPushButton = AcroFormPushButton;\njsPDFAPI.AcroFormRadioButton = AcroFormRadioButton;\njsPDFAPI.AcroFormCheckBox = AcroFormCheckBox;\njsPDFAPI.AcroFormTextField = AcroFormTextField;\njsPDFAPI.AcroFormPasswordField = AcroFormPasswordField;\njsPDFAPI.AcroFormAppearance = AcroFormAppearance;\n\njsPDFAPI.AcroForm = {\n ChoiceField: AcroFormChoiceField,\n ListBox: AcroFormListBox,\n ComboBox: AcroFormComboBox,\n EditBox: AcroFormEditBox,\n Button: AcroFormButton,\n PushButton: AcroFormPushButton,\n RadioButton: AcroFormRadioButton,\n CheckBox: AcroFormCheckBox,\n TextField: AcroFormTextField,\n PasswordField: AcroFormPasswordField,\n Appearance: AcroFormAppearance\n};\n\njsPDF.AcroForm = {\n ChoiceField: AcroFormChoiceField,\n ListBox: AcroFormListBox,\n ComboBox: AcroFormComboBox,\n EditBox: AcroFormEditBox,\n Button: AcroFormButton,\n PushButton: AcroFormPushButton,\n RadioButton: AcroFormRadioButton,\n CheckBox: AcroFormCheckBox,\n TextField: AcroFormTextField,\n PasswordField: AcroFormPasswordField,\n Appearance: AcroFormAppearance\n};\n\nvar AcroForm = jsPDF.AcroForm;\n\nexport {\n AcroForm,\n AcroFormChoiceField,\n AcroFormListBox,\n AcroFormComboBox,\n AcroFormEditBox,\n AcroFormButton,\n AcroFormPushButton,\n AcroFormRadioButton,\n AcroFormCheckBox,\n AcroFormTextField,\n AcroFormPasswordField,\n AcroFormAppearance\n};\n","function toLookup(arr) {\n return arr.reduce(function(lookup, name, index) {\n lookup[name] = index;\n\n return lookup;\n }, {});\n}\n\nvar fontStyleOrder = {\n italic: [\"italic\", \"oblique\", \"normal\"],\n oblique: [\"oblique\", \"italic\", \"normal\"],\n normal: [\"normal\", \"oblique\", \"italic\"]\n};\n\nvar fontStretchOrder = [\n \"ultra-condensed\",\n \"extra-condensed\",\n \"condensed\",\n \"semi-condensed\",\n \"normal\",\n \"semi-expanded\",\n \"expanded\",\n \"extra-expanded\",\n \"ultra-expanded\"\n];\n\n// For a given font-stretch value, we need to know where to start our search\n// from in the fontStretchOrder list.\nvar fontStretchLookup = toLookup(fontStretchOrder);\n\nvar fontWeights = [100, 200, 300, 400, 500, 600, 700, 800, 900];\nvar fontWeightsLookup = toLookup(fontWeights);\n\nfunction normalizeFontStretch(stretch) {\n stretch = stretch || \"normal\";\n\n return typeof fontStretchLookup[stretch] === \"number\" ? stretch : \"normal\";\n}\n\nfunction normalizeFontStyle(style) {\n style = style || \"normal\";\n\n return fontStyleOrder[style] ? style : \"normal\";\n}\n\nfunction normalizeFontWeight(weight) {\n if (!weight) {\n return 400;\n }\n\n if (typeof weight === \"number\") {\n // Ignore values which aren't valid font-weights.\n return weight >= 100 && weight <= 900 && weight % 100 === 0 ? weight : 400;\n }\n\n if (/^\\d00$/.test(weight)) {\n return parseInt(weight);\n }\n\n switch (weight) {\n case \"bold\":\n return 700;\n\n case \"normal\":\n default:\n return 400;\n }\n}\n\nexport function normalizeFontFace(fontFace) {\n var family = fontFace.family.replace(/\"|'/g, \"\").toLowerCase();\n\n var style = normalizeFontStyle(fontFace.style);\n var weight = normalizeFontWeight(fontFace.weight);\n var stretch = normalizeFontStretch(fontFace.stretch);\n\n return {\n family: family,\n style: style,\n weight: weight,\n stretch: stretch,\n src: fontFace.src || [],\n\n // The ref property maps this font-face to the font\n // added by the .addFont() method.\n ref: fontFace.ref || {\n name: family,\n style: [stretch, style, weight].join(\" \")\n }\n };\n}\n\n/**\n * Turns a list of font-faces into a map, for easier lookup when resolving\n * fonts.\n * @private\n */\nexport function buildFontFaceMap(fontFaces) {\n var map = {};\n\n for (var i = 0; i < fontFaces.length; ++i) {\n var normalized = normalizeFontFace(fontFaces[i]);\n\n var name = normalized.family;\n var stretch = normalized.stretch;\n var style = normalized.style;\n var weight = normalized.weight;\n\n map[name] = map[name] || {};\n\n map[name][stretch] = map[name][stretch] || {};\n map[name][stretch][style] = map[name][stretch][style] || {};\n map[name][stretch][style][weight] = normalized;\n }\n\n return map;\n}\n\n/**\n * Searches a map of stretches, weights, etc. in the given direction and\n * then, if no match has been found, in the opposite directions.\n *\n * @param {Object.} matchingSet A map of the various font variations.\n * @param {any[]} order The order of the different variations\n * @param {number} pivot The starting point of the search in the order list.\n * @param {number} dir The initial direction of the search (desc = -1, asc = 1)\n * @private\n */\n\nfunction searchFromPivot(matchingSet, order, pivot, dir) {\n var i;\n\n for (i = pivot; i >= 0 && i < order.length; i += dir) {\n if (matchingSet[order[i]]) {\n return matchingSet[order[i]];\n }\n }\n\n for (i = pivot; i >= 0 && i < order.length; i -= dir) {\n if (matchingSet[order[i]]) {\n return matchingSet[order[i]];\n }\n }\n}\n\nfunction resolveFontStretch(stretch, matchingSet) {\n if (matchingSet[stretch]) {\n return matchingSet[stretch];\n }\n\n var pivot = fontStretchLookup[stretch];\n\n // If the font-stretch value is normal or more condensed, we want to\n // start with a descending search, otherwise we should do ascending.\n var dir = pivot <= fontStretchLookup[\"normal\"] ? -1 : 1;\n var match = searchFromPivot(matchingSet, fontStretchOrder, pivot, dir);\n\n if (!match) {\n // Since a font-family cannot exist without having at least one stretch value\n // we should never reach this point.\n throw new Error(\n \"Could not find a matching font-stretch value for \" + stretch\n );\n }\n\n return match;\n}\n\nfunction resolveFontStyle(fontStyle, matchingSet) {\n if (matchingSet[fontStyle]) {\n return matchingSet[fontStyle];\n }\n\n var ordering = fontStyleOrder[fontStyle];\n\n for (var i = 0; i < ordering.length; ++i) {\n if (matchingSet[ordering[i]]) {\n return matchingSet[ordering[i]];\n }\n }\n\n // Since a font-family cannot exist without having at least one style value\n // we should never reach this point.\n throw new Error(\"Could not find a matching font-style for \" + fontStyle);\n}\n\nfunction resolveFontWeight(weight, matchingSet) {\n if (matchingSet[weight]) {\n return matchingSet[weight];\n }\n\n if (weight === 400 && matchingSet[500]) {\n return matchingSet[500];\n }\n\n if (weight === 500 && matchingSet[400]) {\n return matchingSet[400];\n }\n\n var pivot = fontWeightsLookup[weight];\n\n // If the font-stretch value is normal or more condensed, we want to\n // start with a descending search, otherwise we should do ascending.\n var dir = weight < 400 ? -1 : 1;\n var match = searchFromPivot(matchingSet, fontWeights, pivot, dir);\n\n if (!match) {\n // Since a font-family cannot exist without having at least one stretch value\n // we should never reach this point.\n throw new Error(\n \"Could not find a matching font-weight for value \" + weight\n );\n }\n\n return match;\n}\n\nvar defaultGenericFontFamilies = {\n \"sans-serif\": \"helvetica\",\n fixed: \"courier\",\n monospace: \"courier\",\n terminal: \"courier\",\n cursive: \"times\",\n fantasy: \"times\",\n serif: \"times\"\n};\n\nvar systemFonts = {\n caption: \"times\",\n icon: \"times\",\n menu: \"times\",\n \"message-box\": \"times\",\n \"small-caption\": \"times\",\n \"status-bar\": \"times\"\n};\n\nfunction ruleToString(rule) {\n return [rule.stretch, rule.style, rule.weight, rule.family].join(\" \");\n}\n\nexport function resolveFontFace(fontFaceMap, rules, opts) {\n opts = opts || {};\n\n var defaultFontFamily = opts.defaultFontFamily || \"times\";\n var genericFontFamilies = Object.assign(\n {},\n defaultGenericFontFamilies,\n opts.genericFontFamilies || {}\n );\n\n var rule = null;\n var matches = null;\n\n for (var i = 0; i < rules.length; ++i) {\n rule = normalizeFontFace(rules[i]);\n\n if (genericFontFamilies[rule.family]) {\n rule.family = genericFontFamilies[rule.family];\n }\n\n if (fontFaceMap.hasOwnProperty(rule.family)) {\n matches = fontFaceMap[rule.family];\n\n break;\n }\n }\n\n // Always fallback to a known font family.\n matches = matches || fontFaceMap[defaultFontFamily];\n\n if (!matches) {\n // At this point we should definitiely have a font family, but if we\n // don't there is something wrong with our configuration\n throw new Error(\n \"Could not find a font-family for the rule '\" +\n ruleToString(rule) +\n \"' and default family '\" +\n defaultFontFamily +\n \"'.\"\n );\n }\n\n matches = resolveFontStretch(rule.stretch, matches);\n matches = resolveFontStyle(rule.style, matches);\n matches = resolveFontWeight(rule.weight, matches);\n\n if (!matches) {\n // We should've fount\n throw new Error(\n \"Failed to resolve a font for the rule '\" + ruleToString(rule) + \"'.\"\n );\n }\n\n return matches;\n}\n\n/**\n * Builds a style id for use with the addFont() method.\n * @param {FontFace} font\n * @private\n */\nexport function toStyleName(font) {\n return [font.weight, font.style, font.stretch].join(\" \");\n}\n\nfunction eatWhiteSpace(input) {\n return input.trimLeft();\n}\n\nfunction parseQuotedFontFamily(input, quote) {\n var index = 0;\n\n while (index < input.length) {\n var current = input.charAt(index);\n\n if (current === quote) {\n return [input.substring(0, index), input.substring(index + 1)];\n }\n\n index += 1;\n }\n\n // Unexpected end of input\n return null;\n}\n\nfunction parseNonQuotedFontFamily(input) {\n // It implements part of the identifier parser here: https://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n //\n // NOTE: This parser pretty much ignores escaped identifiers and that there is a thing called unicode.\n //\n // Breakdown of regexp:\n // -[a-z_] - when identifier starts with a hyphen, you're not allowed to have another hyphen or a digit\n // [a-z_] - allow a-z and underscore at beginning of input\n // [a-z0-9_-]* - after that, anything goes\n var match = input.match(/^(-[a-z_]|[a-z_])[a-z0-9_-]*/i);\n\n // non quoted value contains illegal characters\n if (match === null) {\n return null;\n }\n\n return [match[0], input.substring(match[0].length)];\n}\n\nvar defaultFont = [\"times\"];\n\nexport function parseFontFamily(input) {\n var result = [];\n var ch, parsed;\n var remaining = input.trim();\n\n if (remaining === \"\") {\n return defaultFont;\n }\n\n if (remaining in systemFonts) {\n return [systemFonts[remaining]];\n }\n\n while (remaining !== \"\") {\n parsed = null;\n remaining = eatWhiteSpace(remaining);\n ch = remaining.charAt(0);\n\n switch (ch) {\n case '\"':\n case \"'\":\n parsed = parseQuotedFontFamily(remaining.substring(1), ch);\n break;\n\n default:\n parsed = parseNonQuotedFontFamily(remaining);\n break;\n }\n\n if (parsed === null) {\n return defaultFont;\n }\n\n result.push(parsed[0]);\n\n remaining = eatWhiteSpace(parsed[1]);\n\n // We expect end of input or a comma separator here\n if (remaining !== \"\" && remaining.charAt(0) !== \",\") {\n return defaultFont;\n }\n\n remaining = remaining.replace(/^,/, \"\");\n }\n\n return result;\n}\n","/** @license\n * jsPDF addImage plugin\n * Copyright (c) 2012 Jason Siefken, https://github.com/siefkenj/\n * 2013 Chris Dowling, https://github.com/gingerchris\n * 2013 Trinh Ho, https://github.com/ineedfat\n * 2013 Edwin Alejandro Perez, https://github.com/eaparango\n * 2013 Norah Smith, https://github.com/burnburnrocket\n * 2014 Diego Casorran, https://github.com/diegocr\n * 2014 James Robb, https://github.com/jamesbrobb\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n/**\n * @name addImage\n * @module\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { atob, btoa } from \"../libs/AtobBtoa.js\";\n\n(function(jsPDFAPI) {\n \"use strict\";\n\n var namespace = \"addImage_\";\n jsPDFAPI.__addimage__ = {};\n\n var UNKNOWN = \"UNKNOWN\";\n\n // Heuristic selection of a good batch for large array .apply. Not limiting make the call overflow.\n // With too small batch iteration will be slow as more calls are made,\n // higher values cause larger and slower garbage collection.\n var ARRAY_APPLY_BATCH = 8192;\n\n var imageFileTypeHeaders = {\n PNG: [[0x89, 0x50, 0x4e, 0x47]],\n TIFF: [\n [0x4d, 0x4d, 0x00, 0x2a], //Motorola\n [0x49, 0x49, 0x2a, 0x00] //Intel\n ],\n JPEG: [\n [\n 0xff,\n 0xd8,\n 0xff,\n 0xe0,\n undefined,\n undefined,\n 0x4a,\n 0x46,\n 0x49,\n 0x46,\n 0x00\n ], //JFIF\n [\n 0xff,\n 0xd8,\n 0xff,\n 0xe1,\n undefined,\n undefined,\n 0x45,\n 0x78,\n 0x69,\n 0x66,\n 0x00,\n 0x00\n ], //Exif\n [0xff, 0xd8, 0xff, 0xdb], //JPEG RAW\n [0xff, 0xd8, 0xff, 0xee] //EXIF RAW\n ],\n JPEG2000: [[0x00, 0x00, 0x00, 0x0c, 0x6a, 0x50, 0x20, 0x20]],\n GIF87a: [[0x47, 0x49, 0x46, 0x38, 0x37, 0x61]],\n GIF89a: [[0x47, 0x49, 0x46, 0x38, 0x39, 0x61]],\n WEBP: [\n [\n 0x52,\n 0x49,\n 0x46,\n 0x46,\n undefined,\n undefined,\n undefined,\n undefined,\n 0x57,\n 0x45,\n 0x42,\n 0x50\n ]\n ],\n BMP: [\n [0x42, 0x4d], //BM - Windows 3.1x, 95, NT, ... etc.\n [0x42, 0x41], //BA - OS/2 struct bitmap array\n [0x43, 0x49], //CI - OS/2 struct color icon\n [0x43, 0x50], //CP - OS/2 const color pointer\n [0x49, 0x43], //IC - OS/2 struct icon\n [0x50, 0x54] //PT - OS/2 pointer\n ]\n };\n\n /**\n * Recognize filetype of Image by magic-bytes\n *\n * https://en.wikipedia.org/wiki/List_of_file_signatures\n *\n * @name getImageFileTypeByImageData\n * @public\n * @function\n * @param {string|arraybuffer} imageData imageData as binary String or arraybuffer\n * @param {string} format format of file if filetype-recognition fails, e.g. 'JPEG'\n *\n * @returns {string} filetype of Image\n */\n var getImageFileTypeByImageData = (jsPDFAPI.__addimage__.getImageFileTypeByImageData = function(\n imageData,\n fallbackFormat\n ) {\n fallbackFormat = fallbackFormat || UNKNOWN;\n var i;\n var j;\n var result = UNKNOWN;\n var headerSchemata;\n var compareResult;\n var fileType;\n\n if (\n fallbackFormat === \"RGBA\" ||\n (imageData.data !== undefined &&\n imageData.data instanceof Uint8ClampedArray &&\n \"height\" in imageData &&\n \"width\" in imageData)\n ) {\n return \"RGBA\";\n }\n\n if (isArrayBufferView(imageData)) {\n for (fileType in imageFileTypeHeaders) {\n headerSchemata = imageFileTypeHeaders[fileType];\n for (i = 0; i < headerSchemata.length; i += 1) {\n compareResult = true;\n for (j = 0; j < headerSchemata[i].length; j += 1) {\n if (headerSchemata[i][j] === undefined) {\n continue;\n }\n if (headerSchemata[i][j] !== imageData[j]) {\n compareResult = false;\n break;\n }\n }\n if (compareResult === true) {\n result = fileType;\n break;\n }\n }\n }\n } else {\n for (fileType in imageFileTypeHeaders) {\n headerSchemata = imageFileTypeHeaders[fileType];\n for (i = 0; i < headerSchemata.length; i += 1) {\n compareResult = true;\n for (j = 0; j < headerSchemata[i].length; j += 1) {\n if (headerSchemata[i][j] === undefined) {\n continue;\n }\n if (headerSchemata[i][j] !== imageData.charCodeAt(j)) {\n compareResult = false;\n break;\n }\n }\n if (compareResult === true) {\n result = fileType;\n break;\n }\n }\n }\n }\n\n if (result === UNKNOWN && fallbackFormat !== UNKNOWN) {\n result = fallbackFormat;\n }\n return result;\n });\n\n // Image functionality ported from pdf.js\n var putImage = function(image) {\n var out = this.internal.write;\n var putStream = this.internal.putStream;\n var getFilters = this.internal.getFilters;\n\n var filter = getFilters();\n while (filter.indexOf(\"FlateEncode\") !== -1) {\n filter.splice(filter.indexOf(\"FlateEncode\"), 1);\n }\n\n image.objectId = this.internal.newObject();\n\n var additionalKeyValues = [];\n additionalKeyValues.push({ key: \"Type\", value: \"/XObject\" });\n additionalKeyValues.push({ key: \"Subtype\", value: \"/Image\" });\n additionalKeyValues.push({ key: \"Width\", value: image.width });\n additionalKeyValues.push({ key: \"Height\", value: image.height });\n\n if (image.colorSpace === color_spaces.INDEXED) {\n additionalKeyValues.push({\n key: \"ColorSpace\",\n value:\n \"[/Indexed /DeviceRGB \" +\n // if an indexed png defines more than one colour with transparency, we've created a sMask\n (image.palette.length / 3 - 1) +\n \" \" +\n (\"sMask\" in image && typeof image.sMask !== \"undefined\"\n ? image.objectId + 2\n : image.objectId + 1) +\n \" 0 R]\"\n });\n } else {\n additionalKeyValues.push({\n key: \"ColorSpace\",\n value: \"/\" + image.colorSpace\n });\n if (image.colorSpace === color_spaces.DEVICE_CMYK) {\n additionalKeyValues.push({ key: \"Decode\", value: \"[1 0 1 0 1 0 1 0]\" });\n }\n }\n additionalKeyValues.push({\n key: \"BitsPerComponent\",\n value: image.bitsPerComponent\n });\n if (\n \"decodeParameters\" in image &&\n typeof image.decodeParameters !== \"undefined\"\n ) {\n additionalKeyValues.push({\n key: \"DecodeParms\",\n value: \"<<\" + image.decodeParameters + \">>\"\n });\n }\n if (\"transparency\" in image && Array.isArray(image.transparency)) {\n var transparency = \"\",\n i = 0,\n len = image.transparency.length;\n for (; i < len; i++)\n transparency +=\n image.transparency[i] + \" \" + image.transparency[i] + \" \";\n\n additionalKeyValues.push({\n key: \"Mask\",\n value: \"[\" + transparency + \"]\"\n });\n }\n if (typeof image.sMask !== \"undefined\") {\n additionalKeyValues.push({\n key: \"SMask\",\n value: image.objectId + 1 + \" 0 R\"\n });\n }\n\n var alreadyAppliedFilters =\n typeof image.filter !== \"undefined\" ? [\"/\" + image.filter] : undefined;\n\n putStream({\n data: image.data,\n additionalKeyValues: additionalKeyValues,\n alreadyAppliedFilters: alreadyAppliedFilters,\n objectId: image.objectId\n });\n\n out(\"endobj\");\n\n // Soft mask\n if (\"sMask\" in image && typeof image.sMask !== \"undefined\") {\n var decodeParameters =\n \"/Predictor \" +\n image.predictor +\n \" /Colors 1 /BitsPerComponent \" +\n image.bitsPerComponent +\n \" /Columns \" +\n image.width;\n var sMask = {\n width: image.width,\n height: image.height,\n colorSpace: \"DeviceGray\",\n bitsPerComponent: image.bitsPerComponent,\n decodeParameters: decodeParameters,\n data: image.sMask\n };\n if (\"filter\" in image) {\n sMask.filter = image.filter;\n }\n putImage.call(this, sMask);\n }\n\n //Palette\n if (image.colorSpace === color_spaces.INDEXED) {\n var objId = this.internal.newObject();\n //out('<< /Filter / ' + img['f'] +' /Length ' + img['pal'].length + '>>');\n //putStream(zlib.compress(img['pal']));\n putStream({\n data: arrayBufferToBinaryString(new Uint8Array(image.palette)),\n objectId: objId\n });\n out(\"endobj\");\n }\n };\n var putResourcesCallback = function() {\n var images = this.internal.collections[namespace + \"images\"];\n for (var i in images) {\n putImage.call(this, images[i]);\n }\n };\n var putXObjectsDictCallback = function() {\n var images = this.internal.collections[namespace + \"images\"],\n out = this.internal.write,\n image;\n for (var i in images) {\n image = images[i];\n out(\"/I\" + image.index, image.objectId, \"0\", \"R\");\n }\n };\n\n var checkCompressValue = function(value) {\n if (value && typeof value === \"string\") value = value.toUpperCase();\n return value in jsPDFAPI.image_compression ? value : image_compression.NONE;\n };\n\n var initialize = function() {\n if (!this.internal.collections[namespace + \"images\"]) {\n this.internal.collections[namespace + \"images\"] = {};\n this.internal.events.subscribe(\"putResources\", putResourcesCallback);\n this.internal.events.subscribe(\"putXobjectDict\", putXObjectsDictCallback);\n }\n };\n\n var getImages = function() {\n var images = this.internal.collections[namespace + \"images\"];\n initialize.call(this);\n return images;\n };\n var getImageIndex = function() {\n return Object.keys(this.internal.collections[namespace + \"images\"]).length;\n };\n var notDefined = function(value) {\n return typeof value === \"undefined\" || value === null || value.length === 0;\n };\n var generateAliasFromImageData = function(imageData) {\n if (typeof imageData === \"string\" || isArrayBufferView(imageData)) {\n return sHashCode(imageData);\n } else if (isArrayBufferView(imageData.data)) {\n return sHashCode(imageData.data);\n }\n\n return null;\n };\n\n var isImageTypeSupported = function(type) {\n return typeof jsPDFAPI[\"process\" + type.toUpperCase()] === \"function\";\n };\n\n var isDOMElement = function(object) {\n return typeof object === \"object\" && object.nodeType === 1;\n };\n\n var getImageDataFromElement = function(element, format) {\n //if element is an image which uses data url definition, just return the dataurl\n if (element.nodeName === \"IMG\" && element.hasAttribute(\"src\")) {\n var src = \"\" + element.getAttribute(\"src\");\n\n //is base64 encoded dataUrl, directly process it\n if (src.indexOf(\"data:image/\") === 0) {\n return atob(\n unescape(src)\n .split(\"base64,\")\n .pop()\n );\n }\n\n //it is probably an url, try to load it\n var tmpImageData = jsPDFAPI.loadFile(src, true);\n if (tmpImageData !== undefined) {\n return tmpImageData;\n }\n }\n\n if (element.nodeName === \"CANVAS\") {\n if (element.width === 0 || element.height === 0) {\n throw new Error(\n \"Given canvas must have data. Canvas width: \" +\n element.width +\n \", height: \" +\n element.height\n );\n }\n var mimeType;\n switch (format) {\n case \"PNG\":\n mimeType = \"image/png\";\n break;\n case \"WEBP\":\n mimeType = \"image/webp\";\n break;\n case \"JPEG\":\n case \"JPG\":\n default:\n mimeType = \"image/jpeg\";\n break;\n }\n return atob(\n element\n .toDataURL(mimeType, 1.0)\n .split(\"base64,\")\n .pop()\n );\n }\n };\n\n var checkImagesForAlias = function(alias) {\n var images = this.internal.collections[namespace + \"images\"];\n if (images) {\n for (var e in images) {\n if (alias === images[e].alias) {\n return images[e];\n }\n }\n }\n };\n\n var determineWidthAndHeight = function(width, height, image) {\n if (!width && !height) {\n width = -96;\n height = -96;\n }\n if (width < 0) {\n width = (-1 * image.width * 72) / width / this.internal.scaleFactor;\n }\n if (height < 0) {\n height = (-1 * image.height * 72) / height / this.internal.scaleFactor;\n }\n if (width === 0) {\n width = (height * image.width) / image.height;\n }\n if (height === 0) {\n height = (width * image.height) / image.width;\n }\n\n return [width, height];\n };\n\n var writeImageToPDF = function(x, y, width, height, image, rotation) {\n var dims = determineWidthAndHeight.call(this, width, height, image),\n coord = this.internal.getCoordinateString,\n vcoord = this.internal.getVerticalCoordinateString;\n\n var images = getImages.call(this);\n\n width = dims[0];\n height = dims[1];\n images[image.index] = image;\n\n if (rotation) {\n rotation *= Math.PI / 180;\n var c = Math.cos(rotation);\n var s = Math.sin(rotation);\n //like in pdf Reference do it 4 digits instead of 2\n var f4 = function(number) {\n return number.toFixed(4);\n };\n var rotationTransformationMatrix = [\n f4(c),\n f4(s),\n f4(s * -1),\n f4(c),\n 0,\n 0,\n \"cm\"\n ];\n }\n this.internal.write(\"q\"); //Save graphics state\n if (rotation) {\n this.internal.write(\n [1, \"0\", \"0\", 1, coord(x), vcoord(y + height), \"cm\"].join(\" \")\n ); //Translate\n this.internal.write(rotationTransformationMatrix.join(\" \")); //Rotate\n this.internal.write(\n [coord(width), \"0\", \"0\", coord(height), \"0\", \"0\", \"cm\"].join(\" \")\n ); //Scale\n } else {\n this.internal.write(\n [\n coord(width),\n \"0\",\n \"0\",\n coord(height),\n coord(x),\n vcoord(y + height),\n \"cm\"\n ].join(\" \")\n ); //Translate and Scale\n }\n\n if (this.isAdvancedAPI()) {\n // draw image bottom up when in \"advanced\" API mode\n this.internal.write([1, 0, 0, -1, 0, 0, \"cm\"].join(\" \"));\n }\n\n this.internal.write(\"/I\" + image.index + \" Do\"); //Paint Image\n this.internal.write(\"Q\"); //Restore graphics state\n };\n\n /**\n * COLOR SPACES\n */\n var color_spaces = (jsPDFAPI.color_spaces = {\n DEVICE_RGB: \"DeviceRGB\",\n DEVICE_GRAY: \"DeviceGray\",\n DEVICE_CMYK: \"DeviceCMYK\",\n CAL_GREY: \"CalGray\",\n CAL_RGB: \"CalRGB\",\n LAB: \"Lab\",\n ICC_BASED: \"ICCBased\",\n INDEXED: \"Indexed\",\n PATTERN: \"Pattern\",\n SEPARATION: \"Separation\",\n DEVICE_N: \"DeviceN\"\n });\n\n /**\n * DECODE METHODS\n */\n jsPDFAPI.decode = {\n DCT_DECODE: \"DCTDecode\",\n FLATE_DECODE: \"FlateDecode\",\n LZW_DECODE: \"LZWDecode\",\n JPX_DECODE: \"JPXDecode\",\n JBIG2_DECODE: \"JBIG2Decode\",\n ASCII85_DECODE: \"ASCII85Decode\",\n ASCII_HEX_DECODE: \"ASCIIHexDecode\",\n RUN_LENGTH_DECODE: \"RunLengthDecode\",\n CCITT_FAX_DECODE: \"CCITTFaxDecode\"\n };\n\n /**\n * IMAGE COMPRESSION TYPES\n */\n var image_compression = (jsPDFAPI.image_compression = {\n NONE: \"NONE\",\n FAST: \"FAST\",\n MEDIUM: \"MEDIUM\",\n SLOW: \"SLOW\"\n });\n\n /**\n * @name sHashCode\n * @function\n * @param {string} data\n * @returns {string}\n */\n var sHashCode = (jsPDFAPI.__addimage__.sHashCode = function(data) {\n var hash = 0,\n i,\n len;\n\n if (typeof data === \"string\") {\n len = data.length;\n for (i = 0; i < len; i++) {\n hash = (hash << 5) - hash + data.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n } else if (isArrayBufferView(data)) {\n len = data.byteLength / 2;\n for (i = 0; i < len; i++) {\n hash = (hash << 5) - hash + data[i];\n hash |= 0; // Convert to 32bit integer\n }\n }\n return hash;\n });\n\n /**\n * Validates if given String is a valid Base64-String\n *\n * @name validateStringAsBase64\n * @public\n * @function\n * @param {String} possible Base64-String\n *\n * @returns {boolean}\n */\n var validateStringAsBase64 = (jsPDFAPI.__addimage__.validateStringAsBase64 = function(\n possibleBase64String\n ) {\n possibleBase64String = possibleBase64String || \"\";\n possibleBase64String.toString().trim();\n\n var result = true;\n\n if (possibleBase64String.length === 0) {\n result = false;\n }\n\n if (possibleBase64String.length % 4 !== 0) {\n result = false;\n }\n\n if (\n /^[A-Za-z0-9+/]+$/.test(\n possibleBase64String.substr(0, possibleBase64String.length - 2)\n ) === false\n ) {\n result = false;\n }\n\n if (\n /^[A-Za-z0-9/][A-Za-z0-9+/]|[A-Za-z0-9+/]=|==$/.test(\n possibleBase64String.substr(-2)\n ) === false\n ) {\n result = false;\n }\n return result;\n });\n\n /**\n * Strips out and returns info from a valid base64 data URI\n *\n * @name extractImageFromDataUrl\n * @function\n * @param {string} dataUrl a valid data URI of format 'data:[][;base64],'\n * @returns {Array}an Array containing the following\n * [0] the complete data URI\n * [1] \n * [2] format - the second part of the mime-type i.e 'png' in 'image/png'\n * [4] \n */\n var extractImageFromDataUrl = (jsPDFAPI.__addimage__.extractImageFromDataUrl = function(\n dataUrl\n ) {\n dataUrl = dataUrl || \"\";\n var dataUrlParts = dataUrl.split(\"base64,\");\n var result = null;\n\n if (dataUrlParts.length === 2) {\n var extractedInfo = /^data:(\\w*\\/\\w*);*(charset=(?!charset=)[\\w=-]*)*;*$/.exec(\n dataUrlParts[0]\n );\n if (Array.isArray(extractedInfo)) {\n result = {\n mimeType: extractedInfo[1],\n charset: extractedInfo[2],\n data: dataUrlParts[1]\n };\n }\n }\n return result;\n });\n\n /**\n * Check to see if ArrayBuffer is supported\n *\n * @name supportsArrayBuffer\n * @function\n * @returns {boolean}\n */\n var supportsArrayBuffer = (jsPDFAPI.__addimage__.supportsArrayBuffer = function() {\n return (\n typeof ArrayBuffer !== \"undefined\" && typeof Uint8Array !== \"undefined\"\n );\n });\n\n /**\n * Tests supplied object to determine if ArrayBuffer\n *\n * @name isArrayBuffer\n * @function\n * @param {Object} object an Object\n *\n * @returns {boolean}\n */\n jsPDFAPI.__addimage__.isArrayBuffer = function(object) {\n return supportsArrayBuffer() && object instanceof ArrayBuffer;\n };\n\n /**\n * Tests supplied object to determine if it implements the ArrayBufferView (TypedArray) interface\n *\n * @name isArrayBufferView\n * @function\n * @param {Object} object an Object\n * @returns {boolean}\n */\n var isArrayBufferView = (jsPDFAPI.__addimage__.isArrayBufferView = function(\n object\n ) {\n return (\n supportsArrayBuffer() &&\n typeof Uint32Array !== \"undefined\" &&\n (object instanceof Int8Array ||\n object instanceof Uint8Array ||\n (typeof Uint8ClampedArray !== \"undefined\" &&\n object instanceof Uint8ClampedArray) ||\n object instanceof Int16Array ||\n object instanceof Uint16Array ||\n object instanceof Int32Array ||\n object instanceof Uint32Array ||\n object instanceof Float32Array ||\n object instanceof Float64Array)\n );\n });\n\n /**\n * Convert Binary String to ArrayBuffer\n *\n * @name binaryStringToUint8Array\n * @public\n * @function\n * @param {string} BinaryString with ImageData\n * @returns {Uint8Array}\n */\n var binaryStringToUint8Array = (jsPDFAPI.__addimage__.binaryStringToUint8Array = function(\n binary_string\n ) {\n var len = binary_string.length;\n var bytes = new Uint8Array(len);\n for (var i = 0; i < len; i++) {\n bytes[i] = binary_string.charCodeAt(i);\n }\n return bytes;\n });\n\n /**\n * Convert the Buffer to a Binary String\n *\n * @name arrayBufferToBinaryString\n * @public\n * @function\n * @param {ArrayBuffer|ArrayBufferView} ArrayBuffer buffer or bufferView with ImageData\n *\n * @returns {String}\n */\n var arrayBufferToBinaryString = (jsPDFAPI.__addimage__.arrayBufferToBinaryString = function(\n buffer\n ) {\n var out = \"\";\n // There are calls with both ArrayBuffer and already converted Uint8Array or other BufferView.\n // Do not copy the array if input is already an array.\n var buf = isArrayBufferView(buffer) ? buffer : new Uint8Array(buffer);\n for (var i = 0; i < buf.length; i += ARRAY_APPLY_BATCH) {\n // Limit the amount of characters being parsed to prevent overflow.\n // Note that while TextDecoder would be faster, it does not have the same\n // functionality as fromCharCode with any provided encodings as of 3/2021.\n out += String.fromCharCode.apply(\n null,\n buf.subarray(i, i + ARRAY_APPLY_BATCH)\n );\n }\n return out;\n });\n\n /**\n * Possible parameter for addImage, an RGBA buffer with size.\n *\n * @typedef {Object} RGBAData\n * @property {Uint8ClampedArray} data - Single dimensional array of RGBA values. For example from canvas getImageData.\n * @property {number} width - Image width as the data does not carry this information in itself.\n * @property {number} height - Image height as the data does not carry this information in itself.\n */\n\n /**\n * Adds an Image to the PDF.\n *\n * @name addImage\n * @public\n * @function\n * @param {string|HTMLImageElement|HTMLCanvasElement|Uint8Array|RGBAData} imageData imageData as base64 encoded DataUrl or Image-HTMLElement or Canvas-HTMLElement or object containing RGBA array (like output from canvas.getImageData).\n * @param {string} format format of file if filetype-recognition fails or in case of a Canvas-Element needs to be specified (default for Canvas is JPEG), e.g. 'JPEG', 'PNG', 'WEBP'\n * @param {number} x x Coordinate (in units declared at inception of PDF document) against left edge of the page\n * @param {number} y y Coordinate (in units declared at inception of PDF document) against upper edge of the page\n * @param {number} width width of the image (in units declared at inception of PDF document)\n * @param {number} height height of the Image (in units declared at inception of PDF document)\n * @param {string} alias alias of the image (if used multiple times)\n * @param {string} compression compression of the generated JPEG, can have the values 'NONE', 'FAST', 'MEDIUM' and 'SLOW'\n * @param {number} rotation rotation of the image in degrees (0-359)\n *\n * @returns jsPDF\n */\n jsPDFAPI.addImage = function() {\n var imageData, format, x, y, w, h, alias, compression, rotation;\n\n imageData = arguments[0];\n if (typeof arguments[1] === \"number\") {\n format = UNKNOWN;\n x = arguments[1];\n y = arguments[2];\n w = arguments[3];\n h = arguments[4];\n alias = arguments[5];\n compression = arguments[6];\n rotation = arguments[7];\n } else {\n format = arguments[1];\n x = arguments[2];\n y = arguments[3];\n w = arguments[4];\n h = arguments[5];\n alias = arguments[6];\n compression = arguments[7];\n rotation = arguments[8];\n }\n\n if (\n typeof imageData === \"object\" &&\n !isDOMElement(imageData) &&\n \"imageData\" in imageData\n ) {\n var options = imageData;\n\n imageData = options.imageData;\n format = options.format || format || UNKNOWN;\n x = options.x || x || 0;\n y = options.y || y || 0;\n w = options.w || options.width || w;\n h = options.h || options.height || h;\n alias = options.alias || alias;\n compression = options.compression || compression;\n rotation = options.rotation || options.angle || rotation;\n }\n\n //If compression is not explicitly set, determine if we should use compression\n var filter = this.internal.getFilters();\n if (compression === undefined && filter.indexOf(\"FlateEncode\") !== -1) {\n compression = \"SLOW\";\n }\n\n if (isNaN(x) || isNaN(y)) {\n throw new Error(\"Invalid coordinates passed to jsPDF.addImage\");\n }\n\n initialize.call(this);\n\n var image = processImageData.call(\n this,\n imageData,\n format,\n alias,\n compression\n );\n\n writeImageToPDF.call(this, x, y, w, h, image, rotation);\n\n return this;\n };\n\n var processImageData = function(imageData, format, alias, compression) {\n var result, dataAsBinaryString;\n\n if (\n typeof imageData === \"string\" &&\n getImageFileTypeByImageData(imageData) === UNKNOWN\n ) {\n imageData = unescape(imageData);\n var tmpImageData = convertBase64ToBinaryString(imageData, false);\n\n if (tmpImageData !== \"\") {\n imageData = tmpImageData;\n } else {\n tmpImageData = jsPDFAPI.loadFile(imageData, true);\n if (tmpImageData !== undefined) {\n imageData = tmpImageData;\n }\n }\n }\n\n if (isDOMElement(imageData)) {\n imageData = getImageDataFromElement(imageData, format);\n }\n\n format = getImageFileTypeByImageData(imageData, format);\n if (!isImageTypeSupported(format)) {\n throw new Error(\n \"addImage does not support files of type '\" +\n format +\n \"', please ensure that a plugin for '\" +\n format +\n \"' support is added.\"\n );\n }\n\n // now do the heavy lifting\n\n if (notDefined(alias)) {\n alias = generateAliasFromImageData(imageData);\n }\n result = checkImagesForAlias.call(this, alias);\n\n if (!result) {\n if (supportsArrayBuffer()) {\n // no need to convert if imageData is already uint8array\n if (!(imageData instanceof Uint8Array) && format !== \"RGBA\") {\n dataAsBinaryString = imageData;\n imageData = binaryStringToUint8Array(imageData);\n }\n }\n\n result = this[\"process\" + format.toUpperCase()](\n imageData,\n getImageIndex.call(this),\n alias,\n checkCompressValue(compression),\n dataAsBinaryString\n );\n }\n\n if (!result) {\n throw new Error(\"An unknown error occurred whilst processing the image.\");\n }\n return result;\n };\n\n /**\n * @name convertBase64ToBinaryString\n * @function\n * @param {string} stringData\n * @returns {string} binary string\n */\n var convertBase64ToBinaryString = (jsPDFAPI.__addimage__.convertBase64ToBinaryString = function(\n stringData,\n throwError\n ) {\n throwError = typeof throwError === \"boolean\" ? throwError : true;\n var base64Info;\n var imageData = \"\";\n var rawData;\n\n if (typeof stringData === \"string\") {\n base64Info = extractImageFromDataUrl(stringData);\n rawData = base64Info !== null ? base64Info.data : stringData;\n\n try {\n imageData = atob(rawData);\n } catch (e) {\n if (throwError) {\n if (!validateStringAsBase64(rawData)) {\n throw new Error(\n \"Supplied Data is not a valid base64-String jsPDF.convertBase64ToBinaryString \"\n );\n } else {\n throw new Error(\n \"atob-Error in jsPDF.convertBase64ToBinaryString \" + e.message\n );\n }\n }\n }\n }\n return imageData;\n });\n\n /**\n * @name getImageProperties\n * @function\n * @param {Object} imageData\n * @returns {Object}\n */\n jsPDFAPI.getImageProperties = function(imageData) {\n var image;\n var tmpImageData = \"\";\n var format;\n\n if (isDOMElement(imageData)) {\n imageData = getImageDataFromElement(imageData);\n }\n\n if (\n typeof imageData === \"string\" &&\n getImageFileTypeByImageData(imageData) === UNKNOWN\n ) {\n tmpImageData = convertBase64ToBinaryString(imageData, false);\n\n if (tmpImageData === \"\") {\n tmpImageData = jsPDFAPI.loadFile(imageData) || \"\";\n }\n imageData = tmpImageData;\n }\n\n format = getImageFileTypeByImageData(imageData);\n if (!isImageTypeSupported(format)) {\n throw new Error(\n \"addImage does not support files of type '\" +\n format +\n \"', please ensure that a plugin for '\" +\n format +\n \"' support is added.\"\n );\n }\n\n if (supportsArrayBuffer() && !(imageData instanceof Uint8Array)) {\n imageData = binaryStringToUint8Array(imageData);\n }\n\n image = this[\"process\" + format.toUpperCase()](imageData);\n\n if (!image) {\n throw new Error(\"An unknown error occurred whilst processing the image\");\n }\n\n image.fileType = format;\n\n return image;\n };\n})(jsPDF.API);\n","/**\n * @license\n * Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\n/**\n * jsPDF Annotations PlugIn\n *\n * There are many types of annotations in a PDF document. Annotations are placed\n * on a page at a particular location. They are not 'attached' to an object.\n *
\n * This plugin current supports
\n *
  • Goto Page (set pageNumber and top in options)\n *
  • Goto Name (set name and top in options)\n *
  • Goto URL (set url in options)\n *

    \n * \tThe destination magnification factor can also be specified when goto is a page number or a named destination. (see documentation below)\n * (set magFactor in options). XYZ is the default.\n *

    \n *

    \n * Links, Text, Popup, and FreeText are supported.\n *

    \n *

    \n * Options In PDF spec Not Implemented Yet\n *

  • link border\n *
  • named target\n *
  • page coordinates\n *
  • destination page scaling and layout\n *
  • actions other than URL and GotoPage\n *
  • background / hover actions\n *

    \n * @name annotations\n * @module\n */\n\n/*\n Destination Magnification Factors\n See PDF 1.3 Page 386 for meanings and options\n\n [supported]\n\tXYZ (options; left top zoom)\n\tFit (no options)\n\tFitH (options: top)\n\tFitV (options: left)\n\n\t[not supported]\n\tFitR\n\tFitB\n\tFitBH\n\tFitBV\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n(function(jsPDFAPI) {\n \"use strict\";\n\n var notEmpty = function(obj) {\n if (typeof obj != \"undefined\") {\n if (obj != \"\") {\n return true;\n }\n }\n };\n\n jsPDF.API.events.push([\n \"addPage\",\n function(addPageData) {\n var pageInfo = this.internal.getPageInfo(addPageData.pageNumber);\n pageInfo.pageContext.annotations = [];\n }\n ]);\n\n jsPDFAPI.events.push([\n \"putPage\",\n function(putPageData) {\n var getHorizontalCoordinateString = this.internal.getCoordinateString;\n var getVerticalCoordinateString = this.internal\n .getVerticalCoordinateString;\n var pageInfo = this.internal.getPageInfoByObjId(putPageData.objId);\n var pageAnnos = putPageData.pageContext.annotations;\n\n var anno, rect, line;\n var found = false;\n for (var a = 0; a < pageAnnos.length && !found; a++) {\n anno = pageAnnos[a];\n switch (anno.type) {\n case \"link\":\n if (\n notEmpty(anno.options.url) ||\n notEmpty(anno.options.pageNumber)\n ) {\n found = true;\n }\n break;\n case \"reference\":\n case \"text\":\n case \"freetext\":\n found = true;\n break;\n }\n }\n if (found == false) {\n return;\n }\n\n this.internal.write(\"/Annots [\");\n for (var i = 0; i < pageAnnos.length; i++) {\n anno = pageAnnos[i];\n var escape = this.internal.pdfEscape;\n var encryptor = this.internal.getEncryptor(putPageData.objId);\n\n switch (anno.type) {\n case \"reference\":\n // References to Widget Annotations (for AcroForm Fields)\n this.internal.write(\" \" + anno.object.objId + \" 0 R \");\n break;\n case \"text\":\n // Create a an object for both the text and the popup\n var objText = this.internal.newAdditionalObject();\n var objPopup = this.internal.newAdditionalObject();\n var encryptorText = this.internal.getEncryptor(objText.objId);\n\n var title = anno.title || \"Note\";\n rect =\n \"/Rect [\" +\n getHorizontalCoordinateString(anno.bounds.x) +\n \" \" +\n getVerticalCoordinateString(anno.bounds.y + anno.bounds.h) +\n \" \" +\n getHorizontalCoordinateString(anno.bounds.x + anno.bounds.w) +\n \" \" +\n getVerticalCoordinateString(anno.bounds.y) +\n \"] \";\n\n line =\n \"<>\";\n objText.content = line;\n\n var parent = objText.objId + \" 0 R\";\n var popoff = 30;\n rect =\n \"/Rect [\" +\n getHorizontalCoordinateString(anno.bounds.x + popoff) +\n \" \" +\n getVerticalCoordinateString(anno.bounds.y + anno.bounds.h) +\n \" \" +\n getHorizontalCoordinateString(\n anno.bounds.x + anno.bounds.w + popoff\n ) +\n \" \" +\n getVerticalCoordinateString(anno.bounds.y) +\n \"] \";\n line =\n \"<>\";\n objPopup.content = line;\n\n this.internal.write(objText.objId, \"0 R\", objPopup.objId, \"0 R\");\n\n break;\n case \"freetext\":\n rect =\n \"/Rect [\" +\n getHorizontalCoordinateString(anno.bounds.x) +\n \" \" +\n getVerticalCoordinateString(anno.bounds.y) +\n \" \" +\n getHorizontalCoordinateString(anno.bounds.x + anno.bounds.w) +\n \" \" +\n getVerticalCoordinateString(anno.bounds.y + anno.bounds.h) +\n \"] \";\n var color = anno.color || \"#000000\";\n line =\n \"<>\";\n this.internal.write(line);\n break;\n case \"link\":\n if (anno.options.name) {\n var loc = this.annotations._nameMap[anno.options.name];\n anno.options.pageNumber = loc.page;\n anno.options.top = loc.y;\n } else {\n if (!anno.options.top) {\n anno.options.top = 0;\n }\n }\n\n rect =\n \"/Rect [\" +\n anno.finalBounds.x +\n \" \" +\n anno.finalBounds.y +\n \" \" +\n anno.finalBounds.w +\n \" \" +\n anno.finalBounds.h +\n \"] \";\n\n line = \"\";\n if (anno.options.url) {\n line =\n \"<>\";\n } else if (anno.options.pageNumber) {\n // first page is 0\n var info = this.internal.getPageInfo(anno.options.pageNumber);\n line =\n \"<>\";\n this.internal.write(line);\n }\n break;\n }\n }\n this.internal.write(\"]\");\n }\n ]);\n\n /**\n * @name createAnnotation\n * @function\n * @param {Object} options\n */\n jsPDFAPI.createAnnotation = function(options) {\n var pageInfo = this.internal.getCurrentPageInfo();\n switch (options.type) {\n case \"link\":\n this.link(\n options.bounds.x,\n options.bounds.y,\n options.bounds.w,\n options.bounds.h,\n options\n );\n break;\n case \"text\":\n case \"freetext\":\n pageInfo.pageContext.annotations.push(options);\n break;\n }\n };\n\n /**\n * Create a link\n *\n * valid options\n *
  • pageNumber or url [required]\n *

    If pageNumber is specified, top and zoom may also be specified

    \n * @name link\n * @function\n * @param {number} x\n * @param {number} y\n * @param {number} w\n * @param {number} h\n * @param {Object} options\n */\n jsPDFAPI.link = function(x, y, w, h, options) {\n var pageInfo = this.internal.getCurrentPageInfo();\n var getHorizontalCoordinateString = this.internal.getCoordinateString;\n var getVerticalCoordinateString = this.internal.getVerticalCoordinateString;\n\n pageInfo.pageContext.annotations.push({\n finalBounds: {\n x: getHorizontalCoordinateString(x),\n y: getVerticalCoordinateString(y),\n w: getHorizontalCoordinateString(x + w),\n h: getVerticalCoordinateString(y + h)\n },\n options: options,\n type: \"link\"\n });\n };\n\n /**\n * Currently only supports single line text.\n * Returns the width of the text/link\n *\n * @name textWithLink\n * @function\n * @param {string} text\n * @param {number} x\n * @param {number} y\n * @param {Object} options\n * @returns {number} width the width of the text/link\n */\n jsPDFAPI.textWithLink = function(text, x, y, options) {\n var totalLineWidth = this.getTextWidth(text);\n var lineHeight = this.internal.getLineHeight() / this.internal.scaleFactor;\n var linkHeight, linkWidth;\n\n // Checking if maxWidth option is passed to determine lineWidth and number of lines for each line\n if (options.maxWidth !== undefined) {\n var { maxWidth } = options;\n linkWidth = maxWidth;\n var numOfLines = this.splitTextToSize(text, linkWidth).length;\n linkHeight = Math.ceil(lineHeight * numOfLines);\n } else {\n linkWidth = totalLineWidth;\n linkHeight = lineHeight;\n }\n\n this.text(text, x, y, options);\n\n //TODO We really need the text baseline height to do this correctly.\n // Or ability to draw text on top, bottom, center, or baseline.\n y += lineHeight * 0.2;\n //handle x position based on the align option\n if (options.align === \"center\") {\n x = x - totalLineWidth / 2; //since starting from center move the x position by half of text width\n }\n if (options.align === \"right\") {\n x = x - totalLineWidth;\n }\n this.link(x, y - lineHeight, linkWidth, linkHeight, options);\n return totalLineWidth;\n };\n\n //TODO move into external library\n /**\n * @name getTextWidth\n * @function\n * @param {string} text\n * @returns {number} txtWidth\n */\n jsPDFAPI.getTextWidth = function(text) {\n var fontSize = this.internal.getFontSize();\n var txtWidth =\n (this.getStringUnitWidth(text) * fontSize) / this.internal.scaleFactor;\n return txtWidth;\n };\n\n return this;\n})(jsPDF.API);\n","/**\n * @license\n * Copyright (c) 2017 Aras Abbasi\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF arabic parser PlugIn\n *\n * @name arabic\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n /**\n * Arabic shape substitutions: char code => (isolated, final, initial, medial).\n * Arabic Substition A\n */\n var arabicSubstitionA = {\n 0x0621: [0xfe80], // ARABIC LETTER HAMZA\n 0x0622: [0xfe81, 0xfe82], // ARABIC LETTER ALEF WITH MADDA ABOVE\n 0x0623: [0xfe83, 0xfe84], // ARABIC LETTER ALEF WITH HAMZA ABOVE\n 0x0624: [0xfe85, 0xfe86], // ARABIC LETTER WAW WITH HAMZA ABOVE\n 0x0625: [0xfe87, 0xfe88], // ARABIC LETTER ALEF WITH HAMZA BELOW\n 0x0626: [0xfe89, 0xfe8a, 0xfe8b, 0xfe8c], // ARABIC LETTER YEH WITH HAMZA ABOVE\n 0x0627: [0xfe8d, 0xfe8e], // ARABIC LETTER ALEF\n 0x0628: [0xfe8f, 0xfe90, 0xfe91, 0xfe92], // ARABIC LETTER BEH\n 0x0629: [0xfe93, 0xfe94], // ARABIC LETTER TEH MARBUTA\n 0x062a: [0xfe95, 0xfe96, 0xfe97, 0xfe98], // ARABIC LETTER TEH\n 0x062b: [0xfe99, 0xfe9a, 0xfe9b, 0xfe9c], // ARABIC LETTER THEH\n 0x062c: [0xfe9d, 0xfe9e, 0xfe9f, 0xfea0], // ARABIC LETTER JEEM\n 0x062d: [0xfea1, 0xfea2, 0xfea3, 0xfea4], // ARABIC LETTER HAH\n 0x062e: [0xfea5, 0xfea6, 0xfea7, 0xfea8], // ARABIC LETTER KHAH\n 0x062f: [0xfea9, 0xfeaa], // ARABIC LETTER DAL\n 0x0630: [0xfeab, 0xfeac], // ARABIC LETTER THAL\n 0x0631: [0xfead, 0xfeae], // ARABIC LETTER REH\n 0x0632: [0xfeaf, 0xfeb0], // ARABIC LETTER ZAIN\n 0x0633: [0xfeb1, 0xfeb2, 0xfeb3, 0xfeb4], // ARABIC LETTER SEEN\n 0x0634: [0xfeb5, 0xfeb6, 0xfeb7, 0xfeb8], // ARABIC LETTER SHEEN\n 0x0635: [0xfeb9, 0xfeba, 0xfebb, 0xfebc], // ARABIC LETTER SAD\n 0x0636: [0xfebd, 0xfebe, 0xfebf, 0xfec0], // ARABIC LETTER DAD\n 0x0637: [0xfec1, 0xfec2, 0xfec3, 0xfec4], // ARABIC LETTER TAH\n 0x0638: [0xfec5, 0xfec6, 0xfec7, 0xfec8], // ARABIC LETTER ZAH\n 0x0639: [0xfec9, 0xfeca, 0xfecb, 0xfecc], // ARABIC LETTER AIN\n 0x063a: [0xfecd, 0xfece, 0xfecf, 0xfed0], // ARABIC LETTER GHAIN\n 0x0641: [0xfed1, 0xfed2, 0xfed3, 0xfed4], // ARABIC LETTER FEH\n 0x0642: [0xfed5, 0xfed6, 0xfed7, 0xfed8], // ARABIC LETTER QAF\n 0x0643: [0xfed9, 0xfeda, 0xfedb, 0xfedc], // ARABIC LETTER KAF\n 0x0644: [0xfedd, 0xfede, 0xfedf, 0xfee0], // ARABIC LETTER LAM\n 0x0645: [0xfee1, 0xfee2, 0xfee3, 0xfee4], // ARABIC LETTER MEEM\n 0x0646: [0xfee5, 0xfee6, 0xfee7, 0xfee8], // ARABIC LETTER NOON\n 0x0647: [0xfee9, 0xfeea, 0xfeeb, 0xfeec], // ARABIC LETTER HEH\n 0x0648: [0xfeed, 0xfeee], // ARABIC LETTER WAW\n 0x0649: [0xfeef, 0xfef0, 64488, 64489], // ARABIC LETTER ALEF MAKSURA\n 0x064a: [0xfef1, 0xfef2, 0xfef3, 0xfef4], // ARABIC LETTER YEH\n 0x0671: [0xfb50, 0xfb51], // ARABIC LETTER ALEF WASLA\n 0x0677: [0xfbdd], // ARABIC LETTER U WITH HAMZA ABOVE\n 0x0679: [0xfb66, 0xfb67, 0xfb68, 0xfb69], // ARABIC LETTER TTEH\n 0x067a: [0xfb5e, 0xfb5f, 0xfb60, 0xfb61], // ARABIC LETTER TTEHEH\n 0x067b: [0xfb52, 0xfb53, 0xfb54, 0xfb55], // ARABIC LETTER BEEH\n 0x067e: [0xfb56, 0xfb57, 0xfb58, 0xfb59], // ARABIC LETTER PEH\n 0x067f: [0xfb62, 0xfb63, 0xfb64, 0xfb65], // ARABIC LETTER TEHEH\n 0x0680: [0xfb5a, 0xfb5b, 0xfb5c, 0xfb5d], // ARABIC LETTER BEHEH\n 0x0683: [0xfb76, 0xfb77, 0xfb78, 0xfb79], // ARABIC LETTER NYEH\n 0x0684: [0xfb72, 0xfb73, 0xfb74, 0xfb75], // ARABIC LETTER DYEH\n 0x0686: [0xfb7a, 0xfb7b, 0xfb7c, 0xfb7d], // ARABIC LETTER TCHEH\n 0x0687: [0xfb7e, 0xfb7f, 0xfb80, 0xfb81], // ARABIC LETTER TCHEHEH\n 0x0688: [0xfb88, 0xfb89], // ARABIC LETTER DDAL\n 0x068c: [0xfb84, 0xfb85], // ARABIC LETTER DAHAL\n 0x068d: [0xfb82, 0xfb83], // ARABIC LETTER DDAHAL\n 0x068e: [0xfb86, 0xfb87], // ARABIC LETTER DUL\n 0x0691: [0xfb8c, 0xfb8d], // ARABIC LETTER RREH\n 0x0698: [0xfb8a, 0xfb8b], // ARABIC LETTER JEH\n 0x06a4: [0xfb6a, 0xfb6b, 0xfb6c, 0xfb6d], // ARABIC LETTER VEH\n 0x06a6: [0xfb6e, 0xfb6f, 0xfb70, 0xfb71], // ARABIC LETTER PEHEH\n 0x06a9: [0xfb8e, 0xfb8f, 0xfb90, 0xfb91], // ARABIC LETTER KEHEH\n 0x06ad: [0xfbd3, 0xfbd4, 0xfbd5, 0xfbd6], // ARABIC LETTER NG\n 0x06af: [0xfb92, 0xfb93, 0xfb94, 0xfb95], // ARABIC LETTER GAF\n 0x06b1: [0xfb9a, 0xfb9b, 0xfb9c, 0xfb9d], // ARABIC LETTER NGOEH\n 0x06b3: [0xfb96, 0xfb97, 0xfb98, 0xfb99], // ARABIC LETTER GUEH\n 0x06ba: [0xfb9e, 0xfb9f], // ARABIC LETTER NOON GHUNNA\n 0x06bb: [0xfba0, 0xfba1, 0xfba2, 0xfba3], // ARABIC LETTER RNOON\n 0x06be: [0xfbaa, 0xfbab, 0xfbac, 0xfbad], // ARABIC LETTER HEH DOACHASHMEE\n 0x06c0: [0xfba4, 0xfba5], // ARABIC LETTER HEH WITH YEH ABOVE\n 0x06c1: [0xfba6, 0xfba7, 0xfba8, 0xfba9], // ARABIC LETTER HEH GOAL\n 0x06c5: [0xfbe0, 0xfbe1], // ARABIC LETTER KIRGHIZ OE\n 0x06c6: [0xfbd9, 0xfbda], // ARABIC LETTER OE\n 0x06c7: [0xfbd7, 0xfbd8], // ARABIC LETTER U\n 0x06c8: [0xfbdb, 0xfbdc], // ARABIC LETTER YU\n 0x06c9: [0xfbe2, 0xfbe3], // ARABIC LETTER KIRGHIZ YU\n 0x06cb: [0xfbde, 0xfbdf], // ARABIC LETTER VE\n 0x06cc: [0xfbfc, 0xfbfd, 0xfbfe, 0xfbff], // ARABIC LETTER FARSI YEH\n 0x06d0: [0xfbe4, 0xfbe5, 0xfbe6, 0xfbe7], //ARABIC LETTER E\n 0x06d2: [0xfbae, 0xfbaf], // ARABIC LETTER YEH BARREE\n 0x06d3: [0xfbb0, 0xfbb1] // ARABIC LETTER YEH BARREE WITH HAMZA ABOVE\n };\n\n /*\n var ligaturesSubstitutionA = {\n 0xFBEA: []// ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM\n };\n */\n\n var ligatures = {\n 0xfedf: {\n 0xfe82: 0xfef5, // ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM\n 0xfe84: 0xfef7, // ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM\n 0xfe88: 0xfef9, // ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM\n 0xfe8e: 0xfefb // ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM\n },\n 0xfee0: {\n 0xfe82: 0xfef6, // ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM\n 0xfe84: 0xfef8, // ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM\n 0xfe88: 0xfefa, // ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM\n 0xfe8e: 0xfefc // ARABIC LIGATURE LAM WITH ALEF FINAL FORM\n },\n 0xfe8d: { 0xfedf: { 0xfee0: { 0xfeea: 0xfdf2 } } }, // ALLAH\n 0x0651: {\n 0x064c: 0xfc5e, // Shadda + Dammatan\n 0x064d: 0xfc5f, // Shadda + Kasratan\n 0x064e: 0xfc60, // Shadda + Fatha\n 0x064f: 0xfc61, // Shadda + Damma\n 0x0650: 0xfc62 // Shadda + Kasra\n }\n };\n\n var arabic_diacritics = {\n 1612: 64606, // Shadda + Dammatan\n 1613: 64607, // Shadda + Kasratan\n 1614: 64608, // Shadda + Fatha\n 1615: 64609, // Shadda + Damma\n 1616: 64610 // Shadda + Kasra\n };\n\n var alfletter = [1570, 1571, 1573, 1575];\n\n var noChangeInForm = -1;\n var isolatedForm = 0;\n var finalForm = 1;\n var initialForm = 2;\n var medialForm = 3;\n\n jsPDFAPI.__arabicParser__ = {};\n\n //private\n var isInArabicSubstitutionA = (jsPDFAPI.__arabicParser__.isInArabicSubstitutionA = function(\n letter\n ) {\n return typeof arabicSubstitionA[letter.charCodeAt(0)] !== \"undefined\";\n });\n\n var isArabicLetter = (jsPDFAPI.__arabicParser__.isArabicLetter = function(\n letter\n ) {\n return (\n typeof letter === \"string\" &&\n /^[\\u0600-\\u06FF\\u0750-\\u077F\\u08A0-\\u08FF\\uFB50-\\uFDFF\\uFE70-\\uFEFF]+$/.test(\n letter\n )\n );\n });\n\n var isArabicEndLetter = (jsPDFAPI.__arabicParser__.isArabicEndLetter = function(\n letter\n ) {\n return (\n isArabicLetter(letter) &&\n isInArabicSubstitutionA(letter) &&\n arabicSubstitionA[letter.charCodeAt(0)].length <= 2\n );\n });\n\n var isArabicAlfLetter = (jsPDFAPI.__arabicParser__.isArabicAlfLetter = function(\n letter\n ) {\n return (\n isArabicLetter(letter) && alfletter.indexOf(letter.charCodeAt(0)) >= 0\n );\n });\n\n jsPDFAPI.__arabicParser__.arabicLetterHasIsolatedForm = function(letter) {\n return (\n isArabicLetter(letter) &&\n isInArabicSubstitutionA(letter) &&\n arabicSubstitionA[letter.charCodeAt(0)].length >= 1\n );\n };\n\n var arabicLetterHasFinalForm = (jsPDFAPI.__arabicParser__.arabicLetterHasFinalForm = function(\n letter\n ) {\n return (\n isArabicLetter(letter) &&\n isInArabicSubstitutionA(letter) &&\n arabicSubstitionA[letter.charCodeAt(0)].length >= 2\n );\n });\n\n jsPDFAPI.__arabicParser__.arabicLetterHasInitialForm = function(letter) {\n return (\n isArabicLetter(letter) &&\n isInArabicSubstitutionA(letter) &&\n arabicSubstitionA[letter.charCodeAt(0)].length >= 3\n );\n };\n\n var arabicLetterHasMedialForm = (jsPDFAPI.__arabicParser__.arabicLetterHasMedialForm = function(\n letter\n ) {\n return (\n isArabicLetter(letter) &&\n isInArabicSubstitutionA(letter) &&\n arabicSubstitionA[letter.charCodeAt(0)].length == 4\n );\n });\n\n var resolveLigatures = (jsPDFAPI.__arabicParser__.resolveLigatures = function(\n letters\n ) {\n var i = 0;\n var tmpLigatures = ligatures;\n var result = \"\";\n var effectedLetters = 0;\n\n for (i = 0; i < letters.length; i += 1) {\n if (typeof tmpLigatures[letters.charCodeAt(i)] !== \"undefined\") {\n effectedLetters++;\n tmpLigatures = tmpLigatures[letters.charCodeAt(i)];\n\n if (typeof tmpLigatures === \"number\") {\n result += String.fromCharCode(tmpLigatures);\n tmpLigatures = ligatures;\n effectedLetters = 0;\n }\n if (i === letters.length - 1) {\n tmpLigatures = ligatures;\n result += letters.charAt(i - (effectedLetters - 1));\n i = i - (effectedLetters - 1);\n effectedLetters = 0;\n }\n } else {\n tmpLigatures = ligatures;\n result += letters.charAt(i - effectedLetters);\n i = i - effectedLetters;\n effectedLetters = 0;\n }\n }\n\n return result;\n });\n\n jsPDFAPI.__arabicParser__.isArabicDiacritic = function(letter) {\n return (\n letter !== undefined &&\n arabic_diacritics[letter.charCodeAt(0)] !== undefined\n );\n };\n\n var getCorrectForm = (jsPDFAPI.__arabicParser__.getCorrectForm = function(\n currentChar,\n beforeChar,\n nextChar\n ) {\n if (!isArabicLetter(currentChar)) {\n return -1;\n }\n\n if (isInArabicSubstitutionA(currentChar) === false) {\n return noChangeInForm;\n }\n if (\n !arabicLetterHasFinalForm(currentChar) ||\n (!isArabicLetter(beforeChar) && !isArabicLetter(nextChar)) ||\n (!isArabicLetter(nextChar) && isArabicEndLetter(beforeChar)) ||\n (isArabicEndLetter(currentChar) && !isArabicLetter(beforeChar)) ||\n (isArabicEndLetter(currentChar) && isArabicAlfLetter(beforeChar)) ||\n (isArabicEndLetter(currentChar) && isArabicEndLetter(beforeChar))\n ) {\n return isolatedForm;\n }\n\n if (\n arabicLetterHasMedialForm(currentChar) &&\n isArabicLetter(beforeChar) &&\n !isArabicEndLetter(beforeChar) &&\n isArabicLetter(nextChar) &&\n arabicLetterHasFinalForm(nextChar)\n ) {\n return medialForm;\n }\n\n if (isArabicEndLetter(currentChar) || !isArabicLetter(nextChar)) {\n return finalForm;\n }\n return initialForm;\n });\n\n /**\n * @name processArabic\n * @function\n * @param {string} text\n * @returns {string}\n */\n var parseArabic = function(text) {\n text = text || \"\";\n\n var result = \"\";\n var i = 0;\n var j = 0;\n var position = 0;\n var currentLetter = \"\";\n var prevLetter = \"\";\n var nextLetter = \"\";\n\n var words = text.split(\"\\\\s+\");\n var newWords = [];\n for (i = 0; i < words.length; i += 1) {\n newWords.push(\"\");\n for (j = 0; j < words[i].length; j += 1) {\n currentLetter = words[i][j];\n prevLetter = words[i][j - 1];\n nextLetter = words[i][j + 1];\n if (isArabicLetter(currentLetter)) {\n position = getCorrectForm(currentLetter, prevLetter, nextLetter);\n if (position !== -1) {\n newWords[i] += String.fromCharCode(\n arabicSubstitionA[currentLetter.charCodeAt(0)][position]\n );\n } else {\n newWords[i] += currentLetter;\n }\n } else {\n newWords[i] += currentLetter;\n }\n }\n\n newWords[i] = resolveLigatures(newWords[i]);\n }\n result = newWords.join(\" \");\n\n return result;\n };\n\n var processArabic = (jsPDFAPI.__arabicParser__.processArabic = jsPDFAPI.processArabic = function() {\n var text =\n typeof arguments[0] === \"string\" ? arguments[0] : arguments[0].text;\n var tmpText = [];\n var result;\n\n if (Array.isArray(text)) {\n var i = 0;\n tmpText = [];\n for (i = 0; i < text.length; i += 1) {\n if (Array.isArray(text[i])) {\n tmpText.push([parseArabic(text[i][0]), text[i][1], text[i][2]]);\n } else {\n tmpText.push([parseArabic(text[i])]);\n }\n }\n result = tmpText;\n } else {\n result = parseArabic(text);\n }\n if (typeof arguments[0] === \"string\") {\n return result;\n } else {\n arguments[0].text = result;\n return arguments[0];\n }\n });\n\n jsPDFAPI.events.push([\"preProcessText\", processArabic]);\n})(jsPDF.API);\n","/** @license\n * jsPDF Autoprint Plugin\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * @name autoprint\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n /**\n * Makes the PDF automatically open the print-Dialog when opened in a PDF-viewer.\n *\n * @name autoPrint\n * @function\n * @param {Object} options (optional) Set the attribute variant to 'non-conform' (default) or 'javascript' to activate different methods of automatic printing when opening in a PDF-viewer .\n * @returns {jsPDF}\n * @example\n * var doc = new jsPDF();\n * doc.text(10, 10, 'This is a test');\n * doc.autoPrint({variant: 'non-conform'});\n * doc.save('autoprint.pdf');\n */\n jsPDFAPI.autoPrint = function(options) {\n \"use strict\";\n var refAutoPrintTag;\n options = options || {};\n options.variant = options.variant || \"non-conform\";\n\n switch (options.variant) {\n case \"javascript\":\n //https://github.com/Rob--W/pdf.js/commit/c676ecb5a0f54677b9f3340c3ef2cf42225453bb\n this.addJS(\"print({});\");\n break;\n case \"non-conform\":\n default:\n this.internal.events.subscribe(\"postPutResources\", function() {\n refAutoPrintTag = this.internal.newObject();\n this.internal.out(\"<<\");\n this.internal.out(\"/S /Named\");\n this.internal.out(\"/Type /Action\");\n this.internal.out(\"/N /Print\");\n this.internal.out(\">>\");\n this.internal.out(\"endobj\");\n });\n\n this.internal.events.subscribe(\"putCatalog\", function() {\n this.internal.out(\"/OpenAction \" + refAutoPrintTag + \" 0 R\");\n });\n break;\n }\n return this;\n };\n})(jsPDF.API);\n","/**\n * @license\n * Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF Canvas PlugIn\n * This plugin mimics the HTML5 Canvas\n *\n * The goal is to provide a way for current canvas users to print directly to a PDF.\n * @name canvas\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n /**\n * @class Canvas\n * @classdesc A Canvas Wrapper for jsPDF\n */\n var Canvas = function() {\n var jsPdfInstance = undefined;\n Object.defineProperty(this, \"pdf\", {\n get: function() {\n return jsPdfInstance;\n },\n set: function(value) {\n jsPdfInstance = value;\n }\n });\n\n var _width = 150;\n /**\n * The height property is a positive integer reflecting the height HTML attribute of the element interpreted in CSS pixels. When the attribute is not specified, or if it is set to an invalid value, like a negative, the default value of 150 is used.\n * This is one of the two properties, the other being width, that controls the size of the canvas.\n *\n * @name width\n */\n Object.defineProperty(this, \"width\", {\n get: function() {\n return _width;\n },\n set: function(value) {\n if (isNaN(value) || Number.isInteger(value) === false || value < 0) {\n _width = 150;\n } else {\n _width = value;\n }\n if (this.getContext(\"2d\").pageWrapXEnabled) {\n this.getContext(\"2d\").pageWrapX = _width + 1;\n }\n }\n });\n\n var _height = 300;\n /**\n * The width property is a positive integer reflecting the width HTML attribute of the element interpreted in CSS pixels. When the attribute is not specified, or if it is set to an invalid value, like a negative, the default value of 300 is used.\n * This is one of the two properties, the other being height, that controls the size of the canvas.\n *\n * @name height\n */\n Object.defineProperty(this, \"height\", {\n get: function() {\n return _height;\n },\n set: function(value) {\n if (isNaN(value) || Number.isInteger(value) === false || value < 0) {\n _height = 300;\n } else {\n _height = value;\n }\n if (this.getContext(\"2d\").pageWrapYEnabled) {\n this.getContext(\"2d\").pageWrapY = _height + 1;\n }\n }\n });\n\n var _childNodes = [];\n Object.defineProperty(this, \"childNodes\", {\n get: function() {\n return _childNodes;\n },\n set: function(value) {\n _childNodes = value;\n }\n });\n\n var _style = {};\n Object.defineProperty(this, \"style\", {\n get: function() {\n return _style;\n },\n set: function(value) {\n _style = value;\n }\n });\n\n Object.defineProperty(this, \"parentNode\", {});\n };\n\n /**\n * The getContext() method returns a drawing context on the canvas, or null if the context identifier is not supported.\n *\n * @name getContext\n * @function\n * @param {string} contextType Is a String containing the context identifier defining the drawing context associated to the canvas. Possible value is \"2d\", leading to the creation of a Context2D object representing a two-dimensional rendering context.\n * @param {object} contextAttributes\n */\n Canvas.prototype.getContext = function(contextType, contextAttributes) {\n contextType = contextType || \"2d\";\n var key;\n\n if (contextType !== \"2d\") {\n return null;\n }\n for (key in contextAttributes) {\n if (this.pdf.context2d.hasOwnProperty(key)) {\n this.pdf.context2d[key] = contextAttributes[key];\n }\n }\n this.pdf.context2d._canvas = this;\n return this.pdf.context2d;\n };\n\n /**\n * The toDataURL() method is just a stub to throw an error if accidently called.\n *\n * @name toDataURL\n * @function\n */\n Canvas.prototype.toDataURL = function() {\n throw new Error(\"toDataURL is not implemented.\");\n };\n\n jsPDFAPI.events.push([\n \"initialized\",\n function() {\n this.canvas = new Canvas();\n this.canvas.pdf = this;\n }\n ]);\n\n return this;\n})(jsPDF.API);\n","/**\n * @license\n * ====================================================================\n * Copyright (c) 2013 Youssef Beddad, youssef.beddad@gmail.com\n * 2013 Eduardo Menezes de Morais, eduardo.morais@usp.br\n * 2013 Lee Driscoll, https://github.com/lsdriscoll\n * 2014 Juan Pablo Gaviria, https://github.com/juanpgaviria\n * 2014 James Hall, james@parall.ax\n * 2014 Diego Casorran, https://github.com/diegocr\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * @name cell\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n var NO_MARGINS = { left: 0, top: 0, bottom: 0, right: 0 };\n\n var px2pt = (0.264583 * 72) / 25.4;\n var printingHeaderRow = false;\n\n var _initialize = function() {\n if (typeof this.internal.__cell__ === \"undefined\") {\n this.internal.__cell__ = {};\n this.internal.__cell__.padding = 3;\n this.internal.__cell__.headerFunction = undefined;\n this.internal.__cell__.margins = Object.assign({}, NO_MARGINS);\n this.internal.__cell__.margins.width = this.getPageWidth();\n _reset.call(this);\n }\n };\n\n var _reset = function() {\n this.internal.__cell__.lastCell = new Cell();\n this.internal.__cell__.pages = 1;\n };\n\n var Cell = function() {\n var _x = arguments[0];\n Object.defineProperty(this, \"x\", {\n enumerable: true,\n get: function() {\n return _x;\n },\n set: function(value) {\n _x = value;\n }\n });\n var _y = arguments[1];\n Object.defineProperty(this, \"y\", {\n enumerable: true,\n get: function() {\n return _y;\n },\n set: function(value) {\n _y = value;\n }\n });\n var _width = arguments[2];\n Object.defineProperty(this, \"width\", {\n enumerable: true,\n get: function() {\n return _width;\n },\n set: function(value) {\n _width = value;\n }\n });\n var _height = arguments[3];\n Object.defineProperty(this, \"height\", {\n enumerable: true,\n get: function() {\n return _height;\n },\n set: function(value) {\n _height = value;\n }\n });\n var _text = arguments[4];\n Object.defineProperty(this, \"text\", {\n enumerable: true,\n get: function() {\n return _text;\n },\n set: function(value) {\n _text = value;\n }\n });\n var _lineNumber = arguments[5];\n Object.defineProperty(this, \"lineNumber\", {\n enumerable: true,\n get: function() {\n return _lineNumber;\n },\n set: function(value) {\n _lineNumber = value;\n }\n });\n var _align = arguments[6];\n Object.defineProperty(this, \"align\", {\n enumerable: true,\n get: function() {\n return _align;\n },\n set: function(value) {\n _align = value;\n }\n });\n\n return this;\n };\n\n Cell.prototype.clone = function() {\n return new Cell(\n this.x,\n this.y,\n this.width,\n this.height,\n this.text,\n this.lineNumber,\n this.align\n );\n };\n\n Cell.prototype.toArray = function() {\n return [\n this.x,\n this.y,\n this.width,\n this.height,\n this.text,\n this.lineNumber,\n this.align\n ];\n };\n\n /**\n * @name setHeaderFunction\n * @function\n * @param {function} func\n */\n jsPDFAPI.setHeaderFunction = function(func) {\n _initialize.call(this);\n this.internal.__cell__.headerFunction =\n typeof func === \"function\" ? func : undefined;\n return this;\n };\n\n /**\n * @name getTextDimensions\n * @function\n * @param {string} txt\n * @returns {Object} dimensions\n */\n jsPDFAPI.getTextDimensions = function(text, options) {\n _initialize.call(this);\n options = options || {};\n var fontSize = options.fontSize || this.getFontSize();\n var font = options.font || this.getFont();\n var scaleFactor = options.scaleFactor || this.internal.scaleFactor;\n var width = 0;\n var amountOfLines = 0;\n var height = 0;\n var tempWidth = 0;\n var scope = this;\n\n if (!Array.isArray(text) && typeof text !== \"string\") {\n if (typeof text === \"number\") {\n text = String(text);\n } else {\n throw new Error(\n \"getTextDimensions expects text-parameter to be of type String or type Number or an Array of Strings.\"\n );\n }\n }\n\n const maxWidth = options.maxWidth;\n if (maxWidth > 0) {\n if (typeof text === \"string\") {\n text = this.splitTextToSize(text, maxWidth);\n } else if (Object.prototype.toString.call(text) === \"[object Array]\") {\n text = text.reduce(function(acc, textLine) {\n return acc.concat(scope.splitTextToSize(textLine, maxWidth));\n }, []);\n }\n } else {\n // Without the else clause, it will not work if you do not pass along maxWidth\n text = Array.isArray(text) ? text : [text];\n }\n\n for (var i = 0; i < text.length; i++) {\n tempWidth = this.getStringUnitWidth(text[i], { font: font }) * fontSize;\n if (width < tempWidth) {\n width = tempWidth;\n }\n }\n\n if (width !== 0) {\n amountOfLines = text.length;\n }\n\n width = width / scaleFactor;\n height = Math.max(\n (amountOfLines * fontSize * this.getLineHeightFactor() -\n fontSize * (this.getLineHeightFactor() - 1)) /\n scaleFactor,\n 0\n );\n return { w: width, h: height };\n };\n\n /**\n * @name cellAddPage\n * @function\n */\n jsPDFAPI.cellAddPage = function() {\n _initialize.call(this);\n\n this.addPage();\n\n var margins = this.internal.__cell__.margins || NO_MARGINS;\n this.internal.__cell__.lastCell = new Cell(\n margins.left,\n margins.top,\n undefined,\n undefined\n );\n this.internal.__cell__.pages += 1;\n\n return this;\n };\n\n /**\n * @name cell\n * @function\n * @param {number} x\n * @param {number} y\n * @param {number} width\n * @param {number} height\n * @param {string} text\n * @param {number} lineNumber lineNumber\n * @param {string} align\n * @return {jsPDF} jsPDF-instance\n */\n var cell = (jsPDFAPI.cell = function() {\n var currentCell;\n\n if (arguments[0] instanceof Cell) {\n currentCell = arguments[0];\n } else {\n currentCell = new Cell(\n arguments[0],\n arguments[1],\n arguments[2],\n arguments[3],\n arguments[4],\n arguments[5]\n );\n }\n _initialize.call(this);\n var lastCell = this.internal.__cell__.lastCell;\n var padding = this.internal.__cell__.padding;\n var margins = this.internal.__cell__.margins || NO_MARGINS;\n var tableHeaderRow = this.internal.__cell__.tableHeaderRow;\n var printHeaders = this.internal.__cell__.printHeaders;\n // If this is not the first cell, we must change its position\n if (typeof lastCell.lineNumber !== \"undefined\") {\n if (lastCell.lineNumber === currentCell.lineNumber) {\n //Same line\n currentCell.x = (lastCell.x || 0) + (lastCell.width || 0);\n currentCell.y = lastCell.y || 0;\n } else {\n //New line\n if (\n lastCell.y + lastCell.height + currentCell.height + margins.bottom >\n this.getPageHeight()\n ) {\n this.cellAddPage();\n currentCell.y = margins.top;\n if (printHeaders && tableHeaderRow) {\n this.printHeaderRow(currentCell.lineNumber, true);\n currentCell.y += tableHeaderRow[0].height;\n }\n } else {\n currentCell.y = lastCell.y + lastCell.height || currentCell.y;\n }\n }\n }\n\n if (typeof currentCell.text[0] !== \"undefined\") {\n this.rect(\n currentCell.x,\n currentCell.y,\n currentCell.width,\n currentCell.height,\n printingHeaderRow === true ? \"FD\" : undefined\n );\n if (currentCell.align === \"right\") {\n this.text(\n currentCell.text,\n currentCell.x + currentCell.width - padding,\n currentCell.y + padding,\n { align: \"right\", baseline: \"top\" }\n );\n } else if (currentCell.align === \"center\") {\n this.text(\n currentCell.text,\n currentCell.x + currentCell.width / 2,\n currentCell.y + padding,\n {\n align: \"center\",\n baseline: \"top\",\n maxWidth: currentCell.width - padding - padding\n }\n );\n } else {\n this.text(\n currentCell.text,\n currentCell.x + padding,\n currentCell.y + padding,\n {\n align: \"left\",\n baseline: \"top\",\n maxWidth: currentCell.width - padding - padding\n }\n );\n }\n }\n this.internal.__cell__.lastCell = currentCell;\n return this;\n });\n\n /**\n * Create a table from a set of data.\n * @name table\n * @function\n * @param {Integer} [x] : left-position for top-left corner of table\n * @param {Integer} [y] top-position for top-left corner of table\n * @param {Object[]} [data] An array of objects containing key-value pairs corresponding to a row of data.\n * @param {String[]} [headers] Omit or null to auto-generate headers at a performance cost\n\n * @param {Object} [config.printHeaders] True to print column headers at the top of every page\n * @param {Object} [config.autoSize] True to dynamically set the column widths to match the widest cell value\n * @param {Object} [config.margins] margin values for left, top, bottom, and width\n * @param {Object} [config.fontSize] Integer fontSize to use (optional)\n * @param {Object} [config.padding] cell-padding in pt to use (optional)\n * @param {Object} [config.headerBackgroundColor] default is #c8c8c8 (optional)\n * @param {Object} [config.headerTextColor] default is #000 (optional)\n * @param {Object} [config.rowStart] callback to handle before print each row (optional)\n * @param {Object} [config.cellStart] callback to handle before print each cell (optional)\n * @returns {jsPDF} jsPDF-instance\n */\n\n jsPDFAPI.table = function(x, y, data, headers, config) {\n _initialize.call(this);\n if (!data) {\n throw new Error(\"No data for PDF table.\");\n }\n\n config = config || {};\n\n var headerNames = [],\n headerLabels = [],\n headerAligns = [],\n i,\n columnMatrix = {},\n columnWidths = {},\n column,\n columnMinWidths = [],\n j,\n tableHeaderConfigs = [],\n //set up defaults. If a value is provided in config, defaults will be overwritten:\n autoSize = config.autoSize || false,\n printHeaders = config.printHeaders === false ? false : true,\n fontSize =\n config.css && typeof config.css[\"font-size\"] !== \"undefined\"\n ? config.css[\"font-size\"] * 16\n : config.fontSize || 12,\n margins =\n config.margins ||\n Object.assign({ width: this.getPageWidth() }, NO_MARGINS),\n padding = typeof config.padding === \"number\" ? config.padding : 3,\n headerBackgroundColor = config.headerBackgroundColor || \"#c8c8c8\",\n headerTextColor = config.headerTextColor || \"#000\";\n\n _reset.call(this);\n\n this.internal.__cell__.printHeaders = printHeaders;\n this.internal.__cell__.margins = margins;\n this.internal.__cell__.table_font_size = fontSize;\n this.internal.__cell__.padding = padding;\n this.internal.__cell__.headerBackgroundColor = headerBackgroundColor;\n this.internal.__cell__.headerTextColor = headerTextColor;\n this.setFontSize(fontSize);\n\n // Set header values\n if (headers === undefined || headers === null) {\n // No headers defined so we derive from data\n headerNames = Object.keys(data[0]);\n headerLabels = headerNames;\n headerAligns = headerNames.map(function() {\n return \"left\";\n });\n } else if (Array.isArray(headers) && typeof headers[0] === \"object\") {\n headerNames = headers.map(function(header) {\n return header.name;\n });\n headerLabels = headers.map(function(header) {\n return header.prompt || header.name || \"\";\n });\n headerAligns = headers.map(function(header) {\n return header.align || \"left\";\n });\n // Split header configs into names and prompts\n for (i = 0; i < headers.length; i += 1) {\n columnWidths[headers[i].name] = headers[i].width * px2pt;\n }\n } else if (Array.isArray(headers) && typeof headers[0] === \"string\") {\n headerNames = headers;\n headerLabels = headerNames;\n headerAligns = headerNames.map(function() {\n return \"left\";\n });\n }\n\n if (\n autoSize ||\n (Array.isArray(headers) && typeof headers[0] === \"string\")\n ) {\n var headerName;\n for (i = 0; i < headerNames.length; i += 1) {\n headerName = headerNames[i];\n\n // Create a matrix of columns e.g., {column_title: [row1_Record, row2_Record]}\n\n columnMatrix[headerName] = data.map(function(rec) {\n return rec[headerName];\n });\n\n // get header width\n this.setFont(undefined, \"bold\");\n columnMinWidths.push(\n this.getTextDimensions(headerLabels[i], {\n fontSize: this.internal.__cell__.table_font_size,\n scaleFactor: this.internal.scaleFactor\n }).w\n );\n column = columnMatrix[headerName];\n\n // get cell widths\n this.setFont(undefined, \"normal\");\n for (j = 0; j < column.length; j += 1) {\n columnMinWidths.push(\n this.getTextDimensions(column[j], {\n fontSize: this.internal.__cell__.table_font_size,\n scaleFactor: this.internal.scaleFactor\n }).w\n );\n }\n\n // get final column width\n columnWidths[headerName] =\n Math.max.apply(null, columnMinWidths) + padding + padding;\n\n //have to reset\n columnMinWidths = [];\n }\n }\n\n // -- Construct the table\n\n if (printHeaders) {\n var row = {};\n for (i = 0; i < headerNames.length; i += 1) {\n row[headerNames[i]] = {};\n row[headerNames[i]].text = headerLabels[i];\n row[headerNames[i]].align = headerAligns[i];\n }\n\n var rowHeight = calculateLineHeight.call(this, row, columnWidths);\n\n // Construct the header row\n tableHeaderConfigs = headerNames.map(function(value) {\n return new Cell(\n x,\n y,\n columnWidths[value],\n rowHeight,\n row[value].text,\n undefined,\n row[value].align\n );\n });\n\n // Store the table header config\n this.setTableHeaderRow(tableHeaderConfigs);\n\n // Print the header for the start of the table\n this.printHeaderRow(1, false);\n }\n\n // Construct the data rows\n\n var align = headers.reduce(function(pv, cv) {\n pv[cv.name] = cv.align;\n return pv;\n }, {});\n for (i = 0; i < data.length; i += 1) {\n if (\"rowStart\" in config && config.rowStart instanceof Function) {\n config.rowStart(\n {\n row: i,\n data: data[i]\n },\n this\n );\n }\n var lineHeight = calculateLineHeight.call(this, data[i], columnWidths);\n\n for (j = 0; j < headerNames.length; j += 1) {\n var cellData = data[i][headerNames[j]];\n if (\"cellStart\" in config && config.cellStart instanceof Function) {\n config.cellStart(\n {\n row: i,\n col: j,\n data: cellData\n },\n this\n );\n }\n cell.call(\n this,\n new Cell(\n x,\n y,\n columnWidths[headerNames[j]],\n lineHeight,\n cellData,\n i + 2,\n align[headerNames[j]]\n )\n );\n }\n }\n this.internal.__cell__.table_x = x;\n this.internal.__cell__.table_y = y;\n return this;\n };\n\n /**\n * Calculate the height for containing the highest column\n *\n * @name calculateLineHeight\n * @function\n * @param {Object[]} model is the line of data we want to calculate the height of\n * @param {Integer[]} columnWidths is size of each column\n * @returns {number} lineHeight\n * @private\n */\n var calculateLineHeight = function calculateLineHeight(model, columnWidths) {\n var padding = this.internal.__cell__.padding;\n var fontSize = this.internal.__cell__.table_font_size;\n var scaleFactor = this.internal.scaleFactor;\n\n return Object.keys(model)\n .map(function(key) {\n var value = model[key];\n return this.splitTextToSize(\n value.hasOwnProperty(\"text\") ? value.text : value,\n columnWidths[key] - padding - padding\n );\n }, this)\n .map(function(value) {\n return (\n (this.getLineHeightFactor() * value.length * fontSize) / scaleFactor +\n padding +\n padding\n );\n }, this)\n .reduce(function(pv, cv) {\n return Math.max(pv, cv);\n }, 0);\n };\n\n /**\n * Store the config for outputting a table header\n *\n * @name setTableHeaderRow\n * @function\n * @param {Object[]} config\n * An array of cell configs that would define a header row: Each config matches the config used by jsPDFAPI.cell\n * except the lineNumber parameter is excluded\n */\n jsPDFAPI.setTableHeaderRow = function(config) {\n _initialize.call(this);\n this.internal.__cell__.tableHeaderRow = config;\n };\n\n /**\n * Output the store header row\n *\n * @name printHeaderRow\n * @function\n * @param {number} lineNumber The line number to output the header at\n * @param {boolean} new_page\n */\n jsPDFAPI.printHeaderRow = function(lineNumber, new_page) {\n _initialize.call(this);\n if (!this.internal.__cell__.tableHeaderRow) {\n throw new Error(\"Property tableHeaderRow does not exist.\");\n }\n\n var tableHeaderCell;\n\n printingHeaderRow = true;\n if (typeof this.internal.__cell__.headerFunction === \"function\") {\n var position = this.internal.__cell__.headerFunction(\n this,\n this.internal.__cell__.pages\n );\n this.internal.__cell__.lastCell = new Cell(\n position[0],\n position[1],\n position[2],\n position[3],\n undefined,\n -1\n );\n }\n this.setFont(undefined, \"bold\");\n\n var tempHeaderConf = [];\n for (var i = 0; i < this.internal.__cell__.tableHeaderRow.length; i += 1) {\n tableHeaderCell = this.internal.__cell__.tableHeaderRow[i].clone();\n if (new_page) {\n tableHeaderCell.y = this.internal.__cell__.margins.top || 0;\n tempHeaderConf.push(tableHeaderCell);\n }\n tableHeaderCell.lineNumber = lineNumber;\n var currentTextColor = this.getTextColor();\n this.setTextColor(this.internal.__cell__.headerTextColor);\n this.setFillColor(this.internal.__cell__.headerBackgroundColor);\n cell.call(this, tableHeaderCell);\n this.setTextColor(currentTextColor);\n }\n if (tempHeaderConf.length > 0) {\n this.setTableHeaderRow(tempHeaderConf);\n }\n this.setFont(undefined, \"normal\");\n printingHeaderRow = false;\n };\n})(jsPDF.API);\n","/**\n * @license\n * ====================================================================\n * Copyright (c) 2013 Youssef Beddad, youssef.beddad@gmail.com\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF JavaScript plugin\n *\n * @name javascript\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n var jsNamesObj, jsJsObj, text;\n /**\n * @name addJS\n * @function\n * @param {string} javascript The javascript to be embedded into the PDF-file.\n * @returns {jsPDF}\n */\n jsPDFAPI.addJS = function(javascript) {\n text = javascript;\n this.internal.events.subscribe(\"postPutResources\", function() {\n jsNamesObj = this.internal.newObject();\n this.internal.out(\"<<\");\n this.internal.out(\"/Names [(EmbeddedJS) \" + (jsNamesObj + 1) + \" 0 R]\");\n this.internal.out(\">>\");\n this.internal.out(\"endobj\");\n\n jsJsObj = this.internal.newObject();\n this.internal.out(\"<<\");\n this.internal.out(\"/S /JavaScript\");\n this.internal.out(\"/JS (\" + text + \")\");\n this.internal.out(\">>\");\n this.internal.out(\"endobj\");\n });\n this.internal.events.subscribe(\"putCatalog\", function() {\n if (jsNamesObj !== undefined && jsJsObj !== undefined) {\n this.internal.out(\"/Names <>\");\n }\n });\n return this;\n };\n})(jsPDF.API);\n","/* eslint-disable no-fallthrough */\r\n/* eslint-disable no-console */\r\n/**\r\n * @license\r\n * jsPDF Context2D PlugIn Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv\r\n *\r\n * Licensed under the MIT License. http://opensource.org/licenses/mit-license\r\n */\r\n\r\nimport { jsPDF } from \"../jspdf.js\";\r\nimport { RGBColor } from \"../libs/rgbcolor.js\";\r\nimport { console } from \"../libs/console.js\";\r\nimport {\r\n buildFontFaceMap,\r\n parseFontFamily,\r\n resolveFontFace\r\n} from \"../libs/fontFace.js\";\r\n\r\n/**\r\n * This plugin mimics the HTML5 CanvasRenderingContext2D.\r\n *\r\n * The goal is to provide a way for current canvas implementations to print directly to a PDF.\r\n *\r\n * @name context2d\r\n * @module\r\n */\r\n(function(jsPDFAPI) {\r\n \"use strict\";\r\n var ContextLayer = function(ctx) {\r\n ctx = ctx || {};\r\n this.isStrokeTransparent = ctx.isStrokeTransparent || false;\r\n this.strokeOpacity = ctx.strokeOpacity || 1;\r\n this.strokeStyle = ctx.strokeStyle || \"#000000\";\r\n this.fillStyle = ctx.fillStyle || \"#000000\";\r\n this.isFillTransparent = ctx.isFillTransparent || false;\r\n this.fillOpacity = ctx.fillOpacity || 1;\r\n this.font = ctx.font || \"10px sans-serif\";\r\n this.textBaseline = ctx.textBaseline || \"alphabetic\";\r\n this.textAlign = ctx.textAlign || \"left\";\r\n this.lineWidth = ctx.lineWidth || 1;\r\n this.lineJoin = ctx.lineJoin || \"miter\";\r\n this.lineCap = ctx.lineCap || \"butt\";\r\n this.path = ctx.path || [];\r\n this.transform =\r\n typeof ctx.transform !== \"undefined\"\r\n ? ctx.transform.clone()\r\n : new Matrix();\r\n this.globalCompositeOperation = ctx.globalCompositeOperation || \"normal\";\r\n this.globalAlpha = ctx.globalAlpha || 1.0;\r\n this.clip_path = ctx.clip_path || [];\r\n this.currentPoint = ctx.currentPoint || new Point();\r\n this.miterLimit = ctx.miterLimit || 10.0;\r\n this.lastPoint = ctx.lastPoint || new Point();\r\n this.lineDashOffset = ctx.lineDashOffset || 0.0;\r\n this.lineDash = ctx.lineDash || [];\r\n this.margin = ctx.margin || [0, 0, 0, 0];\r\n this.prevPageLastElemOffset = ctx.prevPageLastElemOffset || 0;\r\n\r\n this.ignoreClearRect =\r\n typeof ctx.ignoreClearRect === \"boolean\" ? ctx.ignoreClearRect : true;\r\n return this;\r\n };\r\n\r\n //stub\r\n var f2,\r\n getHorizontalCoordinateString,\r\n getVerticalCoordinateString,\r\n getHorizontalCoordinate,\r\n getVerticalCoordinate,\r\n Point,\r\n Rectangle,\r\n Matrix,\r\n _ctx;\r\n jsPDFAPI.events.push([\r\n \"initialized\",\r\n function() {\r\n this.context2d = new Context2D(this);\r\n\r\n f2 = this.internal.f2;\r\n getHorizontalCoordinateString = this.internal.getCoordinateString;\r\n getVerticalCoordinateString = this.internal.getVerticalCoordinateString;\r\n getHorizontalCoordinate = this.internal.getHorizontalCoordinate;\r\n getVerticalCoordinate = this.internal.getVerticalCoordinate;\r\n Point = this.internal.Point;\r\n Rectangle = this.internal.Rectangle;\r\n Matrix = this.internal.Matrix;\r\n _ctx = new ContextLayer();\r\n }\r\n ]);\r\n\r\n var Context2D = function(pdf) {\r\n Object.defineProperty(this, \"canvas\", {\r\n get: function() {\r\n return { parentNode: false, style: false };\r\n }\r\n });\r\n\r\n var _pdf = pdf;\r\n Object.defineProperty(this, \"pdf\", {\r\n get: function() {\r\n return _pdf;\r\n }\r\n });\r\n\r\n var _pageWrapXEnabled = false;\r\n /**\r\n * @name pageWrapXEnabled\r\n * @type {boolean}\r\n * @default false\r\n */\r\n Object.defineProperty(this, \"pageWrapXEnabled\", {\r\n get: function() {\r\n return _pageWrapXEnabled;\r\n },\r\n set: function(value) {\r\n _pageWrapXEnabled = Boolean(value);\r\n }\r\n });\r\n\r\n var _pageWrapYEnabled = false;\r\n /**\r\n * @name pageWrapYEnabled\r\n * @type {boolean}\r\n * @default true\r\n */\r\n Object.defineProperty(this, \"pageWrapYEnabled\", {\r\n get: function() {\r\n return _pageWrapYEnabled;\r\n },\r\n set: function(value) {\r\n _pageWrapYEnabled = Boolean(value);\r\n }\r\n });\r\n\r\n var _posX = 0;\r\n /**\r\n * @name posX\r\n * @type {number}\r\n * @default 0\r\n */\r\n Object.defineProperty(this, \"posX\", {\r\n get: function() {\r\n return _posX;\r\n },\r\n set: function(value) {\r\n if (!isNaN(value)) {\r\n _posX = value;\r\n }\r\n }\r\n });\r\n\r\n var _posY = 0;\r\n /**\r\n * @name posY\r\n * @type {number}\r\n * @default 0\r\n */\r\n Object.defineProperty(this, \"posY\", {\r\n get: function() {\r\n return _posY;\r\n },\r\n set: function(value) {\r\n if (!isNaN(value)) {\r\n _posY = value;\r\n }\r\n }\r\n });\r\n\r\n /**\r\n * Gets or sets the page margin when using auto paging. Has no effect when {@link autoPaging} is off.\r\n * @name margin\r\n * @type {number|number[]}\r\n * @default [0, 0, 0, 0]\r\n */\r\n Object.defineProperty(this, \"margin\", {\r\n get: function() {\r\n return _ctx.margin;\r\n },\r\n set: function(value) {\r\n var margin;\r\n if (typeof value === \"number\") {\r\n margin = [value, value, value, value];\r\n } else {\r\n margin = new Array(4);\r\n margin[0] = value[0];\r\n margin[1] = value.length >= 2 ? value[1] : margin[0];\r\n margin[2] = value.length >= 3 ? value[2] : margin[0];\r\n margin[3] = value.length >= 4 ? value[3] : margin[1];\r\n }\r\n _ctx.margin = margin;\r\n }\r\n });\r\n\r\n var _autoPaging = false;\r\n /**\r\n * Gets or sets the auto paging mode. When auto paging is enabled, the context2d will automatically draw on the\r\n * next page if a shape or text chunk doesn't fit entirely on the current page. The context2d will create new\r\n * pages if required.\r\n *\r\n * Context2d supports different modes:\r\n *
      \r\n *
    • \r\n * false: Auto paging is disabled.\r\n *
    • \r\n *
    • \r\n * true or 'slice': Will cut shapes or text chunks across page breaks. Will possibly\r\n * slice text in half, making it difficult to read.\r\n *
    • \r\n *
    • \r\n * 'text': Trys not to cut text in half across page breaks. Works best for documents consisting\r\n * mostly of a single column of text.\r\n *
    • \r\n *
    \r\n * @name Context2D#autoPaging\r\n * @type {boolean|\"slice\"|\"text\"}\r\n * @default false\r\n */\r\n Object.defineProperty(this, \"autoPaging\", {\r\n get: function() {\r\n return _autoPaging;\r\n },\r\n set: function(value) {\r\n _autoPaging = value;\r\n }\r\n });\r\n\r\n var lastBreak = 0;\r\n /**\r\n * @name lastBreak\r\n * @type {number}\r\n * @default 0\r\n */\r\n Object.defineProperty(this, \"lastBreak\", {\r\n get: function() {\r\n return lastBreak;\r\n },\r\n set: function(value) {\r\n lastBreak = value;\r\n }\r\n });\r\n\r\n var pageBreaks = [];\r\n /**\r\n * Y Position of page breaks.\r\n * @name pageBreaks\r\n * @type {number}\r\n * @default 0\r\n */\r\n Object.defineProperty(this, \"pageBreaks\", {\r\n get: function() {\r\n return pageBreaks;\r\n },\r\n set: function(value) {\r\n pageBreaks = value;\r\n }\r\n });\r\n\r\n /**\r\n * @name ctx\r\n * @type {object}\r\n * @default {}\r\n */\r\n Object.defineProperty(this, \"ctx\", {\r\n get: function() {\r\n return _ctx;\r\n },\r\n set: function(value) {\r\n if (value instanceof ContextLayer) {\r\n _ctx = value;\r\n }\r\n }\r\n });\r\n\r\n /**\r\n * @name path\r\n * @type {array}\r\n * @default []\r\n */\r\n Object.defineProperty(this, \"path\", {\r\n get: function() {\r\n return _ctx.path;\r\n },\r\n set: function(value) {\r\n _ctx.path = value;\r\n }\r\n });\r\n\r\n /**\r\n * @name ctxStack\r\n * @type {array}\r\n * @default []\r\n */\r\n var _ctxStack = [];\r\n Object.defineProperty(this, \"ctxStack\", {\r\n get: function() {\r\n return _ctxStack;\r\n },\r\n set: function(value) {\r\n _ctxStack = value;\r\n }\r\n });\r\n\r\n /**\r\n * Sets or returns the color, gradient, or pattern used to fill the drawing\r\n *\r\n * @name fillStyle\r\n * @default #000000\r\n * @property {(color|gradient|pattern)} value The color of the drawing. Default value is #000000
    \r\n * A gradient object (linear or radial) used to fill the drawing (not supported by context2d)
    \r\n * A pattern object to use to fill the drawing (not supported by context2d)\r\n */\r\n Object.defineProperty(this, \"fillStyle\", {\r\n get: function() {\r\n return this.ctx.fillStyle;\r\n },\r\n set: function(value) {\r\n var rgba;\r\n rgba = getRGBA(value);\r\n\r\n this.ctx.fillStyle = rgba.style;\r\n this.ctx.isFillTransparent = rgba.a === 0;\r\n this.ctx.fillOpacity = rgba.a;\r\n\r\n this.pdf.setFillColor(rgba.r, rgba.g, rgba.b, { a: rgba.a });\r\n this.pdf.setTextColor(rgba.r, rgba.g, rgba.b, { a: rgba.a });\r\n }\r\n });\r\n\r\n /**\r\n * Sets or returns the color, gradient, or pattern used for strokes\r\n *\r\n * @name strokeStyle\r\n * @default #000000\r\n * @property {color} color A CSS color value that indicates the stroke color of the drawing. Default value is #000000 (not supported by context2d)\r\n * @property {gradient} gradient A gradient object (linear or radial) used to create a gradient stroke (not supported by context2d)\r\n * @property {pattern} pattern A pattern object used to create a pattern stroke (not supported by context2d)\r\n */\r\n Object.defineProperty(this, \"strokeStyle\", {\r\n get: function() {\r\n return this.ctx.strokeStyle;\r\n },\r\n set: function(value) {\r\n var rgba = getRGBA(value);\r\n\r\n this.ctx.strokeStyle = rgba.style;\r\n this.ctx.isStrokeTransparent = rgba.a === 0;\r\n this.ctx.strokeOpacity = rgba.a;\r\n\r\n if (rgba.a === 0) {\r\n this.pdf.setDrawColor(255, 255, 255);\r\n } else if (rgba.a === 1) {\r\n this.pdf.setDrawColor(rgba.r, rgba.g, rgba.b);\r\n } else {\r\n this.pdf.setDrawColor(rgba.r, rgba.g, rgba.b);\r\n }\r\n }\r\n });\r\n\r\n /**\r\n * Sets or returns the style of the end caps for a line\r\n *\r\n * @name lineCap\r\n * @default butt\r\n * @property {(butt|round|square)} lineCap butt A flat edge is added to each end of the line
    \r\n * round A rounded end cap is added to each end of the line
    \r\n * square A square end cap is added to each end of the line
    \r\n */\r\n Object.defineProperty(this, \"lineCap\", {\r\n get: function() {\r\n return this.ctx.lineCap;\r\n },\r\n set: function(value) {\r\n if ([\"butt\", \"round\", \"square\"].indexOf(value) !== -1) {\r\n this.ctx.lineCap = value;\r\n this.pdf.setLineCap(value);\r\n }\r\n }\r\n });\r\n\r\n /**\r\n * Sets or returns the current line width\r\n *\r\n * @name lineWidth\r\n * @default 1\r\n * @property {number} lineWidth The current line width, in pixels\r\n */\r\n Object.defineProperty(this, \"lineWidth\", {\r\n get: function() {\r\n return this.ctx.lineWidth;\r\n },\r\n set: function(value) {\r\n if (!isNaN(value)) {\r\n this.ctx.lineWidth = value;\r\n this.pdf.setLineWidth(value);\r\n }\r\n }\r\n });\r\n\r\n /**\r\n * Sets or returns the type of corner created, when two lines meet\r\n */\r\n Object.defineProperty(this, \"lineJoin\", {\r\n get: function() {\r\n return this.ctx.lineJoin;\r\n },\r\n set: function(value) {\r\n if ([\"bevel\", \"round\", \"miter\"].indexOf(value) !== -1) {\r\n this.ctx.lineJoin = value;\r\n this.pdf.setLineJoin(value);\r\n }\r\n }\r\n });\r\n\r\n /**\r\n * A number specifying the miter limit ratio in coordinate space units. Zero, negative, Infinity, and NaN values are ignored. The default value is 10.0.\r\n *\r\n * @name miterLimit\r\n * @default 10\r\n */\r\n Object.defineProperty(this, \"miterLimit\", {\r\n get: function() {\r\n return this.ctx.miterLimit;\r\n },\r\n set: function(value) {\r\n if (!isNaN(value)) {\r\n this.ctx.miterLimit = value;\r\n this.pdf.setMiterLimit(value);\r\n }\r\n }\r\n });\r\n\r\n Object.defineProperty(this, \"textBaseline\", {\r\n get: function() {\r\n return this.ctx.textBaseline;\r\n },\r\n set: function(value) {\r\n this.ctx.textBaseline = value;\r\n }\r\n });\r\n\r\n Object.defineProperty(this, \"textAlign\", {\r\n get: function() {\r\n return this.ctx.textAlign;\r\n },\r\n set: function(value) {\r\n if ([\"right\", \"end\", \"center\", \"left\", \"start\"].indexOf(value) !== -1) {\r\n this.ctx.textAlign = value;\r\n }\r\n }\r\n });\r\n\r\n var _fontFaceMap = null;\r\n\r\n function getFontFaceMap(pdf, fontFaces) {\r\n if (_fontFaceMap === null) {\r\n var fontMap = pdf.getFontList();\r\n\r\n var convertedFontFaces = convertToFontFaces(fontMap);\r\n\r\n _fontFaceMap = buildFontFaceMap(convertedFontFaces.concat(fontFaces));\r\n }\r\n\r\n return _fontFaceMap;\r\n }\r\n\r\n function convertToFontFaces(fontMap) {\r\n var fontFaces = [];\r\n\r\n Object.keys(fontMap).forEach(function(family) {\r\n var styles = fontMap[family];\r\n\r\n styles.forEach(function(style) {\r\n var fontFace = null;\r\n\r\n switch (style) {\r\n case \"bold\":\r\n fontFace = {\r\n family: family,\r\n weight: \"bold\"\r\n };\r\n break;\r\n\r\n case \"italic\":\r\n fontFace = {\r\n family: family,\r\n style: \"italic\"\r\n };\r\n break;\r\n\r\n case \"bolditalic\":\r\n fontFace = {\r\n family: family,\r\n weight: \"bold\",\r\n style: \"italic\"\r\n };\r\n break;\r\n\r\n case \"\":\r\n case \"normal\":\r\n fontFace = {\r\n family: family\r\n };\r\n break;\r\n }\r\n\r\n // If font-face is still null here, it is a font with some styling we don't recognize and\r\n // cannot map or it is a font added via the fontFaces option of .html().\r\n if (fontFace !== null) {\r\n fontFace.ref = {\r\n name: family,\r\n style: style\r\n };\r\n\r\n fontFaces.push(fontFace);\r\n }\r\n });\r\n });\r\n\r\n return fontFaces;\r\n }\r\n\r\n var _fontFaces = null;\r\n /**\r\n * A map of available font-faces, as passed in the options of\r\n * .html(). If set a limited implementation of the font style matching\r\n * algorithm defined by https://www.w3.org/TR/css-fonts-3/#font-matching-algorithm\r\n * will be used. If not set it will fallback to previous behavior.\r\n */\r\n\r\n Object.defineProperty(this, \"fontFaces\", {\r\n get: function() {\r\n return _fontFaces;\r\n },\r\n set: function(value) {\r\n _fontFaceMap = null;\r\n _fontFaces = value;\r\n }\r\n });\r\n\r\n Object.defineProperty(this, \"font\", {\r\n get: function() {\r\n return this.ctx.font;\r\n },\r\n set: function(value) {\r\n this.ctx.font = value;\r\n var rx, matches;\r\n\r\n //source: https://stackoverflow.com/a/10136041\r\n // eslint-disable-next-line no-useless-escape\r\n rx = /^\\s*(?=(?:(?:[-a-z]+\\s*){0,2}(italic|oblique))?)(?=(?:(?:[-a-z]+\\s*){0,2}(small-caps))?)(?=(?:(?:[-a-z]+\\s*){0,2}(bold(?:er)?|lighter|[1-9]00))?)(?:(?:normal|\\1|\\2|\\3)\\s*){0,3}((?:xx?-)?(?:small|large)|medium|smaller|larger|[.\\d]+(?:\\%|in|[cem]m|ex|p[ctx]))(?:\\s*\\/\\s*(normal|[.\\d]+(?:\\%|in|[cem]m|ex|p[ctx])))?\\s*([-_,\\\"\\'\\sa-z]+?)\\s*$/i;\r\n matches = rx.exec(value);\r\n if (matches !== null) {\r\n var fontStyle = matches[1];\r\n var fontVariant = matches[2];\r\n var fontWeight = matches[3];\r\n var fontSize = matches[4];\r\n var lineHeight = matches[5];\r\n var fontFamily = matches[6];\r\n } else {\r\n return;\r\n }\r\n var rxFontSize = /^([.\\d]+)((?:%|in|[cem]m|ex|p[ctx]))$/i;\r\n var fontSizeUnit = rxFontSize.exec(fontSize)[2];\r\n\r\n if (\"px\" === fontSizeUnit) {\r\n fontSize = Math.floor(\r\n parseFloat(fontSize) * this.pdf.internal.scaleFactor\r\n );\r\n } else if (\"em\" === fontSizeUnit) {\r\n fontSize = Math.floor(parseFloat(fontSize) * this.pdf.getFontSize());\r\n } else {\r\n fontSize = Math.floor(\r\n parseFloat(fontSize) * this.pdf.internal.scaleFactor\r\n );\r\n }\r\n\r\n this.pdf.setFontSize(fontSize);\r\n var parts = parseFontFamily(fontFamily);\r\n\r\n if (this.fontFaces) {\r\n var fontFaceMap = getFontFaceMap(this.pdf, this.fontFaces);\r\n\r\n var rules = parts.map(function(ff) {\r\n return {\r\n family: ff,\r\n stretch: \"normal\", // TODO: Extract font-stretch from font rule (perhaps write proper parser for it?)\r\n weight: fontWeight,\r\n style: fontStyle\r\n };\r\n });\r\n\r\n var font = resolveFontFace(fontFaceMap, rules);\r\n this.pdf.setFont(font.ref.name, font.ref.style);\r\n return;\r\n }\r\n\r\n var style = \"\";\r\n if (\r\n fontWeight === \"bold\" ||\r\n parseInt(fontWeight, 10) >= 700 ||\r\n fontStyle === \"bold\"\r\n ) {\r\n style = \"bold\";\r\n }\r\n\r\n if (fontStyle === \"italic\") {\r\n style += \"italic\";\r\n }\r\n\r\n if (style.length === 0) {\r\n style = \"normal\";\r\n }\r\n var jsPdfFontName = \"\";\r\n\r\n var fallbackFonts = {\r\n arial: \"Helvetica\",\r\n Arial: \"Helvetica\",\r\n verdana: \"Helvetica\",\r\n Verdana: \"Helvetica\",\r\n helvetica: \"Helvetica\",\r\n Helvetica: \"Helvetica\",\r\n \"sans-serif\": \"Helvetica\",\r\n fixed: \"Courier\",\r\n monospace: \"Courier\",\r\n terminal: \"Courier\",\r\n cursive: \"Times\",\r\n fantasy: \"Times\",\r\n serif: \"Times\"\r\n };\r\n\r\n for (var i = 0; i < parts.length; i++) {\r\n if (\r\n this.pdf.internal.getFont(parts[i], style, {\r\n noFallback: true,\r\n disableWarning: true\r\n }) !== undefined\r\n ) {\r\n jsPdfFontName = parts[i];\r\n break;\r\n } else if (\r\n style === \"bolditalic\" &&\r\n this.pdf.internal.getFont(parts[i], \"bold\", {\r\n noFallback: true,\r\n disableWarning: true\r\n }) !== undefined\r\n ) {\r\n jsPdfFontName = parts[i];\r\n style = \"bold\";\r\n } else if (\r\n this.pdf.internal.getFont(parts[i], \"normal\", {\r\n noFallback: true,\r\n disableWarning: true\r\n }) !== undefined\r\n ) {\r\n jsPdfFontName = parts[i];\r\n style = \"normal\";\r\n break;\r\n }\r\n }\r\n if (jsPdfFontName === \"\") {\r\n for (var j = 0; j < parts.length; j++) {\r\n if (fallbackFonts[parts[j]]) {\r\n jsPdfFontName = fallbackFonts[parts[j]];\r\n break;\r\n }\r\n }\r\n }\r\n jsPdfFontName = jsPdfFontName === \"\" ? \"Times\" : jsPdfFontName;\r\n this.pdf.setFont(jsPdfFontName, style);\r\n }\r\n });\r\n\r\n Object.defineProperty(this, \"globalCompositeOperation\", {\r\n get: function() {\r\n return this.ctx.globalCompositeOperation;\r\n },\r\n set: function(value) {\r\n this.ctx.globalCompositeOperation = value;\r\n }\r\n });\r\n\r\n Object.defineProperty(this, \"globalAlpha\", {\r\n get: function() {\r\n return this.ctx.globalAlpha;\r\n },\r\n set: function(value) {\r\n this.ctx.globalAlpha = value;\r\n }\r\n });\r\n\r\n /**\r\n * A float specifying the amount of the line dash offset. The default value is 0.0.\r\n *\r\n * @name lineDashOffset\r\n * @default 0.0\r\n */\r\n Object.defineProperty(this, \"lineDashOffset\", {\r\n get: function() {\r\n return this.ctx.lineDashOffset;\r\n },\r\n set: function(value) {\r\n this.ctx.lineDashOffset = value;\r\n setLineDash.call(this);\r\n }\r\n });\r\n\r\n // Not HTML API\r\n Object.defineProperty(this, \"lineDash\", {\r\n get: function() {\r\n return this.ctx.lineDash;\r\n },\r\n set: function(value) {\r\n this.ctx.lineDash = value;\r\n setLineDash.call(this);\r\n }\r\n });\r\n\r\n // Not HTML API\r\n Object.defineProperty(this, \"ignoreClearRect\", {\r\n get: function() {\r\n return this.ctx.ignoreClearRect;\r\n },\r\n set: function(value) {\r\n this.ctx.ignoreClearRect = Boolean(value);\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * Sets the line dash pattern used when stroking lines.\r\n * @name setLineDash\r\n * @function\r\n * @description It uses an array of values that specify alternating lengths of lines and gaps which describe the pattern.\r\n */\r\n Context2D.prototype.setLineDash = function(dashArray) {\r\n this.lineDash = dashArray;\r\n };\r\n\r\n /**\r\n * gets the current line dash pattern.\r\n * @name getLineDash\r\n * @function\r\n * @returns {Array} An Array of numbers that specify distances to alternately draw a line and a gap (in coordinate space units). If the number, when setting the elements, is odd, the elements of the array get copied and concatenated. For example, setting the line dash to [5, 15, 25] will result in getting back [5, 15, 25, 5, 15, 25].\r\n */\r\n Context2D.prototype.getLineDash = function() {\r\n if (this.lineDash.length % 2) {\r\n // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/getLineDash#return_value\r\n return this.lineDash.concat(this.lineDash);\r\n } else {\r\n // The copied value is returned to prevent contamination from outside.\r\n return this.lineDash.slice();\r\n }\r\n };\r\n\r\n Context2D.prototype.fill = function() {\r\n pathPreProcess.call(this, \"fill\", false);\r\n };\r\n\r\n /**\r\n * Actually draws the path you have defined\r\n *\r\n * @name stroke\r\n * @function\r\n * @description The stroke() method actually draws the path you have defined with all those moveTo() and lineTo() methods. The default color is black.\r\n */\r\n Context2D.prototype.stroke = function() {\r\n pathPreProcess.call(this, \"stroke\", false);\r\n };\r\n\r\n /**\r\n * Begins a path, or resets the current\r\n *\r\n * @name beginPath\r\n * @function\r\n * @description The beginPath() method begins a path, or resets the current path.\r\n */\r\n Context2D.prototype.beginPath = function() {\r\n this.path = [\r\n {\r\n type: \"begin\"\r\n }\r\n ];\r\n };\r\n\r\n /**\r\n * Moves the path to the specified point in the canvas, without creating a line\r\n *\r\n * @name moveTo\r\n * @function\r\n * @param x {Number} The x-coordinate of where to move the path to\r\n * @param y {Number} The y-coordinate of where to move the path to\r\n */\r\n Context2D.prototype.moveTo = function(x, y) {\r\n if (isNaN(x) || isNaN(y)) {\r\n console.error(\"jsPDF.context2d.moveTo: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.moveTo\");\r\n }\r\n\r\n var pt = this.ctx.transform.applyToPoint(new Point(x, y));\r\n\r\n this.path.push({\r\n type: \"mt\",\r\n x: pt.x,\r\n y: pt.y\r\n });\r\n this.ctx.lastPoint = new Point(x, y);\r\n };\r\n\r\n /**\r\n * Creates a path from the current point back to the starting point\r\n *\r\n * @name closePath\r\n * @function\r\n * @description The closePath() method creates a path from the current point back to the starting point.\r\n */\r\n Context2D.prototype.closePath = function() {\r\n var pathBegin = new Point(0, 0);\r\n var i = 0;\r\n for (i = this.path.length - 1; i !== -1; i--) {\r\n if (this.path[i].type === \"begin\") {\r\n if (\r\n typeof this.path[i + 1] === \"object\" &&\r\n typeof this.path[i + 1].x === \"number\"\r\n ) {\r\n pathBegin = new Point(this.path[i + 1].x, this.path[i + 1].y);\r\n break;\r\n }\r\n }\r\n }\r\n this.path.push({\r\n type: \"close\"\r\n });\r\n this.ctx.lastPoint = new Point(pathBegin.x, pathBegin.y);\r\n };\r\n\r\n /**\r\n * Adds a new point and creates a line to that point from the last specified point in the canvas\r\n *\r\n * @name lineTo\r\n * @function\r\n * @param x The x-coordinate of where to create the line to\r\n * @param y The y-coordinate of where to create the line to\r\n * @description The lineTo() method adds a new point and creates a line TO that point FROM the last specified point in the canvas (this method does not draw the line).\r\n */\r\n Context2D.prototype.lineTo = function(x, y) {\r\n if (isNaN(x) || isNaN(y)) {\r\n console.error(\"jsPDF.context2d.lineTo: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.lineTo\");\r\n }\r\n\r\n var pt = this.ctx.transform.applyToPoint(new Point(x, y));\r\n\r\n this.path.push({\r\n type: \"lt\",\r\n x: pt.x,\r\n y: pt.y\r\n });\r\n this.ctx.lastPoint = new Point(pt.x, pt.y);\r\n };\r\n\r\n /**\r\n * Clips a region of any shape and size from the original canvas\r\n *\r\n * @name clip\r\n * @function\r\n * @description The clip() method clips a region of any shape and size from the original canvas.\r\n */\r\n Context2D.prototype.clip = function() {\r\n this.ctx.clip_path = JSON.parse(JSON.stringify(this.path));\r\n pathPreProcess.call(this, null, true);\r\n };\r\n\r\n /**\r\n * Creates a cubic Bézier curve\r\n *\r\n * @name quadraticCurveTo\r\n * @function\r\n * @param cpx {Number} The x-coordinate of the Bézier control point\r\n * @param cpy {Number} The y-coordinate of the Bézier control point\r\n * @param x {Number} The x-coordinate of the ending point\r\n * @param y {Number} The y-coordinate of the ending point\r\n * @description The quadraticCurveTo() method adds a point to the current path by using the specified control points that represent a quadratic Bézier curve.

    A quadratic Bézier curve requires two points. The first point is a control point that is used in the quadratic Bézier calculation and the second point is the ending point for the curve. The starting point for the curve is the last point in the current path. If a path does not exist, use the beginPath() and moveTo() methods to define a starting point.\r\n */\r\n Context2D.prototype.quadraticCurveTo = function(cpx, cpy, x, y) {\r\n if (isNaN(x) || isNaN(y) || isNaN(cpx) || isNaN(cpy)) {\r\n console.error(\r\n \"jsPDF.context2d.quadraticCurveTo: Invalid arguments\",\r\n arguments\r\n );\r\n throw new Error(\r\n \"Invalid arguments passed to jsPDF.context2d.quadraticCurveTo\"\r\n );\r\n }\r\n\r\n var pt0 = this.ctx.transform.applyToPoint(new Point(x, y));\r\n var pt1 = this.ctx.transform.applyToPoint(new Point(cpx, cpy));\r\n\r\n this.path.push({\r\n type: \"qct\",\r\n x1: pt1.x,\r\n y1: pt1.y,\r\n x: pt0.x,\r\n y: pt0.y\r\n });\r\n this.ctx.lastPoint = new Point(pt0.x, pt0.y);\r\n };\r\n\r\n /**\r\n * Creates a cubic Bézier curve\r\n *\r\n * @name bezierCurveTo\r\n * @function\r\n * @param cp1x {Number} The x-coordinate of the first Bézier control point\r\n * @param cp1y {Number} The y-coordinate of the first Bézier control point\r\n * @param cp2x {Number} The x-coordinate of the second Bézier control point\r\n * @param cp2y {Number} The y-coordinate of the second Bézier control point\r\n * @param x {Number} The x-coordinate of the ending point\r\n * @param y {Number} The y-coordinate of the ending point\r\n * @description The bezierCurveTo() method adds a point to the current path by using the specified control points that represent a cubic Bézier curve.

    A cubic bezier curve requires three points. The first two points are control points that are used in the cubic Bézier calculation and the last point is the ending point for the curve. The starting point for the curve is the last point in the current path. If a path does not exist, use the beginPath() and moveTo() methods to define a starting point.\r\n */\r\n Context2D.prototype.bezierCurveTo = function(cp1x, cp1y, cp2x, cp2y, x, y) {\r\n if (\r\n isNaN(x) ||\r\n isNaN(y) ||\r\n isNaN(cp1x) ||\r\n isNaN(cp1y) ||\r\n isNaN(cp2x) ||\r\n isNaN(cp2y)\r\n ) {\r\n console.error(\r\n \"jsPDF.context2d.bezierCurveTo: Invalid arguments\",\r\n arguments\r\n );\r\n throw new Error(\r\n \"Invalid arguments passed to jsPDF.context2d.bezierCurveTo\"\r\n );\r\n }\r\n var pt0 = this.ctx.transform.applyToPoint(new Point(x, y));\r\n var pt1 = this.ctx.transform.applyToPoint(new Point(cp1x, cp1y));\r\n var pt2 = this.ctx.transform.applyToPoint(new Point(cp2x, cp2y));\r\n\r\n this.path.push({\r\n type: \"bct\",\r\n x1: pt1.x,\r\n y1: pt1.y,\r\n x2: pt2.x,\r\n y2: pt2.y,\r\n x: pt0.x,\r\n y: pt0.y\r\n });\r\n this.ctx.lastPoint = new Point(pt0.x, pt0.y);\r\n };\r\n\r\n /**\r\n * Creates an arc/curve (used to create circles, or parts of circles)\r\n *\r\n * @name arc\r\n * @function\r\n * @param x {Number} The x-coordinate of the center of the circle\r\n * @param y {Number} The y-coordinate of the center of the circle\r\n * @param radius {Number} The radius of the circle\r\n * @param startAngle {Number} The starting angle, in radians (0 is at the 3 o'clock position of the arc's circle)\r\n * @param endAngle {Number} The ending angle, in radians\r\n * @param counterclockwise {Boolean} Optional. Specifies whether the drawing should be counterclockwise or clockwise. False is default, and indicates clockwise, while true indicates counter-clockwise.\r\n * @description The arc() method creates an arc/curve (used to create circles, or parts of circles).\r\n */\r\n Context2D.prototype.arc = function(\r\n x,\r\n y,\r\n radius,\r\n startAngle,\r\n endAngle,\r\n counterclockwise\r\n ) {\r\n if (\r\n isNaN(x) ||\r\n isNaN(y) ||\r\n isNaN(radius) ||\r\n isNaN(startAngle) ||\r\n isNaN(endAngle)\r\n ) {\r\n console.error(\"jsPDF.context2d.arc: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.arc\");\r\n }\r\n counterclockwise = Boolean(counterclockwise);\r\n\r\n if (!this.ctx.transform.isIdentity) {\r\n var xpt = this.ctx.transform.applyToPoint(new Point(x, y));\r\n x = xpt.x;\r\n y = xpt.y;\r\n\r\n var x_radPt = this.ctx.transform.applyToPoint(new Point(0, radius));\r\n var x_radPt0 = this.ctx.transform.applyToPoint(new Point(0, 0));\r\n radius = Math.sqrt(\r\n Math.pow(x_radPt.x - x_radPt0.x, 2) +\r\n Math.pow(x_radPt.y - x_radPt0.y, 2)\r\n );\r\n }\r\n if (Math.abs(endAngle - startAngle) >= 2 * Math.PI) {\r\n startAngle = 0;\r\n endAngle = 2 * Math.PI;\r\n }\r\n\r\n this.path.push({\r\n type: \"arc\",\r\n x: x,\r\n y: y,\r\n radius: radius,\r\n startAngle: startAngle,\r\n endAngle: endAngle,\r\n counterclockwise: counterclockwise\r\n });\r\n // this.ctx.lastPoint(new Point(pt.x,pt.y));\r\n };\r\n\r\n /**\r\n * Creates an arc/curve between two tangents\r\n *\r\n * @name arcTo\r\n * @function\r\n * @param x1 {Number} The x-coordinate of the first tangent\r\n * @param y1 {Number} The y-coordinate of the first tangent\r\n * @param x2 {Number} The x-coordinate of the second tangent\r\n * @param y2 {Number} The y-coordinate of the second tangent\r\n * @param radius The radius of the arc\r\n * @description The arcTo() method creates an arc/curve between two tangents on the canvas.\r\n */\r\n // eslint-disable-next-line no-unused-vars\r\n Context2D.prototype.arcTo = function(x1, y1, x2, y2, radius) {\r\n throw new Error(\"arcTo not implemented.\");\r\n };\r\n\r\n /**\r\n * Creates a rectangle\r\n *\r\n * @name rect\r\n * @function\r\n * @param x {Number} The x-coordinate of the upper-left corner of the rectangle\r\n * @param y {Number} The y-coordinate of the upper-left corner of the rectangle\r\n * @param w {Number} The width of the rectangle, in pixels\r\n * @param h {Number} The height of the rectangle, in pixels\r\n * @description The rect() method creates a rectangle.\r\n */\r\n Context2D.prototype.rect = function(x, y, w, h) {\r\n if (isNaN(x) || isNaN(y) || isNaN(w) || isNaN(h)) {\r\n console.error(\"jsPDF.context2d.rect: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.rect\");\r\n }\r\n this.moveTo(x, y);\r\n this.lineTo(x + w, y);\r\n this.lineTo(x + w, y + h);\r\n this.lineTo(x, y + h);\r\n this.lineTo(x, y);\r\n this.lineTo(x + w, y);\r\n this.lineTo(x, y);\r\n };\r\n\r\n /**\r\n * Draws a \"filled\" rectangle\r\n *\r\n * @name fillRect\r\n * @function\r\n * @param x {Number} The x-coordinate of the upper-left corner of the rectangle\r\n * @param y {Number} The y-coordinate of the upper-left corner of the rectangle\r\n * @param w {Number} The width of the rectangle, in pixels\r\n * @param h {Number} The height of the rectangle, in pixels\r\n * @description The fillRect() method draws a \"filled\" rectangle. The default color of the fill is black.\r\n */\r\n Context2D.prototype.fillRect = function(x, y, w, h) {\r\n if (isNaN(x) || isNaN(y) || isNaN(w) || isNaN(h)) {\r\n console.error(\"jsPDF.context2d.fillRect: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.fillRect\");\r\n }\r\n if (isFillTransparent.call(this)) {\r\n return;\r\n }\r\n var tmp = {};\r\n if (this.lineCap !== \"butt\") {\r\n tmp.lineCap = this.lineCap;\r\n this.lineCap = \"butt\";\r\n }\r\n if (this.lineJoin !== \"miter\") {\r\n tmp.lineJoin = this.lineJoin;\r\n this.lineJoin = \"miter\";\r\n }\r\n\r\n this.beginPath();\r\n this.rect(x, y, w, h);\r\n this.fill();\r\n\r\n if (tmp.hasOwnProperty(\"lineCap\")) {\r\n this.lineCap = tmp.lineCap;\r\n }\r\n if (tmp.hasOwnProperty(\"lineJoin\")) {\r\n this.lineJoin = tmp.lineJoin;\r\n }\r\n };\r\n\r\n /**\r\n * Draws a rectangle (no fill)\r\n *\r\n * @name strokeRect\r\n * @function\r\n * @param x {Number} The x-coordinate of the upper-left corner of the rectangle\r\n * @param y {Number} The y-coordinate of the upper-left corner of the rectangle\r\n * @param w {Number} The width of the rectangle, in pixels\r\n * @param h {Number} The height of the rectangle, in pixels\r\n * @description The strokeRect() method draws a rectangle (no fill). The default color of the stroke is black.\r\n */\r\n Context2D.prototype.strokeRect = function strokeRect(x, y, w, h) {\r\n if (isNaN(x) || isNaN(y) || isNaN(w) || isNaN(h)) {\r\n console.error(\"jsPDF.context2d.strokeRect: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.strokeRect\");\r\n }\r\n if (isStrokeTransparent.call(this)) {\r\n return;\r\n }\r\n this.beginPath();\r\n this.rect(x, y, w, h);\r\n this.stroke();\r\n };\r\n\r\n /**\r\n * Clears the specified pixels within a given rectangle\r\n *\r\n * @name clearRect\r\n * @function\r\n * @param x {Number} The x-coordinate of the upper-left corner of the rectangle\r\n * @param y {Number} The y-coordinate of the upper-left corner of the rectangle\r\n * @param w {Number} The width of the rectangle to clear, in pixels\r\n * @param h {Number} The height of the rectangle to clear, in pixels\r\n * @description We cannot clear PDF commands that were already written to PDF, so we use white instead.
    \r\n * As a special case, read a special flag (ignoreClearRect) and do nothing if it is set.\r\n * This results in all calls to clearRect() to do nothing, and keep the canvas transparent.\r\n * This flag is stored in the save/restore context and is managed the same way as other drawing states.\r\n *\r\n */\r\n Context2D.prototype.clearRect = function(x, y, w, h) {\r\n if (isNaN(x) || isNaN(y) || isNaN(w) || isNaN(h)) {\r\n console.error(\"jsPDF.context2d.clearRect: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.clearRect\");\r\n }\r\n if (this.ignoreClearRect) {\r\n return;\r\n }\r\n\r\n this.fillStyle = \"#ffffff\";\r\n this.fillRect(x, y, w, h);\r\n };\r\n\r\n /**\r\n * Saves the state of the current context\r\n *\r\n * @name save\r\n * @function\r\n */\r\n Context2D.prototype.save = function(doStackPush) {\r\n doStackPush = typeof doStackPush === \"boolean\" ? doStackPush : true;\r\n var tmpPageNumber = this.pdf.internal.getCurrentPageInfo().pageNumber;\r\n for (var i = 0; i < this.pdf.internal.getNumberOfPages(); i++) {\r\n this.pdf.setPage(i + 1);\r\n this.pdf.internal.out(\"q\");\r\n }\r\n this.pdf.setPage(tmpPageNumber);\r\n\r\n if (doStackPush) {\r\n this.ctx.fontSize = this.pdf.internal.getFontSize();\r\n var ctx = new ContextLayer(this.ctx);\r\n this.ctxStack.push(this.ctx);\r\n this.ctx = ctx;\r\n }\r\n };\r\n\r\n /**\r\n * Returns previously saved path state and attributes\r\n *\r\n * @name restore\r\n * @function\r\n */\r\n Context2D.prototype.restore = function(doStackPop) {\r\n doStackPop = typeof doStackPop === \"boolean\" ? doStackPop : true;\r\n var tmpPageNumber = this.pdf.internal.getCurrentPageInfo().pageNumber;\r\n for (var i = 0; i < this.pdf.internal.getNumberOfPages(); i++) {\r\n this.pdf.setPage(i + 1);\r\n this.pdf.internal.out(\"Q\");\r\n }\r\n this.pdf.setPage(tmpPageNumber);\r\n\r\n if (doStackPop && this.ctxStack.length !== 0) {\r\n this.ctx = this.ctxStack.pop();\r\n this.fillStyle = this.ctx.fillStyle;\r\n this.strokeStyle = this.ctx.strokeStyle;\r\n this.font = this.ctx.font;\r\n this.lineCap = this.ctx.lineCap;\r\n this.lineWidth = this.ctx.lineWidth;\r\n this.lineJoin = this.ctx.lineJoin;\r\n this.lineDash = this.ctx.lineDash;\r\n this.lineDashOffset = this.ctx.lineDashOffset;\r\n }\r\n };\r\n\r\n /**\r\n * @name toDataURL\r\n * @function\r\n */\r\n Context2D.prototype.toDataURL = function() {\r\n throw new Error(\"toDataUrl not implemented.\");\r\n };\r\n\r\n //helper functions\r\n\r\n /**\r\n * Get the decimal values of r, g, b and a\r\n *\r\n * @name getRGBA\r\n * @function\r\n * @private\r\n * @ignore\r\n */\r\n var getRGBA = function(style) {\r\n var rxRgb = /rgb\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\)/;\r\n var rxRgba = /rgba\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*([\\d.]+)\\s*\\)/;\r\n var rxTransparent = /transparent|rgba\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*0+\\s*\\)/;\r\n\r\n var r, g, b, a;\r\n\r\n if (style.isCanvasGradient === true) {\r\n style = style.getColor();\r\n }\r\n\r\n if (!style) {\r\n return { r: 0, g: 0, b: 0, a: 0, style: style };\r\n }\r\n\r\n if (rxTransparent.test(style)) {\r\n r = 0;\r\n g = 0;\r\n b = 0;\r\n a = 0;\r\n } else {\r\n var matches = rxRgb.exec(style);\r\n if (matches !== null) {\r\n r = parseInt(matches[1]);\r\n g = parseInt(matches[2]);\r\n b = parseInt(matches[3]);\r\n a = 1;\r\n } else {\r\n matches = rxRgba.exec(style);\r\n if (matches !== null) {\r\n r = parseInt(matches[1]);\r\n g = parseInt(matches[2]);\r\n b = parseInt(matches[3]);\r\n a = parseFloat(matches[4]);\r\n } else {\r\n a = 1;\r\n\r\n if (typeof style === \"string\" && style.charAt(0) !== \"#\") {\r\n var rgbColor = new RGBColor(style);\r\n if (rgbColor.ok) {\r\n style = rgbColor.toHex();\r\n } else {\r\n style = \"#000000\";\r\n }\r\n }\r\n\r\n if (style.length === 4) {\r\n r = style.substring(1, 2);\r\n r += r;\r\n g = style.substring(2, 3);\r\n g += g;\r\n b = style.substring(3, 4);\r\n b += b;\r\n } else {\r\n r = style.substring(1, 3);\r\n g = style.substring(3, 5);\r\n b = style.substring(5, 7);\r\n }\r\n r = parseInt(r, 16);\r\n g = parseInt(g, 16);\r\n b = parseInt(b, 16);\r\n }\r\n }\r\n }\r\n return { r: r, g: g, b: b, a: a, style: style };\r\n };\r\n\r\n /**\r\n * @name isFillTransparent\r\n * @function\r\n * @private\r\n * @ignore\r\n * @returns {Boolean}\r\n */\r\n var isFillTransparent = function() {\r\n return this.ctx.isFillTransparent || this.globalAlpha == 0;\r\n };\r\n\r\n /**\r\n * @name isStrokeTransparent\r\n * @function\r\n * @private\r\n * @ignore\r\n * @returns {Boolean}\r\n */\r\n var isStrokeTransparent = function() {\r\n return Boolean(this.ctx.isStrokeTransparent || this.globalAlpha == 0);\r\n };\r\n\r\n /**\r\n * Draws \"filled\" text on the canvas\r\n *\r\n * @name fillText\r\n * @function\r\n * @param text {String} Specifies the text that will be written on the canvas\r\n * @param x {Number} The x coordinate where to start painting the text (relative to the canvas)\r\n * @param y {Number} The y coordinate where to start painting the text (relative to the canvas)\r\n * @param maxWidth {Number} Optional. The maximum allowed width of the text, in pixels\r\n * @description The fillText() method draws filled text on the canvas. The default color of the text is black.\r\n */\r\n Context2D.prototype.fillText = function(text, x, y, maxWidth) {\r\n if (isNaN(x) || isNaN(y) || typeof text !== \"string\") {\r\n console.error(\"jsPDF.context2d.fillText: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.fillText\");\r\n }\r\n maxWidth = isNaN(maxWidth) ? undefined : maxWidth;\r\n if (isFillTransparent.call(this)) {\r\n return;\r\n }\r\n\r\n var degs = rad2deg(this.ctx.transform.rotation);\r\n\r\n // We only use X axis as scale hint\r\n var scale = this.ctx.transform.scaleX;\r\n\r\n putText.call(this, {\r\n text: text,\r\n x: x,\r\n y: y,\r\n scale: scale,\r\n angle: degs,\r\n align: this.textAlign,\r\n maxWidth: maxWidth\r\n });\r\n };\r\n\r\n /**\r\n * Draws text on the canvas (no fill)\r\n *\r\n * @name strokeText\r\n * @function\r\n * @param text {String} Specifies the text that will be written on the canvas\r\n * @param x {Number} The x coordinate where to start painting the text (relative to the canvas)\r\n * @param y {Number} The y coordinate where to start painting the text (relative to the canvas)\r\n * @param maxWidth {Number} Optional. The maximum allowed width of the text, in pixels\r\n * @description The strokeText() method draws text (with no fill) on the canvas. The default color of the text is black.\r\n */\r\n Context2D.prototype.strokeText = function(text, x, y, maxWidth) {\r\n if (isNaN(x) || isNaN(y) || typeof text !== \"string\") {\r\n console.error(\"jsPDF.context2d.strokeText: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.strokeText\");\r\n }\r\n if (isStrokeTransparent.call(this)) {\r\n return;\r\n }\r\n\r\n maxWidth = isNaN(maxWidth) ? undefined : maxWidth;\r\n\r\n var degs = rad2deg(this.ctx.transform.rotation);\r\n var scale = this.ctx.transform.scaleX;\r\n\r\n putText.call(this, {\r\n text: text,\r\n x: x,\r\n y: y,\r\n scale: scale,\r\n renderingMode: \"stroke\",\r\n angle: degs,\r\n align: this.textAlign,\r\n maxWidth: maxWidth\r\n });\r\n };\r\n\r\n /**\r\n * Returns an object that contains the width of the specified text\r\n *\r\n * @name measureText\r\n * @function\r\n * @param text {String} The text to be measured\r\n * @description The measureText() method returns an object that contains the width of the specified text, in pixels.\r\n * @returns {Number}\r\n */\r\n Context2D.prototype.measureText = function(text) {\r\n if (typeof text !== \"string\") {\r\n console.error(\r\n \"jsPDF.context2d.measureText: Invalid arguments\",\r\n arguments\r\n );\r\n throw new Error(\r\n \"Invalid arguments passed to jsPDF.context2d.measureText\"\r\n );\r\n }\r\n var pdf = this.pdf;\r\n var k = this.pdf.internal.scaleFactor;\r\n\r\n var fontSize = pdf.internal.getFontSize();\r\n var txtWidth =\r\n (pdf.getStringUnitWidth(text) * fontSize) / pdf.internal.scaleFactor;\r\n txtWidth *= Math.round(((k * 96) / 72) * 10000) / 10000;\r\n\r\n var TextMetrics = function(options) {\r\n options = options || {};\r\n var _width = options.width || 0;\r\n Object.defineProperty(this, \"width\", {\r\n get: function() {\r\n return _width;\r\n }\r\n });\r\n return this;\r\n };\r\n return new TextMetrics({ width: txtWidth });\r\n };\r\n\r\n //Transformations\r\n\r\n /**\r\n * Scales the current drawing bigger or smaller\r\n *\r\n * @name scale\r\n * @function\r\n * @param scalewidth {Number} Scales the width of the current drawing (1=100%, 0.5=50%, 2=200%, etc.)\r\n * @param scaleheight {Number} Scales the height of the current drawing (1=100%, 0.5=50%, 2=200%, etc.)\r\n * @description The scale() method scales the current drawing, bigger or smaller.\r\n */\r\n Context2D.prototype.scale = function(scalewidth, scaleheight) {\r\n if (isNaN(scalewidth) || isNaN(scaleheight)) {\r\n console.error(\"jsPDF.context2d.scale: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.scale\");\r\n }\r\n var matrix = new Matrix(scalewidth, 0.0, 0.0, scaleheight, 0.0, 0.0);\r\n this.ctx.transform = this.ctx.transform.multiply(matrix);\r\n };\r\n\r\n /**\r\n * Rotates the current drawing\r\n *\r\n * @name rotate\r\n * @function\r\n * @param angle {Number} The rotation angle, in radians.\r\n * @description To calculate from degrees to radians: degrees*Math.PI/180.
    \r\n * Example: to rotate 5 degrees, specify the following: 5*Math.PI/180\r\n */\r\n Context2D.prototype.rotate = function(angle) {\r\n if (isNaN(angle)) {\r\n console.error(\"jsPDF.context2d.rotate: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.rotate\");\r\n }\r\n var matrix = new Matrix(\r\n Math.cos(angle),\r\n Math.sin(angle),\r\n -Math.sin(angle),\r\n Math.cos(angle),\r\n 0.0,\r\n 0.0\r\n );\r\n this.ctx.transform = this.ctx.transform.multiply(matrix);\r\n };\r\n\r\n /**\r\n * Remaps the (0,0) position on the canvas\r\n *\r\n * @name translate\r\n * @function\r\n * @param x {Number} The value to add to horizontal (x) coordinates\r\n * @param y {Number} The value to add to vertical (y) coordinates\r\n * @description The translate() method remaps the (0,0) position on the canvas.\r\n */\r\n Context2D.prototype.translate = function(x, y) {\r\n if (isNaN(x) || isNaN(y)) {\r\n console.error(\"jsPDF.context2d.translate: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.translate\");\r\n }\r\n var matrix = new Matrix(1.0, 0.0, 0.0, 1.0, x, y);\r\n this.ctx.transform = this.ctx.transform.multiply(matrix);\r\n };\r\n\r\n /**\r\n * Replaces the current transformation matrix for the drawing\r\n *\r\n * @name transform\r\n * @function\r\n * @param a {Number} Horizontal scaling\r\n * @param b {Number} Horizontal skewing\r\n * @param c {Number} Vertical skewing\r\n * @param d {Number} Vertical scaling\r\n * @param e {Number} Horizontal moving\r\n * @param f {Number} Vertical moving\r\n * @description Each object on the canvas has a current transformation matrix.

    The transform() method replaces the current transformation matrix. It multiplies the current transformation matrix with the matrix described by:



    a c e

    b d f

    0 0 1

    In other words, the transform() method lets you scale, rotate, move, and skew the current context.\r\n */\r\n Context2D.prototype.transform = function(a, b, c, d, e, f) {\r\n if (isNaN(a) || isNaN(b) || isNaN(c) || isNaN(d) || isNaN(e) || isNaN(f)) {\r\n console.error(\"jsPDF.context2d.transform: Invalid arguments\", arguments);\r\n throw new Error(\"Invalid arguments passed to jsPDF.context2d.transform\");\r\n }\r\n var matrix = new Matrix(a, b, c, d, e, f);\r\n this.ctx.transform = this.ctx.transform.multiply(matrix);\r\n };\r\n\r\n /**\r\n * Resets the current transform to the identity matrix. Then runs transform()\r\n *\r\n * @name setTransform\r\n * @function\r\n * @param a {Number} Horizontal scaling\r\n * @param b {Number} Horizontal skewing\r\n * @param c {Number} Vertical skewing\r\n * @param d {Number} Vertical scaling\r\n * @param e {Number} Horizontal moving\r\n * @param f {Number} Vertical moving\r\n * @description Each object on the canvas has a current transformation matrix.

    The setTransform() method resets the current transform to the identity matrix, and then runs transform() with the same arguments.

    In other words, the setTransform() method lets you scale, rotate, move, and skew the current context.\r\n */\r\n Context2D.prototype.setTransform = function(a, b, c, d, e, f) {\r\n a = isNaN(a) ? 1 : a;\r\n b = isNaN(b) ? 0 : b;\r\n c = isNaN(c) ? 0 : c;\r\n d = isNaN(d) ? 1 : d;\r\n e = isNaN(e) ? 0 : e;\r\n f = isNaN(f) ? 0 : f;\r\n this.ctx.transform = new Matrix(a, b, c, d, e, f);\r\n };\r\n\r\n /**\r\n * Should only be used if pageWrapYEnabled is true\r\n *\r\n * @name setPageByYPosition\r\n * @function\r\n * @private\r\n * @ignore\r\n * @returns One-based Page Number\r\n */\r\n var setPageByYPosition = function(y) {\r\n if (this.pageWrapYEnabled) {\r\n this.lastBreak = 0;\r\n var manualBreaks = 0;\r\n var autoBreaks = 0;\r\n for (var i = 0; i < this.pageBreaks.length; i++) {\r\n if (y >= this.pageBreaks[i]) {\r\n manualBreaks++;\r\n if (this.lastBreak === 0) {\r\n autoBreaks++;\r\n }\r\n var spaceBetweenLastBreak = this.pageBreaks[i] - this.lastBreak;\r\n this.lastBreak = this.pageBreaks[i];\r\n var pagesSinceLastBreak = Math.floor(\r\n spaceBetweenLastBreak / this.pageWrapY\r\n );\r\n autoBreaks += pagesSinceLastBreak;\r\n }\r\n }\r\n if (this.lastBreak === 0) {\r\n var pagesSinceLastBreak = Math.floor(y / this.pageWrapY) + 1;\r\n autoBreaks += pagesSinceLastBreak;\r\n }\r\n return autoBreaks + manualBreaks;\r\n } else {\r\n return this.pdf.internal.getCurrentPageInfo().pageNumber;\r\n }\r\n };\r\n\r\n var hasMargins = function() {\r\n return (\r\n this.margin[0] > 0 ||\r\n this.margin[1] > 0 ||\r\n this.margin[2] > 0 ||\r\n this.margin[3] > 0\r\n );\r\n };\r\n\r\n /**\r\n * Draws an image, canvas, or video onto the canvas\r\n *\r\n * @function\r\n * @param img {} Specifies the image, canvas, or video element to use\r\n * @param sx {Number} Optional. The x coordinate where to start clipping\r\n * @param sy {Number} Optional. The y coordinate where to start clipping\r\n * @param swidth {Number} Optional. The width of the clipped image\r\n * @param sheight {Number} Optional. The height of the clipped image\r\n * @param x {Number} The x coordinate where to place the image on the canvas\r\n * @param y {Number} The y coordinate where to place the image on the canvas\r\n * @param width {Number} Optional. The width of the image to use (stretch or reduce the image)\r\n * @param height {Number} Optional. The height of the image to use (stretch or reduce the image)\r\n */\r\n Context2D.prototype.drawImage = function(\r\n img,\r\n sx,\r\n sy,\r\n swidth,\r\n sheight,\r\n x,\r\n y,\r\n width,\r\n height\r\n ) {\r\n var imageProperties = this.pdf.getImageProperties(img);\r\n var factorX = 1;\r\n var factorY = 1;\r\n var isClip;\r\n\r\n var clipFactorX = 1;\r\n var clipFactorY = 1;\r\n\r\n if (typeof swidth !== \"undefined\" && typeof width !== \"undefined\") {\r\n isClip = true;\r\n clipFactorX = width / swidth;\r\n clipFactorY = height / sheight;\r\n factorX = ((imageProperties.width / swidth) * width) / swidth;\r\n factorY = ((imageProperties.height / sheight) * height) / sheight;\r\n }\r\n\r\n //is sx and sy are set and x and y not, set x and y with values of sx and sy\r\n if (typeof x === \"undefined\") {\r\n x = sx;\r\n y = sy;\r\n sx = 0;\r\n sy = 0;\r\n }\r\n\r\n if (typeof swidth !== \"undefined\" && typeof width === \"undefined\") {\r\n width = swidth;\r\n height = sheight;\r\n }\r\n if (typeof swidth === \"undefined\" && typeof width === \"undefined\") {\r\n width = imageProperties.width;\r\n height = imageProperties.height;\r\n }\r\n\r\n var decomposedTransformationMatrix = this.ctx.transform.decompose();\r\n var angle = rad2deg(decomposedTransformationMatrix.rotate.shx);\r\n var matrix = new Matrix();\r\n matrix = matrix.multiply(decomposedTransformationMatrix.translate);\r\n matrix = matrix.multiply(decomposedTransformationMatrix.skew);\r\n matrix = matrix.multiply(decomposedTransformationMatrix.scale);\r\n var xRect = matrix.applyToRectangle(\r\n new Rectangle(\r\n x - sx * clipFactorX,\r\n y - sy * clipFactorY,\r\n swidth * factorX,\r\n sheight * factorY\r\n )\r\n );\r\n var pageArray = getPagesByPath.call(this, xRect);\r\n var pages = [];\r\n for (var ii = 0; ii < pageArray.length; ii += 1) {\r\n if (pages.indexOf(pageArray[ii]) === -1) {\r\n pages.push(pageArray[ii]);\r\n }\r\n }\r\n\r\n sortPages(pages);\r\n\r\n var clipPath;\r\n if (this.autoPaging) {\r\n var min = pages[0];\r\n var max = pages[pages.length - 1];\r\n for (var i = min; i < max + 1; i++) {\r\n this.pdf.setPage(i);\r\n\r\n var pageWidthMinusMargins =\r\n this.pdf.internal.pageSize.width - this.margin[3] - this.margin[1];\r\n var topMargin = i === 1 ? this.posY + this.margin[0] : this.margin[0];\r\n var firstPageHeight =\r\n this.pdf.internal.pageSize.height -\r\n this.posY -\r\n this.margin[0] -\r\n this.margin[2];\r\n var pageHeightMinusMargins =\r\n this.pdf.internal.pageSize.height - this.margin[0] - this.margin[2];\r\n var previousPageHeightSum =\r\n i === 1 ? 0 : firstPageHeight + (i - 2) * pageHeightMinusMargins;\r\n\r\n if (this.ctx.clip_path.length !== 0) {\r\n var tmpPaths = this.path;\r\n clipPath = JSON.parse(JSON.stringify(this.ctx.clip_path));\r\n this.path = pathPositionRedo(\r\n clipPath,\r\n this.posX + this.margin[3],\r\n -previousPageHeightSum + topMargin + this.ctx.prevPageLastElemOffset\r\n );\r\n drawPaths.call(this, \"fill\", true);\r\n this.path = tmpPaths;\r\n }\r\n var tmpRect = JSON.parse(JSON.stringify(xRect));\r\n tmpRect = pathPositionRedo(\r\n [tmpRect],\r\n this.posX + this.margin[3],\r\n -previousPageHeightSum + topMargin + this.ctx.prevPageLastElemOffset\r\n )[0];\r\n\r\n const needsClipping = (i > min || i < max) && hasMargins.call(this);\r\n\r\n if (needsClipping) {\r\n this.pdf.saveGraphicsState();\r\n this.pdf\r\n .rect(\r\n this.margin[3],\r\n this.margin[0],\r\n pageWidthMinusMargins,\r\n pageHeightMinusMargins,\r\n null\r\n )\r\n .clip()\r\n .discardPath();\r\n }\r\n this.pdf.addImage(\r\n img,\r\n \"JPEG\",\r\n tmpRect.x,\r\n tmpRect.y,\r\n tmpRect.w,\r\n tmpRect.h,\r\n null,\r\n null,\r\n angle\r\n );\r\n if (needsClipping) {\r\n this.pdf.restoreGraphicsState();\r\n }\r\n }\r\n } else {\r\n this.pdf.addImage(\r\n img,\r\n \"JPEG\",\r\n xRect.x,\r\n xRect.y,\r\n xRect.w,\r\n xRect.h,\r\n null,\r\n null,\r\n angle\r\n );\r\n }\r\n };\r\n\r\n var getPagesByPath = function(path, pageWrapX, pageWrapY) {\r\n var result = [];\r\n pageWrapX = pageWrapX || this.pdf.internal.pageSize.width;\r\n pageWrapY =\r\n pageWrapY ||\r\n this.pdf.internal.pageSize.height - this.margin[0] - this.margin[2];\r\n var yOffset = this.posY + this.ctx.prevPageLastElemOffset;\r\n\r\n switch (path.type) {\r\n default:\r\n case \"mt\":\r\n case \"lt\":\r\n result.push(Math.floor((path.y + yOffset) / pageWrapY) + 1);\r\n break;\r\n case \"arc\":\r\n result.push(\r\n Math.floor((path.y + yOffset - path.radius) / pageWrapY) + 1\r\n );\r\n result.push(\r\n Math.floor((path.y + yOffset + path.radius) / pageWrapY) + 1\r\n );\r\n break;\r\n case \"qct\":\r\n var rectOfQuadraticCurve = getQuadraticCurveBoundary(\r\n this.ctx.lastPoint.x,\r\n this.ctx.lastPoint.y,\r\n path.x1,\r\n path.y1,\r\n path.x,\r\n path.y\r\n );\r\n result.push(\r\n Math.floor((rectOfQuadraticCurve.y + yOffset) / pageWrapY) + 1\r\n );\r\n result.push(\r\n Math.floor(\r\n (rectOfQuadraticCurve.y + rectOfQuadraticCurve.h + yOffset) /\r\n pageWrapY\r\n ) + 1\r\n );\r\n break;\r\n case \"bct\":\r\n var rectOfBezierCurve = getBezierCurveBoundary(\r\n this.ctx.lastPoint.x,\r\n this.ctx.lastPoint.y,\r\n path.x1,\r\n path.y1,\r\n path.x2,\r\n path.y2,\r\n path.x,\r\n path.y\r\n );\r\n result.push(\r\n Math.floor((rectOfBezierCurve.y + yOffset) / pageWrapY) + 1\r\n );\r\n result.push(\r\n Math.floor(\r\n (rectOfBezierCurve.y + rectOfBezierCurve.h + yOffset) / pageWrapY\r\n ) + 1\r\n );\r\n break;\r\n case \"rect\":\r\n result.push(Math.floor((path.y + yOffset) / pageWrapY) + 1);\r\n result.push(Math.floor((path.y + path.h + yOffset) / pageWrapY) + 1);\r\n }\r\n\r\n for (var i = 0; i < result.length; i += 1) {\r\n while (this.pdf.internal.getNumberOfPages() < result[i]) {\r\n addPage.call(this);\r\n }\r\n }\r\n return result;\r\n };\r\n\r\n var addPage = function() {\r\n var fillStyle = this.fillStyle;\r\n var strokeStyle = this.strokeStyle;\r\n var font = this.font;\r\n var lineCap = this.lineCap;\r\n var lineWidth = this.lineWidth;\r\n var lineJoin = this.lineJoin;\r\n this.pdf.addPage();\r\n this.fillStyle = fillStyle;\r\n this.strokeStyle = strokeStyle;\r\n this.font = font;\r\n this.lineCap = lineCap;\r\n this.lineWidth = lineWidth;\r\n this.lineJoin = lineJoin;\r\n };\r\n\r\n var pathPositionRedo = function(paths, x, y) {\r\n for (var i = 0; i < paths.length; i++) {\r\n switch (paths[i].type) {\r\n case \"bct\":\r\n paths[i].x2 += x;\r\n paths[i].y2 += y;\r\n case \"qct\":\r\n paths[i].x1 += x;\r\n paths[i].y1 += y;\r\n case \"mt\":\r\n case \"lt\":\r\n case \"arc\":\r\n default:\r\n paths[i].x += x;\r\n paths[i].y += y;\r\n }\r\n }\r\n return paths;\r\n };\r\n\r\n var sortPages = function(pages) {\r\n return pages.sort(function(a, b) {\r\n return a - b;\r\n });\r\n };\r\n\r\n var pathPreProcess = function(rule, isClip) {\r\n var fillStyle = this.fillStyle;\r\n var strokeStyle = this.strokeStyle;\r\n var lineCap = this.lineCap;\r\n var oldLineWidth = this.lineWidth;\r\n var lineWidth = Math.abs(oldLineWidth * this.ctx.transform.scaleX);\r\n var lineJoin = this.lineJoin;\r\n\r\n var origPath = JSON.parse(JSON.stringify(this.path));\r\n var xPath = JSON.parse(JSON.stringify(this.path));\r\n var clipPath;\r\n var tmpPath;\r\n var pages = [];\r\n\r\n for (var i = 0; i < xPath.length; i++) {\r\n if (typeof xPath[i].x !== \"undefined\") {\r\n var page = getPagesByPath.call(this, xPath[i]);\r\n\r\n for (var ii = 0; ii < page.length; ii += 1) {\r\n if (pages.indexOf(page[ii]) === -1) {\r\n pages.push(page[ii]);\r\n }\r\n }\r\n }\r\n }\r\n\r\n for (var j = 0; j < pages.length; j++) {\r\n while (this.pdf.internal.getNumberOfPages() < pages[j]) {\r\n addPage.call(this);\r\n }\r\n }\r\n sortPages(pages);\r\n\r\n if (this.autoPaging) {\r\n var min = pages[0];\r\n var max = pages[pages.length - 1];\r\n for (var k = min; k < max + 1; k++) {\r\n this.pdf.setPage(k);\r\n\r\n this.fillStyle = fillStyle;\r\n this.strokeStyle = strokeStyle;\r\n this.lineCap = lineCap;\r\n this.lineWidth = lineWidth;\r\n this.lineJoin = lineJoin;\r\n\r\n var pageWidthMinusMargins =\r\n this.pdf.internal.pageSize.width - this.margin[3] - this.margin[1];\r\n var topMargin = k === 1 ? this.posY + this.margin[0] : this.margin[0];\r\n var firstPageHeight =\r\n this.pdf.internal.pageSize.height -\r\n this.posY -\r\n this.margin[0] -\r\n this.margin[2];\r\n var pageHeightMinusMargins =\r\n this.pdf.internal.pageSize.height - this.margin[0] - this.margin[2];\r\n var previousPageHeightSum =\r\n k === 1 ? 0 : firstPageHeight + (k - 2) * pageHeightMinusMargins;\r\n\r\n if (this.ctx.clip_path.length !== 0) {\r\n var tmpPaths = this.path;\r\n clipPath = JSON.parse(JSON.stringify(this.ctx.clip_path));\r\n this.path = pathPositionRedo(\r\n clipPath,\r\n this.posX + this.margin[3],\r\n -previousPageHeightSum + topMargin + this.ctx.prevPageLastElemOffset\r\n );\r\n drawPaths.call(this, rule, true);\r\n this.path = tmpPaths;\r\n }\r\n tmpPath = JSON.parse(JSON.stringify(origPath));\r\n this.path = pathPositionRedo(\r\n tmpPath,\r\n this.posX + this.margin[3],\r\n -previousPageHeightSum + topMargin + this.ctx.prevPageLastElemOffset\r\n );\r\n if (isClip === false || k === 0) {\r\n const needsClipping = (k > min || k < max) && hasMargins.call(this);\r\n if (needsClipping) {\r\n this.pdf.saveGraphicsState();\r\n this.pdf\r\n .rect(\r\n this.margin[3],\r\n this.margin[0],\r\n pageWidthMinusMargins,\r\n pageHeightMinusMargins,\r\n null\r\n )\r\n .clip()\r\n .discardPath();\r\n }\r\n drawPaths.call(this, rule, isClip);\r\n if (needsClipping) {\r\n this.pdf.restoreGraphicsState();\r\n }\r\n }\r\n this.lineWidth = oldLineWidth;\r\n }\r\n } else {\r\n this.lineWidth = lineWidth;\r\n drawPaths.call(this, rule, isClip);\r\n this.lineWidth = oldLineWidth;\r\n }\r\n this.path = origPath;\r\n };\r\n\r\n /**\r\n * Processes the paths\r\n *\r\n * @function\r\n * @param rule {String}\r\n * @param isClip {Boolean}\r\n * @private\r\n * @ignore\r\n */\r\n var drawPaths = function(rule, isClip) {\r\n if (rule === \"stroke\" && !isClip && isStrokeTransparent.call(this)) {\r\n return;\r\n }\r\n\r\n if (rule !== \"stroke\" && !isClip && isFillTransparent.call(this)) {\r\n return;\r\n }\r\n\r\n var moves = [];\r\n\r\n //var alpha = (this.ctx.fillOpacity < 1) ? this.ctx.fillOpacity : this.ctx.globalAlpha;\r\n var delta;\r\n var xPath = this.path;\r\n for (var i = 0; i < xPath.length; i++) {\r\n var pt = xPath[i];\r\n\r\n switch (pt.type) {\r\n case \"begin\":\r\n moves.push({\r\n begin: true\r\n });\r\n break;\r\n\r\n case \"close\":\r\n moves.push({\r\n close: true\r\n });\r\n break;\r\n\r\n case \"mt\":\r\n moves.push({\r\n start: pt,\r\n deltas: [],\r\n abs: []\r\n });\r\n break;\r\n\r\n case \"lt\":\r\n var iii = moves.length;\r\n if (xPath[i - 1] && !isNaN(xPath[i - 1].x)) {\r\n delta = [pt.x - xPath[i - 1].x, pt.y - xPath[i - 1].y];\r\n if (iii > 0) {\r\n for (iii; iii >= 0; iii--) {\r\n if (\r\n moves[iii - 1].close !== true &&\r\n moves[iii - 1].begin !== true\r\n ) {\r\n moves[iii - 1].deltas.push(delta);\r\n moves[iii - 1].abs.push(pt);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n break;\r\n\r\n case \"bct\":\r\n delta = [\r\n pt.x1 - xPath[i - 1].x,\r\n pt.y1 - xPath[i - 1].y,\r\n pt.x2 - xPath[i - 1].x,\r\n pt.y2 - xPath[i - 1].y,\r\n pt.x - xPath[i - 1].x,\r\n pt.y - xPath[i - 1].y\r\n ];\r\n moves[moves.length - 1].deltas.push(delta);\r\n break;\r\n\r\n case \"qct\":\r\n var x1 = xPath[i - 1].x + (2.0 / 3.0) * (pt.x1 - xPath[i - 1].x);\r\n var y1 = xPath[i - 1].y + (2.0 / 3.0) * (pt.y1 - xPath[i - 1].y);\r\n var x2 = pt.x + (2.0 / 3.0) * (pt.x1 - pt.x);\r\n var y2 = pt.y + (2.0 / 3.0) * (pt.y1 - pt.y);\r\n var x3 = pt.x;\r\n var y3 = pt.y;\r\n delta = [\r\n x1 - xPath[i - 1].x,\r\n y1 - xPath[i - 1].y,\r\n x2 - xPath[i - 1].x,\r\n y2 - xPath[i - 1].y,\r\n x3 - xPath[i - 1].x,\r\n y3 - xPath[i - 1].y\r\n ];\r\n moves[moves.length - 1].deltas.push(delta);\r\n break;\r\n\r\n case \"arc\":\r\n moves.push({\r\n deltas: [],\r\n abs: [],\r\n arc: true\r\n });\r\n\r\n if (Array.isArray(moves[moves.length - 1].abs)) {\r\n moves[moves.length - 1].abs.push(pt);\r\n }\r\n break;\r\n }\r\n }\r\n var style;\r\n if (!isClip) {\r\n if (rule === \"stroke\") {\r\n style = \"stroke\";\r\n } else {\r\n style = \"fill\";\r\n }\r\n } else {\r\n style = null;\r\n }\r\n\r\n var began = false;\r\n for (var k = 0; k < moves.length; k++) {\r\n if (moves[k].arc) {\r\n var arcs = moves[k].abs;\r\n\r\n for (var ii = 0; ii < arcs.length; ii++) {\r\n var arc = arcs[ii];\r\n\r\n if (arc.type === \"arc\") {\r\n drawArc.call(\r\n this,\r\n arc.x,\r\n arc.y,\r\n arc.radius,\r\n arc.startAngle,\r\n arc.endAngle,\r\n arc.counterclockwise,\r\n undefined,\r\n isClip,\r\n !began\r\n );\r\n } else {\r\n drawLine.call(this, arc.x, arc.y);\r\n }\r\n began = true;\r\n }\r\n } else if (moves[k].close === true) {\r\n this.pdf.internal.out(\"h\");\r\n began = false;\r\n } else if (moves[k].begin !== true) {\r\n var x = moves[k].start.x;\r\n var y = moves[k].start.y;\r\n drawLines.call(this, moves[k].deltas, x, y);\r\n began = true;\r\n }\r\n }\r\n\r\n if (style) {\r\n putStyle.call(this, style);\r\n }\r\n if (isClip) {\r\n doClip.call(this);\r\n }\r\n };\r\n\r\n var getBaseline = function(y) {\r\n var height =\r\n this.pdf.internal.getFontSize() / this.pdf.internal.scaleFactor;\r\n var descent = height * (this.pdf.internal.getLineHeightFactor() - 1);\r\n switch (this.ctx.textBaseline) {\r\n case \"bottom\":\r\n return y - descent;\r\n case \"top\":\r\n return y + height - descent;\r\n case \"hanging\":\r\n return y + height - 2 * descent;\r\n case \"middle\":\r\n return y + height / 2 - descent;\r\n case \"ideographic\":\r\n // TODO not implemented\r\n return y;\r\n case \"alphabetic\":\r\n default:\r\n return y;\r\n }\r\n };\r\n\r\n var getTextBottom = function(yBaseLine) {\r\n var height =\r\n this.pdf.internal.getFontSize() / this.pdf.internal.scaleFactor;\r\n var descent = height * (this.pdf.internal.getLineHeightFactor() - 1);\r\n return yBaseLine + descent;\r\n };\r\n\r\n Context2D.prototype.createLinearGradient = function createLinearGradient() {\r\n var canvasGradient = function canvasGradient() {};\r\n\r\n canvasGradient.colorStops = [];\r\n canvasGradient.addColorStop = function(offset, color) {\r\n this.colorStops.push([offset, color]);\r\n };\r\n\r\n canvasGradient.getColor = function() {\r\n if (this.colorStops.length === 0) {\r\n return \"#000000\";\r\n }\r\n\r\n return this.colorStops[0][1];\r\n };\r\n\r\n canvasGradient.isCanvasGradient = true;\r\n return canvasGradient;\r\n };\r\n Context2D.prototype.createPattern = function createPattern() {\r\n return this.createLinearGradient();\r\n };\r\n Context2D.prototype.createRadialGradient = function createRadialGradient() {\r\n return this.createLinearGradient();\r\n };\r\n\r\n /**\r\n *\r\n * @param x Edge point X\r\n * @param y Edge point Y\r\n * @param r Radius\r\n * @param a1 start angle\r\n * @param a2 end angle\r\n * @param counterclockwise\r\n * @param style\r\n * @param isClip\r\n */\r\n var drawArc = function(\r\n x,\r\n y,\r\n r,\r\n a1,\r\n a2,\r\n counterclockwise,\r\n style,\r\n isClip,\r\n includeMove\r\n ) {\r\n // http://hansmuller-flex.blogspot.com/2011/10/more-about-approximating-circular-arcs.html\r\n var curves = createArc.call(this, r, a1, a2, counterclockwise);\r\n\r\n for (var i = 0; i < curves.length; i++) {\r\n var curve = curves[i];\r\n if (i === 0) {\r\n if (includeMove) {\r\n doMove.call(this, curve.x1 + x, curve.y1 + y);\r\n } else {\r\n drawLine.call(this, curve.x1 + x, curve.y1 + y);\r\n }\r\n }\r\n drawCurve.call(\r\n this,\r\n x,\r\n y,\r\n curve.x2,\r\n curve.y2,\r\n curve.x3,\r\n curve.y3,\r\n curve.x4,\r\n curve.y4\r\n );\r\n }\r\n\r\n if (!isClip) {\r\n putStyle.call(this, style);\r\n } else {\r\n doClip.call(this);\r\n }\r\n };\r\n\r\n var putStyle = function(style) {\r\n switch (style) {\r\n case \"stroke\":\r\n this.pdf.internal.out(\"S\");\r\n break;\r\n case \"fill\":\r\n this.pdf.internal.out(\"f\");\r\n break;\r\n }\r\n };\r\n\r\n var doClip = function() {\r\n this.pdf.clip();\r\n this.pdf.discardPath();\r\n };\r\n\r\n var doMove = function(x, y) {\r\n this.pdf.internal.out(\r\n getHorizontalCoordinateString(x) +\r\n \" \" +\r\n getVerticalCoordinateString(y) +\r\n \" m\"\r\n );\r\n };\r\n\r\n var putText = function(options) {\r\n var textAlign;\r\n switch (options.align) {\r\n case \"right\":\r\n case \"end\":\r\n textAlign = \"right\";\r\n break;\r\n case \"center\":\r\n textAlign = \"center\";\r\n break;\r\n case \"left\":\r\n case \"start\":\r\n default:\r\n textAlign = \"left\";\r\n break;\r\n }\r\n\r\n var textDimensions = this.pdf.getTextDimensions(options.text);\r\n var yBaseLine = getBaseline.call(this, options.y);\r\n var yBottom = getTextBottom.call(this, yBaseLine);\r\n var yTop = yBottom - textDimensions.h;\r\n\r\n var pt = this.ctx.transform.applyToPoint(new Point(options.x, yBaseLine));\r\n var decomposedTransformationMatrix = this.ctx.transform.decompose();\r\n var matrix = new Matrix();\r\n matrix = matrix.multiply(decomposedTransformationMatrix.translate);\r\n matrix = matrix.multiply(decomposedTransformationMatrix.skew);\r\n matrix = matrix.multiply(decomposedTransformationMatrix.scale);\r\n\r\n var baselineRect = this.ctx.transform.applyToRectangle(\r\n new Rectangle(options.x, yBaseLine, textDimensions.w, textDimensions.h)\r\n );\r\n var textBounds = matrix.applyToRectangle(\r\n new Rectangle(options.x, yTop, textDimensions.w, textDimensions.h)\r\n );\r\n var pageArray = getPagesByPath.call(this, textBounds);\r\n var pages = [];\r\n for (var ii = 0; ii < pageArray.length; ii += 1) {\r\n if (pages.indexOf(pageArray[ii]) === -1) {\r\n pages.push(pageArray[ii]);\r\n }\r\n }\r\n\r\n sortPages(pages);\r\n\r\n var clipPath, oldSize, oldLineWidth;\r\n if (this.autoPaging) {\r\n var min = pages[0];\r\n var max = pages[pages.length - 1];\r\n for (var i = min; i < max + 1; i++) {\r\n this.pdf.setPage(i);\r\n\r\n var topMargin = i === 1 ? this.posY + this.margin[0] : this.margin[0];\r\n var firstPageHeight =\r\n this.pdf.internal.pageSize.height -\r\n this.posY -\r\n this.margin[0] -\r\n this.margin[2];\r\n var pageHeightMinusBottomMargin =\r\n this.pdf.internal.pageSize.height - this.margin[2];\r\n var pageHeightMinusMargins =\r\n pageHeightMinusBottomMargin - this.margin[0];\r\n var pageWidthMinusRightMargin =\r\n this.pdf.internal.pageSize.width - this.margin[1];\r\n var pageWidthMinusMargins = pageWidthMinusRightMargin - this.margin[3];\r\n var previousPageHeightSum =\r\n i === 1 ? 0 : firstPageHeight + (i - 2) * pageHeightMinusMargins;\r\n\r\n if (this.ctx.clip_path.length !== 0) {\r\n var tmpPaths = this.path;\r\n clipPath = JSON.parse(JSON.stringify(this.ctx.clip_path));\r\n this.path = pathPositionRedo(\r\n clipPath,\r\n this.posX + this.margin[3],\r\n -1 * previousPageHeightSum + topMargin\r\n );\r\n drawPaths.call(this, \"fill\", true);\r\n this.path = tmpPaths;\r\n }\r\n var textBoundsOnPage = pathPositionRedo(\r\n [JSON.parse(JSON.stringify(textBounds))],\r\n this.posX + this.margin[3],\r\n -previousPageHeightSum + topMargin + this.ctx.prevPageLastElemOffset\r\n )[0];\r\n\r\n if (options.scale >= 0.01) {\r\n oldSize = this.pdf.internal.getFontSize();\r\n this.pdf.setFontSize(oldSize * options.scale);\r\n oldLineWidth = this.lineWidth;\r\n this.lineWidth = oldLineWidth * options.scale;\r\n }\r\n\r\n var doSlice = this.autoPaging !== \"text\";\r\n\r\n if (\r\n doSlice ||\r\n textBoundsOnPage.y + textBoundsOnPage.h <= pageHeightMinusBottomMargin\r\n ) {\r\n if (\r\n doSlice ||\r\n (textBoundsOnPage.y >= topMargin &&\r\n textBoundsOnPage.x <= pageWidthMinusRightMargin)\r\n ) {\r\n var croppedText = doSlice\r\n ? options.text\r\n : this.pdf.splitTextToSize(\r\n options.text,\r\n options.maxWidth ||\r\n pageWidthMinusRightMargin - textBoundsOnPage.x\r\n )[0];\r\n var baseLineRectOnPage = pathPositionRedo(\r\n [JSON.parse(JSON.stringify(baselineRect))],\r\n this.posX + this.margin[3],\r\n -previousPageHeightSum +\r\n topMargin +\r\n this.ctx.prevPageLastElemOffset\r\n )[0];\r\n\r\n const needsClipping =\r\n doSlice && (i > min || i < max) && hasMargins.call(this);\r\n\r\n if (needsClipping) {\r\n this.pdf.saveGraphicsState();\r\n this.pdf\r\n .rect(\r\n this.margin[3],\r\n this.margin[0],\r\n pageWidthMinusMargins,\r\n pageHeightMinusMargins,\r\n null\r\n )\r\n .clip()\r\n .discardPath();\r\n }\r\n\r\n this.pdf.text(\r\n croppedText,\r\n baseLineRectOnPage.x,\r\n baseLineRectOnPage.y,\r\n {\r\n angle: options.angle,\r\n align: textAlign,\r\n renderingMode: options.renderingMode\r\n }\r\n );\r\n\r\n if (needsClipping) {\r\n this.pdf.restoreGraphicsState();\r\n }\r\n }\r\n } else {\r\n // This text is the last element of the page, but it got cut off due to the margin\r\n // so we render it in the next page\r\n\r\n if (textBoundsOnPage.y < pageHeightMinusBottomMargin) {\r\n // As a result, all other elements have their y offset increased\r\n this.ctx.prevPageLastElemOffset +=\r\n pageHeightMinusBottomMargin - textBoundsOnPage.y;\r\n }\r\n }\r\n\r\n if (options.scale >= 0.01) {\r\n this.pdf.setFontSize(oldSize);\r\n this.lineWidth = oldLineWidth;\r\n }\r\n }\r\n } else {\r\n if (options.scale >= 0.01) {\r\n oldSize = this.pdf.internal.getFontSize();\r\n this.pdf.setFontSize(oldSize * options.scale);\r\n oldLineWidth = this.lineWidth;\r\n this.lineWidth = oldLineWidth * options.scale;\r\n }\r\n this.pdf.text(options.text, pt.x + this.posX, pt.y + this.posY, {\r\n angle: options.angle,\r\n align: textAlign,\r\n renderingMode: options.renderingMode,\r\n maxWidth: options.maxWidth\r\n });\r\n\r\n if (options.scale >= 0.01) {\r\n this.pdf.setFontSize(oldSize);\r\n this.lineWidth = oldLineWidth;\r\n }\r\n }\r\n };\r\n\r\n var drawLine = function(x, y, prevX, prevY) {\r\n prevX = prevX || 0;\r\n prevY = prevY || 0;\r\n\r\n this.pdf.internal.out(\r\n getHorizontalCoordinateString(x + prevX) +\r\n \" \" +\r\n getVerticalCoordinateString(y + prevY) +\r\n \" l\"\r\n );\r\n };\r\n\r\n var drawLines = function(lines, x, y) {\r\n return this.pdf.lines(lines, x, y, null, null);\r\n };\r\n\r\n var drawCurve = function(x, y, x1, y1, x2, y2, x3, y3) {\r\n this.pdf.internal.out(\r\n [\r\n f2(getHorizontalCoordinate(x1 + x)),\r\n f2(getVerticalCoordinate(y1 + y)),\r\n f2(getHorizontalCoordinate(x2 + x)),\r\n f2(getVerticalCoordinate(y2 + y)),\r\n f2(getHorizontalCoordinate(x3 + x)),\r\n f2(getVerticalCoordinate(y3 + y)),\r\n \"c\"\r\n ].join(\" \")\r\n );\r\n };\r\n\r\n /**\r\n * Return a array of objects that represent bezier curves which approximate the circular arc centered at the origin, from startAngle to endAngle (radians) with the specified radius.\r\n *\r\n * Each bezier curve is an object with four points, where x1,y1 and x4,y4 are the arc's end points and x2,y2 and x3,y3 are the cubic bezier's control points.\r\n * @function createArc\r\n */\r\n var createArc = function(radius, startAngle, endAngle, anticlockwise) {\r\n var EPSILON = 0.00001; // Roughly 1/1000th of a degree, see below\r\n var twoPi = Math.PI * 2;\r\n var halfPi = Math.PI / 2.0;\r\n\r\n while (startAngle > endAngle) {\r\n startAngle = startAngle - twoPi;\r\n }\r\n var totalAngle = Math.abs(endAngle - startAngle);\r\n if (totalAngle < twoPi) {\r\n if (anticlockwise) {\r\n totalAngle = twoPi - totalAngle;\r\n }\r\n }\r\n\r\n // Compute the sequence of arc curves, up to PI/2 at a time.\r\n var curves = [];\r\n\r\n // clockwise or counterclockwise\r\n var sgn = anticlockwise ? -1 : +1;\r\n\r\n var a1 = startAngle;\r\n for (; totalAngle > EPSILON; ) {\r\n var remain = sgn * Math.min(totalAngle, halfPi);\r\n var a2 = a1 + remain;\r\n curves.push(createSmallArc.call(this, radius, a1, a2));\r\n totalAngle -= Math.abs(a2 - a1);\r\n a1 = a2;\r\n }\r\n\r\n return curves;\r\n };\r\n\r\n /**\r\n * Cubic bezier approximation of a circular arc centered at the origin, from (radians) a1 to a2, where a2-a1 < pi/2. The arc's radius is r.\r\n *\r\n * Returns an object with four points, where x1,y1 and x4,y4 are the arc's end points and x2,y2 and x3,y3 are the cubic bezier's control points.\r\n *\r\n * This algorithm is based on the approach described in: A. Riškus, \"Approximation of a Cubic Bezier Curve by Circular Arcs and Vice Versa,\" Information Technology and Control, 35(4), 2006 pp. 371-378.\r\n */\r\n var createSmallArc = function(r, a1, a2) {\r\n var a = (a2 - a1) / 2.0;\r\n\r\n var x4 = r * Math.cos(a);\r\n var y4 = r * Math.sin(a);\r\n var x1 = x4;\r\n var y1 = -y4;\r\n\r\n var q1 = x1 * x1 + y1 * y1;\r\n var q2 = q1 + x1 * x4 + y1 * y4;\r\n var k2 = ((4 / 3) * (Math.sqrt(2 * q1 * q2) - q2)) / (x1 * y4 - y1 * x4);\r\n\r\n var x2 = x1 - k2 * y1;\r\n var y2 = y1 + k2 * x1;\r\n var x3 = x2;\r\n var y3 = -y2;\r\n\r\n var ar = a + a1;\r\n var cos_ar = Math.cos(ar);\r\n var sin_ar = Math.sin(ar);\r\n\r\n return {\r\n x1: r * Math.cos(a1),\r\n y1: r * Math.sin(a1),\r\n x2: x2 * cos_ar - y2 * sin_ar,\r\n y2: x2 * sin_ar + y2 * cos_ar,\r\n x3: x3 * cos_ar - y3 * sin_ar,\r\n y3: x3 * sin_ar + y3 * cos_ar,\r\n x4: r * Math.cos(a2),\r\n y4: r * Math.sin(a2)\r\n };\r\n };\r\n\r\n var rad2deg = function(value) {\r\n return (value * 180) / Math.PI;\r\n };\r\n\r\n var getQuadraticCurveBoundary = function(sx, sy, cpx, cpy, ex, ey) {\r\n var midX1 = sx + (cpx - sx) * 0.5;\r\n var midY1 = sy + (cpy - sy) * 0.5;\r\n var midX2 = ex + (cpx - ex) * 0.5;\r\n var midY2 = ey + (cpy - ey) * 0.5;\r\n var resultX1 = Math.min(sx, ex, midX1, midX2);\r\n var resultX2 = Math.max(sx, ex, midX1, midX2);\r\n var resultY1 = Math.min(sy, ey, midY1, midY2);\r\n var resultY2 = Math.max(sy, ey, midY1, midY2);\r\n return new Rectangle(\r\n resultX1,\r\n resultY1,\r\n resultX2 - resultX1,\r\n resultY2 - resultY1\r\n );\r\n };\r\n\r\n //De Casteljau algorithm\r\n var getBezierCurveBoundary = function(ax, ay, bx, by, cx, cy, dx, dy) {\r\n var tobx = bx - ax;\r\n var toby = by - ay;\r\n var tocx = cx - bx;\r\n var tocy = cy - by;\r\n var todx = dx - cx;\r\n var tody = dy - cy;\r\n var precision = 40;\r\n var d,\r\n i,\r\n px,\r\n py,\r\n qx,\r\n qy,\r\n rx,\r\n ry,\r\n tx,\r\n ty,\r\n sx,\r\n sy,\r\n x,\r\n y,\r\n minx,\r\n miny,\r\n maxx,\r\n maxy,\r\n toqx,\r\n toqy,\r\n torx,\r\n tory,\r\n totx,\r\n toty;\r\n for (i = 0; i < precision + 1; i++) {\r\n d = i / precision;\r\n px = ax + d * tobx;\r\n py = ay + d * toby;\r\n qx = bx + d * tocx;\r\n qy = by + d * tocy;\r\n rx = cx + d * todx;\r\n ry = cy + d * tody;\r\n toqx = qx - px;\r\n toqy = qy - py;\r\n torx = rx - qx;\r\n tory = ry - qy;\r\n\r\n sx = px + d * toqx;\r\n sy = py + d * toqy;\r\n tx = qx + d * torx;\r\n ty = qy + d * tory;\r\n totx = tx - sx;\r\n toty = ty - sy;\r\n\r\n x = sx + d * totx;\r\n y = sy + d * toty;\r\n if (i == 0) {\r\n minx = x;\r\n miny = y;\r\n maxx = x;\r\n maxy = y;\r\n } else {\r\n minx = Math.min(minx, x);\r\n miny = Math.min(miny, y);\r\n maxx = Math.max(maxx, x);\r\n maxy = Math.max(maxy, y);\r\n }\r\n }\r\n return new Rectangle(\r\n Math.round(minx),\r\n Math.round(miny),\r\n Math.round(maxx - minx),\r\n Math.round(maxy - miny)\r\n );\r\n };\r\n\r\n var getPrevLineDashValue = function(lineDash, lineDashOffset) {\r\n return JSON.stringify({\r\n lineDash: lineDash,\r\n lineDashOffset: lineDashOffset\r\n });\r\n };\r\n\r\n var setLineDash = function() {\r\n // Avoid unnecessary line dash declarations.\r\n if (\r\n !this.prevLineDash &&\r\n !this.ctx.lineDash.length &&\r\n !this.ctx.lineDashOffset\r\n ) {\r\n return;\r\n }\r\n\r\n // Avoid unnecessary line dash declarations.\r\n const nextLineDash = getPrevLineDashValue(\r\n this.ctx.lineDash,\r\n this.ctx.lineDashOffset\r\n );\r\n if (this.prevLineDash !== nextLineDash) {\r\n this.pdf.setLineDash(this.ctx.lineDash, this.ctx.lineDashOffset);\r\n this.prevLineDash = nextLineDash;\r\n }\r\n };\r\n})(jsPDF.API);\r\n","/**\n * @license\n * jsPDF filters PlugIn\n * Copyright (c) 2014 Aras Abbasi\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { zlibSync } from \"../libs/fflate.js\";\n\n(function(jsPDFAPI) {\n \"use strict\";\n\n var ASCII85Encode = function(a) {\n var b, c, d, e, f, g, h, i, j, k;\n // eslint-disable-next-line no-control-regex\n for (\n !/[^\\x00-\\xFF]/.test(a),\n b = \"\\x00\\x00\\x00\\x00\".slice(a.length % 4 || 4),\n a += b,\n c = [],\n d = 0,\n e = a.length;\n e > d;\n d += 4\n )\n (f =\n (a.charCodeAt(d) << 24) +\n (a.charCodeAt(d + 1) << 16) +\n (a.charCodeAt(d + 2) << 8) +\n a.charCodeAt(d + 3)),\n 0 !== f\n ? ((k = f % 85),\n (f = (f - k) / 85),\n (j = f % 85),\n (f = (f - j) / 85),\n (i = f % 85),\n (f = (f - i) / 85),\n (h = f % 85),\n (f = (f - h) / 85),\n (g = f % 85),\n c.push(g + 33, h + 33, i + 33, j + 33, k + 33))\n : c.push(122);\n return (\n (function(a, b) {\n for (var c = b; c > 0; c--) a.pop();\n })(c, b.length),\n String.fromCharCode.apply(String, c) + \"~>\"\n );\n };\n\n var ASCII85Decode = function(a) {\n var c,\n d,\n e,\n f,\n g,\n h = String,\n l = \"length\",\n w = 255,\n x = \"charCodeAt\",\n y = \"slice\",\n z = \"replace\";\n for (\n \"~>\" === a[y](-2),\n a = a[y](0, -2)\n [z](/\\s/g, \"\")\n [z](\"z\", \"!!!!!\"),\n c = \"uuuuu\"[y](a[l] % 5 || 5),\n a += c,\n e = [],\n f = 0,\n g = a[l];\n g > f;\n f += 5\n )\n (d =\n 52200625 * (a[x](f) - 33) +\n 614125 * (a[x](f + 1) - 33) +\n 7225 * (a[x](f + 2) - 33) +\n 85 * (a[x](f + 3) - 33) +\n (a[x](f + 4) - 33)),\n e.push(w & (d >> 24), w & (d >> 16), w & (d >> 8), w & d);\n return (\n (function(a, b) {\n for (var c = b; c > 0; c--) a.pop();\n })(e, c[l]),\n h.fromCharCode.apply(h, e)\n );\n };\n\n var ASCIIHexEncode = function(value) {\n return (\n value\n .split(\"\")\n .map(function(value) {\n return (\"0\" + value.charCodeAt().toString(16)).slice(-2);\n })\n .join(\"\") + \">\"\n );\n };\n\n var ASCIIHexDecode = function(value) {\n var regexCheckIfHex = new RegExp(/^([0-9A-Fa-f]{2})+$/);\n value = value.replace(/\\s/g, \"\");\n if (value.indexOf(\">\") !== -1) {\n value = value.substr(0, value.indexOf(\">\"));\n }\n if (value.length % 2) {\n value += \"0\";\n }\n if (regexCheckIfHex.test(value) === false) {\n return \"\";\n }\n var result = \"\";\n for (var i = 0; i < value.length; i += 2) {\n result += String.fromCharCode(\"0x\" + (value[i] + value[i + 1]));\n }\n return result;\n };\n /*\n var FlatePredictors = {\n None: 1,\n TIFF: 2,\n PNG_None: 10,\n PNG_Sub: 11,\n PNG_Up: 12,\n PNG_Average: 13,\n PNG_Paeth: 14,\n PNG_Optimum: 15\n };\n */\n\n var FlateEncode = function(data) {\n var arr = new Uint8Array(data.length);\n var i = data.length;\n while (i--) {\n arr[i] = data.charCodeAt(i);\n }\n arr = zlibSync(arr);\n data = arr.reduce(function(data, byte) {\n return data + String.fromCharCode(byte);\n }, \"\");\n return data;\n };\n\n jsPDFAPI.processDataByFilters = function(origData, filterChain) {\n \"use strict\";\n var i = 0;\n var data = origData || \"\";\n var reverseChain = [];\n filterChain = filterChain || [];\n\n if (typeof filterChain === \"string\") {\n filterChain = [filterChain];\n }\n\n for (i = 0; i < filterChain.length; i += 1) {\n switch (filterChain[i]) {\n case \"ASCII85Decode\":\n case \"/ASCII85Decode\":\n data = ASCII85Decode(data);\n reverseChain.push(\"/ASCII85Encode\");\n break;\n case \"ASCII85Encode\":\n case \"/ASCII85Encode\":\n data = ASCII85Encode(data);\n reverseChain.push(\"/ASCII85Decode\");\n break;\n case \"ASCIIHexDecode\":\n case \"/ASCIIHexDecode\":\n data = ASCIIHexDecode(data);\n reverseChain.push(\"/ASCIIHexEncode\");\n break;\n case \"ASCIIHexEncode\":\n case \"/ASCIIHexEncode\":\n data = ASCIIHexEncode(data);\n reverseChain.push(\"/ASCIIHexDecode\");\n break;\n case \"FlateEncode\":\n case \"/FlateEncode\":\n data = FlateEncode(data);\n reverseChain.push(\"/FlateDecode\");\n break;\n default:\n throw new Error(\n 'The filter: \"' + filterChain[i] + '\" is not implemented'\n );\n }\n }\n\n return { data: data, reverseChain: reverseChain.reverse().join(\" \") };\n };\n})(jsPDF.API);\n","/**\n * @license\n * jsPDF fileloading PlugIn\n * Copyright (c) 2018 Aras Abbasi (aras.abbasi@gmail.com)\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * @name fileloading\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n /**\n * @name loadFile\n * @function\n * @param {string} url\n * @param {boolean} sync\n * @param {function} callback\n * @returns {string|undefined} result\n */\n jsPDFAPI.loadFile = function(url, sync, callback) {\n return browserRequest(url, sync, callback);\n\n };\n\n /**\n * @name loadImageFile\n * @function\n * @param {string} path\n * @param {boolean} sync\n * @param {function} callback\n */\n jsPDFAPI.loadImageFile = jsPDFAPI.loadFile;\n\n function browserRequest(url, sync, callback) {\n sync = sync === false ? false : true;\n callback = typeof callback === \"function\" ? callback : function() {};\n var result = undefined;\n\n var xhr = function(url, sync, callback) {\n var request = new XMLHttpRequest();\n var i = 0;\n\n var sanitizeUnicode = function(data) {\n var dataLength = data.length;\n var charArray = [];\n var StringFromCharCode = String.fromCharCode;\n\n //Transform Unicode to ASCII\n for (i = 0; i < dataLength; i += 1) {\n charArray.push(StringFromCharCode(data.charCodeAt(i) & 0xff));\n }\n return charArray.join(\"\");\n };\n\n request.open(\"GET\", url, !sync);\n // XHR binary charset opt by Marcus Granado 2006 [http://mgran.blogspot.com]\n request.overrideMimeType(\"text/plain; charset=x-user-defined\");\n\n if (sync === false) {\n request.onload = function() {\n if (request.status === 200) {\n callback(sanitizeUnicode(this.responseText));\n } else {\n callback(undefined);\n }\n };\n }\n request.send(null);\n\n if (sync && request.status === 200) {\n return sanitizeUnicode(request.responseText);\n }\n };\n try {\n result = xhr(url, sync, callback);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n return result;\n }\n\n function nodeReadFile(url, sync, callback) {\n sync = sync === false ? false : true;\n var result = undefined;\n\n var fs = require(\"fs\");\n var path = require(\"path\");\n\n url = path.resolve(url);\n if (sync) {\n try {\n result = fs.readFileSync(url, { encoding: \"latin1\" });\n } catch (e) {\n return undefined;\n }\n } else {\n fs.readFile(url, { encoding: \"latin1\" }, function(err, data) {\n if (!callback) {\n return;\n }\n if (err) {\n callback(undefined);\n }\n callback(data);\n });\n }\n\n return result;\n }\n})(jsPDF.API);\n","/**\n * @license\n * Copyright (c) 2018 Erik Koopmans\n * Released under the MIT License.\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { normalizeFontFace } from \"../libs/fontFace.js\";\nimport { globalObject } from \"../libs/globalObject.js\";\n\n/**\n * jsPDF html PlugIn\n *\n * @name html\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n function loadHtml2Canvas() {\n return (function() {\n if (globalObject[\"html2canvas\"]) {\n return Promise.resolve(globalObject[\"html2canvas\"]);\n }\n\n return import(\"html2canvas\");\n\n })()\n .catch(function(e) {\n return Promise.reject(new Error(\"Could not load html2canvas: \" + e));\n })\n .then(function(html2canvas) {\n return html2canvas.default ? html2canvas.default : html2canvas;\n });\n }\n\n function loadDomPurify() {\n return (function() {\n if (globalObject[\"DOMPurify\"]) {\n return Promise.resolve(globalObject[\"DOMPurify\"]);\n }\n\n return import(\"dompurify\");\n\n })()\n .catch(function(e) {\n return Promise.reject(new Error(\"Could not load dompurify: \" + e));\n })\n .then(function(dompurify) {\n return dompurify.default ? dompurify.default : dompurify;\n });\n }\n\n /**\n * Determine the type of a variable/object.\n *\n * @private\n * @ignore\n */\n var objType = function(obj) {\n var type = typeof obj;\n if (type === \"undefined\") return \"undefined\";\n else if (type === \"string\" || obj instanceof String) return \"string\";\n else if (type === \"number\" || obj instanceof Number) return \"number\";\n else if (type === \"function\" || obj instanceof Function) return \"function\";\n else if (!!obj && obj.constructor === Array) return \"array\";\n else if (obj && obj.nodeType === 1) return \"element\";\n else if (type === \"object\") return \"object\";\n else return \"unknown\";\n };\n\n /**\n * Create an HTML element with optional className, innerHTML, and style.\n *\n * @private\n * @ignore\n */\n var createElement = function(tagName, opt) {\n var el = document.createElement(tagName);\n if (opt.className) el.className = opt.className;\n if (opt.innerHTML && opt.dompurify) {\n el.innerHTML = opt.dompurify.sanitize(opt.innerHTML);\n }\n for (var key in opt.style) {\n el.style[key] = opt.style[key];\n }\n return el;\n };\n\n /**\n * Deep-clone a node and preserve contents/properties.\n *\n * @private\n * @ignore\n */\n var cloneNode = function(node, javascriptEnabled) {\n // Recursively clone the node.\n var clone =\n node.nodeType === 3\n ? document.createTextNode(node.nodeValue)\n : node.cloneNode(false);\n for (var child = node.firstChild; child; child = child.nextSibling) {\n if (\n javascriptEnabled === true ||\n child.nodeType !== 1 ||\n child.nodeName !== \"SCRIPT\"\n ) {\n clone.appendChild(cloneNode(child, javascriptEnabled));\n }\n }\n\n if (node.nodeType === 1) {\n // Preserve contents/properties of special nodes.\n if (node.nodeName === \"CANVAS\") {\n clone.width = node.width;\n clone.height = node.height;\n clone.getContext(\"2d\").drawImage(node, 0, 0);\n } else if (node.nodeName === \"TEXTAREA\" || node.nodeName === \"SELECT\") {\n clone.value = node.value;\n }\n\n // Preserve the node's scroll position when it loads.\n clone.addEventListener(\n \"load\",\n function() {\n clone.scrollTop = node.scrollTop;\n clone.scrollLeft = node.scrollLeft;\n },\n true\n );\n }\n\n // Return the cloned node.\n return clone;\n };\n\n /* ----- CONSTRUCTOR ----- */\n\n var Worker = function Worker(opt) {\n // Create the root parent for the proto chain, and the starting Worker.\n var root = Object.assign(\n Worker.convert(Promise.resolve()),\n JSON.parse(JSON.stringify(Worker.template))\n );\n var self = Worker.convert(Promise.resolve(), root);\n\n // Set progress, optional settings, and return.\n self = self.setProgress(1, Worker, 1, [Worker]);\n self = self.set(opt);\n return self;\n };\n\n // Boilerplate for subclassing Promise.\n Worker.prototype = Object.create(Promise.prototype);\n Worker.prototype.constructor = Worker;\n\n // Converts/casts promises into Workers.\n Worker.convert = function convert(promise, inherit) {\n // Uses prototypal inheritance to receive changes made to ancestors' properties.\n promise.__proto__ = inherit || Worker.prototype;\n return promise;\n };\n\n Worker.template = {\n prop: {\n src: null,\n container: null,\n overlay: null,\n canvas: null,\n img: null,\n pdf: null,\n pageSize: null,\n callback: function() {}\n },\n progress: {\n val: 0,\n state: null,\n n: 0,\n stack: []\n },\n opt: {\n filename: \"file.pdf\",\n margin: [0, 0, 0, 0],\n enableLinks: true,\n x: 0,\n y: 0,\n html2canvas: {},\n jsPDF: {},\n backgroundColor: \"transparent\"\n }\n };\n\n /* ----- FROM / TO ----- */\n\n Worker.prototype.from = function from(src, type) {\n function getType(src) {\n switch (objType(src)) {\n case \"string\":\n return \"string\";\n case \"element\":\n return src.nodeName.toLowerCase() === \"canvas\" ? \"canvas\" : \"element\";\n default:\n return \"unknown\";\n }\n }\n\n return this.then(function from_main() {\n type = type || getType(src);\n switch (type) {\n case \"string\":\n return this.then(loadDomPurify).then(function(dompurify) {\n return this.set({\n src: createElement(\"div\", {\n innerHTML: src,\n dompurify: dompurify\n })\n });\n });\n case \"element\":\n return this.set({ src: src });\n case \"canvas\":\n return this.set({ canvas: src });\n case \"img\":\n return this.set({ img: src });\n default:\n return this.error(\"Unknown source type.\");\n }\n });\n };\n\n Worker.prototype.to = function to(target) {\n // Route the 'to' request to the appropriate method.\n switch (target) {\n case \"container\":\n return this.toContainer();\n case \"canvas\":\n return this.toCanvas();\n case \"img\":\n return this.toImg();\n case \"pdf\":\n return this.toPdf();\n default:\n return this.error(\"Invalid target.\");\n }\n };\n\n Worker.prototype.toContainer = function toContainer() {\n // Set up function prerequisites.\n var prereqs = [\n function checkSrc() {\n return (\n this.prop.src || this.error(\"Cannot duplicate - no source HTML.\")\n );\n },\n function checkPageSize() {\n return this.prop.pageSize || this.setPageSize();\n }\n ];\n return this.thenList(prereqs).then(function toContainer_main() {\n // Define the CSS styles for the container and its overlay parent.\n var overlayCSS = {\n position: \"fixed\",\n overflow: \"hidden\",\n zIndex: 1000,\n left: \"-100000px\",\n right: 0,\n bottom: 0,\n top: 0\n };\n var containerCSS = {\n position: \"relative\",\n display: \"inline-block\",\n width:\n (typeof this.opt.width === \"number\" &&\n !isNaN(this.opt.width) &&\n typeof this.opt.windowWidth === \"number\" &&\n !isNaN(this.opt.windowWidth)\n ? this.opt.windowWidth\n : Math.max(\n this.prop.src.clientWidth,\n this.prop.src.scrollWidth,\n this.prop.src.offsetWidth\n )) + \"px\",\n left: 0,\n right: 0,\n top: 0,\n margin: \"auto\",\n backgroundColor: this.opt.backgroundColor\n }; // Set the overlay to hidden (could be changed in the future to provide a print preview).\n\n var source = cloneNode(\n this.prop.src,\n this.opt.html2canvas.javascriptEnabled\n );\n\n if (source.tagName === \"BODY\") {\n containerCSS.height =\n Math.max(\n document.body.scrollHeight,\n document.body.offsetHeight,\n document.documentElement.clientHeight,\n document.documentElement.scrollHeight,\n document.documentElement.offsetHeight\n ) + \"px\";\n }\n\n this.prop.overlay = createElement(\"div\", {\n className: \"html2pdf__overlay\",\n style: overlayCSS\n });\n this.prop.container = createElement(\"div\", {\n className: \"html2pdf__container\",\n style: containerCSS\n });\n this.prop.container.appendChild(source);\n this.prop.container.firstChild.appendChild(\n createElement(\"div\", {\n style: {\n clear: \"both\",\n border: \"0 none transparent\",\n margin: 0,\n padding: 0,\n height: 0\n }\n })\n );\n this.prop.container.style.float = \"none\";\n this.prop.overlay.appendChild(this.prop.container);\n document.body.appendChild(this.prop.overlay);\n this.prop.container.firstChild.style.position = \"relative\";\n this.prop.container.height =\n Math.max(\n this.prop.container.firstChild.clientHeight,\n this.prop.container.firstChild.scrollHeight,\n this.prop.container.firstChild.offsetHeight\n ) + \"px\";\n });\n };\n\n Worker.prototype.toCanvas = function toCanvas() {\n // Set up function prerequisites.\n var prereqs = [\n function checkContainer() {\n return (\n document.body.contains(this.prop.container) || this.toContainer()\n );\n }\n ];\n\n // Fulfill prereqs then create the canvas.\n return this.thenList(prereqs)\n .then(loadHtml2Canvas)\n .then(function toCanvas_main(html2canvas) {\n // Handle old-fashioned 'onrendered' argument.\n var options = Object.assign({}, this.opt.html2canvas);\n delete options.onrendered;\n\n return html2canvas(this.prop.container, options);\n })\n .then(function toCanvas_post(canvas) {\n // Handle old-fashioned 'onrendered' argument.\n var onRendered = this.opt.html2canvas.onrendered || function() {};\n onRendered(canvas);\n\n this.prop.canvas = canvas;\n document.body.removeChild(this.prop.overlay);\n });\n };\n\n Worker.prototype.toContext2d = function toContext2d() {\n // Set up function prerequisites.\n var prereqs = [\n function checkContainer() {\n return (\n document.body.contains(this.prop.container) || this.toContainer()\n );\n }\n ];\n\n // Fulfill prereqs then create the canvas.\n return this.thenList(prereqs)\n .then(loadHtml2Canvas)\n .then(function toContext2d_main(html2canvas) {\n // Handle old-fashioned 'onrendered' argument.\n\n var pdf = this.opt.jsPDF;\n var fontFaces = this.opt.fontFaces;\n\n var scale =\n typeof this.opt.width === \"number\" &&\n !isNaN(this.opt.width) &&\n typeof this.opt.windowWidth === \"number\" &&\n !isNaN(this.opt.windowWidth)\n ? this.opt.width / this.opt.windowWidth\n : 1;\n\n var options = Object.assign(\n {\n async: true,\n allowTaint: true,\n scale: scale,\n scrollX: this.opt.scrollX || 0,\n scrollY: this.opt.scrollY || 0,\n backgroundColor: \"#ffffff\",\n imageTimeout: 15000,\n logging: true,\n proxy: null,\n removeContainer: true,\n foreignObjectRendering: false,\n useCORS: false\n },\n this.opt.html2canvas\n );\n delete options.onrendered;\n\n pdf.context2d.autoPaging =\n typeof this.opt.autoPaging === \"undefined\"\n ? true\n : this.opt.autoPaging;\n pdf.context2d.posX = this.opt.x;\n pdf.context2d.posY = this.opt.y;\n pdf.context2d.margin = this.opt.margin;\n pdf.context2d.fontFaces = fontFaces;\n\n if (fontFaces) {\n for (var i = 0; i < fontFaces.length; ++i) {\n var font = fontFaces[i];\n var src = font.src.find(function(src) {\n return src.format === \"truetype\";\n });\n\n if (src) {\n pdf.addFont(src.url, font.ref.name, font.ref.style);\n }\n }\n }\n\n options.windowHeight = options.windowHeight || 0;\n options.windowHeight =\n options.windowHeight == 0\n ? Math.max(\n this.prop.container.clientHeight,\n this.prop.container.scrollHeight,\n this.prop.container.offsetHeight\n )\n : options.windowHeight;\n\n pdf.context2d.save(true);\n return html2canvas(this.prop.container, options);\n })\n .then(function toContext2d_post(canvas) {\n this.opt.jsPDF.context2d.restore(true);\n\n // Handle old-fashioned 'onrendered' argument.\n var onRendered = this.opt.html2canvas.onrendered || function() {};\n onRendered(canvas);\n\n this.prop.canvas = canvas;\n document.body.removeChild(this.prop.overlay);\n });\n };\n\n Worker.prototype.toImg = function toImg() {\n // Set up function prerequisites.\n var prereqs = [\n function checkCanvas() {\n return this.prop.canvas || this.toCanvas();\n }\n ];\n\n // Fulfill prereqs then create the image.\n return this.thenList(prereqs).then(function toImg_main() {\n var imgData = this.prop.canvas.toDataURL(\n \"image/\" + this.opt.image.type,\n this.opt.image.quality\n );\n this.prop.img = document.createElement(\"img\");\n this.prop.img.src = imgData;\n });\n };\n\n Worker.prototype.toPdf = function toPdf() {\n // Set up function prerequisites.\n var prereqs = [\n function checkContext2d() {\n return this.toContext2d();\n }\n //function checkCanvas() { return this.prop.canvas || this.toCanvas(); }\n ];\n\n // Fulfill prereqs then create the image.\n return this.thenList(prereqs).then(function toPdf_main() {\n // Create local copies of frequently used properties.\n this.prop.pdf = this.prop.pdf || this.opt.jsPDF;\n });\n };\n\n /* ----- OUTPUT / SAVE ----- */\n\n Worker.prototype.output = function output(type, options, src) {\n // Redirect requests to the correct function (outputPdf / outputImg).\n src = src || \"pdf\";\n if (src.toLowerCase() === \"img\" || src.toLowerCase() === \"image\") {\n return this.outputImg(type, options);\n } else {\n return this.outputPdf(type, options);\n }\n };\n\n Worker.prototype.outputPdf = function outputPdf(type, options) {\n // Set up function prerequisites.\n var prereqs = [\n function checkPdf() {\n return this.prop.pdf || this.toPdf();\n }\n ];\n\n // Fulfill prereqs then perform the appropriate output.\n return this.thenList(prereqs).then(function outputPdf_main() {\n /* Currently implemented output types:\n * https://rawgit.com/MrRio/jsPDF/master/docs/jspdf.js.html#line992\n * save(options), arraybuffer, blob, bloburi/bloburl,\n * datauristring/dataurlstring, dataurlnewwindow, datauri/dataurl\n */\n return this.prop.pdf.output(type, options);\n });\n };\n\n Worker.prototype.outputImg = function outputImg(type) {\n // Set up function prerequisites.\n var prereqs = [\n function checkImg() {\n return this.prop.img || this.toImg();\n }\n ];\n\n // Fulfill prereqs then perform the appropriate output.\n return this.thenList(prereqs).then(function outputImg_main() {\n switch (type) {\n case undefined:\n case \"img\":\n return this.prop.img;\n case \"datauristring\":\n case \"dataurlstring\":\n return this.prop.img.src;\n case \"datauri\":\n case \"dataurl\":\n return (document.location.href = this.prop.img.src);\n default:\n throw 'Image output type \"' + type + '\" is not supported.';\n }\n });\n };\n\n Worker.prototype.save = function save(filename) {\n // Set up function prerequisites.\n var prereqs = [\n function checkPdf() {\n return this.prop.pdf || this.toPdf();\n }\n ];\n\n // Fulfill prereqs, update the filename (if provided), and save the PDF.\n return this.thenList(prereqs)\n .set(filename ? { filename: filename } : null)\n .then(function save_main() {\n this.prop.pdf.save(this.opt.filename);\n });\n };\n\n Worker.prototype.doCallback = function doCallback() {\n // Set up function prerequisites.\n var prereqs = [\n function checkPdf() {\n return this.prop.pdf || this.toPdf();\n }\n ];\n\n // Fulfill prereqs, update the filename (if provided), and save the PDF.\n return this.thenList(prereqs).then(function doCallback_main() {\n this.prop.callback(this.prop.pdf);\n });\n };\n\n /* ----- SET / GET ----- */\n\n Worker.prototype.set = function set(opt) {\n // TODO: Implement ordered pairs?\n\n // Silently ignore invalid or empty input.\n if (objType(opt) !== \"object\") {\n return this;\n }\n\n // Build an array of setter functions to queue.\n var fns = Object.keys(opt || {}).map(function(key) {\n if (key in Worker.template.prop) {\n // Set pre-defined properties.\n return function set_prop() {\n this.prop[key] = opt[key];\n };\n } else {\n switch (key) {\n case \"margin\":\n return this.setMargin.bind(this, opt.margin);\n case \"jsPDF\":\n return function set_jsPDF() {\n this.opt.jsPDF = opt.jsPDF;\n return this.setPageSize();\n };\n case \"pageSize\":\n return this.setPageSize.bind(this, opt.pageSize);\n default:\n // Set any other properties in opt.\n return function set_opt() {\n this.opt[key] = opt[key];\n };\n }\n }\n }, this);\n\n // Set properties within the promise chain.\n return this.then(function set_main() {\n return this.thenList(fns);\n });\n };\n\n Worker.prototype.get = function get(key, cbk) {\n return this.then(function get_main() {\n // Fetch the requested property, either as a predefined prop or in opt.\n var val = key in Worker.template.prop ? this.prop[key] : this.opt[key];\n return cbk ? cbk(val) : val;\n });\n };\n\n Worker.prototype.setMargin = function setMargin(margin) {\n return this.then(function setMargin_main() {\n // Parse the margin property.\n switch (objType(margin)) {\n case \"number\":\n margin = [margin, margin, margin, margin];\n // eslint-disable-next-line no-fallthrough\n case \"array\":\n if (margin.length === 2) {\n margin = [margin[0], margin[1], margin[0], margin[1]];\n }\n if (margin.length === 4) {\n break;\n }\n // eslint-disable-next-line no-fallthrough\n default:\n return this.error(\"Invalid margin array.\");\n }\n\n // Set the margin property, then update pageSize.\n this.opt.margin = margin;\n }).then(this.setPageSize);\n };\n\n Worker.prototype.setPageSize = function setPageSize(pageSize) {\n function toPx(val, k) {\n return Math.floor(((val * k) / 72) * 96);\n }\n\n return this.then(function setPageSize_main() {\n // Retrieve page-size based on jsPDF settings, if not explicitly provided.\n pageSize = pageSize || jsPDF.getPageSize(this.opt.jsPDF);\n\n // Add 'inner' field if not present.\n if (!pageSize.hasOwnProperty(\"inner\")) {\n pageSize.inner = {\n width: pageSize.width - this.opt.margin[1] - this.opt.margin[3],\n height: pageSize.height - this.opt.margin[0] - this.opt.margin[2]\n };\n pageSize.inner.px = {\n width: toPx(pageSize.inner.width, pageSize.k),\n height: toPx(pageSize.inner.height, pageSize.k)\n };\n pageSize.inner.ratio = pageSize.inner.height / pageSize.inner.width;\n }\n\n // Attach pageSize to this.\n this.prop.pageSize = pageSize;\n });\n };\n\n Worker.prototype.setProgress = function setProgress(val, state, n, stack) {\n // Immediately update all progress values.\n if (val != null) this.progress.val = val;\n if (state != null) this.progress.state = state;\n if (n != null) this.progress.n = n;\n if (stack != null) this.progress.stack = stack;\n this.progress.ratio = this.progress.val / this.progress.state;\n\n // Return this for command chaining.\n return this;\n };\n\n Worker.prototype.updateProgress = function updateProgress(\n val,\n state,\n n,\n stack\n ) {\n // Immediately update all progress values, using setProgress.\n return this.setProgress(\n val ? this.progress.val + val : null,\n state ? state : null,\n n ? this.progress.n + n : null,\n stack ? this.progress.stack.concat(stack) : null\n );\n };\n\n /* ----- PROMISE MAPPING ----- */\n\n Worker.prototype.then = function then(onFulfilled, onRejected) {\n // Wrap `this` for encapsulation.\n var self = this;\n\n return this.thenCore(onFulfilled, onRejected, function then_main(\n onFulfilled,\n onRejected\n ) {\n // Update progress while queuing, calling, and resolving `then`.\n self.updateProgress(null, null, 1, [onFulfilled]);\n return Promise.prototype.then\n .call(this, function then_pre(val) {\n self.updateProgress(null, onFulfilled);\n return val;\n })\n .then(onFulfilled, onRejected)\n .then(function then_post(val) {\n self.updateProgress(1);\n return val;\n });\n });\n };\n\n Worker.prototype.thenCore = function thenCore(\n onFulfilled,\n onRejected,\n thenBase\n ) {\n // Handle optional thenBase parameter.\n thenBase = thenBase || Promise.prototype.then;\n\n // Wrap `this` for encapsulation and bind it to the promise handlers.\n var self = this;\n if (onFulfilled) {\n onFulfilled = onFulfilled.bind(self);\n }\n if (onRejected) {\n onRejected = onRejected.bind(self);\n }\n\n // Cast self into a Promise to avoid polyfills recursively defining `then`.\n var isNative =\n Promise.toString().indexOf(\"[native code]\") !== -1 &&\n Promise.name === \"Promise\";\n var selfPromise = isNative\n ? self\n : Worker.convert(Object.assign({}, self), Promise.prototype);\n\n // Return the promise, after casting it into a Worker and preserving props.\n var returnVal = thenBase.call(selfPromise, onFulfilled, onRejected);\n return Worker.convert(returnVal, self.__proto__);\n };\n\n Worker.prototype.thenExternal = function thenExternal(\n onFulfilled,\n onRejected\n ) {\n // Call `then` and return a standard promise (exits the Worker chain).\n return Promise.prototype.then.call(this, onFulfilled, onRejected);\n };\n\n Worker.prototype.thenList = function thenList(fns) {\n // Queue a series of promise 'factories' into the promise chain.\n var self = this;\n fns.forEach(function thenList_forEach(fn) {\n self = self.thenCore(fn);\n });\n return self;\n };\n\n Worker.prototype[\"catch\"] = function(onRejected) {\n // Bind `this` to the promise handler, call `catch`, and return a Worker.\n if (onRejected) {\n onRejected = onRejected.bind(this);\n }\n var returnVal = Promise.prototype[\"catch\"].call(this, onRejected);\n return Worker.convert(returnVal, this);\n };\n\n Worker.prototype.catchExternal = function catchExternal(onRejected) {\n // Call `catch` and return a standard promise (exits the Worker chain).\n return Promise.prototype[\"catch\"].call(this, onRejected);\n };\n\n Worker.prototype.error = function error(msg) {\n // Throw the error in the Promise chain.\n return this.then(function error_main() {\n throw new Error(msg);\n });\n };\n\n /* ----- ALIASES ----- */\n\n Worker.prototype.using = Worker.prototype.set;\n Worker.prototype.saveAs = Worker.prototype.save;\n Worker.prototype.export = Worker.prototype.output;\n Worker.prototype.run = Worker.prototype.then;\n\n // Get dimensions of a PDF page, as determined by jsPDF.\n jsPDF.getPageSize = function(orientation, unit, format) {\n // Decode options object\n if (typeof orientation === \"object\") {\n var options = orientation;\n orientation = options.orientation;\n unit = options.unit || unit;\n format = options.format || format;\n }\n\n // Default options\n unit = unit || \"mm\";\n format = format || \"a4\";\n orientation = (\"\" + (orientation || \"P\")).toLowerCase();\n var format_as_string = (\"\" + format).toLowerCase();\n\n // Size in pt of various paper formats\n var pageFormats = {\n a0: [2383.94, 3370.39],\n a1: [1683.78, 2383.94],\n a2: [1190.55, 1683.78],\n a3: [841.89, 1190.55],\n a4: [595.28, 841.89],\n a5: [419.53, 595.28],\n a6: [297.64, 419.53],\n a7: [209.76, 297.64],\n a8: [147.4, 209.76],\n a9: [104.88, 147.4],\n a10: [73.7, 104.88],\n b0: [2834.65, 4008.19],\n b1: [2004.09, 2834.65],\n b2: [1417.32, 2004.09],\n b3: [1000.63, 1417.32],\n b4: [708.66, 1000.63],\n b5: [498.9, 708.66],\n b6: [354.33, 498.9],\n b7: [249.45, 354.33],\n b8: [175.75, 249.45],\n b9: [124.72, 175.75],\n b10: [87.87, 124.72],\n c0: [2599.37, 3676.54],\n c1: [1836.85, 2599.37],\n c2: [1298.27, 1836.85],\n c3: [918.43, 1298.27],\n c4: [649.13, 918.43],\n c5: [459.21, 649.13],\n c6: [323.15, 459.21],\n c7: [229.61, 323.15],\n c8: [161.57, 229.61],\n c9: [113.39, 161.57],\n c10: [79.37, 113.39],\n dl: [311.81, 623.62],\n letter: [612, 792],\n \"government-letter\": [576, 756],\n legal: [612, 1008],\n \"junior-legal\": [576, 360],\n ledger: [1224, 792],\n tabloid: [792, 1224],\n \"credit-card\": [153, 243]\n };\n\n var k;\n // Unit conversion\n switch (unit) {\n case \"pt\":\n k = 1;\n break;\n case \"mm\":\n k = 72 / 25.4;\n break;\n case \"cm\":\n k = 72 / 2.54;\n break;\n case \"in\":\n k = 72;\n break;\n case \"px\":\n k = 72 / 96;\n break;\n case \"pc\":\n k = 12;\n break;\n case \"em\":\n k = 12;\n break;\n case \"ex\":\n k = 6;\n break;\n default:\n throw \"Invalid unit: \" + unit;\n }\n var pageHeight = 0;\n var pageWidth = 0;\n\n // Dimensions are stored as user units and converted to points on output\n if (pageFormats.hasOwnProperty(format_as_string)) {\n pageHeight = pageFormats[format_as_string][1] / k;\n pageWidth = pageFormats[format_as_string][0] / k;\n } else {\n try {\n pageHeight = format[1];\n pageWidth = format[0];\n } catch (err) {\n throw new Error(\"Invalid format: \" + format);\n }\n }\n\n var tmp;\n // Handle page orientation\n if (orientation === \"p\" || orientation === \"portrait\") {\n orientation = \"p\";\n if (pageWidth > pageHeight) {\n tmp = pageWidth;\n pageWidth = pageHeight;\n pageHeight = tmp;\n }\n } else if (orientation === \"l\" || orientation === \"landscape\") {\n orientation = \"l\";\n if (pageHeight > pageWidth) {\n tmp = pageWidth;\n pageWidth = pageHeight;\n pageHeight = tmp;\n }\n } else {\n throw \"Invalid orientation: \" + orientation;\n }\n\n // Return information (k is the unit conversion ratio from pts)\n var info = {\n width: pageWidth,\n height: pageHeight,\n unit: unit,\n k: k,\n orientation: orientation\n };\n return info;\n };\n\n /**\n * @typedef FontFace\n *\n * The font-face type implements an interface similar to that of the font-face CSS rule,\n * and is used by jsPDF to match fonts when the font property of CanvasRenderingContext2D\n * is updated.\n *\n * All properties expect values similar to those in the font-face CSS rule. A difference\n * is the font-family, which do not need to be enclosed in double-quotes when containing\n * spaces like in CSS.\n *\n * @property {string} family The name of the font-family.\n * @property {string|undefined} style The style that this font-face defines, e.g. 'italic'.\n * @property {string|number|undefined} weight The weight of the font, either as a string or a number (400, 500, 600, e.g.)\n * @property {string|undefined} stretch The stretch of the font, e.g. condensed, normal, expanded.\n * @property {Object[]} src A list of URLs from where fonts of various formats can be fetched.\n * @property {string} [src] url A URL to a font of a specific format.\n * @property {string} [src] format Format of the font referenced by the URL.\n */\n\n /**\n * Generate a PDF from an HTML element or string using.\n *\n * @name html\n * @function\n * @param {HTMLElement|string} source The source HTMLElement or a string containing HTML.\n * @param {Object} [options] Collection of settings\n * @param {function} [options.callback] The mandatory callback-function gets as first parameter the current jsPDF instance\n * @param {(number|number[])=} [options.margin] Page margins [top, right, bottom, left]. Default is 0.\n * @param {(boolean|'slice'|'text')=} [options.autoPaging] The auto paging mode.\n *
      \n *
    • \n * false: Auto paging is disabled.\n *
    • \n *
    • \n * true or 'slice': Will cut shapes or text chunks across page breaks. Will possibly\n * slice text in half, making it difficult to read.\n *
    • \n *
    • \n * 'text': Trys not to cut text in half across page breaks. Works best for documents consisting\n * mostly of a single column of text.\n *
    • \n *
    \n * Default is true.\n * @param {string} [options.filename] name of the file\n * @param {HTMLOptionImage} [options.image] image settings when converting HTML to image\n * @param {Html2CanvasOptions} [options.html2canvas] html2canvas options\n * @param {FontFace[]} [options.fontFaces] A list of font-faces to match when resolving fonts. Fonts will be added to the PDF based on the specified URL. If omitted, the font match algorithm falls back to old algorithm.\n * @param {jsPDF} [options.jsPDF] jsPDF instance\n * @param {number=} [options.x] x position on the PDF document in jsPDF units.\n * @param {number=} [options.y] y position on the PDF document in jsPDF units.\n * @param {number=} [options.width] The target width in the PDF document in jsPDF units. The rendered element will be\n * scaled such that it fits into the specified width. Has no effect if either the html2canvas.scale is\n * specified or the windowWidth option is NOT specified.\n * @param {number=} [options.windowWidth] The window width in CSS pixels. In contrast to the\n * html2canvas.windowWidth option, this option affects the actual container size while rendering and\n * does NOT affect CSS media queries. This option only has an effect, if the width option is also specified.\n *\n * @example\n * var doc = new jsPDF();\n *\n * doc.html(document.body, {\n * callback: function (doc) {\n * doc.save();\n * },\n * x: 10,\n * y: 10\n * });\n */\n jsPDFAPI.html = function(src, options) {\n \"use strict\";\n\n options = options || {};\n options.callback = options.callback || function() {};\n options.html2canvas = options.html2canvas || {};\n options.html2canvas.canvas = options.html2canvas.canvas || this.canvas;\n options.jsPDF = options.jsPDF || this;\n options.fontFaces = options.fontFaces\n ? options.fontFaces.map(normalizeFontFace)\n : null;\n\n // Create a new worker with the given options.\n var worker = new Worker(options);\n\n if (!options.worker) {\n // If worker is not set to true, perform the traditional 'simple' operation.\n return worker.from(src).doCallback();\n } else {\n // Otherwise, return the worker for new Promise-based operation.\n return worker;\n }\n };\n})(jsPDF.API);\n","/**\n * @license\n * Copyright (c) 2014 Steven Spungin (TwelveTone LLC) steven@twelvetone.tv\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF Outline PlugIn\n *\n * Generates a PDF Outline\n * @name outline\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n var namesOid;\n //var destsGoto = [];\n\n jsPDFAPI.events.push([\n \"postPutResources\",\n function() {\n var pdf = this;\n var rx = /^(\\d+) 0 obj$/;\n\n // Write action goto objects for each page\n // this.outline.destsGoto = [];\n // for (var i = 0; i < totalPages; i++) {\n // var id = pdf.internal.newObject();\n // this.outline.destsGoto.push(id);\n // pdf.internal.write(\"<> endobj\");\n // }\n //\n // for (var i = 0; i < dests.length; i++) {\n // pdf.internal.write(\"(page_\" + (i + 1) + \")\" + dests[i] + \" 0\n // R\");\n // }\n //\n if (this.outline.root.children.length > 0) {\n var lines = pdf.outline.render().split(/\\r\\n/);\n for (var i = 0; i < lines.length; i++) {\n var line = lines[i];\n var m = rx.exec(line);\n if (m != null) {\n var oid = m[1];\n pdf.internal.newObjectDeferredBegin(oid, false);\n }\n pdf.internal.write(line);\n }\n }\n\n // This code will write named destination for each page reference\n // (page_1, etc)\n if (this.outline.createNamedDestinations) {\n var totalPages = this.internal.pages.length;\n // WARNING: this assumes jsPDF starts on page 3 and pageIDs\n // follow 5, 7, 9, etc\n // Write destination objects for each page\n var dests = [];\n for (var i = 0; i < totalPages; i++) {\n var id = pdf.internal.newObject();\n dests.push(id);\n var info = pdf.internal.getPageInfo(i + 1);\n pdf.internal.write(\n \"<< /D[\" + info.objId + \" 0 R /XYZ null null null]>> endobj\"\n );\n }\n\n // assign a name for each destination\n var names2Oid = pdf.internal.newObject();\n pdf.internal.write(\"<< /Names [ \");\n for (var i = 0; i < dests.length; i++) {\n pdf.internal.write(\"(page_\" + (i + 1) + \")\" + dests[i] + \" 0 R\");\n }\n pdf.internal.write(\" ] >>\", \"endobj\");\n\n // var kids = pdf.internal.newObject();\n // pdf.internal.write('<< /Kids [ ' + names2Oid + ' 0 R');\n // pdf.internal.write(' ] >>', 'endobj');\n\n namesOid = pdf.internal.newObject();\n pdf.internal.write(\"<< /Dests \" + names2Oid + \" 0 R\");\n pdf.internal.write(\">>\", \"endobj\");\n }\n }\n ]);\n\n jsPDFAPI.events.push([\n \"putCatalog\",\n function() {\n var pdf = this;\n if (pdf.outline.root.children.length > 0) {\n pdf.internal.write(\n \"/Outlines\",\n this.outline.makeRef(this.outline.root)\n );\n if (this.outline.createNamedDestinations) {\n pdf.internal.write(\"/Names \" + namesOid + \" 0 R\");\n }\n // Open with Bookmarks showing\n // pdf.internal.write(\"/PageMode /UseOutlines\");\n }\n }\n ]);\n\n jsPDFAPI.events.push([\n \"initialized\",\n function() {\n var pdf = this;\n\n pdf.outline = {\n createNamedDestinations: false,\n root: {\n children: []\n }\n };\n\n /**\n * Options: pageNumber\n */\n pdf.outline.add = function(parent, title, options) {\n var item = {\n title: title,\n options: options,\n children: []\n };\n if (parent == null) {\n parent = this.root;\n }\n parent.children.push(item);\n return item;\n };\n\n pdf.outline.render = function() {\n this.ctx = {};\n this.ctx.val = \"\";\n this.ctx.pdf = pdf;\n\n this.genIds_r(this.root);\n this.renderRoot(this.root);\n this.renderItems(this.root);\n\n return this.ctx.val;\n };\n\n pdf.outline.genIds_r = function(node) {\n node.id = pdf.internal.newObjectDeferred();\n for (var i = 0; i < node.children.length; i++) {\n this.genIds_r(node.children[i]);\n }\n };\n\n pdf.outline.renderRoot = function(node) {\n this.objStart(node);\n this.line(\"/Type /Outlines\");\n if (node.children.length > 0) {\n this.line(\"/First \" + this.makeRef(node.children[0]));\n this.line(\n \"/Last \" + this.makeRef(node.children[node.children.length - 1])\n );\n }\n this.line(\n \"/Count \" +\n this.count_r(\n {\n count: 0\n },\n node\n )\n );\n this.objEnd();\n };\n\n pdf.outline.renderItems = function(node) {\n var getVerticalCoordinateString = this.ctx.pdf.internal\n .getVerticalCoordinateString;\n for (var i = 0; i < node.children.length; i++) {\n var item = node.children[i];\n this.objStart(item);\n\n this.line(\"/Title \" + this.makeString(item.title));\n\n this.line(\"/Parent \" + this.makeRef(node));\n if (i > 0) {\n this.line(\"/Prev \" + this.makeRef(node.children[i - 1]));\n }\n if (i < node.children.length - 1) {\n this.line(\"/Next \" + this.makeRef(node.children[i + 1]));\n }\n if (item.children.length > 0) {\n this.line(\"/First \" + this.makeRef(item.children[0]));\n this.line(\n \"/Last \" + this.makeRef(item.children[item.children.length - 1])\n );\n }\n\n var count = (this.count = this.count_r(\n {\n count: 0\n },\n item\n ));\n if (count > 0) {\n this.line(\"/Count \" + count);\n }\n\n if (item.options) {\n if (item.options.pageNumber) {\n // Explicit Destination\n //WARNING this assumes page ids are 3,5,7, etc.\n var info = pdf.internal.getPageInfo(item.options.pageNumber);\n this.line(\n \"/Dest \" +\n \"[\" +\n info.objId +\n \" 0 R /XYZ 0 \" +\n getVerticalCoordinateString(0) +\n \" 0]\"\n );\n // this line does not work on all clients (pageNumber instead of page ref)\n //this.line('/Dest ' + '[' + (item.options.pageNumber - 1) + ' /XYZ 0 ' + this.ctx.pdf.internal.pageSize.getHeight() + ' 0]');\n\n // Named Destination\n // this.line('/Dest (page_' + (item.options.pageNumber) + ')');\n\n // Action Destination\n // var id = pdf.internal.newObject();\n // pdf.internal.write('<> endobj');\n // this.line('/A ' + id + ' 0 R' );\n }\n }\n this.objEnd();\n }\n for (var z = 0; z < node.children.length; z++) {\n this.renderItems(node.children[z]);\n }\n };\n\n pdf.outline.line = function(text) {\n this.ctx.val += text + \"\\r\\n\";\n };\n\n pdf.outline.makeRef = function(node) {\n return node.id + \" 0 R\";\n };\n\n pdf.outline.makeString = function(val) {\n return \"(\" + pdf.internal.pdfEscape(val) + \")\";\n };\n\n pdf.outline.objStart = function(node) {\n this.ctx.val += \"\\r\\n\" + node.id + \" 0 obj\" + \"\\r\\n<<\\r\\n\";\n };\n\n pdf.outline.objEnd = function() {\n this.ctx.val += \">> \\r\\n\" + \"endobj\" + \"\\r\\n\";\n };\n\n pdf.outline.count_r = function(ctx, node) {\n for (var i = 0; i < node.children.length; i++) {\n ctx.count++;\n this.count_r(ctx, node.children[i]);\n }\n return ctx.count;\n };\n }\n ]);\n\n return this;\n})(jsPDF.API);\n","/**\n * @license\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF jpeg Support PlugIn\n *\n * @name jpeg_support\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n /**\n * 0xc0 (SOF) Huffman - Baseline DCT\n * 0xc1 (SOF) Huffman - Extended sequential DCT\n * 0xc2 Progressive DCT (SOF2)\n * 0xc3 Spatial (sequential) lossless (SOF3)\n * 0xc4 Differential sequential DCT (SOF5)\n * 0xc5 Differential progressive DCT (SOF6)\n * 0xc6 Differential spatial (SOF7)\n * 0xc7\n */\n var markers = [0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7];\n\n //takes a string imgData containing the raw bytes of\n //a jpeg image and returns [width, height]\n //Algorithm from: http://www.64lines.com/jpeg-width-height\n var getJpegInfo = function(imgData) {\n var width, height, numcomponents;\n var blockLength = imgData.charCodeAt(4) * 256 + imgData.charCodeAt(5);\n var len = imgData.length;\n var result = { width: 0, height: 0, numcomponents: 1 };\n for (var i = 4; i < len; i += 2) {\n i += blockLength;\n if (markers.indexOf(imgData.charCodeAt(i + 1)) !== -1) {\n height = imgData.charCodeAt(i + 5) * 256 + imgData.charCodeAt(i + 6);\n width = imgData.charCodeAt(i + 7) * 256 + imgData.charCodeAt(i + 8);\n numcomponents = imgData.charCodeAt(i + 9);\n result = { width: width, height: height, numcomponents: numcomponents };\n break;\n } else {\n blockLength =\n imgData.charCodeAt(i + 2) * 256 + imgData.charCodeAt(i + 3);\n }\n }\n return result;\n };\n\n /**\n * @ignore\n */\n jsPDFAPI.processJPEG = function(\n data,\n index,\n alias,\n compression,\n dataAsBinaryString,\n colorSpace\n ) {\n var filter = this.decode.DCT_DECODE,\n bpc = 8,\n dims,\n result = null;\n\n if (\n typeof data === \"string\" ||\n this.__addimage__.isArrayBuffer(data) ||\n this.__addimage__.isArrayBufferView(data)\n ) {\n // if we already have a stored binary string rep use that\n data = dataAsBinaryString || data;\n data = this.__addimage__.isArrayBuffer(data)\n ? new Uint8Array(data)\n : data;\n data = this.__addimage__.isArrayBufferView(data)\n ? this.__addimage__.arrayBufferToBinaryString(data)\n : data;\n\n dims = getJpegInfo(data);\n switch (dims.numcomponents) {\n case 1:\n colorSpace = this.color_spaces.DEVICE_GRAY;\n break;\n case 4:\n colorSpace = this.color_spaces.DEVICE_CMYK;\n break;\n case 3:\n colorSpace = this.color_spaces.DEVICE_RGB;\n break;\n }\n\n result = {\n data: data,\n width: dims.width,\n height: dims.height,\n colorSpace: colorSpace,\n bitsPerComponent: bpc,\n filter: filter,\n index: index,\n alias: alias\n };\n }\n return result;\n };\n})(jsPDF.API);\n","// Generated by CoffeeScript 1.4.0\n\n/**\n * @license\n * PNG.js\n * Copyright (c) 2011 Devon Govett\n * MIT LICENSE\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this\n * software and associated documentation files (the \"Software\"), to deal in the Software\n * without restriction, including without limitation the rights to use, copy, modify, merge,\n * publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons\n * to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or\n * substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING\n * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\nimport { unzlibSync } from \"./fflate.js\";\nimport { globalObject } from \"./globalObject.js\";\n\nvar PNG = (function() {\n var APNG_BLEND_OP_OVER,\n APNG_BLEND_OP_SOURCE,\n APNG_DISPOSE_OP_BACKGROUND,\n APNG_DISPOSE_OP_NONE,\n APNG_DISPOSE_OP_PREVIOUS,\n makeImage,\n scratchCanvas,\n scratchCtx;\n\n APNG_DISPOSE_OP_NONE = 0;\n\n APNG_DISPOSE_OP_BACKGROUND = 1;\n\n APNG_DISPOSE_OP_PREVIOUS = 2;\n\n APNG_BLEND_OP_SOURCE = 0;\n\n APNG_BLEND_OP_OVER = 1;\n\n function PNG(data) {\n var chunkSize,\n colors,\n palLen,\n delayDen,\n delayNum,\n frame,\n i,\n index,\n key,\n section,\n palShort,\n text,\n _i,\n _j,\n _ref;\n this.data = data;\n this.pos = 8;\n this.palette = [];\n this.imgData = [];\n this.transparency = {};\n this.animation = null;\n this.text = {};\n frame = null;\n while (true) {\n chunkSize = this.readUInt32();\n section = function() {\n var _i, _results;\n _results = [];\n for (i = _i = 0; _i < 4; i = ++_i) {\n _results.push(String.fromCharCode(this.data[this.pos++]));\n }\n return _results;\n }\n .call(this)\n .join(\"\");\n switch (section) {\n case \"IHDR\":\n this.width = this.readUInt32();\n this.height = this.readUInt32();\n this.bits = this.data[this.pos++];\n this.colorType = this.data[this.pos++];\n this.compressionMethod = this.data[this.pos++];\n this.filterMethod = this.data[this.pos++];\n this.interlaceMethod = this.data[this.pos++];\n break;\n case \"acTL\":\n this.animation = {\n numFrames: this.readUInt32(),\n numPlays: this.readUInt32() || Infinity,\n frames: []\n };\n break;\n case \"PLTE\":\n this.palette = this.read(chunkSize);\n break;\n case \"fcTL\":\n if (frame) {\n this.animation.frames.push(frame);\n }\n this.pos += 4;\n frame = {\n width: this.readUInt32(),\n height: this.readUInt32(),\n xOffset: this.readUInt32(),\n yOffset: this.readUInt32()\n };\n delayNum = this.readUInt16();\n delayDen = this.readUInt16() || 100;\n frame.delay = (1000 * delayNum) / delayDen;\n frame.disposeOp = this.data[this.pos++];\n frame.blendOp = this.data[this.pos++];\n frame.data = [];\n break;\n case \"IDAT\":\n case \"fdAT\":\n if (section === \"fdAT\") {\n this.pos += 4;\n chunkSize -= 4;\n }\n data = (frame != null ? frame.data : void 0) || this.imgData;\n for (\n i = _i = 0;\n 0 <= chunkSize ? _i < chunkSize : _i > chunkSize;\n i = 0 <= chunkSize ? ++_i : --_i\n ) {\n data.push(this.data[this.pos++]);\n }\n break;\n case \"tRNS\":\n this.transparency = {};\n switch (this.colorType) {\n case 3:\n palLen = this.palette.length / 3;\n this.transparency.indexed = this.read(chunkSize);\n if (this.transparency.indexed.length > palLen)\n throw new Error(\"More transparent colors than palette size\");\n /*\n * According to the PNG spec trns should be increased to the same size as palette if shorter\n */\n //palShort = 255 - this.transparency.indexed.length;\n palShort = palLen - this.transparency.indexed.length;\n if (palShort > 0) {\n for (\n i = _j = 0;\n 0 <= palShort ? _j < palShort : _j > palShort;\n i = 0 <= palShort ? ++_j : --_j\n ) {\n this.transparency.indexed.push(255);\n }\n }\n break;\n case 0:\n this.transparency.grayscale = this.read(chunkSize)[0];\n break;\n case 2:\n this.transparency.rgb = this.read(chunkSize);\n }\n break;\n case \"tEXt\":\n text = this.read(chunkSize);\n index = text.indexOf(0);\n key = String.fromCharCode.apply(String, text.slice(0, index));\n this.text[key] = String.fromCharCode.apply(\n String,\n text.slice(index + 1)\n );\n break;\n case \"IEND\":\n if (frame) {\n this.animation.frames.push(frame);\n }\n this.colors = function() {\n switch (this.colorType) {\n case 0:\n case 3:\n case 4:\n return 1;\n case 2:\n case 6:\n return 3;\n }\n }.call(this);\n this.hasAlphaChannel = (_ref = this.colorType) === 4 || _ref === 6;\n colors = this.colors + (this.hasAlphaChannel ? 1 : 0);\n this.pixelBitlength = this.bits * colors;\n this.colorSpace = function() {\n switch (this.colors) {\n case 1:\n return \"DeviceGray\";\n case 3:\n return \"DeviceRGB\";\n }\n }.call(this);\n this.imgData = new Uint8Array(this.imgData);\n return;\n default:\n this.pos += chunkSize;\n }\n this.pos += 4;\n if (this.pos > this.data.length) {\n throw new Error(\"Incomplete or corrupt PNG file\");\n }\n }\n }\n\n PNG.prototype.read = function(bytes) {\n var i, _i, _results;\n _results = [];\n for (\n i = _i = 0;\n 0 <= bytes ? _i < bytes : _i > bytes;\n i = 0 <= bytes ? ++_i : --_i\n ) {\n _results.push(this.data[this.pos++]);\n }\n return _results;\n };\n\n PNG.prototype.readUInt32 = function() {\n var b1, b2, b3, b4;\n b1 = this.data[this.pos++] << 24;\n b2 = this.data[this.pos++] << 16;\n b3 = this.data[this.pos++] << 8;\n b4 = this.data[this.pos++];\n return b1 | b2 | b3 | b4;\n };\n\n PNG.prototype.readUInt16 = function() {\n var b1, b2;\n b1 = this.data[this.pos++] << 8;\n b2 = this.data[this.pos++];\n return b1 | b2;\n };\n\n PNG.prototype.decodePixels = function(data) {\n var pixelBytes = this.pixelBitlength / 8;\n var fullPixels = new Uint8Array(this.width * this.height * pixelBytes);\n var pos = 0;\n var _this = this;\n\n if (data == null) {\n data = this.imgData;\n }\n if (data.length === 0) {\n return new Uint8Array(0);\n }\n\n data = unzlibSync(data);\n function pass(x0, y0, dx, dy) {\n var abyte,\n c,\n col,\n i,\n left,\n length,\n p,\n pa,\n paeth,\n pb,\n pc,\n pixels,\n row,\n scanlineLength,\n upper,\n upperLeft,\n _i,\n _j,\n _k,\n _l,\n _m;\n var w = Math.ceil((_this.width - x0) / dx),\n h = Math.ceil((_this.height - y0) / dy);\n var isFull = _this.width == w && _this.height == h;\n scanlineLength = pixelBytes * w;\n pixels = isFull ? fullPixels : new Uint8Array(scanlineLength * h);\n length = data.length;\n row = 0;\n c = 0;\n while (row < h && pos < length) {\n switch (data[pos++]) {\n case 0:\n for (i = _i = 0; _i < scanlineLength; i = _i += 1) {\n pixels[c++] = data[pos++];\n }\n break;\n case 1:\n for (i = _j = 0; _j < scanlineLength; i = _j += 1) {\n abyte = data[pos++];\n left = i < pixelBytes ? 0 : pixels[c - pixelBytes];\n pixels[c++] = (abyte + left) % 256;\n }\n break;\n case 2:\n for (i = _k = 0; _k < scanlineLength; i = _k += 1) {\n abyte = data[pos++];\n col = (i - (i % pixelBytes)) / pixelBytes;\n upper =\n row &&\n pixels[\n (row - 1) * scanlineLength +\n col * pixelBytes +\n (i % pixelBytes)\n ];\n pixels[c++] = (upper + abyte) % 256;\n }\n break;\n case 3:\n for (i = _l = 0; _l < scanlineLength; i = _l += 1) {\n abyte = data[pos++];\n col = (i - (i % pixelBytes)) / pixelBytes;\n left = i < pixelBytes ? 0 : pixels[c - pixelBytes];\n upper =\n row &&\n pixels[\n (row - 1) * scanlineLength +\n col * pixelBytes +\n (i % pixelBytes)\n ];\n pixels[c++] = (abyte + Math.floor((left + upper) / 2)) % 256;\n }\n break;\n case 4:\n for (i = _m = 0; _m < scanlineLength; i = _m += 1) {\n abyte = data[pos++];\n col = (i - (i % pixelBytes)) / pixelBytes;\n left = i < pixelBytes ? 0 : pixels[c - pixelBytes];\n if (row === 0) {\n upper = upperLeft = 0;\n } else {\n upper =\n pixels[\n (row - 1) * scanlineLength +\n col * pixelBytes +\n (i % pixelBytes)\n ];\n upperLeft =\n col &&\n pixels[\n (row - 1) * scanlineLength +\n (col - 1) * pixelBytes +\n (i % pixelBytes)\n ];\n }\n p = left + upper - upperLeft;\n pa = Math.abs(p - left);\n pb = Math.abs(p - upper);\n pc = Math.abs(p - upperLeft);\n if (pa <= pb && pa <= pc) {\n paeth = left;\n } else if (pb <= pc) {\n paeth = upper;\n } else {\n paeth = upperLeft;\n }\n pixels[c++] = (abyte + paeth) % 256;\n }\n break;\n default:\n throw new Error(\"Invalid filter algorithm: \" + data[pos - 1]);\n }\n if (!isFull) {\n var fullPos = ((y0 + row * dy) * _this.width + x0) * pixelBytes;\n var partPos = row * scanlineLength;\n for (i = 0; i < w; i += 1) {\n for (var j = 0; j < pixelBytes; j += 1)\n fullPixels[fullPos++] = pixels[partPos++];\n fullPos += (dx - 1) * pixelBytes;\n }\n }\n row++;\n }\n }\n if (_this.interlaceMethod == 1) {\n /*\n 1 6 4 6 2 6 4 6\n 7 7 7 7 7 7 7 7\n 5 6 5 6 5 6 5 6\n 7 7 7 7 7 7 7 7\n 3 6 4 6 3 6 4 6\n 7 7 7 7 7 7 7 7\n 5 6 5 6 5 6 5 6\n 7 7 7 7 7 7 7 7\n */\n pass(0, 0, 8, 8); // 1\n /* NOTE these seem to follow the pattern:\n * pass(x, 0, 2*x, 2*x);\n * pass(0, x, x, 2*x);\n * with x being 4, 2, 1.\n */\n pass(4, 0, 8, 8); // 2\n pass(0, 4, 4, 8); // 3\n\n pass(2, 0, 4, 4); // 4\n pass(0, 2, 2, 4); // 5\n\n pass(1, 0, 2, 2); // 6\n pass(0, 1, 1, 2); // 7\n } else {\n pass(0, 0, 1, 1);\n }\n return fullPixels;\n };\n\n PNG.prototype.decodePalette = function() {\n var c, i, length, palette, pos, ret, transparency, _i, _ref, _ref1;\n palette = this.palette;\n transparency = this.transparency.indexed || [];\n ret = new Uint8Array((transparency.length || 0) + palette.length);\n pos = 0;\n length = palette.length;\n c = 0;\n for (i = _i = 0, _ref = length; _i < _ref; i = _i += 3) {\n ret[pos++] = palette[i];\n ret[pos++] = palette[i + 1];\n ret[pos++] = palette[i + 2];\n ret[pos++] = (_ref1 = transparency[c++]) != null ? _ref1 : 255;\n }\n return ret;\n };\n\n PNG.prototype.copyToImageData = function(imageData, pixels) {\n var alpha, colors, data, i, input, j, k, length, palette, v, _ref;\n colors = this.colors;\n palette = null;\n alpha = this.hasAlphaChannel;\n if (this.palette.length) {\n palette =\n (_ref = this._decodedPalette) != null\n ? _ref\n : (this._decodedPalette = this.decodePalette());\n colors = 4;\n alpha = true;\n }\n data = imageData.data || imageData;\n length = data.length;\n input = palette || pixels;\n i = j = 0;\n if (colors === 1) {\n while (i < length) {\n k = palette ? pixels[i / 4] * 4 : j;\n v = input[k++];\n data[i++] = v;\n data[i++] = v;\n data[i++] = v;\n data[i++] = alpha ? input[k++] : 255;\n j = k;\n }\n } else {\n while (i < length) {\n k = palette ? pixels[i / 4] * 4 : j;\n data[i++] = input[k++];\n data[i++] = input[k++];\n data[i++] = input[k++];\n data[i++] = alpha ? input[k++] : 255;\n j = k;\n }\n }\n };\n\n PNG.prototype.decode = function() {\n var ret;\n ret = new Uint8Array(this.width * this.height * 4);\n this.copyToImageData(ret, this.decodePixels());\n return ret;\n };\n\n var hasBrowserCanvas = function() {\n if (Object.prototype.toString.call(globalObject) === \"[object Window]\") {\n try {\n scratchCanvas = globalObject.document.createElement(\"canvas\");\n scratchCtx = scratchCanvas.getContext(\"2d\");\n } catch (e) {\n return false;\n }\n return true;\n }\n return false;\n };\n\n hasBrowserCanvas();\n\n makeImage = function(imageData) {\n if (hasBrowserCanvas() === true) {\n var img;\n scratchCtx.width = imageData.width;\n scratchCtx.height = imageData.height;\n scratchCtx.clearRect(0, 0, imageData.width, imageData.height);\n scratchCtx.putImageData(imageData, 0, 0);\n img = new Image();\n img.src = scratchCanvas.toDataURL();\n return img;\n }\n throw new Error(\"This method requires a Browser with Canvas-capability.\");\n };\n\n PNG.prototype.decodeFrames = function(ctx) {\n var frame, i, imageData, pixels, _i, _len, _ref, _results;\n if (!this.animation) {\n return;\n }\n _ref = this.animation.frames;\n _results = [];\n for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) {\n frame = _ref[i];\n imageData = ctx.createImageData(frame.width, frame.height);\n pixels = this.decodePixels(new Uint8Array(frame.data));\n this.copyToImageData(imageData, pixels);\n frame.imageData = imageData;\n _results.push((frame.image = makeImage(imageData)));\n }\n return _results;\n };\n\n PNG.prototype.renderFrame = function(ctx, number) {\n var frame, frames, prev;\n frames = this.animation.frames;\n frame = frames[number];\n prev = frames[number - 1];\n if (number === 0) {\n ctx.clearRect(0, 0, this.width, this.height);\n }\n if (\n (prev != null ? prev.disposeOp : void 0) === APNG_DISPOSE_OP_BACKGROUND\n ) {\n ctx.clearRect(prev.xOffset, prev.yOffset, prev.width, prev.height);\n } else if (\n (prev != null ? prev.disposeOp : void 0) === APNG_DISPOSE_OP_PREVIOUS\n ) {\n ctx.putImageData(prev.imageData, prev.xOffset, prev.yOffset);\n }\n if (frame.blendOp === APNG_BLEND_OP_SOURCE) {\n ctx.clearRect(frame.xOffset, frame.yOffset, frame.width, frame.height);\n }\n return ctx.drawImage(frame.image, frame.xOffset, frame.yOffset);\n };\n\n PNG.prototype.animate = function(ctx) {\n var doFrame,\n frameNumber,\n frames,\n numFrames,\n numPlays,\n _ref,\n _this = this;\n frameNumber = 0;\n (_ref = this.animation),\n (numFrames = _ref.numFrames),\n (frames = _ref.frames),\n (numPlays = _ref.numPlays);\n return (doFrame = function() {\n var f, frame;\n f = frameNumber++ % numFrames;\n frame = frames[f];\n _this.renderFrame(ctx, f);\n if (numFrames > 1 && frameNumber / numFrames < numPlays) {\n return (_this.animation._timeout = setTimeout(doFrame, frame.delay));\n }\n })();\n };\n\n PNG.prototype.stopAnimation = function() {\n var _ref;\n return clearTimeout(\n (_ref = this.animation) != null ? _ref._timeout : void 0\n );\n };\n\n PNG.prototype.render = function(canvas) {\n var ctx, data;\n if (canvas._png) {\n canvas._png.stopAnimation();\n }\n canvas._png = this;\n canvas.width = this.width;\n canvas.height = this.height;\n ctx = canvas.getContext(\"2d\");\n if (this.animation) {\n this.decodeFrames(ctx);\n return this.animate(ctx);\n } else {\n data = ctx.createImageData(this.width, this.height);\n this.copyToImageData(data, this.decodePixels());\n return ctx.putImageData(data, 0, 0);\n }\n };\n\n return PNG;\n})();\n\nexport { PNG };\n","/** @license\n * MIT license.\n * Copyright (c) 2012 Willow Systems Corporation, https://github.com/willowsystems\n * 2014 Diego Casorran, https://github.com/diegocr\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF split_text_to_size plugin\n *\n * @name split_text_to_size\n * @module\n */\n(function(API) {\n \"use strict\";\n /**\n * Returns an array of length matching length of the 'word' string, with each\n * cell occupied by the width of the char in that position.\n *\n * @name getCharWidthsArray\n * @function\n * @param {string} text\n * @param {Object} options\n * @returns {Array}\n */\n var getCharWidthsArray = (API.getCharWidthsArray = function(text, options) {\n options = options || {};\n\n var activeFont = options.font || this.internal.getFont();\n var fontSize = options.fontSize || this.internal.getFontSize();\n var charSpace = options.charSpace || this.internal.getCharSpace();\n\n var widths = options.widths\n ? options.widths\n : activeFont.metadata.Unicode.widths;\n var widthsFractionOf = widths.fof ? widths.fof : 1;\n var kerning = options.kerning\n ? options.kerning\n : activeFont.metadata.Unicode.kerning;\n var kerningFractionOf = kerning.fof ? kerning.fof : 1;\n var doKerning = options.doKerning === false ? false : true;\n var kerningValue = 0;\n\n var i;\n var length = text.length;\n var char_code;\n var prior_char_code = 0; //for kerning\n var default_char_width = widths[0] || widthsFractionOf;\n var output = [];\n\n for (i = 0; i < length; i++) {\n char_code = text.charCodeAt(i);\n\n if (typeof activeFont.metadata.widthOfString === \"function\") {\n output.push(\n (activeFont.metadata.widthOfGlyph(\n activeFont.metadata.characterToGlyph(char_code)\n ) +\n charSpace * (1000 / fontSize) || 0) / 1000\n );\n } else {\n if (\n doKerning &&\n typeof kerning[char_code] === \"object\" &&\n !isNaN(parseInt(kerning[char_code][prior_char_code], 10))\n ) {\n kerningValue =\n kerning[char_code][prior_char_code] / kerningFractionOf;\n } else {\n kerningValue = 0;\n }\n output.push(\n (widths[char_code] || default_char_width) / widthsFractionOf +\n kerningValue\n );\n }\n prior_char_code = char_code;\n }\n\n return output;\n });\n\n /**\n * Returns a widths of string in a given font, if the font size is set as 1 point.\n *\n * In other words, this is \"proportional\" value. For 1 unit of font size, the length\n * of the string will be that much.\n *\n * Multiply by font size to get actual width in *points*\n * Then divide by 72 to get inches or divide by (72/25.6) to get 'mm' etc.\n *\n * @name getStringUnitWidth\n * @public\n * @function\n * @param {string} text\n * @param {string} options\n * @returns {number} result\n */\n var getStringUnitWidth = (API.getStringUnitWidth = function(text, options) {\n options = options || {};\n\n var fontSize = options.fontSize || this.internal.getFontSize();\n var font = options.font || this.internal.getFont();\n var charSpace = options.charSpace || this.internal.getCharSpace();\n var result = 0;\n\n if (API.processArabic) {\n text = API.processArabic(text);\n }\n\n if (typeof font.metadata.widthOfString === \"function\") {\n result =\n font.metadata.widthOfString(text, fontSize, charSpace) / fontSize;\n } else {\n result = getCharWidthsArray\n .apply(this, arguments)\n .reduce(function(pv, cv) {\n return pv + cv;\n }, 0);\n }\n return result;\n });\n\n /**\n returns array of lines\n */\n var splitLongWord = function(word, widths_array, firstLineMaxLen, maxLen) {\n var answer = [];\n\n // 1st, chop off the piece that can fit on the hanging line.\n var i = 0,\n l = word.length,\n workingLen = 0;\n while (i !== l && workingLen + widths_array[i] < firstLineMaxLen) {\n workingLen += widths_array[i];\n i++;\n }\n // this is first line.\n answer.push(word.slice(0, i));\n\n // 2nd. Split the rest into maxLen pieces.\n var startOfLine = i;\n workingLen = 0;\n while (i !== l) {\n if (workingLen + widths_array[i] > maxLen) {\n answer.push(word.slice(startOfLine, i));\n workingLen = 0;\n startOfLine = i;\n }\n workingLen += widths_array[i];\n i++;\n }\n if (startOfLine !== i) {\n answer.push(word.slice(startOfLine, i));\n }\n\n return answer;\n };\n\n // Note, all sizing inputs for this function must be in \"font measurement units\"\n // By default, for PDF, it's \"point\".\n var splitParagraphIntoLines = function(text, maxlen, options) {\n // at this time works only on Western scripts, ones with space char\n // separating the words. Feel free to expand.\n\n if (!options) {\n options = {};\n }\n\n var line = [],\n lines = [line],\n line_length = options.textIndent || 0,\n separator_length = 0,\n current_word_length = 0,\n word,\n widths_array,\n words = text.split(\" \"),\n spaceCharWidth = getCharWidthsArray.apply(this, [\" \", options])[0],\n i,\n l,\n tmp,\n lineIndent;\n\n if (options.lineIndent === -1) {\n lineIndent = words[0].length + 2;\n } else {\n lineIndent = options.lineIndent || 0;\n }\n if (lineIndent) {\n var pad = Array(lineIndent).join(\" \"),\n wrds = [];\n words.map(function(wrd) {\n wrd = wrd.split(/\\s*\\n/);\n if (wrd.length > 1) {\n wrds = wrds.concat(\n wrd.map(function(wrd, idx) {\n return (idx && wrd.length ? \"\\n\" : \"\") + wrd;\n })\n );\n } else {\n wrds.push(wrd[0]);\n }\n });\n words = wrds;\n lineIndent = getStringUnitWidth.apply(this, [pad, options]);\n }\n\n for (i = 0, l = words.length; i < l; i++) {\n var force = 0;\n\n word = words[i];\n if (lineIndent && word[0] == \"\\n\") {\n word = word.substr(1);\n force = 1;\n }\n widths_array = getCharWidthsArray.apply(this, [word, options]);\n current_word_length = widths_array.reduce(function(pv, cv) {\n return pv + cv;\n }, 0);\n\n if (\n line_length + separator_length + current_word_length > maxlen ||\n force\n ) {\n if (current_word_length > maxlen) {\n // this happens when you have space-less long URLs for example.\n // we just chop these to size. We do NOT insert hiphens\n tmp = splitLongWord.apply(this, [\n word,\n widths_array,\n maxlen - (line_length + separator_length),\n maxlen\n ]);\n // first line we add to existing line object\n line.push(tmp.shift()); // it's ok to have extra space indicator there\n // last line we make into new line object\n line = [tmp.pop()];\n // lines in the middle we apped to lines object as whole lines\n while (tmp.length) {\n lines.push([tmp.shift()]); // single fragment occupies whole line\n }\n current_word_length = widths_array\n .slice(word.length - (line[0] ? line[0].length : 0))\n .reduce(function(pv, cv) {\n return pv + cv;\n }, 0);\n } else {\n // just put it on a new line\n line = [word];\n }\n\n // now we attach new line to lines\n lines.push(line);\n line_length = current_word_length + lineIndent;\n separator_length = spaceCharWidth;\n } else {\n line.push(word);\n\n line_length += separator_length + current_word_length;\n separator_length = spaceCharWidth;\n }\n }\n\n var postProcess;\n if (lineIndent) {\n postProcess = function(ln, idx) {\n return (idx ? pad : \"\") + ln.join(\" \");\n };\n } else {\n postProcess = function(ln) {\n return ln.join(\" \");\n };\n }\n\n return lines.map(postProcess);\n };\n\n /**\n * Splits a given string into an array of strings. Uses 'size' value\n * (in measurement units declared as default for the jsPDF instance)\n * and the font's \"widths\" and \"Kerning\" tables, where available, to\n * determine display length of a given string for a given font.\n *\n * We use character's 100% of unit size (height) as width when Width\n * table or other default width is not available.\n *\n * @name splitTextToSize\n * @public\n * @function\n * @param {string} text Unencoded, regular JavaScript (Unicode, UTF-16 / UCS-2) string.\n * @param {number} size Nominal number, measured in units default to this instance of jsPDF.\n * @param {Object} options Optional flags needed for chopper to do the right thing.\n * @returns {Array} array Array with strings chopped to size.\n */\n API.splitTextToSize = function(text, maxlen, options) {\n \"use strict\";\n\n options = options || {};\n\n var fsize = options.fontSize || this.internal.getFontSize(),\n newOptions = function(options) {\n var widths = {\n 0: 1\n },\n kerning = {};\n\n if (!options.widths || !options.kerning) {\n var f = this.internal.getFont(options.fontName, options.fontStyle),\n encoding = \"Unicode\";\n // NOT UTF8, NOT UTF16BE/LE, NOT UCS2BE/LE\n // Actual JavaScript-native String's 16bit char codes used.\n // no multi-byte logic here\n\n if (f.metadata[encoding]) {\n return {\n widths: f.metadata[encoding].widths || widths,\n kerning: f.metadata[encoding].kerning || kerning\n };\n } else {\n return {\n font: f.metadata,\n fontSize: this.internal.getFontSize(),\n charSpace: this.internal.getCharSpace()\n };\n }\n } else {\n return {\n widths: options.widths,\n kerning: options.kerning\n };\n }\n }.call(this, options);\n\n // first we split on end-of-line chars\n var paragraphs;\n if (Array.isArray(text)) {\n paragraphs = text;\n } else {\n paragraphs = String(text).split(/\\r?\\n/);\n }\n\n // now we convert size (max length of line) into \"font size units\"\n // at present time, the \"font size unit\" is always 'point'\n // 'proportional' means, \"in proportion to font size\"\n var fontUnit_maxLen = (1.0 * this.internal.scaleFactor * maxlen) / fsize;\n // at this time, fsize is always in \"points\" regardless of the default measurement unit of the doc.\n // this may change in the future?\n // until then, proportional_maxlen is likely to be in 'points'\n\n // If first line is to be indented (shorter or longer) than maxLen\n // we indicate that by using CSS-style \"text-indent\" option.\n // here it's in font units too (which is likely 'points')\n // it can be negative (which makes the first line longer than maxLen)\n newOptions.textIndent = options.textIndent\n ? (options.textIndent * 1.0 * this.internal.scaleFactor) / fsize\n : 0;\n newOptions.lineIndent = options.lineIndent;\n\n var i,\n l,\n output = [];\n for (i = 0, l = paragraphs.length; i < l; i++) {\n output = output.concat(\n splitParagraphIntoLines.apply(this, [\n paragraphs[i],\n fontUnit_maxLen,\n newOptions\n ])\n );\n }\n\n return output;\n };\n})(jsPDF.API);\n","/**\n * @license\n * (c) Dean McNamee , 2013.\n *\n * https://github.com/deanm/omggif\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n *\n * omggif is a JavaScript implementation of a GIF 89a encoder and decoder,\n * including animation and compression. It does not rely on any specific\n * underlying system, so should run in the browser, Node, or Plask.\n */\n\n\"use strict\";\n\nimport { console } from \"./console.js\";\n\nfunction GifWriter(buf, width, height, gopts) {\n var p = 0;\n\n var gopts = gopts === undefined ? {} : gopts;\n var loop_count = gopts.loop === undefined ? null : gopts.loop;\n var global_palette = gopts.palette === undefined ? null : gopts.palette;\n\n if (width <= 0 || height <= 0 || width > 65535 || height > 65535)\n throw new Error(\"Width/Height invalid.\");\n\n function check_palette_and_num_colors(palette) {\n var num_colors = palette.length;\n if (num_colors < 2 || num_colors > 256 || num_colors & (num_colors - 1)) {\n throw new Error(\n \"Invalid code/color length, must be power of 2 and 2 .. 256.\"\n );\n }\n return num_colors;\n }\n\n // - Header.\n buf[p++] = 0x47;\n buf[p++] = 0x49;\n buf[p++] = 0x46; // GIF\n buf[p++] = 0x38;\n buf[p++] = 0x39;\n buf[p++] = 0x61; // 89a\n\n // Handling of Global Color Table (palette) and background index.\n var gp_num_colors_pow2 = 0;\n var background = 0;\n if (global_palette !== null) {\n var gp_num_colors = check_palette_and_num_colors(global_palette);\n while ((gp_num_colors >>= 1)) ++gp_num_colors_pow2;\n gp_num_colors = 1 << gp_num_colors_pow2;\n --gp_num_colors_pow2;\n if (gopts.background !== undefined) {\n background = gopts.background;\n if (background >= gp_num_colors)\n throw new Error(\"Background index out of range.\");\n // The GIF spec states that a background index of 0 should be ignored, so\n // this is probably a mistake and you really want to set it to another\n // slot in the palette. But actually in the end most browsers, etc end\n // up ignoring this almost completely (including for dispose background).\n if (background === 0)\n throw new Error(\"Background index explicitly passed as 0.\");\n }\n }\n\n // - Logical Screen Descriptor.\n // NOTE(deanm): w/h apparently ignored by implementations, but set anyway.\n buf[p++] = width & 0xff;\n buf[p++] = (width >> 8) & 0xff;\n buf[p++] = height & 0xff;\n buf[p++] = (height >> 8) & 0xff;\n // NOTE: Indicates 0-bpp original color resolution (unused?).\n buf[p++] = (global_palette !== null ? 0x80 : 0) | gp_num_colors_pow2; // Global Color Table Flag. // NOTE: No sort flag (unused?).\n buf[p++] = background; // Background Color Index.\n buf[p++] = 0; // Pixel aspect ratio (unused?).\n\n // - Global Color Table\n if (global_palette !== null) {\n for (var i = 0, il = global_palette.length; i < il; ++i) {\n var rgb = global_palette[i];\n buf[p++] = (rgb >> 16) & 0xff;\n buf[p++] = (rgb >> 8) & 0xff;\n buf[p++] = rgb & 0xff;\n }\n }\n\n if (loop_count !== null) {\n // Netscape block for looping.\n if (loop_count < 0 || loop_count > 65535)\n throw new Error(\"Loop count invalid.\");\n // Extension code, label, and length.\n buf[p++] = 0x21;\n buf[p++] = 0xff;\n buf[p++] = 0x0b;\n // NETSCAPE2.0\n buf[p++] = 0x4e;\n buf[p++] = 0x45;\n buf[p++] = 0x54;\n buf[p++] = 0x53;\n buf[p++] = 0x43;\n buf[p++] = 0x41;\n buf[p++] = 0x50;\n buf[p++] = 0x45;\n buf[p++] = 0x32;\n buf[p++] = 0x2e;\n buf[p++] = 0x30;\n // Sub-block\n buf[p++] = 0x03;\n buf[p++] = 0x01;\n buf[p++] = loop_count & 0xff;\n buf[p++] = (loop_count >> 8) & 0xff;\n buf[p++] = 0x00; // Terminator.\n }\n\n var ended = false;\n\n this.addFrame = function(x, y, w, h, indexed_pixels, opts) {\n if (ended === true) {\n --p;\n ended = false;\n } // Un-end.\n\n opts = opts === undefined ? {} : opts;\n\n // TODO(deanm): Bounds check x, y. Do they need to be within the virtual\n // canvas width/height, I imagine?\n if (x < 0 || y < 0 || x > 65535 || y > 65535)\n throw new Error(\"x/y invalid.\");\n\n if (w <= 0 || h <= 0 || w > 65535 || h > 65535)\n throw new Error(\"Width/Height invalid.\");\n\n if (indexed_pixels.length < w * h)\n throw new Error(\"Not enough pixels for the frame size.\");\n\n var using_local_palette = true;\n var palette = opts.palette;\n if (palette === undefined || palette === null) {\n using_local_palette = false;\n palette = global_palette;\n }\n\n if (palette === undefined || palette === null)\n throw new Error(\"Must supply either a local or global palette.\");\n\n var num_colors = check_palette_and_num_colors(palette);\n\n // Compute the min_code_size (power of 2), destroying num_colors.\n var min_code_size = 0;\n while ((num_colors >>= 1)) ++min_code_size;\n num_colors = 1 << min_code_size; // Now we can easily get it back.\n\n var delay = opts.delay === undefined ? 0 : opts.delay;\n\n // From the spec:\n // 0 - No disposal specified. The decoder is\n // not required to take any action.\n // 1 - Do not dispose. The graphic is to be left\n // in place.\n // 2 - Restore to background color. The area used by the\n // graphic must be restored to the background color.\n // 3 - Restore to previous. The decoder is required to\n // restore the area overwritten by the graphic with\n // what was there prior to rendering the graphic.\n // 4-7 - To be defined.\n // NOTE(deanm): Dispose background doesn't really work, apparently most\n // browsers ignore the background palette index and clear to transparency.\n var disposal = opts.disposal === undefined ? 0 : opts.disposal;\n if (disposal < 0 || disposal > 3)\n // 4-7 is reserved.\n throw new Error(\"Disposal out of range.\");\n\n var use_transparency = false;\n var transparent_index = 0;\n if (opts.transparent !== undefined && opts.transparent !== null) {\n use_transparency = true;\n transparent_index = opts.transparent;\n if (transparent_index < 0 || transparent_index >= num_colors)\n throw new Error(\"Transparent color index.\");\n }\n\n if (disposal !== 0 || use_transparency || delay !== 0) {\n // - Graphics Control Extension\n buf[p++] = 0x21;\n buf[p++] = 0xf9; // Extension / Label.\n buf[p++] = 4; // Byte size.\n\n buf[p++] = (disposal << 2) | (use_transparency === true ? 1 : 0);\n buf[p++] = delay & 0xff;\n buf[p++] = (delay >> 8) & 0xff;\n buf[p++] = transparent_index; // Transparent color index.\n buf[p++] = 0; // Block Terminator.\n }\n\n // - Image Descriptor\n buf[p++] = 0x2c; // Image Seperator.\n buf[p++] = x & 0xff;\n buf[p++] = (x >> 8) & 0xff; // Left.\n buf[p++] = y & 0xff;\n buf[p++] = (y >> 8) & 0xff; // Top.\n buf[p++] = w & 0xff;\n buf[p++] = (w >> 8) & 0xff;\n buf[p++] = h & 0xff;\n buf[p++] = (h >> 8) & 0xff;\n // NOTE: No sort flag (unused?).\n // TODO(deanm): Support interlace.\n buf[p++] = using_local_palette === true ? 0x80 | (min_code_size - 1) : 0;\n\n // - Local Color Table\n if (using_local_palette === true) {\n for (var i = 0, il = palette.length; i < il; ++i) {\n var rgb = palette[i];\n buf[p++] = (rgb >> 16) & 0xff;\n buf[p++] = (rgb >> 8) & 0xff;\n buf[p++] = rgb & 0xff;\n }\n }\n\n p = GifWriterOutputLZWCodeStream(\n buf,\n p,\n min_code_size < 2 ? 2 : min_code_size,\n indexed_pixels\n );\n\n return p;\n };\n\n this.end = function() {\n if (ended === false) {\n buf[p++] = 0x3b; // Trailer.\n ended = true;\n }\n return p;\n };\n\n this.getOutputBuffer = function() {\n return buf;\n };\n this.setOutputBuffer = function(v) {\n buf = v;\n };\n this.getOutputBufferPosition = function() {\n return p;\n };\n this.setOutputBufferPosition = function(v) {\n p = v;\n };\n}\n\n// Main compression routine, palette indexes -> LZW code stream.\n// |index_stream| must have at least one entry.\nfunction GifWriterOutputLZWCodeStream(buf, p, min_code_size, index_stream) {\n buf[p++] = min_code_size;\n var cur_subblock = p++; // Pointing at the length field.\n\n var clear_code = 1 << min_code_size;\n var code_mask = clear_code - 1;\n var eoi_code = clear_code + 1;\n var next_code = eoi_code + 1;\n\n var cur_code_size = min_code_size + 1; // Number of bits per code.\n var cur_shift = 0;\n // We have at most 12-bit codes, so we should have to hold a max of 19\n // bits here (and then we would write out).\n var cur = 0;\n\n function emit_bytes_to_buffer(bit_block_size) {\n while (cur_shift >= bit_block_size) {\n buf[p++] = cur & 0xff;\n cur >>= 8;\n cur_shift -= 8;\n if (p === cur_subblock + 256) {\n // Finished a subblock.\n buf[cur_subblock] = 255;\n cur_subblock = p++;\n }\n }\n }\n\n function emit_code(c) {\n cur |= c << cur_shift;\n cur_shift += cur_code_size;\n emit_bytes_to_buffer(8);\n }\n\n // I am not an expert on the topic, and I don't want to write a thesis.\n // However, it is good to outline here the basic algorithm and the few data\n // structures and optimizations here that make this implementation fast.\n // The basic idea behind LZW is to build a table of previously seen runs\n // addressed by a short id (herein called output code). All data is\n // referenced by a code, which represents one or more values from the\n // original input stream. All input bytes can be referenced as the same\n // value as an output code. So if you didn't want any compression, you\n // could more or less just output the original bytes as codes (there are\n // some details to this, but it is the idea). In order to achieve\n // compression, values greater then the input range (codes can be up to\n // 12-bit while input only 8-bit) represent a sequence of previously seen\n // inputs. The decompressor is able to build the same mapping while\n // decoding, so there is always a shared common knowledge between the\n // encoding and decoder, which is also important for \"timing\" aspects like\n // how to handle variable bit width code encoding.\n //\n // One obvious but very important consequence of the table system is there\n // is always a unique id (at most 12-bits) to map the runs. 'A' might be\n // 4, then 'AA' might be 10, 'AAA' 11, 'AAAA' 12, etc. This relationship\n // can be used for an effecient lookup strategy for the code mapping. We\n // need to know if a run has been seen before, and be able to map that run\n // to the output code. Since we start with known unique ids (input bytes),\n // and then from those build more unique ids (table entries), we can\n // continue this chain (almost like a linked list) to always have small\n // integer values that represent the current byte chains in the encoder.\n // This means instead of tracking the input bytes (AAAABCD) to know our\n // current state, we can track the table entry for AAAABC (it is guaranteed\n // to exist by the nature of the algorithm) and the next character D.\n // Therefor the tuple of (table_entry, byte) is guaranteed to also be\n // unique. This allows us to create a simple lookup key for mapping input\n // sequences to codes (table indices) without having to store or search\n // any of the code sequences. So if 'AAAA' has a table entry of 12, the\n // tuple of ('AAAA', K) for any input byte K will be unique, and can be our\n // key. This leads to a integer value at most 20-bits, which can always\n // fit in an SMI value and be used as a fast sparse array / object key.\n\n // Output code for the current contents of the index buffer.\n var ib_code = index_stream[0] & code_mask; // Load first input index.\n var code_table = {}; // Key'd on our 20-bit \"tuple\".\n\n emit_code(clear_code); // Spec says first code should be a clear code.\n\n // First index already loaded, process the rest of the stream.\n for (var i = 1, il = index_stream.length; i < il; ++i) {\n var k = index_stream[i] & code_mask;\n var cur_key = (ib_code << 8) | k; // (prev, k) unique tuple.\n var cur_code = code_table[cur_key]; // buffer + k.\n\n // Check if we have to create a new code table entry.\n if (cur_code === undefined) {\n // We don't have buffer + k.\n // Emit index buffer (without k).\n // This is an inline version of emit_code, because this is the core\n // writing routine of the compressor (and V8 cannot inline emit_code\n // because it is a closure here in a different context). Additionally\n // we can call emit_byte_to_buffer less often, because we can have\n // 30-bits (from our 31-bit signed SMI), and we know our codes will only\n // be 12-bits, so can safely have 18-bits there without overflow.\n // emit_code(ib_code);\n cur |= ib_code << cur_shift;\n cur_shift += cur_code_size;\n while (cur_shift >= 8) {\n buf[p++] = cur & 0xff;\n cur >>= 8;\n cur_shift -= 8;\n if (p === cur_subblock + 256) {\n // Finished a subblock.\n buf[cur_subblock] = 255;\n cur_subblock = p++;\n }\n }\n\n if (next_code === 4096) {\n // Table full, need a clear.\n emit_code(clear_code);\n next_code = eoi_code + 1;\n cur_code_size = min_code_size + 1;\n code_table = {};\n } else {\n // Table not full, insert a new entry.\n // Increase our variable bit code sizes if necessary. This is a bit\n // tricky as it is based on \"timing\" between the encoding and\n // decoder. From the encoders perspective this should happen after\n // we've already emitted the index buffer and are about to create the\n // first table entry that would overflow our current code bit size.\n if (next_code >= 1 << cur_code_size) ++cur_code_size;\n code_table[cur_key] = next_code++; // Insert into code table.\n }\n\n ib_code = k; // Index buffer to single input k.\n } else {\n ib_code = cur_code; // Index buffer to sequence in code table.\n }\n }\n\n emit_code(ib_code); // There will still be something in the index buffer.\n emit_code(eoi_code); // End Of Information.\n\n // Flush / finalize the sub-blocks stream to the buffer.\n emit_bytes_to_buffer(1);\n\n // Finish the sub-blocks, writing out any unfinished lengths and\n // terminating with a sub-block of length 0. If we have already started\n // but not yet used a sub-block it can just become the terminator.\n if (cur_subblock + 1 === p) {\n // Started but unused.\n buf[cur_subblock] = 0;\n } else {\n // Started and used, write length and additional terminator block.\n buf[cur_subblock] = p - cur_subblock - 1;\n buf[p++] = 0;\n }\n return p;\n}\n\nfunction GifReader(buf) {\n var p = 0;\n\n // - Header (GIF87a or GIF89a).\n if (\n buf[p++] !== 0x47 ||\n buf[p++] !== 0x49 ||\n buf[p++] !== 0x46 ||\n buf[p++] !== 0x38 ||\n ((buf[p++] + 1) & 0xfd) !== 0x38 ||\n buf[p++] !== 0x61\n ) {\n throw new Error(\"Invalid GIF 87a/89a header.\");\n }\n\n // - Logical Screen Descriptor.\n var width = buf[p++] | (buf[p++] << 8);\n var height = buf[p++] | (buf[p++] << 8);\n var pf0 = buf[p++]; // .\n var global_palette_flag = pf0 >> 7;\n var num_global_colors_pow2 = pf0 & 0x7;\n var num_global_colors = 1 << (num_global_colors_pow2 + 1);\n var background = buf[p++];\n buf[p++]; // Pixel aspect ratio (unused?).\n\n var global_palette_offset = null;\n var global_palette_size = null;\n\n if (global_palette_flag) {\n global_palette_offset = p;\n global_palette_size = num_global_colors;\n p += num_global_colors * 3; // Seek past palette.\n }\n\n var no_eof = true;\n\n var frames = [];\n\n var delay = 0;\n var transparent_index = null;\n var disposal = 0; // 0 - No disposal specified.\n var loop_count = null;\n\n this.width = width;\n this.height = height;\n\n while (no_eof && p < buf.length) {\n switch (buf[p++]) {\n case 0x21: // Graphics Control Extension Block\n switch (buf[p++]) {\n case 0xff: // Application specific block\n // Try if it's a Netscape block (with animation loop counter).\n if (\n buf[p] !== 0x0b || // 21 FF already read, check block size.\n // NETSCAPE2.0\n (buf[p + 1] == 0x4e &&\n buf[p + 2] == 0x45 &&\n buf[p + 3] == 0x54 &&\n buf[p + 4] == 0x53 &&\n buf[p + 5] == 0x43 &&\n buf[p + 6] == 0x41 &&\n buf[p + 7] == 0x50 &&\n buf[p + 8] == 0x45 &&\n buf[p + 9] == 0x32 &&\n buf[p + 10] == 0x2e &&\n buf[p + 11] == 0x30 &&\n // Sub-block\n buf[p + 12] == 0x03 &&\n buf[p + 13] == 0x01 &&\n buf[p + 16] == 0)\n ) {\n p += 14;\n loop_count = buf[p++] | (buf[p++] << 8);\n p++; // Skip terminator.\n } else {\n // We don't know what it is, just try to get past it.\n p += 12;\n while (true) {\n // Seek through subblocks.\n var block_size = buf[p++];\n // Bad block size (ex: undefined from an out of bounds read).\n if (!(block_size >= 0)) throw Error(\"Invalid block size\");\n if (block_size === 0) break; // 0 size is terminator\n p += block_size;\n }\n }\n break;\n\n case 0xf9: // Graphics Control Extension\n if (buf[p++] !== 0x4 || buf[p + 4] !== 0)\n throw new Error(\"Invalid graphics extension block.\");\n var pf1 = buf[p++];\n delay = buf[p++] | (buf[p++] << 8);\n transparent_index = buf[p++];\n if ((pf1 & 1) === 0) transparent_index = null;\n disposal = (pf1 >> 2) & 0x7;\n p++; // Skip terminator.\n break;\n\n case 0xfe: // Comment Extension.\n while (true) {\n // Seek through subblocks.\n var block_size = buf[p++];\n // Bad block size (ex: undefined from an out of bounds read).\n if (!(block_size >= 0)) throw Error(\"Invalid block size\");\n if (block_size === 0) break; // 0 size is terminator\n // console.log(buf.slice(p, p+block_size).toString('ascii'));\n p += block_size;\n }\n break;\n\n default:\n throw new Error(\n \"Unknown graphic control label: 0x\" + buf[p - 1].toString(16)\n );\n }\n break;\n\n case 0x2c: // Image Descriptor.\n var x = buf[p++] | (buf[p++] << 8);\n var y = buf[p++] | (buf[p++] << 8);\n var w = buf[p++] | (buf[p++] << 8);\n var h = buf[p++] | (buf[p++] << 8);\n var pf2 = buf[p++];\n var local_palette_flag = pf2 >> 7;\n var interlace_flag = (pf2 >> 6) & 1;\n var num_local_colors_pow2 = pf2 & 0x7;\n var num_local_colors = 1 << (num_local_colors_pow2 + 1);\n var palette_offset = global_palette_offset;\n var palette_size = global_palette_size;\n var has_local_palette = false;\n if (local_palette_flag) {\n var has_local_palette = true;\n palette_offset = p; // Override with local palette.\n palette_size = num_local_colors;\n p += num_local_colors * 3; // Seek past palette.\n }\n\n var data_offset = p;\n\n p++; // codesize\n while (true) {\n var block_size = buf[p++];\n // Bad block size (ex: undefined from an out of bounds read).\n if (!(block_size >= 0)) throw Error(\"Invalid block size\");\n if (block_size === 0) break; // 0 size is terminator\n p += block_size;\n }\n\n frames.push({\n x: x,\n y: y,\n width: w,\n height: h,\n has_local_palette: has_local_palette,\n palette_offset: palette_offset,\n palette_size: palette_size,\n data_offset: data_offset,\n data_length: p - data_offset,\n transparent_index: transparent_index,\n interlaced: !!interlace_flag,\n delay: delay,\n disposal: disposal\n });\n break;\n\n case 0x3b: // Trailer Marker (end of file).\n no_eof = false;\n break;\n\n default:\n throw new Error(\"Unknown gif block: 0x\" + buf[p - 1].toString(16));\n break;\n }\n }\n\n this.numFrames = function() {\n return frames.length;\n };\n\n this.loopCount = function() {\n return loop_count;\n };\n\n this.frameInfo = function(frame_num) {\n if (frame_num < 0 || frame_num >= frames.length)\n throw new Error(\"Frame index out of range.\");\n return frames[frame_num];\n };\n\n this.decodeAndBlitFrameBGRA = function(frame_num, pixels) {\n var frame = this.frameInfo(frame_num);\n var num_pixels = frame.width * frame.height;\n var index_stream = new Uint8Array(num_pixels); // At most 8-bit indices.\n GifReaderLZWOutputIndexStream(\n buf,\n frame.data_offset,\n index_stream,\n num_pixels\n );\n var palette_offset = frame.palette_offset;\n\n // NOTE(deanm): It seems to be much faster to compare index to 256 than\n // to === null. Not sure why, but CompareStub_EQ_STRICT shows up high in\n // the profile, not sure if it's related to using a Uint8Array.\n var trans = frame.transparent_index;\n if (trans === null) trans = 256;\n\n // We are possibly just blitting to a portion of the entire frame.\n // That is a subrect within the framerect, so the additional pixels\n // must be skipped over after we finished a scanline.\n var framewidth = frame.width;\n var framestride = width - framewidth;\n var xleft = framewidth; // Number of subrect pixels left in scanline.\n\n // Output indices of the top left and bottom right corners of the subrect.\n var opbeg = (frame.y * width + frame.x) * 4;\n var opend = ((frame.y + frame.height) * width + frame.x) * 4;\n var op = opbeg;\n\n var scanstride = framestride * 4;\n\n // Use scanstride to skip past the rows when interlacing. This is skipping\n // 7 rows for the first two passes, then 3 then 1.\n if (frame.interlaced === true) {\n scanstride += width * 4 * 7; // Pass 1.\n }\n\n var interlaceskip = 8; // Tracking the row interval in the current pass.\n\n for (var i = 0, il = index_stream.length; i < il; ++i) {\n var index = index_stream[i];\n\n if (xleft === 0) {\n // Beginning of new scan line\n op += scanstride;\n xleft = framewidth;\n if (op >= opend) {\n // Catch the wrap to switch passes when interlacing.\n scanstride = framestride * 4 + width * 4 * (interlaceskip - 1);\n // interlaceskip / 2 * 4 is interlaceskip << 1.\n op = opbeg + (framewidth + framestride) * (interlaceskip << 1);\n interlaceskip >>= 1;\n }\n }\n\n if (index === trans) {\n op += 4;\n } else {\n var r = buf[palette_offset + index * 3];\n var g = buf[palette_offset + index * 3 + 1];\n var b = buf[palette_offset + index * 3 + 2];\n pixels[op++] = b;\n pixels[op++] = g;\n pixels[op++] = r;\n pixels[op++] = 255;\n }\n --xleft;\n }\n };\n\n // I will go to copy and paste hell one day...\n this.decodeAndBlitFrameRGBA = function(frame_num, pixels) {\n var frame = this.frameInfo(frame_num);\n var num_pixels = frame.width * frame.height;\n var index_stream = new Uint8Array(num_pixels); // At most 8-bit indices.\n GifReaderLZWOutputIndexStream(\n buf,\n frame.data_offset,\n index_stream,\n num_pixels\n );\n var palette_offset = frame.palette_offset;\n\n // NOTE(deanm): It seems to be much faster to compare index to 256 than\n // to === null. Not sure why, but CompareStub_EQ_STRICT shows up high in\n // the profile, not sure if it's related to using a Uint8Array.\n var trans = frame.transparent_index;\n if (trans === null) trans = 256;\n\n // We are possibly just blitting to a portion of the entire frame.\n // That is a subrect within the framerect, so the additional pixels\n // must be skipped over after we finished a scanline.\n var framewidth = frame.width;\n var framestride = width - framewidth;\n var xleft = framewidth; // Number of subrect pixels left in scanline.\n\n // Output indices of the top left and bottom right corners of the subrect.\n var opbeg = (frame.y * width + frame.x) * 4;\n var opend = ((frame.y + frame.height) * width + frame.x) * 4;\n var op = opbeg;\n\n var scanstride = framestride * 4;\n\n // Use scanstride to skip past the rows when interlacing. This is skipping\n // 7 rows for the first two passes, then 3 then 1.\n if (frame.interlaced === true) {\n scanstride += width * 4 * 7; // Pass 1.\n }\n\n var interlaceskip = 8; // Tracking the row interval in the current pass.\n\n for (var i = 0, il = index_stream.length; i < il; ++i) {\n var index = index_stream[i];\n\n if (xleft === 0) {\n // Beginning of new scan line\n op += scanstride;\n xleft = framewidth;\n if (op >= opend) {\n // Catch the wrap to switch passes when interlacing.\n scanstride = framestride * 4 + width * 4 * (interlaceskip - 1);\n // interlaceskip / 2 * 4 is interlaceskip << 1.\n op = opbeg + (framewidth + framestride) * (interlaceskip << 1);\n interlaceskip >>= 1;\n }\n }\n\n if (index === trans) {\n op += 4;\n } else {\n var r = buf[palette_offset + index * 3];\n var g = buf[palette_offset + index * 3 + 1];\n var b = buf[palette_offset + index * 3 + 2];\n pixels[op++] = r;\n pixels[op++] = g;\n pixels[op++] = b;\n pixels[op++] = 255;\n }\n --xleft;\n }\n };\n}\n\nfunction GifReaderLZWOutputIndexStream(code_stream, p, output, output_length) {\n var min_code_size = code_stream[p++];\n\n var clear_code = 1 << min_code_size;\n var eoi_code = clear_code + 1;\n var next_code = eoi_code + 1;\n\n var cur_code_size = min_code_size + 1; // Number of bits per code.\n // NOTE: This shares the same name as the encoder, but has a different\n // meaning here. Here this masks each code coming from the code stream.\n var code_mask = (1 << cur_code_size) - 1;\n var cur_shift = 0;\n var cur = 0;\n\n var op = 0; // Output pointer.\n\n var subblock_size = code_stream[p++];\n\n // TODO(deanm): Would using a TypedArray be any faster? At least it would\n // solve the fast mode / backing store uncertainty.\n // var code_table = Array(4096);\n var code_table = new Int32Array(4096); // Can be signed, we only use 20 bits.\n\n var prev_code = null; // Track code-1.\n\n while (true) {\n // Read up to two bytes, making sure we always 12-bits for max sized code.\n while (cur_shift < 16) {\n if (subblock_size === 0) break; // No more data to be read.\n\n cur |= code_stream[p++] << cur_shift;\n cur_shift += 8;\n\n if (subblock_size === 1) {\n // Never let it get to 0 to hold logic above.\n subblock_size = code_stream[p++]; // Next subblock.\n } else {\n --subblock_size;\n }\n }\n\n // TODO(deanm): We should never really get here, we should have received\n // and EOI.\n if (cur_shift < cur_code_size) break;\n\n var code = cur & code_mask;\n cur >>= cur_code_size;\n cur_shift -= cur_code_size;\n\n // TODO(deanm): Maybe should check that the first code was a clear code,\n // at least this is what you're supposed to do. But actually our encoder\n // now doesn't emit a clear code first anyway.\n if (code === clear_code) {\n // We don't actually have to clear the table. This could be a good idea\n // for greater error checking, but we don't really do any anyway. We\n // will just track it with next_code and overwrite old entries.\n\n next_code = eoi_code + 1;\n cur_code_size = min_code_size + 1;\n code_mask = (1 << cur_code_size) - 1;\n\n // Don't update prev_code ?\n prev_code = null;\n continue;\n } else if (code === eoi_code) {\n break;\n }\n\n // We have a similar situation as the decoder, where we want to store\n // variable length entries (code table entries), but we want to do in a\n // faster manner than an array of arrays. The code below stores sort of a\n // linked list within the code table, and then \"chases\" through it to\n // construct the dictionary entries. When a new entry is created, just the\n // last byte is stored, and the rest (prefix) of the entry is only\n // referenced by its table entry. Then the code chases through the\n // prefixes until it reaches a single byte code. We have to chase twice,\n // first to compute the length, and then to actually copy the data to the\n // output (backwards, since we know the length). The alternative would be\n // storing something in an intermediate stack, but that doesn't make any\n // more sense. I implemented an approach where it also stored the length\n // in the code table, although it's a bit tricky because you run out of\n // bits (12 + 12 + 8), but I didn't measure much improvements (the table\n // entries are generally not the long). Even when I created benchmarks for\n // very long table entries the complexity did not seem worth it.\n // The code table stores the prefix entry in 12 bits and then the suffix\n // byte in 8 bits, so each entry is 20 bits.\n\n var chase_code = code < next_code ? code : prev_code;\n\n // Chase what we will output, either {CODE} or {CODE-1}.\n var chase_length = 0;\n var chase = chase_code;\n while (chase > clear_code) {\n chase = code_table[chase] >> 8;\n ++chase_length;\n }\n\n var k = chase;\n\n var op_end = op + chase_length + (chase_code !== code ? 1 : 0);\n if (op_end > output_length) {\n console.log(\"Warning, gif stream longer than expected.\");\n return;\n }\n\n // Already have the first byte from the chase, might as well write it fast.\n output[op++] = k;\n\n op += chase_length;\n var b = op; // Track pointer, writing backwards.\n\n if (chase_code !== code)\n // The case of emitting {CODE-1} + k.\n output[op++] = k;\n\n chase = chase_code;\n while (chase_length--) {\n chase = code_table[chase];\n output[--b] = chase & 0xff; // Write backwards.\n chase >>= 8; // Pull down to the prefix code.\n }\n\n if (prev_code !== null && next_code < 4096) {\n code_table[next_code++] = (prev_code << 8) | k;\n // TODO(deanm): Figure out this clearing vs code growth logic better. I\n // have an feeling that it should just happen somewhere else, for now it\n // is awkward between when we grow past the max and then hit a clear code.\n // For now just check if we hit the max 12-bits (then a clear code should\n // follow, also of course encoded in 12-bits).\n if (next_code >= code_mask + 1 && cur_code_size < 12) {\n ++cur_code_size;\n code_mask = (code_mask << 1) | 1;\n }\n }\n\n prev_code = code;\n }\n\n if (op !== output_length) {\n console.log(\"Warning, gif stream shorter than expected.\");\n }\n\n return output;\n}\n\nexport { GifReader, GifWriter };\n","/**\n * @license\n Copyright (c) 2008, Adobe Systems Incorporated\n All rights reserved.\n\n Redistribution and use in source and binary forms, with or without \n modification, are permitted provided that the following conditions are\n met:\n\n * Redistributions of source code must retain the above copyright notice, \n this list of conditions and the following disclaimer.\n \n * Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the \n documentation and/or other materials provided with the distribution.\n \n * Neither the name of Adobe Systems Incorporated nor the names of its \n contributors may be used to endorse or promote products derived from \n this software without specific prior written permission.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS\n IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,\n THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR \n CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n/*\nJPEG encoder ported to JavaScript and optimized by Andreas Ritter, www.bytestrom.eu, 11/2009\n\nBasic GUI blocking jpeg encoder\n*/\n\nfunction JPEGEncoder(quality) {\n var ffloor = Math.floor;\n var YTable = new Array(64);\n var UVTable = new Array(64);\n var fdtbl_Y = new Array(64);\n var fdtbl_UV = new Array(64);\n var YDC_HT;\n var UVDC_HT;\n var YAC_HT;\n var UVAC_HT;\n\n var bitcode = new Array(65535);\n var category = new Array(65535);\n var outputfDCTQuant = new Array(64);\n var DU = new Array(64);\n var byteout = [];\n var bytenew = 0;\n var bytepos = 7;\n\n var YDU = new Array(64);\n var UDU = new Array(64);\n var VDU = new Array(64);\n var clt = new Array(256);\n var RGB_YUV_TABLE = new Array(2048);\n var currentQuality;\n\n var ZigZag = [\n 0,\n 1,\n 5,\n 6,\n 14,\n 15,\n 27,\n 28,\n 2,\n 4,\n 7,\n 13,\n 16,\n 26,\n 29,\n 42,\n 3,\n 8,\n 12,\n 17,\n 25,\n 30,\n 41,\n 43,\n 9,\n 11,\n 18,\n 24,\n 31,\n 40,\n 44,\n 53,\n 10,\n 19,\n 23,\n 32,\n 39,\n 45,\n 52,\n 54,\n 20,\n 22,\n 33,\n 38,\n 46,\n 51,\n 55,\n 60,\n 21,\n 34,\n 37,\n 47,\n 50,\n 56,\n 59,\n 61,\n 35,\n 36,\n 48,\n 49,\n 57,\n 58,\n 62,\n 63\n ];\n\n var std_dc_luminance_nrcodes = [\n 0,\n 0,\n 1,\n 5,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0\n ];\n var std_dc_luminance_values = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\n var std_ac_luminance_nrcodes = [\n 0,\n 0,\n 2,\n 1,\n 3,\n 3,\n 2,\n 4,\n 3,\n 5,\n 5,\n 4,\n 4,\n 0,\n 0,\n 1,\n 0x7d\n ];\n var std_ac_luminance_values = [\n 0x01,\n 0x02,\n 0x03,\n 0x00,\n 0x04,\n 0x11,\n 0x05,\n 0x12,\n 0x21,\n 0x31,\n 0x41,\n 0x06,\n 0x13,\n 0x51,\n 0x61,\n 0x07,\n 0x22,\n 0x71,\n 0x14,\n 0x32,\n 0x81,\n 0x91,\n 0xa1,\n 0x08,\n 0x23,\n 0x42,\n 0xb1,\n 0xc1,\n 0x15,\n 0x52,\n 0xd1,\n 0xf0,\n 0x24,\n 0x33,\n 0x62,\n 0x72,\n 0x82,\n 0x09,\n 0x0a,\n 0x16,\n 0x17,\n 0x18,\n 0x19,\n 0x1a,\n 0x25,\n 0x26,\n 0x27,\n 0x28,\n 0x29,\n 0x2a,\n 0x34,\n 0x35,\n 0x36,\n 0x37,\n 0x38,\n 0x39,\n 0x3a,\n 0x43,\n 0x44,\n 0x45,\n 0x46,\n 0x47,\n 0x48,\n 0x49,\n 0x4a,\n 0x53,\n 0x54,\n 0x55,\n 0x56,\n 0x57,\n 0x58,\n 0x59,\n 0x5a,\n 0x63,\n 0x64,\n 0x65,\n 0x66,\n 0x67,\n 0x68,\n 0x69,\n 0x6a,\n 0x73,\n 0x74,\n 0x75,\n 0x76,\n 0x77,\n 0x78,\n 0x79,\n 0x7a,\n 0x83,\n 0x84,\n 0x85,\n 0x86,\n 0x87,\n 0x88,\n 0x89,\n 0x8a,\n 0x92,\n 0x93,\n 0x94,\n 0x95,\n 0x96,\n 0x97,\n 0x98,\n 0x99,\n 0x9a,\n 0xa2,\n 0xa3,\n 0xa4,\n 0xa5,\n 0xa6,\n 0xa7,\n 0xa8,\n 0xa9,\n 0xaa,\n 0xb2,\n 0xb3,\n 0xb4,\n 0xb5,\n 0xb6,\n 0xb7,\n 0xb8,\n 0xb9,\n 0xba,\n 0xc2,\n 0xc3,\n 0xc4,\n 0xc5,\n 0xc6,\n 0xc7,\n 0xc8,\n 0xc9,\n 0xca,\n 0xd2,\n 0xd3,\n 0xd4,\n 0xd5,\n 0xd6,\n 0xd7,\n 0xd8,\n 0xd9,\n 0xda,\n 0xe1,\n 0xe2,\n 0xe3,\n 0xe4,\n 0xe5,\n 0xe6,\n 0xe7,\n 0xe8,\n 0xe9,\n 0xea,\n 0xf1,\n 0xf2,\n 0xf3,\n 0xf4,\n 0xf5,\n 0xf6,\n 0xf7,\n 0xf8,\n 0xf9,\n 0xfa\n ];\n\n var std_dc_chrominance_nrcodes = [\n 0,\n 0,\n 3,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 1,\n 0,\n 0,\n 0,\n 0,\n 0\n ];\n var std_dc_chrominance_values = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\n var std_ac_chrominance_nrcodes = [\n 0,\n 0,\n 2,\n 1,\n 2,\n 4,\n 4,\n 3,\n 4,\n 7,\n 5,\n 4,\n 4,\n 0,\n 1,\n 2,\n 0x77\n ];\n var std_ac_chrominance_values = [\n 0x00,\n 0x01,\n 0x02,\n 0x03,\n 0x11,\n 0x04,\n 0x05,\n 0x21,\n 0x31,\n 0x06,\n 0x12,\n 0x41,\n 0x51,\n 0x07,\n 0x61,\n 0x71,\n 0x13,\n 0x22,\n 0x32,\n 0x81,\n 0x08,\n 0x14,\n 0x42,\n 0x91,\n 0xa1,\n 0xb1,\n 0xc1,\n 0x09,\n 0x23,\n 0x33,\n 0x52,\n 0xf0,\n 0x15,\n 0x62,\n 0x72,\n 0xd1,\n 0x0a,\n 0x16,\n 0x24,\n 0x34,\n 0xe1,\n 0x25,\n 0xf1,\n 0x17,\n 0x18,\n 0x19,\n 0x1a,\n 0x26,\n 0x27,\n 0x28,\n 0x29,\n 0x2a,\n 0x35,\n 0x36,\n 0x37,\n 0x38,\n 0x39,\n 0x3a,\n 0x43,\n 0x44,\n 0x45,\n 0x46,\n 0x47,\n 0x48,\n 0x49,\n 0x4a,\n 0x53,\n 0x54,\n 0x55,\n 0x56,\n 0x57,\n 0x58,\n 0x59,\n 0x5a,\n 0x63,\n 0x64,\n 0x65,\n 0x66,\n 0x67,\n 0x68,\n 0x69,\n 0x6a,\n 0x73,\n 0x74,\n 0x75,\n 0x76,\n 0x77,\n 0x78,\n 0x79,\n 0x7a,\n 0x82,\n 0x83,\n 0x84,\n 0x85,\n 0x86,\n 0x87,\n 0x88,\n 0x89,\n 0x8a,\n 0x92,\n 0x93,\n 0x94,\n 0x95,\n 0x96,\n 0x97,\n 0x98,\n 0x99,\n 0x9a,\n 0xa2,\n 0xa3,\n 0xa4,\n 0xa5,\n 0xa6,\n 0xa7,\n 0xa8,\n 0xa9,\n 0xaa,\n 0xb2,\n 0xb3,\n 0xb4,\n 0xb5,\n 0xb6,\n 0xb7,\n 0xb8,\n 0xb9,\n 0xba,\n 0xc2,\n 0xc3,\n 0xc4,\n 0xc5,\n 0xc6,\n 0xc7,\n 0xc8,\n 0xc9,\n 0xca,\n 0xd2,\n 0xd3,\n 0xd4,\n 0xd5,\n 0xd6,\n 0xd7,\n 0xd8,\n 0xd9,\n 0xda,\n 0xe2,\n 0xe3,\n 0xe4,\n 0xe5,\n 0xe6,\n 0xe7,\n 0xe8,\n 0xe9,\n 0xea,\n 0xf2,\n 0xf3,\n 0xf4,\n 0xf5,\n 0xf6,\n 0xf7,\n 0xf8,\n 0xf9,\n 0xfa\n ];\n\n function initQuantTables(sf) {\n var YQT = [\n 16,\n 11,\n 10,\n 16,\n 24,\n 40,\n 51,\n 61,\n 12,\n 12,\n 14,\n 19,\n 26,\n 58,\n 60,\n 55,\n 14,\n 13,\n 16,\n 24,\n 40,\n 57,\n 69,\n 56,\n 14,\n 17,\n 22,\n 29,\n 51,\n 87,\n 80,\n 62,\n 18,\n 22,\n 37,\n 56,\n 68,\n 109,\n 103,\n 77,\n 24,\n 35,\n 55,\n 64,\n 81,\n 104,\n 113,\n 92,\n 49,\n 64,\n 78,\n 87,\n 103,\n 121,\n 120,\n 101,\n 72,\n 92,\n 95,\n 98,\n 112,\n 100,\n 103,\n 99\n ];\n\n for (var i = 0; i < 64; i++) {\n var t = ffloor((YQT[i] * sf + 50) / 100);\n t = Math.min(Math.max(t, 1), 255);\n YTable[ZigZag[i]] = t;\n }\n var UVQT = [\n 17,\n 18,\n 24,\n 47,\n 99,\n 99,\n 99,\n 99,\n 18,\n 21,\n 26,\n 66,\n 99,\n 99,\n 99,\n 99,\n 24,\n 26,\n 56,\n 99,\n 99,\n 99,\n 99,\n 99,\n 47,\n 66,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99,\n 99\n ];\n for (var j = 0; j < 64; j++) {\n var u = ffloor((UVQT[j] * sf + 50) / 100);\n u = Math.min(Math.max(u, 1), 255);\n UVTable[ZigZag[j]] = u;\n }\n var aasf = [\n 1.0,\n 1.387039845,\n 1.306562965,\n 1.175875602,\n 1.0,\n 0.785694958,\n 0.5411961,\n 0.275899379\n ];\n var k = 0;\n for (var row = 0; row < 8; row++) {\n for (var col = 0; col < 8; col++) {\n fdtbl_Y[k] = 1.0 / (YTable[ZigZag[k]] * aasf[row] * aasf[col] * 8.0);\n fdtbl_UV[k] = 1.0 / (UVTable[ZigZag[k]] * aasf[row] * aasf[col] * 8.0);\n k++;\n }\n }\n }\n\n function computeHuffmanTbl(nrcodes, std_table) {\n var codevalue = 0;\n var pos_in_table = 0;\n var HT = new Array();\n for (var k = 1; k <= 16; k++) {\n for (var j = 1; j <= nrcodes[k]; j++) {\n HT[std_table[pos_in_table]] = [];\n HT[std_table[pos_in_table]][0] = codevalue;\n HT[std_table[pos_in_table]][1] = k;\n pos_in_table++;\n codevalue++;\n }\n codevalue *= 2;\n }\n return HT;\n }\n\n function initHuffmanTbl() {\n YDC_HT = computeHuffmanTbl(\n std_dc_luminance_nrcodes,\n std_dc_luminance_values\n );\n UVDC_HT = computeHuffmanTbl(\n std_dc_chrominance_nrcodes,\n std_dc_chrominance_values\n );\n YAC_HT = computeHuffmanTbl(\n std_ac_luminance_nrcodes,\n std_ac_luminance_values\n );\n UVAC_HT = computeHuffmanTbl(\n std_ac_chrominance_nrcodes,\n std_ac_chrominance_values\n );\n }\n\n function initCategoryNumber() {\n var nrlower = 1;\n var nrupper = 2;\n for (var cat = 1; cat <= 15; cat++) {\n //Positive numbers\n for (var nr = nrlower; nr < nrupper; nr++) {\n category[32767 + nr] = cat;\n bitcode[32767 + nr] = [];\n bitcode[32767 + nr][1] = cat;\n bitcode[32767 + nr][0] = nr;\n }\n //Negative numbers\n for (var nrneg = -(nrupper - 1); nrneg <= -nrlower; nrneg++) {\n category[32767 + nrneg] = cat;\n bitcode[32767 + nrneg] = [];\n bitcode[32767 + nrneg][1] = cat;\n bitcode[32767 + nrneg][0] = nrupper - 1 + nrneg;\n }\n nrlower <<= 1;\n nrupper <<= 1;\n }\n }\n\n function initRGBYUVTable() {\n for (var i = 0; i < 256; i++) {\n RGB_YUV_TABLE[i] = 19595 * i;\n RGB_YUV_TABLE[(i + 256) >> 0] = 38470 * i;\n RGB_YUV_TABLE[(i + 512) >> 0] = 7471 * i + 0x8000;\n RGB_YUV_TABLE[(i + 768) >> 0] = -11059 * i;\n RGB_YUV_TABLE[(i + 1024) >> 0] = -21709 * i;\n RGB_YUV_TABLE[(i + 1280) >> 0] = 32768 * i + 0x807fff;\n RGB_YUV_TABLE[(i + 1536) >> 0] = -27439 * i;\n RGB_YUV_TABLE[(i + 1792) >> 0] = -5329 * i;\n }\n }\n\n // IO functions\n function writeBits(bs) {\n var value = bs[0];\n var posval = bs[1] - 1;\n while (posval >= 0) {\n if (value & (1 << posval)) {\n bytenew |= 1 << bytepos;\n }\n posval--;\n bytepos--;\n if (bytepos < 0) {\n if (bytenew == 0xff) {\n writeByte(0xff);\n writeByte(0);\n } else {\n writeByte(bytenew);\n }\n bytepos = 7;\n bytenew = 0;\n }\n }\n }\n\n function writeByte(value) {\n //byteout.push(clt[value]); // write char directly instead of converting later\n byteout.push(value);\n }\n\n function writeWord(value) {\n writeByte((value >> 8) & 0xff);\n writeByte(value & 0xff);\n }\n\n // DCT & quantization core\n function fDCTQuant(data, fdtbl) {\n var d0, d1, d2, d3, d4, d5, d6, d7;\n /* Pass 1: process rows. */\n var dataOff = 0;\n var i;\n var I8 = 8;\n var I64 = 64;\n for (i = 0; i < I8; ++i) {\n d0 = data[dataOff];\n d1 = data[dataOff + 1];\n d2 = data[dataOff + 2];\n d3 = data[dataOff + 3];\n d4 = data[dataOff + 4];\n d5 = data[dataOff + 5];\n d6 = data[dataOff + 6];\n d7 = data[dataOff + 7];\n\n var tmp0 = d0 + d7;\n var tmp7 = d0 - d7;\n var tmp1 = d1 + d6;\n var tmp6 = d1 - d6;\n var tmp2 = d2 + d5;\n var tmp5 = d2 - d5;\n var tmp3 = d3 + d4;\n var tmp4 = d3 - d4;\n\n /* Even part */\n var tmp10 = tmp0 + tmp3; /* phase 2 */\n var tmp13 = tmp0 - tmp3;\n var tmp11 = tmp1 + tmp2;\n var tmp12 = tmp1 - tmp2;\n\n data[dataOff] = tmp10 + tmp11; /* phase 3 */\n data[dataOff + 4] = tmp10 - tmp11;\n\n var z1 = (tmp12 + tmp13) * 0.707106781; /* c4 */\n data[dataOff + 2] = tmp13 + z1; /* phase 5 */\n data[dataOff + 6] = tmp13 - z1;\n\n /* Odd part */\n tmp10 = tmp4 + tmp5; /* phase 2 */\n tmp11 = tmp5 + tmp6;\n tmp12 = tmp6 + tmp7;\n\n /* The rotator is modified from fig 4-8 to avoid extra negations. */\n var z5 = (tmp10 - tmp12) * 0.382683433; /* c6 */\n var z2 = 0.5411961 * tmp10 + z5; /* c2-c6 */\n var z4 = 1.306562965 * tmp12 + z5; /* c2+c6 */\n var z3 = tmp11 * 0.707106781; /* c4 */\n\n var z11 = tmp7 + z3; /* phase 5 */\n var z13 = tmp7 - z3;\n\n data[dataOff + 5] = z13 + z2; /* phase 6 */\n data[dataOff + 3] = z13 - z2;\n data[dataOff + 1] = z11 + z4;\n data[dataOff + 7] = z11 - z4;\n\n dataOff += 8; /* advance pointer to next row */\n }\n\n /* Pass 2: process columns. */\n dataOff = 0;\n for (i = 0; i < I8; ++i) {\n d0 = data[dataOff];\n d1 = data[dataOff + 8];\n d2 = data[dataOff + 16];\n d3 = data[dataOff + 24];\n d4 = data[dataOff + 32];\n d5 = data[dataOff + 40];\n d6 = data[dataOff + 48];\n d7 = data[dataOff + 56];\n\n var tmp0p2 = d0 + d7;\n var tmp7p2 = d0 - d7;\n var tmp1p2 = d1 + d6;\n var tmp6p2 = d1 - d6;\n var tmp2p2 = d2 + d5;\n var tmp5p2 = d2 - d5;\n var tmp3p2 = d3 + d4;\n var tmp4p2 = d3 - d4;\n\n /* Even part */\n var tmp10p2 = tmp0p2 + tmp3p2; /* phase 2 */\n var tmp13p2 = tmp0p2 - tmp3p2;\n var tmp11p2 = tmp1p2 + tmp2p2;\n var tmp12p2 = tmp1p2 - tmp2p2;\n\n data[dataOff] = tmp10p2 + tmp11p2; /* phase 3 */\n data[dataOff + 32] = tmp10p2 - tmp11p2;\n\n var z1p2 = (tmp12p2 + tmp13p2) * 0.707106781; /* c4 */\n data[dataOff + 16] = tmp13p2 + z1p2; /* phase 5 */\n data[dataOff + 48] = tmp13p2 - z1p2;\n\n /* Odd part */\n tmp10p2 = tmp4p2 + tmp5p2; /* phase 2 */\n tmp11p2 = tmp5p2 + tmp6p2;\n tmp12p2 = tmp6p2 + tmp7p2;\n\n /* The rotator is modified from fig 4-8 to avoid extra negations. */\n var z5p2 = (tmp10p2 - tmp12p2) * 0.382683433; /* c6 */\n var z2p2 = 0.5411961 * tmp10p2 + z5p2; /* c2-c6 */\n var z4p2 = 1.306562965 * tmp12p2 + z5p2; /* c2+c6 */\n var z3p2 = tmp11p2 * 0.707106781; /* c4 */\n\n var z11p2 = tmp7p2 + z3p2; /* phase 5 */\n var z13p2 = tmp7p2 - z3p2;\n\n data[dataOff + 40] = z13p2 + z2p2; /* phase 6 */\n data[dataOff + 24] = z13p2 - z2p2;\n data[dataOff + 8] = z11p2 + z4p2;\n data[dataOff + 56] = z11p2 - z4p2;\n\n dataOff++; /* advance pointer to next column */\n }\n\n // Quantize/descale the coefficients\n var fDCTQuant;\n for (i = 0; i < I64; ++i) {\n // Apply the quantization and scaling factor & Round to nearest integer\n fDCTQuant = data[i] * fdtbl[i];\n outputfDCTQuant[i] =\n fDCTQuant > 0.0 ? (fDCTQuant + 0.5) | 0 : (fDCTQuant - 0.5) | 0;\n //outputfDCTQuant[i] = fround(fDCTQuant);\n }\n return outputfDCTQuant;\n }\n\n function writeAPP0() {\n writeWord(0xffe0); // marker\n writeWord(16); // length\n writeByte(0x4a); // J\n writeByte(0x46); // F\n writeByte(0x49); // I\n writeByte(0x46); // F\n writeByte(0); // = \"JFIF\",'\\0'\n writeByte(1); // versionhi\n writeByte(1); // versionlo\n writeByte(0); // xyunits\n writeWord(1); // xdensity\n writeWord(1); // ydensity\n writeByte(0); // thumbnwidth\n writeByte(0); // thumbnheight\n }\n\n function writeSOF0(width, height) {\n writeWord(0xffc0); // marker\n writeWord(17); // length, truecolor YUV JPG\n writeByte(8); // precision\n writeWord(height);\n writeWord(width);\n writeByte(3); // nrofcomponents\n writeByte(1); // IdY\n writeByte(0x11); // HVY\n writeByte(0); // QTY\n writeByte(2); // IdU\n writeByte(0x11); // HVU\n writeByte(1); // QTU\n writeByte(3); // IdV\n writeByte(0x11); // HVV\n writeByte(1); // QTV\n }\n\n function writeDQT() {\n writeWord(0xffdb); // marker\n writeWord(132); // length\n writeByte(0);\n for (var i = 0; i < 64; i++) {\n writeByte(YTable[i]);\n }\n writeByte(1);\n for (var j = 0; j < 64; j++) {\n writeByte(UVTable[j]);\n }\n }\n\n function writeDHT() {\n writeWord(0xffc4); // marker\n writeWord(0x01a2); // length\n\n writeByte(0); // HTYDCinfo\n for (var i = 0; i < 16; i++) {\n writeByte(std_dc_luminance_nrcodes[i + 1]);\n }\n for (var j = 0; j <= 11; j++) {\n writeByte(std_dc_luminance_values[j]);\n }\n\n writeByte(0x10); // HTYACinfo\n for (var k = 0; k < 16; k++) {\n writeByte(std_ac_luminance_nrcodes[k + 1]);\n }\n for (var l = 0; l <= 161; l++) {\n writeByte(std_ac_luminance_values[l]);\n }\n\n writeByte(1); // HTUDCinfo\n for (var m = 0; m < 16; m++) {\n writeByte(std_dc_chrominance_nrcodes[m + 1]);\n }\n for (var n = 0; n <= 11; n++) {\n writeByte(std_dc_chrominance_values[n]);\n }\n\n writeByte(0x11); // HTUACinfo\n for (var o = 0; o < 16; o++) {\n writeByte(std_ac_chrominance_nrcodes[o + 1]);\n }\n for (var p = 0; p <= 161; p++) {\n writeByte(std_ac_chrominance_values[p]);\n }\n }\n\n function writeSOS() {\n writeWord(0xffda); // marker\n writeWord(12); // length\n writeByte(3); // nrofcomponents\n writeByte(1); // IdY\n writeByte(0); // HTY\n writeByte(2); // IdU\n writeByte(0x11); // HTU\n writeByte(3); // IdV\n writeByte(0x11); // HTV\n writeByte(0); // Ss\n writeByte(0x3f); // Se\n writeByte(0); // Bf\n }\n\n function processDU(CDU, fdtbl, DC, HTDC, HTAC) {\n var EOB = HTAC[0x00];\n var M16zeroes = HTAC[0xf0];\n var pos;\n var I16 = 16;\n var I63 = 63;\n var I64 = 64;\n var DU_DCT = fDCTQuant(CDU, fdtbl);\n //ZigZag reorder\n for (var j = 0; j < I64; ++j) {\n DU[ZigZag[j]] = DU_DCT[j];\n }\n var Diff = DU[0] - DC;\n DC = DU[0];\n //Encode DC\n if (Diff == 0) {\n writeBits(HTDC[0]); // Diff might be 0\n } else {\n pos = 32767 + Diff;\n writeBits(HTDC[category[pos]]);\n writeBits(bitcode[pos]);\n }\n //Encode ACs\n var end0pos = 63; // was const... which is crazy\n while (end0pos > 0 && DU[end0pos] == 0) {\n end0pos--;\n }\n //end0pos = first element in reverse order !=0\n if (end0pos == 0) {\n writeBits(EOB);\n return DC;\n }\n var i = 1;\n var lng;\n while (i <= end0pos) {\n var startpos = i;\n while (DU[i] == 0 && i <= end0pos) {\n ++i;\n }\n var nrzeroes = i - startpos;\n if (nrzeroes >= I16) {\n lng = nrzeroes >> 4;\n for (var nrmarker = 1; nrmarker <= lng; ++nrmarker)\n writeBits(M16zeroes);\n nrzeroes = nrzeroes & 0xf;\n }\n pos = 32767 + DU[i];\n writeBits(HTAC[(nrzeroes << 4) + category[pos]]);\n writeBits(bitcode[pos]);\n i++;\n }\n if (end0pos != I63) {\n writeBits(EOB);\n }\n return DC;\n }\n\n function initCharLookupTable() {\n var sfcc = String.fromCharCode;\n for (var i = 0; i < 256; i++) {\n ///// ACHTUNG // 255\n clt[i] = sfcc(i);\n }\n }\n\n this.encode = function(\n image,\n quality // image data object\n ) {\n if (quality) setQuality(quality);\n\n // Initialize bit writer\n byteout = new Array();\n bytenew = 0;\n bytepos = 7;\n\n // Add JPEG headers\n writeWord(0xffd8); // SOI\n writeAPP0();\n writeDQT();\n writeSOF0(image.width, image.height);\n writeDHT();\n writeSOS();\n\n // Encode 8x8 macroblocks\n var DCY = 0;\n var DCU = 0;\n var DCV = 0;\n\n bytenew = 0;\n bytepos = 7;\n\n this.encode.displayName = \"_encode_\";\n\n var imageData = image.data;\n var width = image.width;\n var height = image.height;\n\n var quadWidth = width * 4;\n\n var x,\n y = 0;\n var r, g, b;\n var start, p, col, row, pos;\n while (y < height) {\n x = 0;\n while (x < quadWidth) {\n start = quadWidth * y + x;\n col = -1;\n row = 0;\n\n for (pos = 0; pos < 64; pos++) {\n row = pos >> 3; // /8\n col = (pos & 7) * 4; // %8\n p = start + row * quadWidth + col;\n\n if (y + row >= height) {\n // padding bottom\n p -= quadWidth * (y + 1 + row - height);\n }\n\n if (x + col >= quadWidth) {\n // padding right\n p -= x + col - quadWidth + 4;\n }\n\n r = imageData[p++];\n g = imageData[p++];\n b = imageData[p++];\n\n /* // calculate YUV values dynamically\n\t\t\t\t\tYDU[pos]=((( 0.29900)*r+( 0.58700)*g+( 0.11400)*b))-128; //-0x80\n\t\t\t\t\tUDU[pos]=(((-0.16874)*r+(-0.33126)*g+( 0.50000)*b));\n\t\t\t\t\tVDU[pos]=((( 0.50000)*r+(-0.41869)*g+(-0.08131)*b));\n\t\t\t\t\t*/\n\n // use lookup table (slightly faster)\n YDU[pos] =\n ((RGB_YUV_TABLE[r] +\n RGB_YUV_TABLE[(g + 256) >> 0] +\n RGB_YUV_TABLE[(b + 512) >> 0]) >>\n 16) -\n 128;\n UDU[pos] =\n ((RGB_YUV_TABLE[(r + 768) >> 0] +\n RGB_YUV_TABLE[(g + 1024) >> 0] +\n RGB_YUV_TABLE[(b + 1280) >> 0]) >>\n 16) -\n 128;\n VDU[pos] =\n ((RGB_YUV_TABLE[(r + 1280) >> 0] +\n RGB_YUV_TABLE[(g + 1536) >> 0] +\n RGB_YUV_TABLE[(b + 1792) >> 0]) >>\n 16) -\n 128;\n }\n\n DCY = processDU(YDU, fdtbl_Y, DCY, YDC_HT, YAC_HT);\n DCU = processDU(UDU, fdtbl_UV, DCU, UVDC_HT, UVAC_HT);\n DCV = processDU(VDU, fdtbl_UV, DCV, UVDC_HT, UVAC_HT);\n x += 32;\n }\n y += 8;\n }\n\n ////////////////////////////////////////////////////////////////\n\n // Do the bit alignment of the EOI marker\n if (bytepos >= 0) {\n var fillbits = [];\n fillbits[1] = bytepos + 1;\n fillbits[0] = (1 << (bytepos + 1)) - 1;\n writeBits(fillbits);\n }\n\n writeWord(0xffd9); //EOI\n\n return new Uint8Array(byteout);\n };\n\n function setQuality(quality) {\n quality = Math.min(Math.max(quality, 1), 100);\n\n if (currentQuality == quality) return; // don't recalc if unchanged\n\n var sf =\n quality < 50 ? Math.floor(5000 / quality) : Math.floor(200 - quality * 2);\n\n initQuantTables(sf);\n currentQuality = quality;\n //console.log('Quality set to: '+quality +'%');\n }\n\n function init() {\n quality = quality || 50;\n // Create tables\n initCharLookupTable();\n initHuffmanTbl();\n initCategoryNumber();\n initRGBYUVTable();\n\n setQuality(quality);\n }\n init();\n}\n\nexport { JPEGEncoder };\n","/**\n * @author shaozilee\n *\n * Bmp format decoder,support 1bit 4bit 8bit 24bit bmp\n *\n */\n\nimport { console } from \"./console.js\";\n\nfunction BmpDecoder(buffer, is_with_alpha) {\n this.pos = 0;\n this.buffer = buffer;\n this.datav = new DataView(buffer.buffer);\n this.is_with_alpha = !!is_with_alpha;\n this.bottom_up = true;\n this.flag =\n String.fromCharCode(this.buffer[0]) + String.fromCharCode(this.buffer[1]);\n this.pos += 2;\n if ([\"BM\", \"BA\", \"CI\", \"CP\", \"IC\", \"PT\"].indexOf(this.flag) === -1)\n throw new Error(\"Invalid BMP File\");\n this.parseHeader();\n this.parseBGR();\n}\n\nBmpDecoder.prototype.parseHeader = function() {\n this.fileSize = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n this.reserved = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n this.offset = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n this.headerSize = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n this.width = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n this.height = this.datav.getInt32(this.pos, true);\n this.pos += 4;\n this.planes = this.datav.getUint16(this.pos, true);\n this.pos += 2;\n this.bitPP = this.datav.getUint16(this.pos, true);\n this.pos += 2;\n this.compress = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n this.rawSize = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n this.hr = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n this.vr = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n this.colors = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n this.importantColors = this.datav.getUint32(this.pos, true);\n this.pos += 4;\n\n if (this.bitPP === 16 && this.is_with_alpha) {\n this.bitPP = 15;\n }\n if (this.bitPP < 15) {\n var len = this.colors === 0 ? 1 << this.bitPP : this.colors;\n this.palette = new Array(len);\n for (var i = 0; i < len; i++) {\n var blue = this.datav.getUint8(this.pos++, true);\n var green = this.datav.getUint8(this.pos++, true);\n var red = this.datav.getUint8(this.pos++, true);\n var quad = this.datav.getUint8(this.pos++, true);\n this.palette[i] = {\n red: red,\n green: green,\n blue: blue,\n quad: quad\n };\n }\n }\n if (this.height < 0) {\n this.height *= -1;\n this.bottom_up = false;\n }\n};\n\nBmpDecoder.prototype.parseBGR = function() {\n this.pos = this.offset;\n try {\n var bitn = \"bit\" + this.bitPP;\n var len = this.width * this.height * 4;\n this.data = new Uint8Array(len);\n\n this[bitn]();\n } catch (e) {\n console.log(\"bit decode error:\" + e);\n }\n};\n\nBmpDecoder.prototype.bit1 = function() {\n var xlen = Math.ceil(this.width / 8);\n var mode = xlen % 4;\n var y;\n for (y = this.height - 1; y >= 0; y--) {\n var line = this.bottom_up ? y : this.height - 1 - y;\n for (var x = 0; x < xlen; x++) {\n var b = this.datav.getUint8(this.pos++, true);\n var location = line * this.width * 4 + x * 8 * 4;\n for (var i = 0; i < 8; i++) {\n if (x * 8 + i < this.width) {\n var rgb = this.palette[(b >> (7 - i)) & 0x1];\n this.data[location + i * 4] = rgb.blue;\n this.data[location + i * 4 + 1] = rgb.green;\n this.data[location + i * 4 + 2] = rgb.red;\n this.data[location + i * 4 + 3] = 0xff;\n } else {\n break;\n }\n }\n }\n\n if (mode !== 0) {\n this.pos += 4 - mode;\n }\n }\n};\n\nBmpDecoder.prototype.bit4 = function() {\n var xlen = Math.ceil(this.width / 2);\n var mode = xlen % 4;\n for (var y = this.height - 1; y >= 0; y--) {\n var line = this.bottom_up ? y : this.height - 1 - y;\n for (var x = 0; x < xlen; x++) {\n var b = this.datav.getUint8(this.pos++, true);\n var location = line * this.width * 4 + x * 2 * 4;\n\n var before = b >> 4;\n var after = b & 0x0f;\n\n var rgb = this.palette[before];\n this.data[location] = rgb.blue;\n this.data[location + 1] = rgb.green;\n this.data[location + 2] = rgb.red;\n this.data[location + 3] = 0xff;\n\n if (x * 2 + 1 >= this.width) break;\n\n rgb = this.palette[after];\n this.data[location + 4] = rgb.blue;\n this.data[location + 4 + 1] = rgb.green;\n this.data[location + 4 + 2] = rgb.red;\n this.data[location + 4 + 3] = 0xff;\n }\n\n if (mode !== 0) {\n this.pos += 4 - mode;\n }\n }\n};\n\nBmpDecoder.prototype.bit8 = function() {\n var mode = this.width % 4;\n for (var y = this.height - 1; y >= 0; y--) {\n var line = this.bottom_up ? y : this.height - 1 - y;\n for (var x = 0; x < this.width; x++) {\n var b = this.datav.getUint8(this.pos++, true);\n var location = line * this.width * 4 + x * 4;\n if (b < this.palette.length) {\n var rgb = this.palette[b];\n this.data[location] = rgb.red;\n this.data[location + 1] = rgb.green;\n this.data[location + 2] = rgb.blue;\n this.data[location + 3] = 0xff;\n } else {\n this.data[location] = 0xff;\n this.data[location + 1] = 0xff;\n this.data[location + 2] = 0xff;\n this.data[location + 3] = 0xff;\n }\n }\n if (mode !== 0) {\n this.pos += 4 - mode;\n }\n }\n};\n\nBmpDecoder.prototype.bit15 = function() {\n var dif_w = this.width % 3;\n var _11111 = parseInt(\"11111\", 2),\n _1_5 = _11111;\n for (var y = this.height - 1; y >= 0; y--) {\n var line = this.bottom_up ? y : this.height - 1 - y;\n for (var x = 0; x < this.width; x++) {\n var B = this.datav.getUint16(this.pos, true);\n this.pos += 2;\n var blue = (((B & _1_5) / _1_5) * 255) | 0;\n var green = ((((B >> 5) & _1_5) / _1_5) * 255) | 0;\n var red = ((((B >> 10) & _1_5) / _1_5) * 255) | 0;\n var alpha = B >> 15 ? 0xff : 0x00;\n\n var location = line * this.width * 4 + x * 4;\n this.data[location] = red;\n this.data[location + 1] = green;\n this.data[location + 2] = blue;\n this.data[location + 3] = alpha;\n }\n //skip extra bytes\n this.pos += dif_w;\n }\n};\n\nBmpDecoder.prototype.bit16 = function() {\n var dif_w = this.width % 3;\n var _11111 = parseInt(\"11111\", 2),\n _1_5 = _11111;\n var _111111 = parseInt(\"111111\", 2),\n _1_6 = _111111;\n for (var y = this.height - 1; y >= 0; y--) {\n var line = this.bottom_up ? y : this.height - 1 - y;\n for (var x = 0; x < this.width; x++) {\n var B = this.datav.getUint16(this.pos, true);\n this.pos += 2;\n var alpha = 0xff;\n var blue = (((B & _1_5) / _1_5) * 255) | 0;\n var green = ((((B >> 5) & _1_6) / _1_6) * 255) | 0;\n var red = (((B >> 11) / _1_5) * 255) | 0;\n\n var location = line * this.width * 4 + x * 4;\n this.data[location] = red;\n this.data[location + 1] = green;\n this.data[location + 2] = blue;\n this.data[location + 3] = alpha;\n }\n //skip extra bytes\n this.pos += dif_w;\n }\n};\n\nBmpDecoder.prototype.bit24 = function() {\n //when height > 0\n for (var y = this.height - 1; y >= 0; y--) {\n var line = this.bottom_up ? y : this.height - 1 - y;\n for (var x = 0; x < this.width; x++) {\n var blue = this.datav.getUint8(this.pos++, true);\n var green = this.datav.getUint8(this.pos++, true);\n var red = this.datav.getUint8(this.pos++, true);\n var location = line * this.width * 4 + x * 4;\n this.data[location] = red;\n this.data[location + 1] = green;\n this.data[location + 2] = blue;\n this.data[location + 3] = 0xff;\n }\n //skip extra bytes\n this.pos += this.width % 4;\n }\n};\n\n/**\n * add 32bit decode func\n * @author soubok\n */\nBmpDecoder.prototype.bit32 = function() {\n //when height > 0\n for (var y = this.height - 1; y >= 0; y--) {\n var line = this.bottom_up ? y : this.height - 1 - y;\n for (var x = 0; x < this.width; x++) {\n var blue = this.datav.getUint8(this.pos++, true);\n var green = this.datav.getUint8(this.pos++, true);\n var red = this.datav.getUint8(this.pos++, true);\n var alpha = this.datav.getUint8(this.pos++, true);\n var location = line * this.width * 4 + x * 4;\n this.data[location] = red;\n this.data[location + 1] = green;\n this.data[location + 2] = blue;\n this.data[location + 3] = alpha;\n }\n //skip extra bytes\n //this.pos += (this.width % 4);\n }\n};\n\nBmpDecoder.prototype.getData = function() {\n return this.data;\n};\n\nexport { BmpDecoder };\n","function WebPDecoder(imageData) {\n /** @license\n * Copyright 2011 Google Inc.\n *\n * This code is licensed under the same terms as WebM:\n * Software License Agreement: http://www.webmproject.org/license/software/\n * Additional IP Rights Grant: http://www.webmproject.org/license/additional/\n * -----------------------------------------------------------------------------\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\n * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\n * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * -----------------------------------------------------------------------------\n *\n * Copyright 2011-2017 Dominik Homberger\n * Libwebp Javascript / libwebpjs - the libwebp implementation in javascript (v0.6.0)\n *\n * Author: Dominik Homberger (dominik.homberger@gmail.com)\n */\n\n var self = this;\n var UpsampleRgbLinePair,\n UpsampleBgrLinePair,\n UpsampleRgbaLinePair,\n UpsampleBgraLinePair,\n UpsampleArgbLinePair,\n UpsampleArgbLinePair,\n UpsampleRgba4444LinePair,\n UpsampleRgb565LinePair;\n\n function x(F) {\n if (!F) throw Error(\"assert :P\");\n }\n function fa(F, L, J) {\n for (var H = 0; 4 > H; H++) if (F[L + H] != J.charCodeAt(H)) return !0;\n return !1;\n }\n function I(F, L, J, H, Z) {\n for (var O = 0; O < Z; O++) F[L + O] = J[H + O];\n }\n function M(F, L, J, H) {\n for (var Z = 0; Z < H; Z++) F[L + Z] = J;\n }\n function V(F) {\n return new Int32Array(F);\n }\n function wa(F, L) {\n for (var J = [], H = 0; H < F; H++) J.push(new L());\n return J;\n }\n function wb() {\n function F(J, H, Z) {\n for (var O = Z[H], L = 0; L < O; L++) {\n J.push(Z.length > H + 1 ? [] : 0);\n if (Z.length < H + 1) break;\n F(J[L], H + 1, Z);\n }\n }\n var L = [];\n F(L, 0, [3, 11]);\n return L;\n }\n function Ed(F, L) {\n function J(H, O, F) {\n for (var Z = F[O], ma = 0; ma < Z; ma++) {\n H.push(F.length > O + 1 ? [] : new L());\n if (F.length < O + 1) break;\n J(H[ma], O + 1, F);\n }\n }\n var H = [];\n J(H, 0, F);\n return H;\n }\n var _WebPDecoder = function() {\n var self = this;\n function F() {\n V(55);\n }\n function L(a, b) {\n for (var c = (1 << (b - 1)) >>> 0; a & c; ) c >>>= 1;\n return c ? (a & (c - 1)) + c : a;\n }\n function J(a, b, c, d, e) {\n x(!(d % c));\n do (d -= c), (a[b + d] = e);\n while (0 < d);\n }\n function H(a, b, c, d, e, f) {\n var g = b,\n h = 1 << c,\n k,\n l,\n m = V(16),\n n = V(16);\n x(0 != e);\n x(null != d);\n x(null != a);\n x(0 < c);\n for (l = 0; l < e; ++l) {\n if (15 < d[l]) return 0;\n ++m[d[l]];\n }\n if (m[0] == e) return 0;\n n[1] = 0;\n for (k = 1; 15 > k; ++k) {\n if (m[k] > 1 << k) return 0;\n n[k + 1] = n[k] + m[k];\n }\n for (l = 0; l < e; ++l) (k = d[l]), 0 < d[l] && (f[n[k]++] = l);\n if (1 == n[15])\n return (d = new O()), (d.g = 0), (d.value = f[0]), J(a, g, 1, h, d), h;\n var r = -1,\n q = h - 1,\n t = 0,\n v = 1,\n p = 1,\n u,\n w = 1 << c;\n l = 0;\n k = 1;\n for (e = 2; k <= c; ++k, e <<= 1) {\n p <<= 1;\n v += p;\n p -= m[k];\n if (0 > p) return 0;\n for (; 0 < m[k]; --m[k])\n (d = new O()),\n (d.g = k),\n (d.value = f[l++]),\n J(a, g + t, e, w, d),\n (t = L(t, k));\n }\n k = c + 1;\n for (e = 2; 15 >= k; ++k, e <<= 1) {\n p <<= 1;\n v += p;\n p -= m[k];\n if (0 > p) return 0;\n for (; 0 < m[k]; --m[k]) {\n d = new O();\n if ((t & q) != r) {\n g += w;\n r = k;\n for (u = 1 << (r - c); 15 > r; ) {\n u -= m[r];\n if (0 >= u) break;\n ++r;\n u <<= 1;\n }\n u = r - c;\n w = 1 << u;\n h += w;\n r = t & q;\n a[b + r].g = u + c;\n a[b + r].value = g - b - r;\n }\n d.g = k - c;\n d.value = f[l++];\n J(a, g + (t >> c), e, w, d);\n t = L(t, k);\n }\n }\n return v != 2 * n[15] - 1 ? 0 : h;\n }\n function Z(a, b, c, d, e) {\n x(2328 >= e);\n if (512 >= e) var f = V(512);\n else if (((f = V(e)), null == f)) return 0;\n return H(a, b, c, d, e, f);\n }\n function O() {\n this.value = this.g = 0;\n }\n function Fd() {\n this.value = this.g = 0;\n }\n function Ub() {\n this.G = wa(5, O);\n this.H = V(5);\n this.jc = this.Qb = this.qb = this.nd = 0;\n this.pd = wa(xb, Fd);\n }\n function ma(a, b, c, d) {\n x(null != a);\n x(null != b);\n x(2147483648 > d);\n a.Ca = 254;\n a.I = 0;\n a.b = -8;\n a.Ka = 0;\n a.oa = b;\n a.pa = c;\n a.Jd = b;\n a.Yc = c + d;\n a.Zc = 4 <= d ? c + d - 4 + 1 : c;\n Qa(a);\n }\n function na(a, b) {\n for (var c = 0; 0 < b--; ) c |= K(a, 128) << b;\n return c;\n }\n function ca(a, b) {\n var c = na(a, b);\n return G(a) ? -c : c;\n }\n function cb(a, b, c, d) {\n var e,\n f = 0;\n x(null != a);\n x(null != b);\n x(4294967288 > d);\n a.Sb = d;\n a.Ra = 0;\n a.u = 0;\n a.h = 0;\n 4 < d && (d = 4);\n for (e = 0; e < d; ++e) f += b[c + e] << (8 * e);\n a.Ra = f;\n a.bb = d;\n a.oa = b;\n a.pa = c;\n }\n function Vb(a) {\n for (; 8 <= a.u && a.bb < a.Sb; )\n (a.Ra >>>= 8),\n (a.Ra += (a.oa[a.pa + a.bb] << (ob - 8)) >>> 0),\n ++a.bb,\n (a.u -= 8);\n db(a) && ((a.h = 1), (a.u = 0));\n }\n function D(a, b) {\n x(0 <= b);\n if (!a.h && b <= Gd) {\n var c = pb(a) & Hd[b];\n a.u += b;\n Vb(a);\n return c;\n }\n a.h = 1;\n return (a.u = 0);\n }\n function Wb() {\n this.b = this.Ca = this.I = 0;\n this.oa = [];\n this.pa = 0;\n this.Jd = [];\n this.Yc = 0;\n this.Zc = [];\n this.Ka = 0;\n }\n function Ra() {\n this.Ra = 0;\n this.oa = [];\n this.h = this.u = this.bb = this.Sb = this.pa = 0;\n }\n function pb(a) {\n return (a.Ra >>> (a.u & (ob - 1))) >>> 0;\n }\n function db(a) {\n x(a.bb <= a.Sb);\n return a.h || (a.bb == a.Sb && a.u > ob);\n }\n function qb(a, b) {\n a.u = b;\n a.h = db(a);\n }\n function Sa(a) {\n a.u >= Xb && (x(a.u >= Xb), Vb(a));\n }\n function Qa(a) {\n x(null != a && null != a.oa);\n a.pa < a.Zc\n ? ((a.I = (a.oa[a.pa++] | (a.I << 8)) >>> 0), (a.b += 8))\n : (x(null != a && null != a.oa),\n a.pa < a.Yc\n ? ((a.b += 8), (a.I = a.oa[a.pa++] | (a.I << 8)))\n : a.Ka\n ? (a.b = 0)\n : ((a.I <<= 8), (a.b += 8), (a.Ka = 1)));\n }\n function G(a) {\n return na(a, 1);\n }\n function K(a, b) {\n var c = a.Ca;\n 0 > a.b && Qa(a);\n var d = a.b,\n e = (c * b) >>> 8,\n f = (a.I >>> d > e) + 0;\n f ? ((c -= e), (a.I -= ((e + 1) << d) >>> 0)) : (c = e + 1);\n d = c;\n for (e = 0; 256 <= d; ) (e += 8), (d >>= 8);\n d = 7 ^ (e + Id[d]);\n a.b -= d;\n a.Ca = (c << d) - 1;\n return f;\n }\n function ra(a, b, c) {\n a[b + 0] = (c >> 24) & 255;\n a[b + 1] = (c >> 16) & 255;\n a[b + 2] = (c >> 8) & 255;\n a[b + 3] = (c >> 0) & 255;\n }\n function Ta(a, b) {\n return (a[b + 0] << 0) | (a[b + 1] << 8);\n }\n function Yb(a, b) {\n return Ta(a, b) | (a[b + 2] << 16);\n }\n function Ha(a, b) {\n return Ta(a, b) | (Ta(a, b + 2) << 16);\n }\n function Zb(a, b) {\n var c = 1 << b;\n x(null != a);\n x(0 < b);\n a.X = V(c);\n if (null == a.X) return 0;\n a.Mb = 32 - b;\n a.Xa = b;\n return 1;\n }\n function $b(a, b) {\n x(null != a);\n x(null != b);\n x(a.Xa == b.Xa);\n I(b.X, 0, a.X, 0, 1 << b.Xa);\n }\n function ac() {\n this.X = [];\n this.Xa = this.Mb = 0;\n }\n function bc(a, b, c, d) {\n x(null != c);\n x(null != d);\n var e = c[0],\n f = d[0];\n 0 == e && (e = (a * f + b / 2) / b);\n 0 == f && (f = (b * e + a / 2) / a);\n if (0 >= e || 0 >= f) return 0;\n c[0] = e;\n d[0] = f;\n return 1;\n }\n function xa(a, b) {\n return (a + (1 << b) - 1) >>> b;\n }\n function yb(a, b) {\n return (\n (((((a & 4278255360) + (b & 4278255360)) >>> 0) & 4278255360) +\n ((((a & 16711935) + (b & 16711935)) >>> 0) & 16711935)) >>>\n 0\n );\n }\n function X(a, b) {\n self[b] = function(b, d, e, f, g, h, k) {\n var c;\n for (c = 0; c < g; ++c) {\n var m = self[a](h[k + c - 1], e, f + c);\n h[k + c] = yb(b[d + c], m);\n }\n };\n }\n function Jd() {\n this.ud = this.hd = this.jd = 0;\n }\n function aa(a, b) {\n return ((((a ^ b) & 4278124286) >>> 1) + (a & b)) >>> 0;\n }\n function sa(a) {\n if (0 <= a && 256 > a) return a;\n if (0 > a) return 0;\n if (255 < a) return 255;\n }\n function eb(a, b) {\n return sa(a + ((a - b + 0.5) >> 1));\n }\n function Ia(a, b, c) {\n return Math.abs(b - c) - Math.abs(a - c);\n }\n function cc(a, b, c, d, e, f, g) {\n d = f[g - 1];\n for (c = 0; c < e; ++c) f[g + c] = d = yb(a[b + c], d);\n }\n function Kd(a, b, c, d, e) {\n var f;\n for (f = 0; f < c; ++f) {\n var g = a[b + f],\n h = (g >> 8) & 255,\n k = g & 16711935,\n k = k + ((h << 16) + h),\n k = k & 16711935;\n d[e + f] = ((g & 4278255360) + k) >>> 0;\n }\n }\n function dc(a, b) {\n b.jd = (a >> 0) & 255;\n b.hd = (a >> 8) & 255;\n b.ud = (a >> 16) & 255;\n }\n function Ld(a, b, c, d, e, f) {\n var g;\n for (g = 0; g < d; ++g) {\n var h = b[c + g],\n k = h >>> 8,\n l = h >>> 16,\n m = h,\n l = l + ((((a.jd << 24) >> 24) * ((k << 24) >> 24)) >>> 5),\n l = l & 255,\n m = m + ((((a.hd << 24) >> 24) * ((k << 24) >> 24)) >>> 5),\n m = m + ((((a.ud << 24) >> 24) * ((l << 24) >> 24)) >>> 5),\n m = m & 255;\n e[f + g] = (h & 4278255360) + (l << 16) + m;\n }\n }\n function ec(a, b, c, d, e) {\n self[b] = function(a, b, c, k, l, m, n, r, q) {\n for (k = n; k < r; ++k)\n for (n = 0; n < q; ++n) l[m++] = e(c[d(a[b++])]);\n };\n self[a] = function(a, b, h, k, l, m, n) {\n var f = 8 >> a.b,\n g = a.Ea,\n t = a.K[0],\n v = a.w;\n if (8 > f)\n for (a = (1 << a.b) - 1, v = (1 << f) - 1; b < h; ++b) {\n var p = 0,\n u;\n for (u = 0; u < g; ++u)\n u & a || (p = d(k[l++])), (m[n++] = e(t[p & v])), (p >>= f);\n }\n else self[\"VP8LMapColor\" + c](k, l, t, v, m, n, b, h, g);\n };\n }\n function Md(a, b, c, d, e) {\n for (c = b + c; b < c; ) {\n var f = a[b++];\n d[e++] = (f >> 16) & 255;\n d[e++] = (f >> 8) & 255;\n d[e++] = (f >> 0) & 255;\n }\n }\n function Nd(a, b, c, d, e) {\n for (c = b + c; b < c; ) {\n var f = a[b++];\n d[e++] = (f >> 16) & 255;\n d[e++] = (f >> 8) & 255;\n d[e++] = (f >> 0) & 255;\n d[e++] = (f >> 24) & 255;\n }\n }\n function Od(a, b, c, d, e) {\n for (c = b + c; b < c; ) {\n var f = a[b++],\n g = ((f >> 16) & 240) | ((f >> 12) & 15),\n f = ((f >> 0) & 240) | ((f >> 28) & 15);\n d[e++] = g;\n d[e++] = f;\n }\n }\n function Pd(a, b, c, d, e) {\n for (c = b + c; b < c; ) {\n var f = a[b++],\n g = ((f >> 16) & 248) | ((f >> 13) & 7),\n f = ((f >> 5) & 224) | ((f >> 3) & 31);\n d[e++] = g;\n d[e++] = f;\n }\n }\n function Qd(a, b, c, d, e) {\n for (c = b + c; b < c; ) {\n var f = a[b++];\n d[e++] = (f >> 0) & 255;\n d[e++] = (f >> 8) & 255;\n d[e++] = (f >> 16) & 255;\n }\n }\n function fb(a, b, c, d, e, f) {\n if (0 == f)\n for (c = b + c; b < c; )\n (f = a[b++]),\n ra(\n d,\n ((f[0] >> 24) |\n ((f[1] >> 8) & 65280) |\n ((f[2] << 8) & 16711680) |\n (f[3] << 24)) >>>\n 0\n ),\n (e += 32);\n else I(d, e, a, b, c);\n }\n function gb(a, b) {\n self[b][0] = self[a + \"0\"];\n self[b][1] = self[a + \"1\"];\n self[b][2] = self[a + \"2\"];\n self[b][3] = self[a + \"3\"];\n self[b][4] = self[a + \"4\"];\n self[b][5] = self[a + \"5\"];\n self[b][6] = self[a + \"6\"];\n self[b][7] = self[a + \"7\"];\n self[b][8] = self[a + \"8\"];\n self[b][9] = self[a + \"9\"];\n self[b][10] = self[a + \"10\"];\n self[b][11] = self[a + \"11\"];\n self[b][12] = self[a + \"12\"];\n self[b][13] = self[a + \"13\"];\n self[b][14] = self[a + \"0\"];\n self[b][15] = self[a + \"0\"];\n }\n function hb(a) {\n return a == zb || a == Ab || a == Ja || a == Bb;\n }\n function Rd() {\n this.eb = [];\n this.size = this.A = this.fb = 0;\n }\n function Sd() {\n this.y = [];\n this.f = [];\n this.ea = [];\n this.F = [];\n this.Tc = this.Ed = this.Cd = this.Fd = this.lb = this.Db = this.Ab = this.fa = this.J = this.W = this.N = this.O = 0;\n }\n function Cb() {\n this.Rd = this.height = this.width = this.S = 0;\n this.f = {};\n this.f.RGBA = new Rd();\n this.f.kb = new Sd();\n this.sd = null;\n }\n function Td() {\n this.width = [0];\n this.height = [0];\n this.Pd = [0];\n this.Qd = [0];\n this.format = [0];\n }\n function Ud() {\n this.Id = this.fd = this.Md = this.hb = this.ib = this.da = this.bd = this.cd = this.j = this.v = this.Da = this.Sd = this.ob = 0;\n }\n function Vd(a) {\n alert(\"todo:WebPSamplerProcessPlane\");\n return a.T;\n }\n function Wd(a, b) {\n var c = a.T,\n d = b.ba.f.RGBA,\n e = d.eb,\n f = d.fb + a.ka * d.A,\n g = P[b.ba.S],\n h = a.y,\n k = a.O,\n l = a.f,\n m = a.N,\n n = a.ea,\n r = a.W,\n q = b.cc,\n t = b.dc,\n v = b.Mc,\n p = b.Nc,\n u = a.ka,\n w = a.ka + a.T,\n y = a.U,\n A = (y + 1) >> 1;\n 0 == u\n ? g(h, k, null, null, l, m, n, r, l, m, n, r, e, f, null, null, y)\n : (g(b.ec, b.fc, h, k, q, t, v, p, l, m, n, r, e, f - d.A, e, f, y),\n ++c);\n for (; u + 2 < w; u += 2)\n (q = l),\n (t = m),\n (v = n),\n (p = r),\n (m += a.Rc),\n (r += a.Rc),\n (f += 2 * d.A),\n (k += 2 * a.fa),\n g(h, k - a.fa, h, k, q, t, v, p, l, m, n, r, e, f - d.A, e, f, y);\n k += a.fa;\n a.j + w < a.o\n ? (I(b.ec, b.fc, h, k, y),\n I(b.cc, b.dc, l, m, A),\n I(b.Mc, b.Nc, n, r, A),\n c--)\n : w & 1 ||\n g(\n h,\n k,\n null,\n null,\n l,\n m,\n n,\n r,\n l,\n m,\n n,\n r,\n e,\n f + d.A,\n null,\n null,\n y\n );\n return c;\n }\n function Xd(a, b, c) {\n var d = a.F,\n e = [a.J];\n if (null != d) {\n var f = a.U,\n g = b.ba.S,\n h = g == ya || g == Ja;\n b = b.ba.f.RGBA;\n var k = [0],\n l = a.ka;\n k[0] = a.T;\n a.Kb &&\n (0 == l ? --k[0] : (--l, (e[0] -= a.width)),\n a.j + a.ka + a.T == a.o && (k[0] = a.o - a.j - l));\n var m = b.eb,\n l = b.fb + l * b.A;\n a = fc(d, e[0], a.width, f, k, m, l + (h ? 0 : 3), b.A);\n x(c == k);\n a && hb(g) && za(m, l, h, f, k, b.A);\n }\n return 0;\n }\n function gc(a) {\n var b = a.ma,\n c = b.ba.S,\n d = 11 > c,\n e = c == Ua || c == Va || c == ya || c == Db || 12 == c || hb(c);\n b.memory = null;\n b.Ib = null;\n b.Jb = null;\n b.Nd = null;\n if (!hc(b.Oa, a, e ? 11 : 12)) return 0;\n e && hb(c) && ic();\n if (a.da) alert(\"todo:use_scaling\");\n else {\n if (d) {\n if (((b.Ib = Vd), a.Kb)) {\n c = (a.U + 1) >> 1;\n b.memory = V(a.U + 2 * c);\n if (null == b.memory) return 0;\n b.ec = b.memory;\n b.fc = 0;\n b.cc = b.ec;\n b.dc = b.fc + a.U;\n b.Mc = b.cc;\n b.Nc = b.dc + c;\n b.Ib = Wd;\n ic();\n }\n } else alert(\"todo:EmitYUV\");\n e && ((b.Jb = Xd), d && Aa());\n }\n if (d && !jc) {\n for (a = 0; 256 > a; ++a)\n (Yd[a] = (89858 * (a - 128) + Ba) >> Wa),\n (Zd[a] = -22014 * (a - 128) + Ba),\n ($d[a] = -45773 * (a - 128)),\n (ae[a] = (113618 * (a - 128) + Ba) >> Wa);\n for (a = ta; a < Eb; ++a)\n (b = (76283 * (a - 16) + Ba) >> Wa),\n (be[a - ta] = ga(b, 255)),\n (ce[a - ta] = ga((b + 8) >> 4, 15));\n jc = 1;\n }\n return 1;\n }\n function kc(a) {\n var b = a.ma,\n c = a.U,\n d = a.T;\n x(!(a.ka & 1));\n if (0 >= c || 0 >= d) return 0;\n c = b.Ib(a, b);\n null != b.Jb && b.Jb(a, b, c);\n b.Dc += c;\n return 1;\n }\n function lc(a) {\n a.ma.memory = null;\n }\n function mc(a, b, c, d) {\n if (47 != D(a, 8)) return 0;\n b[0] = D(a, 14) + 1;\n c[0] = D(a, 14) + 1;\n d[0] = D(a, 1);\n return 0 != D(a, 3) ? 0 : !a.h;\n }\n function ib(a, b) {\n if (4 > a) return a + 1;\n var c = (a - 2) >> 1;\n return ((2 + (a & 1)) << c) + D(b, c) + 1;\n }\n function nc(a, b) {\n if (120 < b) return b - 120;\n var c = de[b - 1],\n c = (c >> 4) * a + (8 - (c & 15));\n return 1 <= c ? c : 1;\n }\n function ua(a, b, c) {\n var d = pb(c);\n b += d & 255;\n var e = a[b].g - 8;\n 0 < e &&\n (qb(c, c.u + 8),\n (d = pb(c)),\n (b += a[b].value),\n (b += d & ((1 << e) - 1)));\n qb(c, c.u + a[b].g);\n return a[b].value;\n }\n function ub(a, b, c) {\n c.g += a.g;\n c.value += (a.value << b) >>> 0;\n x(8 >= c.g);\n return a.g;\n }\n function ha(a, b, c) {\n var d = a.xc;\n b = 0 == d ? 0 : a.vc[a.md * (c >> d) + (b >> d)];\n x(b < a.Wb);\n return a.Ya[b];\n }\n function oc(a, b, c, d) {\n var e = a.ab,\n f = a.c * b,\n g = a.C;\n b = g + b;\n var h = c,\n k = d;\n d = a.Ta;\n for (c = a.Ua; 0 < e--; ) {\n var l = a.gc[e],\n m = g,\n n = b,\n r = h,\n q = k,\n k = d,\n h = c,\n t = l.Ea;\n x(m < n);\n x(n <= l.nc);\n switch (l.hc) {\n case 2:\n pc(r, q, (n - m) * t, k, h);\n break;\n case 0:\n var v = l,\n p = m,\n u = n,\n w = k,\n y = h,\n A = v.Ea;\n 0 == p &&\n (ee(r, q, null, null, 1, w, y),\n cc(r, q + 1, 0, 0, A - 1, w, y + 1),\n (q += A),\n (y += A),\n ++p);\n for (\n var E = 1 << v.b,\n B = E - 1,\n C = xa(A, v.b),\n N = v.K,\n v = v.w + (p >> v.b) * C;\n p < u;\n\n ) {\n var z = N,\n Q = v,\n S = 1;\n for (fe(r, q, w, y - A, 1, w, y); S < A; ) {\n var K = qc[(z[Q++] >> 8) & 15],\n D = (S & ~B) + E;\n D > A && (D = A);\n K(r, q + +S, w, y + S - A, D - S, w, y + S);\n S = D;\n }\n q += A;\n y += A;\n ++p;\n p & B || (v += C);\n }\n n != l.nc && I(k, h - t, k, h + (n - m - 1) * t, t);\n break;\n case 1:\n t = r;\n u = q;\n r = l.Ea;\n q = 1 << l.b;\n w = q - 1;\n y = r & ~w;\n A = r - y;\n p = xa(r, l.b);\n E = l.K;\n for (l = l.w + (m >> l.b) * p; m < n; ) {\n B = E;\n C = l;\n N = new Jd();\n v = u + y;\n for (z = u + r; u < v; )\n dc(B[C++], N), Fb(N, t, u, q, k, h), (u += q), (h += q);\n u < z &&\n (dc(B[C++], N), Fb(N, t, u, A, k, h), (u += A), (h += A));\n ++m;\n m & w || (l += p);\n }\n break;\n case 3:\n if (r == k && q == h && 0 < l.b) {\n y = (n - m) * xa(l.Ea, l.b);\n t = h + (n - m) * t - y;\n u = k;\n r = t;\n q = k;\n w = h;\n A = y;\n p = [];\n for (y = A - 1; 0 <= y; --y) p[y] = q[w + y];\n for (y = A - 1; 0 <= y; --y) u[r + y] = p[y];\n rc(l, m, n, k, t, k, h);\n } else rc(l, m, n, r, q, k, h);\n }\n h = d;\n k = c;\n }\n k != c && I(d, c, h, k, f);\n }\n function ge(a, b) {\n var c = a.V,\n d = a.Ba + a.c * a.C,\n e = b - a.C;\n x(b <= a.l.o);\n x(16 >= e);\n if (0 < e) {\n var f = a.l,\n g = a.Ta,\n h = a.Ua,\n k = f.width;\n oc(a, e, c, d);\n h = [h];\n c = a.C;\n d = b;\n e = h;\n x(c < d);\n x(f.v < f.va);\n d > f.o && (d = f.o);\n if (c < f.j) {\n var l = f.j - c,\n c = f.j;\n e[0] += l * k;\n }\n c >= d\n ? (c = 0)\n : ((e[0] += 4 * f.v),\n (f.ka = c - f.j),\n (f.U = f.va - f.v),\n (f.T = d - c),\n (c = 1));\n if (c) {\n h = h[0];\n c = a.ca;\n if (11 > c.S) {\n for (\n var m = c.f.RGBA,\n d = c.S,\n e = f.U,\n f = f.T,\n l = m.eb,\n n = m.A,\n r = f,\n m = m.fb + a.Ma * m.A;\n 0 < r--;\n\n ) {\n var q = g,\n t = h,\n v = e,\n p = l,\n u = m;\n switch (d) {\n case Ca:\n sc(q, t, v, p, u);\n break;\n case Ua:\n Gb(q, t, v, p, u);\n break;\n case zb:\n Gb(q, t, v, p, u);\n za(p, u, 0, v, 1, 0);\n break;\n case tc:\n uc(q, t, v, p, u);\n break;\n case Va:\n fb(q, t, v, p, u, 1);\n break;\n case Ab:\n fb(q, t, v, p, u, 1);\n za(p, u, 0, v, 1, 0);\n break;\n case ya:\n fb(q, t, v, p, u, 0);\n break;\n case Ja:\n fb(q, t, v, p, u, 0);\n za(p, u, 1, v, 1, 0);\n break;\n case Db:\n Hb(q, t, v, p, u);\n break;\n case Bb:\n Hb(q, t, v, p, u);\n vc(p, u, v, 1, 0);\n break;\n case wc:\n xc(q, t, v, p, u);\n break;\n default:\n x(0);\n }\n h += k;\n m += n;\n }\n a.Ma += f;\n } else alert(\"todo:EmitRescaledRowsYUVA\");\n x(a.Ma <= c.height);\n }\n }\n a.C = b;\n x(a.C <= a.i);\n }\n function yc(a) {\n var b;\n if (0 < a.ua) return 0;\n for (b = 0; b < a.Wb; ++b) {\n var c = a.Ya[b].G,\n d = a.Ya[b].H;\n if (\n 0 < c[1][d[1] + 0].g ||\n 0 < c[2][d[2] + 0].g ||\n 0 < c[3][d[3] + 0].g\n )\n return 0;\n }\n return 1;\n }\n function zc(a, b, c, d, e, f) {\n if (0 != a.Z) {\n var g = a.qd,\n h = a.rd;\n for (x(null != ia[a.Z]); b < c; ++b)\n ia[a.Z](g, h, d, e, d, e, f), (g = d), (h = e), (e += f);\n a.qd = g;\n a.rd = h;\n }\n }\n function Ib(a, b) {\n var c = a.l.ma,\n d = 0 == c.Z || 1 == c.Z ? a.l.j : a.C,\n d = a.C < d ? d : a.C;\n x(b <= a.l.o);\n if (b > d) {\n var e = a.l.width,\n f = c.ca,\n g = c.tb + e * d,\n h = a.V,\n k = a.Ba + a.c * d,\n l = a.gc;\n x(1 == a.ab);\n x(3 == l[0].hc);\n he(l[0], d, b, h, k, f, g);\n zc(c, d, b, f, g, e);\n }\n a.C = a.Ma = b;\n }\n function Jb(a, b, c, d, e, f, g) {\n var h = a.$ / d,\n k = a.$ % d,\n l = a.m,\n m = a.s,\n n = c + a.$,\n r = n;\n e = c + d * e;\n var q = c + d * f,\n t = 280 + m.ua,\n v = a.Pb ? h : 16777216,\n p = 0 < m.ua ? m.Wa : null,\n u = m.wc,\n w = n < q ? ha(m, k, h) : null;\n x(a.C < f);\n x(q <= e);\n var y = !1;\n a: for (;;) {\n for (; y || n < q; ) {\n var A = 0;\n if (h >= v) {\n var v = a,\n E = n - c;\n x(v.Pb);\n v.wd = v.m;\n v.xd = E;\n 0 < v.s.ua && $b(v.s.Wa, v.s.vb);\n v = h + ie;\n }\n k & u || (w = ha(m, k, h));\n x(null != w);\n w.Qb && ((b[n] = w.qb), (y = !0));\n if (!y)\n if ((Sa(l), w.jc)) {\n var A = l,\n E = b,\n B = n,\n C = w.pd[pb(A) & (xb - 1)];\n x(w.jc);\n 256 > C.g\n ? (qb(A, A.u + C.g), (E[B] = C.value), (A = 0))\n : (qb(A, A.u + C.g - 256), x(256 <= C.value), (A = C.value));\n 0 == A && (y = !0);\n } else A = ua(w.G[0], w.H[0], l);\n if (l.h) break;\n if (y || 256 > A) {\n if (!y)\n if (w.nd) b[n] = (w.qb | (A << 8)) >>> 0;\n else {\n Sa(l);\n y = ua(w.G[1], w.H[1], l);\n Sa(l);\n E = ua(w.G[2], w.H[2], l);\n B = ua(w.G[3], w.H[3], l);\n if (l.h) break;\n b[n] = ((B << 24) | (y << 16) | (A << 8) | E) >>> 0;\n }\n y = !1;\n ++n;\n ++k;\n if (\n k >= d &&\n ((k = 0),\n ++h,\n null != g && h <= f && !(h % 16) && g(a, h),\n null != p)\n )\n for (; r < n; )\n (A = b[r++]),\n (p.X[((506832829 * A) & 4294967295) >>> p.Mb] = A);\n } else if (280 > A) {\n A = ib(A - 256, l);\n E = ua(w.G[4], w.H[4], l);\n Sa(l);\n E = ib(E, l);\n E = nc(d, E);\n if (l.h) break;\n if (n - c < E || e - n < A) break a;\n else for (B = 0; B < A; ++B) b[n + B] = b[n + B - E];\n n += A;\n for (k += A; k >= d; )\n (k -= d), ++h, null != g && h <= f && !(h % 16) && g(a, h);\n x(n <= e);\n k & u && (w = ha(m, k, h));\n if (null != p)\n for (; r < n; )\n (A = b[r++]),\n (p.X[((506832829 * A) & 4294967295) >>> p.Mb] = A);\n } else if (A < t) {\n y = A - 280;\n for (x(null != p); r < n; )\n (A = b[r++]), (p.X[((506832829 * A) & 4294967295) >>> p.Mb] = A);\n A = n;\n E = p;\n x(!(y >>> E.Xa));\n b[A] = E.X[y];\n y = !0;\n } else break a;\n y || x(l.h == db(l));\n }\n if (a.Pb && l.h && n < e)\n x(a.m.h),\n (a.a = 5),\n (a.m = a.wd),\n (a.$ = a.xd),\n 0 < a.s.ua && $b(a.s.vb, a.s.Wa);\n else if (l.h) break a;\n else null != g && g(a, h > f ? f : h), (a.a = 0), (a.$ = n - c);\n return 1;\n }\n a.a = 3;\n return 0;\n }\n function Ac(a) {\n x(null != a);\n a.vc = null;\n a.yc = null;\n a.Ya = null;\n var b = a.Wa;\n null != b && (b.X = null);\n a.vb = null;\n x(null != a);\n }\n function Bc() {\n var a = new je();\n if (null == a) return null;\n a.a = 0;\n a.xb = Cc;\n gb(\"Predictor\", \"VP8LPredictors\");\n gb(\"Predictor\", \"VP8LPredictors_C\");\n gb(\"PredictorAdd\", \"VP8LPredictorsAdd\");\n gb(\"PredictorAdd\", \"VP8LPredictorsAdd_C\");\n pc = Kd;\n Fb = Ld;\n sc = Md;\n Gb = Nd;\n Hb = Od;\n xc = Pd;\n uc = Qd;\n self.VP8LMapColor32b = ke;\n self.VP8LMapColor8b = le;\n return a;\n }\n function rb(a, b, c, d, e) {\n var f = 1,\n g = [a],\n h = [b],\n k = d.m,\n l = d.s,\n m = null,\n n = 0;\n a: for (;;) {\n if (c)\n for (; f && D(k, 1); ) {\n var r = g,\n q = h,\n t = d,\n v = 1,\n p = t.m,\n u = t.gc[t.ab],\n w = D(p, 2);\n if (t.Oc & (1 << w)) f = 0;\n else {\n t.Oc |= 1 << w;\n u.hc = w;\n u.Ea = r[0];\n u.nc = q[0];\n u.K = [null];\n ++t.ab;\n x(4 >= t.ab);\n switch (w) {\n case 0:\n case 1:\n u.b = D(p, 3) + 2;\n v = rb(xa(u.Ea, u.b), xa(u.nc, u.b), 0, t, u.K);\n u.K = u.K[0];\n break;\n case 3:\n var y = D(p, 8) + 1,\n A = 16 < y ? 0 : 4 < y ? 1 : 2 < y ? 2 : 3;\n r[0] = xa(u.Ea, A);\n u.b = A;\n var v = rb(y, 1, 0, t, u.K),\n E;\n if ((E = v)) {\n var B,\n C = y,\n N = u,\n z = 1 << (8 >> N.b),\n Q = V(z);\n if (null == Q) E = 0;\n else {\n var S = N.K[0],\n K = N.w;\n Q[0] = N.K[0][0];\n for (B = 1; B < 1 * C; ++B) Q[B] = yb(S[K + B], Q[B - 1]);\n for (; B < 4 * z; ++B) Q[B] = 0;\n N.K[0] = null;\n N.K[0] = Q;\n E = 1;\n }\n }\n v = E;\n break;\n case 2:\n break;\n default:\n x(0);\n }\n f = v;\n }\n }\n g = g[0];\n h = h[0];\n if (f && D(k, 1) && ((n = D(k, 4)), (f = 1 <= n && 11 >= n), !f)) {\n d.a = 3;\n break a;\n }\n var H;\n if ((H = f))\n b: {\n var F = d,\n G = g,\n L = h,\n J = n,\n T = c,\n Da,\n ba,\n X = F.m,\n R = F.s,\n P = [null],\n U,\n W = 1,\n aa = 0,\n na = me[J];\n c: for (;;) {\n if (T && D(X, 1)) {\n var ca = D(X, 3) + 2,\n ga = xa(G, ca),\n ka = xa(L, ca),\n qa = ga * ka;\n if (!rb(ga, ka, 0, F, P)) break c;\n P = P[0];\n R.xc = ca;\n for (Da = 0; Da < qa; ++Da) {\n var ia = (P[Da] >> 8) & 65535;\n P[Da] = ia;\n ia >= W && (W = ia + 1);\n }\n }\n if (X.h) break c;\n for (ba = 0; 5 > ba; ++ba) {\n var Y = Dc[ba];\n !ba && 0 < J && (Y += 1 << J);\n aa < Y && (aa = Y);\n }\n var ma = wa(W * na, O);\n var ua = W,\n va = wa(ua, Ub);\n if (null == va) var la = null;\n else x(65536 >= ua), (la = va);\n var ha = V(aa);\n if (null == la || null == ha || null == ma) {\n F.a = 1;\n break c;\n }\n var pa = ma;\n for (Da = U = 0; Da < W; ++Da) {\n var ja = la[Da],\n da = ja.G,\n ea = ja.H,\n Fa = 0,\n ra = 1,\n Ha = 0;\n for (ba = 0; 5 > ba; ++ba) {\n Y = Dc[ba];\n da[ba] = pa;\n ea[ba] = U;\n !ba && 0 < J && (Y += 1 << J);\n d: {\n var sa,\n za = Y,\n ta = F,\n oa = ha,\n db = pa,\n eb = U,\n Ia = 0,\n Ka = ta.m,\n fb = D(Ka, 1);\n M(oa, 0, 0, za);\n if (fb) {\n var gb = D(Ka, 1) + 1,\n hb = D(Ka, 1),\n Ja = D(Ka, 0 == hb ? 1 : 8);\n oa[Ja] = 1;\n 2 == gb && ((Ja = D(Ka, 8)), (oa[Ja] = 1));\n var ya = 1;\n } else {\n var Ua = V(19),\n Va = D(Ka, 4) + 4;\n if (19 < Va) {\n ta.a = 3;\n var Aa = 0;\n break d;\n }\n for (sa = 0; sa < Va; ++sa) Ua[ne[sa]] = D(Ka, 3);\n var Ba = void 0,\n sb = void 0,\n Wa = ta,\n ib = Ua,\n Ca = za,\n Xa = oa,\n Oa = 0,\n La = Wa.m,\n Ya = 8,\n Za = wa(128, O);\n e: for (;;) {\n if (!Z(Za, 0, 7, ib, 19)) break e;\n if (D(La, 1)) {\n var kb = 2 + 2 * D(La, 3),\n Ba = 2 + D(La, kb);\n if (Ba > Ca) break e;\n } else Ba = Ca;\n for (sb = 0; sb < Ca && Ba--; ) {\n Sa(La);\n var $a = Za[0 + (pb(La) & 127)];\n qb(La, La.u + $a.g);\n var jb = $a.value;\n if (16 > jb) (Xa[sb++] = jb), 0 != jb && (Ya = jb);\n else {\n var lb = 16 == jb,\n ab = jb - 16,\n mb = oe[ab],\n bb = D(La, pe[ab]) + mb;\n if (sb + bb > Ca) break e;\n else\n for (var nb = lb ? Ya : 0; 0 < bb--; )\n Xa[sb++] = nb;\n }\n }\n Oa = 1;\n break e;\n }\n Oa || (Wa.a = 3);\n ya = Oa;\n }\n (ya = ya && !Ka.h) && (Ia = Z(db, eb, 8, oa, za));\n ya && 0 != Ia ? (Aa = Ia) : ((ta.a = 3), (Aa = 0));\n }\n if (0 == Aa) break c;\n ra && 1 == qe[ba] && (ra = 0 == pa[U].g);\n Fa += pa[U].g;\n U += Aa;\n if (3 >= ba) {\n var Pa = ha[0],\n tb;\n for (tb = 1; tb < Y; ++tb) ha[tb] > Pa && (Pa = ha[tb]);\n Ha += Pa;\n }\n }\n ja.nd = ra;\n ja.Qb = 0;\n ra &&\n ((ja.qb =\n ((da[3][ea[3] + 0].value << 24) |\n (da[1][ea[1] + 0].value << 16) |\n da[2][ea[2] + 0].value) >>>\n 0),\n 0 == Fa &&\n 256 > da[0][ea[0] + 0].value &&\n ((ja.Qb = 1), (ja.qb += da[0][ea[0] + 0].value << 8)));\n ja.jc = !ja.Qb && 6 > Ha;\n if (ja.jc) {\n var Ga,\n Ea = ja;\n for (Ga = 0; Ga < xb; ++Ga) {\n var Ma = Ga,\n Na = Ea.pd[Ma],\n vb = Ea.G[0][Ea.H[0] + Ma];\n 256 <= vb.value\n ? ((Na.g = vb.g + 256), (Na.value = vb.value))\n : ((Na.g = 0),\n (Na.value = 0),\n (Ma >>= ub(vb, 8, Na)),\n (Ma >>= ub(Ea.G[1][Ea.H[1] + Ma], 16, Na)),\n (Ma >>= ub(Ea.G[2][Ea.H[2] + Ma], 0, Na)),\n ub(Ea.G[3][Ea.H[3] + Ma], 24, Na));\n }\n }\n }\n R.vc = P;\n R.Wb = W;\n R.Ya = la;\n R.yc = ma;\n H = 1;\n break b;\n }\n H = 0;\n }\n f = H;\n if (!f) {\n d.a = 3;\n break a;\n }\n if (0 < n) {\n if (((l.ua = 1 << n), !Zb(l.Wa, n))) {\n d.a = 1;\n f = 0;\n break a;\n }\n } else l.ua = 0;\n var Qa = d,\n cb = g,\n ob = h,\n Ra = Qa.s,\n Ta = Ra.xc;\n Qa.c = cb;\n Qa.i = ob;\n Ra.md = xa(cb, Ta);\n Ra.wc = 0 == Ta ? -1 : (1 << Ta) - 1;\n if (c) {\n d.xb = re;\n break a;\n }\n m = V(g * h);\n if (null == m) {\n d.a = 1;\n f = 0;\n break a;\n }\n f = (f = Jb(d, m, 0, g, h, h, null)) && !k.h;\n break a;\n }\n f\n ? (null != e ? (e[0] = m) : (x(null == m), x(c)), (d.$ = 0), c || Ac(l))\n : Ac(l);\n return f;\n }\n function Ec(a, b) {\n var c = a.c * a.i,\n d = c + b + 16 * b;\n x(a.c <= b);\n a.V = V(d);\n if (null == a.V) return (a.Ta = null), (a.Ua = 0), (a.a = 1), 0;\n a.Ta = a.V;\n a.Ua = a.Ba + c + b;\n return 1;\n }\n function se(a, b) {\n var c = a.C,\n d = b - c,\n e = a.V,\n f = a.Ba + a.c * c;\n for (x(b <= a.l.o); 0 < d; ) {\n var g = 16 < d ? 16 : d,\n h = a.l.ma,\n k = a.l.width,\n l = k * g,\n m = h.ca,\n n = h.tb + k * c,\n r = a.Ta,\n q = a.Ua;\n oc(a, g, e, f);\n Fc(r, q, m, n, l);\n zc(h, c, c + g, m, n, k);\n d -= g;\n e += g * a.c;\n c += g;\n }\n x(c == b);\n a.C = a.Ma = b;\n }\n function te(a, b) {\n var c = [0],\n d = [0],\n e = [0];\n a: for (;;) {\n if (null == a) return 0;\n if (null == b) return (a.a = 2), 0;\n a.l = b;\n a.a = 0;\n cb(a.m, b.data, b.w, b.ha);\n if (!mc(a.m, c, d, e)) {\n a.a = 3;\n break a;\n }\n a.xb = Cc;\n b.width = c[0];\n b.height = d[0];\n if (!rb(c[0], d[0], 1, a, null)) break a;\n return 1;\n }\n x(0 != a.a);\n return 0;\n }\n function ue() {\n this.ub = this.yd = this.td = this.Rb = 0;\n }\n function ve() {\n this.Kd = this.Ld = this.Ud = this.Td = this.i = this.c = 0;\n }\n function we() {\n this.Fb = this.Bb = this.Cb = 0;\n this.Zb = V(4);\n this.Lb = V(4);\n }\n function Gc() {\n this.Yb = wb();\n }\n function xe() {\n this.jb = V(3);\n this.Wc = Ed([4, 8], Gc);\n this.Xc = Ed([4, 17], Gc);\n }\n function ye() {\n this.Pc = this.wb = this.Tb = this.zd = 0;\n this.vd = new V(4);\n this.od = new V(4);\n }\n function Xa() {\n this.ld = this.La = this.dd = this.tc = 0;\n }\n function Hc() {\n this.Na = this.la = 0;\n }\n function ze() {\n this.Sc = [0, 0];\n this.Eb = [0, 0];\n this.Qc = [0, 0];\n this.ia = this.lc = 0;\n }\n function Kb() {\n this.ad = V(384);\n this.Za = 0;\n this.Ob = V(16);\n this.$b = this.Ad = this.ia = this.Gc = this.Hc = this.Dd = 0;\n }\n function Ae() {\n this.uc = this.M = this.Nb = 0;\n this.wa = Array(new Xa());\n this.Y = 0;\n this.ya = Array(new Kb());\n this.aa = 0;\n this.l = new Oa();\n }\n function Ic() {\n this.y = V(16);\n this.f = V(8);\n this.ea = V(8);\n }\n function Be() {\n this.cb = this.a = 0;\n this.sc = \"\";\n this.m = new Wb();\n this.Od = new ue();\n this.Kc = new ve();\n this.ed = new ye();\n this.Qa = new we();\n this.Ic = this.$c = this.Aa = 0;\n this.D = new Ae();\n this.Xb = this.Va = this.Hb = this.zb = this.yb = this.Ub = this.za = 0;\n this.Jc = wa(8, Wb);\n this.ia = 0;\n new F();\n this.pb = wa(4, ze);\n this.Pa = new xe();\n this.Bd = this.kc = 0;\n this.Ac = [];\n this.Bc = 0;\n this.zc = [0, 0, 0, 0];\n this.Gd = Array(new Ic());\n this.Hd = 0;\n this.rb = Array(new Hc());\n this.sb = 0;\n this.wa = Array(new Xa());\n this.Y = 0;\n this.oc = [];\n this.pc = 0;\n this.sa = [];\n this.ta = 0;\n this.qa = [];\n this.ra = 0;\n this.Ha = [];\n this.B = this.R = this.Ia = 0;\n this.Ec = [];\n this.M = this.ja = this.Vb = this.Fc = 0;\n this.ya = Array(new Kb());\n this.L = this.aa = 0;\n this.gd = Ed([4, 2], Xa);\n this.ga = null;\n this.Fa = [];\n this.Cc = this.qc = this.P = 0;\n this.Gb = [];\n this.Uc = 0;\n this.mb = [];\n this.nb = 0;\n this.rc = [];\n this.Ga = this.Vc = 0;\n }\n function ga(a, b) {\n return 0 > a ? 0 : a > b ? b : a;\n }\n function Oa() {\n this.T = this.U = this.ka = this.height = this.width = 0;\n this.y = [];\n this.f = [];\n this.ea = [];\n this.Rc = this.fa = this.W = this.N = this.O = 0;\n this.ma = \"void\";\n this.put = \"VP8IoPutHook\";\n this.ac = \"VP8IoSetupHook\";\n this.bc = \"VP8IoTeardownHook\";\n this.ha = this.Kb = 0;\n this.data = [];\n this.hb = this.ib = this.da = this.o = this.j = this.va = this.v = this.Da = this.ob = this.w = 0;\n this.F = [];\n this.J = 0;\n }\n function Ce() {\n var a = new Be();\n null != a &&\n ((a.a = 0), (a.sc = \"OK\"), (a.cb = 0), (a.Xb = 0), oa || (oa = De));\n return a;\n }\n function T(a, b, c) {\n 0 == a.a && ((a.a = b), (a.sc = c), (a.cb = 0));\n return 0;\n }\n function Jc(a, b, c) {\n return 3 <= c && 157 == a[b + 0] && 1 == a[b + 1] && 42 == a[b + 2];\n }\n function Kc(a, b) {\n if (null == a) return 0;\n a.a = 0;\n a.sc = \"OK\";\n if (null == b) return T(a, 2, \"null VP8Io passed to VP8GetHeaders()\");\n var c = b.data;\n var d = b.w;\n var e = b.ha;\n if (4 > e) return T(a, 7, \"Truncated header.\");\n var f = c[d + 0] | (c[d + 1] << 8) | (c[d + 2] << 16);\n var g = a.Od;\n g.Rb = !(f & 1);\n g.td = (f >> 1) & 7;\n g.yd = (f >> 4) & 1;\n g.ub = f >> 5;\n if (3 < g.td) return T(a, 3, \"Incorrect keyframe parameters.\");\n if (!g.yd) return T(a, 4, \"Frame not displayable.\");\n d += 3;\n e -= 3;\n var h = a.Kc;\n if (g.Rb) {\n if (7 > e) return T(a, 7, \"cannot parse picture header\");\n if (!Jc(c, d, e)) return T(a, 3, \"Bad code word\");\n h.c = ((c[d + 4] << 8) | c[d + 3]) & 16383;\n h.Td = c[d + 4] >> 6;\n h.i = ((c[d + 6] << 8) | c[d + 5]) & 16383;\n h.Ud = c[d + 6] >> 6;\n d += 7;\n e -= 7;\n a.za = (h.c + 15) >> 4;\n a.Ub = (h.i + 15) >> 4;\n b.width = h.c;\n b.height = h.i;\n b.Da = 0;\n b.j = 0;\n b.v = 0;\n b.va = b.width;\n b.o = b.height;\n b.da = 0;\n b.ib = b.width;\n b.hb = b.height;\n b.U = b.width;\n b.T = b.height;\n f = a.Pa;\n M(f.jb, 0, 255, f.jb.length);\n f = a.Qa;\n x(null != f);\n f.Cb = 0;\n f.Bb = 0;\n f.Fb = 1;\n M(f.Zb, 0, 0, f.Zb.length);\n M(f.Lb, 0, 0, f.Lb);\n }\n if (g.ub > e) return T(a, 7, \"bad partition length\");\n f = a.m;\n ma(f, c, d, g.ub);\n d += g.ub;\n e -= g.ub;\n g.Rb && ((h.Ld = G(f)), (h.Kd = G(f)));\n h = a.Qa;\n var k = a.Pa,\n l;\n x(null != f);\n x(null != h);\n h.Cb = G(f);\n if (h.Cb) {\n h.Bb = G(f);\n if (G(f)) {\n h.Fb = G(f);\n for (l = 0; 4 > l; ++l) h.Zb[l] = G(f) ? ca(f, 7) : 0;\n for (l = 0; 4 > l; ++l) h.Lb[l] = G(f) ? ca(f, 6) : 0;\n }\n if (h.Bb) for (l = 0; 3 > l; ++l) k.jb[l] = G(f) ? na(f, 8) : 255;\n } else h.Bb = 0;\n if (f.Ka) return T(a, 3, \"cannot parse segment header\");\n h = a.ed;\n h.zd = G(f);\n h.Tb = na(f, 6);\n h.wb = na(f, 3);\n h.Pc = G(f);\n if (h.Pc && G(f)) {\n for (k = 0; 4 > k; ++k) G(f) && (h.vd[k] = ca(f, 6));\n for (k = 0; 4 > k; ++k) G(f) && (h.od[k] = ca(f, 6));\n }\n a.L = 0 == h.Tb ? 0 : h.zd ? 1 : 2;\n if (f.Ka) return T(a, 3, \"cannot parse filter header\");\n l = d;\n var m = e;\n e = l;\n d = l + m;\n h = m;\n a.Xb = (1 << na(a.m, 2)) - 1;\n k = a.Xb;\n if (m < 3 * k) c = 7;\n else {\n l += 3 * k;\n h -= 3 * k;\n for (m = 0; m < k; ++m) {\n var n = c[e + 0] | (c[e + 1] << 8) | (c[e + 2] << 16);\n n > h && (n = h);\n ma(a.Jc[+m], c, l, n);\n l += n;\n h -= n;\n e += 3;\n }\n ma(a.Jc[+k], c, l, h);\n c = l < d ? 0 : 5;\n }\n if (0 != c) return T(a, c, \"cannot parse partitions\");\n l = a.m;\n c = na(l, 7);\n e = G(l) ? ca(l, 4) : 0;\n d = G(l) ? ca(l, 4) : 0;\n h = G(l) ? ca(l, 4) : 0;\n k = G(l) ? ca(l, 4) : 0;\n l = G(l) ? ca(l, 4) : 0;\n m = a.Qa;\n for (n = 0; 4 > n; ++n) {\n if (m.Cb) {\n var r = m.Zb[n];\n m.Fb || (r += c);\n } else if (0 < n) {\n a.pb[n] = a.pb[0];\n continue;\n } else r = c;\n var q = a.pb[n];\n q.Sc[0] = Lb[ga(r + e, 127)];\n q.Sc[1] = Mb[ga(r + 0, 127)];\n q.Eb[0] = 2 * Lb[ga(r + d, 127)];\n q.Eb[1] = (101581 * Mb[ga(r + h, 127)]) >> 16;\n 8 > q.Eb[1] && (q.Eb[1] = 8);\n q.Qc[0] = Lb[ga(r + k, 117)];\n q.Qc[1] = Mb[ga(r + l, 127)];\n q.lc = r + l;\n }\n if (!g.Rb) return T(a, 4, \"Not a key frame.\");\n G(f);\n g = a.Pa;\n for (c = 0; 4 > c; ++c) {\n for (e = 0; 8 > e; ++e)\n for (d = 0; 3 > d; ++d)\n for (h = 0; 11 > h; ++h)\n (k = K(f, Ee[c][e][d][h]) ? na(f, 8) : Fe[c][e][d][h]),\n (g.Wc[c][e].Yb[d][h] = k);\n for (e = 0; 17 > e; ++e) g.Xc[c][e] = g.Wc[c][Ge[e]];\n }\n a.kc = G(f);\n a.kc && (a.Bd = na(f, 8));\n return (a.cb = 1);\n }\n function De(a, b, c, d, e, f, g) {\n var h = b[e].Yb[c];\n for (c = 0; 16 > e; ++e) {\n if (!K(a, h[c + 0])) return e;\n for (; !K(a, h[c + 1]); )\n if (((h = b[++e].Yb[0]), (c = 0), 16 == e)) return 16;\n var k = b[e + 1].Yb;\n if (K(a, h[c + 2])) {\n var l = a,\n m = h,\n n = c;\n var r = 0;\n if (K(l, m[n + 3]))\n if (K(l, m[n + 6])) {\n h = 0;\n r = K(l, m[n + 8]);\n m = K(l, m[n + 9 + r]);\n n = 2 * r + m;\n r = 0;\n for (m = He[n]; m[h]; ++h) r += r + K(l, m[h]);\n r += 3 + (8 << n);\n } else\n K(l, m[n + 7])\n ? ((r = 7 + 2 * K(l, 165)), (r += K(l, 145)))\n : (r = 5 + K(l, 159));\n else K(l, m[n + 4]) ? (r = 3 + K(l, m[n + 5])) : (r = 2);\n h = k[2];\n } else (r = 1), (h = k[1]);\n k = g + Ie[e];\n l = a;\n 0 > l.b && Qa(l);\n var m = l.b,\n n = l.Ca >> 1,\n q = (n - (l.I >> m)) >> 31;\n --l.b;\n l.Ca += q;\n l.Ca |= 1;\n l.I -= ((n + 1) & q) << m;\n f[k] = ((r ^ q) - q) * d[(0 < e) + 0];\n }\n return 16;\n }\n function Lc(a) {\n var b = a.rb[a.sb - 1];\n b.la = 0;\n b.Na = 0;\n M(a.zc, 0, 0, a.zc.length);\n a.ja = 0;\n }\n function Je(a, b) {\n for (a.M = 0; a.M < a.Va; ++a.M) {\n var c = a.Jc[a.M & a.Xb],\n d = a.m,\n e = a,\n f;\n for (f = 0; f < e.za; ++f) {\n var g = d;\n var h = e;\n var k = h.Ac,\n l = h.Bc + 4 * f,\n m = h.zc,\n n = h.ya[h.aa + f];\n h.Qa.Bb\n ? (n.$b = K(g, h.Pa.jb[0])\n ? 2 + K(g, h.Pa.jb[2])\n : K(g, h.Pa.jb[1]))\n : (n.$b = 0);\n h.kc && (n.Ad = K(g, h.Bd));\n n.Za = !K(g, 145) + 0;\n if (n.Za) {\n var r = n.Ob,\n q = 0;\n for (h = 0; 4 > h; ++h) {\n var t = m[0 + h];\n var v;\n for (v = 0; 4 > v; ++v) {\n t = Ke[k[l + v]][t];\n for (var p = Mc[K(g, t[0])]; 0 < p; )\n p = Mc[2 * p + K(g, t[p])];\n t = -p;\n k[l + v] = t;\n }\n I(r, q, k, l, 4);\n q += 4;\n m[0 + h] = t;\n }\n } else\n (t = K(g, 156) ? (K(g, 128) ? 1 : 3) : K(g, 163) ? 2 : 0),\n (n.Ob[0] = t),\n M(k, l, t, 4),\n M(m, 0, t, 4);\n n.Dd = K(g, 142) ? (K(g, 114) ? (K(g, 183) ? 1 : 3) : 2) : 0;\n }\n if (e.m.Ka) return T(a, 7, \"Premature end-of-partition0 encountered.\");\n for (; a.ja < a.za; ++a.ja) {\n d = a;\n e = c;\n g = d.rb[d.sb - 1];\n k = d.rb[d.sb + d.ja];\n f = d.ya[d.aa + d.ja];\n if ((l = d.kc ? f.Ad : 0))\n (g.la = k.la = 0),\n f.Za || (g.Na = k.Na = 0),\n (f.Hc = 0),\n (f.Gc = 0),\n (f.ia = 0);\n else {\n var u,\n w,\n g = k,\n k = e,\n l = d.Pa.Xc,\n m = d.ya[d.aa + d.ja],\n n = d.pb[m.$b];\n h = m.ad;\n r = 0;\n q = d.rb[d.sb - 1];\n t = v = 0;\n M(h, r, 0, 384);\n if (m.Za) {\n var y = 0;\n var A = l[3];\n } else {\n p = V(16);\n var E = g.Na + q.Na;\n E = oa(k, l[1], E, n.Eb, 0, p, 0);\n g.Na = q.Na = (0 < E) + 0;\n if (1 < E) Nc(p, 0, h, r);\n else {\n var B = (p[0] + 3) >> 3;\n for (p = 0; 256 > p; p += 16) h[r + p] = B;\n }\n y = 1;\n A = l[0];\n }\n var C = g.la & 15;\n var N = q.la & 15;\n for (p = 0; 4 > p; ++p) {\n var z = N & 1;\n for (B = w = 0; 4 > B; ++B)\n (E = z + (C & 1)),\n (E = oa(k, A, E, n.Sc, y, h, r)),\n (z = E > y),\n (C = (C >> 1) | (z << 7)),\n (w = (w << 2) | (3 < E ? 3 : 1 < E ? 2 : 0 != h[r + 0])),\n (r += 16);\n C >>= 4;\n N = (N >> 1) | (z << 7);\n v = ((v << 8) | w) >>> 0;\n }\n A = C;\n y = N >> 4;\n for (u = 0; 4 > u; u += 2) {\n w = 0;\n C = g.la >> (4 + u);\n N = q.la >> (4 + u);\n for (p = 0; 2 > p; ++p) {\n z = N & 1;\n for (B = 0; 2 > B; ++B)\n (E = z + (C & 1)),\n (E = oa(k, l[2], E, n.Qc, 0, h, r)),\n (z = 0 < E),\n (C = (C >> 1) | (z << 3)),\n (w = (w << 2) | (3 < E ? 3 : 1 < E ? 2 : 0 != h[r + 0])),\n (r += 16);\n C >>= 2;\n N = (N >> 1) | (z << 5);\n }\n t |= w << (4 * u);\n A |= (C << 4) << u;\n y |= (N & 240) << u;\n }\n g.la = A;\n q.la = y;\n m.Hc = v;\n m.Gc = t;\n m.ia = t & 43690 ? 0 : n.ia;\n l = !(v | t);\n }\n 0 < d.L &&\n ((d.wa[d.Y + d.ja] = d.gd[f.$b][f.Za]),\n (d.wa[d.Y + d.ja].La |= !l));\n if (e.Ka) return T(a, 7, \"Premature end-of-file encountered.\");\n }\n Lc(a);\n c = a;\n d = b;\n e = 1;\n f = c.D;\n g = 0 < c.L && c.M >= c.zb && c.M <= c.Va;\n if (0 == c.Aa)\n a: {\n (f.M = c.M), (f.uc = g), Oc(c, f), (e = 1);\n w = c.D;\n f = w.Nb;\n t = Ya[c.L];\n g = t * c.R;\n k = (t / 2) * c.B;\n p = 16 * f * c.R;\n B = 8 * f * c.B;\n l = c.sa;\n m = c.ta - g + p;\n n = c.qa;\n h = c.ra - k + B;\n r = c.Ha;\n q = c.Ia - k + B;\n C = w.M;\n N = 0 == C;\n v = C >= c.Va - 1;\n 2 == c.Aa && Oc(c, w);\n if (w.uc)\n for (E = c, z = E.D.M, x(E.D.uc), w = E.yb; w < E.Hb; ++w) {\n var Q = E;\n y = w;\n A = z;\n var S = Q.D,\n D = S.Nb;\n u = Q.R;\n var S = S.wa[S.Y + y],\n F = Q.sa,\n H = Q.ta + 16 * D * u + 16 * y,\n J = S.dd,\n G = S.tc;\n if (0 != G)\n if ((x(3 <= G), 1 == Q.L))\n 0 < y && Pc(F, H, u, G + 4),\n S.La && Qc(F, H, u, G),\n 0 < A && Rc(F, H, u, G + 4),\n S.La && Sc(F, H, u, G);\n else {\n var L = Q.B,\n O = Q.qa,\n P = Q.ra + 8 * D * L + 8 * y,\n R = Q.Ha,\n Q = Q.Ia + 8 * D * L + 8 * y,\n D = S.ld;\n 0 < y &&\n (Tc(F, H, u, G + 4, J, D),\n Uc(O, P, R, Q, L, G + 4, J, D));\n S.La && (Vc(F, H, u, G, J, D), Wc(O, P, R, Q, L, G, J, D));\n 0 < A &&\n (Xc(F, H, u, G + 4, J, D),\n Yc(O, P, R, Q, L, G + 4, J, D));\n S.La && (Zc(F, H, u, G, J, D), $c(O, P, R, Q, L, G, J, D));\n }\n }\n c.ia && alert(\"todo:DitherRow\");\n if (null != d.put) {\n w = 16 * C;\n C = 16 * (C + 1);\n N\n ? ((d.y = c.sa),\n (d.O = c.ta + p),\n (d.f = c.qa),\n (d.N = c.ra + B),\n (d.ea = c.Ha),\n (d.W = c.Ia + B))\n : ((w -= t),\n (d.y = l),\n (d.O = m),\n (d.f = n),\n (d.N = h),\n (d.ea = r),\n (d.W = q));\n v || (C -= t);\n C > d.o && (C = d.o);\n d.F = null;\n d.J = null;\n if (\n null != c.Fa &&\n 0 < c.Fa.length &&\n w < C &&\n ((d.J = Le(c, d, w, C - w)),\n (d.F = c.mb),\n null == d.F && 0 == d.F.length)\n ) {\n e = T(c, 3, \"Could not decode alpha data.\");\n break a;\n }\n w < d.j &&\n ((t = d.j - w),\n (w = d.j),\n x(!(t & 1)),\n (d.O += c.R * t),\n (d.N += c.B * (t >> 1)),\n (d.W += c.B * (t >> 1)),\n null != d.F && (d.J += d.width * t));\n w < C &&\n ((d.O += d.v),\n (d.N += d.v >> 1),\n (d.W += d.v >> 1),\n null != d.F && (d.J += d.v),\n (d.ka = w - d.j),\n (d.U = d.va - d.v),\n (d.T = C - w),\n (e = d.put(d)));\n }\n f + 1 != c.Ic ||\n v ||\n (I(c.sa, c.ta - g, l, m + 16 * c.R, g),\n I(c.qa, c.ra - k, n, h + 8 * c.B, k),\n I(c.Ha, c.Ia - k, r, q + 8 * c.B, k));\n }\n if (!e) return T(a, 6, \"Output aborted.\");\n }\n return 1;\n }\n function Me(a, b) {\n if (null == a) return 0;\n if (null == b) return T(a, 2, \"NULL VP8Io parameter in VP8Decode().\");\n if (!a.cb && !Kc(a, b)) return 0;\n x(a.cb);\n if (null == b.ac || b.ac(b)) {\n b.ob && (a.L = 0);\n var c = Ya[a.L];\n 2 == a.L\n ? ((a.yb = 0), (a.zb = 0))\n : ((a.yb = (b.v - c) >> 4),\n (a.zb = (b.j - c) >> 4),\n 0 > a.yb && (a.yb = 0),\n 0 > a.zb && (a.zb = 0));\n a.Va = (b.o + 15 + c) >> 4;\n a.Hb = (b.va + 15 + c) >> 4;\n a.Hb > a.za && (a.Hb = a.za);\n a.Va > a.Ub && (a.Va = a.Ub);\n if (0 < a.L) {\n var d = a.ed;\n for (c = 0; 4 > c; ++c) {\n var e;\n if (a.Qa.Cb) {\n var f = a.Qa.Lb[c];\n a.Qa.Fb || (f += d.Tb);\n } else f = d.Tb;\n for (e = 0; 1 >= e; ++e) {\n var g = a.gd[c][e],\n h = f;\n d.Pc && ((h += d.vd[0]), e && (h += d.od[0]));\n h = 0 > h ? 0 : 63 < h ? 63 : h;\n if (0 < h) {\n var k = h;\n 0 < d.wb &&\n ((k = 4 < d.wb ? k >> 2 : k >> 1),\n k > 9 - d.wb && (k = 9 - d.wb));\n 1 > k && (k = 1);\n g.dd = k;\n g.tc = 2 * h + k;\n g.ld = 40 <= h ? 2 : 15 <= h ? 1 : 0;\n } else g.tc = 0;\n g.La = e;\n }\n }\n }\n c = 0;\n } else T(a, 6, \"Frame setup failed\"), (c = a.a);\n if ((c = 0 == c)) {\n if (c) {\n a.$c = 0;\n 0 < a.Aa || (a.Ic = Ne);\n b: {\n c = a.Ic;\n var k = a.za,\n d = 4 * k,\n l = 32 * k,\n m = k + 1,\n n = 0 < a.L ? k * (0 < a.Aa ? 2 : 1) : 0,\n r = (2 == a.Aa ? 2 : 1) * k;\n e = ((3 * (16 * c + Ya[a.L])) / 2) * l;\n f = null != a.Fa && 0 < a.Fa.length ? a.Kc.c * a.Kc.i : 0;\n g = d + 832 + e + f;\n if (g != g) c = 0;\n else {\n if (g > a.Vb) {\n a.Vb = 0;\n a.Ec = V(g);\n a.Fc = 0;\n if (null == a.Ec) {\n c = T(a, 1, \"no memory during frame initialization.\");\n break b;\n }\n a.Vb = g;\n }\n g = a.Ec;\n h = a.Fc;\n a.Ac = g;\n a.Bc = h;\n h += d;\n a.Gd = wa(l, Ic);\n a.Hd = 0;\n a.rb = wa(m + 1, Hc);\n a.sb = 1;\n a.wa = n ? wa(n, Xa) : null;\n a.Y = 0;\n a.D.Nb = 0;\n a.D.wa = a.wa;\n a.D.Y = a.Y;\n 0 < a.Aa && (a.D.Y += k);\n x(!0);\n a.oc = g;\n a.pc = h;\n h += 832;\n a.ya = wa(r, Kb);\n a.aa = 0;\n a.D.ya = a.ya;\n a.D.aa = a.aa;\n 2 == a.Aa && (a.D.aa += k);\n a.R = 16 * k;\n a.B = 8 * k;\n l = Ya[a.L];\n k = l * a.R;\n l = (l / 2) * a.B;\n a.sa = g;\n a.ta = h + k;\n a.qa = a.sa;\n a.ra = a.ta + 16 * c * a.R + l;\n a.Ha = a.qa;\n a.Ia = a.ra + 8 * c * a.B + l;\n a.$c = 0;\n h += e;\n a.mb = f ? g : null;\n a.nb = f ? h : null;\n x(h + f <= a.Fc + a.Vb);\n Lc(a);\n M(a.Ac, a.Bc, 0, d);\n c = 1;\n }\n }\n if (c) {\n b.ka = 0;\n b.y = a.sa;\n b.O = a.ta;\n b.f = a.qa;\n b.N = a.ra;\n b.ea = a.Ha;\n b.Vd = a.Ia;\n b.fa = a.R;\n b.Rc = a.B;\n b.F = null;\n b.J = 0;\n if (!ad) {\n for (c = -255; 255 >= c; ++c) bd[255 + c] = 0 > c ? -c : c;\n for (c = -1020; 1020 >= c; ++c)\n cd[1020 + c] = -128 > c ? -128 : 127 < c ? 127 : c;\n for (c = -112; 112 >= c; ++c)\n dd[112 + c] = -16 > c ? -16 : 15 < c ? 15 : c;\n for (c = -255; 510 >= c; ++c)\n ed[255 + c] = 0 > c ? 0 : 255 < c ? 255 : c;\n ad = 1;\n }\n Nc = Oe;\n Za = Pe;\n Nb = Qe;\n pa = Re;\n Ob = Se;\n fd = Te;\n Xc = Ue;\n Tc = Ve;\n Yc = We;\n Uc = Xe;\n Zc = Ye;\n Vc = Ze;\n $c = $e;\n Wc = af;\n Rc = gd;\n Pc = hd;\n Sc = bf;\n Qc = cf;\n W[0] = df;\n W[1] = ef;\n W[2] = ff;\n W[3] = gf;\n W[4] = hf;\n W[5] = jf;\n W[6] = kf;\n W[7] = lf;\n W[8] = mf;\n W[9] = nf;\n Y[0] = of;\n Y[1] = pf;\n Y[2] = qf;\n Y[3] = rf;\n Y[4] = sf;\n Y[5] = tf;\n Y[6] = uf;\n ka[0] = vf;\n ka[1] = wf;\n ka[2] = xf;\n ka[3] = yf;\n ka[4] = zf;\n ka[5] = Af;\n ka[6] = Bf;\n c = 1;\n } else c = 0;\n }\n c && (c = Je(a, b));\n null != b.bc && b.bc(b);\n c &= 1;\n }\n if (!c) return 0;\n a.cb = 0;\n return c;\n }\n function qa(a, b, c, d, e) {\n e = a[b + c + 32 * d] + (e >> 3);\n a[b + c + 32 * d] = e & -256 ? (0 > e ? 0 : 255) : e;\n }\n function kb(a, b, c, d, e, f) {\n qa(a, b, 0, c, d + e);\n qa(a, b, 1, c, d + f);\n qa(a, b, 2, c, d - f);\n qa(a, b, 3, c, d - e);\n }\n function da(a) {\n return ((20091 * a) >> 16) + a;\n }\n function id(a, b, c, d) {\n var e = 0,\n f;\n var g = V(16);\n for (f = 0; 4 > f; ++f) {\n var h = a[b + 0] + a[b + 8];\n var k = a[b + 0] - a[b + 8];\n var l = ((35468 * a[b + 4]) >> 16) - da(a[b + 12]);\n var m = da(a[b + 4]) + ((35468 * a[b + 12]) >> 16);\n g[e + 0] = h + m;\n g[e + 1] = k + l;\n g[e + 2] = k - l;\n g[e + 3] = h - m;\n e += 4;\n b++;\n }\n for (f = e = 0; 4 > f; ++f)\n (a = g[e + 0] + 4),\n (h = a + g[e + 8]),\n (k = a - g[e + 8]),\n (l = ((35468 * g[e + 4]) >> 16) - da(g[e + 12])),\n (m = da(g[e + 4]) + ((35468 * g[e + 12]) >> 16)),\n qa(c, d, 0, 0, h + m),\n qa(c, d, 1, 0, k + l),\n qa(c, d, 2, 0, k - l),\n qa(c, d, 3, 0, h - m),\n e++,\n (d += 32);\n }\n function Te(a, b, c, d) {\n var e = a[b + 0] + 4,\n f = (35468 * a[b + 4]) >> 16,\n g = da(a[b + 4]),\n h = (35468 * a[b + 1]) >> 16;\n a = da(a[b + 1]);\n kb(c, d, 0, e + g, a, h);\n kb(c, d, 1, e + f, a, h);\n kb(c, d, 2, e - f, a, h);\n kb(c, d, 3, e - g, a, h);\n }\n function Pe(a, b, c, d, e) {\n id(a, b, c, d);\n e && id(a, b + 16, c, d + 4);\n }\n function Qe(a, b, c, d) {\n Za(a, b + 0, c, d, 1);\n Za(a, b + 32, c, d + 128, 1);\n }\n function Re(a, b, c, d) {\n a = a[b + 0] + 4;\n var e;\n for (e = 0; 4 > e; ++e) for (b = 0; 4 > b; ++b) qa(c, d, b, e, a);\n }\n function Se(a, b, c, d) {\n a[b + 0] && pa(a, b + 0, c, d);\n a[b + 16] && pa(a, b + 16, c, d + 4);\n a[b + 32] && pa(a, b + 32, c, d + 128);\n a[b + 48] && pa(a, b + 48, c, d + 128 + 4);\n }\n function Oe(a, b, c, d) {\n var e = V(16),\n f;\n for (f = 0; 4 > f; ++f) {\n var g = a[b + 0 + f] + a[b + 12 + f];\n var h = a[b + 4 + f] + a[b + 8 + f];\n var k = a[b + 4 + f] - a[b + 8 + f];\n var l = a[b + 0 + f] - a[b + 12 + f];\n e[0 + f] = g + h;\n e[8 + f] = g - h;\n e[4 + f] = l + k;\n e[12 + f] = l - k;\n }\n for (f = 0; 4 > f; ++f)\n (a = e[0 + 4 * f] + 3),\n (g = a + e[3 + 4 * f]),\n (h = e[1 + 4 * f] + e[2 + 4 * f]),\n (k = e[1 + 4 * f] - e[2 + 4 * f]),\n (l = a - e[3 + 4 * f]),\n (c[d + 0] = (g + h) >> 3),\n (c[d + 16] = (l + k) >> 3),\n (c[d + 32] = (g - h) >> 3),\n (c[d + 48] = (l - k) >> 3),\n (d += 64);\n }\n function Pb(a, b, c) {\n var d = b - 32,\n e = R,\n f = 255 - a[d - 1],\n g;\n for (g = 0; g < c; ++g) {\n var h = e,\n k = f + a[b - 1],\n l;\n for (l = 0; l < c; ++l) a[b + l] = h[k + a[d + l]];\n b += 32;\n }\n }\n function ef(a, b) {\n Pb(a, b, 4);\n }\n function wf(a, b) {\n Pb(a, b, 8);\n }\n function pf(a, b) {\n Pb(a, b, 16);\n }\n function qf(a, b) {\n var c;\n for (c = 0; 16 > c; ++c) I(a, b + 32 * c, a, b - 32, 16);\n }\n function rf(a, b) {\n var c;\n for (c = 16; 0 < c; --c) M(a, b, a[b - 1], 16), (b += 32);\n }\n function $a(a, b, c) {\n var d;\n for (d = 0; 16 > d; ++d) M(b, c + 32 * d, a, 16);\n }\n function of(a, b) {\n var c = 16,\n d;\n for (d = 0; 16 > d; ++d) c += a[b - 1 + 32 * d] + a[b + d - 32];\n $a(c >> 5, a, b);\n }\n function sf(a, b) {\n var c = 8,\n d;\n for (d = 0; 16 > d; ++d) c += a[b - 1 + 32 * d];\n $a(c >> 4, a, b);\n }\n function tf(a, b) {\n var c = 8,\n d;\n for (d = 0; 16 > d; ++d) c += a[b + d - 32];\n $a(c >> 4, a, b);\n }\n function uf(a, b) {\n $a(128, a, b);\n }\n function z(a, b, c) {\n return (a + 2 * b + c + 2) >> 2;\n }\n function ff(a, b) {\n var c = b - 32,\n c = new Uint8Array([\n z(a[c - 1], a[c + 0], a[c + 1]),\n z(a[c + 0], a[c + 1], a[c + 2]),\n z(a[c + 1], a[c + 2], a[c + 3]),\n z(a[c + 2], a[c + 3], a[c + 4])\n ]),\n d;\n for (d = 0; 4 > d; ++d) I(a, b + 32 * d, c, 0, c.length);\n }\n function gf(a, b) {\n var c = a[b - 1],\n d = a[b - 1 + 32],\n e = a[b - 1 + 64],\n f = a[b - 1 + 96];\n ra(a, b + 0, 16843009 * z(a[b - 1 - 32], c, d));\n ra(a, b + 32, 16843009 * z(c, d, e));\n ra(a, b + 64, 16843009 * z(d, e, f));\n ra(a, b + 96, 16843009 * z(e, f, f));\n }\n function df(a, b) {\n var c = 4,\n d;\n for (d = 0; 4 > d; ++d) c += a[b + d - 32] + a[b - 1 + 32 * d];\n c >>= 3;\n for (d = 0; 4 > d; ++d) M(a, b + 32 * d, c, 4);\n }\n function hf(a, b) {\n var c = a[b - 1 + 0],\n d = a[b - 1 + 32],\n e = a[b - 1 + 64],\n f = a[b - 1 - 32],\n g = a[b + 0 - 32],\n h = a[b + 1 - 32],\n k = a[b + 2 - 32],\n l = a[b + 3 - 32];\n a[b + 0 + 96] = z(d, e, a[b - 1 + 96]);\n a[b + 1 + 96] = a[b + 0 + 64] = z(c, d, e);\n a[b + 2 + 96] = a[b + 1 + 64] = a[b + 0 + 32] = z(f, c, d);\n a[b + 3 + 96] = a[b + 2 + 64] = a[b + 1 + 32] = a[b + 0 + 0] = z(g, f, c);\n a[b + 3 + 64] = a[b + 2 + 32] = a[b + 1 + 0] = z(h, g, f);\n a[b + 3 + 32] = a[b + 2 + 0] = z(k, h, g);\n a[b + 3 + 0] = z(l, k, h);\n }\n function kf(a, b) {\n var c = a[b + 1 - 32],\n d = a[b + 2 - 32],\n e = a[b + 3 - 32],\n f = a[b + 4 - 32],\n g = a[b + 5 - 32],\n h = a[b + 6 - 32],\n k = a[b + 7 - 32];\n a[b + 0 + 0] = z(a[b + 0 - 32], c, d);\n a[b + 1 + 0] = a[b + 0 + 32] = z(c, d, e);\n a[b + 2 + 0] = a[b + 1 + 32] = a[b + 0 + 64] = z(d, e, f);\n a[b + 3 + 0] = a[b + 2 + 32] = a[b + 1 + 64] = a[b + 0 + 96] = z(e, f, g);\n a[b + 3 + 32] = a[b + 2 + 64] = a[b + 1 + 96] = z(f, g, h);\n a[b + 3 + 64] = a[b + 2 + 96] = z(g, h, k);\n a[b + 3 + 96] = z(h, k, k);\n }\n function jf(a, b) {\n var c = a[b - 1 + 0],\n d = a[b - 1 + 32],\n e = a[b - 1 + 64],\n f = a[b - 1 - 32],\n g = a[b + 0 - 32],\n h = a[b + 1 - 32],\n k = a[b + 2 - 32],\n l = a[b + 3 - 32];\n a[b + 0 + 0] = a[b + 1 + 64] = (f + g + 1) >> 1;\n a[b + 1 + 0] = a[b + 2 + 64] = (g + h + 1) >> 1;\n a[b + 2 + 0] = a[b + 3 + 64] = (h + k + 1) >> 1;\n a[b + 3 + 0] = (k + l + 1) >> 1;\n a[b + 0 + 96] = z(e, d, c);\n a[b + 0 + 64] = z(d, c, f);\n a[b + 0 + 32] = a[b + 1 + 96] = z(c, f, g);\n a[b + 1 + 32] = a[b + 2 + 96] = z(f, g, h);\n a[b + 2 + 32] = a[b + 3 + 96] = z(g, h, k);\n a[b + 3 + 32] = z(h, k, l);\n }\n function lf(a, b) {\n var c = a[b + 0 - 32],\n d = a[b + 1 - 32],\n e = a[b + 2 - 32],\n f = a[b + 3 - 32],\n g = a[b + 4 - 32],\n h = a[b + 5 - 32],\n k = a[b + 6 - 32],\n l = a[b + 7 - 32];\n a[b + 0 + 0] = (c + d + 1) >> 1;\n a[b + 1 + 0] = a[b + 0 + 64] = (d + e + 1) >> 1;\n a[b + 2 + 0] = a[b + 1 + 64] = (e + f + 1) >> 1;\n a[b + 3 + 0] = a[b + 2 + 64] = (f + g + 1) >> 1;\n a[b + 0 + 32] = z(c, d, e);\n a[b + 1 + 32] = a[b + 0 + 96] = z(d, e, f);\n a[b + 2 + 32] = a[b + 1 + 96] = z(e, f, g);\n a[b + 3 + 32] = a[b + 2 + 96] = z(f, g, h);\n a[b + 3 + 64] = z(g, h, k);\n a[b + 3 + 96] = z(h, k, l);\n }\n function nf(a, b) {\n var c = a[b - 1 + 0],\n d = a[b - 1 + 32],\n e = a[b - 1 + 64],\n f = a[b - 1 + 96];\n a[b + 0 + 0] = (c + d + 1) >> 1;\n a[b + 2 + 0] = a[b + 0 + 32] = (d + e + 1) >> 1;\n a[b + 2 + 32] = a[b + 0 + 64] = (e + f + 1) >> 1;\n a[b + 1 + 0] = z(c, d, e);\n a[b + 3 + 0] = a[b + 1 + 32] = z(d, e, f);\n a[b + 3 + 32] = a[b + 1 + 64] = z(e, f, f);\n a[b + 3 + 64] = a[b + 2 + 64] = a[b + 0 + 96] = a[b + 1 + 96] = a[\n b + 2 + 96\n ] = a[b + 3 + 96] = f;\n }\n function mf(a, b) {\n var c = a[b - 1 + 0],\n d = a[b - 1 + 32],\n e = a[b - 1 + 64],\n f = a[b - 1 + 96],\n g = a[b - 1 - 32],\n h = a[b + 0 - 32],\n k = a[b + 1 - 32],\n l = a[b + 2 - 32];\n a[b + 0 + 0] = a[b + 2 + 32] = (c + g + 1) >> 1;\n a[b + 0 + 32] = a[b + 2 + 64] = (d + c + 1) >> 1;\n a[b + 0 + 64] = a[b + 2 + 96] = (e + d + 1) >> 1;\n a[b + 0 + 96] = (f + e + 1) >> 1;\n a[b + 3 + 0] = z(h, k, l);\n a[b + 2 + 0] = z(g, h, k);\n a[b + 1 + 0] = a[b + 3 + 32] = z(c, g, h);\n a[b + 1 + 32] = a[b + 3 + 64] = z(d, c, g);\n a[b + 1 + 64] = a[b + 3 + 96] = z(e, d, c);\n a[b + 1 + 96] = z(f, e, d);\n }\n function xf(a, b) {\n var c;\n for (c = 0; 8 > c; ++c) I(a, b + 32 * c, a, b - 32, 8);\n }\n function yf(a, b) {\n var c;\n for (c = 0; 8 > c; ++c) M(a, b, a[b - 1], 8), (b += 32);\n }\n function lb(a, b, c) {\n var d;\n for (d = 0; 8 > d; ++d) M(b, c + 32 * d, a, 8);\n }\n function vf(a, b) {\n var c = 8,\n d;\n for (d = 0; 8 > d; ++d) c += a[b + d - 32] + a[b - 1 + 32 * d];\n lb(c >> 4, a, b);\n }\n function Af(a, b) {\n var c = 4,\n d;\n for (d = 0; 8 > d; ++d) c += a[b + d - 32];\n lb(c >> 3, a, b);\n }\n function zf(a, b) {\n var c = 4,\n d;\n for (d = 0; 8 > d; ++d) c += a[b - 1 + 32 * d];\n lb(c >> 3, a, b);\n }\n function Bf(a, b) {\n lb(128, a, b);\n }\n function ab(a, b, c) {\n var d = a[b - c],\n e = a[b + 0],\n f = 3 * (e - d) + Qb[1020 + a[b - 2 * c] - a[b + c]],\n g = mb[112 + ((f + 4) >> 3)];\n a[b - c] = R[255 + d + mb[112 + ((f + 3) >> 3)]];\n a[b + 0] = R[255 + e - g];\n }\n function jd(a, b, c, d) {\n var e = a[b + 0],\n f = a[b + c];\n return U[255 + a[b - 2 * c] - a[b - c]] > d || U[255 + f - e] > d;\n }\n function kd(a, b, c, d) {\n return (\n 4 * U[255 + a[b - c] - a[b + 0]] + U[255 + a[b - 2 * c] - a[b + c]] <= d\n );\n }\n function ld(a, b, c, d, e) {\n var f = a[b - 3 * c],\n g = a[b - 2 * c],\n h = a[b - c],\n k = a[b + 0],\n l = a[b + c],\n m = a[b + 2 * c],\n n = a[b + 3 * c];\n return 4 * U[255 + h - k] + U[255 + g - l] > d\n ? 0\n : U[255 + a[b - 4 * c] - f] <= e &&\n U[255 + f - g] <= e &&\n U[255 + g - h] <= e &&\n U[255 + n - m] <= e &&\n U[255 + m - l] <= e &&\n U[255 + l - k] <= e;\n }\n function gd(a, b, c, d) {\n var e = 2 * d + 1;\n for (d = 0; 16 > d; ++d) kd(a, b + d, c, e) && ab(a, b + d, c);\n }\n function hd(a, b, c, d) {\n var e = 2 * d + 1;\n for (d = 0; 16 > d; ++d) kd(a, b + d * c, 1, e) && ab(a, b + d * c, 1);\n }\n function bf(a, b, c, d) {\n var e;\n for (e = 3; 0 < e; --e) (b += 4 * c), gd(a, b, c, d);\n }\n function cf(a, b, c, d) {\n var e;\n for (e = 3; 0 < e; --e) (b += 4), hd(a, b, c, d);\n }\n function ea(a, b, c, d, e, f, g, h) {\n for (f = 2 * f + 1; 0 < e--; ) {\n if (ld(a, b, c, f, g))\n if (jd(a, b, c, h)) ab(a, b, c);\n else {\n var k = a,\n l = b,\n m = c,\n n = k[l - 2 * m],\n r = k[l - m],\n q = k[l + 0],\n t = k[l + m],\n v = k[l + 2 * m],\n p = Qb[1020 + 3 * (q - r) + Qb[1020 + n - t]],\n u = (27 * p + 63) >> 7,\n w = (18 * p + 63) >> 7,\n p = (9 * p + 63) >> 7;\n k[l - 3 * m] = R[255 + k[l - 3 * m] + p];\n k[l - 2 * m] = R[255 + n + w];\n k[l - m] = R[255 + r + u];\n k[l + 0] = R[255 + q - u];\n k[l + m] = R[255 + t - w];\n k[l + 2 * m] = R[255 + v - p];\n }\n b += d;\n }\n }\n function Fa(a, b, c, d, e, f, g, h) {\n for (f = 2 * f + 1; 0 < e--; ) {\n if (ld(a, b, c, f, g))\n if (jd(a, b, c, h)) ab(a, b, c);\n else {\n var k = a,\n l = b,\n m = c,\n n = k[l - m],\n r = k[l + 0],\n q = k[l + m],\n t = 3 * (r - n),\n v = mb[112 + ((t + 4) >> 3)],\n t = mb[112 + ((t + 3) >> 3)],\n p = (v + 1) >> 1;\n k[l - 2 * m] = R[255 + k[l - 2 * m] + p];\n k[l - m] = R[255 + n + t];\n k[l + 0] = R[255 + r - v];\n k[l + m] = R[255 + q - p];\n }\n b += d;\n }\n }\n function Ue(a, b, c, d, e, f) {\n ea(a, b, c, 1, 16, d, e, f);\n }\n function Ve(a, b, c, d, e, f) {\n ea(a, b, 1, c, 16, d, e, f);\n }\n function Ye(a, b, c, d, e, f) {\n var g;\n for (g = 3; 0 < g; --g) (b += 4 * c), Fa(a, b, c, 1, 16, d, e, f);\n }\n function Ze(a, b, c, d, e, f) {\n var g;\n for (g = 3; 0 < g; --g) (b += 4), Fa(a, b, 1, c, 16, d, e, f);\n }\n function We(a, b, c, d, e, f, g, h) {\n ea(a, b, e, 1, 8, f, g, h);\n ea(c, d, e, 1, 8, f, g, h);\n }\n function Xe(a, b, c, d, e, f, g, h) {\n ea(a, b, 1, e, 8, f, g, h);\n ea(c, d, 1, e, 8, f, g, h);\n }\n function $e(a, b, c, d, e, f, g, h) {\n Fa(a, b + 4 * e, e, 1, 8, f, g, h);\n Fa(c, d + 4 * e, e, 1, 8, f, g, h);\n }\n function af(a, b, c, d, e, f, g, h) {\n Fa(a, b + 4, 1, e, 8, f, g, h);\n Fa(c, d + 4, 1, e, 8, f, g, h);\n }\n function Cf() {\n this.ba = new Cb();\n this.ec = [];\n this.cc = [];\n this.Mc = [];\n this.Dc = this.Nc = this.dc = this.fc = 0;\n this.Oa = new Ud();\n this.memory = 0;\n this.Ib = \"OutputFunc\";\n this.Jb = \"OutputAlphaFunc\";\n this.Nd = \"OutputRowFunc\";\n }\n function md() {\n this.data = [];\n this.offset = this.kd = this.ha = this.w = 0;\n this.na = [];\n this.xa = this.gb = this.Ja = this.Sa = this.P = 0;\n }\n function Df() {\n this.nc = this.Ea = this.b = this.hc = 0;\n this.K = [];\n this.w = 0;\n }\n function Ef() {\n this.ua = 0;\n this.Wa = new ac();\n this.vb = new ac();\n this.md = this.xc = this.wc = 0;\n this.vc = [];\n this.Wb = 0;\n this.Ya = new Ub();\n this.yc = new O();\n }\n function je() {\n this.xb = this.a = 0;\n this.l = new Oa();\n this.ca = new Cb();\n this.V = [];\n this.Ba = 0;\n this.Ta = [];\n this.Ua = 0;\n this.m = new Ra();\n this.Pb = 0;\n this.wd = new Ra();\n this.Ma = this.$ = this.C = this.i = this.c = this.xd = 0;\n this.s = new Ef();\n this.ab = 0;\n this.gc = wa(4, Df);\n this.Oc = 0;\n }\n function Ff() {\n this.Lc = this.Z = this.$a = this.i = this.c = 0;\n this.l = new Oa();\n this.ic = 0;\n this.ca = [];\n this.tb = 0;\n this.qd = null;\n this.rd = 0;\n }\n function Rb(a, b, c, d, e, f, g) {\n a = null == a ? 0 : a[b + 0];\n for (b = 0; b < g; ++b) (e[f + b] = (a + c[d + b]) & 255), (a = e[f + b]);\n }\n function Gf(a, b, c, d, e, f, g) {\n if (null == a) Rb(null, null, c, d, e, f, g);\n else {\n var h;\n for (h = 0; h < g; ++h) e[f + h] = (a[b + h] + c[d + h]) & 255;\n }\n }\n function Hf(a, b, c, d, e, f, g) {\n if (null == a) Rb(null, null, c, d, e, f, g);\n else {\n var h = a[b + 0],\n k = h,\n l = h,\n m;\n for (m = 0; m < g; ++m)\n (h = a[b + m]),\n (k = l + h - k),\n (l = (c[d + m] + (k & -256 ? (0 > k ? 0 : 255) : k)) & 255),\n (k = h),\n (e[f + m] = l);\n }\n }\n function Le(a, b, c, d) {\n var e = b.width,\n f = b.o;\n x(null != a && null != b);\n if (0 > c || 0 >= d || c + d > f) return null;\n if (!a.Cc) {\n if (null == a.ga) {\n a.ga = new Ff();\n var g;\n (g = null == a.ga) ||\n ((g = b.width * b.o),\n x(0 == a.Gb.length),\n (a.Gb = V(g)),\n (a.Uc = 0),\n null == a.Gb\n ? (g = 0)\n : ((a.mb = a.Gb), (a.nb = a.Uc), (a.rc = null), (g = 1)),\n (g = !g));\n if (!g) {\n g = a.ga;\n var h = a.Fa,\n k = a.P,\n l = a.qc,\n m = a.mb,\n n = a.nb,\n r = k + 1,\n q = l - 1,\n t = g.l;\n x(null != h && null != m && null != b);\n ia[0] = null;\n ia[1] = Rb;\n ia[2] = Gf;\n ia[3] = Hf;\n g.ca = m;\n g.tb = n;\n g.c = b.width;\n g.i = b.height;\n x(0 < g.c && 0 < g.i);\n if (1 >= l) b = 0;\n else if (\n ((g.$a = (h[k + 0] >> 0) & 3),\n (g.Z = (h[k + 0] >> 2) & 3),\n (g.Lc = (h[k + 0] >> 4) & 3),\n (k = (h[k + 0] >> 6) & 3),\n 0 > g.$a || 1 < g.$a || 4 <= g.Z || 1 < g.Lc || k)\n )\n b = 0;\n else if (\n ((t.put = kc),\n (t.ac = gc),\n (t.bc = lc),\n (t.ma = g),\n (t.width = b.width),\n (t.height = b.height),\n (t.Da = b.Da),\n (t.v = b.v),\n (t.va = b.va),\n (t.j = b.j),\n (t.o = b.o),\n g.$a)\n )\n b: {\n x(1 == g.$a), (b = Bc());\n c: for (;;) {\n if (null == b) {\n b = 0;\n break b;\n }\n x(null != g);\n g.mc = b;\n b.c = g.c;\n b.i = g.i;\n b.l = g.l;\n b.l.ma = g;\n b.l.width = g.c;\n b.l.height = g.i;\n b.a = 0;\n cb(b.m, h, r, q);\n if (!rb(g.c, g.i, 1, b, null)) break c;\n 1 == b.ab && 3 == b.gc[0].hc && yc(b.s)\n ? ((g.ic = 1),\n (h = b.c * b.i),\n (b.Ta = null),\n (b.Ua = 0),\n (b.V = V(h)),\n (b.Ba = 0),\n null == b.V ? ((b.a = 1), (b = 0)) : (b = 1))\n : ((g.ic = 0), (b = Ec(b, g.c)));\n if (!b) break c;\n b = 1;\n break b;\n }\n g.mc = null;\n b = 0;\n }\n else b = q >= g.c * g.i;\n g = !b;\n }\n if (g) return null;\n 1 != a.ga.Lc ? (a.Ga = 0) : (d = f - c);\n }\n x(null != a.ga);\n x(c + d <= f);\n a: {\n h = a.ga;\n b = h.c;\n f = h.l.o;\n if (0 == h.$a) {\n r = a.rc;\n q = a.Vc;\n t = a.Fa;\n k = a.P + 1 + c * b;\n l = a.mb;\n m = a.nb + c * b;\n x(k <= a.P + a.qc);\n if (0 != h.Z)\n for (x(null != ia[h.Z]), g = 0; g < d; ++g)\n ia[h.Z](r, q, t, k, l, m, b),\n (r = l),\n (q = m),\n (m += b),\n (k += b);\n else\n for (g = 0; g < d; ++g)\n I(l, m, t, k, b), (r = l), (q = m), (m += b), (k += b);\n a.rc = r;\n a.Vc = q;\n } else {\n x(null != h.mc);\n b = c + d;\n g = h.mc;\n x(null != g);\n x(b <= g.i);\n if (g.C >= b) b = 1;\n else if ((h.ic || Aa(), h.ic)) {\n var h = g.V,\n r = g.Ba,\n q = g.c,\n v = g.i,\n t = 1,\n k = g.$ / q,\n l = g.$ % q,\n m = g.m,\n n = g.s,\n p = g.$,\n u = q * v,\n w = q * b,\n y = n.wc,\n A = p < w ? ha(n, l, k) : null;\n x(p <= u);\n x(b <= v);\n x(yc(n));\n c: for (;;) {\n for (; !m.h && p < w; ) {\n l & y || (A = ha(n, l, k));\n x(null != A);\n Sa(m);\n v = ua(A.G[0], A.H[0], m);\n if (256 > v)\n (h[r + p] = v),\n ++p,\n ++l,\n l >= q && ((l = 0), ++k, k <= b && !(k % 16) && Ib(g, k));\n else if (280 > v) {\n var v = ib(v - 256, m);\n var E = ua(A.G[4], A.H[4], m);\n Sa(m);\n E = ib(E, m);\n E = nc(q, E);\n if (p >= E && u - p >= v) {\n var B;\n for (B = 0; B < v; ++B) h[r + p + B] = h[r + p + B - E];\n } else {\n t = 0;\n break c;\n }\n p += v;\n for (l += v; l >= q; )\n (l -= q), ++k, k <= b && !(k % 16) && Ib(g, k);\n p < w && l & y && (A = ha(n, l, k));\n } else {\n t = 0;\n break c;\n }\n x(m.h == db(m));\n }\n Ib(g, k > b ? b : k);\n break c;\n }\n !t || (m.h && p < u) ? ((t = 0), (g.a = m.h ? 5 : 3)) : (g.$ = p);\n b = t;\n } else b = Jb(g, g.V, g.Ba, g.c, g.i, b, se);\n if (!b) {\n d = 0;\n break a;\n }\n }\n c + d >= f && (a.Cc = 1);\n d = 1;\n }\n if (!d) return null;\n if (\n a.Cc &&\n ((d = a.ga), null != d && (d.mc = null), (a.ga = null), 0 < a.Ga)\n )\n return alert(\"todo:WebPDequantizeLevels\"), null;\n }\n return a.nb + c * e;\n }\n function If(a, b, c, d, e, f) {\n for (; 0 < e--; ) {\n var g = a,\n h = b + (c ? 1 : 0),\n k = a,\n l = b + (c ? 0 : 3),\n m;\n for (m = 0; m < d; ++m) {\n var n = k[l + 4 * m];\n 255 != n &&\n ((n *= 32897),\n (g[h + 4 * m + 0] = (g[h + 4 * m + 0] * n) >> 23),\n (g[h + 4 * m + 1] = (g[h + 4 * m + 1] * n) >> 23),\n (g[h + 4 * m + 2] = (g[h + 4 * m + 2] * n) >> 23));\n }\n b += f;\n }\n }\n function Jf(a, b, c, d, e) {\n for (; 0 < d--; ) {\n var f;\n for (f = 0; f < c; ++f) {\n var g = a[b + 2 * f + 0],\n h = a[b + 2 * f + 1],\n k = h & 15,\n l = 4369 * k,\n h = (((h & 240) | (h >> 4)) * l) >> 16;\n a[b + 2 * f + 0] =\n (((((g & 240) | (g >> 4)) * l) >> 16) & 240) |\n ((((((g & 15) | (g << 4)) * l) >> 16) >> 4) & 15);\n a[b + 2 * f + 1] = (h & 240) | k;\n }\n b += e;\n }\n }\n function Kf(a, b, c, d, e, f, g, h) {\n var k = 255,\n l,\n m;\n for (m = 0; m < e; ++m) {\n for (l = 0; l < d; ++l) {\n var n = a[b + l];\n f[g + 4 * l] = n;\n k &= n;\n }\n b += c;\n g += h;\n }\n return 255 != k;\n }\n function Lf(a, b, c, d, e) {\n var f;\n for (f = 0; f < e; ++f) c[d + f] = a[b + f] >> 8;\n }\n function Aa() {\n za = If;\n vc = Jf;\n fc = Kf;\n Fc = Lf;\n }\n function va(a, b, c) {\n self[a] = function(a, e, f, g, h, k, l, m, n, r, q, t, v, p, u, w, y) {\n var d,\n E = (y - 1) >> 1;\n var B = h[k + 0] | (l[m + 0] << 16);\n var C = n[r + 0] | (q[t + 0] << 16);\n x(null != a);\n var z = (3 * B + C + 131074) >> 2;\n b(a[e + 0], z & 255, z >> 16, v, p);\n null != f &&\n ((z = (3 * C + B + 131074) >> 2),\n b(f[g + 0], z & 255, z >> 16, u, w));\n for (d = 1; d <= E; ++d) {\n var D = h[k + d] | (l[m + d] << 16);\n var G = n[r + d] | (q[t + d] << 16);\n var F = B + D + C + G + 524296;\n var H = (F + 2 * (D + C)) >> 3;\n F = (F + 2 * (B + G)) >> 3;\n z = (H + B) >> 1;\n B = (F + D) >> 1;\n b(a[e + 2 * d - 1], z & 255, z >> 16, v, p + (2 * d - 1) * c);\n b(a[e + 2 * d - 0], B & 255, B >> 16, v, p + (2 * d - 0) * c);\n null != f &&\n ((z = (F + C) >> 1),\n (B = (H + G) >> 1),\n b(f[g + 2 * d - 1], z & 255, z >> 16, u, w + (2 * d - 1) * c),\n b(f[g + 2 * d + 0], B & 255, B >> 16, u, w + (2 * d + 0) * c));\n B = D;\n C = G;\n }\n y & 1 ||\n ((z = (3 * B + C + 131074) >> 2),\n b(a[e + y - 1], z & 255, z >> 16, v, p + (y - 1) * c),\n null != f &&\n ((z = (3 * C + B + 131074) >> 2),\n b(f[g + y - 1], z & 255, z >> 16, u, w + (y - 1) * c)));\n };\n }\n function ic() {\n P[Ca] = Mf;\n P[Ua] = nd;\n P[tc] = Nf;\n P[Va] = od;\n P[ya] = pd;\n P[Db] = qd;\n P[wc] = Of;\n P[zb] = nd;\n P[Ab] = od;\n P[Ja] = pd;\n P[Bb] = qd;\n }\n function Sb(a) {\n return a & ~Pf ? (0 > a ? 0 : 255) : a >> rd;\n }\n function bb(a, b) {\n return Sb(((19077 * a) >> 8) + ((26149 * b) >> 8) - 14234);\n }\n function nb(a, b, c) {\n return Sb(\n ((19077 * a) >> 8) - ((6419 * b) >> 8) - ((13320 * c) >> 8) + 8708\n );\n }\n function Pa(a, b) {\n return Sb(((19077 * a) >> 8) + ((33050 * b) >> 8) - 17685);\n }\n function Ga(a, b, c, d, e) {\n d[e + 0] = bb(a, c);\n d[e + 1] = nb(a, b, c);\n d[e + 2] = Pa(a, b);\n }\n function Tb(a, b, c, d, e) {\n d[e + 0] = Pa(a, b);\n d[e + 1] = nb(a, b, c);\n d[e + 2] = bb(a, c);\n }\n function sd(a, b, c, d, e) {\n var f = nb(a, b, c);\n b = ((f << 3) & 224) | (Pa(a, b) >> 3);\n d[e + 0] = (bb(a, c) & 248) | (f >> 5);\n d[e + 1] = b;\n }\n function td(a, b, c, d, e) {\n var f = (Pa(a, b) & 240) | 15;\n d[e + 0] = (bb(a, c) & 240) | (nb(a, b, c) >> 4);\n d[e + 1] = f;\n }\n function ud(a, b, c, d, e) {\n d[e + 0] = 255;\n Ga(a, b, c, d, e + 1);\n }\n function vd(a, b, c, d, e) {\n Tb(a, b, c, d, e);\n d[e + 3] = 255;\n }\n function wd(a, b, c, d, e) {\n Ga(a, b, c, d, e);\n d[e + 3] = 255;\n }\n function ga(a, b) {\n return 0 > a ? 0 : a > b ? b : a;\n }\n function la(a, b, c) {\n self[a] = function(a, e, f, g, h, k, l, m, n) {\n for (var d = m + (n & -2) * c; m != d; )\n b(a[e + 0], f[g + 0], h[k + 0], l, m),\n b(a[e + 1], f[g + 0], h[k + 0], l, m + c),\n (e += 2),\n ++g,\n ++k,\n (m += 2 * c);\n n & 1 && b(a[e + 0], f[g + 0], h[k + 0], l, m);\n };\n }\n function xd(a, b, c) {\n return 0 == c ? (0 == a ? (0 == b ? 6 : 5) : 0 == b ? 4 : 0) : c;\n }\n function yd(a, b, c, d, e) {\n switch (a >>> 30) {\n case 3:\n Za(b, c, d, e, 0);\n break;\n case 2:\n fd(b, c, d, e);\n break;\n case 1:\n pa(b, c, d, e);\n }\n }\n function Oc(a, b) {\n var c,\n d,\n e = b.M,\n f = b.Nb,\n g = a.oc,\n h = a.pc + 40,\n k = a.oc,\n l = a.pc + 584,\n m = a.oc,\n n = a.pc + 600;\n for (c = 0; 16 > c; ++c) g[h + 32 * c - 1] = 129;\n for (c = 0; 8 > c; ++c)\n (k[l + 32 * c - 1] = 129), (m[n + 32 * c - 1] = 129);\n 0 < e\n ? (g[h - 1 - 32] = k[l - 1 - 32] = m[n - 1 - 32] = 129)\n : (M(g, h - 32 - 1, 127, 21),\n M(k, l - 32 - 1, 127, 9),\n M(m, n - 32 - 1, 127, 9));\n for (d = 0; d < a.za; ++d) {\n var r = b.ya[b.aa + d];\n if (0 < d) {\n for (c = -1; 16 > c; ++c) I(g, h + 32 * c - 4, g, h + 32 * c + 12, 4);\n for (c = -1; 8 > c; ++c)\n I(k, l + 32 * c - 4, k, l + 32 * c + 4, 4),\n I(m, n + 32 * c - 4, m, n + 32 * c + 4, 4);\n }\n var q = a.Gd,\n t = a.Hd + d,\n v = r.ad,\n p = r.Hc;\n 0 < e &&\n (I(g, h - 32, q[t].y, 0, 16),\n I(k, l - 32, q[t].f, 0, 8),\n I(m, n - 32, q[t].ea, 0, 8));\n if (r.Za) {\n var u = g;\n var w = h - 32 + 16;\n 0 < e &&\n (d >= a.za - 1\n ? M(u, w, q[t].y[15], 4)\n : I(u, w, q[t + 1].y, 0, 4));\n for (c = 0; 4 > c; c++)\n u[w + 128 + c] = u[w + 256 + c] = u[w + 384 + c] = u[w + 0 + c];\n for (c = 0; 16 > c; ++c, p <<= 2)\n (u = g), (w = h + zd[c]), W[r.Ob[c]](u, w), yd(p, v, 16 * +c, u, w);\n } else if (((u = xd(d, e, r.Ob[0])), Y[u](g, h), 0 != p))\n for (c = 0; 16 > c; ++c, p <<= 2) yd(p, v, 16 * +c, g, h + zd[c]);\n c = r.Gc;\n u = xd(d, e, r.Dd);\n ka[u](k, l);\n ka[u](m, n);\n r = c >> 0;\n p = v;\n u = k;\n w = l;\n r & 255 && (r & 170 ? Nb(p, 256, u, w) : Ob(p, 256, u, w));\n c >>= 8;\n r = m;\n p = n;\n c & 255 && (c & 170 ? Nb(v, 320, r, p) : Ob(v, 320, r, p));\n e < a.Ub - 1 &&\n (I(q[t].y, 0, g, h + 480, 16),\n I(q[t].f, 0, k, l + 224, 8),\n I(q[t].ea, 0, m, n + 224, 8));\n c = 8 * f * a.B;\n q = a.sa;\n t = a.ta + 16 * d + 16 * f * a.R;\n v = a.qa;\n r = a.ra + 8 * d + c;\n p = a.Ha;\n u = a.Ia + 8 * d + c;\n for (c = 0; 16 > c; ++c) I(q, t + c * a.R, g, h + 32 * c, 16);\n for (c = 0; 8 > c; ++c)\n I(v, r + c * a.B, k, l + 32 * c, 8),\n I(p, u + c * a.B, m, n + 32 * c, 8);\n }\n }\n function Ad(a, b, c, d, e, f, g, h, k) {\n var l = [0],\n m = [0],\n n = 0,\n r = null != k ? k.kd : 0,\n q = null != k ? k : new md();\n if (null == a || 12 > c) return 7;\n q.data = a;\n q.w = b;\n q.ha = c;\n b = [b];\n c = [c];\n q.gb = [q.gb];\n a: {\n var t = b;\n var v = c;\n var p = q.gb;\n x(null != a);\n x(null != v);\n x(null != p);\n p[0] = 0;\n if (12 <= v[0] && !fa(a, t[0], \"RIFF\")) {\n if (fa(a, t[0] + 8, \"WEBP\")) {\n p = 3;\n break a;\n }\n var u = Ha(a, t[0] + 4);\n if (12 > u || 4294967286 < u) {\n p = 3;\n break a;\n }\n if (r && u > v[0] - 8) {\n p = 7;\n break a;\n }\n p[0] = u;\n t[0] += 12;\n v[0] -= 12;\n }\n p = 0;\n }\n if (0 != p) return p;\n u = 0 < q.gb[0];\n for (c = c[0]; ; ) {\n t = [0];\n n = [n];\n a: {\n var w = a;\n v = b;\n p = c;\n var y = n,\n A = l,\n z = m,\n B = t;\n y[0] = 0;\n if (8 > p[0]) p = 7;\n else {\n if (!fa(w, v[0], \"VP8X\")) {\n if (10 != Ha(w, v[0] + 4)) {\n p = 3;\n break a;\n }\n if (18 > p[0]) {\n p = 7;\n break a;\n }\n var C = Ha(w, v[0] + 8);\n var D = 1 + Yb(w, v[0] + 12);\n w = 1 + Yb(w, v[0] + 15);\n if (2147483648 <= D * w) {\n p = 3;\n break a;\n }\n null != B && (B[0] = C);\n null != A && (A[0] = D);\n null != z && (z[0] = w);\n v[0] += 18;\n p[0] -= 18;\n y[0] = 1;\n }\n p = 0;\n }\n }\n n = n[0];\n t = t[0];\n if (0 != p) return p;\n v = !!(t & 2);\n if (!u && n) return 3;\n null != f && (f[0] = !!(t & 16));\n null != g && (g[0] = v);\n null != h && (h[0] = 0);\n g = l[0];\n t = m[0];\n if (n && v && null == k) {\n p = 0;\n break;\n }\n if (4 > c) {\n p = 7;\n break;\n }\n if ((u && n) || (!u && !n && !fa(a, b[0], \"ALPH\"))) {\n c = [c];\n q.na = [q.na];\n q.P = [q.P];\n q.Sa = [q.Sa];\n a: {\n C = a;\n p = b;\n u = c;\n var y = q.gb,\n A = q.na,\n z = q.P,\n B = q.Sa;\n D = 22;\n x(null != C);\n x(null != u);\n w = p[0];\n var F = u[0];\n x(null != A);\n x(null != B);\n A[0] = null;\n z[0] = null;\n for (B[0] = 0; ; ) {\n p[0] = w;\n u[0] = F;\n if (8 > F) {\n p = 7;\n break a;\n }\n var G = Ha(C, w + 4);\n if (4294967286 < G) {\n p = 3;\n break a;\n }\n var H = (8 + G + 1) & -2;\n D += H;\n if (0 < y && D > y) {\n p = 3;\n break a;\n }\n if (!fa(C, w, \"VP8 \") || !fa(C, w, \"VP8L\")) {\n p = 0;\n break a;\n }\n if (F[0] < H) {\n p = 7;\n break a;\n }\n fa(C, w, \"ALPH\") || ((A[0] = C), (z[0] = w + 8), (B[0] = G));\n w += H;\n F -= H;\n }\n }\n c = c[0];\n q.na = q.na[0];\n q.P = q.P[0];\n q.Sa = q.Sa[0];\n if (0 != p) break;\n }\n c = [c];\n q.Ja = [q.Ja];\n q.xa = [q.xa];\n a: if (\n ((y = a),\n (p = b),\n (u = c),\n (A = q.gb[0]),\n (z = q.Ja),\n (B = q.xa),\n (C = p[0]),\n (w = !fa(y, C, \"VP8 \")),\n (D = !fa(y, C, \"VP8L\")),\n x(null != y),\n x(null != u),\n x(null != z),\n x(null != B),\n 8 > u[0])\n )\n p = 7;\n else {\n if (w || D) {\n y = Ha(y, C + 4);\n if (12 <= A && y > A - 12) {\n p = 3;\n break a;\n }\n if (r && y > u[0] - 8) {\n p = 7;\n break a;\n }\n z[0] = y;\n p[0] += 8;\n u[0] -= 8;\n B[0] = D;\n } else\n (B[0] = 5 <= u[0] && 47 == y[C + 0] && !(y[C + 4] >> 5)),\n (z[0] = u[0]);\n p = 0;\n }\n c = c[0];\n q.Ja = q.Ja[0];\n q.xa = q.xa[0];\n b = b[0];\n if (0 != p) break;\n if (4294967286 < q.Ja) return 3;\n null == h || v || (h[0] = q.xa ? 2 : 1);\n g = [g];\n t = [t];\n if (q.xa) {\n if (5 > c) {\n p = 7;\n break;\n }\n h = g;\n r = t;\n v = f;\n null == a || 5 > c\n ? (a = 0)\n : 5 <= c && 47 == a[b + 0] && !(a[b + 4] >> 5)\n ? ((u = [0]),\n (y = [0]),\n (A = [0]),\n (z = new Ra()),\n cb(z, a, b, c),\n mc(z, u, y, A)\n ? (null != h && (h[0] = u[0]),\n null != r && (r[0] = y[0]),\n null != v && (v[0] = A[0]),\n (a = 1))\n : (a = 0))\n : (a = 0);\n } else {\n if (10 > c) {\n p = 7;\n break;\n }\n h = t;\n null == a || 10 > c || !Jc(a, b + 3, c - 3)\n ? (a = 0)\n : ((r = a[b + 0] | (a[b + 1] << 8) | (a[b + 2] << 16)),\n (v = ((a[b + 7] << 8) | a[b + 6]) & 16383),\n (a = ((a[b + 9] << 8) | a[b + 8]) & 16383),\n r & 1 ||\n 3 < ((r >> 1) & 7) ||\n !((r >> 4) & 1) ||\n r >> 5 >= q.Ja ||\n !v ||\n !a\n ? (a = 0)\n : (g && (g[0] = v), h && (h[0] = a), (a = 1)));\n }\n if (!a) return 3;\n g = g[0];\n t = t[0];\n if (n && (l[0] != g || m[0] != t)) return 3;\n null != k &&\n ((k[0] = q),\n (k.offset = b - k.w),\n x(4294967286 > b - k.w),\n x(k.offset == k.ha - c));\n break;\n }\n return 0 == p || (7 == p && n && null == k)\n ? (null != f && (f[0] |= null != q.na && 0 < q.na.length),\n null != d && (d[0] = g),\n null != e && (e[0] = t),\n 0)\n : p;\n }\n function hc(a, b, c) {\n var d = b.width,\n e = b.height,\n f = 0,\n g = 0,\n h = d,\n k = e;\n b.Da = null != a && 0 < a.Da;\n if (\n b.Da &&\n ((h = a.cd),\n (k = a.bd),\n (f = a.v),\n (g = a.j),\n 11 > c || ((f &= -2), (g &= -2)),\n 0 > f || 0 > g || 0 >= h || 0 >= k || f + h > d || g + k > e)\n )\n return 0;\n b.v = f;\n b.j = g;\n b.va = f + h;\n b.o = g + k;\n b.U = h;\n b.T = k;\n b.da = null != a && 0 < a.da;\n if (b.da) {\n c = [a.ib];\n f = [a.hb];\n if (!bc(h, k, c, f)) return 0;\n b.ib = c[0];\n b.hb = f[0];\n }\n b.ob = null != a && a.ob;\n b.Kb = null == a || !a.Sd;\n b.da && ((b.ob = b.ib < (3 * d) / 4 && b.hb < (3 * e) / 4), (b.Kb = 0));\n return 1;\n }\n function Bd(a) {\n if (null == a) return 2;\n if (11 > a.S) {\n var b = a.f.RGBA;\n b.fb += (a.height - 1) * b.A;\n b.A = -b.A;\n } else\n (b = a.f.kb),\n (a = a.height),\n (b.O += (a - 1) * b.fa),\n (b.fa = -b.fa),\n (b.N += ((a - 1) >> 1) * b.Ab),\n (b.Ab = -b.Ab),\n (b.W += ((a - 1) >> 1) * b.Db),\n (b.Db = -b.Db),\n null != b.F && ((b.J += (a - 1) * b.lb), (b.lb = -b.lb));\n return 0;\n }\n function Cd(a, b, c, d) {\n if (null == d || 0 >= a || 0 >= b) return 2;\n if (null != c) {\n if (c.Da) {\n var e = c.cd,\n f = c.bd,\n g = c.v & -2,\n h = c.j & -2;\n if (0 > g || 0 > h || 0 >= e || 0 >= f || g + e > a || h + f > b)\n return 2;\n a = e;\n b = f;\n }\n if (c.da) {\n e = [c.ib];\n f = [c.hb];\n if (!bc(a, b, e, f)) return 2;\n a = e[0];\n b = f[0];\n }\n }\n d.width = a;\n d.height = b;\n a: {\n var k = d.width;\n var l = d.height;\n a = d.S;\n if (0 >= k || 0 >= l || !(a >= Ca && 13 > a)) a = 2;\n else {\n if (0 >= d.Rd && null == d.sd) {\n var g = (f = e = b = 0),\n h = k * Dd[a],\n m = h * l;\n 11 > a ||\n ((b = (k + 1) / 2),\n (f = ((l + 1) / 2) * b),\n 12 == a && ((e = k), (g = e * l)));\n l = V(m + 2 * f + g);\n if (null == l) {\n a = 1;\n break a;\n }\n d.sd = l;\n 11 > a\n ? ((k = d.f.RGBA),\n (k.eb = l),\n (k.fb = 0),\n (k.A = h),\n (k.size = m))\n : ((k = d.f.kb),\n (k.y = l),\n (k.O = 0),\n (k.fa = h),\n (k.Fd = m),\n (k.f = l),\n (k.N = 0 + m),\n (k.Ab = b),\n (k.Cd = f),\n (k.ea = l),\n (k.W = 0 + m + f),\n (k.Db = b),\n (k.Ed = f),\n 12 == a && ((k.F = l), (k.J = 0 + m + 2 * f)),\n (k.Tc = g),\n (k.lb = e));\n }\n b = 1;\n e = d.S;\n f = d.width;\n g = d.height;\n if (e >= Ca && 13 > e)\n if (11 > e)\n (a = d.f.RGBA),\n (h = Math.abs(a.A)),\n (b &= h * (g - 1) + f <= a.size),\n (b &= h >= f * Dd[e]),\n (b &= null != a.eb);\n else {\n a = d.f.kb;\n h = (f + 1) / 2;\n m = (g + 1) / 2;\n k = Math.abs(a.fa);\n var l = Math.abs(a.Ab),\n n = Math.abs(a.Db),\n r = Math.abs(a.lb),\n q = r * (g - 1) + f;\n b &= k * (g - 1) + f <= a.Fd;\n b &= l * (m - 1) + h <= a.Cd;\n b &= n * (m - 1) + h <= a.Ed;\n b = b & (k >= f) & (l >= h) & (n >= h);\n b &= null != a.y;\n b &= null != a.f;\n b &= null != a.ea;\n 12 == e && ((b &= r >= f), (b &= q <= a.Tc), (b &= null != a.F));\n }\n else b = 0;\n a = b ? 0 : 2;\n }\n }\n if (0 != a) return a;\n null != c && c.fd && (a = Bd(d));\n return a;\n }\n var xb = 64,\n Hd = [\n 0,\n 1,\n 3,\n 7,\n 15,\n 31,\n 63,\n 127,\n 255,\n 511,\n 1023,\n 2047,\n 4095,\n 8191,\n 16383,\n 32767,\n 65535,\n 131071,\n 262143,\n 524287,\n 1048575,\n 2097151,\n 4194303,\n 8388607,\n 16777215\n ],\n Gd = 24,\n ob = 32,\n Xb = 8,\n Id = [\n 0,\n 0,\n 1,\n 1,\n 2,\n 2,\n 2,\n 2,\n 3,\n 3,\n 3,\n 3,\n 3,\n 3,\n 3,\n 3,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 4,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 5,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 6,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7,\n 7\n ];\n X(\"Predictor0\", \"PredictorAdd0\");\n self.Predictor0 = function() {\n return 4278190080;\n };\n self.Predictor1 = function(a) {\n return a;\n };\n self.Predictor2 = function(a, b, c) {\n return b[c + 0];\n };\n self.Predictor3 = function(a, b, c) {\n return b[c + 1];\n };\n self.Predictor4 = function(a, b, c) {\n return b[c - 1];\n };\n self.Predictor5 = function(a, b, c) {\n return aa(aa(a, b[c + 1]), b[c + 0]);\n };\n self.Predictor6 = function(a, b, c) {\n return aa(a, b[c - 1]);\n };\n self.Predictor7 = function(a, b, c) {\n return aa(a, b[c + 0]);\n };\n self.Predictor8 = function(a, b, c) {\n return aa(b[c - 1], b[c + 0]);\n };\n self.Predictor9 = function(a, b, c) {\n return aa(b[c + 0], b[c + 1]);\n };\n self.Predictor10 = function(a, b, c) {\n return aa(aa(a, b[c - 1]), aa(b[c + 0], b[c + 1]));\n };\n self.Predictor11 = function(a, b, c) {\n var d = b[c + 0];\n b = b[c - 1];\n return 0 >=\n Ia((d >> 24) & 255, (a >> 24) & 255, (b >> 24) & 255) +\n Ia((d >> 16) & 255, (a >> 16) & 255, (b >> 16) & 255) +\n Ia((d >> 8) & 255, (a >> 8) & 255, (b >> 8) & 255) +\n Ia(d & 255, a & 255, b & 255)\n ? d\n : a;\n };\n self.Predictor12 = function(a, b, c) {\n var d = b[c + 0];\n b = b[c - 1];\n return (\n ((sa(((a >> 24) & 255) + ((d >> 24) & 255) - ((b >> 24) & 255)) << 24) |\n (sa(((a >> 16) & 255) + ((d >> 16) & 255) - ((b >> 16) & 255)) <<\n 16) |\n (sa(((a >> 8) & 255) + ((d >> 8) & 255) - ((b >> 8) & 255)) << 8) |\n sa((a & 255) + (d & 255) - (b & 255))) >>>\n 0\n );\n };\n self.Predictor13 = function(a, b, c) {\n var d = b[c - 1];\n a = aa(a, b[c + 0]);\n return (\n ((eb((a >> 24) & 255, (d >> 24) & 255) << 24) |\n (eb((a >> 16) & 255, (d >> 16) & 255) << 16) |\n (eb((a >> 8) & 255, (d >> 8) & 255) << 8) |\n eb((a >> 0) & 255, (d >> 0) & 255)) >>>\n 0\n );\n };\n var ee = self.PredictorAdd0;\n self.PredictorAdd1 = cc;\n X(\"Predictor2\", \"PredictorAdd2\");\n X(\"Predictor3\", \"PredictorAdd3\");\n X(\"Predictor4\", \"PredictorAdd4\");\n X(\"Predictor5\", \"PredictorAdd5\");\n X(\"Predictor6\", \"PredictorAdd6\");\n X(\"Predictor7\", \"PredictorAdd7\");\n X(\"Predictor8\", \"PredictorAdd8\");\n X(\"Predictor9\", \"PredictorAdd9\");\n X(\"Predictor10\", \"PredictorAdd10\");\n X(\"Predictor11\", \"PredictorAdd11\");\n X(\"Predictor12\", \"PredictorAdd12\");\n X(\"Predictor13\", \"PredictorAdd13\");\n var fe = self.PredictorAdd2;\n ec(\n \"ColorIndexInverseTransform\",\n \"MapARGB\",\n \"32b\",\n function(a) {\n return (a >> 8) & 255;\n },\n function(a) {\n return a;\n }\n );\n ec(\n \"VP8LColorIndexInverseTransformAlpha\",\n \"MapAlpha\",\n \"8b\",\n function(a) {\n return a;\n },\n function(a) {\n return (a >> 8) & 255;\n }\n );\n var rc = self.ColorIndexInverseTransform,\n ke = self.MapARGB,\n he = self.VP8LColorIndexInverseTransformAlpha,\n le = self.MapAlpha,\n pc,\n qc = (self.VP8LPredictorsAdd = []);\n qc.length = 16;\n (self.VP8LPredictors = []).length = 16;\n (self.VP8LPredictorsAdd_C = []).length = 16;\n (self.VP8LPredictors_C = []).length = 16;\n var Fb,\n sc,\n Gb,\n Hb,\n xc,\n uc,\n bd = V(511),\n cd = V(2041),\n dd = V(225),\n ed = V(767),\n ad = 0,\n Qb = cd,\n mb = dd,\n R = ed,\n U = bd,\n Ca = 0,\n Ua = 1,\n tc = 2,\n Va = 3,\n ya = 4,\n Db = 5,\n wc = 6,\n zb = 7,\n Ab = 8,\n Ja = 9,\n Bb = 10,\n pe = [2, 3, 7],\n oe = [3, 3, 11],\n Dc = [280, 256, 256, 256, 40],\n qe = [0, 1, 1, 1, 0],\n ne = [17, 18, 0, 1, 2, 3, 4, 5, 16, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],\n de = [\n 24,\n 7,\n 23,\n 25,\n 40,\n 6,\n 39,\n 41,\n 22,\n 26,\n 38,\n 42,\n 56,\n 5,\n 55,\n 57,\n 21,\n 27,\n 54,\n 58,\n 37,\n 43,\n 72,\n 4,\n 71,\n 73,\n 20,\n 28,\n 53,\n 59,\n 70,\n 74,\n 36,\n 44,\n 88,\n 69,\n 75,\n 52,\n 60,\n 3,\n 87,\n 89,\n 19,\n 29,\n 86,\n 90,\n 35,\n 45,\n 68,\n 76,\n 85,\n 91,\n 51,\n 61,\n 104,\n 2,\n 103,\n 105,\n 18,\n 30,\n 102,\n 106,\n 34,\n 46,\n 84,\n 92,\n 67,\n 77,\n 101,\n 107,\n 50,\n 62,\n 120,\n 1,\n 119,\n 121,\n 83,\n 93,\n 17,\n 31,\n 100,\n 108,\n 66,\n 78,\n 118,\n 122,\n 33,\n 47,\n 117,\n 123,\n 49,\n 63,\n 99,\n 109,\n 82,\n 94,\n 0,\n 116,\n 124,\n 65,\n 79,\n 16,\n 32,\n 98,\n 110,\n 48,\n 115,\n 125,\n 81,\n 95,\n 64,\n 114,\n 126,\n 97,\n 111,\n 80,\n 113,\n 127,\n 96,\n 112\n ],\n me = [\n 2954,\n 2956,\n 2958,\n 2962,\n 2970,\n 2986,\n 3018,\n 3082,\n 3212,\n 3468,\n 3980,\n 5004\n ],\n ie = 8,\n Lb = [\n 4,\n 5,\n 6,\n 7,\n 8,\n 9,\n 10,\n 10,\n 11,\n 12,\n 13,\n 14,\n 15,\n 16,\n 17,\n 17,\n 18,\n 19,\n 20,\n 20,\n 21,\n 21,\n 22,\n 22,\n 23,\n 23,\n 24,\n 25,\n 25,\n 26,\n 27,\n 28,\n 29,\n 30,\n 31,\n 32,\n 33,\n 34,\n 35,\n 36,\n 37,\n 37,\n 38,\n 39,\n 40,\n 41,\n 42,\n 43,\n 44,\n 45,\n 46,\n 46,\n 47,\n 48,\n 49,\n 50,\n 51,\n 52,\n 53,\n 54,\n 55,\n 56,\n 57,\n 58,\n 59,\n 60,\n 61,\n 62,\n 63,\n 64,\n 65,\n 66,\n 67,\n 68,\n 69,\n 70,\n 71,\n 72,\n 73,\n 74,\n 75,\n 76,\n 76,\n 77,\n 78,\n 79,\n 80,\n 81,\n 82,\n 83,\n 84,\n 85,\n 86,\n 87,\n 88,\n 89,\n 91,\n 93,\n 95,\n 96,\n 98,\n 100,\n 101,\n 102,\n 104,\n 106,\n 108,\n 110,\n 112,\n 114,\n 116,\n 118,\n 122,\n 124,\n 126,\n 128,\n 130,\n 132,\n 134,\n 136,\n 138,\n 140,\n 143,\n 145,\n 148,\n 151,\n 154,\n 157\n ],\n Mb = [\n 4,\n 5,\n 6,\n 7,\n 8,\n 9,\n 10,\n 11,\n 12,\n 13,\n 14,\n 15,\n 16,\n 17,\n 18,\n 19,\n 20,\n 21,\n 22,\n 23,\n 24,\n 25,\n 26,\n 27,\n 28,\n 29,\n 30,\n 31,\n 32,\n 33,\n 34,\n 35,\n 36,\n 37,\n 38,\n 39,\n 40,\n 41,\n 42,\n 43,\n 44,\n 45,\n 46,\n 47,\n 48,\n 49,\n 50,\n 51,\n 52,\n 53,\n 54,\n 55,\n 56,\n 57,\n 58,\n 60,\n 62,\n 64,\n 66,\n 68,\n 70,\n 72,\n 74,\n 76,\n 78,\n 80,\n 82,\n 84,\n 86,\n 88,\n 90,\n 92,\n 94,\n 96,\n 98,\n 100,\n 102,\n 104,\n 106,\n 108,\n 110,\n 112,\n 114,\n 116,\n 119,\n 122,\n 125,\n 128,\n 131,\n 134,\n 137,\n 140,\n 143,\n 146,\n 149,\n 152,\n 155,\n 158,\n 161,\n 164,\n 167,\n 170,\n 173,\n 177,\n 181,\n 185,\n 189,\n 193,\n 197,\n 201,\n 205,\n 209,\n 213,\n 217,\n 221,\n 225,\n 229,\n 234,\n 239,\n 245,\n 249,\n 254,\n 259,\n 264,\n 269,\n 274,\n 279,\n 284\n ],\n oa = null,\n He = [\n [173, 148, 140, 0],\n [176, 155, 140, 135, 0],\n [180, 157, 141, 134, 130, 0],\n [254, 254, 243, 230, 196, 177, 153, 140, 133, 130, 129, 0]\n ],\n Ie = [0, 1, 4, 8, 5, 2, 3, 6, 9, 12, 13, 10, 7, 11, 14, 15],\n Mc = [-0, 1, -1, 2, -2, 3, 4, 6, -3, 5, -4, -5, -6, 7, -7, 8, -8, -9],\n Fe = [\n [\n [\n [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128],\n [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128],\n [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128]\n ],\n [\n [253, 136, 254, 255, 228, 219, 128, 128, 128, 128, 128],\n [189, 129, 242, 255, 227, 213, 255, 219, 128, 128, 128],\n [106, 126, 227, 252, 214, 209, 255, 255, 128, 128, 128]\n ],\n [\n [1, 98, 248, 255, 236, 226, 255, 255, 128, 128, 128],\n [181, 133, 238, 254, 221, 234, 255, 154, 128, 128, 128],\n [78, 134, 202, 247, 198, 180, 255, 219, 128, 128, 128]\n ],\n [\n [1, 185, 249, 255, 243, 255, 128, 128, 128, 128, 128],\n [184, 150, 247, 255, 236, 224, 128, 128, 128, 128, 128],\n [77, 110, 216, 255, 236, 230, 128, 128, 128, 128, 128]\n ],\n [\n [1, 101, 251, 255, 241, 255, 128, 128, 128, 128, 128],\n [170, 139, 241, 252, 236, 209, 255, 255, 128, 128, 128],\n [37, 116, 196, 243, 228, 255, 255, 255, 128, 128, 128]\n ],\n [\n [1, 204, 254, 255, 245, 255, 128, 128, 128, 128, 128],\n [207, 160, 250, 255, 238, 128, 128, 128, 128, 128, 128],\n [102, 103, 231, 255, 211, 171, 128, 128, 128, 128, 128]\n ],\n [\n [1, 152, 252, 255, 240, 255, 128, 128, 128, 128, 128],\n [177, 135, 243, 255, 234, 225, 128, 128, 128, 128, 128],\n [80, 129, 211, 255, 194, 224, 128, 128, 128, 128, 128]\n ],\n [\n [1, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128],\n [246, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128],\n [255, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128]\n ]\n ],\n [\n [\n [198, 35, 237, 223, 193, 187, 162, 160, 145, 155, 62],\n [131, 45, 198, 221, 172, 176, 220, 157, 252, 221, 1],\n [68, 47, 146, 208, 149, 167, 221, 162, 255, 223, 128]\n ],\n [\n [1, 149, 241, 255, 221, 224, 255, 255, 128, 128, 128],\n [184, 141, 234, 253, 222, 220, 255, 199, 128, 128, 128],\n [81, 99, 181, 242, 176, 190, 249, 202, 255, 255, 128]\n ],\n [\n [1, 129, 232, 253, 214, 197, 242, 196, 255, 255, 128],\n [99, 121, 210, 250, 201, 198, 255, 202, 128, 128, 128],\n [23, 91, 163, 242, 170, 187, 247, 210, 255, 255, 128]\n ],\n [\n [1, 200, 246, 255, 234, 255, 128, 128, 128, 128, 128],\n [109, 178, 241, 255, 231, 245, 255, 255, 128, 128, 128],\n [44, 130, 201, 253, 205, 192, 255, 255, 128, 128, 128]\n ],\n [\n [1, 132, 239, 251, 219, 209, 255, 165, 128, 128, 128],\n [94, 136, 225, 251, 218, 190, 255, 255, 128, 128, 128],\n [22, 100, 174, 245, 186, 161, 255, 199, 128, 128, 128]\n ],\n [\n [1, 182, 249, 255, 232, 235, 128, 128, 128, 128, 128],\n [124, 143, 241, 255, 227, 234, 128, 128, 128, 128, 128],\n [35, 77, 181, 251, 193, 211, 255, 205, 128, 128, 128]\n ],\n [\n [1, 157, 247, 255, 236, 231, 255, 255, 128, 128, 128],\n [121, 141, 235, 255, 225, 227, 255, 255, 128, 128, 128],\n [45, 99, 188, 251, 195, 217, 255, 224, 128, 128, 128]\n ],\n [\n [1, 1, 251, 255, 213, 255, 128, 128, 128, 128, 128],\n [203, 1, 248, 255, 255, 128, 128, 128, 128, 128, 128],\n [137, 1, 177, 255, 224, 255, 128, 128, 128, 128, 128]\n ]\n ],\n [\n [\n [253, 9, 248, 251, 207, 208, 255, 192, 128, 128, 128],\n [175, 13, 224, 243, 193, 185, 249, 198, 255, 255, 128],\n [73, 17, 171, 221, 161, 179, 236, 167, 255, 234, 128]\n ],\n [\n [1, 95, 247, 253, 212, 183, 255, 255, 128, 128, 128],\n [239, 90, 244, 250, 211, 209, 255, 255, 128, 128, 128],\n [155, 77, 195, 248, 188, 195, 255, 255, 128, 128, 128]\n ],\n [\n [1, 24, 239, 251, 218, 219, 255, 205, 128, 128, 128],\n [201, 51, 219, 255, 196, 186, 128, 128, 128, 128, 128],\n [69, 46, 190, 239, 201, 218, 255, 228, 128, 128, 128]\n ],\n [\n [1, 191, 251, 255, 255, 128, 128, 128, 128, 128, 128],\n [223, 165, 249, 255, 213, 255, 128, 128, 128, 128, 128],\n [141, 124, 248, 255, 255, 128, 128, 128, 128, 128, 128]\n ],\n [\n [1, 16, 248, 255, 255, 128, 128, 128, 128, 128, 128],\n [190, 36, 230, 255, 236, 255, 128, 128, 128, 128, 128],\n [149, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128]\n ],\n [\n [1, 226, 255, 128, 128, 128, 128, 128, 128, 128, 128],\n [247, 192, 255, 128, 128, 128, 128, 128, 128, 128, 128],\n [240, 128, 255, 128, 128, 128, 128, 128, 128, 128, 128]\n ],\n [\n [1, 134, 252, 255, 255, 128, 128, 128, 128, 128, 128],\n [213, 62, 250, 255, 255, 128, 128, 128, 128, 128, 128],\n [55, 93, 255, 128, 128, 128, 128, 128, 128, 128, 128]\n ],\n [\n [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128],\n [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128],\n [128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128]\n ]\n ],\n [\n [\n [202, 24, 213, 235, 186, 191, 220, 160, 240, 175, 255],\n [126, 38, 182, 232, 169, 184, 228, 174, 255, 187, 128],\n [61, 46, 138, 219, 151, 178, 240, 170, 255, 216, 128]\n ],\n [\n [1, 112, 230, 250, 199, 191, 247, 159, 255, 255, 128],\n [166, 109, 228, 252, 211, 215, 255, 174, 128, 128, 128],\n [39, 77, 162, 232, 172, 180, 245, 178, 255, 255, 128]\n ],\n [\n [1, 52, 220, 246, 198, 199, 249, 220, 255, 255, 128],\n [124, 74, 191, 243, 183, 193, 250, 221, 255, 255, 128],\n [24, 71, 130, 219, 154, 170, 243, 182, 255, 255, 128]\n ],\n [\n [1, 182, 225, 249, 219, 240, 255, 224, 128, 128, 128],\n [149, 150, 226, 252, 216, 205, 255, 171, 128, 128, 128],\n [28, 108, 170, 242, 183, 194, 254, 223, 255, 255, 128]\n ],\n [\n [1, 81, 230, 252, 204, 203, 255, 192, 128, 128, 128],\n [123, 102, 209, 247, 188, 196, 255, 233, 128, 128, 128],\n [20, 95, 153, 243, 164, 173, 255, 203, 128, 128, 128]\n ],\n [\n [1, 222, 248, 255, 216, 213, 128, 128, 128, 128, 128],\n [168, 175, 246, 252, 235, 205, 255, 255, 128, 128, 128],\n [47, 116, 215, 255, 211, 212, 255, 255, 128, 128, 128]\n ],\n [\n [1, 121, 236, 253, 212, 214, 255, 255, 128, 128, 128],\n [141, 84, 213, 252, 201, 202, 255, 219, 128, 128, 128],\n [42, 80, 160, 240, 162, 185, 255, 205, 128, 128, 128]\n ],\n [\n [1, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128],\n [244, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128],\n [238, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128]\n ]\n ]\n ],\n Ke = [\n [\n [231, 120, 48, 89, 115, 113, 120, 152, 112],\n [152, 179, 64, 126, 170, 118, 46, 70, 95],\n [175, 69, 143, 80, 85, 82, 72, 155, 103],\n [56, 58, 10, 171, 218, 189, 17, 13, 152],\n [114, 26, 17, 163, 44, 195, 21, 10, 173],\n [121, 24, 80, 195, 26, 62, 44, 64, 85],\n [144, 71, 10, 38, 171, 213, 144, 34, 26],\n [170, 46, 55, 19, 136, 160, 33, 206, 71],\n [63, 20, 8, 114, 114, 208, 12, 9, 226],\n [81, 40, 11, 96, 182, 84, 29, 16, 36]\n ],\n [\n [134, 183, 89, 137, 98, 101, 106, 165, 148],\n [72, 187, 100, 130, 157, 111, 32, 75, 80],\n [66, 102, 167, 99, 74, 62, 40, 234, 128],\n [41, 53, 9, 178, 241, 141, 26, 8, 107],\n [74, 43, 26, 146, 73, 166, 49, 23, 157],\n [65, 38, 105, 160, 51, 52, 31, 115, 128],\n [104, 79, 12, 27, 217, 255, 87, 17, 7],\n [87, 68, 71, 44, 114, 51, 15, 186, 23],\n [47, 41, 14, 110, 182, 183, 21, 17, 194],\n [66, 45, 25, 102, 197, 189, 23, 18, 22]\n ],\n [\n [88, 88, 147, 150, 42, 46, 45, 196, 205],\n [43, 97, 183, 117, 85, 38, 35, 179, 61],\n [39, 53, 200, 87, 26, 21, 43, 232, 171],\n [56, 34, 51, 104, 114, 102, 29, 93, 77],\n [39, 28, 85, 171, 58, 165, 90, 98, 64],\n [34, 22, 116, 206, 23, 34, 43, 166, 73],\n [107, 54, 32, 26, 51, 1, 81, 43, 31],\n [68, 25, 106, 22, 64, 171, 36, 225, 114],\n [34, 19, 21, 102, 132, 188, 16, 76, 124],\n [62, 18, 78, 95, 85, 57, 50, 48, 51]\n ],\n [\n [193, 101, 35, 159, 215, 111, 89, 46, 111],\n [60, 148, 31, 172, 219, 228, 21, 18, 111],\n [112, 113, 77, 85, 179, 255, 38, 120, 114],\n [40, 42, 1, 196, 245, 209, 10, 25, 109],\n [88, 43, 29, 140, 166, 213, 37, 43, 154],\n [61, 63, 30, 155, 67, 45, 68, 1, 209],\n [100, 80, 8, 43, 154, 1, 51, 26, 71],\n [142, 78, 78, 16, 255, 128, 34, 197, 171],\n [41, 40, 5, 102, 211, 183, 4, 1, 221],\n [51, 50, 17, 168, 209, 192, 23, 25, 82]\n ],\n [\n [138, 31, 36, 171, 27, 166, 38, 44, 229],\n [67, 87, 58, 169, 82, 115, 26, 59, 179],\n [63, 59, 90, 180, 59, 166, 93, 73, 154],\n [40, 40, 21, 116, 143, 209, 34, 39, 175],\n [47, 15, 16, 183, 34, 223, 49, 45, 183],\n [46, 17, 33, 183, 6, 98, 15, 32, 183],\n [57, 46, 22, 24, 128, 1, 54, 17, 37],\n [65, 32, 73, 115, 28, 128, 23, 128, 205],\n [40, 3, 9, 115, 51, 192, 18, 6, 223],\n [87, 37, 9, 115, 59, 77, 64, 21, 47]\n ],\n [\n [104, 55, 44, 218, 9, 54, 53, 130, 226],\n [64, 90, 70, 205, 40, 41, 23, 26, 57],\n [54, 57, 112, 184, 5, 41, 38, 166, 213],\n [30, 34, 26, 133, 152, 116, 10, 32, 134],\n [39, 19, 53, 221, 26, 114, 32, 73, 255],\n [31, 9, 65, 234, 2, 15, 1, 118, 73],\n [75, 32, 12, 51, 192, 255, 160, 43, 51],\n [88, 31, 35, 67, 102, 85, 55, 186, 85],\n [56, 21, 23, 111, 59, 205, 45, 37, 192],\n [55, 38, 70, 124, 73, 102, 1, 34, 98]\n ],\n [\n [125, 98, 42, 88, 104, 85, 117, 175, 82],\n [95, 84, 53, 89, 128, 100, 113, 101, 45],\n [75, 79, 123, 47, 51, 128, 81, 171, 1],\n [57, 17, 5, 71, 102, 57, 53, 41, 49],\n [38, 33, 13, 121, 57, 73, 26, 1, 85],\n [41, 10, 67, 138, 77, 110, 90, 47, 114],\n [115, 21, 2, 10, 102, 255, 166, 23, 6],\n [101, 29, 16, 10, 85, 128, 101, 196, 26],\n [57, 18, 10, 102, 102, 213, 34, 20, 43],\n [117, 20, 15, 36, 163, 128, 68, 1, 26]\n ],\n [\n [102, 61, 71, 37, 34, 53, 31, 243, 192],\n [69, 60, 71, 38, 73, 119, 28, 222, 37],\n [68, 45, 128, 34, 1, 47, 11, 245, 171],\n [62, 17, 19, 70, 146, 85, 55, 62, 70],\n [37, 43, 37, 154, 100, 163, 85, 160, 1],\n [63, 9, 92, 136, 28, 64, 32, 201, 85],\n [75, 15, 9, 9, 64, 255, 184, 119, 16],\n [86, 6, 28, 5, 64, 255, 25, 248, 1],\n [56, 8, 17, 132, 137, 255, 55, 116, 128],\n [58, 15, 20, 82, 135, 57, 26, 121, 40]\n ],\n [\n [164, 50, 31, 137, 154, 133, 25, 35, 218],\n [51, 103, 44, 131, 131, 123, 31, 6, 158],\n [86, 40, 64, 135, 148, 224, 45, 183, 128],\n [22, 26, 17, 131, 240, 154, 14, 1, 209],\n [45, 16, 21, 91, 64, 222, 7, 1, 197],\n [56, 21, 39, 155, 60, 138, 23, 102, 213],\n [83, 12, 13, 54, 192, 255, 68, 47, 28],\n [85, 26, 85, 85, 128, 128, 32, 146, 171],\n [18, 11, 7, 63, 144, 171, 4, 4, 246],\n [35, 27, 10, 146, 174, 171, 12, 26, 128]\n ],\n [\n [190, 80, 35, 99, 180, 80, 126, 54, 45],\n [85, 126, 47, 87, 176, 51, 41, 20, 32],\n [101, 75, 128, 139, 118, 146, 116, 128, 85],\n [56, 41, 15, 176, 236, 85, 37, 9, 62],\n [71, 30, 17, 119, 118, 255, 17, 18, 138],\n [101, 38, 60, 138, 55, 70, 43, 26, 142],\n [146, 36, 19, 30, 171, 255, 97, 27, 20],\n [138, 45, 61, 62, 219, 1, 81, 188, 64],\n [32, 41, 20, 117, 151, 142, 20, 21, 163],\n [112, 19, 12, 61, 195, 128, 48, 4, 24]\n ]\n ],\n Ee = [\n [\n [\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [176, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [223, 241, 252, 255, 255, 255, 255, 255, 255, 255, 255],\n [249, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 244, 252, 255, 255, 255, 255, 255, 255, 255, 255],\n [234, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 246, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [239, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [254, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 248, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [251, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [251, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [254, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 254, 253, 255, 254, 255, 255, 255, 255, 255, 255],\n [250, 255, 254, 255, 254, 255, 255, 255, 255, 255, 255],\n [254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ]\n ],\n [\n [\n [217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [225, 252, 241, 253, 255, 255, 254, 255, 255, 255, 255],\n [234, 250, 241, 250, 253, 255, 253, 254, 255, 255, 255]\n ],\n [\n [255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [223, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [238, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 248, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [249, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [247, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255],\n [250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ]\n ],\n [\n [\n [186, 251, 250, 255, 255, 255, 255, 255, 255, 255, 255],\n [234, 251, 244, 254, 255, 255, 255, 255, 255, 255, 255],\n [251, 251, 243, 253, 254, 255, 254, 255, 255, 255, 255]\n ],\n [\n [255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [236, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [251, 253, 253, 254, 254, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ]\n ],\n [\n [\n [248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [250, 254, 252, 254, 255, 255, 255, 255, 255, 255, 255],\n [248, 254, 249, 253, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255],\n [246, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255],\n [252, 254, 251, 254, 254, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 254, 252, 255, 255, 255, 255, 255, 255, 255, 255],\n [248, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255],\n [253, 255, 254, 254, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 251, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [245, 251, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [253, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 251, 253, 255, 255, 255, 255, 255, 255, 255, 255],\n [252, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [249, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 255, 253, 255, 255, 255, 255, 255, 255, 255, 255],\n [250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ],\n [\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],\n [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]\n ]\n ]\n ],\n Ge = [0, 1, 2, 3, 6, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7, 0],\n Nc,\n Y = [],\n W = [],\n ka = [],\n Za,\n fd,\n Nb,\n pa,\n Ob,\n Xc,\n Tc,\n Yc,\n Uc,\n Zc,\n Vc,\n $c,\n Wc,\n Rc,\n Pc,\n Sc,\n Qc,\n re = 1,\n Cc = 2,\n ia = [],\n za,\n vc,\n fc,\n Fc,\n P = [];\n va(\"UpsampleRgbLinePair\", Ga, 3);\n va(\"UpsampleBgrLinePair\", Tb, 3);\n va(\"UpsampleRgbaLinePair\", wd, 4);\n va(\"UpsampleBgraLinePair\", vd, 4);\n va(\"UpsampleArgbLinePair\", ud, 4);\n va(\"UpsampleRgba4444LinePair\", td, 2);\n va(\"UpsampleRgb565LinePair\", sd, 2);\n var Mf = self.UpsampleRgbLinePair,\n Nf = self.UpsampleBgrLinePair,\n nd = self.UpsampleRgbaLinePair,\n od = self.UpsampleBgraLinePair,\n pd = self.UpsampleArgbLinePair,\n qd = self.UpsampleRgba4444LinePair,\n Of = self.UpsampleRgb565LinePair,\n Wa = 16,\n Ba = 1 << (Wa - 1),\n ta = -227,\n Eb = 482,\n rd = 6,\n Pf = (256 << rd) - 1,\n jc = 0,\n Yd = V(256),\n ae = V(256),\n $d = V(256),\n Zd = V(256),\n be = V(Eb - ta),\n ce = V(Eb - ta);\n la(\"YuvToRgbRow\", Ga, 3);\n la(\"YuvToBgrRow\", Tb, 3);\n la(\"YuvToRgbaRow\", wd, 4);\n la(\"YuvToBgraRow\", vd, 4);\n la(\"YuvToArgbRow\", ud, 4);\n la(\"YuvToRgba4444Row\", td, 2);\n la(\"YuvToRgb565Row\", sd, 2);\n var zd = [\n 0,\n 4,\n 8,\n 12,\n 128,\n 132,\n 136,\n 140,\n 256,\n 260,\n 264,\n 268,\n 384,\n 388,\n 392,\n 396\n ],\n Ya = [0, 2, 8],\n Qf = [8, 7, 6, 4, 4, 2, 2, 2, 1, 1, 1, 1],\n Ne = 1;\n this.WebPDecodeRGBA = function(a, b, c, d, e) {\n var f = Ua;\n var g = new Cf(),\n h = new Cb();\n g.ba = h;\n h.S = f;\n h.width = [h.width];\n h.height = [h.height];\n var k = h.width;\n var l = h.height,\n m = new Td();\n if (null == m || null == a) var n = 2;\n else\n x(null != m),\n (n = Ad(a, b, c, m.width, m.height, m.Pd, m.Qd, m.format, null));\n 0 != n\n ? (k = 0)\n : (null != k && (k[0] = m.width[0]),\n null != l && (l[0] = m.height[0]),\n (k = 1));\n if (k) {\n h.width = h.width[0];\n h.height = h.height[0];\n null != d && (d[0] = h.width);\n null != e && (e[0] = h.height);\n b: {\n d = new Oa();\n e = new md();\n e.data = a;\n e.w = b;\n e.ha = c;\n e.kd = 1;\n b = [0];\n x(null != e);\n a = Ad(e.data, e.w, e.ha, null, null, null, b, null, e);\n (0 == a || 7 == a) && b[0] && (a = 4);\n b = a;\n if (0 == b) {\n x(null != g);\n d.data = e.data;\n d.w = e.w + e.offset;\n d.ha = e.ha - e.offset;\n d.put = kc;\n d.ac = gc;\n d.bc = lc;\n d.ma = g;\n if (e.xa) {\n a = Bc();\n if (null == a) {\n g = 1;\n break b;\n }\n if (te(a, d)) {\n b = Cd(d.width, d.height, g.Oa, g.ba);\n if ((d = 0 == b)) {\n c: {\n d = a;\n d: for (;;) {\n if (null == d) {\n d = 0;\n break c;\n }\n x(null != d.s.yc);\n x(null != d.s.Ya);\n x(0 < d.s.Wb);\n c = d.l;\n x(null != c);\n e = c.ma;\n x(null != e);\n if (0 != d.xb) {\n d.ca = e.ba;\n d.tb = e.tb;\n x(null != d.ca);\n if (!hc(e.Oa, c, Va)) {\n d.a = 2;\n break d;\n }\n if (!Ec(d, c.width)) break d;\n if (c.da) break d;\n (c.da || hb(d.ca.S)) && Aa();\n 11 > d.ca.S ||\n (alert(\"todo:WebPInitConvertARGBToYUV\"),\n null != d.ca.f.kb.F && Aa());\n if (\n d.Pb &&\n 0 < d.s.ua &&\n null == d.s.vb.X &&\n !Zb(d.s.vb, d.s.Wa.Xa)\n ) {\n d.a = 1;\n break d;\n }\n d.xb = 0;\n }\n if (!Jb(d, d.V, d.Ba, d.c, d.i, c.o, ge)) break d;\n e.Dc = d.Ma;\n d = 1;\n break c;\n }\n x(0 != d.a);\n d = 0;\n }\n d = !d;\n }\n d && (b = a.a);\n } else b = a.a;\n } else {\n a = new Ce();\n if (null == a) {\n g = 1;\n break b;\n }\n a.Fa = e.na;\n a.P = e.P;\n a.qc = e.Sa;\n if (Kc(a, d)) {\n if (((b = Cd(d.width, d.height, g.Oa, g.ba)), 0 == b)) {\n a.Aa = 0;\n c = g.Oa;\n e = a;\n x(null != e);\n if (null != c) {\n k = c.Md;\n k = 0 > k ? 0 : 100 < k ? 255 : (255 * k) / 100;\n if (0 < k) {\n for (l = m = 0; 4 > l; ++l)\n (n = e.pb[l]),\n 12 > n.lc &&\n (n.ia = (k * Qf[0 > n.lc ? 0 : n.lc]) >> 3),\n (m |= n.ia);\n m && (alert(\"todo:VP8InitRandom\"), (e.ia = 1));\n }\n e.Ga = c.Id;\n 100 < e.Ga ? (e.Ga = 100) : 0 > e.Ga && (e.Ga = 0);\n }\n Me(a, d) || (b = a.a);\n }\n } else b = a.a;\n }\n 0 == b && null != g.Oa && g.Oa.fd && (b = Bd(g.ba));\n }\n g = b;\n }\n f = 0 != g ? null : 11 > f ? h.f.RGBA.eb : h.f.kb.y;\n } else f = null;\n return f;\n };\n var Dd = [3, 4, 3, 4, 4, 2, 2, 4, 4, 4, 2, 1, 1];\n };\n new _WebPDecoder();\n\n /** @license\n * Copyright (c) 2017 Dominik Homberger\n\nPermission 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\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE 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\nhttps://webpjs.appspot.com\nWebPRiffParser dominikhlbg@gmail.com\n*/\n\n function memcmp(data, data_off, str, size) {\n for (var i = 0; i < size; i++)\n if (data[data_off + i] != str.charCodeAt(i)) return true;\n return false;\n }\n\n function GetTag(data, data_off) {\n var str = \"\";\n for (var i = 0; i < 4; i++) str += String.fromCharCode(data[data_off++]);\n return str;\n }\n\n function GetLE16(data, data_off) {\n return (data[data_off + 0] << 0) | (data[data_off + 1] << 8);\n }\n\n function GetLE24(data, data_off) {\n return (\n ((data[data_off + 0] << 0) |\n (data[data_off + 1] << 8) |\n (data[data_off + 2] << 16)) >>>\n 0\n );\n }\n\n function GetLE32(data, data_off) {\n return (\n ((data[data_off + 0] << 0) |\n (data[data_off + 1] << 8) |\n (data[data_off + 2] << 16) |\n (data[data_off + 3] << 24)) >>>\n 0\n );\n }\n\n function WebPRiffParser(src, src_off) {\n var imagearray = {};\n var i = 0;\n var alpha_chunk = false;\n var alpha_size = 0;\n var alpha_offset = 0;\n imagearray[\"frames\"] = [];\n if (memcmp(src, src_off, \"RIFF\", 4)) return;\n src_off += 4;\n var riff_size = GetLE32(src, src_off) + 8;\n src_off += 8;\n\n while (src_off < src.length) {\n var fourcc = GetTag(src, src_off);\n src_off += 4;\n\n var payload_size = GetLE32(src, src_off);\n src_off += 4;\n var payload_size_padded = payload_size + (payload_size & 1);\n\n switch (fourcc) {\n case \"VP8 \":\n case \"VP8L\":\n if (typeof imagearray[\"frames\"][i] === \"undefined\")\n imagearray[\"frames\"][i] = {};\n var obj = imagearray[\"frames\"][i];\n var height = [0];\n var width = [0];\n obj[\"src_off\"] = alpha_chunk ? alpha_offset : src_off - 8;\n obj[\"src_size\"] = alpha_size + payload_size + 8;\n //var rgba = webpdecoder.WebPDecodeRGBA(src,(alpha_chunk?alpha_offset:src_off-8),alpha_size+payload_size+8,width,height);\n //imagearray[i]={'rgba':rgba,'width':width[0],'height':height[0]};\n i++;\n if (alpha_chunk) {\n alpha_chunk = false;\n alpha_size = 0;\n alpha_offset = 0;\n }\n break;\n case \"VP8X\":\n var obj = (imagearray[\"header\"] = {});\n var feature_flags = (obj[\"feature_flags\"] = src[src_off]);\n var src_off_ = src_off + 4;\n var canvas_width = (obj[\"canvas_width\"] = 1 + GetLE24(src, src_off_));\n src_off_ += 3;\n var canvas_height = (obj[\"canvas_height\"] =\n 1 + GetLE24(src, src_off_));\n src_off_ += 3;\n break;\n case \"ALPH\":\n alpha_chunk = true;\n alpha_size = payload_size_padded + 8;\n alpha_offset = src_off - 8;\n break;\n\n case \"ANIM\":\n var obj = imagearray[\"header\"];\n var bgcolor = (obj[\"bgcolor\"] = GetLE32(src, src_off));\n src_off_ = src_off + 4;\n\n var loop_count = (obj[\"loop_count\"] = GetLE16(src, src_off_));\n src_off_ += 2;\n break;\n case \"ANMF\":\n var offset_x = 0,\n offset_y = 0,\n width = 0,\n height = 0,\n duration = 0,\n blend = 0,\n dispose = 0,\n temp = 0;\n var obj = (imagearray[\"frames\"][i] = {});\n obj[\"offset_x\"] = offset_x = 2 * GetLE24(src, src_off);\n src_off += 3;\n obj[\"offset_y\"] = offset_y = 2 * GetLE24(src, src_off);\n src_off += 3;\n obj[\"width\"] = width = 1 + GetLE24(src, src_off);\n src_off += 3;\n obj[\"height\"] = height = 1 + GetLE24(src, src_off);\n src_off += 3;\n obj[\"duration\"] = duration = GetLE24(src, src_off);\n src_off += 3;\n temp = src[src_off++];\n obj[\"dispose\"] = dispose = temp & 1;\n obj[\"blend\"] = blend = (temp >> 1) & 1;\n break;\n default:\n }\n if (fourcc != \"ANMF\") src_off += payload_size_padded;\n }\n return imagearray;\n }\n\n var height = [0];\n var width = [0];\n var pixels = [];\n var webpdecoder = new _WebPDecoder();\n\n var response = imageData;\n var imagearray = WebPRiffParser(response, 0);\n imagearray[\"response\"] = response;\n imagearray[\"rgbaoutput\"] = true;\n imagearray[\"dataurl\"] = false;\n\n var header = imagearray[\"header\"] ? imagearray[\"header\"] : null;\n var frames = imagearray[\"frames\"] ? imagearray[\"frames\"] : null;\n\n if (header) {\n header[\"loop_counter\"] = header[\"loop_count\"];\n height = [header[\"canvas_height\"]];\n width = [header[\"canvas_width\"]];\n\n var blend = false;\n for (var f = 0; f < frames.length; f++)\n if (frames[f][\"blend\"] == 0) {\n blend = true;\n break;\n }\n }\n\n var frame = frames[0];\n var rgba = webpdecoder.WebPDecodeRGBA(\n response,\n frame[\"src_off\"],\n frame[\"src_size\"],\n width,\n height\n );\n frame[\"rgba\"] = rgba;\n frame[\"imgwidth\"] = width[0];\n frame[\"imgheight\"] = height[0];\n\n for (var i = 0; i < width[0] * height[0] * 4; i++) {\n pixels[i] = rgba[i];\n }\n\n this.width = width;\n this.height = height;\n this.data = pixels;\n return this;\n}\n\nWebPDecoder.prototype.getData = function() {\n return this.data;\n};\n\nexport { WebPDecoder };\n","/**\n * @license\n *\n * Copyright (c) 2014 James Robb, https://github.com/jamesbrobb\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { zlibSync } from \"../libs/fflate.js\";\nimport { PNG } from \"../libs/png.js\";\n\n/**\n * jsPDF PNG PlugIn\n * @name png_support\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n /*\n * @see http://www.w3.org/TR/PNG-Chunks.html\n *\n Color Allowed Interpretation\n Type Bit Depths\n\n 0 1,2,4,8,16 Each pixel is a grayscale sample.\n\n 2 8,16 Each pixel is an R,G,B triple.\n\n 3 1,2,4,8 Each pixel is a palette index;\n a PLTE chunk must appear.\n\n 4 8,16 Each pixel is a grayscale sample,\n followed by an alpha sample.\n\n 6 8,16 Each pixel is an R,G,B triple,\n followed by an alpha sample.\n */\n\n /*\n * PNG filter method types\n *\n * @see http://www.w3.org/TR/PNG-Filters.html\n * @see http://www.libpng.org/pub/png/book/chapter09.html\n *\n * This is what the value 'Predictor' in decode params relates to\n *\n * 15 is \"optimal prediction\", which means the prediction algorithm can change from line to line.\n * In that case, you actually have to read the first byte off each line for the prediction algorthim (which should be 0-4, corresponding to PDF 10-14) and select the appropriate unprediction algorithm based on that byte.\n *\n 0 None\n 1 Sub\n 2 Up\n 3 Average\n 4 Paeth\n */\n\n var canCompress = function(value) {\n return value !== jsPDFAPI.image_compression.NONE && hasCompressionJS();\n };\n\n var hasCompressionJS = function() {\n return typeof zlibSync === \"function\";\n };\n var compressBytes = function(bytes, lineLength, colorsPerPixel, compression) {\n var level = 4;\n var filter_method = filterUp;\n\n switch (compression) {\n case jsPDFAPI.image_compression.FAST:\n level = 1;\n filter_method = filterSub;\n break;\n\n case jsPDFAPI.image_compression.MEDIUM:\n level = 6;\n filter_method = filterAverage;\n break;\n\n case jsPDFAPI.image_compression.SLOW:\n level = 9;\n filter_method = filterPaeth;\n break;\n }\n\n bytes = applyPngFilterMethod(\n bytes,\n lineLength,\n colorsPerPixel,\n filter_method\n );\n var dat = zlibSync(bytes, { level: level });\n return jsPDFAPI.__addimage__.arrayBufferToBinaryString(dat);\n };\n\n var applyPngFilterMethod = function(\n bytes,\n lineLength,\n colorsPerPixel,\n filter_method\n ) {\n var lines = bytes.length / lineLength,\n result = new Uint8Array(bytes.length + lines),\n filter_methods = getFilterMethods(),\n line,\n prevLine,\n offset;\n\n for (var i = 0; i < lines; i += 1) {\n offset = i * lineLength;\n line = bytes.subarray(offset, offset + lineLength);\n\n if (filter_method) {\n result.set(filter_method(line, colorsPerPixel, prevLine), offset + i);\n } else {\n var len = filter_methods.length,\n results = [];\n\n for (var j; j < len; j += 1) {\n results[j] = filter_methods[j](line, colorsPerPixel, prevLine);\n }\n\n var ind = getIndexOfSmallestSum(results.concat());\n\n result.set(results[ind], offset + i);\n }\n\n prevLine = line;\n }\n\n return result;\n };\n\n var filterNone = function(line) {\n /*var result = new Uint8Array(line.length + 1);\n result[0] = 0;\n result.set(line, 1);*/\n\n var result = Array.apply([], line);\n result.unshift(0);\n\n return result;\n };\n\n var filterSub = function(line, colorsPerPixel) {\n var result = [],\n len = line.length,\n left;\n\n result[0] = 1;\n\n for (var i = 0; i < len; i += 1) {\n left = line[i - colorsPerPixel] || 0;\n result[i + 1] = (line[i] - left + 0x0100) & 0xff;\n }\n\n return result;\n };\n\n var filterUp = function(line, colorsPerPixel, prevLine) {\n var result = [],\n len = line.length,\n up;\n\n result[0] = 2;\n\n for (var i = 0; i < len; i += 1) {\n up = (prevLine && prevLine[i]) || 0;\n result[i + 1] = (line[i] - up + 0x0100) & 0xff;\n }\n\n return result;\n };\n\n var filterAverage = function(line, colorsPerPixel, prevLine) {\n var result = [],\n len = line.length,\n left,\n up;\n\n result[0] = 3;\n\n for (var i = 0; i < len; i += 1) {\n left = line[i - colorsPerPixel] || 0;\n up = (prevLine && prevLine[i]) || 0;\n result[i + 1] = (line[i] + 0x0100 - ((left + up) >>> 1)) & 0xff;\n }\n\n return result;\n };\n\n var filterPaeth = function(line, colorsPerPixel, prevLine) {\n var result = [],\n len = line.length,\n left,\n up,\n upLeft,\n paeth;\n\n result[0] = 4;\n\n for (var i = 0; i < len; i += 1) {\n left = line[i - colorsPerPixel] || 0;\n up = (prevLine && prevLine[i]) || 0;\n upLeft = (prevLine && prevLine[i - colorsPerPixel]) || 0;\n paeth = paethPredictor(left, up, upLeft);\n result[i + 1] = (line[i] - paeth + 0x0100) & 0xff;\n }\n\n return result;\n };\n\n var paethPredictor = function(left, up, upLeft) {\n if (left === up && up === upLeft) {\n return left;\n }\n var pLeft = Math.abs(up - upLeft),\n pUp = Math.abs(left - upLeft),\n pUpLeft = Math.abs(left + up - upLeft - upLeft);\n return pLeft <= pUp && pLeft <= pUpLeft\n ? left\n : pUp <= pUpLeft\n ? up\n : upLeft;\n };\n\n var getFilterMethods = function() {\n return [filterNone, filterSub, filterUp, filterAverage, filterPaeth];\n };\n\n var getIndexOfSmallestSum = function(arrays) {\n var sum = arrays.map(function(value) {\n return value.reduce(function(pv, cv) {\n return pv + Math.abs(cv);\n }, 0);\n });\n return sum.indexOf(Math.min.apply(null, sum));\n };\n\n var getPredictorFromCompression = function(compression) {\n var predictor;\n switch (compression) {\n case jsPDFAPI.image_compression.FAST:\n predictor = 11;\n break;\n\n case jsPDFAPI.image_compression.MEDIUM:\n predictor = 13;\n break;\n\n case jsPDFAPI.image_compression.SLOW:\n predictor = 14;\n break;\n\n default:\n predictor = 12;\n break;\n }\n return predictor;\n };\n\n /**\n * @name processPNG\n * @function\n * @ignore\n */\n jsPDFAPI.processPNG = function(imageData, index, alias, compression) {\n \"use strict\";\n\n var colorSpace,\n filter = this.decode.FLATE_DECODE,\n bitsPerComponent,\n image,\n decodeParameters = \"\",\n trns,\n colors,\n pal,\n smask,\n pixels,\n len,\n alphaData,\n imgData,\n hasColors,\n pixel,\n i,\n n;\n\n if (this.__addimage__.isArrayBuffer(imageData))\n imageData = new Uint8Array(imageData);\n\n if (this.__addimage__.isArrayBufferView(imageData)) {\n image = new PNG(imageData);\n imageData = image.imgData;\n bitsPerComponent = image.bits;\n colorSpace = image.colorSpace;\n colors = image.colors;\n\n /*\n * colorType 6 - Each pixel is an R,G,B triple, followed by an alpha sample.\n *\n * colorType 4 - Each pixel is a grayscale sample, followed by an alpha sample.\n *\n * Extract alpha to create two separate images, using the alpha as a sMask\n */\n if ([4, 6].indexOf(image.colorType) !== -1) {\n /*\n * processes 8 bit RGBA and grayscale + alpha images\n */\n if (image.bits === 8) {\n pixels =\n image.pixelBitlength == 32\n ? new Uint32Array(image.decodePixels().buffer)\n : image.pixelBitlength == 16\n ? new Uint16Array(image.decodePixels().buffer)\n : new Uint8Array(image.decodePixels().buffer);\n len = pixels.length;\n imgData = new Uint8Array(len * image.colors);\n alphaData = new Uint8Array(len);\n var pDiff = image.pixelBitlength - image.bits;\n i = 0;\n n = 0;\n var pbl;\n\n for (; i < len; i++) {\n pixel = pixels[i];\n pbl = 0;\n\n while (pbl < pDiff) {\n imgData[n++] = (pixel >>> pbl) & 0xff;\n pbl = pbl + image.bits;\n }\n\n alphaData[i] = (pixel >>> pbl) & 0xff;\n }\n }\n\n /*\n * processes 16 bit RGBA and grayscale + alpha images\n */\n if (image.bits === 16) {\n pixels = new Uint32Array(image.decodePixels().buffer);\n len = pixels.length;\n imgData = new Uint8Array(\n len * (32 / image.pixelBitlength) * image.colors\n );\n alphaData = new Uint8Array(len * (32 / image.pixelBitlength));\n hasColors = image.colors > 1;\n i = 0;\n n = 0;\n var a = 0;\n\n while (i < len) {\n pixel = pixels[i++];\n\n imgData[n++] = (pixel >>> 0) & 0xff;\n\n if (hasColors) {\n imgData[n++] = (pixel >>> 16) & 0xff;\n\n pixel = pixels[i++];\n imgData[n++] = (pixel >>> 0) & 0xff;\n }\n\n alphaData[a++] = (pixel >>> 16) & 0xff;\n }\n bitsPerComponent = 8;\n }\n\n if (canCompress(compression)) {\n imageData = compressBytes(\n imgData,\n image.width * image.colors,\n image.colors,\n compression\n );\n smask = compressBytes(alphaData, image.width, 1, compression);\n } else {\n imageData = imgData;\n smask = alphaData;\n filter = undefined;\n }\n }\n\n /*\n * Indexed png. Each pixel is a palette index.\n */\n if (image.colorType === 3) {\n colorSpace = this.color_spaces.INDEXED;\n pal = image.palette;\n\n if (image.transparency.indexed) {\n var trans = image.transparency.indexed;\n var total = 0;\n i = 0;\n len = trans.length;\n\n for (; i < len; ++i) {\n total += trans[i];\n }\n\n total = total / 255;\n\n /*\n * a single color is specified as 100% transparent (0),\n * so we set trns to use a /Mask with that index\n */\n if (total === len - 1 && trans.indexOf(0) !== -1) {\n trns = [trans.indexOf(0)];\n\n /*\n * there's more than one colour within the palette that specifies\n * a transparency value less than 255, so we unroll the pixels to create an image sMask\n */\n } else if (total !== len) {\n pixels = image.decodePixels();\n alphaData = new Uint8Array(pixels.length);\n i = 0;\n len = pixels.length;\n\n for (; i < len; i++) {\n alphaData[i] = trans[pixels[i]];\n }\n\n smask = compressBytes(alphaData, image.width, 1);\n }\n }\n }\n\n var predictor = getPredictorFromCompression(compression);\n\n if (filter === this.decode.FLATE_DECODE) {\n decodeParameters = \"/Predictor \" + predictor + \" \";\n }\n decodeParameters +=\n \"/Colors \" +\n colors +\n \" /BitsPerComponent \" +\n bitsPerComponent +\n \" /Columns \" +\n image.width;\n\n if (\n this.__addimage__.isArrayBuffer(imageData) ||\n this.__addimage__.isArrayBufferView(imageData)\n ) {\n imageData = this.__addimage__.arrayBufferToBinaryString(imageData);\n }\n\n if (\n (smask && this.__addimage__.isArrayBuffer(smask)) ||\n this.__addimage__.isArrayBufferView(smask)\n ) {\n smask = this.__addimage__.arrayBufferToBinaryString(smask);\n }\n\n return {\n alias: alias,\n data: imageData,\n index: index,\n filter: filter,\n decodeParameters: decodeParameters,\n transparency: trns,\n palette: pal,\n sMask: smask,\n predictor: predictor,\n width: image.width,\n height: image.height,\n bitsPerComponent: bitsPerComponent,\n colorSpace: colorSpace\n };\n }\n };\n})(jsPDF.API);\n","/**\n * @license\n * Copyright (c) 2017 Aras Abbasi\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { GifReader } from \"../libs/omggif.js\";\nimport { JPEGEncoder } from \"../libs/JPEGEncoder.js\";\n\n/**\n * jsPDF Gif Support PlugIn\n *\n * @name gif_support\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n jsPDFAPI.processGIF89A = function(imageData, index, alias, compression) {\n var reader = new GifReader(imageData);\n var width = reader.width,\n height = reader.height;\n var qu = 100;\n var pixels = [];\n\n reader.decodeAndBlitFrameRGBA(0, pixels);\n var rawImageData = {\n data: pixels,\n width: width,\n height: height\n };\n\n var encoder = new JPEGEncoder(qu);\n var data = encoder.encode(rawImageData, qu);\n return jsPDFAPI.processJPEG.call(this, data, index, alias, compression);\n };\n\n jsPDFAPI.processGIF87A = jsPDFAPI.processGIF89A;\n})(jsPDF.API);\n","import { JPEGEncoder } from \"../libs/JPEGEncoder.js\";\nimport { BmpDecoder } from \"../libs/BMPDecoder.js\";\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * @license\n * Copyright (c) 2018 Aras Abbasi\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\n/**\n * jsPDF bmp Support PlugIn\n * @name bmp_support\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n jsPDFAPI.processBMP = function(imageData, index, alias, compression) {\n var reader = new BmpDecoder(imageData, false);\n var width = reader.width,\n height = reader.height;\n var qu = 100;\n var pixels = reader.getData();\n\n var rawImageData = {\n data: pixels,\n width: width,\n height: height\n };\n\n var encoder = new JPEGEncoder(qu);\n var data = encoder.encode(rawImageData, qu);\n return jsPDFAPI.processJPEG.call(this, data, index, alias, compression);\n };\n})(jsPDF.API);\n","/**\n * @license\n * Copyright (c) 2019 Aras Abbasi\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { JPEGEncoder } from \"../libs/JPEGEncoder.js\";\nimport { WebPDecoder } from \"../libs/WebPDecoder.js\";\n\n/**\n * jsPDF webp Support PlugIn\n *\n * @name webp_support\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n jsPDFAPI.processWEBP = function(imageData, index, alias, compression) {\n var reader = new WebPDecoder(imageData, false);\n var width = reader.width,\n height = reader.height;\n var qu = 100;\n var pixels = reader.getData();\n\n var rawImageData = {\n data: pixels,\n width: width,\n height: height\n };\n\n var encoder = new JPEGEncoder(qu);\n var data = encoder.encode(rawImageData, qu);\n return jsPDFAPI.processJPEG.call(this, data, index, alias, compression);\n };\n})(jsPDF.API);\n","/**\n * @license\n *\n * Copyright (c) 2021 Antti Palola, https://github.com/Pantura\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF RGBA array PlugIn\n * @name rgba_support\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n /**\n * @name processRGBA\n * @function\n *\n * Process RGBA Array. This is a one-dimension array with pixel data [red, green, blue, alpha, red, green, ...].\n * RGBA array data can be obtained from DOM canvas getImageData.\n * @ignore\n */\n jsPDFAPI.processRGBA = function(imageData, index, alias) {\n \"use strict\";\n\n var imagePixels = imageData.data;\n var length = imagePixels.length;\n // jsPDF takes alpha data separately so extract that.\n var rgbOut = new Uint8Array((length / 4) * 3);\n var alphaOut = new Uint8Array(length / 4);\n var outIndex = 0;\n var alphaIndex = 0;\n\n for (var i = 0; i < length; i += 4) {\n var r = imagePixels[i];\n var g = imagePixels[i + 1];\n var b = imagePixels[i + 2];\n var alpha = imagePixels[i + 3];\n rgbOut[outIndex++] = r;\n rgbOut[outIndex++] = g;\n rgbOut[outIndex++] = b;\n alphaOut[alphaIndex++] = alpha;\n }\n\n var rgbData = this.__addimage__.arrayBufferToBinaryString(rgbOut);\n var alphaData = this.__addimage__.arrayBufferToBinaryString(alphaOut);\n\n return {\n alpha: alphaData,\n data: rgbData,\n index: index,\n alias: alias,\n colorSpace: \"DeviceRGB\",\n bitsPerComponent: 8,\n width: imageData.width,\n height: imageData.height\n };\n };\n})(jsPDF.API);\n","/**\n * @license\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF setLanguage Plugin\n *\n * @name setLanguage\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n /**\n * Add Language Tag to the generated PDF\n *\n * @name setLanguage\n * @function\n * @param {string} langCode The Language code as ISO-639-1 (e.g. 'en') or as country language code (e.g. 'en-GB').\n * @returns {jsPDF}\n * @example\n * var doc = new jsPDF()\n * doc.text(10, 10, 'This is a test')\n * doc.setLanguage(\"en-US\")\n * doc.save('english.pdf')\n */\n jsPDFAPI.setLanguage = function(langCode) {\n \"use strict\";\n\n var langCodes = {\n af: \"Afrikaans\",\n sq: \"Albanian\",\n ar: \"Arabic (Standard)\",\n \"ar-DZ\": \"Arabic (Algeria)\",\n \"ar-BH\": \"Arabic (Bahrain)\",\n \"ar-EG\": \"Arabic (Egypt)\",\n \"ar-IQ\": \"Arabic (Iraq)\",\n \"ar-JO\": \"Arabic (Jordan)\",\n \"ar-KW\": \"Arabic (Kuwait)\",\n \"ar-LB\": \"Arabic (Lebanon)\",\n \"ar-LY\": \"Arabic (Libya)\",\n \"ar-MA\": \"Arabic (Morocco)\",\n \"ar-OM\": \"Arabic (Oman)\",\n \"ar-QA\": \"Arabic (Qatar)\",\n \"ar-SA\": \"Arabic (Saudi Arabia)\",\n \"ar-SY\": \"Arabic (Syria)\",\n \"ar-TN\": \"Arabic (Tunisia)\",\n \"ar-AE\": \"Arabic (U.A.E.)\",\n \"ar-YE\": \"Arabic (Yemen)\",\n an: \"Aragonese\",\n hy: \"Armenian\",\n as: \"Assamese\",\n ast: \"Asturian\",\n az: \"Azerbaijani\",\n eu: \"Basque\",\n be: \"Belarusian\",\n bn: \"Bengali\",\n bs: \"Bosnian\",\n br: \"Breton\",\n bg: \"Bulgarian\",\n my: \"Burmese\",\n ca: \"Catalan\",\n ch: \"Chamorro\",\n ce: \"Chechen\",\n zh: \"Chinese\",\n \"zh-HK\": \"Chinese (Hong Kong)\",\n \"zh-CN\": \"Chinese (PRC)\",\n \"zh-SG\": \"Chinese (Singapore)\",\n \"zh-TW\": \"Chinese (Taiwan)\",\n cv: \"Chuvash\",\n co: \"Corsican\",\n cr: \"Cree\",\n hr: \"Croatian\",\n cs: \"Czech\",\n da: \"Danish\",\n nl: \"Dutch (Standard)\",\n \"nl-BE\": \"Dutch (Belgian)\",\n en: \"English\",\n \"en-AU\": \"English (Australia)\",\n \"en-BZ\": \"English (Belize)\",\n \"en-CA\": \"English (Canada)\",\n \"en-IE\": \"English (Ireland)\",\n \"en-JM\": \"English (Jamaica)\",\n \"en-NZ\": \"English (New Zealand)\",\n \"en-PH\": \"English (Philippines)\",\n \"en-ZA\": \"English (South Africa)\",\n \"en-TT\": \"English (Trinidad & Tobago)\",\n \"en-GB\": \"English (United Kingdom)\",\n \"en-US\": \"English (United States)\",\n \"en-ZW\": \"English (Zimbabwe)\",\n eo: \"Esperanto\",\n et: \"Estonian\",\n fo: \"Faeroese\",\n fj: \"Fijian\",\n fi: \"Finnish\",\n fr: \"French (Standard)\",\n \"fr-BE\": \"French (Belgium)\",\n \"fr-CA\": \"French (Canada)\",\n \"fr-FR\": \"French (France)\",\n \"fr-LU\": \"French (Luxembourg)\",\n \"fr-MC\": \"French (Monaco)\",\n \"fr-CH\": \"French (Switzerland)\",\n fy: \"Frisian\",\n fur: \"Friulian\",\n gd: \"Gaelic (Scots)\",\n \"gd-IE\": \"Gaelic (Irish)\",\n gl: \"Galacian\",\n ka: \"Georgian\",\n de: \"German (Standard)\",\n \"de-AT\": \"German (Austria)\",\n \"de-DE\": \"German (Germany)\",\n \"de-LI\": \"German (Liechtenstein)\",\n \"de-LU\": \"German (Luxembourg)\",\n \"de-CH\": \"German (Switzerland)\",\n el: \"Greek\",\n gu: \"Gujurati\",\n ht: \"Haitian\",\n he: \"Hebrew\",\n hi: \"Hindi\",\n hu: \"Hungarian\",\n is: \"Icelandic\",\n id: \"Indonesian\",\n iu: \"Inuktitut\",\n ga: \"Irish\",\n it: \"Italian (Standard)\",\n \"it-CH\": \"Italian (Switzerland)\",\n ja: \"Japanese\",\n kn: \"Kannada\",\n ks: \"Kashmiri\",\n kk: \"Kazakh\",\n km: \"Khmer\",\n ky: \"Kirghiz\",\n tlh: \"Klingon\",\n ko: \"Korean\",\n \"ko-KP\": \"Korean (North Korea)\",\n \"ko-KR\": \"Korean (South Korea)\",\n la: \"Latin\",\n lv: \"Latvian\",\n lt: \"Lithuanian\",\n lb: \"Luxembourgish\",\n mk: \"North Macedonia\",\n ms: \"Malay\",\n ml: \"Malayalam\",\n mt: \"Maltese\",\n mi: \"Maori\",\n mr: \"Marathi\",\n mo: \"Moldavian\",\n nv: \"Navajo\",\n ng: \"Ndonga\",\n ne: \"Nepali\",\n no: \"Norwegian\",\n nb: \"Norwegian (Bokmal)\",\n nn: \"Norwegian (Nynorsk)\",\n oc: \"Occitan\",\n or: \"Oriya\",\n om: \"Oromo\",\n fa: \"Persian\",\n \"fa-IR\": \"Persian/Iran\",\n pl: \"Polish\",\n pt: \"Portuguese\",\n \"pt-BR\": \"Portuguese (Brazil)\",\n pa: \"Punjabi\",\n \"pa-IN\": \"Punjabi (India)\",\n \"pa-PK\": \"Punjabi (Pakistan)\",\n qu: \"Quechua\",\n rm: \"Rhaeto-Romanic\",\n ro: \"Romanian\",\n \"ro-MO\": \"Romanian (Moldavia)\",\n ru: \"Russian\",\n \"ru-MO\": \"Russian (Moldavia)\",\n sz: \"Sami (Lappish)\",\n sg: \"Sango\",\n sa: \"Sanskrit\",\n sc: \"Sardinian\",\n sd: \"Sindhi\",\n si: \"Singhalese\",\n sr: \"Serbian\",\n sk: \"Slovak\",\n sl: \"Slovenian\",\n so: \"Somani\",\n sb: \"Sorbian\",\n es: \"Spanish\",\n \"es-AR\": \"Spanish (Argentina)\",\n \"es-BO\": \"Spanish (Bolivia)\",\n \"es-CL\": \"Spanish (Chile)\",\n \"es-CO\": \"Spanish (Colombia)\",\n \"es-CR\": \"Spanish (Costa Rica)\",\n \"es-DO\": \"Spanish (Dominican Republic)\",\n \"es-EC\": \"Spanish (Ecuador)\",\n \"es-SV\": \"Spanish (El Salvador)\",\n \"es-GT\": \"Spanish (Guatemala)\",\n \"es-HN\": \"Spanish (Honduras)\",\n \"es-MX\": \"Spanish (Mexico)\",\n \"es-NI\": \"Spanish (Nicaragua)\",\n \"es-PA\": \"Spanish (Panama)\",\n \"es-PY\": \"Spanish (Paraguay)\",\n \"es-PE\": \"Spanish (Peru)\",\n \"es-PR\": \"Spanish (Puerto Rico)\",\n \"es-ES\": \"Spanish (Spain)\",\n \"es-UY\": \"Spanish (Uruguay)\",\n \"es-VE\": \"Spanish (Venezuela)\",\n sx: \"Sutu\",\n sw: \"Swahili\",\n sv: \"Swedish\",\n \"sv-FI\": \"Swedish (Finland)\",\n \"sv-SV\": \"Swedish (Sweden)\",\n ta: \"Tamil\",\n tt: \"Tatar\",\n te: \"Teluga\",\n th: \"Thai\",\n tig: \"Tigre\",\n ts: \"Tsonga\",\n tn: \"Tswana\",\n tr: \"Turkish\",\n tk: \"Turkmen\",\n uk: \"Ukrainian\",\n hsb: \"Upper Sorbian\",\n ur: \"Urdu\",\n ve: \"Venda\",\n vi: \"Vietnamese\",\n vo: \"Volapuk\",\n wa: \"Walloon\",\n cy: \"Welsh\",\n xh: \"Xhosa\",\n ji: \"Yiddish\",\n zu: \"Zulu\"\n };\n\n if (this.internal.languageSettings === undefined) {\n this.internal.languageSettings = {};\n this.internal.languageSettings.isSubscribed = false;\n }\n\n if (langCodes[langCode] !== undefined) {\n this.internal.languageSettings.languageCode = langCode;\n if (this.internal.languageSettings.isSubscribed === false) {\n this.internal.events.subscribe(\"putCatalog\", function() {\n this.internal.write(\n \"/Lang (\" + this.internal.languageSettings.languageCode + \")\"\n );\n });\n this.internal.languageSettings.isSubscribed = true;\n }\n }\n return this;\n };\n})(jsPDF.API);\n","/** @license\n jsPDF standard_fonts_metrics plugin\n * Copyright (c) 2012 Willow Systems Corporation, https://github.com/willowsystems\n * MIT license.\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n * \n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * This file adds the standard font metrics to jsPDF.\n *\n * Font metrics data is reprocessed derivative of contents of\n * \"Font Metrics for PDF Core 14 Fonts\" package, which exhibits the following copyright and license:\n *\n * Copyright (c) 1989, 1990, 1991, 1992, 1993, 1997 Adobe Systems Incorporated. All Rights Reserved.\n *\n * This file and the 14 PostScript(R) AFM files it accompanies may be used,\n * copied, and distributed for any purpose and without charge, with or without\n * modification, provided that all copyright notices are retained; that the AFM\n * files are not distributed without this file; that all modifications to this\n * file or any of the AFM files are prominently noted in the modified file(s);\n * and that this paragraph is not modified. Adobe Systems has no responsibility\n * or obligation to support the use of the AFM files.\n *\n * @name standard_fonts_metrics\n * @module\n */\n\n(function(API) {\n \"use strict\";\n API.__fontmetrics__ = API.__fontmetrics__ || {};\n\n var decoded = \"0123456789abcdef\",\n encoded = \"klmnopqrstuvwxyz\",\n mappingUncompress = {},\n mappingCompress = {};\n\n for (var i = 0; i < encoded.length; i++) {\n mappingUncompress[encoded[i]] = decoded[i];\n mappingCompress[decoded[i]] = encoded[i];\n }\n\n var hex = function(value) {\n return \"0x\" + parseInt(value, 10).toString(16);\n };\n\n var compress = (API.__fontmetrics__.compress = function(data) {\n var vals = [\"{\"];\n var value, keystring, valuestring, numberprefix;\n\n for (var key in data) {\n value = data[key];\n\n if (!isNaN(parseInt(key, 10))) {\n key = parseInt(key, 10);\n keystring = hex(key).slice(2);\n keystring =\n keystring.slice(0, -1) + mappingCompress[keystring.slice(-1)];\n } else {\n keystring = \"'\" + key + \"'\";\n }\n\n if (typeof value == \"number\") {\n if (value < 0) {\n valuestring = hex(value).slice(3);\n numberprefix = \"-\";\n } else {\n valuestring = hex(value).slice(2);\n numberprefix = \"\";\n }\n valuestring =\n numberprefix +\n valuestring.slice(0, -1) +\n mappingCompress[valuestring.slice(-1)];\n } else {\n if (typeof value === \"object\") {\n valuestring = compress(value);\n } else {\n throw new Error(\n \"Don't know what to do with value type \" + typeof value + \".\"\n );\n }\n }\n vals.push(keystring + valuestring);\n }\n vals.push(\"}\");\n return vals.join(\"\");\n });\n\n /**\n * Uncompresses data compressed into custom, base16-like format.\n *\n * @public\n * @function\n * @param\n * @returns {Type}\n */\n var uncompress = (API.__fontmetrics__.uncompress = function(data) {\n if (typeof data !== \"string\") {\n throw new Error(\"Invalid argument passed to uncompress.\");\n }\n\n var output = {},\n sign = 1,\n stringparts, // undef. will be [] in string mode\n activeobject = output,\n parentchain = [],\n parent_key_pair,\n keyparts = \"\",\n valueparts = \"\",\n key, // undef. will be Truthy when Key is resolved.\n datalen = data.length - 1, // stripping ending }\n ch;\n\n for (var i = 1; i < datalen; i += 1) {\n // - { } ' are special.\n\n ch = data[i];\n\n if (ch == \"'\") {\n if (stringparts) {\n // end of string mode\n key = stringparts.join(\"\");\n stringparts = undefined;\n } else {\n // start of string mode\n stringparts = [];\n }\n } else if (stringparts) {\n stringparts.push(ch);\n } else if (ch == \"{\") {\n // start of object\n parentchain.push([activeobject, key]);\n activeobject = {};\n key = undefined;\n } else if (ch == \"}\") {\n // end of object\n parent_key_pair = parentchain.pop();\n parent_key_pair[0][parent_key_pair[1]] = activeobject;\n key = undefined;\n activeobject = parent_key_pair[0];\n } else if (ch == \"-\") {\n sign = -1;\n } else {\n // must be number\n if (key === undefined) {\n if (mappingUncompress.hasOwnProperty(ch)) {\n keyparts += mappingUncompress[ch];\n key = parseInt(keyparts, 16) * sign;\n sign = +1;\n keyparts = \"\";\n } else {\n keyparts += ch;\n }\n } else {\n if (mappingUncompress.hasOwnProperty(ch)) {\n valueparts += mappingUncompress[ch];\n activeobject[key] = parseInt(valueparts, 16) * sign;\n sign = +1;\n key = undefined;\n valueparts = \"\";\n } else {\n valueparts += ch;\n }\n }\n }\n }\n return output;\n });\n\n // encoding = 'Unicode'\n // NOT UTF8, NOT UTF16BE/LE, NOT UCS2BE/LE. NO clever BOM behavior\n // Actual 16bit char codes used.\n // no multi-byte logic here\n\n // Unicode characters to WinAnsiEncoding:\n // {402: 131, 8211: 150, 8212: 151, 8216: 145, 8217: 146, 8218: 130, 8220: 147, 8221: 148, 8222: 132, 8224: 134, 8225: 135, 8226: 149, 8230: 133, 8364: 128, 8240:137, 8249: 139, 8250: 155, 710: 136, 8482: 153, 338: 140, 339: 156, 732: 152, 352: 138, 353: 154, 376: 159, 381: 142, 382: 158}\n // as you can see, all Unicode chars are outside of 0-255 range. No char code conflicts.\n // this means that you can give Win cp1252 encoded strings to jsPDF for rendering directly\n // as well as give strings with some (supported by these fonts) Unicode characters and\n // these will be mapped to win cp1252\n // for example, you can send char code (cp1252) 0x80 or (unicode) 0x20AC, getting \"Euro\" glyph displayed in both cases.\n\n var encodingBlock = {\n codePages: [\"WinAnsiEncoding\"],\n WinAnsiEncoding: uncompress(\n \"{19m8n201n9q201o9r201s9l201t9m201u8m201w9n201x9o201y8o202k8q202l8r202m9p202q8p20aw8k203k8t203t8v203u9v2cq8s212m9t15m8w15n9w2dw9s16k8u16l9u17s9z17x8y17y9y}\"\n )\n };\n var encodings = {\n Unicode: {\n Courier: encodingBlock,\n \"Courier-Bold\": encodingBlock,\n \"Courier-BoldOblique\": encodingBlock,\n \"Courier-Oblique\": encodingBlock,\n Helvetica: encodingBlock,\n \"Helvetica-Bold\": encodingBlock,\n \"Helvetica-BoldOblique\": encodingBlock,\n \"Helvetica-Oblique\": encodingBlock,\n \"Times-Roman\": encodingBlock,\n \"Times-Bold\": encodingBlock,\n \"Times-BoldItalic\": encodingBlock,\n \"Times-Italic\": encodingBlock\n //\t, 'Symbol'\n //\t, 'ZapfDingbats'\n }\n };\n\n var fontMetrics = {\n Unicode: {\n // all sizing numbers are n/fontMetricsFractionOf = one font size unit\n // this means that if fontMetricsFractionOf = 1000, and letter A's width is 476, it's\n // width is 476/1000 or 47.6% of its height (regardless of font size)\n // At this time this value applies to \"widths\" and \"kerning\" numbers.\n\n // char code 0 represents \"default\" (average) width - use it for chars missing in this table.\n // key 'fof' represents the \"fontMetricsFractionOf\" value\n\n \"Courier-Oblique\": uncompress(\n \"{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}\"\n ),\n \"Times-BoldItalic\": uncompress(\n \"{'widths'{k3o2q4ycx2r201n3m201o6o201s2l201t2l201u2l201w3m201x3m201y3m2k1t2l2r202m2n2n3m2o3m2p5n202q6o2r1w2s2l2t2l2u3m2v3t2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w3t3x3t3y3t3z3m4k5n4l4m4m4m4n4m4o4s4p4m4q4m4r4s4s4y4t2r4u3m4v4m4w3x4x5t4y4s4z4s5k3x5l4s5m4m5n3r5o3x5p4s5q4m5r5t5s4m5t3x5u3x5v2l5w1w5x2l5y3t5z3m6k2l6l3m6m3m6n2w6o3m6p2w6q2l6r3m6s3r6t1w6u1w6v3m6w1w6x4y6y3r6z3m7k3m7l3m7m2r7n2r7o1w7p3r7q2w7r4m7s3m7t2w7u2r7v2n7w1q7x2n7y3t202l3mcl4mal2ram3man3mao3map3mar3mas2lat4uau1uav3maw3way4uaz2lbk2sbl3t'fof'6obo2lbp3tbq3mbr1tbs2lbu1ybv3mbz3mck4m202k3mcm4mcn4mco4mcp4mcq5ycr4mcs4mct4mcu4mcv4mcw2r2m3rcy2rcz2rdl4sdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek3mel3mem3men3meo3mep3meq4ser2wes2wet2weu2wev2wew1wex1wey1wez1wfl3rfm3mfn3mfo3mfp3mfq3mfr3tfs3mft3rfu3rfv3rfw3rfz2w203k6o212m6o2dw2l2cq2l3t3m3u2l17s3x19m3m}'kerning'{cl{4qu5kt5qt5rs17ss5ts}201s{201ss}201t{cks4lscmscnscoscpscls2wu2yu201ts}201x{2wu2yu}2k{201ts}2w{4qx5kx5ou5qx5rs17su5tu}2x{17su5tu5ou}2y{4qx5kx5ou5qx5rs17ss5ts}'fof'-6ofn{17sw5tw5ou5qw5rs}7t{cksclscmscnscoscps4ls}3u{17su5tu5os5qs}3v{17su5tu5os5qs}7p{17su5tu}ck{4qu5kt5qt5rs17ss5ts}4l{4qu5kt5qt5rs17ss5ts}cm{4qu5kt5qt5rs17ss5ts}cn{4qu5kt5qt5rs17ss5ts}co{4qu5kt5qt5rs17ss5ts}cp{4qu5kt5qt5rs17ss5ts}6l{4qu5ou5qw5rt17su5tu}5q{ckuclucmucnucoucpu4lu}5r{ckuclucmucnucoucpu4lu}7q{cksclscmscnscoscps4ls}6p{4qu5ou5qw5rt17sw5tw}ek{4qu5ou5qw5rt17su5tu}el{4qu5ou5qw5rt17su5tu}em{4qu5ou5qw5rt17su5tu}en{4qu5ou5qw5rt17su5tu}eo{4qu5ou5qw5rt17su5tu}ep{4qu5ou5qw5rt17su5tu}es{17ss5ts5qs4qu}et{4qu5ou5qw5rt17sw5tw}eu{4qu5ou5qw5rt17ss5ts}ev{17ss5ts5qs4qu}6z{17sw5tw5ou5qw5rs}fm{17sw5tw5ou5qw5rs}7n{201ts}fo{17sw5tw5ou5qw5rs}fp{17sw5tw5ou5qw5rs}fq{17sw5tw5ou5qw5rs}7r{cksclscmscnscoscps4ls}fs{17sw5tw5ou5qw5rs}ft{17su5tu}fu{17su5tu}fv{17su5tu}fw{17su5tu}fz{cksclscmscnscoscps4ls}}}\"\n ),\n \"Helvetica-Bold\": uncompress(\n \"{'widths'{k3s2q4scx1w201n3r201o6o201s1w201t1w201u1w201w3m201x3m201y3m2k1w2l2l202m2n2n3r2o3r2p5t202q6o2r1s2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v2l3w3u3x3u3y3u3z3x4k6l4l4s4m4s4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3r4v4s4w3x4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v2l5w1w5x2l5y3u5z3r6k2l6l3r6m3x6n3r6o3x6p3r6q2l6r3x6s3x6t1w6u1w6v3r6w1w6x5t6y3x6z3x7k3x7l3x7m2r7n3r7o2l7p3x7q3r7r4y7s3r7t3r7u3m7v2r7w1w7x2r7y3u202l3rcl4sal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3xbq3rbr1wbs2lbu2obv3rbz3xck4s202k3rcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw1w2m2zcy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3res3ret3reu3rev3rew1wex1wey1wez1wfl3xfm3xfn3xfo3xfp3xfq3xfr3ufs3xft3xfu3xfv3xfw3xfz3r203k6o212m6o2dw2l2cq2l3t3r3u2l17s4m19m3r}'kerning'{cl{4qs5ku5ot5qs17sv5tv}201t{2ww4wy2yw}201w{2ks}201x{2ww4wy2yw}2k{201ts201xs}2w{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}2x{5ow5qs}2y{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}'fof'-6o7p{17su5tu5ot}ck{4qs5ku5ot5qs17sv5tv}4l{4qs5ku5ot5qs17sv5tv}cm{4qs5ku5ot5qs17sv5tv}cn{4qs5ku5ot5qs17sv5tv}co{4qs5ku5ot5qs17sv5tv}cp{4qs5ku5ot5qs17sv5tv}6l{17st5tt5os}17s{2kwclvcmvcnvcovcpv4lv4wwckv}5o{2kucltcmtcntcotcpt4lt4wtckt}5q{2ksclscmscnscoscps4ls4wvcks}5r{2ks4ws}5t{2kwclvcmvcnvcovcpv4lv4wwckv}eo{17st5tt5os}fu{17su5tu5ot}6p{17ss5ts}ek{17st5tt5os}el{17st5tt5os}em{17st5tt5os}en{17st5tt5os}6o{201ts}ep{17st5tt5os}es{17ss5ts}et{17ss5ts}eu{17ss5ts}ev{17ss5ts}6z{17su5tu5os5qt}fm{17su5tu5os5qt}fn{17su5tu5os5qt}fo{17su5tu5os5qt}fp{17su5tu5os5qt}fq{17su5tu5os5qt}fs{17su5tu5os5qt}ft{17su5tu5ot}7m{5os}fv{17su5tu5ot}fw{17su5tu5ot}}}\"\n ),\n Courier: uncompress(\"{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}\"),\n \"Courier-BoldOblique\": uncompress(\n \"{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}\"\n ),\n \"Times-Bold\": uncompress(\n \"{'widths'{k3q2q5ncx2r201n3m201o6o201s2l201t2l201u2l201w3m201x3m201y3m2k1t2l2l202m2n2n3m2o3m2p6o202q6o2r1w2s2l2t2l2u3m2v3t2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w3t3x3t3y3t3z3m4k5x4l4s4m4m4n4s4o4s4p4m4q3x4r4y4s4y4t2r4u3m4v4y4w4m4x5y4y4s4z4y5k3x5l4y5m4s5n3r5o4m5p4s5q4s5r6o5s4s5t4s5u4m5v2l5w1w5x2l5y3u5z3m6k2l6l3m6m3r6n2w6o3r6p2w6q2l6r3m6s3r6t1w6u2l6v3r6w1w6x5n6y3r6z3m7k3r7l3r7m2w7n2r7o2l7p3r7q3m7r4s7s3m7t3m7u2w7v2r7w1q7x2r7y3o202l3mcl4sal2lam3man3mao3map3mar3mas2lat4uau1yav3maw3tay4uaz2lbk2sbl3t'fof'6obo2lbp3rbr1tbs2lbu2lbv3mbz3mck4s202k3mcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw2r2m3rcy2rcz2rdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3rek3mel3mem3men3meo3mep3meq4ser2wes2wet2weu2wev2wew1wex1wey1wez1wfl3rfm3mfn3mfo3mfp3mfq3mfr3tfs3mft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3m3u2l17s4s19m3m}'kerning'{cl{4qt5ks5ot5qy5rw17sv5tv}201t{cks4lscmscnscoscpscls4wv}2k{201ts}2w{4qu5ku7mu5os5qx5ru17su5tu}2x{17su5tu5ou5qs}2y{4qv5kv7mu5ot5qz5ru17su5tu}'fof'-6o7t{cksclscmscnscoscps4ls}3u{17su5tu5os5qu}3v{17su5tu5os5qu}fu{17su5tu5ou5qu}7p{17su5tu5ou5qu}ck{4qt5ks5ot5qy5rw17sv5tv}4l{4qt5ks5ot5qy5rw17sv5tv}cm{4qt5ks5ot5qy5rw17sv5tv}cn{4qt5ks5ot5qy5rw17sv5tv}co{4qt5ks5ot5qy5rw17sv5tv}cp{4qt5ks5ot5qy5rw17sv5tv}6l{17st5tt5ou5qu}17s{ckuclucmucnucoucpu4lu4wu}5o{ckuclucmucnucoucpu4lu4wu}5q{ckzclzcmzcnzcozcpz4lz4wu}5r{ckxclxcmxcnxcoxcpx4lx4wu}5t{ckuclucmucnucoucpu4lu4wu}7q{ckuclucmucnucoucpu4lu}6p{17sw5tw5ou5qu}ek{17st5tt5qu}el{17st5tt5ou5qu}em{17st5tt5qu}en{17st5tt5qu}eo{17st5tt5qu}ep{17st5tt5ou5qu}es{17ss5ts5qu}et{17sw5tw5ou5qu}eu{17sw5tw5ou5qu}ev{17ss5ts5qu}6z{17sw5tw5ou5qu5rs}fm{17sw5tw5ou5qu5rs}fn{17sw5tw5ou5qu5rs}fo{17sw5tw5ou5qu5rs}fp{17sw5tw5ou5qu5rs}fq{17sw5tw5ou5qu5rs}7r{cktcltcmtcntcotcpt4lt5os}fs{17sw5tw5ou5qu5rs}ft{17su5tu5ou5qu}7m{5os}fv{17su5tu5ou5qu}fw{17su5tu5ou5qu}fz{cksclscmscnscoscps4ls}}}\"\n ),\n Symbol: uncompress(\n \"{'widths'{k3uaw4r19m3m2k1t2l2l202m2y2n3m2p5n202q6o3k3m2s2l2t2l2v3r2w1t3m3m2y1t2z1wbk2sbl3r'fof'6o3n3m3o3m3p3m3q3m3r3m3s3m3t3m3u1w3v1w3w3r3x3r3y3r3z2wbp3t3l3m5v2l5x2l5z3m2q4yfr3r7v3k7w1o7x3k}'kerning'{'fof'-6o}}\"\n ),\n Helvetica: uncompress(\n \"{'widths'{k3p2q4mcx1w201n3r201o6o201s1q201t1q201u1q201w2l201x2l201y2l2k1w2l1w202m2n2n3r2o3r2p5t202q6o2r1n2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v1w3w3u3x3u3y3u3z3r4k6p4l4m4m4m4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3m4v4m4w3r4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v1w5w1w5x1w5y2z5z3r6k2l6l3r6m3r6n3m6o3r6p3r6q1w6r3r6s3r6t1q6u1q6v3m6w1q6x5n6y3r6z3r7k3r7l3r7m2l7n3m7o1w7p3r7q3m7r4s7s3m7t3m7u3m7v2l7w1u7x2l7y3u202l3rcl4mal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3rbr1wbs2lbu2obv3rbz3xck4m202k3rcm4mcn4mco4mcp4mcq6ocr4scs4mct4mcu4mcv4mcw1w2m2ncy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3mes3ret3reu3rev3rew1wex1wey1wez1wfl3rfm3rfn3rfo3rfp3rfq3rfr3ufs3xft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3r3u1w17s4m19m3r}'kerning'{5q{4wv}cl{4qs5kw5ow5qs17sv5tv}201t{2wu4w1k2yu}201x{2wu4wy2yu}17s{2ktclucmucnu4otcpu4lu4wycoucku}2w{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}2x{17sy5ty5oy5qs}2y{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}'fof'-6o7p{17sv5tv5ow}ck{4qs5kw5ow5qs17sv5tv}4l{4qs5kw5ow5qs17sv5tv}cm{4qs5kw5ow5qs17sv5tv}cn{4qs5kw5ow5qs17sv5tv}co{4qs5kw5ow5qs17sv5tv}cp{4qs5kw5ow5qs17sv5tv}6l{17sy5ty5ow}do{17st5tt}4z{17st5tt}7s{fst}dm{17st5tt}dn{17st5tt}5o{ckwclwcmwcnwcowcpw4lw4wv}dp{17st5tt}dq{17st5tt}7t{5ow}ds{17st5tt}5t{2ktclucmucnu4otcpu4lu4wycoucku}fu{17sv5tv5ow}6p{17sy5ty5ow5qs}ek{17sy5ty5ow}el{17sy5ty5ow}em{17sy5ty5ow}en{5ty}eo{17sy5ty5ow}ep{17sy5ty5ow}es{17sy5ty5qs}et{17sy5ty5ow5qs}eu{17sy5ty5ow5qs}ev{17sy5ty5ow5qs}6z{17sy5ty5ow5qs}fm{17sy5ty5ow5qs}fn{17sy5ty5ow5qs}fo{17sy5ty5ow5qs}fp{17sy5ty5qs}fq{17sy5ty5ow5qs}7r{5ow}fs{17sy5ty5ow5qs}ft{17sv5tv5ow}7m{5ow}fv{17sv5tv5ow}fw{17sv5tv5ow}}}\"\n ),\n \"Helvetica-BoldOblique\": uncompress(\n \"{'widths'{k3s2q4scx1w201n3r201o6o201s1w201t1w201u1w201w3m201x3m201y3m2k1w2l2l202m2n2n3r2o3r2p5t202q6o2r1s2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v2l3w3u3x3u3y3u3z3x4k6l4l4s4m4s4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3r4v4s4w3x4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v2l5w1w5x2l5y3u5z3r6k2l6l3r6m3x6n3r6o3x6p3r6q2l6r3x6s3x6t1w6u1w6v3r6w1w6x5t6y3x6z3x7k3x7l3x7m2r7n3r7o2l7p3x7q3r7r4y7s3r7t3r7u3m7v2r7w1w7x2r7y3u202l3rcl4sal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3xbq3rbr1wbs2lbu2obv3rbz3xck4s202k3rcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw1w2m2zcy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3res3ret3reu3rev3rew1wex1wey1wez1wfl3xfm3xfn3xfo3xfp3xfq3xfr3ufs3xft3xfu3xfv3xfw3xfz3r203k6o212m6o2dw2l2cq2l3t3r3u2l17s4m19m3r}'kerning'{cl{4qs5ku5ot5qs17sv5tv}201t{2ww4wy2yw}201w{2ks}201x{2ww4wy2yw}2k{201ts201xs}2w{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}2x{5ow5qs}2y{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}'fof'-6o7p{17su5tu5ot}ck{4qs5ku5ot5qs17sv5tv}4l{4qs5ku5ot5qs17sv5tv}cm{4qs5ku5ot5qs17sv5tv}cn{4qs5ku5ot5qs17sv5tv}co{4qs5ku5ot5qs17sv5tv}cp{4qs5ku5ot5qs17sv5tv}6l{17st5tt5os}17s{2kwclvcmvcnvcovcpv4lv4wwckv}5o{2kucltcmtcntcotcpt4lt4wtckt}5q{2ksclscmscnscoscps4ls4wvcks}5r{2ks4ws}5t{2kwclvcmvcnvcovcpv4lv4wwckv}eo{17st5tt5os}fu{17su5tu5ot}6p{17ss5ts}ek{17st5tt5os}el{17st5tt5os}em{17st5tt5os}en{17st5tt5os}6o{201ts}ep{17st5tt5os}es{17ss5ts}et{17ss5ts}eu{17ss5ts}ev{17ss5ts}6z{17su5tu5os5qt}fm{17su5tu5os5qt}fn{17su5tu5os5qt}fo{17su5tu5os5qt}fp{17su5tu5os5qt}fq{17su5tu5os5qt}fs{17su5tu5os5qt}ft{17su5tu5ot}7m{5os}fv{17su5tu5ot}fw{17su5tu5ot}}}\"\n ),\n ZapfDingbats: uncompress(\"{'widths'{k4u2k1w'fof'6o}'kerning'{'fof'-6o}}\"),\n \"Courier-Bold\": uncompress(\"{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}\"),\n \"Times-Italic\": uncompress(\n \"{'widths'{k3n2q4ycx2l201n3m201o5t201s2l201t2l201u2l201w3r201x3r201y3r2k1t2l2l202m2n2n3m2o3m2p5n202q5t2r1p2s2l2t2l2u3m2v4n2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w4n3x4n3y4n3z3m4k5w4l3x4m3x4n4m4o4s4p3x4q3x4r4s4s4s4t2l4u2w4v4m4w3r4x5n4y4m4z4s5k3x5l4s5m3x5n3m5o3r5p4s5q3x5r5n5s3x5t3r5u3r5v2r5w1w5x2r5y2u5z3m6k2l6l3m6m3m6n2w6o3m6p2w6q1w6r3m6s3m6t1w6u1w6v2w6w1w6x4s6y3m6z3m7k3m7l3m7m2r7n2r7o1w7p3m7q2w7r4m7s2w7t2w7u2r7v2s7w1v7x2s7y3q202l3mcl3xal2ram3man3mao3map3mar3mas2lat4wau1vav3maw4nay4waz2lbk2sbl4n'fof'6obo2lbp3mbq3obr1tbs2lbu1zbv3mbz3mck3x202k3mcm3xcn3xco3xcp3xcq5tcr4mcs3xct3xcu3xcv3xcw2l2m2ucy2lcz2ldl4mdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek3mel3mem3men3meo3mep3meq4mer2wes2wet2weu2wev2wew1wex1wey1wez1wfl3mfm3mfn3mfo3mfp3mfq3mfr4nfs3mft3mfu3mfv3mfw3mfz2w203k6o212m6m2dw2l2cq2l3t3m3u2l17s3r19m3m}'kerning'{cl{5kt4qw}201s{201sw}201t{201tw2wy2yy6q-t}201x{2wy2yy}2k{201tw}2w{7qs4qy7rs5ky7mw5os5qx5ru17su5tu}2x{17ss5ts5os}2y{7qs4qy7rs5ky7mw5os5qx5ru17su5tu}'fof'-6o6t{17ss5ts5qs}7t{5os}3v{5qs}7p{17su5tu5qs}ck{5kt4qw}4l{5kt4qw}cm{5kt4qw}cn{5kt4qw}co{5kt4qw}cp{5kt4qw}6l{4qs5ks5ou5qw5ru17su5tu}17s{2ks}5q{ckvclvcmvcnvcovcpv4lv}5r{ckuclucmucnucoucpu4lu}5t{2ks}6p{4qs5ks5ou5qw5ru17su5tu}ek{4qs5ks5ou5qw5ru17su5tu}el{4qs5ks5ou5qw5ru17su5tu}em{4qs5ks5ou5qw5ru17su5tu}en{4qs5ks5ou5qw5ru17su5tu}eo{4qs5ks5ou5qw5ru17su5tu}ep{4qs5ks5ou5qw5ru17su5tu}es{5ks5qs4qs}et{4qs5ks5ou5qw5ru17su5tu}eu{4qs5ks5qw5ru17su5tu}ev{5ks5qs4qs}ex{17ss5ts5qs}6z{4qv5ks5ou5qw5ru17su5tu}fm{4qv5ks5ou5qw5ru17su5tu}fn{4qv5ks5ou5qw5ru17su5tu}fo{4qv5ks5ou5qw5ru17su5tu}fp{4qv5ks5ou5qw5ru17su5tu}fq{4qv5ks5ou5qw5ru17su5tu}7r{5os}fs{4qv5ks5ou5qw5ru17su5tu}ft{17su5tu5qs}fu{17su5tu5qs}fv{17su5tu5qs}fw{17su5tu5qs}}}\"\n ),\n \"Times-Roman\": uncompress(\n \"{'widths'{k3n2q4ycx2l201n3m201o6o201s2l201t2l201u2l201w2w201x2w201y2w2k1t2l2l202m2n2n3m2o3m2p5n202q6o2r1m2s2l2t2l2u3m2v3s2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v1w3w3s3x3s3y3s3z2w4k5w4l4s4m4m4n4m4o4s4p3x4q3r4r4s4s4s4t2l4u2r4v4s4w3x4x5t4y4s4z4s5k3r5l4s5m4m5n3r5o3x5p4s5q4s5r5y5s4s5t4s5u3x5v2l5w1w5x2l5y2z5z3m6k2l6l2w6m3m6n2w6o3m6p2w6q2l6r3m6s3m6t1w6u1w6v3m6w1w6x4y6y3m6z3m7k3m7l3m7m2l7n2r7o1w7p3m7q3m7r4s7s3m7t3m7u2w7v3k7w1o7x3k7y3q202l3mcl4sal2lam3man3mao3map3mar3mas2lat4wau1vav3maw3say4waz2lbk2sbl3s'fof'6obo2lbp3mbq2xbr1tbs2lbu1zbv3mbz2wck4s202k3mcm4scn4sco4scp4scq5tcr4mcs3xct3xcu3xcv3xcw2l2m2tcy2lcz2ldl4sdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek2wel2wem2wen2weo2wep2weq4mer2wes2wet2weu2wev2wew1wex1wey1wez1wfl3mfm3mfn3mfo3mfp3mfq3mfr3sfs3mft3mfu3mfv3mfw3mfz3m203k6o212m6m2dw2l2cq2l3t3m3u1w17s4s19m3m}'kerning'{cl{4qs5ku17sw5ou5qy5rw201ss5tw201ws}201s{201ss}201t{ckw4lwcmwcnwcowcpwclw4wu201ts}2k{201ts}2w{4qs5kw5os5qx5ru17sx5tx}2x{17sw5tw5ou5qu}2y{4qs5kw5os5qx5ru17sx5tx}'fof'-6o7t{ckuclucmucnucoucpu4lu5os5rs}3u{17su5tu5qs}3v{17su5tu5qs}7p{17sw5tw5qs}ck{4qs5ku17sw5ou5qy5rw201ss5tw201ws}4l{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cm{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cn{4qs5ku17sw5ou5qy5rw201ss5tw201ws}co{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cp{4qs5ku17sw5ou5qy5rw201ss5tw201ws}6l{17su5tu5os5qw5rs}17s{2ktclvcmvcnvcovcpv4lv4wuckv}5o{ckwclwcmwcnwcowcpw4lw4wu}5q{ckyclycmycnycoycpy4ly4wu5ms}5r{cktcltcmtcntcotcpt4lt4ws}5t{2ktclvcmvcnvcovcpv4lv4wuckv}7q{cksclscmscnscoscps4ls}6p{17su5tu5qw5rs}ek{5qs5rs}el{17su5tu5os5qw5rs}em{17su5tu5os5qs5rs}en{17su5qs5rs}eo{5qs5rs}ep{17su5tu5os5qw5rs}es{5qs}et{17su5tu5qw5rs}eu{17su5tu5qs5rs}ev{5qs}6z{17sv5tv5os5qx5rs}fm{5os5qt5rs}fn{17sv5tv5os5qx5rs}fo{17sv5tv5os5qx5rs}fp{5os5qt5rs}fq{5os5qt5rs}7r{ckuclucmucnucoucpu4lu5os}fs{17sv5tv5os5qx5rs}ft{17ss5ts5qs}fu{17sw5tw5qs}fv{17sw5tw5qs}fw{17ss5ts5qs}fz{ckuclucmucnucoucpu4lu5os5rs}}}\"\n ),\n \"Helvetica-Oblique\": uncompress(\n \"{'widths'{k3p2q4mcx1w201n3r201o6o201s1q201t1q201u1q201w2l201x2l201y2l2k1w2l1w202m2n2n3r2o3r2p5t202q6o2r1n2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v1w3w3u3x3u3y3u3z3r4k6p4l4m4m4m4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3m4v4m4w3r4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v1w5w1w5x1w5y2z5z3r6k2l6l3r6m3r6n3m6o3r6p3r6q1w6r3r6s3r6t1q6u1q6v3m6w1q6x5n6y3r6z3r7k3r7l3r7m2l7n3m7o1w7p3r7q3m7r4s7s3m7t3m7u3m7v2l7w1u7x2l7y3u202l3rcl4mal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3rbr1wbs2lbu2obv3rbz3xck4m202k3rcm4mcn4mco4mcp4mcq6ocr4scs4mct4mcu4mcv4mcw1w2m2ncy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3mes3ret3reu3rev3rew1wex1wey1wez1wfl3rfm3rfn3rfo3rfp3rfq3rfr3ufs3xft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3r3u1w17s4m19m3r}'kerning'{5q{4wv}cl{4qs5kw5ow5qs17sv5tv}201t{2wu4w1k2yu}201x{2wu4wy2yu}17s{2ktclucmucnu4otcpu4lu4wycoucku}2w{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}2x{17sy5ty5oy5qs}2y{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}'fof'-6o7p{17sv5tv5ow}ck{4qs5kw5ow5qs17sv5tv}4l{4qs5kw5ow5qs17sv5tv}cm{4qs5kw5ow5qs17sv5tv}cn{4qs5kw5ow5qs17sv5tv}co{4qs5kw5ow5qs17sv5tv}cp{4qs5kw5ow5qs17sv5tv}6l{17sy5ty5ow}do{17st5tt}4z{17st5tt}7s{fst}dm{17st5tt}dn{17st5tt}5o{ckwclwcmwcnwcowcpw4lw4wv}dp{17st5tt}dq{17st5tt}7t{5ow}ds{17st5tt}5t{2ktclucmucnu4otcpu4lu4wycoucku}fu{17sv5tv5ow}6p{17sy5ty5ow5qs}ek{17sy5ty5ow}el{17sy5ty5ow}em{17sy5ty5ow}en{5ty}eo{17sy5ty5ow}ep{17sy5ty5ow}es{17sy5ty5qs}et{17sy5ty5ow5qs}eu{17sy5ty5ow5qs}ev{17sy5ty5ow5qs}6z{17sy5ty5ow5qs}fm{17sy5ty5ow5qs}fn{17sy5ty5ow5qs}fo{17sy5ty5ow5qs}fp{17sy5ty5qs}fq{17sy5ty5ow5qs}7r{5ow}fs{17sy5ty5ow5qs}ft{17sv5tv5ow}7m{5ow}fv{17sv5tv5ow}fw{17sv5tv5ow}}}\"\n )\n }\n };\n\n /*\n\tThis event handler is fired when a new jsPDF object is initialized\n\tThis event handler appends metrics data to standard fonts within\n\tthat jsPDF instance. The metrics are mapped over Unicode character\n\tcodes, NOT CIDs or other codes matching the StandardEncoding table of the\n\tstandard PDF fonts.\n\tFuture:\n\tAlso included is the encoding maping table, converting Unicode (UCS-2, UTF-16)\n\tchar codes to StandardEncoding character codes. The encoding table is to be used\n\tsomewhere around \"pdfEscape\" call.\n\t*/\n API.events.push([\n \"addFont\",\n function(data) {\n var font = data.font;\n\n var metrics = fontMetrics[\"Unicode\"][font.postScriptName];\n if (metrics) {\n font.metadata[\"Unicode\"] = {};\n font.metadata[\"Unicode\"].widths = metrics.widths;\n font.metadata[\"Unicode\"].kerning = metrics.kerning;\n }\n\n var encodingBlock = encodings[\"Unicode\"][font.postScriptName];\n if (encodingBlock) {\n font.metadata[\"Unicode\"].encoding = encodingBlock;\n font.encoding = encodingBlock.codePages[0];\n }\n }\n ]); // end of adding event handler\n})(jsPDF.API);\n","/**\n * @license\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { atob } from \"../libs/AtobBtoa.js\";\n\n/**\n * @name ttfsupport\n * @module\n */\n(function(jsPDF) {\n \"use strict\";\n\n var binaryStringToUint8Array = function(binary_string) {\n var len = binary_string.length;\n var bytes = new Uint8Array(len);\n for (var i = 0; i < len; i++) {\n bytes[i] = binary_string.charCodeAt(i);\n }\n return bytes;\n };\n\n var addFont = function(font, file) {\n // eslint-disable-next-line no-control-regex\n if (/^\\x00\\x01\\x00\\x00/.test(file)) {\n file = binaryStringToUint8Array(file);\n } else {\n file = binaryStringToUint8Array(atob(file));\n }\n font.metadata = jsPDF.API.TTFFont.open(file);\n font.metadata.Unicode = font.metadata.Unicode || {\n encoding: {},\n kerning: {},\n widths: []\n };\n font.metadata.glyIdsUsed = [0];\n };\n\n jsPDF.API.events.push([\n \"addFont\",\n function(data) {\n var file = undefined;\n var font = data.font;\n var instance = data.instance;\n if (font.isStandardFont) {\n return;\n }\n if (typeof instance !== \"undefined\") {\n if (instance.existsFileInVFS(font.postScriptName) === false) {\n file = instance.loadFile(font.postScriptName);\n } else {\n file = instance.getFileFromVFS(font.postScriptName);\n }\n if (typeof file !== \"string\") {\n throw new Error(\n \"Font is not stored as string-data in vFS, import fonts or remove declaration doc.addFont('\" +\n font.postScriptName +\n \"').\"\n );\n }\n addFont(font, file);\n } else {\n throw new Error(\n \"Font does not exist in vFS, import fonts or remove declaration doc.addFont('\" +\n font.postScriptName +\n \"').\"\n );\n }\n }\n ]); // end of adding event handler\n})(jsPDF);\n","/** @license\n * Copyright (c) 2012 Willow Systems Corporation, https://github.com/willowsystems\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\nimport { console } from \"../libs/console.js\";\nimport { globalObject } from \"../libs/globalObject.js\";\n\n/**\n * jsPDF SVG plugin\n *\n * @name svg\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n function loadCanvg() {\n return (function() {\n if (globalObject[\"canvg\"]) {\n return Promise.resolve(globalObject[\"canvg\"]);\n }\n\n return import(\"canvg\");\n\n })()\n .catch(function(e) {\n return Promise.reject(new Error(\"Could not load canvg: \" + e));\n })\n .then(function(canvg) {\n return canvg.default ? canvg.default : canvg;\n });\n }\n\n /**\n * Parses SVG XML and saves it as image into the PDF.\n *\n * Depends on canvas-element and canvg\n *\n * @name addSvgAsImage\n * @public\n * @function\n * @param {string} SVG-Data as Text\n * @param {number} x Coordinate (in units declared at inception of PDF document) against left edge of the page\n * @param {number} y Coordinate (in units declared at inception of PDF document) against upper edge of the page\n * @param {number} width of SVG-Image (in units declared at inception of PDF document)\n * @param {number} height of SVG-Image (in units declared at inception of PDF document)\n * @param {string} alias of SVG-Image (if used multiple times)\n * @param {string} compression of the generated JPEG, can have the values 'NONE', 'FAST', 'MEDIUM' and 'SLOW'\n * @param {number} rotation of the image in degrees (0-359)\n *\n * @returns jsPDF jsPDF-instance\n */\n jsPDFAPI.addSvgAsImage = function(\n svg,\n x,\n y,\n w,\n h,\n alias,\n compression,\n rotation\n ) {\n if (isNaN(x) || isNaN(y)) {\n console.error(\"jsPDF.addSvgAsImage: Invalid coordinates\", arguments);\n throw new Error(\"Invalid coordinates passed to jsPDF.addSvgAsImage\");\n }\n\n if (isNaN(w) || isNaN(h)) {\n console.error(\"jsPDF.addSvgAsImage: Invalid measurements\", arguments);\n throw new Error(\n \"Invalid measurements (width and/or height) passed to jsPDF.addSvgAsImage\"\n );\n }\n\n var canvas = document.createElement(\"canvas\");\n canvas.width = w;\n canvas.height = h;\n var ctx = canvas.getContext(\"2d\");\n ctx.fillStyle = \"#fff\"; /// set white fill style\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n\n var options = {\n ignoreMouse: true,\n ignoreAnimation: true,\n ignoreDimensions: true\n };\n var doc = this;\n return loadCanvg()\n .then(\n function(canvg) {\n return canvg.fromString(ctx, svg, options);\n },\n function() {\n return Promise.reject(new Error(\"Could not load canvg.\"));\n }\n )\n .then(function(instance) {\n return instance.render(options);\n })\n .then(function() {\n doc.addImage(\n canvas.toDataURL(\"image/jpeg\", 1.0),\n x,\n y,\n w,\n h,\n compression,\n rotation\n );\n });\n };\n})(jsPDF.API);\n","/**\n * @license\n * ====================================================================\n * Copyright (c) 2013 Eduardo Menezes de Morais, eduardo.morais@usp.br\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * jsPDF total_pages plugin\n * @name total_pages\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n /**\n * @name putTotalPages\n * @function\n * @param {string} pageExpression Regular Expression\n * @returns {jsPDF} jsPDF-instance\n */\n\n jsPDFAPI.putTotalPages = function(pageExpression) {\n \"use strict\";\n\n var replaceExpression;\n var totalNumberOfPages = 0;\n if (parseInt(this.internal.getFont().id.substr(1), 10) < 15) {\n replaceExpression = new RegExp(pageExpression, \"g\");\n totalNumberOfPages = this.internal.getNumberOfPages();\n } else {\n replaceExpression = new RegExp(\n this.pdfEscape16(pageExpression, this.internal.getFont()),\n \"g\"\n );\n totalNumberOfPages = this.pdfEscape16(\n this.internal.getNumberOfPages() + \"\",\n this.internal.getFont()\n );\n }\n\n for (var n = 1; n <= this.internal.getNumberOfPages(); n++) {\n for (var i = 0; i < this.internal.pages[n].length; i++) {\n this.internal.pages[n][i] = this.internal.pages[n][i].replace(\n replaceExpression,\n totalNumberOfPages\n );\n }\n }\n\n return this;\n };\n})(jsPDF.API);\n","/**\n * @license\n * jsPDF viewerPreferences Plugin\n * @author Aras Abbasi (github.com/arasabbasi)\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * Adds the ability to set ViewerPreferences and by thus\n * controlling the way the document is to be presented on the\n * screen or in print.\n * @name viewerpreferences\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n /**\n * Set the ViewerPreferences of the generated PDF\n *\n * @name viewerPreferences\n * @function\n * @public\n * @param {Object} options Array with the ViewerPreferences
    \n * Example: doc.viewerPreferences({\"FitWindow\":true});
    \n *
    \n * You can set following preferences:
    \n *
    \n * HideToolbar (boolean)
    \n * Default value: false
    \n *
    \n * HideMenubar (boolean)
    \n * Default value: false.
    \n *
    \n * HideWindowUI (boolean)
    \n * Default value: false.
    \n *
    \n * FitWindow (boolean)
    \n * Default value: false.
    \n *
    \n * CenterWindow (boolean)
    \n * Default value: false
    \n *
    \n * DisplayDocTitle (boolean)
    \n * Default value: false.
    \n *
    \n * NonFullScreenPageMode (string)
    \n * Possible values: UseNone, UseOutlines, UseThumbs, UseOC
    \n * Default value: UseNone
    \n *
    \n * Direction (string)
    \n * Possible values: L2R, R2L
    \n * Default value: L2R.
    \n *
    \n * ViewArea (string)
    \n * Possible values: MediaBox, CropBox, TrimBox, BleedBox, ArtBox
    \n * Default value: CropBox.
    \n *
    \n * ViewClip (string)
    \n * Possible values: MediaBox, CropBox, TrimBox, BleedBox, ArtBox
    \n * Default value: CropBox
    \n *
    \n * PrintArea (string)
    \n * Possible values: MediaBox, CropBox, TrimBox, BleedBox, ArtBox
    \n * Default value: CropBox
    \n *
    \n * PrintClip (string)
    \n * Possible values: MediaBox, CropBox, TrimBox, BleedBox, ArtBox
    \n * Default value: CropBox.
    \n *
    \n * PrintScaling (string)
    \n * Possible values: AppDefault, None
    \n * Default value: AppDefault.
    \n *
    \n * Duplex (string)
    \n * Possible values: Simplex, DuplexFlipLongEdge, DuplexFlipShortEdge\n * Default value: none
    \n *
    \n * PickTrayByPDFSize (boolean)
    \n * Default value: false
    \n *
    \n * PrintPageRange (Array)
    \n * Example: [[1,5], [7,9]]
    \n * Default value: as defined by PDF viewer application
    \n *
    \n * NumCopies (Number)
    \n * Possible values: 1, 2, 3, 4, 5
    \n * Default value: 1
    \n *
    \n * For more information see the PDF Reference, sixth edition on Page 577\n * @param {boolean} doReset True to reset the settings\n * @function\n * @returns jsPDF jsPDF-instance\n * @example\n * var doc = new jsPDF()\n * doc.text('This is a test', 10, 10)\n * doc.viewerPreferences({'FitWindow': true}, true)\n * doc.save(\"viewerPreferences.pdf\")\n *\n * // Example printing 10 copies, using cropbox, and hiding UI.\n * doc.viewerPreferences({\n * 'HideWindowUI': true,\n * 'PrintArea': 'CropBox',\n * 'NumCopies': 10\n * })\n */\n jsPDFAPI.viewerPreferences = function(options, doReset) {\n options = options || {};\n doReset = doReset || false;\n\n var configuration;\n var configurationTemplate = {\n HideToolbar: {\n defaultValue: false,\n value: false,\n type: \"boolean\",\n explicitSet: false,\n valueSet: [true, false],\n pdfVersion: 1.3\n },\n HideMenubar: {\n defaultValue: false,\n value: false,\n type: \"boolean\",\n explicitSet: false,\n valueSet: [true, false],\n pdfVersion: 1.3\n },\n HideWindowUI: {\n defaultValue: false,\n value: false,\n type: \"boolean\",\n explicitSet: false,\n valueSet: [true, false],\n pdfVersion: 1.3\n },\n FitWindow: {\n defaultValue: false,\n value: false,\n type: \"boolean\",\n explicitSet: false,\n valueSet: [true, false],\n pdfVersion: 1.3\n },\n CenterWindow: {\n defaultValue: false,\n value: false,\n type: \"boolean\",\n explicitSet: false,\n valueSet: [true, false],\n pdfVersion: 1.3\n },\n DisplayDocTitle: {\n defaultValue: false,\n value: false,\n type: \"boolean\",\n explicitSet: false,\n valueSet: [true, false],\n pdfVersion: 1.4\n },\n NonFullScreenPageMode: {\n defaultValue: \"UseNone\",\n value: \"UseNone\",\n type: \"name\",\n explicitSet: false,\n valueSet: [\"UseNone\", \"UseOutlines\", \"UseThumbs\", \"UseOC\"],\n pdfVersion: 1.3\n },\n Direction: {\n defaultValue: \"L2R\",\n value: \"L2R\",\n type: \"name\",\n explicitSet: false,\n valueSet: [\"L2R\", \"R2L\"],\n pdfVersion: 1.3\n },\n ViewArea: {\n defaultValue: \"CropBox\",\n value: \"CropBox\",\n type: \"name\",\n explicitSet: false,\n valueSet: [\"MediaBox\", \"CropBox\", \"TrimBox\", \"BleedBox\", \"ArtBox\"],\n pdfVersion: 1.4\n },\n ViewClip: {\n defaultValue: \"CropBox\",\n value: \"CropBox\",\n type: \"name\",\n explicitSet: false,\n valueSet: [\"MediaBox\", \"CropBox\", \"TrimBox\", \"BleedBox\", \"ArtBox\"],\n pdfVersion: 1.4\n },\n PrintArea: {\n defaultValue: \"CropBox\",\n value: \"CropBox\",\n type: \"name\",\n explicitSet: false,\n valueSet: [\"MediaBox\", \"CropBox\", \"TrimBox\", \"BleedBox\", \"ArtBox\"],\n pdfVersion: 1.4\n },\n PrintClip: {\n defaultValue: \"CropBox\",\n value: \"CropBox\",\n type: \"name\",\n explicitSet: false,\n valueSet: [\"MediaBox\", \"CropBox\", \"TrimBox\", \"BleedBox\", \"ArtBox\"],\n pdfVersion: 1.4\n },\n PrintScaling: {\n defaultValue: \"AppDefault\",\n value: \"AppDefault\",\n type: \"name\",\n explicitSet: false,\n valueSet: [\"AppDefault\", \"None\"],\n pdfVersion: 1.6\n },\n Duplex: {\n defaultValue: \"\",\n value: \"none\",\n type: \"name\",\n explicitSet: false,\n valueSet: [\n \"Simplex\",\n \"DuplexFlipShortEdge\",\n \"DuplexFlipLongEdge\",\n \"none\"\n ],\n pdfVersion: 1.7\n },\n PickTrayByPDFSize: {\n defaultValue: false,\n value: false,\n type: \"boolean\",\n explicitSet: false,\n valueSet: [true, false],\n pdfVersion: 1.7\n },\n PrintPageRange: {\n defaultValue: \"\",\n value: \"\",\n type: \"array\",\n explicitSet: false,\n valueSet: null,\n pdfVersion: 1.7\n },\n NumCopies: {\n defaultValue: 1,\n value: 1,\n type: \"integer\",\n explicitSet: false,\n valueSet: null,\n pdfVersion: 1.7\n }\n };\n\n var configurationKeys = Object.keys(configurationTemplate);\n\n var rangeArray = [];\n var i = 0;\n var j = 0;\n var k = 0;\n var isValid;\n\n var method;\n var value;\n\n function arrayContainsElement(array, element) {\n var iterator;\n var result = false;\n\n for (iterator = 0; iterator < array.length; iterator += 1) {\n if (array[iterator] === element) {\n result = true;\n }\n }\n return result;\n }\n\n if (this.internal.viewerpreferences === undefined) {\n this.internal.viewerpreferences = {};\n this.internal.viewerpreferences.configuration = JSON.parse(\n JSON.stringify(configurationTemplate)\n );\n this.internal.viewerpreferences.isSubscribed = false;\n }\n configuration = this.internal.viewerpreferences.configuration;\n\n if (options === \"reset\" || doReset === true) {\n var len = configurationKeys.length;\n\n for (k = 0; k < len; k += 1) {\n configuration[configurationKeys[k]].value =\n configuration[configurationKeys[k]].defaultValue;\n configuration[configurationKeys[k]].explicitSet = false;\n }\n }\n\n if (typeof options === \"object\") {\n for (method in options) {\n value = options[method];\n if (\n arrayContainsElement(configurationKeys, method) &&\n value !== undefined\n ) {\n if (\n configuration[method].type === \"boolean\" &&\n typeof value === \"boolean\"\n ) {\n configuration[method].value = value;\n } else if (\n configuration[method].type === \"name\" &&\n arrayContainsElement(configuration[method].valueSet, value)\n ) {\n configuration[method].value = value;\n } else if (\n configuration[method].type === \"integer\" &&\n Number.isInteger(value)\n ) {\n configuration[method].value = value;\n } else if (configuration[method].type === \"array\") {\n for (i = 0; i < value.length; i += 1) {\n isValid = true;\n if (value[i].length === 1 && typeof value[i][0] === \"number\") {\n rangeArray.push(String(value[i] - 1));\n } else if (value[i].length > 1) {\n for (j = 0; j < value[i].length; j += 1) {\n if (typeof value[i][j] !== \"number\") {\n isValid = false;\n }\n }\n if (isValid === true) {\n rangeArray.push([value[i][0] - 1, value[i][1] - 1].join(\" \"));\n }\n }\n }\n configuration[method].value = \"[\" + rangeArray.join(\" \") + \"]\";\n } else {\n configuration[method].value = configuration[method].defaultValue;\n }\n\n configuration[method].explicitSet = true;\n }\n }\n }\n\n if (this.internal.viewerpreferences.isSubscribed === false) {\n this.internal.events.subscribe(\"putCatalog\", function() {\n var pdfDict = [];\n var vPref;\n for (vPref in configuration) {\n if (configuration[vPref].explicitSet === true) {\n if (configuration[vPref].type === \"name\") {\n pdfDict.push(\"/\" + vPref + \" /\" + configuration[vPref].value);\n } else {\n pdfDict.push(\"/\" + vPref + \" \" + configuration[vPref].value);\n }\n }\n }\n if (pdfDict.length !== 0) {\n this.internal.write(\n \"/ViewerPreferences\\n<<\\n\" + pdfDict.join(\"\\n\") + \"\\n>>\"\n );\n }\n });\n this.internal.viewerpreferences.isSubscribed = true;\n }\n\n this.internal.viewerpreferences.configuration = configuration;\n return this;\n };\n})(jsPDF.API);\n","/** ====================================================================\n * @license\n * jsPDF XMP metadata plugin\n * Copyright (c) 2016 Jussi Utunen, u-jussi@suomi24.fi\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * ====================================================================\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * @name xmp_metadata\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n var postPutResources = function() {\n var xmpmeta_beginning = '';\n var rdf_beginning =\n '';\n var rdf_ending = \"\";\n var xmpmeta_ending = \"\";\n var utf8_xmpmeta_beginning = unescape(\n encodeURIComponent(xmpmeta_beginning)\n );\n var utf8_rdf_beginning = unescape(encodeURIComponent(rdf_beginning));\n var utf8_metadata = unescape(\n encodeURIComponent(this.internal.__metadata__.metadata)\n );\n var utf8_rdf_ending = unescape(encodeURIComponent(rdf_ending));\n var utf8_xmpmeta_ending = unescape(encodeURIComponent(xmpmeta_ending));\n\n var total_len =\n utf8_rdf_beginning.length +\n utf8_metadata.length +\n utf8_rdf_ending.length +\n utf8_xmpmeta_beginning.length +\n utf8_xmpmeta_ending.length;\n\n this.internal.__metadata__.metadata_object_number = this.internal.newObject();\n this.internal.write(\n \"<< /Type /Metadata /Subtype /XML /Length \" + total_len + \" >>\"\n );\n this.internal.write(\"stream\");\n this.internal.write(\n utf8_xmpmeta_beginning +\n utf8_rdf_beginning +\n utf8_metadata +\n utf8_rdf_ending +\n utf8_xmpmeta_ending\n );\n this.internal.write(\"endstream\");\n this.internal.write(\"endobj\");\n };\n\n var putCatalog = function() {\n if (this.internal.__metadata__.metadata_object_number) {\n this.internal.write(\n \"/Metadata \" +\n this.internal.__metadata__.metadata_object_number +\n \" 0 R\"\n );\n }\n };\n\n /**\n * Adds XMP formatted metadata to PDF\n *\n * @name addMetadata\n * @function\n * @param {String} metadata The actual metadata to be added. The metadata shall be stored as XMP simple value. Note that if the metadata string contains XML markup characters \"<\", \">\" or \"&\", those characters should be written using XML entities.\n * @param {String} namespaceuri Sets the namespace URI for the metadata. Last character should be slash or hash.\n * @returns {jsPDF} jsPDF-instance\n */\n jsPDFAPI.addMetadata = function(metadata, namespaceuri) {\n if (typeof this.internal.__metadata__ === \"undefined\") {\n this.internal.__metadata__ = {\n metadata: metadata,\n namespaceuri: namespaceuri || \"http://jspdf.default.namespaceuri/\"\n };\n this.internal.events.subscribe(\"putCatalog\", putCatalog);\n\n this.internal.events.subscribe(\"postPutResources\", postPutResources);\n }\n return this;\n };\n})(jsPDF.API);\n","import { jsPDF } from \"../jspdf.js\";\nimport { toPDFName } from \"../libs/pdfname.js\";\n\n/**\n * @name utf8\n * @module\n */\n(function(jsPDF) {\n \"use strict\";\n var jsPDFAPI = jsPDF.API;\n\n /***************************************************************************************************/\n /* function : pdfEscape16 */\n /* comment : The character id of a 2-byte string is converted to a hexadecimal number by obtaining */\n /* the corresponding glyph id and width, and then adding padding to the string. */\n /***************************************************************************************************/\n var pdfEscape16 = (jsPDFAPI.pdfEscape16 = function(text, font) {\n var widths = font.metadata.Unicode.widths;\n var padz = [\"\", \"0\", \"00\", \"000\", \"0000\"];\n var ar = [\"\"];\n for (var i = 0, l = text.length, t; i < l; ++i) {\n t = font.metadata.characterToGlyph(text.charCodeAt(i));\n font.metadata.glyIdsUsed.push(t);\n font.metadata.toUnicode[t] = text.charCodeAt(i);\n if (widths.indexOf(t) == -1) {\n widths.push(t);\n widths.push([parseInt(font.metadata.widthOfGlyph(t), 10)]);\n }\n if (t == \"0\") {\n //Spaces are not allowed in cmap.\n return ar.join(\"\");\n } else {\n t = t.toString(16);\n ar.push(padz[4 - t.length], t);\n }\n }\n return ar.join(\"\");\n });\n\n var toUnicodeCmap = function(map) {\n var code, codes, range, unicode, unicodeMap, _i, _len;\n unicodeMap =\n \"/CIDInit /ProcSet findresource begin\\n12 dict begin\\nbegincmap\\n/CIDSystemInfo <<\\n /Registry (Adobe)\\n /Ordering (UCS)\\n /Supplement 0\\n>> def\\n/CMapName /Adobe-Identity-UCS def\\n/CMapType 2 def\\n1 begincodespacerange\\n<0000>\\nendcodespacerange\";\n codes = Object.keys(map).sort(function(a, b) {\n return a - b;\n });\n\n range = [];\n for (_i = 0, _len = codes.length; _i < _len; _i++) {\n code = codes[_i];\n if (range.length >= 100) {\n unicodeMap +=\n \"\\n\" +\n range.length +\n \" beginbfchar\\n\" +\n range.join(\"\\n\") +\n \"\\nendbfchar\";\n range = [];\n }\n\n if (\n map[code] !== undefined &&\n map[code] !== null &&\n typeof map[code].toString === \"function\"\n ) {\n unicode = (\"0000\" + map[code].toString(16)).slice(-4);\n code = (\"0000\" + (+code).toString(16)).slice(-4);\n range.push(\"<\" + code + \"><\" + unicode + \">\");\n }\n }\n\n if (range.length) {\n unicodeMap +=\n \"\\n\" +\n range.length +\n \" beginbfchar\\n\" +\n range.join(\"\\n\") +\n \"\\nendbfchar\\n\";\n }\n unicodeMap +=\n \"endcmap\\nCMapName currentdict /CMap defineresource pop\\nend\\nend\";\n return unicodeMap;\n };\n\n var identityHFunction = function(options) {\n var font = options.font;\n var out = options.out;\n var newObject = options.newObject;\n var putStream = options.putStream;\n\n if (\n font.metadata instanceof jsPDF.API.TTFFont &&\n font.encoding === \"Identity-H\"\n ) {\n //Tag with Identity-H\n var widths = font.metadata.Unicode.widths;\n var data = font.metadata.subset.encode(font.metadata.glyIdsUsed, 1);\n var pdfOutput = data;\n var pdfOutput2 = \"\";\n for (var i = 0; i < pdfOutput.length; i++) {\n pdfOutput2 += String.fromCharCode(pdfOutput[i]);\n }\n var fontTable = newObject();\n putStream({ data: pdfOutput2, addLength1: true, objectId: fontTable });\n out(\"endobj\");\n\n var cmap = newObject();\n var cmapData = toUnicodeCmap(font.metadata.toUnicode);\n putStream({ data: cmapData, addLength1: true, objectId: cmap });\n out(\"endobj\");\n\n var fontDescriptor = newObject();\n out(\"<<\");\n out(\"/Type /FontDescriptor\");\n out(\"/FontName /\" + toPDFName(font.fontName));\n out(\"/FontFile2 \" + fontTable + \" 0 R\");\n out(\"/FontBBox \" + jsPDF.API.PDFObject.convert(font.metadata.bbox));\n out(\"/Flags \" + font.metadata.flags);\n out(\"/StemV \" + font.metadata.stemV);\n out(\"/ItalicAngle \" + font.metadata.italicAngle);\n out(\"/Ascent \" + font.metadata.ascender);\n out(\"/Descent \" + font.metadata.decender);\n out(\"/CapHeight \" + font.metadata.capHeight);\n out(\">>\");\n out(\"endobj\");\n\n var DescendantFont = newObject();\n out(\"<<\");\n out(\"/Type /Font\");\n out(\"/BaseFont /\" + toPDFName(font.fontName));\n out(\"/FontDescriptor \" + fontDescriptor + \" 0 R\");\n out(\"/W \" + jsPDF.API.PDFObject.convert(widths));\n out(\"/CIDToGIDMap /Identity\");\n out(\"/DW 1000\");\n out(\"/Subtype /CIDFontType2\");\n out(\"/CIDSystemInfo\");\n out(\"<<\");\n out(\"/Supplement 0\");\n out(\"/Registry (Adobe)\");\n out(\"/Ordering (\" + font.encoding + \")\");\n out(\">>\");\n out(\">>\");\n out(\"endobj\");\n\n font.objectNumber = newObject();\n out(\"<<\");\n out(\"/Type /Font\");\n out(\"/Subtype /Type0\");\n out(\"/ToUnicode \" + cmap + \" 0 R\");\n out(\"/BaseFont /\" + toPDFName(font.fontName));\n out(\"/Encoding /\" + font.encoding);\n out(\"/DescendantFonts [\" + DescendantFont + \" 0 R]\");\n out(\">>\");\n out(\"endobj\");\n\n font.isAlreadyPutted = true;\n }\n };\n\n jsPDFAPI.events.push([\n \"putFont\",\n function(args) {\n identityHFunction(args);\n }\n ]);\n\n var winAnsiEncodingFunction = function(options) {\n var font = options.font;\n var out = options.out;\n var newObject = options.newObject;\n var putStream = options.putStream;\n\n if (\n font.metadata instanceof jsPDF.API.TTFFont &&\n font.encoding === \"WinAnsiEncoding\"\n ) {\n //Tag with WinAnsi encoding\n var data = font.metadata.rawData;\n var pdfOutput = data;\n var pdfOutput2 = \"\";\n for (var i = 0; i < pdfOutput.length; i++) {\n pdfOutput2 += String.fromCharCode(pdfOutput[i]);\n }\n var fontTable = newObject();\n putStream({ data: pdfOutput2, addLength1: true, objectId: fontTable });\n out(\"endobj\");\n\n var cmap = newObject();\n var cmapData = toUnicodeCmap(font.metadata.toUnicode);\n putStream({ data: cmapData, addLength1: true, objectId: cmap });\n out(\"endobj\");\n\n var fontDescriptor = newObject();\n out(\"<<\");\n out(\"/Descent \" + font.metadata.decender);\n out(\"/CapHeight \" + font.metadata.capHeight);\n out(\"/StemV \" + font.metadata.stemV);\n out(\"/Type /FontDescriptor\");\n out(\"/FontFile2 \" + fontTable + \" 0 R\");\n out(\"/Flags 96\");\n out(\"/FontBBox \" + jsPDF.API.PDFObject.convert(font.metadata.bbox));\n out(\"/FontName /\" + toPDFName(font.fontName));\n out(\"/ItalicAngle \" + font.metadata.italicAngle);\n out(\"/Ascent \" + font.metadata.ascender);\n out(\">>\");\n out(\"endobj\");\n font.objectNumber = newObject();\n for (var j = 0; j < font.metadata.hmtx.widths.length; j++) {\n font.metadata.hmtx.widths[j] = parseInt(\n font.metadata.hmtx.widths[j] * (1000 / font.metadata.head.unitsPerEm)\n ); //Change the width of Em units to Point units.\n }\n out(\n \"<>\"\n );\n out(\"endobj\");\n font.isAlreadyPutted = true;\n }\n };\n\n jsPDFAPI.events.push([\n \"putFont\",\n function(args) {\n winAnsiEncodingFunction(args);\n }\n ]);\n\n var utf8TextFunction = function(args) {\n var text = args.text || \"\";\n var x = args.x;\n var y = args.y;\n var options = args.options || {};\n var mutex = args.mutex || {};\n\n var pdfEscape = mutex.pdfEscape;\n var activeFontKey = mutex.activeFontKey;\n var fonts = mutex.fonts;\n var key = activeFontKey;\n\n var str = \"\",\n s = 0,\n cmapConfirm;\n var strText = \"\";\n var encoding = fonts[key].encoding;\n\n if (fonts[key].encoding !== \"Identity-H\") {\n return {\n text: text,\n x: x,\n y: y,\n options: options,\n mutex: mutex\n };\n }\n strText = text;\n\n key = activeFontKey;\n if (Array.isArray(text)) {\n strText = text[0];\n }\n for (s = 0; s < strText.length; s += 1) {\n if (fonts[key].metadata.hasOwnProperty(\"cmap\")) {\n cmapConfirm =\n fonts[key].metadata.cmap.unicode.codeMap[strText[s].charCodeAt(0)];\n /*\n if (Object.prototype.toString.call(text) === '[object Array]') {\n var i = 0;\n // for (i = 0; i < text.length; i += 1) {\n if (Object.prototype.toString.call(text[s]) === '[object Array]') {\n cmapConfirm = fonts[key].metadata.cmap.unicode.codeMap[strText[s][0].charCodeAt(0)]; //Make sure the cmap has the corresponding glyph id\n } else {\n\n }\n //}\n\n } else {\n cmapConfirm = fonts[key].metadata.cmap.unicode.codeMap[strText[s].charCodeAt(0)]; //Make sure the cmap has the corresponding glyph id\n }*/\n }\n if (!cmapConfirm) {\n if (\n strText[s].charCodeAt(0) < 256 &&\n fonts[key].metadata.hasOwnProperty(\"Unicode\")\n ) {\n str += strText[s];\n } else {\n str += \"\";\n }\n } else {\n str += strText[s];\n }\n }\n var result = \"\";\n if (parseInt(key.slice(1)) < 14 || encoding === \"WinAnsiEncoding\") {\n //For the default 13 font\n result = pdfEscape(str, key)\n .split(\"\")\n .map(function(cv) {\n return cv.charCodeAt(0).toString(16);\n })\n .join(\"\");\n } else if (encoding === \"Identity-H\") {\n result = pdfEscape16(str, fonts[key]);\n }\n mutex.isHex = true;\n\n return {\n text: result,\n x: x,\n y: y,\n options: options,\n mutex: mutex\n };\n };\n\n var utf8EscapeFunction = function(parms) {\n var text = parms.text || \"\",\n x = parms.x,\n y = parms.y,\n options = parms.options,\n mutex = parms.mutex;\n var tmpText = [];\n var args = {\n text: text,\n x: x,\n y: y,\n options: options,\n mutex: mutex\n };\n\n if (Array.isArray(text)) {\n var i = 0;\n for (i = 0; i < text.length; i += 1) {\n if (Array.isArray(text[i])) {\n if (text[i].length === 3) {\n tmpText.push([\n utf8TextFunction(Object.assign({}, args, { text: text[i][0] }))\n .text,\n text[i][1],\n text[i][2]\n ]);\n } else {\n tmpText.push(\n utf8TextFunction(Object.assign({}, args, { text: text[i] })).text\n );\n }\n } else {\n tmpText.push(\n utf8TextFunction(Object.assign({}, args, { text: text[i] })).text\n );\n }\n }\n parms.text = tmpText;\n } else {\n parms.text = utf8TextFunction(\n Object.assign({}, args, { text: text })\n ).text;\n }\n };\n\n jsPDFAPI.events.push([\"postProcessText\", utf8EscapeFunction]);\n})(jsPDF);\n","/**\n * @license\n * jsPDF virtual FileSystem functionality\n *\n * Licensed under the MIT License.\n * http://opensource.org/licenses/mit-license\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n/**\n * Use the vFS to handle files\n *\n * @name vFS\n * @module\n */\n(function(jsPDFAPI) {\n \"use strict\";\n\n var _initializeVFS = function() {\n if (typeof this.internal.vFS === \"undefined\") {\n this.internal.vFS = {};\n }\n return true;\n };\n\n /**\n * Check if the file exists in the vFS\n *\n * @name existsFileInVFS\n * @function\n * @param {string} Possible filename in the vFS.\n * @returns {boolean}\n * @example\n * doc.existsFileInVFS(\"someFile.txt\");\n */\n jsPDFAPI.existsFileInVFS = function(filename) {\n _initializeVFS.call(this);\n return typeof this.internal.vFS[filename] !== \"undefined\";\n };\n\n /**\n * Add a file to the vFS\n *\n * @name addFileToVFS\n * @function\n * @param {string} filename The name of the file which should be added.\n * @param {string} filecontent The content of the file.\n * @returns {jsPDF}\n * @example\n * doc.addFileToVFS(\"someFile.txt\", \"BADFACE1\");\n */\n jsPDFAPI.addFileToVFS = function(filename, filecontent) {\n _initializeVFS.call(this);\n this.internal.vFS[filename] = filecontent;\n return this;\n };\n\n /**\n * Get the file from the vFS\n *\n * @name getFileFromVFS\n * @function\n * @param {string} The name of the file which gets requested.\n * @returns {string}\n * @example\n * doc.getFileFromVFS(\"someFile.txt\");\n */\n jsPDFAPI.getFileFromVFS = function(filename) {\n _initializeVFS.call(this);\n\n if (typeof this.internal.vFS[filename] !== \"undefined\") {\n return this.internal.vFS[filename];\n }\n return null;\n };\n})(jsPDF.API);\n","/**\n * @license\n * Unicode Bidi Engine based on the work of Alex Shensis (@asthensis)\n * MIT License\n */\n\nimport { jsPDF } from \"../jspdf.js\";\n\n(function(jsPDF) {\n \"use strict\";\n /**\n * Table of Unicode types.\n *\n * Generated by:\n *\n * var bidi = require(\"./bidi/index\");\n * var bidi_accumulate = bidi.slice(0, 256).concat(bidi.slice(0x0500, 0x0500 + 256 * 3)).\n * concat(bidi.slice(0x2000, 0x2000 + 256)).concat(bidi.slice(0xFB00, 0xFB00 + 256)).\n * concat(bidi.slice(0xFE00, 0xFE00 + 2 * 256));\n *\n * for( var i = 0; i < bidi_accumulate.length; i++) {\n * \tif(bidi_accumulate[i] === undefined || bidi_accumulate[i] === 'ON')\n * \t\tbidi_accumulate[i] = 'N'; //mark as neutral to conserve space and substitute undefined\n * }\n * var bidiAccumulateStr = 'return [ \"' + bidi_accumulate.toString().replace(/,/g, '\", \"') + '\" ];';\n * require(\"fs\").writeFile('unicode-types.js', bidiAccumulateStr);\n *\n * Based on:\n * https://github.com/mathiasbynens/unicode-8.0.0\n */\n var bidiUnicodeTypes = [\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"S\",\n \"B\",\n \"S\",\n \"WS\",\n \"B\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"B\",\n \"B\",\n \"B\",\n \"S\",\n \"WS\",\n \"N\",\n \"N\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"ES\",\n \"CS\",\n \"ES\",\n \"CS\",\n \"CS\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"CS\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"B\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"CS\",\n \"N\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"N\",\n \"N\",\n \"BN\",\n \"N\",\n \"N\",\n \"ET\",\n \"ET\",\n \"EN\",\n \"EN\",\n \"N\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"EN\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"ET\",\n \"N\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"R\",\n \"NSM\",\n \"R\",\n \"NSM\",\n \"NSM\",\n \"R\",\n \"NSM\",\n \"NSM\",\n \"R\",\n \"NSM\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"N\",\n \"N\",\n \"AL\",\n \"ET\",\n \"ET\",\n \"AL\",\n \"CS\",\n \"AL\",\n \"N\",\n \"N\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"AL\",\n \"AL\",\n \"N\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"AN\",\n \"ET\",\n \"AN\",\n \"AN\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"NSM\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"AN\",\n \"N\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"AL\",\n \"AL\",\n \"NSM\",\n \"NSM\",\n \"N\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"AL\",\n \"AL\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"N\",\n \"AL\",\n \"AL\",\n \"NSM\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"N\",\n \"N\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"AL\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"R\",\n \"R\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"R\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"WS\",\n \"WS\",\n \"WS\",\n \"WS\",\n \"WS\",\n \"WS\",\n \"WS\",\n \"WS\",\n \"WS\",\n \"WS\",\n \"WS\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"L\",\n \"R\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"WS\",\n \"B\",\n \"LRE\",\n \"RLE\",\n \"PDF\",\n \"LRO\",\n \"RLO\",\n \"CS\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"CS\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"WS\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"N\",\n \"LRI\",\n \"RLI\",\n \"FSI\",\n \"PDI\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"BN\",\n \"EN\",\n \"L\",\n \"N\",\n \"N\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"ES\",\n \"ES\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"ES\",\n \"ES\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"R\",\n \"NSM\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"ES\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"N\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"N\",\n \"R\",\n \"N\",\n \"R\",\n \"R\",\n \"N\",\n \"R\",\n \"R\",\n \"N\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"R\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"NSM\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"CS\",\n \"N\",\n \"CS\",\n \"N\",\n \"N\",\n \"CS\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"ET\",\n \"N\",\n \"N\",\n \"ES\",\n \"ES\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"ET\",\n \"ET\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"N\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"AL\",\n \"N\",\n \"N\",\n \"BN\",\n \"N\",\n \"N\",\n \"N\",\n \"ET\",\n \"ET\",\n \"ET\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"ES\",\n \"CS\",\n \"ES\",\n \"CS\",\n \"CS\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"EN\",\n \"CS\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"L\",\n \"L\",\n \"L\",\n \"N\",\n \"N\",\n \"N\",\n \"ET\",\n \"ET\",\n \"N\",\n \"N\",\n \"N\",\n \"ET\",\n \"ET\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\",\n \"N\"\n ];\n\n /**\n * Unicode Bidi algorithm compliant Bidi engine.\n * For reference see http://unicode.org/reports/tr9/\n */\n\n /**\n * constructor ( options )\n *\n * Initializes Bidi engine\n *\n * @param {Object} See 'setOptions' below for detailed description.\n * options are cashed between invocation of 'doBidiReorder' method\n *\n * sample usage pattern of BidiEngine:\n * var opt = {\n * \tisInputVisual: true,\n * \tisInputRtl: false,\n * \tisOutputVisual: false,\n * \tisOutputRtl: false,\n * \tisSymmetricSwapping: true\n * }\n * var sourceToTarget = [], levels = [];\n * var bidiEng = Globalize.bidiEngine(opt);\n * var src = \"text string to be reordered\";\n * var ret = bidiEng.doBidiReorder(src, sourceToTarget, levels);\n */\n\n jsPDF.__bidiEngine__ = jsPDF.prototype.__bidiEngine__ = function(options) {\n var _UNICODE_TYPES = _bidiUnicodeTypes;\n\n var _STATE_TABLE_LTR = [\n [0, 3, 0, 1, 0, 0, 0],\n [0, 3, 0, 1, 2, 2, 0],\n [0, 3, 0, 0x11, 2, 0, 1],\n [0, 3, 5, 5, 4, 1, 0],\n [0, 3, 0x15, 0x15, 4, 0, 1],\n [0, 3, 5, 5, 4, 2, 0]\n ];\n\n var _STATE_TABLE_RTL = [\n [2, 0, 1, 1, 0, 1, 0],\n [2, 0, 1, 1, 0, 2, 0],\n [2, 0, 2, 1, 3, 2, 0],\n [2, 0, 2, 0x21, 3, 1, 1]\n ];\n\n var _TYPE_NAMES_MAP = { L: 0, R: 1, EN: 2, AN: 3, N: 4, B: 5, S: 6 };\n\n var _UNICODE_RANGES_MAP = {\n 0: 0,\n 5: 1,\n 6: 2,\n 7: 3,\n 0x20: 4,\n 0xfb: 5,\n 0xfe: 6,\n 0xff: 7\n };\n\n var _SWAP_TABLE = [\n \"\\u0028\",\n \"\\u0029\",\n \"\\u0028\",\n \"\\u003C\",\n \"\\u003E\",\n \"\\u003C\",\n \"\\u005B\",\n \"\\u005D\",\n \"\\u005B\",\n \"\\u007B\",\n \"\\u007D\",\n \"\\u007B\",\n \"\\u00AB\",\n \"\\u00BB\",\n \"\\u00AB\",\n \"\\u2039\",\n \"\\u203A\",\n \"\\u2039\",\n \"\\u2045\",\n \"\\u2046\",\n \"\\u2045\",\n \"\\u207D\",\n \"\\u207E\",\n \"\\u207D\",\n \"\\u208D\",\n \"\\u208E\",\n \"\\u208D\",\n \"\\u2264\",\n \"\\u2265\",\n \"\\u2264\",\n \"\\u2329\",\n \"\\u232A\",\n \"\\u2329\",\n \"\\uFE59\",\n \"\\uFE5A\",\n \"\\uFE59\",\n \"\\uFE5B\",\n \"\\uFE5C\",\n \"\\uFE5B\",\n \"\\uFE5D\",\n \"\\uFE5E\",\n \"\\uFE5D\",\n \"\\uFE64\",\n \"\\uFE65\",\n \"\\uFE64\"\n ];\n\n var _LTR_RANGES_REG_EXPR = new RegExp(\n /^([1-4|9]|1[0-9]|2[0-9]|3[0168]|4[04589]|5[012]|7[78]|159|16[0-9]|17[0-2]|21[569]|22[03489]|250)$/\n );\n\n var _lastArabic = false,\n _hasUbatAl,\n _hasUbatB,\n _hasUbatS,\n DIR_LTR = 0,\n DIR_RTL = 1,\n _isInVisual,\n _isInRtl,\n _isOutVisual,\n _isOutRtl,\n _isSymmetricSwapping,\n _dir = DIR_LTR;\n\n this.__bidiEngine__ = {};\n\n var _init = function(text, sourceToTargetMap) {\n if (sourceToTargetMap) {\n for (var i = 0; i < text.length; i++) {\n sourceToTargetMap[i] = i;\n }\n }\n if (_isInRtl === undefined) {\n _isInRtl = _isContextualDirRtl(text);\n }\n if (_isOutRtl === undefined) {\n _isOutRtl = _isContextualDirRtl(text);\n }\n };\n\n // for reference see 3.2 in http://unicode.org/reports/tr9/\n //\n var _getCharType = function(ch) {\n var charCode = ch.charCodeAt(),\n range = charCode >> 8,\n rangeIdx = _UNICODE_RANGES_MAP[range];\n\n if (rangeIdx !== undefined) {\n return _UNICODE_TYPES[rangeIdx * 256 + (charCode & 0xff)];\n } else if (range === 0xfc || range === 0xfd) {\n return \"AL\";\n } else if (_LTR_RANGES_REG_EXPR.test(range)) {\n //unlikely case\n return \"L\";\n } else if (range === 8) {\n // even less likely\n return \"R\";\n }\n return \"N\"; //undefined type, mark as neutral\n };\n\n var _isContextualDirRtl = function(text) {\n for (var i = 0, charType; i < text.length; i++) {\n charType = _getCharType(text.charAt(i));\n if (charType === \"L\") {\n return false;\n } else if (charType === \"R\") {\n return true;\n }\n }\n return false;\n };\n\n // for reference see 3.3.4 & 3.3.5 in http://unicode.org/reports/tr9/\n //\n var _resolveCharType = function(chars, types, resolvedTypes, index) {\n var cType = types[index],\n wType,\n nType,\n i,\n len;\n switch (cType) {\n case \"L\":\n case \"R\":\n _lastArabic = false;\n break;\n case \"N\":\n case \"AN\":\n break;\n\n case \"EN\":\n if (_lastArabic) {\n cType = \"AN\";\n }\n break;\n\n case \"AL\":\n _lastArabic = true;\n _hasUbatAl = true;\n cType = \"R\";\n break;\n\n case \"WS\":\n cType = \"N\";\n break;\n\n case \"CS\":\n if (\n index < 1 ||\n index + 1 >= types.length ||\n ((wType = resolvedTypes[index - 1]) !== \"EN\" && wType !== \"AN\") ||\n ((nType = types[index + 1]) !== \"EN\" && nType !== \"AN\")\n ) {\n cType = \"N\";\n } else if (_lastArabic) {\n nType = \"AN\";\n }\n cType = nType === wType ? nType : \"N\";\n break;\n\n case \"ES\":\n wType = index > 0 ? resolvedTypes[index - 1] : \"B\";\n cType =\n wType === \"EN\" &&\n index + 1 < types.length &&\n types[index + 1] === \"EN\"\n ? \"EN\"\n : \"N\";\n break;\n\n case \"ET\":\n if (index > 0 && resolvedTypes[index - 1] === \"EN\") {\n cType = \"EN\";\n break;\n } else if (_lastArabic) {\n cType = \"N\";\n break;\n }\n i = index + 1;\n len = types.length;\n while (i < len && types[i] === \"ET\") {\n i++;\n }\n if (i < len && types[i] === \"EN\") {\n cType = \"EN\";\n } else {\n cType = \"N\";\n }\n break;\n\n case \"NSM\":\n if (_isInVisual && !_isInRtl) {\n //V->L\n len = types.length;\n i = index + 1;\n while (i < len && types[i] === \"NSM\") {\n i++;\n }\n if (i < len) {\n var c = chars[index];\n var rtlCandidate = (c >= 0x0591 && c <= 0x08ff) || c === 0xfb1e;\n wType = types[i];\n if (rtlCandidate && (wType === \"R\" || wType === \"AL\")) {\n cType = \"R\";\n break;\n }\n }\n }\n if (index < 1 || (wType = types[index - 1]) === \"B\") {\n cType = \"N\";\n } else {\n cType = resolvedTypes[index - 1];\n }\n break;\n\n case \"B\":\n _lastArabic = false;\n _hasUbatB = true;\n cType = _dir;\n break;\n\n case \"S\":\n _hasUbatS = true;\n cType = \"N\";\n break;\n\n case \"LRE\":\n case \"RLE\":\n case \"LRO\":\n case \"RLO\":\n case \"PDF\":\n _lastArabic = false;\n break;\n case \"BN\":\n cType = \"N\";\n break;\n }\n return cType;\n };\n\n var _handleUbatS = function(types, levels, length) {\n for (var i = 0; i < length; i++) {\n if (types[i] === \"S\") {\n levels[i] = _dir;\n for (var j = i - 1; j >= 0; j--) {\n if (types[j] === \"WS\") {\n levels[j] = _dir;\n } else {\n break;\n }\n }\n }\n }\n };\n\n var _invertString = function(text, sourceToTargetMap, levels) {\n var charArray = text.split(\"\");\n if (levels) {\n _computeLevels(charArray, levels, { hiLevel: _dir });\n }\n charArray.reverse();\n sourceToTargetMap && sourceToTargetMap.reverse();\n return charArray.join(\"\");\n };\n\n // For reference see 3.3 in http://unicode.org/reports/tr9/\n //\n var _computeLevels = function(chars, levels, params) {\n var action,\n condition,\n i,\n index,\n newLevel,\n prevState,\n condPos = -1,\n len = chars.length,\n newState = 0,\n resolvedTypes = [],\n stateTable = _dir ? _STATE_TABLE_RTL : _STATE_TABLE_LTR,\n types = [];\n\n _lastArabic = false;\n _hasUbatAl = false;\n _hasUbatB = false;\n _hasUbatS = false;\n for (i = 0; i < len; i++) {\n types[i] = _getCharType(chars[i]);\n }\n for (index = 0; index < len; index++) {\n prevState = newState;\n resolvedTypes[index] = _resolveCharType(\n chars,\n types,\n resolvedTypes,\n index\n );\n newState = stateTable[prevState][_TYPE_NAMES_MAP[resolvedTypes[index]]];\n action = newState & 0xf0;\n newState &= 0x0f;\n levels[index] = newLevel = stateTable[newState][5];\n if (action > 0) {\n if (action === 0x10) {\n for (i = condPos; i < index; i++) {\n levels[i] = 1;\n }\n condPos = -1;\n } else {\n condPos = -1;\n }\n }\n condition = stateTable[newState][6];\n if (condition) {\n if (condPos === -1) {\n condPos = index;\n }\n } else {\n if (condPos > -1) {\n for (i = condPos; i < index; i++) {\n levels[i] = newLevel;\n }\n condPos = -1;\n }\n }\n if (types[index] === \"B\") {\n levels[index] = 0;\n }\n params.hiLevel |= newLevel;\n }\n if (_hasUbatS) {\n _handleUbatS(types, levels, len);\n }\n };\n\n // for reference see 3.4 in http://unicode.org/reports/tr9/\n //\n var _invertByLevel = function(\n level,\n charArray,\n sourceToTargetMap,\n levels,\n params\n ) {\n if (params.hiLevel < level) {\n return;\n }\n if (level === 1 && _dir === DIR_RTL && !_hasUbatB) {\n charArray.reverse();\n sourceToTargetMap && sourceToTargetMap.reverse();\n return;\n }\n var ch,\n high,\n end,\n low,\n len = charArray.length,\n start = 0;\n\n while (start < len) {\n if (levels[start] >= level) {\n end = start + 1;\n while (end < len && levels[end] >= level) {\n end++;\n }\n for (low = start, high = end - 1; low < high; low++, high--) {\n ch = charArray[low];\n charArray[low] = charArray[high];\n charArray[high] = ch;\n if (sourceToTargetMap) {\n ch = sourceToTargetMap[low];\n sourceToTargetMap[low] = sourceToTargetMap[high];\n sourceToTargetMap[high] = ch;\n }\n }\n start = end;\n }\n start++;\n }\n };\n\n // for reference see 7 & BD16 in http://unicode.org/reports/tr9/\n //\n var _symmetricSwap = function(charArray, levels, params) {\n if (params.hiLevel !== 0 && _isSymmetricSwapping) {\n for (var i = 0, index; i < charArray.length; i++) {\n if (levels[i] === 1) {\n index = _SWAP_TABLE.indexOf(charArray[i]);\n if (index >= 0) {\n charArray[i] = _SWAP_TABLE[index + 1];\n }\n }\n }\n }\n };\n\n var _reorder = function(text, sourceToTargetMap, levels) {\n var charArray = text.split(\"\"),\n params = { hiLevel: _dir };\n\n if (!levels) {\n levels = [];\n }\n _computeLevels(charArray, levels, params);\n _symmetricSwap(charArray, levels, params);\n _invertByLevel(DIR_RTL + 1, charArray, sourceToTargetMap, levels, params);\n _invertByLevel(DIR_RTL, charArray, sourceToTargetMap, levels, params);\n return charArray.join(\"\");\n };\n\n // doBidiReorder( text, sourceToTargetMap, levels )\n // Performs Bidi reordering by implementing Unicode Bidi algorithm.\n // Returns reordered string\n // @text [String]:\n // - input string to be reordered, this is input parameter\n // $sourceToTargetMap [Array] (optional)\n // - resultant mapping between input and output strings, this is output parameter\n // $levels [Array] (optional)\n // - array of calculated Bidi levels, , this is output parameter\n this.__bidiEngine__.doBidiReorder = function(\n text,\n sourceToTargetMap,\n levels\n ) {\n _init(text, sourceToTargetMap);\n if (!_isInVisual && _isOutVisual && !_isOutRtl) {\n // LLTR->VLTR, LRTL->VLTR\n _dir = _isInRtl ? DIR_RTL : DIR_LTR;\n text = _reorder(text, sourceToTargetMap, levels);\n } else if (_isInVisual && _isOutVisual && _isInRtl ^ _isOutRtl) {\n // VRTL->VLTR, VLTR->VRTL\n _dir = _isInRtl ? DIR_RTL : DIR_LTR;\n text = _invertString(text, sourceToTargetMap, levels);\n } else if (!_isInVisual && _isOutVisual && _isOutRtl) {\n // LLTR->VRTL, LRTL->VRTL\n _dir = _isInRtl ? DIR_RTL : DIR_LTR;\n text = _reorder(text, sourceToTargetMap, levels);\n text = _invertString(text, sourceToTargetMap);\n } else if (_isInVisual && !_isInRtl && !_isOutVisual && !_isOutRtl) {\n // VLTR->LLTR\n _dir = DIR_LTR;\n text = _reorder(text, sourceToTargetMap, levels);\n } else if (_isInVisual && !_isOutVisual && _isInRtl ^ _isOutRtl) {\n // VLTR->LRTL, VRTL->LLTR\n text = _invertString(text, sourceToTargetMap);\n if (_isInRtl) {\n //LLTR -> VLTR\n _dir = DIR_LTR;\n text = _reorder(text, sourceToTargetMap, levels);\n } else {\n //LRTL -> VRTL\n _dir = DIR_RTL;\n text = _reorder(text, sourceToTargetMap, levels);\n text = _invertString(text, sourceToTargetMap);\n }\n } else if (_isInVisual && _isInRtl && !_isOutVisual && _isOutRtl) {\n // VRTL->LRTL\n _dir = DIR_RTL;\n text = _reorder(text, sourceToTargetMap, levels);\n text = _invertString(text, sourceToTargetMap);\n } else if (!_isInVisual && !_isOutVisual && _isInRtl ^ _isOutRtl) {\n // LRTL->LLTR, LLTR->LRTL\n var isSymmetricSwappingOrig = _isSymmetricSwapping;\n if (_isInRtl) {\n //LRTL->LLTR\n _dir = DIR_RTL;\n text = _reorder(text, sourceToTargetMap, levels);\n _dir = DIR_LTR;\n _isSymmetricSwapping = false;\n text = _reorder(text, sourceToTargetMap, levels);\n _isSymmetricSwapping = isSymmetricSwappingOrig;\n } else {\n //LLTR->LRTL\n _dir = DIR_LTR;\n text = _reorder(text, sourceToTargetMap, levels);\n text = _invertString(text, sourceToTargetMap);\n _dir = DIR_RTL;\n _isSymmetricSwapping = false;\n text = _reorder(text, sourceToTargetMap, levels);\n _isSymmetricSwapping = isSymmetricSwappingOrig;\n text = _invertString(text, sourceToTargetMap);\n }\n }\n return text;\n };\n\n /**\n * @name setOptions( options )\n * @function\n * Sets options for Bidi conversion\n * @param {Object}:\n * - isInputVisual {boolean} (defaults to false): allowed values: true(Visual mode), false(Logical mode)\n * - isInputRtl {boolean}: allowed values true(Right-to-left direction), false (Left-to-right directiion), undefined(Contectual direction, i.e.direction defined by first strong character of input string)\n * - isOutputVisual {boolean} (defaults to false): allowed values: true(Visual mode), false(Logical mode)\n * - isOutputRtl {boolean}: allowed values true(Right-to-left direction), false (Left-to-right directiion), undefined(Contectual direction, i.e.direction defined by first strong characterof input string)\n * - isSymmetricSwapping {boolean} (defaults to false): allowed values true(needs symmetric swapping), false (no need in symmetric swapping),\n */\n this.__bidiEngine__.setOptions = function(options) {\n if (options) {\n _isInVisual = options.isInputVisual;\n _isOutVisual = options.isOutputVisual;\n _isInRtl = options.isInputRtl;\n _isOutRtl = options.isOutputRtl;\n _isSymmetricSwapping = options.isSymmetricSwapping;\n }\n };\n\n this.__bidiEngine__.setOptions(options);\n return this.__bidiEngine__;\n };\n\n var _bidiUnicodeTypes = bidiUnicodeTypes;\n\n var bidiEngine = new jsPDF.__bidiEngine__({ isInputVisual: true });\n\n var bidiEngineFunction = function(args) {\n var text = args.text;\n var x = args.x;\n var y = args.y;\n var options = args.options || {};\n var mutex = args.mutex || {};\n var lang = options.lang;\n var tmpText = [];\n\n options.isInputVisual =\n typeof options.isInputVisual === \"boolean\" ? options.isInputVisual : true;\n bidiEngine.setOptions(options);\n\n if (Object.prototype.toString.call(text) === \"[object Array]\") {\n var i = 0;\n tmpText = [];\n for (i = 0; i < text.length; i += 1) {\n if (Object.prototype.toString.call(text[i]) === \"[object Array]\") {\n tmpText.push([\n bidiEngine.doBidiReorder(text[i][0]),\n text[i][1],\n text[i][2]\n ]);\n } else {\n tmpText.push([bidiEngine.doBidiReorder(text[i])]);\n }\n }\n args.text = tmpText;\n } else {\n args.text = bidiEngine.doBidiReorder(text);\n }\n bidiEngine.setOptions({ isInputVisual: true });\n };\n\n jsPDF.API.events.push([\"postProcessText\", bidiEngineFunction]);\n})(jsPDF);\n","/* eslint-disable no-control-regex */\n/************************************************\n * Title : custom font *\n * Start Data : 2017. 01. 22. *\n * Comment : TEXT API *\n ************************************************/\n\n/******************************\n * jsPDF extension API Design *\n * ****************************/\n\nimport { jsPDF } from \"../jspdf.js\";\n\njsPDF.API.TTFFont = (function() {\n /************************************************************************/\n /* function : open */\n /* comment : Decode the encoded ttf content and create a TTFFont object. */\n /************************************************************************/\n TTFFont.open = function(file) {\n return new TTFFont(file);\n };\n /***************************************************************/\n /* function : TTFFont gernerator */\n /* comment : Decode TTF contents are parsed, Data, */\n /* Subset object is created, and registerTTF function is called.*/\n /***************************************************************/\n function TTFFont(rawData) {\n var data;\n this.rawData = rawData;\n data = this.contents = new Data(rawData);\n this.contents.pos = 4;\n if (data.readString(4) === \"ttcf\") {\n throw new Error(\"TTCF not supported.\");\n } else {\n data.pos = 0;\n this.parse();\n this.subset = new Subset(this);\n this.registerTTF();\n }\n }\n /********************************************************/\n /* function : parse */\n /* comment : TTF Parses the file contents by each table.*/\n /********************************************************/\n TTFFont.prototype.parse = function() {\n this.directory = new Directory(this.contents);\n this.head = new HeadTable(this);\n this.name = new NameTable(this);\n this.cmap = new CmapTable(this);\n this.toUnicode = {};\n this.hhea = new HheaTable(this);\n this.maxp = new MaxpTable(this);\n this.hmtx = new HmtxTable(this);\n this.post = new PostTable(this);\n this.os2 = new OS2Table(this);\n this.loca = new LocaTable(this);\n this.glyf = new GlyfTable(this);\n this.ascender =\n (this.os2.exists && this.os2.ascender) || this.hhea.ascender;\n this.decender =\n (this.os2.exists && this.os2.decender) || this.hhea.decender;\n this.lineGap = (this.os2.exists && this.os2.lineGap) || this.hhea.lineGap;\n return (this.bbox = [\n this.head.xMin,\n this.head.yMin,\n this.head.xMax,\n this.head.yMax\n ]);\n };\n /***************************************************************/\n /* function : registerTTF */\n /* comment : Get the value to assign pdf font descriptors. */\n /***************************************************************/\n TTFFont.prototype.registerTTF = function() {\n var e, hi, low, raw, _ref;\n this.scaleFactor = 1000.0 / this.head.unitsPerEm;\n this.bbox = function() {\n var _i, _len, _ref, _results;\n _ref = this.bbox;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n e = _ref[_i];\n _results.push(Math.round(e * this.scaleFactor));\n }\n return _results;\n }.call(this);\n this.stemV = 0;\n if (this.post.exists) {\n raw = this.post.italic_angle;\n hi = raw >> 16;\n low = raw & 0xff;\n if ((hi & 0x8000) !== 0) {\n hi = -((hi ^ 0xffff) + 1);\n }\n this.italicAngle = +(\"\" + hi + \".\" + low);\n } else {\n this.italicAngle = 0;\n }\n this.ascender = Math.round(this.ascender * this.scaleFactor);\n this.decender = Math.round(this.decender * this.scaleFactor);\n this.lineGap = Math.round(this.lineGap * this.scaleFactor);\n this.capHeight = (this.os2.exists && this.os2.capHeight) || this.ascender;\n this.xHeight = (this.os2.exists && this.os2.xHeight) || 0;\n this.familyClass = ((this.os2.exists && this.os2.familyClass) || 0) >> 8;\n this.isSerif =\n (_ref = this.familyClass) === 1 ||\n _ref === 2 ||\n _ref === 3 ||\n _ref === 4 ||\n _ref === 5 ||\n _ref === 7;\n this.isScript = this.familyClass === 10;\n this.flags = 0;\n if (this.post.isFixedPitch) {\n this.flags |= 1 << 0;\n }\n if (this.isSerif) {\n this.flags |= 1 << 1;\n }\n if (this.isScript) {\n this.flags |= 1 << 3;\n }\n if (this.italicAngle !== 0) {\n this.flags |= 1 << 6;\n }\n this.flags |= 1 << 5;\n if (!this.cmap.unicode) {\n throw new Error(\"No unicode cmap for font\");\n }\n };\n TTFFont.prototype.characterToGlyph = function(character) {\n var _ref;\n return (\n ((_ref = this.cmap.unicode) != null ? _ref.codeMap[character] : void 0) ||\n 0\n );\n };\n TTFFont.prototype.widthOfGlyph = function(glyph) {\n var scale;\n scale = 1000.0 / this.head.unitsPerEm;\n return this.hmtx.forGlyph(glyph).advance * scale;\n };\n TTFFont.prototype.widthOfString = function(string, size, charSpace) {\n var charCode, i, scale, width, _ref;\n string = \"\" + string;\n width = 0;\n for (\n i = 0, _ref = string.length;\n 0 <= _ref ? i < _ref : i > _ref;\n i = 0 <= _ref ? ++i : --i\n ) {\n charCode = string.charCodeAt(i);\n width +=\n this.widthOfGlyph(this.characterToGlyph(charCode)) +\n charSpace * (1000 / size) || 0;\n }\n scale = size / 1000;\n return width * scale;\n };\n TTFFont.prototype.lineHeight = function(size, includeGap) {\n var gap;\n if (includeGap == null) {\n includeGap = false;\n }\n gap = includeGap ? this.lineGap : 0;\n return ((this.ascender + gap - this.decender) / 1000) * size;\n };\n return TTFFont;\n})();\n\n/************************************************************************************************/\n/* function : Data */\n/* comment : The ttf data decoded and stored in an array is read and written to the Data object.*/\n/************************************************************************************************/\nvar Data = (function() {\n function Data(data) {\n this.data = data != null ? data : [];\n this.pos = 0;\n this.length = this.data.length;\n }\n Data.prototype.readByte = function() {\n return this.data[this.pos++];\n };\n Data.prototype.writeByte = function(byte) {\n return (this.data[this.pos++] = byte);\n };\n Data.prototype.readUInt32 = function() {\n var b1, b2, b3, b4;\n b1 = this.readByte() * 0x1000000;\n b2 = this.readByte() << 16;\n b3 = this.readByte() << 8;\n b4 = this.readByte();\n return b1 + b2 + b3 + b4;\n };\n Data.prototype.writeUInt32 = function(val) {\n this.writeByte((val >>> 24) & 0xff);\n this.writeByte((val >> 16) & 0xff);\n this.writeByte((val >> 8) & 0xff);\n return this.writeByte(val & 0xff);\n };\n Data.prototype.readInt32 = function() {\n var int;\n int = this.readUInt32();\n if (int >= 0x80000000) {\n return int - 0x100000000;\n } else {\n return int;\n }\n };\n Data.prototype.writeInt32 = function(val) {\n if (val < 0) {\n val += 0x100000000;\n }\n return this.writeUInt32(val);\n };\n Data.prototype.readUInt16 = function() {\n var b1, b2;\n b1 = this.readByte() << 8;\n b2 = this.readByte();\n return b1 | b2;\n };\n Data.prototype.writeUInt16 = function(val) {\n this.writeByte((val >> 8) & 0xff);\n return this.writeByte(val & 0xff);\n };\n Data.prototype.readInt16 = function() {\n var int;\n int = this.readUInt16();\n if (int >= 0x8000) {\n return int - 0x10000;\n } else {\n return int;\n }\n };\n Data.prototype.writeInt16 = function(val) {\n if (val < 0) {\n val += 0x10000;\n }\n return this.writeUInt16(val);\n };\n Data.prototype.readString = function(length) {\n var i, ret;\n ret = [];\n for (\n i = 0;\n 0 <= length ? i < length : i > length;\n i = 0 <= length ? ++i : --i\n ) {\n ret[i] = String.fromCharCode(this.readByte());\n }\n return ret.join(\"\");\n };\n Data.prototype.writeString = function(val) {\n var i, _ref, _results;\n _results = [];\n for (\n i = 0, _ref = val.length;\n 0 <= _ref ? i < _ref : i > _ref;\n i = 0 <= _ref ? ++i : --i\n ) {\n _results.push(this.writeByte(val.charCodeAt(i)));\n }\n return _results;\n };\n /*Data.prototype.stringAt = function (pos, length) {\n this.pos = pos;\n return this.readString(length);\n };*/\n Data.prototype.readShort = function() {\n return this.readInt16();\n };\n Data.prototype.writeShort = function(val) {\n return this.writeInt16(val);\n };\n Data.prototype.readLongLong = function() {\n var b1, b2, b3, b4, b5, b6, b7, b8;\n b1 = this.readByte();\n b2 = this.readByte();\n b3 = this.readByte();\n b4 = this.readByte();\n b5 = this.readByte();\n b6 = this.readByte();\n b7 = this.readByte();\n b8 = this.readByte();\n if (b1 & 0x80) {\n return (\n ((b1 ^ 0xff) * 0x100000000000000 +\n (b2 ^ 0xff) * 0x1000000000000 +\n (b3 ^ 0xff) * 0x10000000000 +\n (b4 ^ 0xff) * 0x100000000 +\n (b5 ^ 0xff) * 0x1000000 +\n (b6 ^ 0xff) * 0x10000 +\n (b7 ^ 0xff) * 0x100 +\n (b8 ^ 0xff) +\n 1) *\n -1\n );\n }\n return (\n b1 * 0x100000000000000 +\n b2 * 0x1000000000000 +\n b3 * 0x10000000000 +\n b4 * 0x100000000 +\n b5 * 0x1000000 +\n b6 * 0x10000 +\n b7 * 0x100 +\n b8\n );\n };\n Data.prototype.writeLongLong = function(val) {\n var high, low;\n high = Math.floor(val / 0x100000000);\n low = val & 0xffffffff;\n this.writeByte((high >> 24) & 0xff);\n this.writeByte((high >> 16) & 0xff);\n this.writeByte((high >> 8) & 0xff);\n this.writeByte(high & 0xff);\n this.writeByte((low >> 24) & 0xff);\n this.writeByte((low >> 16) & 0xff);\n this.writeByte((low >> 8) & 0xff);\n return this.writeByte(low & 0xff);\n };\n Data.prototype.readInt = function() {\n return this.readInt32();\n };\n Data.prototype.writeInt = function(val) {\n return this.writeInt32(val);\n };\n /*Data.prototype.slice = function (start, end) {\n return this.data.slice(start, end);\n };*/\n Data.prototype.read = function(bytes) {\n var buf, i;\n buf = [];\n for (\n i = 0;\n 0 <= bytes ? i < bytes : i > bytes;\n i = 0 <= bytes ? ++i : --i\n ) {\n buf.push(this.readByte());\n }\n return buf;\n };\n Data.prototype.write = function(bytes) {\n var byte, i, _len, _results;\n _results = [];\n for (i = 0, _len = bytes.length; i < _len; i++) {\n byte = bytes[i];\n _results.push(this.writeByte(byte));\n }\n return _results;\n };\n return Data;\n})();\n\nvar Directory = (function() {\n var checksum;\n\n /*****************************************************************************************************/\n /* function : Directory generator */\n /* comment : Initialize the offset, tag, length, and checksum for each table for the font to be used.*/\n /*****************************************************************************************************/\n function Directory(data) {\n var entry, i, _ref;\n this.scalarType = data.readInt();\n this.tableCount = data.readShort();\n this.searchRange = data.readShort();\n this.entrySelector = data.readShort();\n this.rangeShift = data.readShort();\n this.tables = {};\n for (\n i = 0, _ref = this.tableCount;\n 0 <= _ref ? i < _ref : i > _ref;\n i = 0 <= _ref ? ++i : --i\n ) {\n entry = {\n tag: data.readString(4),\n checksum: data.readInt(),\n offset: data.readInt(),\n length: data.readInt()\n };\n this.tables[entry.tag] = entry;\n }\n }\n /********************************************************************************************************/\n /* function : encode */\n /* comment : It encodes and stores the font table object and information used for the directory object. */\n /********************************************************************************************************/\n Directory.prototype.encode = function(tables) {\n var adjustment,\n directory,\n directoryLength,\n entrySelector,\n headOffset,\n log2,\n offset,\n rangeShift,\n searchRange,\n sum,\n table,\n tableCount,\n tableData,\n tag;\n tableCount = Object.keys(tables).length;\n log2 = Math.log(2);\n searchRange = Math.floor(Math.log(tableCount) / log2) * 16;\n entrySelector = Math.floor(searchRange / log2);\n rangeShift = tableCount * 16 - searchRange;\n directory = new Data();\n directory.writeInt(this.scalarType);\n directory.writeShort(tableCount);\n directory.writeShort(searchRange);\n directory.writeShort(entrySelector);\n directory.writeShort(rangeShift);\n directoryLength = tableCount * 16;\n offset = directory.pos + directoryLength;\n headOffset = null;\n tableData = [];\n for (tag in tables) {\n table = tables[tag];\n directory.writeString(tag);\n directory.writeInt(checksum(table));\n directory.writeInt(offset);\n directory.writeInt(table.length);\n tableData = tableData.concat(table);\n if (tag === \"head\") {\n headOffset = offset;\n }\n offset += table.length;\n while (offset % 4) {\n tableData.push(0);\n offset++;\n }\n }\n directory.write(tableData);\n sum = checksum(directory.data);\n adjustment = 0xb1b0afba - sum;\n directory.pos = headOffset + 8;\n directory.writeUInt32(adjustment);\n return directory.data;\n };\n /***************************************************************/\n /* function : checksum */\n /* comment : Duplicate the table for the tag. */\n /***************************************************************/\n checksum = function(data) {\n var i, sum, tmp, _ref;\n data = __slice.call(data);\n while (data.length % 4) {\n data.push(0);\n }\n tmp = new Data(data);\n sum = 0;\n for (i = 0, _ref = data.length; i < _ref; i = i += 4) {\n sum += tmp.readUInt32();\n }\n return sum & 0xffffffff;\n };\n return Directory;\n})();\n\nvar Table,\n __hasProp = {}.hasOwnProperty,\n __extends = function(child, parent) {\n for (var key in parent) {\n if (__hasProp.call(parent, key)) child[key] = parent[key];\n }\n\n function ctor() {\n this.constructor = child;\n }\n ctor.prototype = parent.prototype;\n child.prototype = new ctor();\n child.__super__ = parent.prototype;\n return child;\n };\n\n/***************************************************************/\n/* function : Table */\n/* comment : Save info for each table, and parse the table. */\n/***************************************************************/\nTable = (function() {\n function Table(file) {\n var info;\n this.file = file;\n info = this.file.directory.tables[this.tag];\n this.exists = !!info;\n if (info) {\n (this.offset = info.offset), (this.length = info.length);\n this.parse(this.file.contents);\n }\n }\n Table.prototype.parse = function() {};\n Table.prototype.encode = function() {};\n Table.prototype.raw = function() {\n if (!this.exists) {\n return null;\n }\n this.file.contents.pos = this.offset;\n return this.file.contents.read(this.length);\n };\n return Table;\n})();\n\nvar HeadTable = (function(_super) {\n __extends(HeadTable, _super);\n\n function HeadTable() {\n return HeadTable.__super__.constructor.apply(this, arguments);\n }\n HeadTable.prototype.tag = \"head\";\n HeadTable.prototype.parse = function(data) {\n data.pos = this.offset;\n this.version = data.readInt();\n this.revision = data.readInt();\n this.checkSumAdjustment = data.readInt();\n this.magicNumber = data.readInt();\n this.flags = data.readShort();\n this.unitsPerEm = data.readShort();\n this.created = data.readLongLong();\n this.modified = data.readLongLong();\n this.xMin = data.readShort();\n this.yMin = data.readShort();\n this.xMax = data.readShort();\n this.yMax = data.readShort();\n this.macStyle = data.readShort();\n this.lowestRecPPEM = data.readShort();\n this.fontDirectionHint = data.readShort();\n this.indexToLocFormat = data.readShort();\n return (this.glyphDataFormat = data.readShort());\n };\n HeadTable.prototype.encode = function(indexToLocFormat) {\n var table;\n table = new Data();\n table.writeInt(this.version);\n table.writeInt(this.revision);\n table.writeInt(this.checkSumAdjustment);\n table.writeInt(this.magicNumber);\n table.writeShort(this.flags);\n table.writeShort(this.unitsPerEm);\n table.writeLongLong(this.created);\n table.writeLongLong(this.modified);\n table.writeShort(this.xMin);\n table.writeShort(this.yMin);\n table.writeShort(this.xMax);\n table.writeShort(this.yMax);\n table.writeShort(this.macStyle);\n table.writeShort(this.lowestRecPPEM);\n table.writeShort(this.fontDirectionHint);\n table.writeShort(indexToLocFormat);\n table.writeShort(this.glyphDataFormat);\n return table.data;\n };\n return HeadTable;\n})(Table);\n\n/************************************************************************************/\n/* function : CmapEntry */\n/* comment : Cmap Initializes and encodes object information (required by pdf spec).*/\n/************************************************************************************/\nvar CmapEntry = (function() {\n function CmapEntry(data, offset) {\n var code,\n count,\n endCode,\n glyphId,\n glyphIds,\n i,\n idDelta,\n idRangeOffset,\n index,\n saveOffset,\n segCount,\n segCountX2,\n start,\n startCode,\n tail,\n _j,\n _k,\n _len;\n this.platformID = data.readUInt16();\n this.encodingID = data.readShort();\n this.offset = offset + data.readInt();\n saveOffset = data.pos;\n data.pos = this.offset;\n this.format = data.readUInt16();\n this.length = data.readUInt16();\n this.language = data.readUInt16();\n this.isUnicode =\n (this.platformID === 3 && this.encodingID === 1 && this.format === 4) ||\n (this.platformID === 0 && this.format === 4);\n this.codeMap = {};\n switch (this.format) {\n case 0:\n for (i = 0; i < 256; ++i) {\n this.codeMap[i] = data.readByte();\n }\n break;\n case 4:\n segCountX2 = data.readUInt16();\n segCount = segCountX2 / 2;\n data.pos += 6;\n endCode = (function() {\n var _j, _results;\n _results = [];\n for (\n i = _j = 0;\n 0 <= segCount ? _j < segCount : _j > segCount;\n i = 0 <= segCount ? ++_j : --_j\n ) {\n _results.push(data.readUInt16());\n }\n return _results;\n })();\n data.pos += 2;\n startCode = (function() {\n var _j, _results;\n _results = [];\n for (\n i = _j = 0;\n 0 <= segCount ? _j < segCount : _j > segCount;\n i = 0 <= segCount ? ++_j : --_j\n ) {\n _results.push(data.readUInt16());\n }\n return _results;\n })();\n idDelta = (function() {\n var _j, _results;\n _results = [];\n for (\n i = _j = 0;\n 0 <= segCount ? _j < segCount : _j > segCount;\n i = 0 <= segCount ? ++_j : --_j\n ) {\n _results.push(data.readUInt16());\n }\n return _results;\n })();\n idRangeOffset = (function() {\n var _j, _results;\n _results = [];\n for (\n i = _j = 0;\n 0 <= segCount ? _j < segCount : _j > segCount;\n i = 0 <= segCount ? ++_j : --_j\n ) {\n _results.push(data.readUInt16());\n }\n return _results;\n })();\n count = (this.length - data.pos + this.offset) / 2;\n glyphIds = (function() {\n var _j, _results;\n _results = [];\n for (\n i = _j = 0;\n 0 <= count ? _j < count : _j > count;\n i = 0 <= count ? ++_j : --_j\n ) {\n _results.push(data.readUInt16());\n }\n return _results;\n })();\n for (i = _j = 0, _len = endCode.length; _j < _len; i = ++_j) {\n tail = endCode[i];\n start = startCode[i];\n for (\n code = _k = start;\n start <= tail ? _k <= tail : _k >= tail;\n code = start <= tail ? ++_k : --_k\n ) {\n if (idRangeOffset[i] === 0) {\n glyphId = code + idDelta[i];\n } else {\n index = idRangeOffset[i] / 2 + (code - start) - (segCount - i);\n glyphId = glyphIds[index] || 0;\n if (glyphId !== 0) {\n glyphId += idDelta[i];\n }\n }\n this.codeMap[code] = glyphId & 0xffff;\n }\n }\n }\n data.pos = saveOffset;\n }\n CmapEntry.encode = function(charmap, encoding) {\n var charMap,\n code,\n codeMap,\n codes,\n delta,\n deltas,\n diff,\n endCode,\n endCodes,\n entrySelector,\n glyphIDs,\n i,\n id,\n indexes,\n last,\n map,\n nextID,\n offset,\n old,\n rangeOffsets,\n rangeShift,\n searchRange,\n segCount,\n segCountX2,\n startCode,\n startCodes,\n startGlyph,\n subtable,\n _i,\n _j,\n _k,\n _l,\n _len,\n _len1,\n _len2,\n _len3,\n _len4,\n _len5,\n _len6,\n _len7,\n _m,\n _n,\n _name,\n _o,\n _p,\n _q;\n subtable = new Data();\n codes = Object.keys(charmap).sort(function(a, b) {\n return a - b;\n });\n switch (encoding) {\n case \"macroman\":\n id = 0;\n indexes = (function() {\n var _results = [];\n for (i = 0; i < 256; ++i) {\n _results.push(0);\n }\n return _results;\n })();\n map = {\n 0: 0\n };\n codeMap = {};\n for (_i = 0, _len = codes.length; _i < _len; _i++) {\n code = codes[_i];\n if (map[(_name = charmap[code])] == null) {\n map[_name] = ++id;\n }\n codeMap[code] = {\n old: charmap[code],\n new: map[charmap[code]]\n };\n indexes[code] = map[charmap[code]];\n }\n subtable.writeUInt16(1);\n subtable.writeUInt16(0);\n subtable.writeUInt32(12);\n subtable.writeUInt16(0);\n subtable.writeUInt16(262);\n subtable.writeUInt16(0);\n subtable.write(indexes);\n return {\n charMap: codeMap,\n subtable: subtable.data,\n maxGlyphID: id + 1\n };\n case \"unicode\":\n startCodes = [];\n endCodes = [];\n nextID = 0;\n map = {};\n charMap = {};\n last = diff = null;\n for (_j = 0, _len1 = codes.length; _j < _len1; _j++) {\n code = codes[_j];\n old = charmap[code];\n if (map[old] == null) {\n map[old] = ++nextID;\n }\n charMap[code] = {\n old: old,\n new: map[old]\n };\n delta = map[old] - code;\n if (last == null || delta !== diff) {\n if (last) {\n endCodes.push(last);\n }\n startCodes.push(code);\n diff = delta;\n }\n last = code;\n }\n if (last) {\n endCodes.push(last);\n }\n endCodes.push(0xffff);\n startCodes.push(0xffff);\n segCount = startCodes.length;\n segCountX2 = segCount * 2;\n searchRange = 2 * Math.pow(Math.log(segCount) / Math.LN2, 2);\n entrySelector = Math.log(searchRange / 2) / Math.LN2;\n rangeShift = 2 * segCount - searchRange;\n deltas = [];\n rangeOffsets = [];\n glyphIDs = [];\n for (i = _k = 0, _len2 = startCodes.length; _k < _len2; i = ++_k) {\n startCode = startCodes[i];\n endCode = endCodes[i];\n if (startCode === 0xffff) {\n deltas.push(0);\n rangeOffsets.push(0);\n break;\n }\n startGlyph = charMap[startCode][\"new\"];\n if (startCode - startGlyph >= 0x8000) {\n deltas.push(0);\n rangeOffsets.push(2 * (glyphIDs.length + segCount - i));\n for (\n code = _l = startCode;\n startCode <= endCode ? _l <= endCode : _l >= endCode;\n code = startCode <= endCode ? ++_l : --_l\n ) {\n glyphIDs.push(charMap[code][\"new\"]);\n }\n } else {\n deltas.push(startGlyph - startCode);\n rangeOffsets.push(0);\n }\n }\n subtable.writeUInt16(3);\n subtable.writeUInt16(1);\n subtable.writeUInt32(12);\n subtable.writeUInt16(4);\n subtable.writeUInt16(16 + segCount * 8 + glyphIDs.length * 2);\n subtable.writeUInt16(0);\n subtable.writeUInt16(segCountX2);\n subtable.writeUInt16(searchRange);\n subtable.writeUInt16(entrySelector);\n subtable.writeUInt16(rangeShift);\n for (_m = 0, _len3 = endCodes.length; _m < _len3; _m++) {\n code = endCodes[_m];\n subtable.writeUInt16(code);\n }\n subtable.writeUInt16(0);\n for (_n = 0, _len4 = startCodes.length; _n < _len4; _n++) {\n code = startCodes[_n];\n subtable.writeUInt16(code);\n }\n for (_o = 0, _len5 = deltas.length; _o < _len5; _o++) {\n delta = deltas[_o];\n subtable.writeUInt16(delta);\n }\n for (_p = 0, _len6 = rangeOffsets.length; _p < _len6; _p++) {\n offset = rangeOffsets[_p];\n subtable.writeUInt16(offset);\n }\n for (_q = 0, _len7 = glyphIDs.length; _q < _len7; _q++) {\n id = glyphIDs[_q];\n subtable.writeUInt16(id);\n }\n return {\n charMap: charMap,\n subtable: subtable.data,\n maxGlyphID: nextID + 1\n };\n }\n };\n return CmapEntry;\n})();\n\nvar CmapTable = (function(_super) {\n __extends(CmapTable, _super);\n\n function CmapTable() {\n return CmapTable.__super__.constructor.apply(this, arguments);\n }\n CmapTable.prototype.tag = \"cmap\";\n CmapTable.prototype.parse = function(data) {\n var entry, i, tableCount;\n data.pos = this.offset;\n this.version = data.readUInt16();\n tableCount = data.readUInt16();\n this.tables = [];\n this.unicode = null;\n for (\n i = 0;\n 0 <= tableCount ? i < tableCount : i > tableCount;\n i = 0 <= tableCount ? ++i : --i\n ) {\n entry = new CmapEntry(data, this.offset);\n this.tables.push(entry);\n if (entry.isUnicode) {\n if (this.unicode == null) {\n this.unicode = entry;\n }\n }\n }\n return true;\n };\n /*************************************************************************/\n /* function : encode */\n /* comment : Encode the cmap table corresponding to the input character. */\n /*************************************************************************/\n CmapTable.encode = function(charmap, encoding) {\n var result, table;\n if (encoding == null) {\n encoding = \"macroman\";\n }\n result = CmapEntry.encode(charmap, encoding);\n table = new Data();\n table.writeUInt16(0);\n table.writeUInt16(1);\n result.table = table.data.concat(result.subtable);\n return result;\n };\n return CmapTable;\n})(Table);\n\nvar HheaTable = (function(_super) {\n __extends(HheaTable, _super);\n\n function HheaTable() {\n return HheaTable.__super__.constructor.apply(this, arguments);\n }\n HheaTable.prototype.tag = \"hhea\";\n HheaTable.prototype.parse = function(data) {\n data.pos = this.offset;\n this.version = data.readInt();\n this.ascender = data.readShort();\n this.decender = data.readShort();\n this.lineGap = data.readShort();\n this.advanceWidthMax = data.readShort();\n this.minLeftSideBearing = data.readShort();\n this.minRightSideBearing = data.readShort();\n this.xMaxExtent = data.readShort();\n this.caretSlopeRise = data.readShort();\n this.caretSlopeRun = data.readShort();\n this.caretOffset = data.readShort();\n data.pos += 4 * 2;\n this.metricDataFormat = data.readShort();\n return (this.numberOfMetrics = data.readUInt16());\n };\n /*HheaTable.prototype.encode = function (ids) {\n var i, table, _i, _ref;\n table = new Data;\n table.writeInt(this.version);\n table.writeShort(this.ascender);\n table.writeShort(this.decender);\n table.writeShort(this.lineGap);\n table.writeShort(this.advanceWidthMax);\n table.writeShort(this.minLeftSideBearing);\n table.writeShort(this.minRightSideBearing);\n table.writeShort(this.xMaxExtent);\n table.writeShort(this.caretSlopeRise);\n table.writeShort(this.caretSlopeRun);\n table.writeShort(this.caretOffset);\n for (i = _i = 0, _ref = 4 * 2; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {\n table.writeByte(0);\n }\n table.writeShort(this.metricDataFormat);\n table.writeUInt16(ids.length);\n return table.data;\n };*/\n return HheaTable;\n})(Table);\n\nvar OS2Table = (function(_super) {\n __extends(OS2Table, _super);\n\n function OS2Table() {\n return OS2Table.__super__.constructor.apply(this, arguments);\n }\n OS2Table.prototype.tag = \"OS/2\";\n OS2Table.prototype.parse = function(data) {\n data.pos = this.offset;\n this.version = data.readUInt16();\n this.averageCharWidth = data.readShort();\n this.weightClass = data.readUInt16();\n this.widthClass = data.readUInt16();\n this.type = data.readShort();\n this.ySubscriptXSize = data.readShort();\n this.ySubscriptYSize = data.readShort();\n this.ySubscriptXOffset = data.readShort();\n this.ySubscriptYOffset = data.readShort();\n this.ySuperscriptXSize = data.readShort();\n this.ySuperscriptYSize = data.readShort();\n this.ySuperscriptXOffset = data.readShort();\n this.ySuperscriptYOffset = data.readShort();\n this.yStrikeoutSize = data.readShort();\n this.yStrikeoutPosition = data.readShort();\n this.familyClass = data.readShort();\n this.panose = (function() {\n var i, _results;\n _results = [];\n for (i = 0; i < 10; ++i) {\n _results.push(data.readByte());\n }\n return _results;\n })();\n this.charRange = (function() {\n var i, _results;\n _results = [];\n for (i = 0; i < 4; ++i) {\n _results.push(data.readInt());\n }\n return _results;\n })();\n this.vendorID = data.readString(4);\n this.selection = data.readShort();\n this.firstCharIndex = data.readShort();\n this.lastCharIndex = data.readShort();\n if (this.version > 0) {\n this.ascent = data.readShort();\n this.descent = data.readShort();\n this.lineGap = data.readShort();\n this.winAscent = data.readShort();\n this.winDescent = data.readShort();\n this.codePageRange = (function() {\n var i, _results;\n _results = [];\n for (i = 0; i < 2; i = ++i) {\n _results.push(data.readInt());\n }\n return _results;\n })();\n if (this.version > 1) {\n this.xHeight = data.readShort();\n this.capHeight = data.readShort();\n this.defaultChar = data.readShort();\n this.breakChar = data.readShort();\n return (this.maxContext = data.readShort());\n }\n }\n };\n /*OS2Table.prototype.encode = function () {\n return this.raw();\n };*/\n return OS2Table;\n})(Table);\n\nvar PostTable = (function(_super) {\n var POSTSCRIPT_GLYPHS;\n __extends(PostTable, _super);\n\n function PostTable() {\n return PostTable.__super__.constructor.apply(this, arguments);\n }\n PostTable.prototype.tag = \"post\";\n PostTable.prototype.parse = function(data) {\n var length, numberOfGlyphs, _results;\n data.pos = this.offset;\n this.format = data.readInt();\n this.italicAngle = data.readInt();\n this.underlinePosition = data.readShort();\n this.underlineThickness = data.readShort();\n this.isFixedPitch = data.readInt();\n this.minMemType42 = data.readInt();\n this.maxMemType42 = data.readInt();\n this.minMemType1 = data.readInt();\n this.maxMemType1 = data.readInt();\n switch (this.format) {\n case 0x00010000:\n break;\n case 0x00020000:\n numberOfGlyphs = data.readUInt16();\n this.glyphNameIndex = [];\n var i;\n for (\n i = 0;\n 0 <= numberOfGlyphs ? i < numberOfGlyphs : i > numberOfGlyphs;\n i = 0 <= numberOfGlyphs ? ++i : --i\n ) {\n this.glyphNameIndex.push(data.readUInt16());\n }\n this.names = [];\n _results = [];\n while (data.pos < this.offset + this.length) {\n length = data.readByte();\n _results.push(this.names.push(data.readString(length)));\n }\n return _results;\n case 0x00025000:\n numberOfGlyphs = data.readUInt16();\n return (this.offsets = data.read(numberOfGlyphs));\n case 0x00030000:\n break;\n case 0x00040000:\n return (this.map = function() {\n var _j, _ref, _results1;\n _results1 = [];\n for (\n i = _j = 0, _ref = this.file.maxp.numGlyphs;\n 0 <= _ref ? _j < _ref : _j > _ref;\n i = 0 <= _ref ? ++_j : --_j\n ) {\n _results1.push(data.readUInt32());\n }\n return _results1;\n }.call(this));\n }\n };\n /*PostTable.prototype.glyphFor = function (code) {\n var index;\n switch (this.format) {\n case 0x00010000:\n return POSTSCRIPT_GLYPHS[code] || '.notdef';\n case 0x00020000:\n index = this.glyphNameIndex[code];\n if (index <= 257) {\n return POSTSCRIPT_GLYPHS[index];\n }\n else {\n return this.names[index - 258] || '.notdef';\n }\n break;\n case 0x00025000:\n return POSTSCRIPT_GLYPHS[code + this.offsets[code]] || '.notdef';\n case 0x00030000:\n return '.notdef';\n case 0x00040000:\n return this.map[code] || 0xFFFF;\n }\n };*/\n /*PostTable.prototype.encode = function (mapping) {\n var id, index, indexes, position, post, raw, string, strings, table, _i, _j, _k, _len, _len1, _len2;\n if (!this.exists) {\n return null;\n }\n raw = this.raw();\n if (this.format === 0x00030000) {\n return raw;\n }\n table = new Data(raw.slice(0, 32));\n table.writeUInt32(0x00020000);\n table.pos = 32;\n indexes = [];\n strings = [];\n for (_i = 0, _len = mapping.length; _i < _len; _i++) {\n id = mapping[_i];\n post = this.glyphFor(id);\n position = POSTSCRIPT_GLYPHS.indexOf(post);\n if (position !== -1) {\n indexes.push(position);\n }\n else {\n indexes.push(257 + strings.length);\n strings.push(post);\n }\n }\n table.writeUInt16(Object.keys(mapping).length);\n for (_j = 0, _len1 = indexes.length; _j < _len1; _j++) {\n index = indexes[_j];\n table.writeUInt16(index);\n }\n for (_k = 0, _len2 = strings.length; _k < _len2; _k++) {\n string = strings[_k];\n table.writeByte(string.length);\n table.writeString(string);\n }\n return table.data;\n };*/\n POSTSCRIPT_GLYPHS = \".notdef .null nonmarkingreturn space exclam quotedbl numbersign dollar percent\\nampersand quotesingle parenleft parenright asterisk plus comma hyphen period slash\\nzero one two three four five six seven eight nine colon semicolon less equal greater\\nquestion at A B C D E F G H I J K L M N O P Q R S T U V W X Y Z\\nbracketleft backslash bracketright asciicircum underscore grave\\na b c d e f g h i j k l m n o p q r s t u v w x y z\\nbraceleft bar braceright asciitilde Adieresis Aring Ccedilla Eacute Ntilde Odieresis\\nUdieresis aacute agrave acircumflex adieresis atilde aring ccedilla eacute egrave\\necircumflex edieresis iacute igrave icircumflex idieresis ntilde oacute ograve\\nocircumflex odieresis otilde uacute ugrave ucircumflex udieresis dagger degree cent\\nsterling section bullet paragraph germandbls registered copyright trademark acute\\ndieresis notequal AE Oslash infinity plusminus lessequal greaterequal yen mu\\npartialdiff summation product pi integral ordfeminine ordmasculine Omega ae oslash\\nquestiondown exclamdown logicalnot radical florin approxequal Delta guillemotleft\\nguillemotright ellipsis nonbreakingspace Agrave Atilde Otilde OE oe endash emdash\\nquotedblleft quotedblright quoteleft quoteright divide lozenge ydieresis Ydieresis\\nfraction currency guilsinglleft guilsinglright fi fl daggerdbl periodcentered\\nquotesinglbase quotedblbase perthousand Acircumflex Ecircumflex Aacute Edieresis\\nEgrave Iacute Icircumflex Idieresis Igrave Oacute Ocircumflex apple Ograve Uacute\\nUcircumflex Ugrave dotlessi circumflex tilde macron breve dotaccent ring cedilla\\nhungarumlaut ogonek caron Lslash lslash Scaron scaron Zcaron zcaron brokenbar Eth\\neth Yacute yacute Thorn thorn minus multiply onesuperior twosuperior threesuperior\\nonehalf onequarter threequarters franc Gbreve gbreve Idotaccent Scedilla scedilla\\nCacute cacute Ccaron ccaron dcroat\".split(\n /\\s+/g\n );\n return PostTable;\n})(Table);\n\n/*********************************************************************************************************/\n/* function : NameEntry */\n/* comment : Store copyright information, platformID, encodingID, and languageID in the NameEntry object.*/\n/*********************************************************************************************************/\nvar NameEntry = (function() {\n function NameEntry(raw, entry) {\n this.raw = raw;\n this.length = raw.length;\n this.platformID = entry.platformID;\n this.encodingID = entry.encodingID;\n this.languageID = entry.languageID;\n }\n return NameEntry;\n})();\n\nvar NameTable = (function(_super) {\n var subsetTag;\n __extends(NameTable, _super);\n\n function NameTable() {\n return NameTable.__super__.constructor.apply(this, arguments);\n }\n NameTable.prototype.tag = \"name\";\n NameTable.prototype.parse = function(data) {\n var count,\n entries,\n entry,\n i,\n name,\n stringOffset,\n strings,\n text,\n _j,\n _len,\n _name;\n data.pos = this.offset;\n data.readShort(); //format\n count = data.readShort();\n stringOffset = data.readShort();\n entries = [];\n for (\n i = 0;\n 0 <= count ? i < count : i > count;\n i = 0 <= count ? ++i : --i\n ) {\n entries.push({\n platformID: data.readShort(),\n encodingID: data.readShort(),\n languageID: data.readShort(),\n nameID: data.readShort(),\n length: data.readShort(),\n offset: this.offset + stringOffset + data.readShort()\n });\n }\n strings = {};\n for (i = _j = 0, _len = entries.length; _j < _len; i = ++_j) {\n entry = entries[i];\n data.pos = entry.offset;\n text = data.readString(entry.length);\n name = new NameEntry(text, entry);\n if (strings[(_name = entry.nameID)] == null) {\n strings[_name] = [];\n }\n strings[entry.nameID].push(name);\n }\n this.strings = strings;\n this.copyright = strings[0];\n this.fontFamily = strings[1];\n this.fontSubfamily = strings[2];\n this.uniqueSubfamily = strings[3];\n this.fontName = strings[4];\n this.version = strings[5];\n try {\n this.postscriptName = strings[6][0].raw.replace(\n /[\\x00-\\x19\\x80-\\xff]/g,\n \"\"\n );\n } catch (e) {\n this.postscriptName = strings[4][0].raw.replace(\n /[\\x00-\\x19\\x80-\\xff]/g,\n \"\"\n );\n }\n this.trademark = strings[7];\n this.manufacturer = strings[8];\n this.designer = strings[9];\n this.description = strings[10];\n this.vendorUrl = strings[11];\n this.designerUrl = strings[12];\n this.license = strings[13];\n this.licenseUrl = strings[14];\n this.preferredFamily = strings[15];\n this.preferredSubfamily = strings[17];\n this.compatibleFull = strings[18];\n return (this.sampleText = strings[19]);\n };\n subsetTag = \"AAAAAA\";\n /*NameTable.prototype.encode = function () {\n var id, list, nameID, nameTable, postscriptName, strCount, strTable, string, strings, table, val, _i, _len, _ref;\n strings = {};\n _ref = this.strings;\n for (id in _ref) {\n val = _ref[id];\n strings[id] = val;\n }\n postscriptName = new NameEntry(\"\" + subsetTag + \"+\" + this.postscriptName, {\n platformID: 1\n , encodingID: 0\n , languageID: 0\n });\n strings[6] = [postscriptName];\n subsetTag = successorOf(subsetTag);\n strCount = 0;\n for (id in strings) {\n list = strings[id];\n if (list != null) {\n strCount += list.length;\n }\n }\n table = new Data;\n strTable = new Data;\n table.writeShort(0);\n table.writeShort(strCount);\n table.writeShort(6 + 12 * strCount);\n for (nameID in strings) {\n list = strings[nameID];\n if (list != null) {\n for (_i = 0, _len = list.length; _i < _len; _i++) {\n string = list[_i];\n table.writeShort(string.platformID);\n table.writeShort(string.encodingID);\n table.writeShort(string.languageID);\n table.writeShort(nameID);\n table.writeShort(string.length);\n table.writeShort(strTable.pos);\n strTable.writeString(string.raw);\n }\n }\n }\n return nameTable = {\n postscriptName: postscriptName.raw\n , table: table.data.concat(strTable.data)\n };\n };*/\n return NameTable;\n})(Table);\n\nvar MaxpTable = (function(_super) {\n __extends(MaxpTable, _super);\n\n function MaxpTable() {\n return MaxpTable.__super__.constructor.apply(this, arguments);\n }\n MaxpTable.prototype.tag = \"maxp\";\n MaxpTable.prototype.parse = function(data) {\n data.pos = this.offset;\n this.version = data.readInt();\n this.numGlyphs = data.readUInt16();\n this.maxPoints = data.readUInt16();\n this.maxContours = data.readUInt16();\n this.maxCompositePoints = data.readUInt16();\n this.maxComponentContours = data.readUInt16();\n this.maxZones = data.readUInt16();\n this.maxTwilightPoints = data.readUInt16();\n this.maxStorage = data.readUInt16();\n this.maxFunctionDefs = data.readUInt16();\n this.maxInstructionDefs = data.readUInt16();\n this.maxStackElements = data.readUInt16();\n this.maxSizeOfInstructions = data.readUInt16();\n this.maxComponentElements = data.readUInt16();\n return (this.maxComponentDepth = data.readUInt16());\n };\n /*MaxpTable.prototype.encode = function (ids) {\n var table;\n table = new Data;\n table.writeInt(this.version);\n table.writeUInt16(ids.length);\n table.writeUInt16(this.maxPoints);\n table.writeUInt16(this.maxContours);\n table.writeUInt16(this.maxCompositePoints);\n table.writeUInt16(this.maxComponentContours);\n table.writeUInt16(this.maxZones);\n table.writeUInt16(this.maxTwilightPoints);\n table.writeUInt16(this.maxStorage);\n table.writeUInt16(this.maxFunctionDefs);\n table.writeUInt16(this.maxInstructionDefs);\n table.writeUInt16(this.maxStackElements);\n table.writeUInt16(this.maxSizeOfInstructions);\n table.writeUInt16(this.maxComponentElements);\n table.writeUInt16(this.maxComponentDepth);\n return table.data;\n };*/\n return MaxpTable;\n})(Table);\n\nvar HmtxTable = (function(_super) {\n __extends(HmtxTable, _super);\n\n function HmtxTable() {\n return HmtxTable.__super__.constructor.apply(this, arguments);\n }\n HmtxTable.prototype.tag = \"hmtx\";\n HmtxTable.prototype.parse = function(data) {\n var i, last, lsbCount, m, _j, _ref, _results;\n data.pos = this.offset;\n this.metrics = [];\n for (\n i = 0, _ref = this.file.hhea.numberOfMetrics;\n 0 <= _ref ? i < _ref : i > _ref;\n i = 0 <= _ref ? ++i : --i\n ) {\n this.metrics.push({\n advance: data.readUInt16(),\n lsb: data.readInt16()\n });\n }\n lsbCount = this.file.maxp.numGlyphs - this.file.hhea.numberOfMetrics;\n this.leftSideBearings = (function() {\n var _j, _results;\n _results = [];\n for (\n i = _j = 0;\n 0 <= lsbCount ? _j < lsbCount : _j > lsbCount;\n i = 0 <= lsbCount ? ++_j : --_j\n ) {\n _results.push(data.readInt16());\n }\n return _results;\n })();\n this.widths = function() {\n var _j, _len, _ref1, _results;\n _ref1 = this.metrics;\n _results = [];\n for (_j = 0, _len = _ref1.length; _j < _len; _j++) {\n m = _ref1[_j];\n _results.push(m.advance);\n }\n return _results;\n }.call(this);\n last = this.widths[this.widths.length - 1];\n _results = [];\n for (\n i = _j = 0;\n 0 <= lsbCount ? _j < lsbCount : _j > lsbCount;\n i = 0 <= lsbCount ? ++_j : --_j\n ) {\n _results.push(this.widths.push(last));\n }\n return _results;\n };\n /***************************************************************/\n /* function : forGlyph */\n /* comment : Returns the advance width and lsb for this glyph. */\n /***************************************************************/\n HmtxTable.prototype.forGlyph = function(id) {\n if (id in this.metrics) {\n return this.metrics[id];\n }\n return {\n advance: this.metrics[this.metrics.length - 1].advance,\n lsb: this.leftSideBearings[id - this.metrics.length]\n };\n };\n /*HmtxTable.prototype.encode = function (mapping) {\n var id, metric, table, _i, _len;\n table = new Data;\n for (_i = 0, _len = mapping.length; _i < _len; _i++) {\n id = mapping[_i];\n metric = this.forGlyph(id);\n table.writeUInt16(metric.advance);\n table.writeUInt16(metric.lsb);\n }\n return table.data;\n };*/\n return HmtxTable;\n})(Table);\n\nvar __slice = [].slice;\n\nvar GlyfTable = (function(_super) {\n __extends(GlyfTable, _super);\n\n function GlyfTable() {\n return GlyfTable.__super__.constructor.apply(this, arguments);\n }\n GlyfTable.prototype.tag = \"glyf\";\n GlyfTable.prototype.parse = function() {\n return (this.cache = {});\n };\n GlyfTable.prototype.glyphFor = function(id) {\n var data,\n index,\n length,\n loca,\n numberOfContours,\n raw,\n xMax,\n xMin,\n yMax,\n yMin;\n if (id in this.cache) {\n return this.cache[id];\n }\n loca = this.file.loca;\n data = this.file.contents;\n index = loca.indexOf(id);\n length = loca.lengthOf(id);\n if (length === 0) {\n return (this.cache[id] = null);\n }\n data.pos = this.offset + index;\n raw = new Data(data.read(length));\n numberOfContours = raw.readShort();\n xMin = raw.readShort();\n yMin = raw.readShort();\n xMax = raw.readShort();\n yMax = raw.readShort();\n if (numberOfContours === -1) {\n this.cache[id] = new CompoundGlyph(raw, xMin, yMin, xMax, yMax);\n } else {\n this.cache[id] = new SimpleGlyph(\n raw,\n numberOfContours,\n xMin,\n yMin,\n xMax,\n yMax\n );\n }\n return this.cache[id];\n };\n GlyfTable.prototype.encode = function(glyphs, mapping, old2new) {\n var glyph, id, offsets, table, _i, _len;\n table = [];\n offsets = [];\n for (_i = 0, _len = mapping.length; _i < _len; _i++) {\n id = mapping[_i];\n glyph = glyphs[id];\n offsets.push(table.length);\n if (glyph) {\n table = table.concat(glyph.encode(old2new));\n }\n }\n offsets.push(table.length);\n return {\n table: table,\n offsets: offsets\n };\n };\n return GlyfTable;\n})(Table);\n\nvar SimpleGlyph = (function() {\n /**************************************************************************/\n /* function : SimpleGlyph */\n /* comment : Stores raw, xMin, yMin, xMax, and yMax values for this glyph.*/\n /**************************************************************************/\n function SimpleGlyph(raw, numberOfContours, xMin, yMin, xMax, yMax) {\n this.raw = raw;\n this.numberOfContours = numberOfContours;\n this.xMin = xMin;\n this.yMin = yMin;\n this.xMax = xMax;\n this.yMax = yMax;\n this.compound = false;\n }\n SimpleGlyph.prototype.encode = function() {\n return this.raw.data;\n };\n return SimpleGlyph;\n})();\n\nvar CompoundGlyph = (function() {\n var ARG_1_AND_2_ARE_WORDS,\n MORE_COMPONENTS,\n WE_HAVE_AN_X_AND_Y_SCALE,\n WE_HAVE_A_SCALE,\n WE_HAVE_A_TWO_BY_TWO,\n WE_HAVE_INSTRUCTIONS;\n ARG_1_AND_2_ARE_WORDS = 0x0001;\n WE_HAVE_A_SCALE = 0x0008;\n MORE_COMPONENTS = 0x0020;\n WE_HAVE_AN_X_AND_Y_SCALE = 0x0040;\n WE_HAVE_A_TWO_BY_TWO = 0x0080;\n WE_HAVE_INSTRUCTIONS = 0x0100;\n\n /********************************************************************************************************************/\n /* function : CompoundGlypg generator */\n /* comment : It stores raw, xMin, yMin, xMax, yMax, glyph id, and glyph offset for the corresponding compound glyph.*/\n /********************************************************************************************************************/\n function CompoundGlyph(raw, xMin, yMin, xMax, yMax) {\n var data, flags;\n this.raw = raw;\n this.xMin = xMin;\n this.yMin = yMin;\n this.xMax = xMax;\n this.yMax = yMax;\n this.compound = true;\n this.glyphIDs = [];\n this.glyphOffsets = [];\n data = this.raw;\n while (true) {\n flags = data.readShort();\n this.glyphOffsets.push(data.pos);\n this.glyphIDs.push(data.readUInt16());\n if (!(flags & MORE_COMPONENTS)) {\n break;\n }\n if (flags & ARG_1_AND_2_ARE_WORDS) {\n data.pos += 4;\n } else {\n data.pos += 2;\n }\n if (flags & WE_HAVE_A_TWO_BY_TWO) {\n data.pos += 8;\n } else if (flags & WE_HAVE_AN_X_AND_Y_SCALE) {\n data.pos += 4;\n } else if (flags & WE_HAVE_A_SCALE) {\n data.pos += 2;\n }\n }\n }\n /****************************************************************************************************************/\n /* function : CompoundGlypg encode */\n /* comment : After creating a table for the characters you typed, you call directory.encode to encode the table.*/\n /****************************************************************************************************************/\n CompoundGlyph.prototype.encode = function() {\n var i, result, _len, _ref;\n result = new Data(__slice.call(this.raw.data));\n _ref = this.glyphIDs;\n for (i = 0, _len = _ref.length; i < _len; ++i) {\n result.pos = this.glyphOffsets[i];\n }\n return result.data;\n };\n return CompoundGlyph;\n})();\n\nvar LocaTable = (function(_super) {\n __extends(LocaTable, _super);\n\n function LocaTable() {\n return LocaTable.__super__.constructor.apply(this, arguments);\n }\n LocaTable.prototype.tag = \"loca\";\n LocaTable.prototype.parse = function(data) {\n var format, i;\n data.pos = this.offset;\n format = this.file.head.indexToLocFormat;\n if (format === 0) {\n return (this.offsets = function() {\n var _ref, _results;\n _results = [];\n for (i = 0, _ref = this.length; i < _ref; i += 2) {\n _results.push(data.readUInt16() * 2);\n }\n return _results;\n }.call(this));\n } else {\n return (this.offsets = function() {\n var _ref, _results;\n _results = [];\n for (i = 0, _ref = this.length; i < _ref; i += 4) {\n _results.push(data.readUInt32());\n }\n return _results;\n }.call(this));\n }\n };\n LocaTable.prototype.indexOf = function(id) {\n return this.offsets[id];\n };\n LocaTable.prototype.lengthOf = function(id) {\n return this.offsets[id + 1] - this.offsets[id];\n };\n LocaTable.prototype.encode = function(offsets, activeGlyphs) {\n var LocaTable = new Uint32Array(this.offsets.length);\n var glyfPtr = 0;\n var listGlyf = 0;\n for (var k = 0; k < LocaTable.length; ++k) {\n LocaTable[k] = glyfPtr;\n if (listGlyf < activeGlyphs.length && activeGlyphs[listGlyf] == k) {\n ++listGlyf;\n LocaTable[k] = glyfPtr;\n var start = this.offsets[k];\n var len = this.offsets[k + 1] - start;\n if (len > 0) {\n glyfPtr += len;\n }\n }\n }\n var newLocaTable = new Array(LocaTable.length * 4);\n for (var j = 0; j < LocaTable.length; ++j) {\n newLocaTable[4 * j + 3] = LocaTable[j] & 0x000000ff;\n newLocaTable[4 * j + 2] = (LocaTable[j] & 0x0000ff00) >> 8;\n newLocaTable[4 * j + 1] = (LocaTable[j] & 0x00ff0000) >> 16;\n newLocaTable[4 * j] = (LocaTable[j] & 0xff000000) >> 24;\n }\n return newLocaTable;\n };\n return LocaTable;\n})(Table);\n\n/************************************************************************************/\n/* function : invert */\n/* comment : Change the object's (key: value) to create an object with (value: key).*/\n/************************************************************************************/\nvar invert = function(object) {\n var key, ret, val;\n ret = {};\n for (key in object) {\n val = object[key];\n ret[val] = key;\n }\n return ret;\n};\n\n/*var successorOf = function (input) {\n var added, alphabet, carry, i, index, isUpperCase, last, length, next, result;\n alphabet = 'abcdefghijklmnopqrstuvwxyz';\n length = alphabet.length;\n result = input;\n i = input.length;\n while (i >= 0) {\n last = input.charAt(--i);\n if (isNaN(last)) {\n index = alphabet.indexOf(last.toLowerCase());\n if (index === -1) {\n next = last;\n carry = true;\n }\n else {\n next = alphabet.charAt((index + 1) % length);\n isUpperCase = last === last.toUpperCase();\n if (isUpperCase) {\n next = next.toUpperCase();\n }\n carry = index + 1 >= length;\n if (carry && i === 0) {\n added = isUpperCase ? 'A' : 'a';\n result = added + next + result.slice(1);\n break;\n }\n }\n }\n else {\n next = +last + 1;\n carry = next > 9;\n if (carry) {\n next = 0;\n }\n if (carry && i === 0) {\n result = '1' + next + result.slice(1);\n break;\n }\n }\n result = result.slice(0, i) + next + result.slice(i + 1);\n if (!carry) {\n break;\n }\n }\n return result;\n };*/\n\nvar Subset = (function() {\n function Subset(font) {\n this.font = font;\n this.subset = {};\n this.unicodes = {};\n this.next = 33;\n }\n /*Subset.prototype.use = function (character) {\n var i, _i, _ref;\n if (typeof character === 'string') {\n for (i = _i = 0, _ref = character.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {\n this.use(character.charCodeAt(i));\n }\n return;\n }\n if (!this.unicodes[character]) {\n this.subset[this.next] = character;\n return this.unicodes[character] = this.next++;\n }\n };*/\n /*Subset.prototype.encodeText = function (text) {\n var char, i, string, _i, _ref;\n string = '';\n for (i = _i = 0, _ref = text.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {\n char = this.unicodes[text.charCodeAt(i)];\n string += String.fromCharCode(char);\n }\n return string;\n };*/\n /***************************************************************/\n /* function : generateCmap */\n /* comment : Returns the unicode cmap for this font. */\n /***************************************************************/\n Subset.prototype.generateCmap = function() {\n var mapping, roman, unicode, unicodeCmap, _ref;\n unicodeCmap = this.font.cmap.tables[0].codeMap;\n mapping = {};\n _ref = this.subset;\n for (roman in _ref) {\n unicode = _ref[roman];\n mapping[roman] = unicodeCmap[unicode];\n }\n return mapping;\n };\n /*Subset.prototype.glyphIDs = function () {\n var ret, roman, unicode, unicodeCmap, val, _ref;\n unicodeCmap = this.font.cmap.tables[0].codeMap;\n ret = [0];\n _ref = this.subset;\n for (roman in _ref) {\n unicode = _ref[roman];\n val = unicodeCmap[unicode];\n if ((val != null) && __indexOf.call(ret, val) < 0) {\n ret.push(val);\n }\n }\n return ret.sort();\n };*/\n /******************************************************************/\n /* function : glyphsFor */\n /* comment : Returns simple glyph objects for the input character.*/\n /******************************************************************/\n Subset.prototype.glyphsFor = function(glyphIDs) {\n var additionalIDs, glyph, glyphs, id, _i, _len, _ref;\n glyphs = {};\n for (_i = 0, _len = glyphIDs.length; _i < _len; _i++) {\n id = glyphIDs[_i];\n glyphs[id] = this.font.glyf.glyphFor(id);\n }\n additionalIDs = [];\n for (id in glyphs) {\n glyph = glyphs[id];\n if (glyph != null ? glyph.compound : void 0) {\n additionalIDs.push.apply(additionalIDs, glyph.glyphIDs);\n }\n }\n if (additionalIDs.length > 0) {\n _ref = this.glyphsFor(additionalIDs);\n for (id in _ref) {\n glyph = _ref[id];\n glyphs[id] = glyph;\n }\n }\n return glyphs;\n };\n /***************************************************************/\n /* function : encode */\n /* comment : Encode various tables for the characters you use. */\n /***************************************************************/\n Subset.prototype.encode = function(glyID, indexToLocFormat) {\n var cmap,\n code,\n glyf,\n glyphs,\n id,\n ids,\n loca,\n new2old,\n newIDs,\n nextGlyphID,\n old2new,\n oldID,\n oldIDs,\n tables,\n _ref;\n cmap = CmapTable.encode(this.generateCmap(), \"unicode\");\n glyphs = this.glyphsFor(glyID);\n old2new = {\n 0: 0\n };\n _ref = cmap.charMap;\n for (code in _ref) {\n ids = _ref[code];\n old2new[ids.old] = ids[\"new\"];\n }\n nextGlyphID = cmap.maxGlyphID;\n for (oldID in glyphs) {\n if (!(oldID in old2new)) {\n old2new[oldID] = nextGlyphID++;\n }\n }\n new2old = invert(old2new);\n newIDs = Object.keys(new2old).sort(function(a, b) {\n return a - b;\n });\n oldIDs = (function() {\n var _i, _len, _results;\n _results = [];\n for (_i = 0, _len = newIDs.length; _i < _len; _i++) {\n id = newIDs[_i];\n _results.push(new2old[id]);\n }\n return _results;\n })();\n glyf = this.font.glyf.encode(glyphs, oldIDs, old2new);\n loca = this.font.loca.encode(glyf.offsets, oldIDs);\n tables = {\n cmap: this.font.cmap.raw(),\n glyf: glyf.table,\n loca: loca,\n hmtx: this.font.hmtx.raw(),\n hhea: this.font.hhea.raw(),\n maxp: this.font.maxp.raw(),\n post: this.font.post.raw(),\n name: this.font.name.raw(),\n head: this.font.head.encode(indexToLocFormat)\n };\n if (this.font.os2.exists) {\n tables[\"OS/2\"] = this.font.os2.raw();\n }\n return this.font.directory.encode(tables);\n };\n return Subset;\n})();\n\njsPDF.API.PDFObject = (function() {\n var pad;\n\n function PDFObject() {}\n pad = function(str, length) {\n return (Array(length + 1).join(\"0\") + str).slice(-length);\n };\n /*****************************************************************************/\n /* function : convert */\n /* comment :Converts pdf tag's / FontBBox and array values in / W to strings */\n /*****************************************************************************/\n PDFObject.convert = function(object) {\n var e, items, key, out, val;\n if (Array.isArray(object)) {\n items = (function() {\n var _i, _len, _results;\n _results = [];\n for (_i = 0, _len = object.length; _i < _len; _i++) {\n e = object[_i];\n _results.push(PDFObject.convert(e));\n }\n return _results;\n })().join(\" \");\n return \"[\" + items + \"]\";\n } else if (typeof object === \"string\") {\n return \"/\" + object;\n } else if (object != null ? object.isString : void 0) {\n return \"(\" + object + \")\";\n } else if (object instanceof Date) {\n return (\n \"(D:\" +\n pad(object.getUTCFullYear(), 4) +\n pad(object.getUTCMonth(), 2) +\n pad(object.getUTCDate(), 2) +\n pad(object.getUTCHours(), 2) +\n pad(object.getUTCMinutes(), 2) +\n pad(object.getUTCSeconds(), 2) +\n \"Z)\"\n );\n } else if ({}.toString.call(object) === \"[object Object]\") {\n out = [\"<<\"];\n for (key in object) {\n val = object[key];\n out.push(\"/\" + key + \" \" + PDFObject.convert(val));\n }\n out.push(\">>\");\n return out.join(\"\\n\");\n } else {\n return \"\" + object;\n }\n };\n return PDFObject;\n})();\n","import moment from \"moment\";\nimport { jsPDF, CellConfig, TableConfig } from \"jspdf\";\n\nexport const titleCase = (str: string) => {\n if (typeof str !== \"string\") return \"\";\n return str\n ?.toLowerCase()\n .split(\" \")\n .map(function (word) {\n return word.charAt(0).toUpperCase() + word.slice(1);\n })\n .join(\" \");\n};\n\n// Base primary colors in HSL format\nconst baseColors = [\n { hue: 220, saturation: 70, lightness: 50 }, // Blue\n { hue: 0, saturation: 70, lightness: 50 }, // Red\n { hue: 45, saturation: 85, lightness: 55 }, // Yellow\n { hue: 160, saturation: 70, lightness: 45 }, // Green\n { hue: 270, saturation: 60, lightness: 50 }, // Purple\n { hue: 30, saturation: 85, lightness: 55 }, // Orange\n];\n\n// Generate dynamic colors by adjusting lightness based on the dataset index\nconst generateColor = (index: number): string => {\n const baseColor = baseColors[index % baseColors.length];\n const lightness = Math.max(30, baseColor.lightness - (index % 5) * 5); // Vary lightness\n return `hsl(${baseColor.hue}, ${baseColor.saturation}%, ${lightness}%)`;\n};\n\nexport const extractChartData = (data: any) => {\n if (!data || data.length === 0 || !data[0].data) {\n // Handle empty or invalid data, perhaps returning an empty structure\n return {\n labels: [],\n datasets: [],\n chartData: { labels: [], datasets: [] },\n };\n }\n\n const labels = Object?.keys(data[0]?.data);\n\n const datasets = data.map((entry: any, index: number) => ({\n label: `Date ${new Date(entry.date).toLocaleDateString()}`,\n data: labels.map((key) => entry.data[key as keyof typeof entry.data]),\n backgroundColor: generateColor(index),\n }));\n\n const chartData = {\n labels,\n datasets,\n };\n\n return { labels, datasets, chartData };\n};\n\n// returns an array with the object keys sorted in alphabetical order\nexport const sortObjectKeys = (obj: { [key: string]: any }) => {\n const list = [];\n for (let key in obj) {\n list.push([key, obj[key]]);\n }\n return list.sort((a, b) => {\n if (a[0] < b[0]) {\n return -1;\n } else if (b[0] > a[0]) {\n return 1;\n } else {\n return 0;\n }\n });\n};\n\nexport const getRandomNumber = (min: number, max: number) => {\n return Math.random() * (max - min) + min;\n};\n\nexport const exportAsPdfFile = (\n data: { [key: string]: string }[],\n title: string | string[],\n headers: { header: string; key: string; width: number }[],\n layout: Orientation = \"landscape\",\n image = null\n) => {\n const config = new Config();\n config.autoSize = false;\n config.headerBackgroundColor = \"#009bc0\";\n config.headerTextColor = \"#fff\";\n config.fontSize = 14;\n\n const doc = new jsPDF({ orientation: layout });\n doc.text(title, layout === \"landscape\" ? 130 : 65, 10);\n const mainHeader = createHeaders(headers);\n\n if (image) {\n doc.addImage(image, \"PNG\", 70, 20, 70, 70);\n doc.table(10, 100, data, mainHeader, config);\n } else {\n // debugger;\n doc.table(10, 30, data, mainHeader, config);\n }\n doc.save(title + \".pdf\");\n};\n\nconst createHeaders = (keys: any[]) => {\n let result: CellConfig[] = [];\n for (let i = 0; i < keys.length; i++) {\n result.push({\n // header: keys[i].header,\n name: keys[i].key,\n prompt: keys[i].header,\n align: \"center\",\n width: keys[i].width?.toString(),\n padding: 0,\n });\n }\n return result;\n};\n\nexport const checkForValue = (\n value: any,\n returnType: \"string\" | \"number\" = \"string\"\n) => {\n let output = value;\n if (value === null || value === \"\" || !value || value === \"null\") {\n output = returnType === \"number\" ? 0 : \"N/A\";\n return output;\n }\n return output;\n};\n\nexport const formatDate = (\n date: Date | string,\n dateFormat?: string\n): string => {\n return moment(date).format(dateFormat ? dateFormat : \"LL LT\");\n};\n\nexport const formatDataForExport = (\n request: { data: { [key: string]: any }; date: string | Date }[]\n) => {\n let output: { [key: string]: any }[] = [];\n const sortedList = sortObjectKeys(request[0]?.data);\n sortedList.forEach((row, index) => {\n if (row[0] !== \"date\") {\n let pdfData: { [key: string]: any } = {\n serial: index + 1 + \"\",\n resource: titleCase(row[0]),\n };\n request.forEach((req, i) => {\n let dateString = formatDate(req?.date);\n // pdfData[dateString + ` (${index})`] = row[0];\n pdfData[dateString + ` (${i})`] =\n typeof req?.data[row[0]] === \"string\"\n ? titleCase(req?.data[row[0]])\n : req?.data[row[0]].toString();\n });\n output.push(pdfData);\n }\n });\n return output;\n};\n\nexport class Config implements TableConfig {\n autoSize: boolean = true;\n headerTextColor: string = \"#fff\";\n fontSize: number = 10;\n headerBackgroundColor: any;\n top: any;\n}\n\nexport type Orientation = \"landscape\" | \"portrait\";\n\nexport const generatePreliminaryHeaders = (\n wholeData: { data: { [key: string]: any }; date: string | Date }[]\n) => {\n const output: {\n header: string;\n key: string;\n width: number;\n }[] = [\n {\n header: \"SN\",\n key: \"serial\",\n width: 30,\n },\n {\n header: \"Resources\",\n key: \"resource\",\n width: 80,\n },\n ];\n wholeData.forEach((row, i) => {\n let day = formatDate(row?.date);\n output.push({\n header: titleCase(day),\n key: day + ` (${i})`,\n width: 65,\n });\n });\n return output;\n};\n","/*! xlsx.js (C) 2013-present SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*exported XLSX */\n/*global process:false, Buffer:false, ArrayBuffer:false, DataView:false, Deno:false */\nvar XLSX = {};\nXLSX.version = '0.18.5';\nvar current_codepage = 1200, current_ansi = 1252;\n\nvar VALID_ANSI = [ 874, 932, 936, 949, 950, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 10000 ];\n/* ECMA-376 Part I 18.4.1 charset to codepage mapping */\nvar CS2CP = ({\n\t/*::[*/0/*::]*/: 1252, /* ANSI */\n\t/*::[*/1/*::]*/: 65001, /* DEFAULT */\n\t/*::[*/2/*::]*/: 65001, /* SYMBOL */\n\t/*::[*/77/*::]*/: 10000, /* MAC */\n\t/*::[*/128/*::]*/: 932, /* SHIFTJIS */\n\t/*::[*/129/*::]*/: 949, /* HANGUL */\n\t/*::[*/130/*::]*/: 1361, /* JOHAB */\n\t/*::[*/134/*::]*/: 936, /* GB2312 */\n\t/*::[*/136/*::]*/: 950, /* CHINESEBIG5 */\n\t/*::[*/161/*::]*/: 1253, /* GREEK */\n\t/*::[*/162/*::]*/: 1254, /* TURKISH */\n\t/*::[*/163/*::]*/: 1258, /* VIETNAMESE */\n\t/*::[*/177/*::]*/: 1255, /* HEBREW */\n\t/*::[*/178/*::]*/: 1256, /* ARABIC */\n\t/*::[*/186/*::]*/: 1257, /* BALTIC */\n\t/*::[*/204/*::]*/: 1251, /* RUSSIAN */\n\t/*::[*/222/*::]*/: 874, /* THAI */\n\t/*::[*/238/*::]*/: 1250, /* EASTEUROPE */\n\t/*::[*/255/*::]*/: 1252, /* OEM */\n\t/*::[*/69/*::]*/: 6969 /* MISC */\n}/*:any*/);\n\nvar set_ansi = function(cp/*:number*/) { if(VALID_ANSI.indexOf(cp) == -1) return; current_ansi = CS2CP[0] = cp; };\nfunction reset_ansi() { set_ansi(1252); }\n\nvar set_cp = function(cp/*:number*/) { current_codepage = cp; set_ansi(cp); };\nfunction reset_cp() { set_cp(1200); reset_ansi(); }\n\nfunction char_codes(data/*:string*/)/*:Array*/ { var o/*:Array*/ = []; for(var i = 0, len = data.length; i < len; ++i) o[i] = data.charCodeAt(i); return o; }\n\nfunction utf16leread(data/*:string*/)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\tfor(var i = 0; i < (data.length>>1); ++i) o[i] = String.fromCharCode(data.charCodeAt(2*i) + (data.charCodeAt(2*i+1)<<8));\n\treturn o.join(\"\");\n}\nfunction utf16beread(data/*:string*/)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\tfor(var i = 0; i < (data.length>>1); ++i) o[i] = String.fromCharCode(data.charCodeAt(2*i+1) + (data.charCodeAt(2*i)<<8));\n\treturn o.join(\"\");\n}\n\nvar debom = function(data/*:string*/)/*:string*/ {\n\tvar c1 = data.charCodeAt(0), c2 = data.charCodeAt(1);\n\tif(c1 == 0xFF && c2 == 0xFE) return utf16leread(data.slice(2));\n\tif(c1 == 0xFE && c2 == 0xFF) return utf16beread(data.slice(2));\n\tif(c1 == 0xFEFF) return data.slice(1);\n\treturn data;\n};\n\nvar _getchar = function _gc1(x/*:number*/)/*:string*/ { return String.fromCharCode(x); };\nvar _getansi = function _ga1(x/*:number*/)/*:string*/ { return String.fromCharCode(x); };\n\nvar $cptable;\nfunction set_cptable(cptable) {\n\t$cptable = cptable;\n\tset_cp = function(cp/*:number*/) { current_codepage = cp; set_ansi(cp); };\n\tdebom = function(data/*:string*/) {\n\t\tif(data.charCodeAt(0) === 0xFF && data.charCodeAt(1) === 0xFE) { return $cptable.utils.decode(1200, char_codes(data.slice(2))); }\n\t\treturn data;\n\t};\n\t_getchar = function _gc2(x/*:number*/)/*:string*/ {\n\t\tif(current_codepage === 1200) return String.fromCharCode(x);\n\t\treturn $cptable.utils.decode(current_codepage, [x&255,x>>8])[0];\n\t};\n\t_getansi = function _ga2(x/*:number*/)/*:string*/ {\n\t\treturn $cptable.utils.decode(current_ansi, [x])[0];\n\t};\n\tcpdoit();\n}\nexport { set_cptable };\nvar DENSE = null;\nvar DIF_XL = true;\nvar Base64_map = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nfunction Base64_encode(input) {\n var o = \"\";\n var c1 = 0, c2 = 0, c3 = 0, e1 = 0, e2 = 0, e3 = 0, e4 = 0;\n for (var i = 0; i < input.length; ) {\n c1 = input.charCodeAt(i++);\n e1 = c1 >> 2;\n c2 = input.charCodeAt(i++);\n e2 = (c1 & 3) << 4 | c2 >> 4;\n c3 = input.charCodeAt(i++);\n e3 = (c2 & 15) << 2 | c3 >> 6;\n e4 = c3 & 63;\n if (isNaN(c2)) {\n e3 = e4 = 64;\n } else if (isNaN(c3)) {\n e4 = 64;\n }\n o += Base64_map.charAt(e1) + Base64_map.charAt(e2) + Base64_map.charAt(e3) + Base64_map.charAt(e4);\n }\n return o;\n}\nfunction Base64_decode(input) {\n var o = \"\";\n var c1 = 0, c2 = 0, c3 = 0, e1 = 0, e2 = 0, e3 = 0, e4 = 0;\n input = input.replace(/[^\\w\\+\\/\\=]/g, \"\");\n for (var i = 0; i < input.length; ) {\n e1 = Base64_map.indexOf(input.charAt(i++));\n e2 = Base64_map.indexOf(input.charAt(i++));\n c1 = e1 << 2 | e2 >> 4;\n o += String.fromCharCode(c1);\n e3 = Base64_map.indexOf(input.charAt(i++));\n c2 = (e2 & 15) << 4 | e3 >> 2;\n if (e3 !== 64) {\n o += String.fromCharCode(c2);\n }\n e4 = Base64_map.indexOf(input.charAt(i++));\n c3 = (e3 & 3) << 6 | e4;\n if (e4 !== 64) {\n o += String.fromCharCode(c3);\n }\n }\n return o;\n}\nvar has_buf = /*#__PURE__*/(function() { return typeof Buffer !== 'undefined' && typeof process !== 'undefined' && typeof process.versions !== 'undefined' && !!process.versions.node; })();\n\nvar Buffer_from = /*#__PURE__*/(function() {\n\tif(typeof Buffer !== 'undefined') {\n\t\tvar nbfs = !Buffer.from;\n\t\tif(!nbfs) try { Buffer.from(\"foo\", \"utf8\"); } catch(e) { nbfs = true; }\n\t\treturn nbfs ? function(buf, enc) { return (enc) ? new Buffer(buf, enc) : new Buffer(buf); } : Buffer.from.bind(Buffer);\n\t}\n\treturn function() {};\n})();\n\n\nfunction new_raw_buf(len/*:number*/) {\n\t/* jshint -W056 */\n\tif(has_buf) return Buffer.alloc ? Buffer.alloc(len) : new Buffer(len);\n\treturn typeof Uint8Array != \"undefined\" ? new Uint8Array(len) : new Array(len);\n\t/* jshint +W056 */\n}\n\nfunction new_unsafe_buf(len/*:number*/) {\n\t/* jshint -W056 */\n\tif(has_buf) return Buffer.allocUnsafe ? Buffer.allocUnsafe(len) : new Buffer(len);\n\treturn typeof Uint8Array != \"undefined\" ? new Uint8Array(len) : new Array(len);\n\t/* jshint +W056 */\n}\n\nvar s2a = function s2a(s/*:string*/)/*:any*/ {\n\tif(has_buf) return Buffer_from(s, \"binary\");\n\treturn s.split(\"\").map(function(x/*:string*/)/*:number*/{ return x.charCodeAt(0) & 0xff; });\n};\n\nfunction s2ab(s/*:string*/)/*:any*/ {\n\tif(typeof ArrayBuffer === 'undefined') return s2a(s);\n\tvar buf = new ArrayBuffer(s.length), view = new Uint8Array(buf);\n\tfor (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;\n\treturn buf;\n}\n\nfunction a2s(data/*:any*/)/*:string*/ {\n\tif(Array.isArray(data)) return data.map(function(c) { return String.fromCharCode(c); }).join(\"\");\n\tvar o/*:Array*/ = []; for(var i = 0; i < data.length; ++i) o[i] = String.fromCharCode(data[i]); return o.join(\"\");\n}\n\nfunction a2u(data/*:Array*/)/*:Uint8Array*/ {\n\tif(typeof Uint8Array === 'undefined') throw new Error(\"Unsupported\");\n\treturn new Uint8Array(data);\n}\n\nfunction ab2a(data/*:ArrayBuffer|Uint8Array*/)/*:Array*/ {\n\tif(typeof ArrayBuffer == 'undefined') throw new Error(\"Unsupported\");\n\tif(data instanceof ArrayBuffer) return ab2a(new Uint8Array(data));\n\t/*:: if(data instanceof ArrayBuffer) throw new Error(\"unreachable\"); */\n\tvar o = new Array(data.length);\n\tfor(var i = 0; i < data.length; ++i) o[i] = data[i];\n\treturn o;\n}\n\nvar bconcat = has_buf ? function(bufs) { return Buffer.concat(bufs.map(function(buf) { return Buffer.isBuffer(buf) ? buf : Buffer_from(buf); })); } : function(bufs) {\n\tif(typeof Uint8Array !== \"undefined\") {\n\t\tvar i = 0, maxlen = 0;\n\t\tfor(i = 0; i < bufs.length; ++i) maxlen += bufs[i].length;\n\t\tvar o = new Uint8Array(maxlen);\n\t\tvar len = 0;\n\t\tfor(i = 0, maxlen = 0; i < bufs.length; maxlen += len, ++i) {\n\t\t\tlen = bufs[i].length;\n\t\t\tif(bufs[i] instanceof Uint8Array) o.set(bufs[i], maxlen);\n\t\t\telse if(typeof bufs[i] == \"string\") { throw \"wtf\"; }\n\t\t\telse o.set(new Uint8Array(bufs[i]), maxlen);\n\t\t}\n\t\treturn o;\n\t}\n\treturn [].concat.apply([], bufs.map(function(buf) { return Array.isArray(buf) ? buf : [].slice.call(buf); }));\n};\n\nfunction utf8decode(content/*:string*/) {\n\tvar out = [], widx = 0, L = content.length + 250;\n\tvar o = new_raw_buf(content.length + 255);\n\tfor(var ridx = 0; ridx < content.length; ++ridx) {\n\t\tvar c = content.charCodeAt(ridx);\n\t\tif(c < 0x80) o[widx++] = c;\n\t\telse if(c < 0x800) {\n\t\t\to[widx++] = (192|((c>>6)&31));\n\t\t\to[widx++] = (128|(c&63));\n\t\t} else if(c >= 0xD800 && c < 0xE000) {\n\t\t\tc = (c&1023)+64;\n\t\t\tvar d = content.charCodeAt(++ridx)&1023;\n\t\t\to[widx++] = (240|((c>>8)&7));\n\t\t\to[widx++] = (128|((c>>2)&63));\n\t\t\to[widx++] = (128|((d>>6)&15)|((c&3)<<4));\n\t\t\to[widx++] = (128|(d&63));\n\t\t} else {\n\t\t\to[widx++] = (224|((c>>12)&15));\n\t\t\to[widx++] = (128|((c>>6)&63));\n\t\t\to[widx++] = (128|(c&63));\n\t\t}\n\t\tif(widx > L) {\n\t\t\tout.push(o.slice(0, widx));\n\t\t\twidx = 0;\n\t\t\to = new_raw_buf(65535);\n\t\t\tL = 65530;\n\t\t}\n\t}\n\tout.push(o.slice(0, widx));\n\treturn bconcat(out);\n}\n\nvar chr0 = /\\u0000/g, chr1 = /[\\u0001-\\u0006]/g;\n/*::\ndeclare type Block = any;\ndeclare type BufArray = {\n\tnewblk(sz:number):Block;\n\tnext(sz:number):Block;\n\tend():any;\n\tpush(buf:Block):void;\n};\n\ntype RecordHopperCB = {(d:any, Rn:string, RT:number):?boolean;};\n\ntype EvertType = {[string]:string};\ntype EvertNumType = {[string]:number};\ntype EvertArrType = {[string]:Array};\n\ntype StringConv = {(string):string};\n\n*/\n/* ssf.js (C) 2013-present SheetJS -- http://sheetjs.com */\n/*jshint -W041 */\nfunction _strrev(x/*:string*/)/*:string*/ { var o = \"\", i = x.length-1; while(i>=0) o += x.charAt(i--); return o; }\nfunction pad0(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+v; return t.length>=d?t:fill('0',d-t.length)+t;}\nfunction pad_(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+v;return t.length>=d?t:fill(' ',d-t.length)+t;}\nfunction rpad_(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+v; return t.length>=d?t:t+fill(' ',d-t.length);}\nfunction pad0r1(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+Math.round(v); return t.length>=d?t:fill('0',d-t.length)+t;}\nfunction pad0r2(v/*:any*/,d/*:number*/)/*:string*/{var t=\"\"+v; return t.length>=d?t:fill('0',d-t.length)+t;}\nvar p2_32 = /*#__PURE__*/Math.pow(2,32);\nfunction pad0r(v/*:any*/,d/*:number*/)/*:string*/{if(v>p2_32||v<-p2_32) return pad0r1(v,d); var i = Math.round(v); return pad0r2(i,d); }\n/* yes, in 2022 this is still faster than string compare */\nfunction SSF_isgeneral(s/*:string*/, i/*:?number*/)/*:boolean*/ { i = i || 0; return s.length >= 7 + i && (s.charCodeAt(i)|32) === 103 && (s.charCodeAt(i+1)|32) === 101 && (s.charCodeAt(i+2)|32) === 110 && (s.charCodeAt(i+3)|32) === 101 && (s.charCodeAt(i+4)|32) === 114 && (s.charCodeAt(i+5)|32) === 97 && (s.charCodeAt(i+6)|32) === 108; }\nvar days/*:Array >*/ = [\n\t['Sun', 'Sunday'],\n\t['Mon', 'Monday'],\n\t['Tue', 'Tuesday'],\n\t['Wed', 'Wednesday'],\n\t['Thu', 'Thursday'],\n\t['Fri', 'Friday'],\n\t['Sat', 'Saturday']\n];\nvar months/*:Array >*/ = [\n\t['J', 'Jan', 'January'],\n\t['F', 'Feb', 'February'],\n\t['M', 'Mar', 'March'],\n\t['A', 'Apr', 'April'],\n\t['M', 'May', 'May'],\n\t['J', 'Jun', 'June'],\n\t['J', 'Jul', 'July'],\n\t['A', 'Aug', 'August'],\n\t['S', 'Sep', 'September'],\n\t['O', 'Oct', 'October'],\n\t['N', 'Nov', 'November'],\n\t['D', 'Dec', 'December']\n];\nfunction SSF_init_table(t/*:any*/) {\n\tif(!t) t = {};\n\tt[0]= 'General';\n\tt[1]= '0';\n\tt[2]= '0.00';\n\tt[3]= '#,##0';\n\tt[4]= '#,##0.00';\n\tt[9]= '0%';\n\tt[10]= '0.00%';\n\tt[11]= '0.00E+00';\n\tt[12]= '# ?/?';\n\tt[13]= '# ??/??';\n\tt[14]= 'm/d/yy';\n\tt[15]= 'd-mmm-yy';\n\tt[16]= 'd-mmm';\n\tt[17]= 'mmm-yy';\n\tt[18]= 'h:mm AM/PM';\n\tt[19]= 'h:mm:ss AM/PM';\n\tt[20]= 'h:mm';\n\tt[21]= 'h:mm:ss';\n\tt[22]= 'm/d/yy h:mm';\n\tt[37]= '#,##0 ;(#,##0)';\n\tt[38]= '#,##0 ;[Red](#,##0)';\n\tt[39]= '#,##0.00;(#,##0.00)';\n\tt[40]= '#,##0.00;[Red](#,##0.00)';\n\tt[45]= 'mm:ss';\n\tt[46]= '[h]:mm:ss';\n\tt[47]= 'mmss.0';\n\tt[48]= '##0.0E+0';\n\tt[49]= '@';\n\tt[56]= '\"上午/下午 \"hh\"時\"mm\"分\"ss\"秒 \"';\n\treturn t;\n}\n/* repeated to satiate webpack */\nvar table_fmt = {\n\t0: 'General',\n\t1: '0',\n\t2: '0.00',\n\t3: '#,##0',\n\t4: '#,##0.00',\n\t9: '0%',\n\t10: '0.00%',\n\t11: '0.00E+00',\n\t12: '# ?/?',\n\t13: '# ??/??',\n\t14: 'm/d/yy',\n\t15: 'd-mmm-yy',\n\t16: 'd-mmm',\n\t17: 'mmm-yy',\n\t18: 'h:mm AM/PM',\n\t19: 'h:mm:ss AM/PM',\n\t20: 'h:mm',\n\t21: 'h:mm:ss',\n\t22: 'm/d/yy h:mm',\n\t37: '#,##0 ;(#,##0)',\n\t38: '#,##0 ;[Red](#,##0)',\n\t39: '#,##0.00;(#,##0.00)',\n\t40: '#,##0.00;[Red](#,##0.00)',\n\t45: 'mm:ss',\n\t46: '[h]:mm:ss',\n\t47: 'mmss.0',\n\t48: '##0.0E+0',\n\t49: '@',\n\t56: '\"上午/下午 \"hh\"時\"mm\"分\"ss\"秒 \"'\n};\n\n/* Defaults determined by systematically testing in Excel 2019 */\n\n/* These formats appear to default to other formats in the table */\nvar SSF_default_map = {\n\t5: 37, 6: 38, 7: 39, 8: 40, // 5 -> 37 ... 8 -> 40\n\n\t23: 0, 24: 0, 25: 0, 26: 0, // 23 -> 0 ... 26 -> 0\n\n\t27: 14, 28: 14, 29: 14, 30: 14, 31: 14, // 27 -> 14 ... 31 -> 14\n\n\t50: 14, 51: 14, 52: 14, 53: 14, 54: 14, // 50 -> 14 ... 58 -> 14\n\t55: 14, 56: 14, 57: 14, 58: 14,\n\t59: 1, 60: 2, 61: 3, 62: 4, // 59 -> 1 ... 62 -> 4\n\n\t67: 9, 68: 10, // 67 -> 9 ... 68 -> 10\n\t69: 12, 70: 13, 71: 14, // 69 -> 12 ... 71 -> 14\n\t72: 14, 73: 15, 74: 16, 75: 17, // 72 -> 14 ... 75 -> 17\n\t76: 20, 77: 21, 78: 22, // 76 -> 20 ... 78 -> 22\n\t79: 45, 80: 46, 81: 47, // 79 -> 45 ... 81 -> 47\n\t82: 0 // 82 -> 0 ... 65536 -> 0 (omitted)\n};\n\n\n/* These formats technically refer to Accounting formats with no equivalent */\nvar SSF_default_str = {\n\t// 5 -- Currency, 0 decimal, black negative\n\t5: '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\t63: '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\n\t// 6 -- Currency, 0 decimal, red negative\n\t6: '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\t64: '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\n\t// 7 -- Currency, 2 decimal, black negative\n\t7: '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\t65: '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\n\t// 8 -- Currency, 2 decimal, red negative\n\t8: '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t66: '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\n\t// 41 -- Accounting, 0 decimal, No Symbol\n\t41: '_(* #,##0_);_(* \\\\(#,##0\\\\);_(* \"-\"_);_(@_)',\n\n\t// 42 -- Accounting, 0 decimal, $ Symbol\n\t42: '_(\"$\"* #,##0_);_(\"$\"* \\\\(#,##0\\\\);_(\"$\"* \"-\"_);_(@_)',\n\n\t// 43 -- Accounting, 2 decimal, No Symbol\n\t43: '_(* #,##0.00_);_(* \\\\(#,##0.00\\\\);_(* \"-\"??_);_(@_)',\n\n\t// 44 -- Accounting, 2 decimal, $ Symbol\n\t44: '_(\"$\"* #,##0.00_);_(\"$\"* \\\\(#,##0.00\\\\);_(\"$\"* \"-\"??_);_(@_)'\n};\n\nfunction SSF_frac(x/*:number*/, D/*:number*/, mixed/*:?boolean*/)/*:Array*/ {\n\tvar sgn = x < 0 ? -1 : 1;\n\tvar B = x * sgn;\n\tvar P_2 = 0, P_1 = 1, P = 0;\n\tvar Q_2 = 1, Q_1 = 0, Q = 0;\n\tvar A = Math.floor(B);\n\twhile(Q_1 < D) {\n\t\tA = Math.floor(B);\n\t\tP = A * P_1 + P_2;\n\t\tQ = A * Q_1 + Q_2;\n\t\tif((B - A) < 0.00000005) break;\n\t\tB = 1 / (B - A);\n\t\tP_2 = P_1; P_1 = P;\n\t\tQ_2 = Q_1; Q_1 = Q;\n\t}\n\tif(Q > D) { if(Q_1 > D) { Q = Q_2; P = P_2; } else { Q = Q_1; P = P_1; } }\n\tif(!mixed) return [0, sgn * P, Q];\n\tvar q = Math.floor(sgn * P/Q);\n\treturn [q, sgn*P - q*Q, Q];\n}\nfunction SSF_parse_date_code(v/*:number*/,opts/*:?any*/,b2/*:?boolean*/) {\n\tif(v > 2958465 || v < 0) return null;\n\tvar date = (v|0), time = Math.floor(86400 * (v - date)), dow=0;\n\tvar dout=[];\n\tvar out={D:date, T:time, u:86400*(v-date)-time,y:0,m:0,d:0,H:0,M:0,S:0,q:0};\n\tif(Math.abs(out.u) < 1e-6) out.u = 0;\n\tif(opts && opts.date1904) date += 1462;\n\tif(out.u > 0.9999) {\n\t\tout.u = 0;\n\t\tif(++time == 86400) { out.T = time = 0; ++date; ++out.D; }\n\t}\n\tif(date === 60) {dout = b2 ? [1317,10,29] : [1900,2,29]; dow=3;}\n\telse if(date === 0) {dout = b2 ? [1317,8,29] : [1900,1,0]; dow=6;}\n\telse {\n\t\tif(date > 60) --date;\n\t\t/* 1 = Jan 1 1900 in Gregorian */\n\t\tvar d = new Date(1900, 0, 1);\n\t\td.setDate(d.getDate() + date - 1);\n\t\tdout = [d.getFullYear(), d.getMonth()+1,d.getDate()];\n\t\tdow = d.getDay();\n\t\tif(date < 60) dow = (dow + 6) % 7;\n\t\tif(b2) dow = SSF_fix_hijri(d, dout);\n\t}\n\tout.y = dout[0]; out.m = dout[1]; out.d = dout[2];\n\tout.S = time % 60; time = Math.floor(time / 60);\n\tout.M = time % 60; time = Math.floor(time / 60);\n\tout.H = time;\n\tout.q = dow;\n\treturn out;\n}\nvar SSFbasedate = /*#__PURE__*/new Date(1899, 11, 31, 0, 0, 0);\nvar SSFdnthresh = /*#__PURE__*/SSFbasedate.getTime();\nvar SSFbase1904 = /*#__PURE__*/new Date(1900, 2, 1, 0, 0, 0);\nfunction datenum_local(v/*:Date*/, date1904/*:?boolean*/)/*:number*/ {\n\tvar epoch = /*#__PURE__*/v.getTime();\n\tif(date1904) epoch -= 1461*24*60*60*1000;\n\telse if(v >= SSFbase1904) epoch += 24*60*60*1000;\n\treturn (epoch - (SSFdnthresh + (/*#__PURE__*/v.getTimezoneOffset() - /*#__PURE__*/SSFbasedate.getTimezoneOffset()) * 60000)) / (24 * 60 * 60 * 1000);\n}\n/* ECMA-376 18.8.30 numFmt*/\n/* Note: `toPrecision` uses standard form when prec > E and E >= -6 */\n/* exponent >= -9 and <= 9 */\nfunction SSF_strip_decimal(o/*:string*/)/*:string*/ {\n\treturn (o.indexOf(\".\") == -1) ? o : o.replace(/(?:\\.0*|(\\.\\d*[1-9])0+)$/, \"$1\");\n}\n\n/* General Exponential always shows 2 digits exp and trims the mantissa */\nfunction SSF_normalize_exp(o/*:string*/)/*:string*/ {\n\tif(o.indexOf(\"E\") == -1) return o;\n\treturn o.replace(/(?:\\.0*|(\\.\\d*[1-9])0+)[Ee]/,\"$1E\").replace(/(E[+-])(\\d)$/,\"$10$2\");\n}\n\n/* exponent >= -9 and <= 9 */\nfunction SSF_small_exp(v/*:number*/)/*:string*/ {\n\tvar w = (v<0?12:11);\n\tvar o = SSF_strip_decimal(v.toFixed(12)); if(o.length <= w) return o;\n\to = v.toPrecision(10); if(o.length <= w) return o;\n\treturn v.toExponential(5);\n}\n\n/* exponent >= 11 or <= -10 likely exponential */\nfunction SSF_large_exp(v/*:number*/)/*:string*/ {\n\tvar o = SSF_strip_decimal(v.toFixed(11));\n\treturn (o.length > (v<0?12:11) || o === \"0\" || o === \"-0\") ? v.toPrecision(6) : o;\n}\n\nfunction SSF_general_num(v/*:number*/)/*:string*/ {\n\tvar V = Math.floor(Math.log(Math.abs(v))*Math.LOG10E), o;\n\n\tif(V >= -4 && V <= -1) o = v.toPrecision(10+V);\n\telse if(Math.abs(V) <= 9) o = SSF_small_exp(v);\n\telse if(V === 10) o = v.toFixed(10).substr(0,12);\n\telse o = SSF_large_exp(v);\n\n\treturn SSF_strip_decimal(SSF_normalize_exp(o.toUpperCase()));\n}\n\n\n/*\n\t\"General\" rules:\n\t- text is passed through (\"@\")\n\t- booleans are rendered as TRUE/FALSE\n\t- \"up to 11 characters\" displayed for numbers\n\t- Default date format (code 14) used for Dates\n\n\tThe longest 32-bit integer text is \"-2147483648\", exactly 11 chars\n\tTODO: technically the display depends on the width of the cell\n*/\nfunction SSF_general(v/*:any*/, opts/*:any*/) {\n\tswitch(typeof v) {\n\t\tcase 'string': return v;\n\t\tcase 'boolean': return v ? \"TRUE\" : \"FALSE\";\n\t\tcase 'number': return (v|0) === v ? v.toString(10) : SSF_general_num(v);\n\t\tcase 'undefined': return \"\";\n\t\tcase 'object':\n\t\t\tif(v == null) return \"\";\n\t\t\tif(v instanceof Date) return SSF_format(14, datenum_local(v, opts && opts.date1904), opts);\n\t}\n\tthrow new Error(\"unsupported value in General format: \" + v);\n}\n\nfunction SSF_fix_hijri(date/*:Date*/, o/*:[number, number, number]*/) {\n /* TODO: properly adjust y/m/d and */\n o[0] -= 581;\n var dow = date.getDay();\n if(date < 60) dow = (dow + 6) % 7;\n return dow;\n}\n//var THAI_DIGITS = \"\\u0E50\\u0E51\\u0E52\\u0E53\\u0E54\\u0E55\\u0E56\\u0E57\\u0E58\\u0E59\".split(\"\");\nfunction SSF_write_date(type/*:number*/, fmt/*:string*/, val, ss0/*:?number*/)/*:string*/ {\n\tvar o=\"\", ss=0, tt=0, y = val.y, out, outl = 0;\n\tswitch(type) {\n\t\tcase 98: /* 'b' buddhist year */\n\t\t\ty = val.y + 543;\n\t\t\t/* falls through */\n\t\tcase 121: /* 'y' year */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = y % 100; outl = 2; break;\n\t\t\tdefault: out = y % 10000; outl = 4; break;\n\t\t} break;\n\t\tcase 109: /* 'm' month */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.m; outl = fmt.length; break;\n\t\t\tcase 3: return months[val.m-1][1];\n\t\t\tcase 5: return months[val.m-1][0];\n\t\t\tdefault: return months[val.m-1][2];\n\t\t} break;\n\t\tcase 100: /* 'd' day */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.d; outl = fmt.length; break;\n\t\t\tcase 3: return days[val.q][0];\n\t\t\tdefault: return days[val.q][1];\n\t\t} break;\n\t\tcase 104: /* 'h' 12-hour */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = 1+(val.H+11)%12; outl = fmt.length; break;\n\t\t\tdefault: throw 'bad hour format: ' + fmt;\n\t\t} break;\n\t\tcase 72: /* 'H' 24-hour */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.H; outl = fmt.length; break;\n\t\t\tdefault: throw 'bad hour format: ' + fmt;\n\t\t} break;\n\t\tcase 77: /* 'M' minutes */\n\t\tswitch(fmt.length) {\n\t\t\tcase 1: case 2: out = val.M; outl = fmt.length; break;\n\t\t\tdefault: throw 'bad minute format: ' + fmt;\n\t\t} break;\n\t\tcase 115: /* 's' seconds */\n\t\t\tif(fmt != 's' && fmt != 'ss' && fmt != '.0' && fmt != '.00' && fmt != '.000') throw 'bad second format: ' + fmt;\n\t\t\tif(val.u === 0 && (fmt == \"s\" || fmt == \"ss\")) return pad0(val.S, fmt.length);\n\t\t\t/*::if(!ss0) ss0 = 0; */\n\t\t\tif(ss0 >= 2) tt = ss0 === 3 ? 1000 : 100;\n\t\t\telse tt = ss0 === 1 ? 10 : 1;\n\t\t\tss = Math.round((tt)*(val.S + val.u));\n\t\t\tif(ss >= 60*tt) ss = 0;\n\t\t\tif(fmt === 's') return ss === 0 ? \"0\" : \"\"+ss/tt;\n\t\t\to = pad0(ss,2 + ss0);\n\t\t\tif(fmt === 'ss') return o.substr(0,2);\n\t\t\treturn \".\" + o.substr(2,fmt.length-1);\n\t\tcase 90: /* 'Z' absolute time */\n\t\tswitch(fmt) {\n\t\t\tcase '[h]': case '[hh]': out = val.D*24+val.H; break;\n\t\t\tcase '[m]': case '[mm]': out = (val.D*24+val.H)*60+val.M; break;\n\t\t\tcase '[s]': case '[ss]': out = ((val.D*24+val.H)*60+val.M)*60+Math.round(val.S+val.u); break;\n\t\t\tdefault: throw 'bad abstime format: ' + fmt;\n\t\t} outl = fmt.length === 3 ? 1 : 2; break;\n\t\tcase 101: /* 'e' era */\n\t\t\tout = y; outl = 1; break;\n\t}\n\tvar outstr = outl > 0 ? pad0(out, outl) : \"\";\n\treturn outstr;\n}\n\n\n/*jshint -W086 */\n/*jshint +W086 */\nfunction commaify(s/*:string*/)/*:string*/ {\n\tvar w = 3;\n\tif(s.length <= w) return s;\n\tvar j = (s.length % w), o = s.substr(0,j);\n\tfor(; j!=s.length; j+=w) o+=(o.length > 0 ? \",\" : \"\") + s.substr(j,w);\n\treturn o;\n}\nvar pct1 = /%/g;\nfunction write_num_pct(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/{\n\tvar sfmt = fmt.replace(pct1,\"\"), mul = fmt.length - sfmt.length;\n\treturn write_num(type, sfmt, val * Math.pow(10,2*mul)) + fill(\"%\",mul);\n}\n\nfunction write_num_cm(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/{\n\tvar idx = fmt.length - 1;\n\twhile(fmt.charCodeAt(idx-1) === 44) --idx;\n\treturn write_num(type, fmt.substr(0,idx), val / Math.pow(10,3*(fmt.length-idx)));\n}\n\nfunction write_num_exp(fmt/*:string*/, val/*:number*/)/*:string*/{\n\tvar o/*:string*/;\n\tvar idx = fmt.indexOf(\"E\") - fmt.indexOf(\".\") - 1;\n\tif(fmt.match(/^#+0.0E\\+0$/)) {\n\t\tif(val == 0) return \"0.0E+0\";\n\t\telse if(val < 0) return \"-\" + write_num_exp(fmt, -val);\n\t\tvar period = fmt.indexOf(\".\"); if(period === -1) period=fmt.indexOf('E');\n\t\tvar ee = Math.floor(Math.log(val)*Math.LOG10E)%period;\n\t\tif(ee < 0) ee += period;\n\t\to = (val/Math.pow(10,ee)).toPrecision(idx+1+(period+ee)%period);\n\t\tif(o.indexOf(\"e\") === -1) {\n\t\t\tvar fakee = Math.floor(Math.log(val)*Math.LOG10E);\n\t\t\tif(o.indexOf(\".\") === -1) o = o.charAt(0) + \".\" + o.substr(1) + \"E+\" + (fakee - o.length+ee);\n\t\t\telse o += \"E+\" + (fakee - ee);\n\t\t\twhile(o.substr(0,2) === \"0.\") {\n\t\t\t\to = o.charAt(0) + o.substr(2,period) + \".\" + o.substr(2+period);\n\t\t\t\to = o.replace(/^0+([1-9])/,\"$1\").replace(/^0+\\./,\"0.\");\n\t\t\t}\n\t\t\to = o.replace(/\\+-/,\"-\");\n\t\t}\n\t\to = o.replace(/^([+-]?)(\\d*)\\.(\\d*)[Ee]/,function($$,$1,$2,$3) { return $1 + $2 + $3.substr(0,(period+ee)%period) + \".\" + $3.substr(ee) + \"E\"; });\n\t} else o = val.toExponential(idx);\n\tif(fmt.match(/E\\+00$/) && o.match(/e[+-]\\d$/)) o = o.substr(0,o.length-1) + \"0\" + o.charAt(o.length-1);\n\tif(fmt.match(/E\\-/) && o.match(/e\\+/)) o = o.replace(/e\\+/,\"e\");\n\treturn o.replace(\"e\",\"E\");\n}\nvar frac1 = /# (\\?+)( ?)\\/( ?)(\\d+)/;\nfunction write_num_f1(r/*:Array*/, aval/*:number*/, sign/*:string*/)/*:string*/ {\n\tvar den = parseInt(r[4],10), rr = Math.round(aval * den), base = Math.floor(rr/den);\n\tvar myn = (rr - base*den), myd = den;\n\treturn sign + (base === 0 ? \"\" : \"\"+base) + \" \" + (myn === 0 ? fill(\" \", r[1].length + 1 + r[4].length) : pad_(myn,r[1].length) + r[2] + \"/\" + r[3] + pad0(myd,r[4].length));\n}\nfunction write_num_f2(r/*:Array*/, aval/*:number*/, sign/*:string*/)/*:string*/ {\n\treturn sign + (aval === 0 ? \"\" : \"\"+aval) + fill(\" \", r[1].length + 2 + r[4].length);\n}\nvar dec1 = /^#*0*\\.([0#]+)/;\nvar closeparen = /\\).*[0#]/;\nvar phone = /\\(###\\) ###\\\\?-####/;\nfunction hashq(str/*:string*/)/*:string*/ {\n\tvar o = \"\", cc;\n\tfor(var i = 0; i != str.length; ++i) switch((cc=str.charCodeAt(i))) {\n\t\tcase 35: break;\n\t\tcase 63: o+= \" \"; break;\n\t\tcase 48: o+= \"0\"; break;\n\t\tdefault: o+= String.fromCharCode(cc);\n\t}\n\treturn o;\n}\nfunction rnd(val/*:number*/, d/*:number*/)/*:string*/ { var dd = Math.pow(10,d); return \"\"+(Math.round(val * dd)/dd); }\nfunction dec(val/*:number*/, d/*:number*/)/*:number*/ {\n\tvar _frac = val - Math.floor(val), dd = Math.pow(10,d);\n\tif (d < ('' + Math.round(_frac * dd)).length) return 0;\n\treturn Math.round(_frac * dd);\n}\nfunction carry(val/*:number*/, d/*:number*/)/*:number*/ {\n\tif (d < ('' + Math.round((val-Math.floor(val))*Math.pow(10,d))).length) {\n\t\treturn 1;\n\t}\n\treturn 0;\n}\nfunction flr(val/*:number*/)/*:string*/ {\n\tif(val < 2147483647 && val > -2147483648) return \"\"+(val >= 0 ? (val|0) : (val-1|0));\n\treturn \"\"+Math.floor(val);\n}\nfunction write_num_flt(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/ {\n\tif(type.charCodeAt(0) === 40 && !fmt.match(closeparen)) {\n\t\tvar ffmt = fmt.replace(/\\( */,\"\").replace(/ \\)/,\"\").replace(/\\)/,\"\");\n\t\tif(val >= 0) return write_num_flt('n', ffmt, val);\n\t\treturn '(' + write_num_flt('n', ffmt, -val) + ')';\n\t}\n\tif(fmt.charCodeAt(fmt.length - 1) === 44) return write_num_cm(type, fmt, val);\n\tif(fmt.indexOf('%') !== -1) return write_num_pct(type, fmt, val);\n\tif(fmt.indexOf('E') !== -1) return write_num_exp(fmt, val);\n\tif(fmt.charCodeAt(0) === 36) return \"$\"+write_num_flt(type,fmt.substr(fmt.charAt(1)==' '?2:1),val);\n\tvar o;\n\tvar r/*:?Array*/, ri, ff, aval = Math.abs(val), sign = val < 0 ? \"-\" : \"\";\n\tif(fmt.match(/^00+$/)) return sign + pad0r(aval,fmt.length);\n\tif(fmt.match(/^[#?]+$/)) {\n\t\to = pad0r(val,0); if(o === \"0\") o = \"\";\n\t\treturn o.length > fmt.length ? o : hashq(fmt.substr(0,fmt.length-o.length)) + o;\n\t}\n\tif((r = fmt.match(frac1))) return write_num_f1(r, aval, sign);\n\tif(fmt.match(/^#+0+$/)) return sign + pad0r(aval,fmt.length - fmt.indexOf(\"0\"));\n\tif((r = fmt.match(dec1))) {\n\t\to = rnd(val, r[1].length).replace(/^([^\\.]+)$/,\"$1.\"+hashq(r[1])).replace(/\\.$/,\".\"+hashq(r[1])).replace(/\\.(\\d*)$/,function($$, $1) { return \".\" + $1 + fill(\"0\", hashq(/*::(*/r/*::||[\"\"])*/[1]).length-$1.length); });\n\t\treturn fmt.indexOf(\"0.\") !== -1 ? o : o.replace(/^0\\./,\".\");\n\t}\n\tfmt = fmt.replace(/^#+([0.])/, \"$1\");\n\tif((r = fmt.match(/^(0*)\\.(#*)$/))) {\n\t\treturn sign + rnd(aval, r[2].length).replace(/\\.(\\d*[1-9])0*$/,\".$1\").replace(/^(-?\\d*)$/,\"$1.\").replace(/^0\\./,r[1].length?\"0.\":\".\");\n\t}\n\tif((r = fmt.match(/^#{1,3},##0(\\.?)$/))) return sign + commaify(pad0r(aval,0));\n\tif((r = fmt.match(/^#,##0\\.([#0]*0)$/))) {\n\t\treturn val < 0 ? \"-\" + write_num_flt(type, fmt, -val) : commaify(\"\"+(Math.floor(val) + carry(val, r[1].length))) + \".\" + pad0(dec(val, r[1].length),r[1].length);\n\t}\n\tif((r = fmt.match(/^#,#*,#0/))) return write_num_flt(type,fmt.replace(/^#,#*,/,\"\"),val);\n\tif((r = fmt.match(/^([0#]+)(\\\\?-([0#]+))+$/))) {\n\t\to = _strrev(write_num_flt(type, fmt.replace(/[\\\\-]/g,\"\"), val));\n\t\tri = 0;\n\t\treturn _strrev(_strrev(fmt.replace(/\\\\/g,\"\")).replace(/[0#]/g,function(x){return ri= 0) return write_num_int('n', ffmt, val);\n\t\treturn '(' + write_num_int('n', ffmt, -val) + ')';\n\t}\n\tif(fmt.charCodeAt(fmt.length - 1) === 44) return write_num_cm2(type, fmt, val);\n\tif(fmt.indexOf('%') !== -1) return write_num_pct2(type, fmt, val);\n\tif(fmt.indexOf('E') !== -1) return write_num_exp2(fmt, val);\n\tif(fmt.charCodeAt(0) === 36) return \"$\"+write_num_int(type,fmt.substr(fmt.charAt(1)==' '?2:1),val);\n\tvar o;\n\tvar r/*:?Array*/, ri, ff, aval = Math.abs(val), sign = val < 0 ? \"-\" : \"\";\n\tif(fmt.match(/^00+$/)) return sign + pad0(aval,fmt.length);\n\tif(fmt.match(/^[#?]+$/)) {\n\t\to = (\"\"+val); if(val === 0) o = \"\";\n\t\treturn o.length > fmt.length ? o : hashq(fmt.substr(0,fmt.length-o.length)) + o;\n\t}\n\tif((r = fmt.match(frac1))) return write_num_f2(r, aval, sign);\n\tif(fmt.match(/^#+0+$/)) return sign + pad0(aval,fmt.length - fmt.indexOf(\"0\"));\n\tif((r = fmt.match(dec1))) {\n\t\t/*:: if(!Array.isArray(r)) throw new Error(\"unreachable\"); */\n\t\to = (\"\"+val).replace(/^([^\\.]+)$/,\"$1.\"+hashq(r[1])).replace(/\\.$/,\".\"+hashq(r[1]));\n\t\to = o.replace(/\\.(\\d*)$/,function($$, $1) {\n\t\t/*:: if(!Array.isArray(r)) throw new Error(\"unreachable\"); */\n\t\t\treturn \".\" + $1 + fill(\"0\", hashq(r[1]).length-$1.length); });\n\t\treturn fmt.indexOf(\"0.\") !== -1 ? o : o.replace(/^0\\./,\".\");\n\t}\n\tfmt = fmt.replace(/^#+([0.])/, \"$1\");\n\tif((r = fmt.match(/^(0*)\\.(#*)$/))) {\n\t\treturn sign + (\"\"+aval).replace(/\\.(\\d*[1-9])0*$/,\".$1\").replace(/^(-?\\d*)$/,\"$1.\").replace(/^0\\./,r[1].length?\"0.\":\".\");\n\t}\n\tif((r = fmt.match(/^#{1,3},##0(\\.?)$/))) return sign + commaify((\"\"+aval));\n\tif((r = fmt.match(/^#,##0\\.([#0]*0)$/))) {\n\t\treturn val < 0 ? \"-\" + write_num_int(type, fmt, -val) : commaify((\"\"+val)) + \".\" + fill('0',r[1].length);\n\t}\n\tif((r = fmt.match(/^#,#*,#0/))) return write_num_int(type,fmt.replace(/^#,#*,/,\"\"),val);\n\tif((r = fmt.match(/^([0#]+)(\\\\?-([0#]+))+$/))) {\n\t\to = _strrev(write_num_int(type, fmt.replace(/[\\\\-]/g,\"\"), val));\n\t\tri = 0;\n\t\treturn _strrev(_strrev(fmt.replace(/\\\\/g,\"\")).replace(/[0#]/g,function(x){return ri*/ {\n\tvar out/*:Array*/ = [];\n\tvar in_str = false/*, cc*/;\n\tfor(var i = 0, j = 0; i < fmt.length; ++i) switch((/*cc=*/fmt.charCodeAt(i))) {\n\t\tcase 34: /* '\"' */\n\t\t\tin_str = !in_str; break;\n\t\tcase 95: case 42: case 92: /* '_' '*' '\\\\' */\n\t\t\t++i; break;\n\t\tcase 59: /* ';' */\n\t\t\tout[out.length] = fmt.substr(j,i-j);\n\t\t\tj = i+1;\n\t}\n\tout[out.length] = fmt.substr(j);\n\tif(in_str === true) throw new Error(\"Format |\" + fmt + \"| unterminated string \");\n\treturn out;\n}\n\nvar SSF_abstime = /\\[[HhMmSs\\u0E0A\\u0E19\\u0E17]*\\]/;\nfunction fmt_is_date(fmt/*:string*/)/*:boolean*/ {\n\tvar i = 0, /*cc = 0,*/ c = \"\", o = \"\";\n\twhile(i < fmt.length) {\n\t\tswitch((c = fmt.charAt(i))) {\n\t\t\tcase 'G': if(SSF_isgeneral(fmt, i)) i+= 6; i++; break;\n\t\t\tcase '\"': for(;(/*cc=*/fmt.charCodeAt(++i)) !== 34 && i < fmt.length;){/*empty*/} ++i; break;\n\t\t\tcase '\\\\': i+=2; break;\n\t\t\tcase '_': i+=2; break;\n\t\t\tcase '@': ++i; break;\n\t\t\tcase 'B': case 'b':\n\t\t\t\tif(fmt.charAt(i+1) === \"1\" || fmt.charAt(i+1) === \"2\") return true;\n\t\t\t\t/* falls through */\n\t\t\tcase 'M': case 'D': case 'Y': case 'H': case 'S': case 'E':\n\t\t\t\t/* falls through */\n\t\t\tcase 'm': case 'd': case 'y': case 'h': case 's': case 'e': case 'g': return true;\n\t\t\tcase 'A': case 'a': case '上':\n\t\t\t\tif(fmt.substr(i, 3).toUpperCase() === \"A/P\") return true;\n\t\t\t\tif(fmt.substr(i, 5).toUpperCase() === \"AM/PM\") return true;\n\t\t\t\tif(fmt.substr(i, 5).toUpperCase() === \"上午/下午\") return true;\n\t\t\t\t++i; break;\n\t\t\tcase '[':\n\t\t\t\to = c;\n\t\t\t\twhile(fmt.charAt(i++) !== ']' && i < fmt.length) o += fmt.charAt(i);\n\t\t\t\tif(o.match(SSF_abstime)) return true;\n\t\t\t\tbreak;\n\t\t\tcase '.':\n\t\t\t\t/* falls through */\n\t\t\tcase '0': case '#':\n\t\t\t\twhile(i < fmt.length && (\"0#?.,E+-%\".indexOf(c=fmt.charAt(++i)) > -1 || (c=='\\\\' && fmt.charAt(i+1) == \"-\" && \"0#\".indexOf(fmt.charAt(i+2))>-1))){/* empty */}\n\t\t\t\tbreak;\n\t\t\tcase '?': while(fmt.charAt(++i) === c){/* empty */} break;\n\t\t\tcase '*': ++i; if(fmt.charAt(i) == ' ' || fmt.charAt(i) == '*') ++i; break;\n\t\t\tcase '(': case ')': ++i; break;\n\t\t\tcase '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':\n\t\t\t\twhile(i < fmt.length && \"0123456789\".indexOf(fmt.charAt(++i)) > -1){/* empty */} break;\n\t\t\tcase ' ': ++i; break;\n\t\t\tdefault: ++i; break;\n\t\t}\n\t}\n\treturn false;\n}\n\nfunction eval_fmt(fmt/*:string*/, v/*:any*/, opts/*:any*/, flen/*:number*/) {\n\tvar out = [], o = \"\", i = 0, c = \"\", lst='t', dt, j, cc;\n\tvar hr='H';\n\t/* Tokenize */\n\twhile(i < fmt.length) {\n\t\tswitch((c = fmt.charAt(i))) {\n\t\t\tcase 'G': /* General */\n\t\t\t\tif(!SSF_isgeneral(fmt, i)) throw new Error('unrecognized character ' + c + ' in ' +fmt);\n\t\t\t\tout[out.length] = {t:'G', v:'General'}; i+=7; break;\n\t\t\tcase '\"': /* Literal text */\n\t\t\t\tfor(o=\"\";(cc=fmt.charCodeAt(++i)) !== 34 && i < fmt.length;) o += String.fromCharCode(cc);\n\t\t\t\tout[out.length] = {t:'t', v:o}; ++i; break;\n\t\t\tcase '\\\\': var w = fmt.charAt(++i), t = (w === \"(\" || w === \")\") ? w : 't';\n\t\t\t\tout[out.length] = {t:t, v:w}; ++i; break;\n\t\t\tcase '_': out[out.length] = {t:'t', v:\" \"}; i+=2; break;\n\t\t\tcase '@': /* Text Placeholder */\n\t\t\t\tout[out.length] = {t:'T', v:v}; ++i; break;\n\t\t\tcase 'B': case 'b':\n\t\t\t\tif(fmt.charAt(i+1) === \"1\" || fmt.charAt(i+1) === \"2\") {\n\t\t\t\t\tif(dt==null) { dt=SSF_parse_date_code(v, opts, fmt.charAt(i+1) === \"2\"); if(dt==null) return \"\"; }\n\t\t\t\t\tout[out.length] = {t:'X', v:fmt.substr(i,2)}; lst = c; i+=2; break;\n\t\t\t\t}\n\t\t\t\t/* falls through */\n\t\t\tcase 'M': case 'D': case 'Y': case 'H': case 'S': case 'E':\n\t\t\t\tc = c.toLowerCase();\n\t\t\t\t/* falls through */\n\t\t\tcase 'm': case 'd': case 'y': case 'h': case 's': case 'e': case 'g':\n\t\t\t\tif(v < 0) return \"\";\n\t\t\t\tif(dt==null) { dt=SSF_parse_date_code(v, opts); if(dt==null) return \"\"; }\n\t\t\t\to = c; while(++i < fmt.length && fmt.charAt(i).toLowerCase() === c) o+=c;\n\t\t\t\tif(c === 'm' && lst.toLowerCase() === 'h') c = 'M';\n\t\t\t\tif(c === 'h') c = hr;\n\t\t\t\tout[out.length] = {t:c, v:o}; lst = c; break;\n\t\t\tcase 'A': case 'a': case '上':\n\t\t\t\tvar q={t:c, v:c};\n\t\t\t\tif(dt==null) dt=SSF_parse_date_code(v, opts);\n\t\t\t\tif(fmt.substr(i, 3).toUpperCase() === \"A/P\") { if(dt!=null) q.v = dt.H >= 12 ? \"P\" : \"A\"; q.t = 'T'; hr='h';i+=3;}\n\t\t\t\telse if(fmt.substr(i,5).toUpperCase() === \"AM/PM\") { if(dt!=null) q.v = dt.H >= 12 ? \"PM\" : \"AM\"; q.t = 'T'; i+=5; hr='h'; }\n\t\t\t\telse if(fmt.substr(i,5).toUpperCase() === \"上午/下午\") { if(dt!=null) q.v = dt.H >= 12 ? \"下午\" : \"上午\"; q.t = 'T'; i+=5; hr='h'; }\n\t\t\t\telse { q.t = \"t\"; ++i; }\n\t\t\t\tif(dt==null && q.t === 'T') return \"\";\n\t\t\t\tout[out.length] = q; lst = c; break;\n\t\t\tcase '[':\n\t\t\t\to = c;\n\t\t\t\twhile(fmt.charAt(i++) !== ']' && i < fmt.length) o += fmt.charAt(i);\n\t\t\t\tif(o.slice(-1) !== ']') throw 'unterminated \"[\" block: |' + o + '|';\n\t\t\t\tif(o.match(SSF_abstime)) {\n\t\t\t\t\tif(dt==null) { dt=SSF_parse_date_code(v, opts); if(dt==null) return \"\"; }\n\t\t\t\t\tout[out.length] = {t:'Z', v:o.toLowerCase()};\n\t\t\t\t\tlst = o.charAt(1);\n\t\t\t\t} else if(o.indexOf(\"$\") > -1) {\n\t\t\t\t\to = (o.match(/\\$([^-\\[\\]]*)/)||[])[1]||\"$\";\n\t\t\t\t\tif(!fmt_is_date(fmt)) out[out.length] = {t:'t',v:o};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t/* Numbers */\n\t\t\tcase '.':\n\t\t\t\tif(dt != null) {\n\t\t\t\t\to = c; while(++i < fmt.length && (c=fmt.charAt(i)) === \"0\") o += c;\n\t\t\t\t\tout[out.length] = {t:'s', v:o}; break;\n\t\t\t\t}\n\t\t\t\t/* falls through */\n\t\t\tcase '0': case '#':\n\t\t\t\to = c; while(++i < fmt.length && \"0#?.,E+-%\".indexOf(c=fmt.charAt(i)) > -1) o += c;\n\t\t\t\tout[out.length] = {t:'n', v:o}; break;\n\t\t\tcase '?':\n\t\t\t\to = c; while(fmt.charAt(++i) === c) o+=c;\n\t\t\t\tout[out.length] = {t:c, v:o}; lst = c; break;\n\t\t\tcase '*': ++i; if(fmt.charAt(i) == ' ' || fmt.charAt(i) == '*') ++i; break; // **\n\t\t\tcase '(': case ')': out[out.length] = {t:(flen===1?'t':c), v:c}; ++i; break;\n\t\t\tcase '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':\n\t\t\t\to = c; while(i < fmt.length && \"0123456789\".indexOf(fmt.charAt(++i)) > -1) o+=fmt.charAt(i);\n\t\t\t\tout[out.length] = {t:'D', v:o}; break;\n\t\t\tcase ' ': out[out.length] = {t:c, v:c}; ++i; break;\n\t\t\tcase '$': out[out.length] = {t:'t', v:'$'}; ++i; break;\n\t\t\tdefault:\n\t\t\t\tif(\",$-+/():!^&'~{}<>=€acfijklopqrtuvwxzP\".indexOf(c) === -1) throw new Error('unrecognized character ' + c + ' in ' + fmt);\n\t\t\t\tout[out.length] = {t:'t', v:c}; ++i; break;\n\t\t}\n\t}\n\n\t/* Scan for date/time parts */\n\tvar bt = 0, ss0 = 0, ssm;\n\tfor(i=out.length-1, lst='t'; i >= 0; --i) {\n\t\tswitch(out[i].t) {\n\t\t\tcase 'h': case 'H': out[i].t = hr; lst='h'; if(bt < 1) bt = 1; break;\n\t\t\tcase 's':\n\t\t\t\tif((ssm=out[i].v.match(/\\.0+$/))) ss0=Math.max(ss0,ssm[0].length-1);\n\t\t\t\tif(bt < 3) bt = 3;\n\t\t\t/* falls through */\n\t\t\tcase 'd': case 'y': case 'M': case 'e': lst=out[i].t; break;\n\t\t\tcase 'm': if(lst === 's') { out[i].t = 'M'; if(bt < 2) bt = 2; } break;\n\t\t\tcase 'X': /*if(out[i].v === \"B2\");*/\n\t\t\t\tbreak;\n\t\t\tcase 'Z':\n\t\t\t\tif(bt < 1 && out[i].v.match(/[Hh]/)) bt = 1;\n\t\t\t\tif(bt < 2 && out[i].v.match(/[Mm]/)) bt = 2;\n\t\t\t\tif(bt < 3 && out[i].v.match(/[Ss]/)) bt = 3;\n\t\t}\n\t}\n\t/* time rounding depends on presence of minute / second / usec fields */\n\tswitch(bt) {\n\t\tcase 0: break;\n\t\tcase 1:\n\t\t\t/*::if(!dt) break;*/\n\t\t\tif(dt.u >= 0.5) { dt.u = 0; ++dt.S; }\n\t\t\tif(dt.S >= 60) { dt.S = 0; ++dt.M; }\n\t\t\tif(dt.M >= 60) { dt.M = 0; ++dt.H; }\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\t/*::if(!dt) break;*/\n\t\t\tif(dt.u >= 0.5) { dt.u = 0; ++dt.S; }\n\t\t\tif(dt.S >= 60) { dt.S = 0; ++dt.M; }\n\t\t\tbreak;\n\t}\n\n\t/* replace fields */\n\tvar nstr = \"\", jj;\n\tfor(i=0; i < out.length; ++i) {\n\t\tswitch(out[i].t) {\n\t\t\tcase 't': case 'T': case ' ': case 'D': break;\n\t\t\tcase 'X': out[i].v = \"\"; out[i].t = \";\"; break;\n\t\t\tcase 'd': case 'm': case 'y': case 'h': case 'H': case 'M': case 's': case 'e': case 'b': case 'Z':\n\t\t\t\t/*::if(!dt) throw \"unreachable\"; */\n\t\t\t\tout[i].v = SSF_write_date(out[i].t.charCodeAt(0), out[i].v, dt, ss0);\n\t\t\t\tout[i].t = 't'; break;\n\t\t\tcase 'n': case '?':\n\t\t\t\tjj = i+1;\n\t\t\t\twhile(out[jj] != null && (\n\t\t\t\t\t(c=out[jj].t) === \"?\" || c === \"D\" ||\n\t\t\t\t\t((c === \" \" || c === \"t\") && out[jj+1] != null && (out[jj+1].t === '?' || out[jj+1].t === \"t\" && out[jj+1].v === '/')) ||\n\t\t\t\t\t(out[i].t === '(' && (c === ' ' || c === 'n' || c === ')')) ||\n\t\t\t\t\t(c === 't' && (out[jj].v === '/' || out[jj].v === ' ' && out[jj+1] != null && out[jj+1].t == '?'))\n\t\t\t\t)) {\n\t\t\t\t\tout[i].v += out[jj].v;\n\t\t\t\t\tout[jj] = {v:\"\", t:\";\"}; ++jj;\n\t\t\t\t}\n\t\t\t\tnstr += out[i].v;\n\t\t\t\ti = jj-1; break;\n\t\t\tcase 'G': out[i].t = 't'; out[i].v = SSF_general(v,opts); break;\n\t\t}\n\t}\n\tvar vv = \"\", myv, ostr;\n\tif(nstr.length > 0) {\n\t\tif(nstr.charCodeAt(0) == 40) /* '(' */ {\n\t\t\tmyv = (v<0&&nstr.charCodeAt(0) === 45 ? -v : v);\n\t\t\tostr = write_num('n', nstr, myv);\n\t\t} else {\n\t\t\tmyv = (v<0 && flen > 1 ? -v : v);\n\t\t\tostr = write_num('n', nstr, myv);\n\t\t\tif(myv < 0 && out[0] && out[0].t == 't') {\n\t\t\t\tostr = ostr.substr(1);\n\t\t\t\tout[0].v = \"-\" + out[0].v;\n\t\t\t}\n\t\t}\n\t\tjj=ostr.length-1;\n\t\tvar decpt = out.length;\n\t\tfor(i=0; i < out.length; ++i) if(out[i] != null && out[i].t != 't' && out[i].v.indexOf(\".\") > -1) { decpt = i; break; }\n\t\tvar lasti=out.length;\n\t\tif(decpt === out.length && ostr.indexOf(\"E\") === -1) {\n\t\t\tfor(i=out.length-1; i>= 0;--i) {\n\t\t\t\tif(out[i] == null || 'n?'.indexOf(out[i].t) === -1) continue;\n\t\t\t\tif(jj>=out[i].v.length-1) { jj -= out[i].v.length; out[i].v = ostr.substr(jj+1, out[i].v.length); }\n\t\t\t\telse if(jj < 0) out[i].v = \"\";\n\t\t\t\telse { out[i].v = ostr.substr(0, jj+1); jj = -1; }\n\t\t\t\tout[i].t = 't';\n\t\t\t\tlasti = i;\n\t\t\t}\n\t\t\tif(jj>=0 && lasti= 0; --i) {\n\t\t\t\tif(out[i] == null || 'n?'.indexOf(out[i].t) === -1) continue;\n\t\t\t\tj=out[i].v.indexOf(\".\")>-1&&i===decpt?out[i].v.indexOf(\".\")-1:out[i].v.length-1;\n\t\t\t\tvv = out[i].v.substr(j+1);\n\t\t\t\tfor(; j>=0; --j) {\n\t\t\t\t\tif(jj>=0 && (out[i].v.charAt(j) === \"0\" || out[i].v.charAt(j) === \"#\")) vv = ostr.charAt(jj--) + vv;\n\t\t\t\t}\n\t\t\t\tout[i].v = vv;\n\t\t\t\tout[i].t = 't';\n\t\t\t\tlasti = i;\n\t\t\t}\n\t\t\tif(jj>=0 && lasti-1&&i===decpt?out[i].v.indexOf(\".\")+1:0;\n\t\t\t\tvv = out[i].v.substr(0,j);\n\t\t\t\tfor(; j-1) {\n\t\tmyv = (flen >1 && v < 0 && i>0 && out[i-1].v === \"-\" ? -v:v);\n\t\tout[i].v = write_num(out[i].t, out[i].v, myv);\n\t\tout[i].t = 't';\n\t}\n\tvar retval = \"\";\n\tfor(i=0; i !== out.length; ++i) if(out[i] != null) retval += out[i].v;\n\treturn retval;\n}\n\nvar cfregex2 = /\\[(=|>[=]?|<[>=]?)(-?\\d+(?:\\.\\d*)?)\\]/;\nfunction chkcond(v, rr) {\n\tif(rr == null) return false;\n\tvar thresh = parseFloat(rr[2]);\n\tswitch(rr[1]) {\n\t\tcase \"=\": if(v == thresh) return true; break;\n\t\tcase \">\": if(v > thresh) return true; break;\n\t\tcase \"<\": if(v < thresh) return true; break;\n\t\tcase \"<>\": if(v != thresh) return true; break;\n\t\tcase \">=\": if(v >= thresh) return true; break;\n\t\tcase \"<=\": if(v <= thresh) return true; break;\n\t}\n\treturn false;\n}\nfunction choose_fmt(f/*:string*/, v/*:any*/) {\n\tvar fmt = SSF_split_fmt(f);\n\tvar l = fmt.length, lat = fmt[l-1].indexOf(\"@\");\n\tif(l<4 && lat>-1) --l;\n\tif(fmt.length > 4) throw new Error(\"cannot find right format for |\" + fmt.join(\"|\") + \"|\");\n\tif(typeof v !== \"number\") return [4, fmt.length === 4 || lat>-1?fmt[fmt.length-1]:\"@\"];\n\tswitch(fmt.length) {\n\t\tcase 1: fmt = lat>-1 ? [\"General\", \"General\", \"General\", fmt[0]] : [fmt[0], fmt[0], fmt[0], \"@\"]; break;\n\t\tcase 2: fmt = lat>-1 ? [fmt[0], fmt[0], fmt[0], fmt[1]] : [fmt[0], fmt[1], fmt[0], \"@\"]; break;\n\t\tcase 3: fmt = lat>-1 ? [fmt[0], fmt[1], fmt[0], fmt[2]] : [fmt[0], fmt[1], fmt[2], \"@\"]; break;\n\t\tcase 4: break;\n\t}\n\tvar ff = v > 0 ? fmt[0] : v < 0 ? fmt[1] : fmt[2];\n\tif(fmt[0].indexOf(\"[\") === -1 && fmt[1].indexOf(\"[\") === -1) return [l, ff];\n\tif(fmt[0].match(/\\[[=<>]/) != null || fmt[1].match(/\\[[=<>]/) != null) {\n\t\tvar m1 = fmt[0].match(cfregex2);\n\t\tvar m2 = fmt[1].match(cfregex2);\n\t\treturn chkcond(v, m1) ? [l, fmt[0]] : chkcond(v, m2) ? [l, fmt[1]] : [l, fmt[m1 != null && m2 != null ? 2 : 1]];\n\t}\n\treturn [l, ff];\n}\nfunction SSF_format(fmt/*:string|number*/,v/*:any*/,o/*:?any*/) {\n\tif(o == null) o = {};\n\tvar sfmt = \"\";\n\tswitch(typeof fmt) {\n\t\tcase \"string\":\n\t\t\tif(fmt == \"m/d/yy\" && o.dateNF) sfmt = o.dateNF;\n\t\t\telse sfmt = fmt;\n\t\t\tbreak;\n\t\tcase \"number\":\n\t\t\tif(fmt == 14 && o.dateNF) sfmt = o.dateNF;\n\t\t\telse sfmt = (o.table != null ? (o.table/*:any*/) : table_fmt)[fmt];\n\t\t\tif(sfmt == null) sfmt = (o.table && o.table[SSF_default_map[fmt]]) || table_fmt[SSF_default_map[fmt]];\n\t\t\tif(sfmt == null) sfmt = SSF_default_str[fmt] || \"General\";\n\t\t\tbreak;\n\t}\n\tif(SSF_isgeneral(sfmt,0)) return SSF_general(v, o);\n\tif(v instanceof Date) v = datenum_local(v, o.date1904);\n\tvar f = choose_fmt(sfmt, v);\n\tif(SSF_isgeneral(f[1])) return SSF_general(v, o);\n\tif(v === true) v = \"TRUE\"; else if(v === false) v = \"FALSE\";\n\telse if(v === \"\" || v == null) return \"\";\n\treturn eval_fmt(f[1], v, o, f[0]);\n}\nfunction SSF_load(fmt/*:string*/, idx/*:?number*/)/*:number*/ {\n\tif(typeof idx != 'number') {\n\t\tidx = +idx || -1;\n/*::if(typeof idx != 'number') return 0x188; */\n\t\tfor(var i = 0; i < 0x0188; ++i) {\n/*::if(typeof idx != 'number') return 0x188; */\n\t\t\tif(table_fmt[i] == undefined) { if(idx < 0) idx = i; continue; }\n\t\t\tif(table_fmt[i] == fmt) { idx = i; break; }\n\t\t}\n/*::if(typeof idx != 'number') return 0x188; */\n\t\tif(idx < 0) idx = 0x187;\n\t}\n/*::if(typeof idx != 'number') return 0x188; */\n\ttable_fmt[idx] = fmt;\n\treturn idx;\n}\nfunction SSF_load_table(tbl/*:SSFTable*/)/*:void*/ {\n\tfor(var i=0; i!=0x0188; ++i)\n\t\tif(tbl[i] !== undefined) SSF_load(tbl[i], i);\n}\n\nfunction make_ssf() {\n\ttable_fmt = SSF_init_table();\n}\n\nvar SSF = {\n\tformat: SSF_format,\n\tload: SSF_load,\n\t_table: table_fmt,\n\tload_table: SSF_load_table,\n\tparse_date_code: SSF_parse_date_code,\n\tis_date: fmt_is_date,\n\tget_table: function get_table() { return SSF._table = table_fmt; }\n};\n\nvar SSFImplicit/*{[number]:string}*/ = ({\n\t\"5\": '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\t\"6\": '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\t\"7\": '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\t\"8\": '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t\"23\": 'General', \"24\": 'General', \"25\": 'General', \"26\": 'General',\n\t\"27\": 'm/d/yy', \"28\": 'm/d/yy', \"29\": 'm/d/yy', \"30\": 'm/d/yy', \"31\": 'm/d/yy',\n\t\"32\": 'h:mm:ss', \"33\": 'h:mm:ss', \"34\": 'h:mm:ss', \"35\": 'h:mm:ss',\n\t\"36\": 'm/d/yy',\n\t\"41\": '_(* #,##0_);_(* \\(#,##0\\);_(* \"-\"_);_(@_)',\n\t\"42\": '_(\"$\"* #,##0_);_(\"$\"* \\(#,##0\\);_(\"$\"* \"-\"_);_(@_)',\n\t\"43\": '_(* #,##0.00_);_(* \\(#,##0.00\\);_(* \"-\"??_);_(@_)',\n\t\"44\": '_(\"$\"* #,##0.00_);_(\"$\"* \\(#,##0.00\\);_(\"$\"* \"-\"??_);_(@_)',\n\t\"50\": 'm/d/yy', \"51\": 'm/d/yy', \"52\": 'm/d/yy', \"53\": 'm/d/yy', \"54\": 'm/d/yy',\n\t\"55\": 'm/d/yy', \"56\": 'm/d/yy', \"57\": 'm/d/yy', \"58\": 'm/d/yy',\n\t\"59\": '0',\n\t\"60\": '0.00',\n\t\"61\": '#,##0',\n\t\"62\": '#,##0.00',\n\t\"63\": '\"$\"#,##0_);\\\\(\"$\"#,##0\\\\)',\n\t\"64\": '\"$\"#,##0_);[Red]\\\\(\"$\"#,##0\\\\)',\n\t\"65\": '\"$\"#,##0.00_);\\\\(\"$\"#,##0.00\\\\)',\n\t\"66\": '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t\"67\": '0%',\n\t\"68\": '0.00%',\n\t\"69\": '# ?/?',\n\t\"70\": '# ??/??',\n\t\"71\": 'm/d/yy',\n\t\"72\": 'm/d/yy',\n\t\"73\": 'd-mmm-yy',\n\t\"74\": 'd-mmm',\n\t\"75\": 'mmm-yy',\n\t\"76\": 'h:mm',\n\t\"77\": 'h:mm:ss',\n\t\"78\": 'm/d/yy h:mm',\n\t\"79\": 'mm:ss',\n\t\"80\": '[h]:mm:ss',\n\t\"81\": 'mmss.0'\n}/*:any*/);\n\n/* dateNF parse TODO: move to SSF */\nvar dateNFregex = /[dD]+|[mM]+|[yYeE]+|[Hh]+|[Ss]+/g;\nfunction dateNF_regex(dateNF/*:string|number*/)/*:RegExp*/ {\n\tvar fmt = typeof dateNF == \"number\" ? table_fmt[dateNF] : dateNF;\n\tfmt = fmt.replace(dateNFregex, \"(\\\\d+)\");\n\treturn new RegExp(\"^\" + fmt + \"$\");\n}\nfunction dateNF_fix(str/*:string*/, dateNF/*:string*/, match/*:Array*/)/*:string*/ {\n\tvar Y = -1, m = -1, d = -1, H = -1, M = -1, S = -1;\n\t(dateNF.match(dateNFregex)||[]).forEach(function(n, i) {\n\t\tvar v = parseInt(match[i+1], 10);\n\t\tswitch(n.toLowerCase().charAt(0)) {\n\t\t\tcase 'y': Y = v; break; case 'd': d = v; break;\n\t\t\tcase 'h': H = v; break; case 's': S = v; break;\n\t\t\tcase 'm': if(H >= 0) M = v; else m = v; break;\n\t\t}\n\t});\n\tif(S >= 0 && M == -1 && m >= 0) { M = m; m = -1; }\n\tvar datestr = ((\"\" + (Y>=0?Y: new Date().getFullYear())).slice(-4) + \"-\" + (\"00\" + (m>=1?m:1)).slice(-2) + \"-\" + (\"00\" + (d>=1?d:1)).slice(-2));\n\tif(datestr.length == 7) datestr = \"0\" + datestr;\n\tif(datestr.length == 8) datestr = \"20\" + datestr;\n\tvar timestr = ((\"00\" + (H>=0?H:0)).slice(-2) + \":\" + (\"00\" + (M>=0?M:0)).slice(-2) + \":\" + (\"00\" + (S>=0?S:0)).slice(-2));\n\tif(H == -1 && M == -1 && S == -1) return datestr;\n\tif(Y == -1 && m == -1 && d == -1) return timestr;\n\treturn datestr + \"T\" + timestr;\n}\n\n/*::\ndeclare var ReadShift:any;\ndeclare var CheckField:any;\ndeclare var prep_blob:any;\ndeclare var __readUInt32LE:any;\ndeclare var __readInt32LE:any;\ndeclare var __toBuffer:any;\ndeclare var __utf16le:any;\ndeclare var bconcat:any;\ndeclare var s2a:any;\ndeclare var chr0:any;\ndeclare var chr1:any;\ndeclare var has_buf:boolean;\ndeclare var new_buf:any;\ndeclare var new_raw_buf:any;\ndeclare var new_unsafe_buf:any;\ndeclare var Buffer_from:any;\n*/\n/* cfb.js (C) 2013-present SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*jshint eqnull:true */\n/*exported CFB */\n/*global Uint8Array:false, Uint16Array:false */\n\n/*::\ntype SectorEntry = {\n\tname?:string;\n\tnodes?:Array;\n\tdata:RawBytes;\n};\ntype SectorList = {\n\t[k:string|number]:SectorEntry;\n\tname:?string;\n\tfat_addrs:Array;\n\tssz:number;\n}\ntype CFBFiles = {[n:string]:CFBEntry};\n*/\n/* crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*exported CRC32 */\nvar CRC32 = /*#__PURE__*/(function() {\nvar CRC32 = {};\nCRC32.version = '1.2.0';\n/* see perf/crc32table.js */\n/*global Int32Array */\nfunction signed_crc_table()/*:any*/ {\n\tvar c = 0, table/*:Array*/ = new Array(256);\n\n\tfor(var n =0; n != 256; ++n){\n\t\tc = n;\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\ttable[n] = c;\n\t}\n\n\treturn typeof Int32Array !== 'undefined' ? new Int32Array(table) : table;\n}\n\nvar T0 = signed_crc_table();\nfunction slice_by_16_tables(T) {\n\tvar c = 0, v = 0, n = 0, table/*:Array*/ = typeof Int32Array !== 'undefined' ? new Int32Array(4096) : new Array(4096) ;\n\n\tfor(n = 0; n != 256; ++n) table[n] = T[n];\n\tfor(n = 0; n != 256; ++n) {\n\t\tv = T[n];\n\t\tfor(c = 256 + n; c < 4096; c += 256) v = table[c] = (v >>> 8) ^ T[v & 0xFF];\n\t}\n\tvar out = [];\n\tfor(n = 1; n != 16; ++n) out[n - 1] = typeof Int32Array !== 'undefined' ? table.subarray(n * 256, n * 256 + 256) : table.slice(n * 256, n * 256 + 256);\n\treturn out;\n}\nvar TT = slice_by_16_tables(T0);\nvar T1 = TT[0], T2 = TT[1], T3 = TT[2], T4 = TT[3], T5 = TT[4];\nvar T6 = TT[5], T7 = TT[6], T8 = TT[7], T9 = TT[8], Ta = TT[9];\nvar Tb = TT[10], Tc = TT[11], Td = TT[12], Te = TT[13], Tf = TT[14];\nfunction crc32_bstr(bstr/*:string*/, seed/*:number*/)/*:number*/ {\n\tvar C = seed/*:: ? 0 : 0 */ ^ -1;\n\tfor(var i = 0, L = bstr.length; i < L;) C = (C>>>8) ^ T0[(C^bstr.charCodeAt(i++))&0xFF];\n\treturn ~C;\n}\n\nfunction crc32_buf(B/*:Uint8Array|Array*/, seed/*:number*/)/*:number*/ {\n\tvar C = seed/*:: ? 0 : 0 */ ^ -1, L = B.length - 15, i = 0;\n\tfor(; i < L;) C =\n\t\tTf[B[i++] ^ (C & 255)] ^\n\t\tTe[B[i++] ^ ((C >> 8) & 255)] ^\n\t\tTd[B[i++] ^ ((C >> 16) & 255)] ^\n\t\tTc[B[i++] ^ (C >>> 24)] ^\n\t\tTb[B[i++]] ^ Ta[B[i++]] ^ T9[B[i++]] ^ T8[B[i++]] ^\n\t\tT7[B[i++]] ^ T6[B[i++]] ^ T5[B[i++]] ^ T4[B[i++]] ^\n\t\tT3[B[i++]] ^ T2[B[i++]] ^ T1[B[i++]] ^ T0[B[i++]];\n\tL += 15;\n\twhile(i < L) C = (C>>>8) ^ T0[(C^B[i++])&0xFF];\n\treturn ~C;\n}\n\nfunction crc32_str(str/*:string*/, seed/*:number*/)/*:number*/ {\n\tvar C = seed ^ -1;\n\tfor(var i = 0, L = str.length, c = 0, d = 0; i < L;) {\n\t\tc = str.charCodeAt(i++);\n\t\tif(c < 0x80) {\n\t\t\tC = (C>>>8) ^ T0[(C^c)&0xFF];\n\t\t} else if(c < 0x800) {\n\t\t\tC = (C>>>8) ^ T0[(C ^ (192|((c>>6)&31)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF];\n\t\t} else if(c >= 0xD800 && c < 0xE000) {\n\t\t\tc = (c&1023)+64; d = str.charCodeAt(i++)&1023;\n\t\t\tC = (C>>>8) ^ T0[(C ^ (240|((c>>8)&7)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((c>>2)&63)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((d>>6)&15)|((c&3)<<4)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(d&63)))&0xFF];\n\t\t} else {\n\t\t\tC = (C>>>8) ^ T0[(C ^ (224|((c>>12)&15)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((c>>6)&63)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF];\n\t\t}\n\t}\n\treturn ~C;\n}\nCRC32.table = T0;\nCRC32.bstr = crc32_bstr;\nCRC32.buf = crc32_buf;\nCRC32.str = crc32_str;\nreturn CRC32;\n})();\n/* [MS-CFB] v20171201 */\nvar CFB = /*#__PURE__*/(function _CFB(){\nvar exports = {};\nexports.version = '1.2.1';\n/* [MS-CFB] 2.6.4 */\nfunction namecmp(l/*:string*/, r/*:string*/)/*:number*/ {\n\tvar L = l.split(\"/\"), R = r.split(\"/\");\n\tfor(var i = 0, c = 0, Z = Math.min(L.length, R.length); i < Z; ++i) {\n\t\tif((c = L[i].length - R[i].length)) return c;\n\t\tif(L[i] != R[i]) return L[i] < R[i] ? -1 : 1;\n\t}\n\treturn L.length - R.length;\n}\nfunction dirname(p/*:string*/)/*:string*/ {\n\tif(p.charAt(p.length - 1) == \"/\") return (p.slice(0,-1).indexOf(\"/\") === -1) ? p : dirname(p.slice(0, -1));\n\tvar c = p.lastIndexOf(\"/\");\n\treturn (c === -1) ? p : p.slice(0, c+1);\n}\n\nfunction filename(p/*:string*/)/*:string*/ {\n\tif(p.charAt(p.length - 1) == \"/\") return filename(p.slice(0, -1));\n\tvar c = p.lastIndexOf(\"/\");\n\treturn (c === -1) ? p : p.slice(c+1);\n}\n/* -------------------------------------------------------------------------- */\n/* DOS Date format:\n high|YYYYYYYm.mmmddddd.HHHHHMMM.MMMSSSSS|low\n add 1980 to stored year\n stored second should be doubled\n*/\n\n/* write JS date to buf as a DOS date */\nfunction write_dos_date(buf/*:CFBlob*/, date/*:Date|string*/) {\n\tif(typeof date === \"string\") date = new Date(date);\n\tvar hms/*:number*/ = date.getHours();\n\thms = hms << 6 | date.getMinutes();\n\thms = hms << 5 | (date.getSeconds()>>>1);\n\tbuf.write_shift(2, hms);\n\tvar ymd/*:number*/ = (date.getFullYear() - 1980);\n\tymd = ymd << 4 | (date.getMonth()+1);\n\tymd = ymd << 5 | date.getDate();\n\tbuf.write_shift(2, ymd);\n}\n\n/* read four bytes from buf and interpret as a DOS date */\nfunction parse_dos_date(buf/*:CFBlob*/)/*:Date*/ {\n\tvar hms = buf.read_shift(2) & 0xFFFF;\n\tvar ymd = buf.read_shift(2) & 0xFFFF;\n\tvar val = new Date();\n\tvar d = ymd & 0x1F; ymd >>>= 5;\n\tvar m = ymd & 0x0F; ymd >>>= 4;\n\tval.setMilliseconds(0);\n\tval.setFullYear(ymd + 1980);\n\tval.setMonth(m-1);\n\tval.setDate(d);\n\tvar S = hms & 0x1F; hms >>>= 5;\n\tvar M = hms & 0x3F; hms >>>= 6;\n\tval.setHours(hms);\n\tval.setMinutes(M);\n\tval.setSeconds(S<<1);\n\treturn val;\n}\nfunction parse_extra_field(blob/*:CFBlob*/)/*:any*/ {\n\tprep_blob(blob, 0);\n\tvar o = /*::(*/{}/*:: :any)*/;\n\tvar flags = 0;\n\twhile(blob.l <= blob.length - 4) {\n\t\tvar type = blob.read_shift(2);\n\t\tvar sz = blob.read_shift(2), tgt = blob.l + sz;\n\t\tvar p = {};\n\t\tswitch(type) {\n\t\t\t/* UNIX-style Timestamps */\n\t\t\tcase 0x5455: {\n\t\t\t\tflags = blob.read_shift(1);\n\t\t\t\tif(flags & 1) p.mtime = blob.read_shift(4);\n\t\t\t\t/* for some reason, CD flag corresponds to LFH */\n\t\t\t\tif(sz > 5) {\n\t\t\t\t\tif(flags & 2) p.atime = blob.read_shift(4);\n\t\t\t\t\tif(flags & 4) p.ctime = blob.read_shift(4);\n\t\t\t\t}\n\t\t\t\tif(p.mtime) p.mt = new Date(p.mtime*1000);\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tblob.l = tgt;\n\t\to[type] = p;\n\t}\n\treturn o;\n}\nvar fs/*:: = require('fs'); */;\nfunction get_fs() { return fs || (fs = {}); }\nfunction parse(file/*:RawBytes*/, options/*:CFBReadOpts*/)/*:CFBContainer*/ {\nif(file[0] == 0x50 && file[1] == 0x4b) return parse_zip(file, options);\nif((file[0] | 0x20) == 0x6d && (file[1]|0x20) == 0x69) return parse_mad(file, options);\nif(file.length < 512) throw new Error(\"CFB file size \" + file.length + \" < 512\");\nvar mver = 3;\nvar ssz = 512;\nvar nmfs = 0; // number of mini FAT sectors\nvar difat_sec_cnt = 0;\nvar dir_start = 0;\nvar minifat_start = 0;\nvar difat_start = 0;\n\nvar fat_addrs/*:Array*/ = []; // locations of FAT sectors\n\n/* [MS-CFB] 2.2 Compound File Header */\nvar blob/*:CFBlob*/ = /*::(*/file.slice(0,512)/*:: :any)*/;\nprep_blob(blob, 0);\n\n/* major version */\nvar mv = check_get_mver(blob);\nmver = mv[0];\nswitch(mver) {\n\tcase 3: ssz = 512; break; case 4: ssz = 4096; break;\n\tcase 0: if(mv[1] == 0) return parse_zip(file, options);\n\t/* falls through */\n\tdefault: throw new Error(\"Major Version: Expected 3 or 4 saw \" + mver);\n}\n\n/* reprocess header */\nif(ssz !== 512) { blob = /*::(*/file.slice(0,ssz)/*:: :any)*/; prep_blob(blob, 28 /* blob.l */); }\n/* Save header for final object */\nvar header/*:RawBytes*/ = file.slice(0,ssz);\n\ncheck_shifts(blob, mver);\n\n// Number of Directory Sectors\nvar dir_cnt/*:number*/ = blob.read_shift(4, 'i');\nif(mver === 3 && dir_cnt !== 0) throw new Error('# Directory Sectors: Expected 0 saw ' + dir_cnt);\n\n// Number of FAT Sectors\nblob.l += 4;\n\n// First Directory Sector Location\ndir_start = blob.read_shift(4, 'i');\n\n// Transaction Signature\nblob.l += 4;\n\n// Mini Stream Cutoff Size\nblob.chk('00100000', 'Mini Stream Cutoff Size: ');\n\n// First Mini FAT Sector Location\nminifat_start = blob.read_shift(4, 'i');\n\n// Number of Mini FAT Sectors\nnmfs = blob.read_shift(4, 'i');\n\n// First DIFAT sector location\ndifat_start = blob.read_shift(4, 'i');\n\n// Number of DIFAT Sectors\ndifat_sec_cnt = blob.read_shift(4, 'i');\n\n// Grab FAT Sector Locations\nfor(var q = -1, j = 0; j < 109; ++j) { /* 109 = (512 - blob.l)>>>2; */\n\tq = blob.read_shift(4, 'i');\n\tif(q<0) break;\n\tfat_addrs[j] = q;\n}\n\n/** Break the file up into sectors */\nvar sectors/*:Array*/ = sectorify(file, ssz);\n\nsleuth_fat(difat_start, difat_sec_cnt, sectors, ssz, fat_addrs);\n\n/** Chains */\nvar sector_list/*:SectorList*/ = make_sector_list(sectors, dir_start, fat_addrs, ssz);\n\nsector_list[dir_start].name = \"!Directory\";\nif(nmfs > 0 && minifat_start !== ENDOFCHAIN) sector_list[minifat_start].name = \"!MiniFAT\";\nsector_list[fat_addrs[0]].name = \"!FAT\";\nsector_list.fat_addrs = fat_addrs;\nsector_list.ssz = ssz;\n\n/* [MS-CFB] 2.6.1 Compound File Directory Entry */\nvar files/*:CFBFiles*/ = {}, Paths/*:Array*/ = [], FileIndex/*:CFBFileIndex*/ = [], FullPaths/*:Array*/ = [];\nread_directory(dir_start, sector_list, sectors, Paths, nmfs, files, FileIndex, minifat_start);\n\nbuild_full_paths(FileIndex, FullPaths, Paths);\nPaths.shift();\n\nvar o = {\n\tFileIndex: FileIndex,\n\tFullPaths: FullPaths\n};\n\n// $FlowIgnore\nif(options && options.raw) o.raw = {header: header, sectors: sectors};\nreturn o;\n} // parse\n\n/* [MS-CFB] 2.2 Compound File Header -- read up to major version */\nfunction check_get_mver(blob/*:CFBlob*/)/*:[number, number]*/ {\n\tif(blob[blob.l] == 0x50 && blob[blob.l + 1] == 0x4b) return [0, 0];\n\t// header signature 8\n\tblob.chk(HEADER_SIGNATURE, 'Header Signature: ');\n\n\t// clsid 16\n\t//blob.chk(HEADER_CLSID, 'CLSID: ');\n\tblob.l += 16;\n\n\t// minor version 2\n\tvar mver/*:number*/ = blob.read_shift(2, 'u');\n\n\treturn [blob.read_shift(2,'u'), mver];\n}\nfunction check_shifts(blob/*:CFBlob*/, mver/*:number*/)/*:void*/ {\n\tvar shift = 0x09;\n\n\t// Byte Order\n\t//blob.chk('feff', 'Byte Order: '); // note: some writers put 0xffff\n\tblob.l += 2;\n\n\t// Sector Shift\n\tswitch((shift = blob.read_shift(2))) {\n\t\tcase 0x09: if(mver != 3) throw new Error('Sector Shift: Expected 9 saw ' + shift); break;\n\t\tcase 0x0c: if(mver != 4) throw new Error('Sector Shift: Expected 12 saw ' + shift); break;\n\t\tdefault: throw new Error('Sector Shift: Expected 9 or 12 saw ' + shift);\n\t}\n\n\t// Mini Sector Shift\n\tblob.chk('0600', 'Mini Sector Shift: ');\n\n\t// Reserved\n\tblob.chk('000000000000', 'Reserved: ');\n}\n\n/** Break the file up into sectors */\nfunction sectorify(file/*:RawBytes*/, ssz/*:number*/)/*:Array*/ {\n\tvar nsectors = Math.ceil(file.length/ssz)-1;\n\tvar sectors/*:Array*/ = [];\n\tfor(var i=1; i < nsectors; ++i) sectors[i-1] = file.slice(i*ssz,(i+1)*ssz);\n\tsectors[nsectors-1] = file.slice(nsectors*ssz);\n\treturn sectors;\n}\n\n/* [MS-CFB] 2.6.4 Red-Black Tree */\nfunction build_full_paths(FI/*:CFBFileIndex*/, FP/*:Array*/, Paths/*:Array*/)/*:void*/ {\n\tvar i = 0, L = 0, R = 0, C = 0, j = 0, pl = Paths.length;\n\tvar dad/*:Array*/ = [], q/*:Array*/ = [];\n\n\tfor(; i < pl; ++i) { dad[i]=q[i]=i; FP[i]=Paths[i]; }\n\n\tfor(; j < q.length; ++j) {\n\t\ti = q[j];\n\t\tL = FI[i].L; R = FI[i].R; C = FI[i].C;\n\t\tif(dad[i] === i) {\n\t\t\tif(L !== -1 /*NOSTREAM*/ && dad[L] !== L) dad[i] = dad[L];\n\t\t\tif(R !== -1 && dad[R] !== R) dad[i] = dad[R];\n\t\t}\n\t\tif(C !== -1 /*NOSTREAM*/) dad[C] = i;\n\t\tif(L !== -1 && i != dad[i]) { dad[L] = dad[i]; if(q.lastIndexOf(L) < j) q.push(L); }\n\t\tif(R !== -1 && i != dad[i]) { dad[R] = dad[i]; if(q.lastIndexOf(R) < j) q.push(R); }\n\t}\n\tfor(i=1; i < pl; ++i) if(dad[i] === i) {\n\t\tif(R !== -1 /*NOSTREAM*/ && dad[R] !== R) dad[i] = dad[R];\n\t\telse if(L !== -1 && dad[L] !== L) dad[i] = dad[L];\n\t}\n\n\tfor(i=1; i < pl; ++i) {\n\t\tif(FI[i].type === 0 /* unknown */) continue;\n\t\tj = i;\n\t\tif(j != dad[j]) do {\n\t\t\tj = dad[j];\n\t\t\tFP[i] = FP[j] + \"/\" + FP[i];\n\t\t} while (j !== 0 && -1 !== dad[j] && j != dad[j]);\n\t\tdad[i] = -1;\n\t}\n\n\tFP[0] += \"/\";\n\tfor(i=1; i < pl; ++i) {\n\t\tif(FI[i].type !== 2 /* stream */) FP[i] += \"/\";\n\t}\n}\n\nfunction get_mfat_entry(entry/*:CFBEntry*/, payload/*:RawBytes*/, mini/*:?RawBytes*/)/*:CFBlob*/ {\n\tvar start = entry.start, size = entry.size;\n\t//return (payload.slice(start*MSSZ, start*MSSZ + size)/*:any*/);\n\tvar o = [];\n\tvar idx = start;\n\twhile(mini && size > 0 && idx >= 0) {\n\t\to.push(payload.slice(idx * MSSZ, idx * MSSZ + MSSZ));\n\t\tsize -= MSSZ;\n\t\tidx = __readInt32LE(mini, idx * 4);\n\t}\n\tif(o.length === 0) return (new_buf(0)/*:any*/);\n\treturn (bconcat(o).slice(0, entry.size)/*:any*/);\n}\n\n/** Chase down the rest of the DIFAT chain to build a comprehensive list\n DIFAT chains by storing the next sector number as the last 32 bits */\nfunction sleuth_fat(idx/*:number*/, cnt/*:number*/, sectors/*:Array*/, ssz/*:number*/, fat_addrs)/*:void*/ {\n\tvar q/*:number*/ = ENDOFCHAIN;\n\tif(idx === ENDOFCHAIN) {\n\t\tif(cnt !== 0) throw new Error(\"DIFAT chain shorter than expected\");\n\t} else if(idx !== -1 /*FREESECT*/) {\n\t\tvar sector = sectors[idx], m = (ssz>>>2)-1;\n\t\tif(!sector) return;\n\t\tfor(var i = 0; i < m; ++i) {\n\t\t\tif((q = __readInt32LE(sector,i*4)) === ENDOFCHAIN) break;\n\t\t\tfat_addrs.push(q);\n\t\t}\n\t\tsleuth_fat(__readInt32LE(sector,ssz-4),cnt - 1, sectors, ssz, fat_addrs);\n\t}\n}\n\n/** Follow the linked list of sectors for a given starting point */\nfunction get_sector_list(sectors/*:Array*/, start/*:number*/, fat_addrs/*:Array*/, ssz/*:number*/, chkd/*:?Array*/)/*:SectorEntry*/ {\n\tvar buf/*:Array*/ = [], buf_chain/*:Array*/ = [];\n\tif(!chkd) chkd = [];\n\tvar modulus = ssz - 1, j = 0, jj = 0;\n\tfor(j=start; j>=0;) {\n\t\tchkd[j] = true;\n\t\tbuf[buf.length] = j;\n\t\tbuf_chain.push(sectors[j]);\n\t\tvar addr = fat_addrs[Math.floor(j*4/ssz)];\n\t\tjj = ((j*4) & modulus);\n\t\tif(ssz < 4 + jj) throw new Error(\"FAT boundary crossed: \" + j + \" 4 \"+ssz);\n\t\tif(!sectors[addr]) break;\n\t\tj = __readInt32LE(sectors[addr], jj);\n\t}\n\treturn {nodes: buf, data:__toBuffer([buf_chain])};\n}\n\n/** Chase down the sector linked lists */\nfunction make_sector_list(sectors/*:Array*/, dir_start/*:number*/, fat_addrs/*:Array*/, ssz/*:number*/)/*:SectorList*/ {\n\tvar sl = sectors.length, sector_list/*:SectorList*/ = ([]/*:any*/);\n\tvar chkd/*:Array*/ = [], buf/*:Array*/ = [], buf_chain/*:Array*/ = [];\n\tvar modulus = ssz - 1, i=0, j=0, k=0, jj=0;\n\tfor(i=0; i < sl; ++i) {\n\t\tbuf = ([]/*:Array*/);\n\t\tk = (i + dir_start); if(k >= sl) k-=sl;\n\t\tif(chkd[k]) continue;\n\t\tbuf_chain = [];\n\t\tvar seen = [];\n\t\tfor(j=k; j>=0;) {\n\t\t\tseen[j] = true;\n\t\t\tchkd[j] = true;\n\t\t\tbuf[buf.length] = j;\n\t\t\tbuf_chain.push(sectors[j]);\n\t\t\tvar addr/*:number*/ = fat_addrs[Math.floor(j*4/ssz)];\n\t\t\tjj = ((j*4) & modulus);\n\t\t\tif(ssz < 4 + jj) throw new Error(\"FAT boundary crossed: \" + j + \" 4 \"+ssz);\n\t\t\tif(!sectors[addr]) break;\n\t\t\tj = __readInt32LE(sectors[addr], jj);\n\t\t\tif(seen[j]) break;\n\t\t}\n\t\tsector_list[k] = ({nodes: buf, data:__toBuffer([buf_chain])}/*:SectorEntry*/);\n\t}\n\treturn sector_list;\n}\n\n/* [MS-CFB] 2.6.1 Compound File Directory Entry */\nfunction read_directory(dir_start/*:number*/, sector_list/*:SectorList*/, sectors/*:Array*/, Paths/*:Array*/, nmfs, files, FileIndex, mini) {\n\tvar minifat_store = 0, pl = (Paths.length?2:0);\n\tvar sector = sector_list[dir_start].data;\n\tvar i = 0, namelen = 0, name;\n\tfor(; i < sector.length; i+= 128) {\n\t\tvar blob/*:CFBlob*/ = /*::(*/sector.slice(i, i+128)/*:: :any)*/;\n\t\tprep_blob(blob, 64);\n\t\tnamelen = blob.read_shift(2);\n\t\tname = __utf16le(blob,0,namelen-pl);\n\t\tPaths.push(name);\n\t\tvar o/*:CFBEntry*/ = ({\n\t\t\tname: name,\n\t\t\ttype: blob.read_shift(1),\n\t\t\tcolor: blob.read_shift(1),\n\t\t\tL: blob.read_shift(4, 'i'),\n\t\t\tR: blob.read_shift(4, 'i'),\n\t\t\tC: blob.read_shift(4, 'i'),\n\t\t\tclsid: blob.read_shift(16),\n\t\t\tstate: blob.read_shift(4, 'i'),\n\t\t\tstart: 0,\n\t\t\tsize: 0\n\t\t});\n\t\tvar ctime/*:number*/ = blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2);\n\t\tif(ctime !== 0) o.ct = read_date(blob, blob.l-8);\n\t\tvar mtime/*:number*/ = blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2);\n\t\tif(mtime !== 0) o.mt = read_date(blob, blob.l-8);\n\t\to.start = blob.read_shift(4, 'i');\n\t\to.size = blob.read_shift(4, 'i');\n\t\tif(o.size < 0 && o.start < 0) { o.size = o.type = 0; o.start = ENDOFCHAIN; o.name = \"\"; }\n\t\tif(o.type === 5) { /* root */\n\t\t\tminifat_store = o.start;\n\t\t\tif(nmfs > 0 && minifat_store !== ENDOFCHAIN) sector_list[minifat_store].name = \"!StreamData\";\n\t\t\t/*minifat_size = o.size;*/\n\t\t} else if(o.size >= 4096 /* MSCSZ */) {\n\t\t\to.storage = 'fat';\n\t\t\tif(sector_list[o.start] === undefined) sector_list[o.start] = get_sector_list(sectors, o.start, sector_list.fat_addrs, sector_list.ssz);\n\t\t\tsector_list[o.start].name = o.name;\n\t\t\to.content = (sector_list[o.start].data.slice(0,o.size)/*:any*/);\n\t\t} else {\n\t\t\to.storage = 'minifat';\n\t\t\tif(o.size < 0) o.size = 0;\n\t\t\telse if(minifat_store !== ENDOFCHAIN && o.start !== ENDOFCHAIN && sector_list[minifat_store]) {\n\t\t\t\to.content = get_mfat_entry(o, sector_list[minifat_store].data, (sector_list[mini]||{}).data);\n\t\t\t}\n\t\t}\n\t\tif(o.content) prep_blob(o.content, 0);\n\t\tfiles[name] = o;\n\t\tFileIndex.push(o);\n\t}\n}\n\nfunction read_date(blob/*:RawBytes|CFBlob*/, offset/*:number*/)/*:Date*/ {\n\treturn new Date(( ( (__readUInt32LE(blob,offset+4)/1e7)*Math.pow(2,32)+__readUInt32LE(blob,offset)/1e7 ) - 11644473600)*1000);\n}\n\nfunction read_file(filename/*:string*/, options/*:CFBReadOpts*/) {\n\tget_fs();\n\treturn parse(fs.readFileSync(filename), options);\n}\n\nfunction read(blob/*:RawBytes|string*/, options/*:CFBReadOpts*/) {\n\tvar type = options && options.type;\n\tif(!type) {\n\t\tif(has_buf && Buffer.isBuffer(blob)) type = \"buffer\";\n\t}\n\tswitch(type || \"base64\") {\n\t\tcase \"file\": /*:: if(typeof blob !== 'string') throw \"Must pass a filename when type='file'\"; */return read_file(blob, options);\n\t\tcase \"base64\": /*:: if(typeof blob !== 'string') throw \"Must pass a base64-encoded binary string when type='file'\"; */return parse(s2a(Base64_decode(blob)), options);\n\t\tcase \"binary\": /*:: if(typeof blob !== 'string') throw \"Must pass a binary string when type='file'\"; */return parse(s2a(blob), options);\n\t}\n\treturn parse(/*::typeof blob == 'string' ? new Buffer(blob, 'utf-8') : */blob, options);\n}\n\nfunction init_cfb(cfb/*:CFBContainer*/, opts/*:?any*/)/*:void*/ {\n\tvar o = opts || {}, root = o.root || \"Root Entry\";\n\tif(!cfb.FullPaths) cfb.FullPaths = [];\n\tif(!cfb.FileIndex) cfb.FileIndex = [];\n\tif(cfb.FullPaths.length !== cfb.FileIndex.length) throw new Error(\"inconsistent CFB structure\");\n\tif(cfb.FullPaths.length === 0) {\n\t\tcfb.FullPaths[0] = root + \"/\";\n\t\tcfb.FileIndex[0] = ({ name: root, type: 5 }/*:any*/);\n\t}\n\tif(o.CLSID) cfb.FileIndex[0].clsid = o.CLSID;\n\tseed_cfb(cfb);\n}\nfunction seed_cfb(cfb/*:CFBContainer*/)/*:void*/ {\n\tvar nm = \"\\u0001Sh33tJ5\";\n\tif(CFB.find(cfb, \"/\" + nm)) return;\n\tvar p = new_buf(4); p[0] = 55; p[1] = p[3] = 50; p[2] = 54;\n\tcfb.FileIndex.push(({ name: nm, type: 2, content:p, size:4, L:69, R:69, C:69 }/*:any*/));\n\tcfb.FullPaths.push(cfb.FullPaths[0] + nm);\n\trebuild_cfb(cfb);\n}\nfunction rebuild_cfb(cfb/*:CFBContainer*/, f/*:?boolean*/)/*:void*/ {\n\tinit_cfb(cfb);\n\tvar gc = false, s = false;\n\tfor(var i = cfb.FullPaths.length - 1; i >= 0; --i) {\n\t\tvar _file = cfb.FileIndex[i];\n\t\tswitch(_file.type) {\n\t\t\tcase 0:\n\t\t\t\tif(s) gc = true;\n\t\t\t\telse { cfb.FileIndex.pop(); cfb.FullPaths.pop(); }\n\t\t\t\tbreak;\n\t\t\tcase 1: case 2: case 5:\n\t\t\t\ts = true;\n\t\t\t\tif(isNaN(_file.R * _file.L * _file.C)) gc = true;\n\t\t\t\tif(_file.R > -1 && _file.L > -1 && _file.R == _file.L) gc = true;\n\t\t\t\tbreak;\n\t\t\tdefault: gc = true; break;\n\t\t}\n\t}\n\tif(!gc && !f) return;\n\n\tvar now = new Date(1987, 1, 19), j = 0;\n\t// Track which names exist\n\tvar fullPaths = Object.create ? Object.create(null) : {};\n\tvar data/*:Array<[string, CFBEntry]>*/ = [];\n\tfor(i = 0; i < cfb.FullPaths.length; ++i) {\n\t\tfullPaths[cfb.FullPaths[i]] = true;\n\t\tif(cfb.FileIndex[i].type === 0) continue;\n\t\tdata.push([cfb.FullPaths[i], cfb.FileIndex[i]]);\n\t}\n\tfor(i = 0; i < data.length; ++i) {\n\t\tvar dad = dirname(data[i][0]);\n\t\ts = fullPaths[dad];\n\t\tif(!s) {\n\t\t\tdata.push([dad, ({\n\t\t\t\tname: filename(dad).replace(\"/\",\"\"),\n\t\t\t\ttype: 1,\n\t\t\t\tclsid: HEADER_CLSID,\n\t\t\t\tct: now, mt: now,\n\t\t\t\tcontent: null\n\t\t\t}/*:any*/)]);\n\t\t\t// Add name to set\n\t\t\tfullPaths[dad] = true;\n\t\t}\n\t}\n\n\tdata.sort(function(x,y) { return namecmp(x[0], y[0]); });\n\tcfb.FullPaths = []; cfb.FileIndex = [];\n\tfor(i = 0; i < data.length; ++i) { cfb.FullPaths[i] = data[i][0]; cfb.FileIndex[i] = data[i][1]; }\n\tfor(i = 0; i < data.length; ++i) {\n\t\tvar elt = cfb.FileIndex[i];\n\t\tvar nm = cfb.FullPaths[i];\n\n\t\telt.name = filename(nm).replace(\"/\",\"\");\n\t\telt.L = elt.R = elt.C = -(elt.color = 1);\n\t\telt.size = elt.content ? elt.content.length : 0;\n\t\telt.start = 0;\n\t\telt.clsid = (elt.clsid || HEADER_CLSID);\n\t\tif(i === 0) {\n\t\t\telt.C = data.length > 1 ? 1 : -1;\n\t\t\telt.size = 0;\n\t\t\telt.type = 5;\n\t\t} else if(nm.slice(-1) == \"/\") {\n\t\t\tfor(j=i+1;j < data.length; ++j) if(dirname(cfb.FullPaths[j])==nm) break;\n\t\t\telt.C = j >= data.length ? -1 : j;\n\t\t\tfor(j=i+1;j < data.length; ++j) if(dirname(cfb.FullPaths[j])==dirname(nm)) break;\n\t\t\telt.R = j >= data.length ? -1 : j;\n\t\t\telt.type = 1;\n\t\t} else {\n\t\t\tif(dirname(cfb.FullPaths[i+1]||\"\") == dirname(nm)) elt.R = i + 1;\n\t\t\telt.type = 2;\n\t\t}\n\t}\n\n}\n\nfunction _write(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:RawBytes|string*/ {\n\tvar _opts = options || {};\n\t/* MAD is order-sensitive, skip rebuild and sort */\n\tif(_opts.fileType == 'mad') return write_mad(cfb, _opts);\n\trebuild_cfb(cfb);\n\tswitch(_opts.fileType) {\n\t\tcase 'zip': return write_zip(cfb, _opts);\n\t\t//case 'mad': return write_mad(cfb, _opts);\n\t}\n\tvar L = (function(cfb/*:CFBContainer*/)/*:Array*/{\n\t\tvar mini_size = 0, fat_size = 0;\n\t\tfor(var i = 0; i < cfb.FileIndex.length; ++i) {\n\t\t\tvar file = cfb.FileIndex[i];\n\t\t\tif(!file.content) continue;\n\t\t\t/*:: if(file.content == null) throw new Error(\"unreachable\"); */\n\t\t\tvar flen = file.content.length;\n\t\t\tif(flen > 0){\n\t\t\t\tif(flen < 0x1000) mini_size += (flen + 0x3F) >> 6;\n\t\t\t\telse fat_size += (flen + 0x01FF) >> 9;\n\t\t\t}\n\t\t}\n\t\tvar dir_cnt = (cfb.FullPaths.length +3) >> 2;\n\t\tvar mini_cnt = (mini_size + 7) >> 3;\n\t\tvar mfat_cnt = (mini_size + 0x7F) >> 7;\n\t\tvar fat_base = mini_cnt + fat_size + dir_cnt + mfat_cnt;\n\t\tvar fat_cnt = (fat_base + 0x7F) >> 7;\n\t\tvar difat_cnt = fat_cnt <= 109 ? 0 : Math.ceil((fat_cnt-109)/0x7F);\n\t\twhile(((fat_base + fat_cnt + difat_cnt + 0x7F) >> 7) > fat_cnt) difat_cnt = ++fat_cnt <= 109 ? 0 : Math.ceil((fat_cnt-109)/0x7F);\n\t\tvar L = [1, difat_cnt, fat_cnt, mfat_cnt, dir_cnt, fat_size, mini_size, 0];\n\t\tcfb.FileIndex[0].size = mini_size << 6;\n\t\tL[7] = (cfb.FileIndex[0].start=L[0]+L[1]+L[2]+L[3]+L[4]+L[5])+((L[6]+7) >> 3);\n\t\treturn L;\n\t})(cfb);\n\tvar o = new_buf(L[7] << 9);\n\tvar i = 0, T = 0;\n\t{\n\t\tfor(i = 0; i < 8; ++i) o.write_shift(1, HEADER_SIG[i]);\n\t\tfor(i = 0; i < 8; ++i) o.write_shift(2, 0);\n\t\to.write_shift(2, 0x003E);\n\t\to.write_shift(2, 0x0003);\n\t\to.write_shift(2, 0xFFFE);\n\t\to.write_shift(2, 0x0009);\n\t\to.write_shift(2, 0x0006);\n\t\tfor(i = 0; i < 3; ++i) o.write_shift(2, 0);\n\t\to.write_shift(4, 0);\n\t\to.write_shift(4, L[2]);\n\t\to.write_shift(4, L[0] + L[1] + L[2] + L[3] - 1);\n\t\to.write_shift(4, 0);\n\t\to.write_shift(4, 1<<12);\n\t\to.write_shift(4, L[3] ? L[0] + L[1] + L[2] - 1: ENDOFCHAIN);\n\t\to.write_shift(4, L[3]);\n\t\to.write_shift(-4, L[1] ? L[0] - 1: ENDOFCHAIN);\n\t\to.write_shift(4, L[1]);\n\t\tfor(i = 0; i < 109; ++i) o.write_shift(-4, i < L[2] ? L[1] + i : -1);\n\t}\n\tif(L[1]) {\n\t\tfor(T = 0; T < L[1]; ++T) {\n\t\t\tfor(; i < 236 + T * 127; ++i) o.write_shift(-4, i < L[2] ? L[1] + i : -1);\n\t\t\to.write_shift(-4, T === L[1] - 1 ? ENDOFCHAIN : T + 1);\n\t\t}\n\t}\n\tvar chainit = function(w/*:number*/)/*:void*/ {\n\t\tfor(T += w; i> 9);\n\t}\n\tchainit((L[6] + 7) >> 3);\n\twhile(o.l & 0x1FF) o.write_shift(-4, consts.ENDOFCHAIN);\n\tT = i = 0;\n\tfor(j = 0; j < cfb.FileIndex.length; ++j) {\n\t\tfile = cfb.FileIndex[j];\n\t\tif(!file.content) continue;\n\t\t/*:: if(file.content == null) throw new Error(\"unreachable\"); */\n\t\tflen = file.content.length;\n\t\tif(!flen || flen >= 0x1000) continue;\n\t\tfile.start = T;\n\t\tchainit((flen + 0x3F) >> 6);\n\t}\n\twhile(o.l & 0x1FF) o.write_shift(-4, consts.ENDOFCHAIN);\n\tfor(i = 0; i < L[4]<<2; ++i) {\n\t\tvar nm = cfb.FullPaths[i];\n\t\tif(!nm || nm.length === 0) {\n\t\t\tfor(j = 0; j < 17; ++j) o.write_shift(4, 0);\n\t\t\tfor(j = 0; j < 3; ++j) o.write_shift(4, -1);\n\t\t\tfor(j = 0; j < 12; ++j) o.write_shift(4, 0);\n\t\t\tcontinue;\n\t\t}\n\t\tfile = cfb.FileIndex[i];\n\t\tif(i === 0) file.start = file.size ? file.start - 1 : ENDOFCHAIN;\n\t\tvar _nm/*:string*/ = (i === 0 && _opts.root) || file.name;\n\t\tflen = 2*(_nm.length+1);\n\t\to.write_shift(64, _nm, \"utf16le\");\n\t\to.write_shift(2, flen);\n\t\to.write_shift(1, file.type);\n\t\to.write_shift(1, file.color);\n\t\to.write_shift(-4, file.L);\n\t\to.write_shift(-4, file.R);\n\t\to.write_shift(-4, file.C);\n\t\tif(!file.clsid) for(j = 0; j < 4; ++j) o.write_shift(4, 0);\n\t\telse o.write_shift(16, file.clsid, \"hex\");\n\t\to.write_shift(4, file.state || 0);\n\t\to.write_shift(4, 0); o.write_shift(4, 0);\n\t\to.write_shift(4, 0); o.write_shift(4, 0);\n\t\to.write_shift(4, file.start);\n\t\to.write_shift(4, file.size); o.write_shift(4, 0);\n\t}\n\tfor(i = 1; i < cfb.FileIndex.length; ++i) {\n\t\tfile = cfb.FileIndex[i];\n\t\t/*:: if(!file.content) throw new Error(\"unreachable\"); */\n\t\tif(file.size >= 0x1000) {\n\t\t\to.l = (file.start+1) << 9;\n\t\t\tif (has_buf && Buffer.isBuffer(file.content)) {\n\t\t\t\tfile.content.copy(o, o.l, 0, file.size);\n\t\t\t\t// o is a 0-filled Buffer so just set next offset\n\t\t\t\to.l += (file.size + 511) & -512;\n\t\t\t} else {\n\t\t\t\tfor(j = 0; j < file.size; ++j) o.write_shift(1, file.content[j]);\n\t\t\t\tfor(; j & 0x1FF; ++j) o.write_shift(1, 0);\n\t\t\t}\n\t\t}\n\t}\n\tfor(i = 1; i < cfb.FileIndex.length; ++i) {\n\t\tfile = cfb.FileIndex[i];\n\t\t/*:: if(!file.content) throw new Error(\"unreachable\"); */\n\t\tif(file.size > 0 && file.size < 0x1000) {\n\t\t\tif (has_buf && Buffer.isBuffer(file.content)) {\n\t\t\t\tfile.content.copy(o, o.l, 0, file.size);\n\t\t\t\t// o is a 0-filled Buffer so just set next offset\n\t\t\t\to.l += (file.size + 63) & -64;\n\t\t\t} else {\n\t\t\t\tfor(j = 0; j < file.size; ++j) o.write_shift(1, file.content[j]);\n\t\t\t\tfor(; j & 0x3F; ++j) o.write_shift(1, 0);\n\t\t\t}\n\t\t}\n\t}\n\tif (has_buf) {\n\t\to.l = o.length;\n\t} else {\n\t\t// When using Buffer, already 0-filled\n\t\twhile(o.l < o.length) o.write_shift(1, 0);\n\t}\n\treturn o;\n}\n/* [MS-CFB] 2.6.4 (Unicode 3.0.1 case conversion) */\nfunction find(cfb/*:CFBContainer*/, path/*:string*/)/*:?CFBEntry*/ {\n\tvar UCFullPaths/*:Array*/ = cfb.FullPaths.map(function(x) { return x.toUpperCase(); });\n\tvar UCPaths/*:Array*/ = UCFullPaths.map(function(x) { var y = x.split(\"/\"); return y[y.length - (x.slice(-1) == \"/\" ? 2 : 1)]; });\n\tvar k/*:boolean*/ = false;\n\tif(path.charCodeAt(0) === 47 /* \"/\" */) { k = true; path = UCFullPaths[0].slice(0, -1) + path; }\n\telse k = path.indexOf(\"/\") !== -1;\n\tvar UCPath/*:string*/ = path.toUpperCase();\n\tvar w/*:number*/ = k === true ? UCFullPaths.indexOf(UCPath) : UCPaths.indexOf(UCPath);\n\tif(w !== -1) return cfb.FileIndex[w];\n\n\tvar m = !UCPath.match(chr1);\n\tUCPath = UCPath.replace(chr0,'');\n\tif(m) UCPath = UCPath.replace(chr1,'!');\n\tfor(w = 0; w < UCFullPaths.length; ++w) {\n\t\tif((m ? UCFullPaths[w].replace(chr1,'!') : UCFullPaths[w]).replace(chr0,'') == UCPath) return cfb.FileIndex[w];\n\t\tif((m ? UCPaths[w].replace(chr1,'!') : UCPaths[w]).replace(chr0,'') == UCPath) return cfb.FileIndex[w];\n\t}\n\treturn null;\n}\n/** CFB Constants */\nvar MSSZ = 64; /* Mini Sector Size = 1<<6 */\n//var MSCSZ = 4096; /* Mini Stream Cutoff Size */\n/* 2.1 Compound File Sector Numbers and Types */\nvar ENDOFCHAIN = -2;\n/* 2.2 Compound File Header */\nvar HEADER_SIGNATURE = 'd0cf11e0a1b11ae1';\nvar HEADER_SIG = [0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1];\nvar HEADER_CLSID = '00000000000000000000000000000000';\nvar consts = {\n\t/* 2.1 Compund File Sector Numbers and Types */\n\tMAXREGSECT: -6,\n\tDIFSECT: -4,\n\tFATSECT: -3,\n\tENDOFCHAIN: ENDOFCHAIN,\n\tFREESECT: -1,\n\t/* 2.2 Compound File Header */\n\tHEADER_SIGNATURE: HEADER_SIGNATURE,\n\tHEADER_MINOR_VERSION: '3e00',\n\tMAXREGSID: -6,\n\tNOSTREAM: -1,\n\tHEADER_CLSID: HEADER_CLSID,\n\t/* 2.6.1 Compound File Directory Entry */\n\tEntryTypes: ['unknown','storage','stream','lockbytes','property','root']\n};\n\nfunction write_file(cfb/*:CFBContainer*/, filename/*:string*/, options/*:CFBWriteOpts*/)/*:void*/ {\n\tget_fs();\n\tvar o = _write(cfb, options);\n\t/*:: if(typeof Buffer == 'undefined' || !Buffer.isBuffer(o) || !(o instanceof Buffer)) throw new Error(\"unreachable\"); */\n\tfs.writeFileSync(filename, o);\n}\n\nfunction a2s(o/*:RawBytes*/)/*:string*/ {\n\tvar out = new Array(o.length);\n\tfor(var i = 0; i < o.length; ++i) out[i] = String.fromCharCode(o[i]);\n\treturn out.join(\"\");\n}\n\nfunction write(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:RawBytes|string*/ {\n\tvar o = _write(cfb, options);\n\tswitch(options && options.type || \"buffer\") {\n\t\tcase \"file\": get_fs(); fs.writeFileSync(options.filename, (o/*:any*/)); return o;\n\t\tcase \"binary\": return typeof o == \"string\" ? o : a2s(o);\n\t\tcase \"base64\": return Base64_encode(typeof o == \"string\" ? o : a2s(o));\n\t\tcase \"buffer\": if(has_buf) return Buffer.isBuffer(o) ? o : Buffer_from(o);\n\t\t\t/* falls through */\n\t\tcase \"array\": return typeof o == \"string\" ? s2a(o) : o;\n\t}\n\treturn o;\n}\n/* node < 8.1 zlib does not expose bytesRead, so default to pure JS */\nvar _zlib;\nfunction use_zlib(zlib) { try {\n\tvar InflateRaw = zlib.InflateRaw;\n\tvar InflRaw = new InflateRaw();\n\tInflRaw._processChunk(new Uint8Array([3, 0]), InflRaw._finishFlushFlag);\n\tif(InflRaw.bytesRead) _zlib = zlib;\n\telse throw new Error(\"zlib does not expose bytesRead\");\n} catch(e) {console.error(\"cannot use native zlib: \" + (e.message || e)); } }\n\nfunction _inflateRawSync(payload, usz) {\n\tif(!_zlib) return _inflate(payload, usz);\n\tvar InflateRaw = _zlib.InflateRaw;\n\tvar InflRaw = new InflateRaw();\n\tvar out = InflRaw._processChunk(payload.slice(payload.l), InflRaw._finishFlushFlag);\n\tpayload.l += InflRaw.bytesRead;\n\treturn out;\n}\n\nfunction _deflateRawSync(payload) {\n\treturn _zlib ? _zlib.deflateRawSync(payload) : _deflate(payload);\n}\nvar CLEN_ORDER = [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];\n\n/* LEN_ID = [ 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285 ]; */\nvar LEN_LN = [ 3, 4, 5, 6, 7, 8, 9, 10, 11, 13 , 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258 ];\n\n/* DST_ID = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 ]; */\nvar DST_LN = [ 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577 ];\n\nfunction bit_swap_8(n) { var t = (((((n<<1)|(n<<11)) & 0x22110) | (((n<<5)|(n<<15)) & 0x88440))); return ((t>>16) | (t>>8) |t)&0xFF; }\n\nvar use_typed_arrays = typeof Uint8Array !== 'undefined';\n\nvar bitswap8 = use_typed_arrays ? new Uint8Array(1<<8) : [];\nfor(var q = 0; q < (1<<8); ++q) bitswap8[q] = bit_swap_8(q);\n\nfunction bit_swap_n(n, b) {\n\tvar rev = bitswap8[n & 0xFF];\n\tif(b <= 8) return rev >>> (8-b);\n\trev = (rev << 8) | bitswap8[(n>>8)&0xFF];\n\tif(b <= 16) return rev >>> (16-b);\n\trev = (rev << 8) | bitswap8[(n>>16)&0xFF];\n\treturn rev >>> (24-b);\n}\n\n/* helpers for unaligned bit reads */\nfunction read_bits_2(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 6 ? 0 : buf[h+1]<<8))>>>w)& 0x03; }\nfunction read_bits_3(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 5 ? 0 : buf[h+1]<<8))>>>w)& 0x07; }\nfunction read_bits_4(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 4 ? 0 : buf[h+1]<<8))>>>w)& 0x0F; }\nfunction read_bits_5(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 3 ? 0 : buf[h+1]<<8))>>>w)& 0x1F; }\nfunction read_bits_7(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 1 ? 0 : buf[h+1]<<8))>>>w)& 0x7F; }\n\n/* works up to n = 3 * 8 + 1 = 25 */\nfunction read_bits_n(buf, bl, n) {\n\tvar w = (bl&7), h = (bl>>>3), f = ((1<>> w;\n\tif(n < 8 - w) return v & f;\n\tv |= buf[h+1]<<(8-w);\n\tif(n < 16 - w) return v & f;\n\tv |= buf[h+2]<<(16-w);\n\tif(n < 24 - w) return v & f;\n\tv |= buf[h+3]<<(24-w);\n\treturn v & f;\n}\n\n/* helpers for unaligned bit writes */\nfunction write_bits_3(buf, bl, v) { var w = bl & 7, h = bl >>> 3;\n\tif(w <= 5) buf[h] |= (v & 7) << w;\n\telse {\n\t\tbuf[h] |= (v << w) & 0xFF;\n\t\tbuf[h+1] = (v&7) >> (8-w);\n\t}\n\treturn bl + 3;\n}\n\nfunction write_bits_1(buf, bl, v) {\n\tvar w = bl & 7, h = bl >>> 3;\n\tv = (v&1) << w;\n\tbuf[h] |= v;\n\treturn bl + 1;\n}\nfunction write_bits_8(buf, bl, v) {\n\tvar w = bl & 7, h = bl >>> 3;\n\tv <<= w;\n\tbuf[h] |= v & 0xFF; v >>>= 8;\n\tbuf[h+1] = v;\n\treturn bl + 8;\n}\nfunction write_bits_16(buf, bl, v) {\n\tvar w = bl & 7, h = bl >>> 3;\n\tv <<= w;\n\tbuf[h] |= v & 0xFF; v >>>= 8;\n\tbuf[h+1] = v & 0xFF;\n\tbuf[h+2] = v >>> 8;\n\treturn bl + 16;\n}\n\n/* until ArrayBuffer#realloc is a thing, fake a realloc */\nfunction realloc(b, sz/*:number*/) {\n\tvar L = b.length, M = 2*L > sz ? 2*L : sz + 5, i = 0;\n\tif(L >= sz) return b;\n\tif(has_buf) {\n\t\tvar o = new_unsafe_buf(M);\n\t\t// $FlowIgnore\n\t\tif(b.copy) b.copy(o);\n\t\telse for(; i < b.length; ++i) o[i] = b[i];\n\t\treturn o;\n\t} else if(use_typed_arrays) {\n\t\tvar a = new Uint8Array(M);\n\t\tif(a.set) a.set(b);\n\t\telse for(; i < L; ++i) a[i] = b[i];\n\t\treturn a;\n\t}\n\tb.length = M;\n\treturn b;\n}\n\n/* zero-filled arrays for older browsers */\nfunction zero_fill_array(n) {\n\tvar o = new Array(n);\n\tfor(var i = 0; i < n; ++i) o[i] = 0;\n\treturn o;\n}\n\n/* build tree (used for literals and lengths) */\nfunction build_tree(clens, cmap, MAX/*:number*/)/*:number*/ {\n\tvar maxlen = 1, w = 0, i = 0, j = 0, ccode = 0, L = clens.length;\n\n\tvar bl_count = use_typed_arrays ? new Uint16Array(32) : zero_fill_array(32);\n\tfor(i = 0; i < 32; ++i) bl_count[i] = 0;\n\n\tfor(i = L; i < MAX; ++i) clens[i] = 0;\n\tL = clens.length;\n\n\tvar ctree = use_typed_arrays ? new Uint16Array(L) : zero_fill_array(L); // []\n\n\t/* build code tree */\n\tfor(i = 0; i < L; ++i) {\n\t\tbl_count[(w = clens[i])]++;\n\t\tif(maxlen < w) maxlen = w;\n\t\tctree[i] = 0;\n\t}\n\tbl_count[0] = 0;\n\tfor(i = 1; i <= maxlen; ++i) bl_count[i+16] = (ccode = (ccode + bl_count[i-1])<<1);\n\tfor(i = 0; i < L; ++i) {\n\t\tccode = clens[i];\n\t\tif(ccode != 0) ctree[i] = bl_count[ccode+16]++;\n\t}\n\n\t/* cmap[maxlen + 4 bits] = (off&15) + (lit<<4) reverse mapping */\n\tvar cleni = 0;\n\tfor(i = 0; i < L; ++i) {\n\t\tcleni = clens[i];\n\t\tif(cleni != 0) {\n\t\t\tccode = bit_swap_n(ctree[i], maxlen)>>(maxlen-cleni);\n\t\t\tfor(j = (1<<(maxlen + 4 - cleni)) - 1; j>=0; --j)\n\t\t\t\tcmap[ccode|(j<*/ = [];\n\tvar i = 0;\n\tfor(;i<32; i++) dlens.push(5);\n\tbuild_tree(dlens, fix_dmap, 32);\n\n\tvar clens/*:Array*/ = [];\n\ti = 0;\n\tfor(; i<=143; i++) clens.push(8);\n\tfor(; i<=255; i++) clens.push(9);\n\tfor(; i<=279; i++) clens.push(7);\n\tfor(; i<=287; i++) clens.push(8);\n\tbuild_tree(clens, fix_lmap, 288);\n})();var _deflateRaw = /*#__PURE__*/(function _deflateRawIIFE() {\n\tvar DST_LN_RE = use_typed_arrays ? new Uint8Array(0x8000) : [];\n\tvar j = 0, k = 0;\n\tfor(; j < DST_LN.length - 1; ++j) {\n\t\tfor(; k < DST_LN[j+1]; ++k) DST_LN_RE[k] = j;\n\t}\n\tfor(;k < 32768; ++k) DST_LN_RE[k] = 29;\n\n\tvar LEN_LN_RE = use_typed_arrays ? new Uint8Array(0x103) : [];\n\tfor(j = 0, k = 0; j < LEN_LN.length - 1; ++j) {\n\t\tfor(; k < LEN_LN[j+1]; ++k) LEN_LN_RE[k] = j;\n\t}\n\n\tfunction write_stored(data, out) {\n\t\tvar boff = 0;\n\t\twhile(boff < data.length) {\n\t\t\tvar L = Math.min(0xFFFF, data.length - boff);\n\t\t\tvar h = boff + L == data.length;\n\t\t\tout.write_shift(1, +h);\n\t\t\tout.write_shift(2, L);\n\t\t\tout.write_shift(2, (~L) & 0xFFFF);\n\t\t\twhile(L-- > 0) out[out.l++] = data[boff++];\n\t\t}\n\t\treturn out.l;\n\t}\n\n\t/* Fixed Huffman */\n\tfunction write_huff_fixed(data, out) {\n\t\tvar bl = 0;\n\t\tvar boff = 0;\n\t\tvar addrs = use_typed_arrays ? new Uint16Array(0x8000) : [];\n\t\twhile(boff < data.length) {\n\t\t\tvar L = /* data.length - boff; */ Math.min(0xFFFF, data.length - boff);\n\n\t\t\t/* write a stored block for short data */\n\t\t\tif(L < 10) {\n\t\t\t\tbl = write_bits_3(out, bl, +!!(boff + L == data.length)); // jshint ignore:line\n\t\t\t\tif(bl & 7) bl += 8 - (bl & 7);\n\t\t\t\tout.l = (bl / 8) | 0;\n\t\t\t\tout.write_shift(2, L);\n\t\t\t\tout.write_shift(2, (~L) & 0xFFFF);\n\t\t\t\twhile(L-- > 0) out[out.l++] = data[boff++];\n\t\t\t\tbl = out.l * 8;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tbl = write_bits_3(out, bl, +!!(boff + L == data.length) + 2); // jshint ignore:line\n\t\t\tvar hash = 0;\n\t\t\twhile(L-- > 0) {\n\t\t\t\tvar d = data[boff];\n\t\t\t\thash = ((hash << 5) ^ d) & 0x7FFF;\n\n\t\t\t\tvar match = -1, mlen = 0;\n\n\t\t\t\tif((match = addrs[hash])) {\n\t\t\t\t\tmatch |= boff & ~0x7FFF;\n\t\t\t\t\tif(match > boff) match -= 0x8000;\n\t\t\t\t\tif(match < boff) while(data[match + mlen] == data[boff + mlen] && mlen < 250) ++mlen;\n\t\t\t\t}\n\n\t\t\t\tif(mlen > 2) {\n\t\t\t\t\t/* Copy Token */\n\t\t\t\t\td = LEN_LN_RE[mlen];\n\t\t\t\t\tif(d <= 22) bl = write_bits_8(out, bl, bitswap8[d+1]>>1) - 1;\n\t\t\t\t\telse {\n\t\t\t\t\t\twrite_bits_8(out, bl, 3);\n\t\t\t\t\t\tbl += 5;\n\t\t\t\t\t\twrite_bits_8(out, bl, bitswap8[d-23]>>5);\n\t\t\t\t\t\tbl += 3;\n\t\t\t\t\t}\n\t\t\t\t\tvar len_eb = (d < 8) ? 0 : ((d - 4)>>2);\n\t\t\t\t\tif(len_eb > 0) {\n\t\t\t\t\t\twrite_bits_16(out, bl, mlen - LEN_LN[d]);\n\t\t\t\t\t\tbl += len_eb;\n\t\t\t\t\t}\n\n\t\t\t\t\td = DST_LN_RE[boff - match];\n\t\t\t\t\tbl = write_bits_8(out, bl, bitswap8[d]>>3);\n\t\t\t\t\tbl -= 3;\n\n\t\t\t\t\tvar dst_eb = d < 4 ? 0 : (d-2)>>1;\n\t\t\t\t\tif(dst_eb > 0) {\n\t\t\t\t\t\twrite_bits_16(out, bl, boff - match - DST_LN[d]);\n\t\t\t\t\t\tbl += dst_eb;\n\t\t\t\t\t}\n\t\t\t\t\tfor(var q = 0; q < mlen; ++q) {\n\t\t\t\t\t\taddrs[hash] = boff & 0x7FFF;\n\t\t\t\t\t\thash = ((hash << 5) ^ data[boff]) & 0x7FFF;\n\t\t\t\t\t\t++boff;\n\t\t\t\t\t}\n\t\t\t\t\tL-= mlen - 1;\n\t\t\t\t} else {\n\t\t\t\t\t/* Literal Token */\n\t\t\t\t\tif(d <= 143) d = d + 48;\n\t\t\t\t\telse bl = write_bits_1(out, bl, 1);\n\t\t\t\t\tbl = write_bits_8(out, bl, bitswap8[d]);\n\t\t\t\t\taddrs[hash] = boff & 0x7FFF;\n\t\t\t\t\t++boff;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbl = write_bits_8(out, bl, 0) - 1;\n\t\t}\n\t\tout.l = ((bl + 7)/8)|0;\n\t\treturn out.l;\n\t}\n\treturn function _deflateRaw(data, out) {\n\t\tif(data.length < 8) return write_stored(data, out);\n\t\treturn write_huff_fixed(data, out);\n\t};\n})();\n\nfunction _deflate(data) {\n\tvar buf = new_buf(50+Math.floor(data.length*1.1));\n\tvar off = _deflateRaw(data, buf);\n\treturn buf.slice(0, off);\n}\n/* modified inflate function also moves original read head */\n\nvar dyn_lmap = use_typed_arrays ? new Uint16Array(32768) : zero_fill_array(32768);\nvar dyn_dmap = use_typed_arrays ? new Uint16Array(32768) : zero_fill_array(32768);\nvar dyn_cmap = use_typed_arrays ? new Uint16Array(128) : zero_fill_array(128);\nvar dyn_len_1 = 1, dyn_len_2 = 1;\n\n/* 5.5.3 Expanding Huffman Codes */\nfunction dyn(data, boff/*:number*/) {\n\t/* nomenclature from RFC1951 refers to bit values; these are offset by the implicit constant */\n\tvar _HLIT = read_bits_5(data, boff) + 257; boff += 5;\n\tvar _HDIST = read_bits_5(data, boff) + 1; boff += 5;\n\tvar _HCLEN = read_bits_4(data, boff) + 4; boff += 4;\n\tvar w = 0;\n\n\t/* grab and store code lengths */\n\tvar clens = use_typed_arrays ? new Uint8Array(19) : zero_fill_array(19);\n\tvar ctree = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n\tvar maxlen = 1;\n\tvar bl_count = use_typed_arrays ? new Uint8Array(8) : zero_fill_array(8);\n\tvar next_code = use_typed_arrays ? new Uint8Array(8) : zero_fill_array(8);\n\tvar L = clens.length; /* 19 */\n\tfor(var i = 0; i < _HCLEN; ++i) {\n\t\tclens[CLEN_ORDER[i]] = w = read_bits_3(data, boff);\n\t\tif(maxlen < w) maxlen = w;\n\t\tbl_count[w]++;\n\t\tboff += 3;\n\t}\n\n\t/* build code tree */\n\tvar ccode = 0;\n\tbl_count[0] = 0;\n\tfor(i = 1; i <= maxlen; ++i) next_code[i] = ccode = (ccode + bl_count[i-1])<<1;\n\tfor(i = 0; i < L; ++i) if((ccode = clens[i]) != 0) ctree[i] = next_code[ccode]++;\n\t/* cmap[7 bits from stream] = (off&7) + (lit<<3) */\n\tvar cleni = 0;\n\tfor(i = 0; i < L; ++i) {\n\t\tcleni = clens[i];\n\t\tif(cleni != 0) {\n\t\t\tccode = bitswap8[ctree[i]]>>(8-cleni);\n\t\t\tfor(var j = (1<<(7-cleni))-1; j>=0; --j) dyn_cmap[ccode|(j<*/ = [];\n\tmaxlen = 1;\n\tfor(; hcodes.length < _HLIT + _HDIST;) {\n\t\tccode = dyn_cmap[read_bits_7(data, boff)];\n\t\tboff += ccode & 7;\n\t\tswitch((ccode >>>= 3)) {\n\t\t\tcase 16:\n\t\t\t\tw = 3 + read_bits_2(data, boff); boff += 2;\n\t\t\t\tccode = hcodes[hcodes.length - 1];\n\t\t\t\twhile(w-- > 0) hcodes.push(ccode);\n\t\t\t\tbreak;\n\t\t\tcase 17:\n\t\t\t\tw = 3 + read_bits_3(data, boff); boff += 3;\n\t\t\t\twhile(w-- > 0) hcodes.push(0);\n\t\t\t\tbreak;\n\t\t\tcase 18:\n\t\t\t\tw = 11 + read_bits_7(data, boff); boff += 7;\n\t\t\t\twhile(w -- > 0) hcodes.push(0);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\thcodes.push(ccode);\n\t\t\t\tif(maxlen < ccode) maxlen = ccode;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t/* build literal / length trees */\n\tvar h1 = hcodes.slice(0, _HLIT), h2 = hcodes.slice(_HLIT);\n\tfor(i = _HLIT; i < 286; ++i) h1[i] = 0;\n\tfor(i = _HDIST; i < 30; ++i) h2[i] = 0;\n\tdyn_len_1 = build_tree(h1, dyn_lmap, 286);\n\tdyn_len_2 = build_tree(h2, dyn_dmap, 30);\n\treturn boff;\n}\n\n/* return [ data, bytesRead ] */\nfunction inflate(data, usz/*:number*/) {\n\t/* shortcircuit for empty buffer [0x03, 0x00] */\n\tif(data[0] == 3 && !(data[1] & 0x3)) { return [new_raw_buf(usz), 2]; }\n\n\t/* bit offset */\n\tvar boff = 0;\n\n\t/* header includes final bit and type bits */\n\tvar header = 0;\n\n\tvar outbuf = new_unsafe_buf(usz ? usz : (1<<18));\n\tvar woff = 0;\n\tvar OL = outbuf.length>>>0;\n\tvar max_len_1 = 0, max_len_2 = 0;\n\n\twhile((header&1) == 0) {\n\t\theader = read_bits_3(data, boff); boff += 3;\n\t\tif((header >>> 1) == 0) {\n\t\t\t/* Stored block */\n\t\t\tif(boff & 7) boff += 8 - (boff&7);\n\t\t\t/* 2 bytes sz, 2 bytes bit inverse */\n\t\t\tvar sz = data[boff>>>3] | data[(boff>>>3)+1]<<8;\n\t\t\tboff += 32;\n\t\t\t/* push sz bytes */\n\t\t\tif(sz > 0) {\n\t\t\t\tif(!usz && OL < woff + sz) { outbuf = realloc(outbuf, woff + sz); OL = outbuf.length; }\n\t\t\t\twhile(sz-- > 0) { outbuf[woff++] = data[boff>>>3]; boff += 8; }\n\t\t\t}\n\t\t\tcontinue;\n\t\t} else if((header >> 1) == 1) {\n\t\t\t/* Fixed Huffman */\n\t\t\tmax_len_1 = 9; max_len_2 = 5;\n\t\t} else {\n\t\t\t/* Dynamic Huffman */\n\t\t\tboff = dyn(data, boff);\n\t\t\tmax_len_1 = dyn_len_1; max_len_2 = dyn_len_2;\n\t\t}\n\t\tfor(;;) { // while(true) is apparently out of vogue in modern JS circles\n\t\t\tif(!usz && (OL < woff + 32767)) { outbuf = realloc(outbuf, woff + 32767); OL = outbuf.length; }\n\t\t\t/* ingest code and move read head */\n\t\t\tvar bits = read_bits_n(data, boff, max_len_1);\n\t\t\tvar code = (header>>>1) == 1 ? fix_lmap[bits] : dyn_lmap[bits];\n\t\t\tboff += code & 15; code >>>= 4;\n\t\t\t/* 0-255 are literals, 256 is end of block token, 257+ are copy tokens */\n\t\t\tif(((code>>>8)&0xFF) === 0) outbuf[woff++] = code;\n\t\t\telse if(code == 256) break;\n\t\t\telse {\n\t\t\t\tcode -= 257;\n\t\t\t\tvar len_eb = (code < 8) ? 0 : ((code-4)>>2); if(len_eb > 5) len_eb = 0;\n\t\t\t\tvar tgt = woff + LEN_LN[code];\n\t\t\t\t/* length extra bits */\n\t\t\t\tif(len_eb > 0) {\n\t\t\t\t\ttgt += read_bits_n(data, boff, len_eb);\n\t\t\t\t\tboff += len_eb;\n\t\t\t\t}\n\n\t\t\t\t/* dist code */\n\t\t\t\tbits = read_bits_n(data, boff, max_len_2);\n\t\t\t\tcode = (header>>>1) == 1 ? fix_dmap[bits] : dyn_dmap[bits];\n\t\t\t\tboff += code & 15; code >>>= 4;\n\t\t\t\tvar dst_eb = (code < 4 ? 0 : (code-2)>>1);\n\t\t\t\tvar dst = DST_LN[code];\n\t\t\t\t/* dist extra bits */\n\t\t\t\tif(dst_eb > 0) {\n\t\t\t\t\tdst += read_bits_n(data, boff, dst_eb);\n\t\t\t\t\tboff += dst_eb;\n\t\t\t\t}\n\n\t\t\t\t/* in the common case, manual byte copy is faster than TA set / Buffer copy */\n\t\t\t\tif(!usz && OL < tgt) { outbuf = realloc(outbuf, tgt + 100); OL = outbuf.length; }\n\t\t\t\twhile(woff < tgt) { outbuf[woff] = outbuf[woff - dst]; ++woff; }\n\t\t\t}\n\t\t}\n\t}\n\tif(usz) return [outbuf, (boff+7)>>>3];\n\treturn [outbuf.slice(0, woff), (boff+7)>>>3];\n}\n\nfunction _inflate(payload, usz) {\n\tvar data = payload.slice(payload.l||0);\n\tvar out = inflate(data, usz);\n\tpayload.l += out[1];\n\treturn out[0];\n}\n\nfunction warn_or_throw(wrn, msg) {\n\tif(wrn) { if(typeof console !== 'undefined') console.error(msg); }\n\telse throw new Error(msg);\n}\n\nfunction parse_zip(file/*:RawBytes*/, options/*:CFBReadOpts*/)/*:CFBContainer*/ {\n\tvar blob/*:CFBlob*/ = /*::(*/file/*:: :any)*/;\n\tprep_blob(blob, 0);\n\n\tvar FileIndex/*:CFBFileIndex*/ = [], FullPaths/*:Array*/ = [];\n\tvar o = {\n\t\tFileIndex: FileIndex,\n\t\tFullPaths: FullPaths\n\t};\n\tinit_cfb(o, { root: options.root });\n\n\t/* find end of central directory, start just after signature */\n\tvar i = blob.length - 4;\n\twhile((blob[i] != 0x50 || blob[i+1] != 0x4b || blob[i+2] != 0x05 || blob[i+3] != 0x06) && i >= 0) --i;\n\tblob.l = i + 4;\n\n\t/* parse end of central directory */\n\tblob.l += 4;\n\tvar fcnt = blob.read_shift(2);\n\tblob.l += 6;\n\tvar start_cd = blob.read_shift(4);\n\n\t/* parse central directory */\n\tblob.l = start_cd;\n\n\tfor(i = 0; i < fcnt; ++i) {\n\t\t/* trust local file header instead of CD entry */\n\t\tblob.l += 20;\n\t\tvar csz = blob.read_shift(4);\n\t\tvar usz = blob.read_shift(4);\n\t\tvar namelen = blob.read_shift(2);\n\t\tvar efsz = blob.read_shift(2);\n\t\tvar fcsz = blob.read_shift(2);\n\t\tblob.l += 8;\n\t\tvar offset = blob.read_shift(4);\n\t\tvar EF = parse_extra_field(/*::(*/blob.slice(blob.l+namelen, blob.l+namelen+efsz)/*:: :any)*/);\n\t\tblob.l += namelen + efsz + fcsz;\n\n\t\tvar L = blob.l;\n\t\tblob.l = offset + 4;\n\t\tparse_local_file(blob, csz, usz, o, EF);\n\t\tblob.l = L;\n\t}\n\treturn o;\n}\n\n\n/* head starts just after local file header signature */\nfunction parse_local_file(blob/*:CFBlob*/, csz/*:number*/, usz/*:number*/, o/*:CFBContainer*/, EF) {\n\t/* [local file header] */\n\tblob.l += 2;\n\tvar flags = blob.read_shift(2);\n\tvar meth = blob.read_shift(2);\n\tvar date = parse_dos_date(blob);\n\n\tif(flags & 0x2041) throw new Error(\"Unsupported ZIP encryption\");\n\tvar crc32 = blob.read_shift(4);\n\tvar _csz = blob.read_shift(4);\n\tvar _usz = blob.read_shift(4);\n\n\tvar namelen = blob.read_shift(2);\n\tvar efsz = blob.read_shift(2);\n\n\t// TODO: flags & (1<<11) // UTF8\n\tvar name = \"\"; for(var i = 0; i < namelen; ++i) name += String.fromCharCode(blob[blob.l++]);\n\tif(efsz) {\n\t\tvar ef = parse_extra_field(/*::(*/blob.slice(blob.l, blob.l + efsz)/*:: :any)*/);\n\t\tif((ef[0x5455]||{}).mt) date = ef[0x5455].mt;\n\t\tif(((EF||{})[0x5455]||{}).mt) date = EF[0x5455].mt;\n\t}\n\tblob.l += efsz;\n\n\t/* [encryption header] */\n\n\t/* [file data] */\n\tvar data = blob.slice(blob.l, blob.l + _csz);\n\tswitch(meth) {\n\t\tcase 8: data = _inflateRawSync(blob, _usz); break;\n\t\tcase 0: break; // TODO: scan for magic number\n\t\tdefault: throw new Error(\"Unsupported ZIP Compression method \" + meth);\n\t}\n\n\t/* [data descriptor] */\n\tvar wrn = false;\n\tif(flags & 8) {\n\t\tcrc32 = blob.read_shift(4);\n\t\tif(crc32 == 0x08074b50) { crc32 = blob.read_shift(4); wrn = true; }\n\t\t_csz = blob.read_shift(4);\n\t\t_usz = blob.read_shift(4);\n\t}\n\n\tif(_csz != csz) warn_or_throw(wrn, \"Bad compressed size: \" + csz + \" != \" + _csz);\n\tif(_usz != usz) warn_or_throw(wrn, \"Bad uncompressed size: \" + usz + \" != \" + _usz);\n\t//var _crc32 = CRC32.buf(data, 0);\n\t//if((crc32>>0) != (_crc32>>0)) warn_or_throw(wrn, \"Bad CRC32 checksum: \" + crc32 + \" != \" + _crc32);\n\tcfb_add(o, name, data, {unsafe: true, mt: date});\n}\nfunction write_zip(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:RawBytes*/ {\n\tvar _opts = options || {};\n\tvar out = [], cdirs = [];\n\tvar o/*:CFBlob*/ = new_buf(1);\n\tvar method = (_opts.compression ? 8 : 0), flags = 0;\n\tvar desc = false;\n\tif(desc) flags |= 8;\n\tvar i = 0, j = 0;\n\n\tvar start_cd = 0, fcnt = 0;\n\tvar root = cfb.FullPaths[0], fp = root, fi = cfb.FileIndex[0];\n\tvar crcs = [];\n\tvar sz_cd = 0;\n\n\tfor(i = 1; i < cfb.FullPaths.length; ++i) {\n\t\tfp = cfb.FullPaths[i].slice(root.length); fi = cfb.FileIndex[i];\n\t\tif(!fi.size || !fi.content || fp == \"\\u0001Sh33tJ5\") continue;\n\t\tvar start = start_cd;\n\n\t\t/* TODO: CP437 filename */\n\t\tvar namebuf = new_buf(fp.length);\n\t\tfor(j = 0; j < fp.length; ++j) namebuf.write_shift(1, fp.charCodeAt(j) & 0x7F);\n\t\tnamebuf = namebuf.slice(0, namebuf.l);\n\t\tcrcs[fcnt] = CRC32.buf(/*::((*/fi.content/*::||[]):any)*/, 0);\n\n\t\tvar outbuf = fi.content/*::||[]*/;\n\t\tif(method == 8) outbuf = _deflateRawSync(outbuf);\n\n\t\t/* local file header */\n\t\to = new_buf(30);\n\t\to.write_shift(4, 0x04034b50);\n\t\to.write_shift(2, 20);\n\t\to.write_shift(2, flags);\n\t\to.write_shift(2, method);\n\t\t/* TODO: last mod file time/date */\n\t\tif(fi.mt) write_dos_date(o, fi.mt);\n\t\telse o.write_shift(4, 0);\n\t\to.write_shift(-4, (flags & 8) ? 0 : crcs[fcnt]);\n\t\to.write_shift(4, (flags & 8) ? 0 : outbuf.length);\n\t\to.write_shift(4, (flags & 8) ? 0 : /*::(*/fi.content/*::||[])*/.length);\n\t\to.write_shift(2, namebuf.length);\n\t\to.write_shift(2, 0);\n\n\t\tstart_cd += o.length;\n\t\tout.push(o);\n\t\tstart_cd += namebuf.length;\n\t\tout.push(namebuf);\n\n\t\t/* TODO: extra fields? */\n\n\t\t/* TODO: encryption header ? */\n\n\t\tstart_cd += outbuf.length;\n\t\tout.push(outbuf);\n\n\t\t/* data descriptor */\n\t\tif(flags & 8) {\n\t\t\to = new_buf(12);\n\t\t\to.write_shift(-4, crcs[fcnt]);\n\t\t\to.write_shift(4, outbuf.length);\n\t\t\to.write_shift(4, /*::(*/fi.content/*::||[])*/.length);\n\t\t\tstart_cd += o.l;\n\t\t\tout.push(o);\n\t\t}\n\n\t\t/* central directory */\n\t\to = new_buf(46);\n\t\to.write_shift(4, 0x02014b50);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 20);\n\t\to.write_shift(2, flags);\n\t\to.write_shift(2, method);\n\t\to.write_shift(4, 0); /* TODO: last mod file time/date */\n\t\to.write_shift(-4, crcs[fcnt]);\n\n\t\to.write_shift(4, outbuf.length);\n\t\to.write_shift(4, /*::(*/fi.content/*::||[])*/.length);\n\t\to.write_shift(2, namebuf.length);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(4, 0);\n\t\to.write_shift(4, start);\n\n\t\tsz_cd += o.l;\n\t\tcdirs.push(o);\n\t\tsz_cd += namebuf.length;\n\t\tcdirs.push(namebuf);\n\t\t++fcnt;\n\t}\n\n\t/* end of central directory */\n\to = new_buf(22);\n\to.write_shift(4, 0x06054b50);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, fcnt);\n\to.write_shift(2, fcnt);\n\to.write_shift(4, sz_cd);\n\to.write_shift(4, start_cd);\n\to.write_shift(2, 0);\n\n\treturn bconcat(([bconcat((out/*:any*/)), bconcat(cdirs), o]/*:any*/));\n}\nvar ContentTypeMap = ({\n\t\"htm\": \"text/html\",\n\t\"xml\": \"text/xml\",\n\n\t\"gif\": \"image/gif\",\n\t\"jpg\": \"image/jpeg\",\n\t\"png\": \"image/png\",\n\n\t\"mso\": \"application/x-mso\",\n\t\"thmx\": \"application/vnd.ms-officetheme\",\n\t\"sh33tj5\": \"application/octet-stream\"\n}/*:any*/);\n\nfunction get_content_type(fi/*:CFBEntry*/, fp/*:string*/)/*:string*/ {\n\tif(fi.ctype) return fi.ctype;\n\n\tvar ext = fi.name || \"\", m = ext.match(/\\.([^\\.]+)$/);\n\tif(m && ContentTypeMap[m[1]]) return ContentTypeMap[m[1]];\n\n\tif(fp) {\n\t\tm = (ext = fp).match(/[\\.\\\\]([^\\.\\\\])+$/);\n\t\tif(m && ContentTypeMap[m[1]]) return ContentTypeMap[m[1]];\n\t}\n\n\treturn \"application/octet-stream\";\n}\n\n/* 76 character chunks TODO: intertwine encoding */\nfunction write_base64_76(bstr/*:string*/)/*:string*/ {\n\tvar data = Base64_encode(bstr);\n\tvar o = [];\n\tfor(var i = 0; i < data.length; i+= 76) o.push(data.slice(i, i+76));\n\treturn o.join(\"\\r\\n\") + \"\\r\\n\";\n}\n\n/*\nRules for QP:\n\t- escape =## applies for all non-display characters and literal \"=\"\n\t- space or tab at end of line must be encoded\n\t- \\r\\n newlines can be preserved, but bare \\r and \\n must be escaped\n\t- lines must not exceed 76 characters, use soft breaks =\\r\\n\n\nTODO: Some files from word appear to write line extensions with bare equals:\n\n```\n*/ = [], split = encoded.split(\"\\r\\n\");\n\tfor(var si = 0; si < split.length; ++si) {\n\t\tvar str = split[si];\n\t\tif(str.length == 0) { o.push(\"\"); continue; }\n\t\tfor(var i = 0; i < str.length;) {\n\t\t\tvar end = 76;\n\t\t\tvar tmp = str.slice(i, i + end);\n\t\t\tif(tmp.charAt(end - 1) == \"=\") end --;\n\t\t\telse if(tmp.charAt(end - 2) == \"=\") end -= 2;\n\t\t\telse if(tmp.charAt(end - 3) == \"=\") end -= 3;\n\t\t\ttmp = str.slice(i, i + end);\n\t\t\ti += end;\n\t\t\tif(i < str.length) tmp += \"=\";\n\t\t\to.push(tmp);\n\t\t}\n\t}\n\n\treturn o.join(\"\\r\\n\");\n}\nfunction parse_quoted_printable(data/*:Array*/)/*:RawBytes*/ {\n\tvar o = [];\n\n\t/* unify long lines */\n\tfor(var di = 0; di < data.length; ++di) {\n\t\tvar line = data[di];\n\t\twhile(di <= data.length && line.charAt(line.length - 1) == \"=\") line = line.slice(0, line.length - 1) + data[++di];\n\t\to.push(line);\n\t}\n\n\t/* decode */\n\tfor(var oi = 0; oi < o.length; ++oi) o[oi] = o[oi].replace(/[=][0-9A-Fa-f]{2}/g, function($$) { return String.fromCharCode(parseInt($$.slice(1), 16)); });\n\treturn s2a(o.join(\"\\r\\n\"));\n}\n\n\nfunction parse_mime(cfb/*:CFBContainer*/, data/*:Array*/, root/*:string*/)/*:void*/ {\n\tvar fname = \"\", cte = \"\", ctype = \"\", fdata;\n\tvar di = 0;\n\tfor(;di < 10; ++di) {\n\t\tvar line = data[di];\n\t\tif(!line || line.match(/^\\s*$/)) break;\n\t\tvar m = line.match(/^(.*?):\\s*([^\\s].*)$/);\n\t\tif(m) switch(m[1].toLowerCase()) {\n\t\t\tcase \"content-location\": fname = m[2].trim(); break;\n\t\t\tcase \"content-type\": ctype = m[2].trim(); break;\n\t\t\tcase \"content-transfer-encoding\": cte = m[2].trim(); break;\n\t\t}\n\t}\n\t++di;\n\tswitch(cte.toLowerCase()) {\n\t\tcase 'base64': fdata = s2a(Base64_decode(data.slice(di).join(\"\"))); break;\n\t\tcase 'quoted-printable': fdata = parse_quoted_printable(data.slice(di)); break;\n\t\tdefault: throw new Error(\"Unsupported Content-Transfer-Encoding \" + cte);\n\t}\n\tvar file = cfb_add(cfb, fname.slice(root.length), fdata, {unsafe: true});\n\tif(ctype) file.ctype = ctype;\n}\n\nfunction parse_mad(file/*:RawBytes*/, options/*:CFBReadOpts*/)/*:CFBContainer*/ {\n\tif(a2s(file.slice(0,13)).toLowerCase() != \"mime-version:\") throw new Error(\"Unsupported MAD header\");\n\tvar root = (options && options.root || \"\");\n\t// $FlowIgnore\n\tvar data = (has_buf && Buffer.isBuffer(file) ? file.toString(\"binary\") : a2s(file)).split(\"\\r\\n\");\n\tvar di = 0, row = \"\";\n\n\t/* if root is not specified, scan for the common prefix */\n\tfor(di = 0; di < data.length; ++di) {\n\t\trow = data[di];\n\t\tif(!/^Content-Location:/i.test(row)) continue;\n\t\trow = row.slice(row.indexOf(\"file\"));\n\t\tif(!root) root = row.slice(0, row.lastIndexOf(\"/\") + 1);\n\t\tif(row.slice(0, root.length) == root) continue;\n\t\twhile(root.length > 0) {\n\t\t\troot = root.slice(0, root.length - 1);\n\t\t\troot = root.slice(0, root.lastIndexOf(\"/\") + 1);\n\t\t\tif(row.slice(0,root.length) == root) break;\n\t\t}\n\t}\n\n\tvar mboundary = (data[1] || \"\").match(/boundary=\"(.*?)\"/);\n\tif(!mboundary) throw new Error(\"MAD cannot find boundary\");\n\tvar boundary = \"--\" + (mboundary[1] || \"\");\n\n\tvar FileIndex/*:CFBFileIndex*/ = [], FullPaths/*:Array*/ = [];\n\tvar o = {\n\t\tFileIndex: FileIndex,\n\t\tFullPaths: FullPaths\n\t};\n\tinit_cfb(o);\n\tvar start_di, fcnt = 0;\n\tfor(di = 0; di < data.length; ++di) {\n\t\tvar line = data[di];\n\t\tif(line !== boundary && line !== boundary + \"--\") continue;\n\t\tif(fcnt++) parse_mime(o, data.slice(start_di, di), root);\n\t\tstart_di = di;\n\t}\n\treturn o;\n}\n\nfunction write_mad(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:string*/ {\n\tvar opts = options || {};\n\tvar boundary = opts.boundary || \"SheetJS\";\n\tboundary = '------=' + boundary;\n\n\tvar out = [\n\t\t'MIME-Version: 1.0',\n\t\t'Content-Type: multipart/related; boundary=\"' + boundary.slice(2) + '\"',\n\t\t'',\n\t\t'',\n\t\t''\n\t];\n\n\tvar root = cfb.FullPaths[0], fp = root, fi = cfb.FileIndex[0];\n\tfor(var i = 1; i < cfb.FullPaths.length; ++i) {\n\t\tfp = cfb.FullPaths[i].slice(root.length);\n\t\tfi = cfb.FileIndex[i];\n\t\tif(!fi.size || !fi.content || fp == \"\\u0001Sh33tJ5\") continue;\n\n\t\t/* Normalize filename */\n\t\tfp = fp.replace(/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7E-\\xFF]/g, function(c) {\n\t\t\treturn \"_x\" + c.charCodeAt(0).toString(16) + \"_\";\n\t\t}).replace(/[\\u0080-\\uFFFF]/g, function(u) {\n\t\t\treturn \"_u\" + u.charCodeAt(0).toString(16) + \"_\";\n\t\t});\n\n\t\t/* Extract content as binary string */\n\t\tvar ca = fi.content;\n\t\t// $FlowIgnore\n\t\tvar cstr = has_buf && Buffer.isBuffer(ca) ? ca.toString(\"binary\") : a2s(ca);\n\n\t\t/* 4/5 of first 1024 chars ascii -> quoted printable, else base64 */\n\t\tvar dispcnt = 0, L = Math.min(1024, cstr.length), cc = 0;\n\t\tfor(var csl = 0; csl <= L; ++csl) if((cc=cstr.charCodeAt(csl)) >= 0x20 && cc < 0x80) ++dispcnt;\n\t\tvar qp = dispcnt >= L * 4 / 5;\n\n\t\tout.push(boundary);\n\t\tout.push('Content-Location: ' + (opts.root || 'file:///C:/SheetJS/') + fp);\n\t\tout.push('Content-Transfer-Encoding: ' + (qp ? 'quoted-printable' : 'base64'));\n\t\tout.push('Content-Type: ' + get_content_type(fi, fp));\n\t\tout.push('');\n\n\t\tout.push(qp ? write_quoted_printable(cstr) : write_base64_76(cstr));\n\t}\n\tout.push(boundary + '--\\r\\n');\n\treturn out.join(\"\\r\\n\");\n}\nfunction cfb_new(opts/*:?any*/)/*:CFBContainer*/ {\n\tvar o/*:CFBContainer*/ = ({}/*:any*/);\n\tinit_cfb(o, opts);\n\treturn o;\n}\n\nfunction cfb_add(cfb/*:CFBContainer*/, name/*:string*/, content/*:?RawBytes*/, opts/*:?any*/)/*:CFBEntry*/ {\n\tvar unsafe = opts && opts.unsafe;\n\tif(!unsafe) init_cfb(cfb);\n\tvar file = !unsafe && CFB.find(cfb, name);\n\tif(!file) {\n\t\tvar fpath/*:string*/ = cfb.FullPaths[0];\n\t\tif(name.slice(0, fpath.length) == fpath) fpath = name;\n\t\telse {\n\t\t\tif(fpath.slice(-1) != \"/\") fpath += \"/\";\n\t\t\tfpath = (fpath + name).replace(\"//\",\"/\");\n\t\t}\n\t\tfile = ({name: filename(name), type: 2}/*:any*/);\n\t\tcfb.FileIndex.push(file);\n\t\tcfb.FullPaths.push(fpath);\n\t\tif(!unsafe) CFB.utils.cfb_gc(cfb);\n\t}\n\t/*:: if(!file) throw new Error(\"unreachable\"); */\n\tfile.content = (content/*:any*/);\n\tfile.size = content ? content.length : 0;\n\tif(opts) {\n\t\tif(opts.CLSID) file.clsid = opts.CLSID;\n\t\tif(opts.mt) file.mt = opts.mt;\n\t\tif(opts.ct) file.ct = opts.ct;\n\t}\n\treturn file;\n}\n\nfunction cfb_del(cfb/*:CFBContainer*/, name/*:string*/)/*:boolean*/ {\n\tinit_cfb(cfb);\n\tvar file = CFB.find(cfb, name);\n\tif(file) for(var j = 0; j < cfb.FileIndex.length; ++j) if(cfb.FileIndex[j] == file) {\n\t\tcfb.FileIndex.splice(j, 1);\n\t\tcfb.FullPaths.splice(j, 1);\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nfunction cfb_mov(cfb/*:CFBContainer*/, old_name/*:string*/, new_name/*:string*/)/*:boolean*/ {\n\tinit_cfb(cfb);\n\tvar file = CFB.find(cfb, old_name);\n\tif(file) for(var j = 0; j < cfb.FileIndex.length; ++j) if(cfb.FileIndex[j] == file) {\n\t\tcfb.FileIndex[j].name = filename(new_name);\n\t\tcfb.FullPaths[j] = new_name;\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nfunction cfb_gc(cfb/*:CFBContainer*/)/*:void*/ { rebuild_cfb(cfb, true); }\n\nexports.find = find;\nexports.read = read;\nexports.parse = parse;\nexports.write = write;\nexports.writeFile = write_file;\nexports.utils = {\n\tcfb_new: cfb_new,\n\tcfb_add: cfb_add,\n\tcfb_del: cfb_del,\n\tcfb_mov: cfb_mov,\n\tcfb_gc: cfb_gc,\n\tReadShift: ReadShift,\n\tCheckField: CheckField,\n\tprep_blob: prep_blob,\n\tbconcat: bconcat,\n\tuse_zlib: use_zlib,\n\t_deflateRaw: _deflate,\n\t_inflateRaw: _inflate,\n\tconsts: consts\n};\n\nreturn exports;\n})();\n\nlet _fs = void 0;\nfunction set_fs(fs) { _fs = fs; }\nexport { set_fs };\n\n/* normalize data for blob ctor */\nfunction blobify(data) {\n\tif(typeof data === \"string\") return s2ab(data);\n\tif(Array.isArray(data)) return a2u(data);\n\treturn data;\n}\n/* write or download file */\nfunction write_dl(fname/*:string*/, payload/*:any*/, enc/*:?string*/) {\n\t/*global IE_SaveFile, Blob, navigator, saveAs, document, File, chrome */\n\tif(typeof _fs !== 'undefined' && _fs.writeFileSync) return enc ? _fs.writeFileSync(fname, payload, enc) : _fs.writeFileSync(fname, payload);\n\tif(typeof Deno !== 'undefined') {\n\t\t/* in this spot, it's safe to assume typed arrays and TextEncoder/TextDecoder exist */\n\t\tif(enc && typeof payload == \"string\") switch(enc) {\n\t\t\tcase \"utf8\": payload = new TextEncoder(enc).encode(payload); break;\n\t\t\tcase \"binary\": payload = s2ab(payload); break;\n\t\t\t/* TODO: binary equivalent */\n\t\t\tdefault: throw new Error(\"Unsupported encoding \" + enc);\n\t\t}\n\t\treturn Deno.writeFileSync(fname, payload);\n\t}\n\tvar data = (enc == \"utf8\") ? utf8write(payload) : payload;\n\t/*:: declare var IE_SaveFile: any; */\n\tif(typeof IE_SaveFile !== 'undefined') return IE_SaveFile(data, fname);\n\tif(typeof Blob !== 'undefined') {\n\t\tvar blob = new Blob([blobify(data)], {type:\"application/octet-stream\"});\n\t\t/*:: declare var navigator: any; */\n\t\tif(typeof navigator !== 'undefined' && navigator.msSaveBlob) return navigator.msSaveBlob(blob, fname);\n\t\t/*:: declare var saveAs: any; */\n\t\tif(typeof saveAs !== 'undefined') return saveAs(blob, fname);\n\t\tif(typeof URL !== 'undefined' && typeof document !== 'undefined' && document.createElement && URL.createObjectURL) {\n\t\t\tvar url = URL.createObjectURL(blob);\n\t\t\t/*:: declare var chrome: any; */\n\t\t\tif(typeof chrome === 'object' && typeof (chrome.downloads||{}).download == \"function\") {\n\t\t\t\tif(URL.revokeObjectURL && typeof setTimeout !== 'undefined') setTimeout(function() { URL.revokeObjectURL(url); }, 60000);\n\t\t\t\treturn chrome.downloads.download({ url: url, filename: fname, saveAs: true});\n\t\t\t}\n\t\t\tvar a = document.createElement(\"a\");\n\t\t\tif(a.download != null) {\n\t\t\t\t/*:: if(document.body == null) throw new Error(\"unreachable\"); */\n\t\t\t\ta.download = fname; a.href = url; document.body.appendChild(a); a.click();\n\t\t\t\t/*:: if(document.body == null) throw new Error(\"unreachable\"); */ document.body.removeChild(a);\n\t\t\t\tif(URL.revokeObjectURL && typeof setTimeout !== 'undefined') setTimeout(function() { URL.revokeObjectURL(url); }, 60000);\n\t\t\t\treturn url;\n\t\t\t}\n\t\t}\n\t}\n\t// $FlowIgnore\n\tif(typeof $ !== 'undefined' && typeof File !== 'undefined' && typeof Folder !== 'undefined') try { // extendscript\n\t\t// $FlowIgnore\n\t\tvar out = File(fname); out.open(\"w\"); out.encoding = \"binary\";\n\t\tif(Array.isArray(payload)) payload = a2s(payload);\n\t\tout.write(payload); out.close(); return payload;\n\t} catch(e) { if(!e.message || !e.message.match(/onstruct/)) throw e; }\n\tthrow new Error(\"cannot save file \" + fname);\n}\n\n/* read binary data from file */\nfunction read_binary(path/*:string*/) {\n\tif(typeof _fs !== 'undefined') return _fs.readFileSync(path);\n\tif(typeof Deno !== 'undefined') return Deno.readFileSync(path);\n\t// $FlowIgnore\n\tif(typeof $ !== 'undefined' && typeof File !== 'undefined' && typeof Folder !== 'undefined') try { // extendscript\n\t\t// $FlowIgnore\n\t\tvar infile = File(path); infile.open(\"r\"); infile.encoding = \"binary\";\n\t\tvar data = infile.read(); infile.close();\n\t\treturn data;\n\t} catch(e) { if(!e.message || !e.message.match(/onstruct/)) throw e; }\n\tthrow new Error(\"Cannot access file \" + path);\n}\nfunction keys(o/*:any*/)/*:Array*/ {\n\tvar ks = Object.keys(o), o2 = [];\n\tfor(var i = 0; i < ks.length; ++i) if(Object.prototype.hasOwnProperty.call(o, ks[i])) o2.push(ks[i]);\n\treturn o2;\n}\n\nfunction evert_key(obj/*:any*/, key/*:string*/)/*:EvertType*/ {\n\tvar o = ([]/*:any*/), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) if(o[obj[K[i]][key]] == null) o[obj[K[i]][key]] = K[i];\n\treturn o;\n}\n\nfunction evert(obj/*:any*/)/*:EvertType*/ {\n\tvar o = ([]/*:any*/), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) o[obj[K[i]]] = K[i];\n\treturn o;\n}\n\nfunction evert_num(obj/*:any*/)/*:EvertNumType*/ {\n\tvar o = ([]/*:any*/), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) o[obj[K[i]]] = parseInt(K[i],10);\n\treturn o;\n}\n\nfunction evert_arr(obj/*:any*/)/*:EvertArrType*/ {\n\tvar o/*:EvertArrType*/ = ([]/*:any*/), K = keys(obj);\n\tfor(var i = 0; i !== K.length; ++i) {\n\t\tif(o[obj[K[i]]] == null) o[obj[K[i]]] = [];\n\t\to[obj[K[i]]].push(K[i]);\n\t}\n\treturn o;\n}\n\nvar basedate = /*#__PURE__*/new Date(1899, 11, 30, 0, 0, 0); // 2209161600000\nfunction datenum(v/*:Date*/, date1904/*:?boolean*/)/*:number*/ {\n\tvar epoch = /*#__PURE__*/v.getTime();\n\tif(date1904) epoch -= 1462*24*60*60*1000;\n\tvar dnthresh = /*#__PURE__*/basedate.getTime() + (/*#__PURE__*/v.getTimezoneOffset() - /*#__PURE__*/basedate.getTimezoneOffset()) * 60000;\n\treturn (epoch - dnthresh) / (24 * 60 * 60 * 1000);\n}\nvar refdate = /*#__PURE__*/new Date();\nvar dnthresh = /*#__PURE__*/basedate.getTime() + (/*#__PURE__*/refdate.getTimezoneOffset() - /*#__PURE__*/basedate.getTimezoneOffset()) * 60000;\nvar refoffset = /*#__PURE__*/refdate.getTimezoneOffset();\nfunction numdate(v/*:number*/)/*:Date*/ {\n\tvar out = new Date();\n\tout.setTime(v * 24 * 60 * 60 * 1000 + dnthresh);\n\tif (out.getTimezoneOffset() !== refoffset) {\n\t\tout.setTime(out.getTime() + (out.getTimezoneOffset() - refoffset) * 60000);\n\t}\n\treturn out;\n}\n\n/* ISO 8601 Duration */\nfunction parse_isodur(s) {\n\tvar sec = 0, mt = 0, time = false;\n\tvar m = s.match(/P([0-9\\.]+Y)?([0-9\\.]+M)?([0-9\\.]+D)?T([0-9\\.]+H)?([0-9\\.]+M)?([0-9\\.]+S)?/);\n\tif(!m) throw new Error(\"|\" + s + \"| is not an ISO8601 Duration\");\n\tfor(var i = 1; i != m.length; ++i) {\n\t\tif(!m[i]) continue;\n\t\tmt = 1;\n\t\tif(i > 3) time = true;\n\t\tswitch(m[i].slice(m[i].length-1)) {\n\t\t\tcase 'Y':\n\t\t\t\tthrow new Error(\"Unsupported ISO Duration Field: \" + m[i].slice(m[i].length-1));\n\t\t\tcase 'D': mt *= 24;\n\t\t\t\t/* falls through */\n\t\t\tcase 'H': mt *= 60;\n\t\t\t\t/* falls through */\n\t\t\tcase 'M':\n\t\t\t\tif(!time) throw new Error(\"Unsupported ISO Duration Field: M\");\n\t\t\t\telse mt *= 60;\n\t\t\t\t/* falls through */\n\t\t\tcase 'S': break;\n\t\t}\n\t\tsec += mt * parseInt(m[i], 10);\n\t}\n\treturn sec;\n}\n\nvar good_pd_date_1 = /*#__PURE__*/new Date('2017-02-19T19:06:09.000Z');\nvar good_pd_date = /*#__PURE__*/isNaN(/*#__PURE__*/good_pd_date_1.getFullYear()) ? /*#__PURE__*/new Date('2/19/17') : good_pd_date_1;\nvar good_pd = /*#__PURE__*/good_pd_date.getFullYear() == 2017;\n/* parses a date as a local date */\nfunction parseDate(str/*:string|Date*/, fixdate/*:?number*/)/*:Date*/ {\n\tvar d = new Date(str);\n\tif(good_pd) {\n\t\t/*:: if(fixdate == null) fixdate = 0; */\n\t\tif(fixdate > 0) d.setTime(d.getTime() + d.getTimezoneOffset() * 60 * 1000);\n\t\telse if(fixdate < 0) d.setTime(d.getTime() - d.getTimezoneOffset() * 60 * 1000);\n\t\treturn d;\n\t}\n\tif(str instanceof Date) return str;\n\tif(good_pd_date.getFullYear() == 1917 && !isNaN(d.getFullYear())) {\n\t\tvar s = d.getFullYear();\n\t\tif(str.indexOf(\"\" + s) > -1) return d;\n\t\td.setFullYear(d.getFullYear() + 100); return d;\n\t}\n\tvar n = str.match(/\\d+/g)||[\"2017\",\"2\",\"19\",\"0\",\"0\",\"0\"];\n\tvar out = new Date(+n[0], +n[1] - 1, +n[2], (+n[3]||0), (+n[4]||0), (+n[5]||0));\n\tif(str.indexOf(\"Z\") > -1) out = new Date(out.getTime() - out.getTimezoneOffset() * 60 * 1000);\n\treturn out;\n}\n\nfunction cc2str(arr/*:Array*/, debomit)/*:string*/ {\n\tif(has_buf && Buffer.isBuffer(arr)) {\n\t\tif(debomit) {\n\t\t\tif(arr[0] == 0xFF && arr[1] == 0xFE) return utf8write(arr.slice(2).toString(\"utf16le\"));\n\t\t\tif(arr[1] == 0xFE && arr[2] == 0xFF) return utf8write(utf16beread(arr.slice(2).toString(\"binary\")));\n\t\t}\n\t\treturn arr.toString(\"binary\");\n\t}\n\n\tif(typeof TextDecoder !== \"undefined\") try {\n\t\tif(debomit) {\n\t\t\tif(arr[0] == 0xFF && arr[1] == 0xFE) return utf8write(new TextDecoder(\"utf-16le\").decode(arr.slice(2)));\n\t\t\tif(arr[0] == 0xFE && arr[1] == 0xFF) return utf8write(new TextDecoder(\"utf-16be\").decode(arr.slice(2)));\n\t\t}\n\t\tvar rev = {\n\t\t\t\"\\u20ac\": \"\\x80\", \"\\u201a\": \"\\x82\", \"\\u0192\": \"\\x83\", \"\\u201e\": \"\\x84\",\n\t\t\t\"\\u2026\": \"\\x85\", \"\\u2020\": \"\\x86\", \"\\u2021\": \"\\x87\", \"\\u02c6\": \"\\x88\",\n\t\t\t\"\\u2030\": \"\\x89\", \"\\u0160\": \"\\x8a\", \"\\u2039\": \"\\x8b\", \"\\u0152\": \"\\x8c\",\n\t\t\t\"\\u017d\": \"\\x8e\", \"\\u2018\": \"\\x91\", \"\\u2019\": \"\\x92\", \"\\u201c\": \"\\x93\",\n\t\t\t\"\\u201d\": \"\\x94\", \"\\u2022\": \"\\x95\", \"\\u2013\": \"\\x96\", \"\\u2014\": \"\\x97\",\n\t\t\t\"\\u02dc\": \"\\x98\", \"\\u2122\": \"\\x99\", \"\\u0161\": \"\\x9a\", \"\\u203a\": \"\\x9b\",\n\t\t\t\"\\u0153\": \"\\x9c\", \"\\u017e\": \"\\x9e\", \"\\u0178\": \"\\x9f\"\n\t\t};\n\t\tif(Array.isArray(arr)) arr = new Uint8Array(arr);\n\t\treturn new TextDecoder(\"latin1\").decode(arr).replace(/[€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ]/g, function(c) { return rev[c] || c; });\n\t} catch(e) {}\n\n\tvar o = [];\n\tfor(var i = 0; i != arr.length; ++i) o.push(String.fromCharCode(arr[i]));\n\treturn o.join(\"\");\n}\n\nfunction dup(o/*:any*/)/*:any*/ {\n\tif(typeof JSON != 'undefined' && !Array.isArray(o)) return JSON.parse(JSON.stringify(o));\n\tif(typeof o != 'object' || o == null) return o;\n\tif(o instanceof Date) return new Date(o.getTime());\n\tvar out = {};\n\tfor(var k in o) if(Object.prototype.hasOwnProperty.call(o, k)) out[k] = dup(o[k]);\n\treturn out;\n}\n\nfunction fill(c/*:string*/,l/*:number*/)/*:string*/ { var o = \"\"; while(o.length < l) o+=c; return o; }\n\n/* TODO: stress test */\nfunction fuzzynum(s/*:string*/)/*:number*/ {\n\tvar v/*:number*/ = Number(s);\n\tif(!isNaN(v)) return isFinite(v) ? v : NaN;\n\tif(!/\\d/.test(s)) return v;\n\tvar wt = 1;\n\tvar ss = s.replace(/([\\d]),([\\d])/g,\"$1$2\").replace(/[$]/g,\"\").replace(/[%]/g, function() { wt *= 100; return \"\";});\n\tif(!isNaN(v = Number(ss))) return v / wt;\n\tss = ss.replace(/[(](.*)[)]/,function($$, $1) { wt = -wt; return $1;});\n\tif(!isNaN(v = Number(ss))) return v / wt;\n\treturn v;\n}\nvar lower_months = ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december'];\nfunction fuzzydate(s/*:string*/)/*:Date*/ {\n\tvar o = new Date(s), n = new Date(NaN);\n\tvar y = o.getYear(), m = o.getMonth(), d = o.getDate();\n\tif(isNaN(d)) return n;\n\tvar lower = s.toLowerCase();\n\tif(lower.match(/jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec/)) {\n\t\tlower = lower.replace(/[^a-z]/g,\"\").replace(/([^a-z]|^)[ap]m?([^a-z]|$)/,\"\");\n\t\tif(lower.length > 3 && lower_months.indexOf(lower) == -1) return n;\n\t} else if(lower.match(/[a-z]/)) return n;\n\tif(y < 0 || y > 8099) return n;\n\tif((m > 0 || d > 1) && y != 101) return o;\n\tif(s.match(/[^-0-9:,\\/\\\\]/)) return n;\n\treturn o;\n}\n\nvar split_regex = /*#__PURE__*/(function() {\n\tvar safe_split_regex = \"abacaba\".split(/(:?b)/i).length == 5;\n\treturn function split_regex(str/*:string*/, re, def/*:string*/)/*:Array*/ {\n\t\tif(safe_split_regex || typeof re == \"string\") return str.split(re);\n\t\tvar p = str.split(re), o = [p[0]];\n\t\tfor(var i = 1; i < p.length; ++i) { o.push(def); o.push(p[i]); }\n\t\treturn o;\n\t};\n})();\nfunction getdatastr(data)/*:?string*/ {\n\tif(!data) return null;\n\tif(data.content && data.type) return cc2str(data.content, true);\n\tif(data.data) return debom(data.data);\n\tif(data.asNodeBuffer && has_buf) return debom(data.asNodeBuffer().toString('binary'));\n\tif(data.asBinary) return debom(data.asBinary());\n\tif(data._data && data._data.getContent) return debom(cc2str(Array.prototype.slice.call(data._data.getContent(),0)));\n\treturn null;\n}\n\nfunction getdatabin(data) {\n\tif(!data) return null;\n\tif(data.data) return char_codes(data.data);\n\tif(data.asNodeBuffer && has_buf) return data.asNodeBuffer();\n\tif(data._data && data._data.getContent) {\n\t\tvar o = data._data.getContent();\n\t\tif(typeof o == \"string\") return char_codes(o);\n\t\treturn Array.prototype.slice.call(o);\n\t}\n\tif(data.content && data.type) return data.content;\n\treturn null;\n}\n\nfunction getdata(data) { return (data && data.name.slice(-4) === \".bin\") ? getdatabin(data) : getdatastr(data); }\n\n/* Part 2 Section 10.1.2 \"Mapping Content Types\" Names are case-insensitive */\n/* OASIS does not comment on filename case sensitivity */\nfunction safegetzipfile(zip, file/*:string*/) {\n\tvar k = zip.FullPaths || keys(zip.files);\n\tvar f = file.toLowerCase().replace(/[\\/]/g, '\\\\'), g = f.replace(/\\\\/g,'\\/');\n\tfor(var i=0; i\\/]+)\\s*=\\s*((?:\")([^\"]*)(?:\")|(?:')([^']*)(?:')|([^'\">\\s]+))/g;\nvar tagregex1=/<[\\/\\?]?[a-zA-Z0-9:_-]+(?:\\s+[^\"\\s?>\\/]+\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^'\">\\s=]+))*\\s*[\\/\\?]?>/mg, tagregex2 = /<[^>]*>/g;\nvar tagregex = /*#__PURE__*/XML_HEADER.match(tagregex1) ? tagregex1 : tagregex2;\nvar nsregex=/<\\w*:/, nsregex2 = /<(\\/?)\\w+:/;\nfunction parsexmltag(tag/*:string*/, skip_root/*:?boolean*/, skip_LC/*:?boolean*/)/*:any*/ {\n\tvar z = ({}/*:any*/);\n\tvar eq = 0, c = 0;\n\tfor(; eq !== tag.length; ++eq) if((c = tag.charCodeAt(eq)) === 32 || c === 10 || c === 13) break;\n\tif(!skip_root) z[0] = tag.slice(0, eq);\n\tif(eq === tag.length) return z;\n\tvar m = tag.match(attregexg), j=0, v=\"\", i=0, q=\"\", cc=\"\", quot = 1;\n\tif(m) for(i = 0; i != m.length; ++i) {\n\t\tcc = m[i];\n\t\tfor(c=0; c != cc.length; ++c) if(cc.charCodeAt(c) === 61) break;\n\t\tq = cc.slice(0,c).trim();\n\t\twhile(cc.charCodeAt(c+1) == 32) ++c;\n\t\tquot = ((eq=cc.charCodeAt(c+1)) == 34 || eq == 39) ? 1 : 0;\n\t\tv = cc.slice(c+1+quot, cc.length-quot);\n\t\tfor(j=0;j!=q.length;++j) if(q.charCodeAt(j) === 58) break;\n\t\tif(j===q.length) {\n\t\t\tif(q.indexOf(\"_\") > 0) q = q.slice(0, q.indexOf(\"_\")); // from ods\n\t\t\tz[q] = v;\n\t\t\tif(!skip_LC) z[q.toLowerCase()] = v;\n\t\t}\n\t\telse {\n\t\t\tvar k = (j===5 && q.slice(0,5)===\"xmlns\"?\"xmlns\":\"\")+q.slice(j+1);\n\t\t\tif(z[k] && q.slice(j-3,j) == \"ext\") continue; // from ods\n\t\t\tz[k] = v;\n\t\t\tif(!skip_LC) z[k.toLowerCase()] = v;\n\t\t}\n\t}\n\treturn z;\n}\nfunction strip_ns(x/*:string*/)/*:string*/ { return x.replace(nsregex2, \"<$1\"); }\n\nvar encodings = {\n\t'"': '\"',\n\t''': \"'\",\n\t'>': '>',\n\t'<': '<',\n\t'&': '&'\n};\nvar rencoding = /*#__PURE__*/evert(encodings);\n//var rencstr = \"&<>'\\\"\".split(\"\");\n\n// TODO: CP remap (need to read file version to determine OS)\nvar unescapexml/*:StringConv*/ = /*#__PURE__*/(function() {\n\t/* 22.4.2.4 bstr (Basic String) */\n\tvar encregex = /&(?:quot|apos|gt|lt|amp|#x?([\\da-fA-F]+));/ig, coderegex = /_x([\\da-fA-F]{4})_/ig;\n\treturn function unescapexml(text/*:string*/)/*:string*/ {\n\t\tvar s = text + '', i = s.indexOf(\"-1?16:10))||$$; }).replace(coderegex,function(m,c) {return String.fromCharCode(parseInt(c,16));});\n\t\tvar j = s.indexOf(\"]]>\");\n\t\treturn unescapexml(s.slice(0, i)) + s.slice(i+9,j) + unescapexml(s.slice(j+3));\n\t};\n})();\n\nvar decregex=/[&<>'\"]/g, charegex = /[\\u0000-\\u0008\\u000b-\\u001f]/g;\nfunction escapexml(text/*:string*/)/*:string*/{\n\tvar s = text + '';\n\treturn s.replace(decregex, function(y) { return rencoding[y]; }).replace(charegex,function(s) { return \"_x\" + (\"000\"+s.charCodeAt(0).toString(16)).slice(-4) + \"_\";});\n}\nfunction escapexmltag(text/*:string*/)/*:string*/{ return escapexml(text).replace(/ /g,\"_x0020_\"); }\n\nvar htmlcharegex = /[\\u0000-\\u001f]/g;\nfunction escapehtml(text/*:string*/)/*:string*/{\n\tvar s = text + '';\n\treturn s.replace(decregex, function(y) { return rencoding[y]; }).replace(/\\n/g, \"
    \").replace(htmlcharegex,function(s) { return \"&#x\" + (\"000\"+s.charCodeAt(0).toString(16)).slice(-4) + \";\"; });\n}\n\nfunction escapexlml(text/*:string*/)/*:string*/{\n\tvar s = text + '';\n\treturn s.replace(decregex, function(y) { return rencoding[y]; }).replace(htmlcharegex,function(s) { return \"&#x\" + (s.charCodeAt(0).toString(16)).toUpperCase() + \";\"; });\n}\n\n/* TODO: handle codepages */\nvar xlml_fixstr/*:StringConv*/ = /*#__PURE__*/(function() {\n\tvar entregex = /&#(\\d+);/g;\n\tfunction entrepl($$/*:string*/,$1/*:string*/)/*:string*/ { return String.fromCharCode(parseInt($1,10)); }\n\treturn function xlml_fixstr(str/*:string*/)/*:string*/ { return str.replace(entregex,entrepl); };\n})();\nfunction xlml_unfixstr(str/*:string*/)/*:string*/ { return str.replace(/(\\r\\n|[\\r\\n])/g,\"\\ \"); }\n\nfunction parsexmlbool(value/*:any*/)/*:boolean*/ {\n\tswitch(value) {\n\t\tcase 1: case true: case '1': case 'true': case 'TRUE': return true;\n\t\t/* case '0': case 'false': case 'FALSE':*/\n\t\tdefault: return false;\n\t}\n}\n\nfunction utf8reada(orig/*:string*/)/*:string*/ {\n\tvar out = \"\", i = 0, c = 0, d = 0, e = 0, f = 0, w = 0;\n\twhile (i < orig.length) {\n\t\tc = orig.charCodeAt(i++);\n\t\tif (c < 128) { out += String.fromCharCode(c); continue; }\n\t\td = orig.charCodeAt(i++);\n\t\tif (c>191 && c<224) { f = ((c & 31) << 6); f |= (d & 63); out += String.fromCharCode(f); continue; }\n\t\te = orig.charCodeAt(i++);\n\t\tif (c < 240) { out += String.fromCharCode(((c & 15) << 12) | ((d & 63) << 6) | (e & 63)); continue; }\n\t\tf = orig.charCodeAt(i++);\n\t\tw = (((c & 7) << 18) | ((d & 63) << 12) | ((e & 63) << 6) | (f & 63))-65536;\n\t\tout += String.fromCharCode(0xD800 + ((w>>>10)&1023));\n\t\tout += String.fromCharCode(0xDC00 + (w&1023));\n\t}\n\treturn out;\n}\n\nfunction utf8readb(data) {\n\tvar out = new_raw_buf(2*data.length), w, i, j = 1, k = 0, ww=0, c;\n\tfor(i = 0; i < data.length; i+=j) {\n\t\tj = 1;\n\t\tif((c=data.charCodeAt(i)) < 128) w = c;\n\t\telse if(c < 224) { w = (c&31)*64+(data.charCodeAt(i+1)&63); j=2; }\n\t\telse if(c < 240) { w=(c&15)*4096+(data.charCodeAt(i+1)&63)*64+(data.charCodeAt(i+2)&63); j=3; }\n\t\telse { j = 4;\n\t\t\tw = (c & 7)*262144+(data.charCodeAt(i+1)&63)*4096+(data.charCodeAt(i+2)&63)*64+(data.charCodeAt(i+3)&63);\n\t\t\tw -= 65536; ww = 0xD800 + ((w>>>10)&1023); w = 0xDC00 + (w&1023);\n\t\t}\n\t\tif(ww !== 0) { out[k++] = ww&255; out[k++] = ww>>>8; ww = 0; }\n\t\tout[k++] = w%256; out[k++] = w>>>8;\n\t}\n\treturn out.slice(0,k).toString('ucs2');\n}\n\nfunction utf8readc(data) { return Buffer_from(data, 'binary').toString('utf8'); }\n\nvar utf8corpus = \"foo bar baz\\u00e2\\u0098\\u0083\\u00f0\\u009f\\u008d\\u00a3\";\nvar utf8read = has_buf && (/*#__PURE__*/utf8readc(utf8corpus) == /*#__PURE__*/utf8reada(utf8corpus) && utf8readc || /*#__PURE__*/utf8readb(utf8corpus) == /*#__PURE__*/utf8reada(utf8corpus) && utf8readb) || utf8reada;\n\nvar utf8write/*:StringConv*/ = has_buf ? function(data) { return Buffer_from(data, 'utf8').toString(\"binary\"); } : function(orig/*:string*/)/*:string*/ {\n\tvar out/*:Array*/ = [], i = 0, c = 0, d = 0;\n\twhile(i < orig.length) {\n\t\tc = orig.charCodeAt(i++);\n\t\tswitch(true) {\n\t\t\tcase c < 128: out.push(String.fromCharCode(c)); break;\n\t\t\tcase c < 2048:\n\t\t\t\tout.push(String.fromCharCode(192 + (c >> 6)));\n\t\t\t\tout.push(String.fromCharCode(128 + (c & 63)));\n\t\t\t\tbreak;\n\t\t\tcase c >= 55296 && c < 57344:\n\t\t\t\tc -= 55296; d = orig.charCodeAt(i++) - 56320 + (c<<10);\n\t\t\t\tout.push(String.fromCharCode(240 + ((d >>18) & 7)));\n\t\t\t\tout.push(String.fromCharCode(144 + ((d >>12) & 63)));\n\t\t\t\tout.push(String.fromCharCode(128 + ((d >> 6) & 63)));\n\t\t\t\tout.push(String.fromCharCode(128 + (d & 63)));\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tout.push(String.fromCharCode(224 + (c >> 12)));\n\t\t\t\tout.push(String.fromCharCode(128 + ((c >> 6) & 63)));\n\t\t\t\tout.push(String.fromCharCode(128 + (c & 63)));\n\t\t}\n\t}\n\treturn out.join(\"\");\n};\n\n// matches ... extracts content\nvar matchtag = /*#__PURE__*/(function() {\n\tvar mtcache/*:{[k:string]:RegExp}*/ = ({}/*:any*/);\n\treturn function matchtag(f/*:string*/,g/*:?string*/)/*:RegExp*/ {\n\t\tvar t = f+\"|\"+(g||\"\");\n\t\tif(mtcache[t]) return mtcache[t];\n\t\treturn (mtcache[t] = new RegExp('<(?:\\\\w+:)?'+f+'(?: xml:space=\"preserve\")?(?:[^>]*)>([\\\\s\\\\S]*?)',((g||\"\")/*:any*/)));\n\t};\n})();\n\nvar htmldecode/*:{(s:string):string}*/ = /*#__PURE__*/(function() {\n\tvar entities/*:Array<[RegExp, string]>*/ = [\n\t\t['nbsp', ' '], ['middot', '·'],\n\t\t['quot', '\"'], ['apos', \"'\"], ['gt', '>'], ['lt', '<'], ['amp', '&']\n\t].map(function(x/*:[string, string]*/) { return [new RegExp('&' + x[0] + ';', \"ig\"), x[1]]; });\n\treturn function htmldecode(str/*:string*/)/*:string*/ {\n\t\tvar o = str\n\t\t\t\t// Remove new lines and spaces from start of content\n\t\t\t\t.replace(/^[\\t\\n\\r ]+/, \"\")\n\t\t\t\t// Remove new lines and spaces from end of content\n\t\t\t\t.replace(/[\\t\\n\\r ]+$/,\"\")\n\t\t\t\t// Added line which removes any white space characters after and before html tags\n\t\t\t\t.replace(/>\\s+/g,\">\").replace(/\\s+ tags with new lines\n\t\t\t\t.replace(/<\\s*[bB][rR]\\s*\\/?>/g,\"\\n\")\n\t\t\t\t// Strip HTML elements\n\t\t\t\t.replace(/<[^>]*>/g,\"\");\n\t\tfor(var i = 0; i < entities.length; ++i) o = o.replace(entities[i][0], entities[i][1]);\n\t\treturn o;\n\t};\n})();\n\nvar vtregex = /*#__PURE__*/(function(){ var vt_cache = {};\n\treturn function vt_regex(bt) {\n\t\tif(vt_cache[bt] !== undefined) return vt_cache[bt];\n\t\treturn (vt_cache[bt] = new RegExp(\"<(?:vt:)?\" + bt + \">([\\\\s\\\\S]*?)\", 'g') );\n};})();\nvar vtvregex = /<\\/?(?:vt:)?variant>/g, vtmregex = /<(?:vt:)([^>]*)>([\\s\\S]*)*/ {\n\tvar h = parsexmltag(data);\n\n\tvar matches/*:Array*/ = data.match(vtregex(h.baseType))||[];\n\tvar res/*:Array*/ = [];\n\tif(matches.length != h.size) {\n\t\tif(opts.WTF) throw new Error(\"unexpected vector length \" + matches.length + \" != \" + h.size);\n\t\treturn res;\n\t}\n\tmatches.forEach(function(x/*:string*/) {\n\t\tvar v = x.replace(vtvregex,\"\").match(vtmregex);\n\t\tif(v) res.push({v:utf8read(v[2]), t:v[1]});\n\t});\n\treturn res;\n}\n\nvar wtregex = /(^\\s|\\s$|\\n)/;\nfunction writetag(f/*:string*/,g/*:string*/)/*:string*/ { return '<' + f + (g.match(wtregex)?' xml:space=\"preserve\"' : \"\") + '>' + g + ''; }\n\nfunction wxt_helper(h)/*:string*/ { return keys(h).map(function(k) { return \" \" + k + '=\"' + h[k] + '\"';}).join(\"\"); }\nfunction writextag(f/*:string*/,g/*:?string*/,h) { return '<' + f + ((h != null) ? wxt_helper(h) : \"\") + ((g != null) ? (g.match(wtregex)?' xml:space=\"preserve\"' : \"\") + '>' + g + '';}\n\nfunction write_w3cdtf(d/*:Date*/, t/*:?boolean*/)/*:string*/ { try { return d.toISOString().replace(/\\.\\d*/,\"\"); } catch(e) { if(t) throw e; } return \"\"; }\n\nfunction write_vt(s, xlsx/*:?boolean*/)/*:string*/ {\n\tswitch(typeof s) {\n\t\tcase 'string':\n\t\t\tvar o = writextag('vt:lpwstr', escapexml(s));\n\t\t\tif(xlsx) o = o.replace(/"/g, \"_x0022_\");\n\t\t\treturn o;\n\t\tcase 'number': return writextag((s|0)==s?'vt:i4':'vt:r8', escapexml(String(s)));\n\t\tcase 'boolean': return writextag('vt:bool',s?'true':'false');\n\t}\n\tif(s instanceof Date) return writextag('vt:filetime', write_w3cdtf(s));\n\tthrow new Error(\"Unable to serialize \" + s);\n}\n\nfunction xlml_normalize(d)/*:string*/ {\n\tif(has_buf &&/*::typeof Buffer !== \"undefined\" && d != null && d instanceof Buffer &&*/ Buffer.isBuffer(d)) return d.toString('utf8');\n\tif(typeof d === 'string') return d;\n\t/* duktape */\n\tif(typeof Uint8Array !== 'undefined' && d instanceof Uint8Array) return utf8read(a2s(ab2a(d)));\n\tthrow new Error(\"Bad input format: expected Buffer or string\");\n}\n/* UOS uses CJK in tags */\nvar xlmlregex = /<(\\/?)([^\\s?>:\\/]+)(?:[\\s?:\\/][^>]*)?>/mg;\n//var xlmlregex = /<(\\/?)([a-z0-9]*:|)(\\w+)[^>]*>/mg;\n\nvar XMLNS = ({\n\tCORE_PROPS: 'http://schemas.openxmlformats.org/package/2006/metadata/core-properties',\n\tCUST_PROPS: \"http://schemas.openxmlformats.org/officeDocument/2006/custom-properties\",\n\tEXT_PROPS: \"http://schemas.openxmlformats.org/officeDocument/2006/extended-properties\",\n\tCT: 'http://schemas.openxmlformats.org/package/2006/content-types',\n\tRELS: 'http://schemas.openxmlformats.org/package/2006/relationships',\n\tTCMNT: 'http://schemas.microsoft.com/office/spreadsheetml/2018/threadedcomments',\n\t'dc': 'http://purl.org/dc/elements/1.1/',\n\t'dcterms': 'http://purl.org/dc/terms/',\n\t'dcmitype': 'http://purl.org/dc/dcmitype/',\n\t'mx': 'http://schemas.microsoft.com/office/mac/excel/2008/main',\n\t'r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships',\n\t'sjs': 'http://schemas.openxmlformats.org/package/2006/sheetjs/core-properties',\n\t'vt': 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes',\n\t'xsi': 'http://www.w3.org/2001/XMLSchema-instance',\n\t'xsd': 'http://www.w3.org/2001/XMLSchema'\n}/*:any*/);\n\nvar XMLNS_main = [\n\t'http://schemas.openxmlformats.org/spreadsheetml/2006/main',\n\t'http://purl.oclc.org/ooxml/spreadsheetml/main',\n\t'http://schemas.microsoft.com/office/excel/2006/main',\n\t'http://schemas.microsoft.com/office/excel/2006/2'\n];\n\nvar XLMLNS = ({\n\t'o': 'urn:schemas-microsoft-com:office:office',\n\t'x': 'urn:schemas-microsoft-com:office:excel',\n\t'ss': 'urn:schemas-microsoft-com:office:spreadsheet',\n\t'dt': 'uuid:C2F41010-65B3-11d1-A29F-00AA00C14882',\n\t'mv': 'http://macVmlSchemaUri',\n\t'v': 'urn:schemas-microsoft-com:vml',\n\t'html': 'http://www.w3.org/TR/REC-html40'\n}/*:any*/);\nfunction read_double_le(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ {\n\tvar s = 1 - 2 * (b[idx + 7] >>> 7);\n\tvar e = ((b[idx + 7] & 0x7f) << 4) + ((b[idx + 6] >>> 4) & 0x0f);\n\tvar m = (b[idx+6]&0x0f);\n\tfor(var i = 5; i >= 0; --i) m = m * 256 + b[idx + i];\n\tif(e == 0x7ff) return m == 0 ? (s * Infinity) : NaN;\n\tif(e == 0) e = -1022;\n\telse { e -= 1023; m += Math.pow(2,52); }\n\treturn s * Math.pow(2, e - 52) * m;\n}\n\nfunction write_double_le(b/*:RawBytes|CFBlob*/, v/*:number*/, idx/*:number*/) {\n\tvar bs = ((((v < 0) || (1/v == -Infinity)) ? 1 : 0) << 7), e = 0, m = 0;\n\tvar av = bs ? (-v) : v;\n\tif(!isFinite(av)) { e = 0x7ff; m = isNaN(v) ? 0x6969 : 0; }\n\telse if(av == 0) e = m = 0;\n\telse {\n\t\te = Math.floor(Math.log(av) / Math.LN2);\n\t\tm = av * Math.pow(2, 52 - e);\n\t\tif((e <= -1023) && (!isFinite(m) || (m < Math.pow(2,52)))) { e = -1022; }\n\t\telse { m -= Math.pow(2,52); e+=1023; }\n\t}\n\tfor(var i = 0; i <= 5; ++i, m/=256) b[idx + i] = m & 0xff;\n\tb[idx + 6] = ((e & 0x0f) << 4) | (m & 0xf);\n\tb[idx + 7] = (e >> 4) | bs;\n}\n\nvar ___toBuffer = function(bufs/*:Array >*/)/*:RawBytes*/ { var x=[],w=10240; for(var i=0;i 0 && Buffer.isBuffer(bufs[0][0])) ? Buffer.concat(bufs[0].map(function(x) { return Buffer.isBuffer(x) ? x : Buffer_from(x); })) : ___toBuffer(bufs);} : ___toBuffer;\n\nvar ___utf16le = function(b/*:RawBytes|CFBlob*/,s/*:number*/,e/*:number*/)/*:string*/ { var ss/*:Array*/=[]; for(var i=s; i*/=[]; for(var i=s; i 0 ? __utf8(b, i+4,i+4+len-1) : \"\";};\nvar __lpstr = ___lpstr;\n\nvar ___cpstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len-1) : \"\";};\nvar __cpstr = ___cpstr;\n\nvar ___lpwstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = 2*__readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len-1) : \"\";};\nvar __lpwstr = ___lpwstr;\n\nvar ___lpp4 = function lpp4_(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? __utf16le(b, i+4,i+4+len) : \"\";};\nvar __lpp4 = ___lpp4;\n\nvar ___8lpp4 = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len) : \"\";};\nvar __8lpp4 = ___8lpp4;\n\nvar ___double = function(b/*:RawBytes|CFBlob*/, idx/*:number*/) { return read_double_le(b, idx);};\nvar __double = ___double;\n\nvar is_buf = function is_buf_a(a) { return Array.isArray(a) || (typeof Uint8Array !== \"undefined\" && a instanceof Uint8Array); };\n\nif(has_buf/*:: && typeof Buffer !== 'undefined'*/) {\n\t__lpstr = function lpstr_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___lpstr(b, i); var len = b.readUInt32LE(i); return len > 0 ? b.toString('utf8',i+4,i+4+len-1) : \"\";};\n\t__cpstr = function cpstr_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___cpstr(b, i); var len = b.readUInt32LE(i); return len > 0 ? b.toString('utf8',i+4,i+4+len-1) : \"\";};\n\t__lpwstr = function lpwstr_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___lpwstr(b, i); var len = 2*b.readUInt32LE(i); return b.toString('utf16le',i+4,i+4+len-1);};\n\t__lpp4 = function lpp4_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___lpp4(b, i); var len = b.readUInt32LE(i); return b.toString('utf16le',i+4,i+4+len);};\n\t__8lpp4 = function lpp4_8b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___8lpp4(b, i); var len = b.readUInt32LE(i); return b.toString('utf8',i+4,i+4+len);};\n\t__double = function double_(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(Buffer.isBuffer(b)/*::&& b instanceof Buffer*/) return b.readDoubleLE(i); return ___double(b,i); };\n\tis_buf = function is_buf_b(a) { return Buffer.isBuffer(a) || Array.isArray(a) || (typeof Uint8Array !== \"undefined\" && a instanceof Uint8Array); };\n}\n\n/* from js-xls */\nfunction cpdoit() {\n\t__utf16le = function(b/*:RawBytes|CFBlob*/,s/*:number*/,e/*:number*/) { return $cptable.utils.decode(1200, b.slice(s,e)).replace(chr0, ''); };\n\t__utf8 = function(b/*:RawBytes|CFBlob*/,s/*:number*/,e/*:number*/) { return $cptable.utils.decode(65001, b.slice(s,e)); };\n\t__lpstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(current_ansi, b.slice(i+4, i+4+len-1)) : \"\";};\n\t__cpstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(current_codepage, b.slice(i+4, i+4+len-1)) : \"\";};\n\t__lpwstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = 2*__readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(1200, b.slice(i+4,i+4+len-1)) : \"\";};\n\t__lpp4 = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(1200, b.slice(i+4,i+4+len)) : \"\";};\n\t__8lpp4 = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(65001, b.slice(i+4,i+4+len)) : \"\";};\n}\nif(typeof $cptable !== 'undefined') cpdoit();\n\nvar __readUInt8 = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return b[idx]; };\nvar __readUInt16LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return (b[idx+1]*(1<<8))+b[idx]; };\nvar __readInt16LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { var u = (b[idx+1]*(1<<8))+b[idx]; return (u < 0x8000) ? u : ((0xffff - u + 1) * -1); };\nvar __readUInt32LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return b[idx+3]*(1<<24)+(b[idx+2]<<16)+(b[idx+1]<<8)+b[idx]; };\nvar __readInt32LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return (b[idx+3]<<24)|(b[idx+2]<<16)|(b[idx+1]<<8)|b[idx]; };\nvar __readInt32BE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return (b[idx]<<24)|(b[idx+1]<<16)|(b[idx+2]<<8)|b[idx+3]; };\n\nfunction ReadShift(size/*:number*/, t/*:?string*/)/*:number|string*/ {\n\tvar o=\"\", oI/*:: :number = 0*/, oR, oo=[], w, vv, i, loc;\n\tswitch(t) {\n\t\tcase 'dbcs':\n\t\t\tloc = this.l;\n\t\t\tif(has_buf && Buffer.isBuffer(this)) o = this.slice(this.l, this.l+2*size).toString(\"utf16le\");\n\t\t\telse for(i = 0; i < size; ++i) { o+=String.fromCharCode(__readUInt16LE(this, loc)); loc+=2; }\n\t\t\tsize *= 2;\n\t\t\tbreak;\n\n\t\tcase 'utf8': o = __utf8(this, this.l, this.l + size); break;\n\t\tcase 'utf16le': size *= 2; o = __utf16le(this, this.l, this.l + size); break;\n\n\t\tcase 'wstr':\n\t\t\tif(typeof $cptable !== 'undefined') o = $cptable.utils.decode(current_codepage, this.slice(this.l, this.l+2*size));\n\t\t\telse return ReadShift.call(this, size, 'dbcs');\n\t\t\tsize = 2 * size; break;\n\n\t\t/* [MS-OLEDS] 2.1.4 LengthPrefixedAnsiString */\n\t\tcase 'lpstr-ansi': o = __lpstr(this, this.l); size = 4 + __readUInt32LE(this, this.l); break;\n\t\tcase 'lpstr-cp': o = __cpstr(this, this.l); size = 4 + __readUInt32LE(this, this.l); break;\n\t\t/* [MS-OLEDS] 2.1.5 LengthPrefixedUnicodeString */\n\t\tcase 'lpwstr': o = __lpwstr(this, this.l); size = 4 + 2 * __readUInt32LE(this, this.l); break;\n\t\t/* [MS-OFFCRYPTO] 2.1.2 Length-Prefixed Padded Unicode String (UNICODE-LP-P4) */\n\t\tcase 'lpp4': size = 4 + __readUInt32LE(this, this.l); o = __lpp4(this, this.l); if(size & 0x02) size += 2; break;\n\t\t/* [MS-OFFCRYPTO] 2.1.3 Length-Prefixed UTF-8 String (UTF-8-LP-P4) */\n\t\tcase '8lpp4': size = 4 + __readUInt32LE(this, this.l); o = __8lpp4(this, this.l); if(size & 0x03) size += 4 - (size & 0x03); break;\n\n\t\tcase 'cstr': size = 0; o = \"\";\n\t\t\twhile((w=__readUInt8(this, this.l + size++))!==0) oo.push(_getchar(w));\n\t\t\to = oo.join(\"\"); break;\n\t\tcase '_wstr': size = 0; o = \"\";\n\t\t\twhile((w=__readUInt16LE(this,this.l +size))!==0){oo.push(_getchar(w));size+=2;}\n\t\t\tsize+=2; o = oo.join(\"\"); break;\n\n\t\t/* sbcs and dbcs support continue records in the SST way TODO codepages */\n\t\tcase 'dbcs-cont': o = \"\"; loc = this.l;\n\t\t\tfor(i = 0; i < size; ++i) {\n\t\t\t\tif(this.lens && this.lens.indexOf(loc) !== -1) {\n\t\t\t\t\tw = __readUInt8(this, loc);\n\t\t\t\t\tthis.l = loc + 1;\n\t\t\t\t\tvv = ReadShift.call(this, size-i, w ? 'dbcs-cont' : 'sbcs-cont');\n\t\t\t\t\treturn oo.join(\"\") + vv;\n\t\t\t\t}\n\t\t\t\too.push(_getchar(__readUInt16LE(this, loc)));\n\t\t\t\tloc+=2;\n\t\t\t} o = oo.join(\"\"); size *= 2; break;\n\n\t\tcase 'cpstr':\n\t\t\tif(typeof $cptable !== 'undefined') {\n\t\t\t\to = $cptable.utils.decode(current_codepage, this.slice(this.l, this.l + size));\n\t\t\t\tbreak;\n\t\t\t}\n\t\t/* falls through */\n\t\tcase 'sbcs-cont': o = \"\"; loc = this.l;\n\t\t\tfor(i = 0; i != size; ++i) {\n\t\t\t\tif(this.lens && this.lens.indexOf(loc) !== -1) {\n\t\t\t\t\tw = __readUInt8(this, loc);\n\t\t\t\t\tthis.l = loc + 1;\n\t\t\t\t\tvv = ReadShift.call(this, size-i, w ? 'dbcs-cont' : 'sbcs-cont');\n\t\t\t\t\treturn oo.join(\"\") + vv;\n\t\t\t\t}\n\t\t\t\too.push(_getchar(__readUInt8(this, loc)));\n\t\t\t\tloc+=1;\n\t\t\t} o = oo.join(\"\"); break;\n\n\t\tdefault:\n\tswitch(size) {\n\t\tcase 1: oI = __readUInt8(this, this.l); this.l++; return oI;\n\t\tcase 2: oI = (t === 'i' ? __readInt16LE : __readUInt16LE)(this, this.l); this.l += 2; return oI;\n\t\tcase 4: case -4:\n\t\t\tif(t === 'i' || ((this[this.l+3] & 0x80)===0)) { oI = ((size > 0) ? __readInt32LE : __readInt32BE)(this, this.l); this.l += 4; return oI; }\n\t\t\telse { oR = __readUInt32LE(this, this.l); this.l += 4; } return oR;\n\t\tcase 8: case -8:\n\t\t\tif(t === 'f') {\n\t\t\t\tif(size == 8) oR = __double(this, this.l);\n\t\t\t\telse oR = __double([this[this.l+7],this[this.l+6],this[this.l+5],this[this.l+4],this[this.l+3],this[this.l+2],this[this.l+1],this[this.l+0]], 0);\n\t\t\t\tthis.l += 8; return oR;\n\t\t\t} else size = 8;\n\t\t/* falls through */\n\t\tcase 16: o = __hexlify(this, this.l, size); break;\n\t}}\n\tthis.l+=size; return o;\n}\n\nvar __writeUInt32LE = function(b/*:RawBytes|CFBlob*/, val/*:number*/, idx/*:number*/)/*:void*/ { b[idx] = (val & 0xFF); b[idx+1] = ((val >>> 8) & 0xFF); b[idx+2] = ((val >>> 16) & 0xFF); b[idx+3] = ((val >>> 24) & 0xFF); };\nvar __writeInt32LE = function(b/*:RawBytes|CFBlob*/, val/*:number*/, idx/*:number*/)/*:void*/ { b[idx] = (val & 0xFF); b[idx+1] = ((val >> 8) & 0xFF); b[idx+2] = ((val >> 16) & 0xFF); b[idx+3] = ((val >> 24) & 0xFF); };\nvar __writeUInt16LE = function(b/*:RawBytes|CFBlob*/, val/*:number*/, idx/*:number*/)/*:void*/ { b[idx] = (val & 0xFF); b[idx+1] = ((val >>> 8) & 0xFF); };\n\nfunction WriteShift(t/*:number*/, val/*:string|number*/, f/*:?string*/)/*:any*/ {\n\tvar size = 0, i = 0;\n\tif(f === 'dbcs') {\n\t\t/*:: if(typeof val !== 'string') throw new Error(\"unreachable\"); */\n\t\tfor(i = 0; i != val.length; ++i) __writeUInt16LE(this, val.charCodeAt(i), this.l + 2 * i);\n\t\tsize = 2 * val.length;\n\t} else if(f === 'sbcs') {\n\t\tif(typeof $cptable !== 'undefined' && current_ansi == 874) {\n\t\t\t/* TODO: use tables directly, don't encode */\n\t\t\t/*:: if(typeof val !== \"string\") throw new Error(\"unreachable\"); */\n\t\t\tfor(i = 0; i != val.length; ++i) {\n\t\t\t\tvar cppayload = $cptable.utils.encode(current_ansi, val.charAt(i));\n\t\t\t\tthis[this.l + i] = cppayload[0];\n\t\t\t}\n\t\t} else {\n\t\t\t/*:: if(typeof val !== 'string') throw new Error(\"unreachable\"); */\n\t\t\tval = val.replace(/[^\\x00-\\x7F]/g, \"_\");\n\t\t\t/*:: if(typeof val !== 'string') throw new Error(\"unreachable\"); */\n\t\t\tfor(i = 0; i != val.length; ++i) this[this.l + i] = (val.charCodeAt(i) & 0xFF);\n\t\t}\n\t\tsize = val.length;\n\t} else if(f === 'hex') {\n\t\tfor(; i < t; ++i) {\n\t\t\t/*:: if(typeof val !== \"string\") throw new Error(\"unreachable\"); */\n\t\t\tthis[this.l++] = (parseInt(val.slice(2*i, 2*i+2), 16)||0);\n\t\t} return this;\n\t} else if(f === 'utf16le') {\n\t\t\t/*:: if(typeof val !== \"string\") throw new Error(\"unreachable\"); */\n\t\t\tvar end/*:number*/ = Math.min(this.l + t, this.length);\n\t\t\tfor(i = 0; i < Math.min(val.length, t); ++i) {\n\t\t\t\tvar cc = val.charCodeAt(i);\n\t\t\t\tthis[this.l++] = (cc & 0xff);\n\t\t\t\tthis[this.l++] = (cc >> 8);\n\t\t\t}\n\t\t\twhile(this.l < end) this[this.l++] = 0;\n\t\t\treturn this;\n\t} else /*:: if(typeof val === 'number') */ switch(t) {\n\t\tcase 1: size = 1; this[this.l] = val&0xFF; break;\n\t\tcase 2: size = 2; this[this.l] = val&0xFF; val >>>= 8; this[this.l+1] = val&0xFF; break;\n\t\tcase 3: size = 3; this[this.l] = val&0xFF; val >>>= 8; this[this.l+1] = val&0xFF; val >>>= 8; this[this.l+2] = val&0xFF; break;\n\t\tcase 4: size = 4; __writeUInt32LE(this, val, this.l); break;\n\t\tcase 8: size = 8; if(f === 'f') { write_double_le(this, val, this.l); break; }\n\t\t/* falls through */\n\t\tcase 16: break;\n\t\tcase -4: size = 4; __writeInt32LE(this, val, this.l); break;\n\t}\n\tthis.l += size; return this;\n}\n\nfunction CheckField(hexstr/*:string*/, fld/*:string*/)/*:void*/ {\n\tvar m = __hexlify(this,this.l,hexstr.length>>1);\n\tif(m !== hexstr) throw new Error(fld + 'Expected ' + hexstr + ' saw ' + m);\n\tthis.l += hexstr.length>>1;\n}\n\nfunction prep_blob(blob, pos/*:number*/)/*:void*/ {\n\tblob.l = pos;\n\tblob.read_shift = /*::(*/ReadShift/*:: :any)*/;\n\tblob.chk = CheckField;\n\tblob.write_shift = WriteShift;\n}\n\nfunction parsenoop(blob, length/*:: :number, opts?:any */) { blob.l += length; }\n\nfunction new_buf(sz/*:number*/)/*:Block*/ {\n\tvar o = new_raw_buf(sz);\n\tprep_blob(o, 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.1.4 Record */\nfunction recordhopper(data, cb/*:RecordHopperCB*/, opts/*:?any*/) {\n\tif(!data) return;\n\tvar tmpbyte, cntbyte, length;\n\tprep_blob(data, data.l || 0);\n\tvar L = data.length, RT = 0, tgt = 0;\n\twhile(data.l < L) {\n\t\tRT = data.read_shift(1);\n\t\tif(RT & 0x80) RT = (RT & 0x7F) + ((data.read_shift(1) & 0x7F)<<7);\n\t\tvar R = XLSBRecordEnum[RT] || XLSBRecordEnum[0xFFFF];\n\t\ttmpbyte = data.read_shift(1);\n\t\tlength = tmpbyte & 0x7F;\n\t\tfor(cntbyte = 1; cntbyte <4 && (tmpbyte & 0x80); ++cntbyte) length += ((tmpbyte = data.read_shift(1)) & 0x7F)<<(7*cntbyte);\n\t\ttgt = data.l + length;\n\t\tvar d = R.f && R.f(data, length, opts);\n\t\tdata.l = tgt;\n\t\tif(cb(d, R, RT)) return;\n\t}\n}\n\n/* control buffer usage for fixed-length buffers */\nfunction buf_array()/*:BufArray*/ {\n\tvar bufs/*:Array*/ = [], blksz = has_buf ? 256 : 2048;\n\tvar newblk = function ba_newblk(sz/*:number*/)/*:Block*/ {\n\t\tvar o/*:Block*/ = (new_buf(sz)/*:any*/);\n\t\tprep_blob(o, 0);\n\t\treturn o;\n\t};\n\n\tvar curbuf/*:Block*/ = newblk(blksz);\n\n\tvar endbuf = function ba_endbuf() {\n\t\tif(!curbuf) return;\n\t\tif(curbuf.length > curbuf.l) { curbuf = curbuf.slice(0, curbuf.l); curbuf.l = curbuf.length; }\n\t\tif(curbuf.length > 0) bufs.push(curbuf);\n\t\tcurbuf = null;\n\t};\n\n\tvar next = function ba_next(sz/*:number*/)/*:Block*/ {\n\t\tif(curbuf && (sz < (curbuf.length - curbuf.l))) return curbuf;\n\t\tendbuf();\n\t\treturn (curbuf = newblk(Math.max(sz+1, blksz)));\n\t};\n\n\tvar end = function ba_end() {\n\t\tendbuf();\n\t\treturn bconcat(bufs);\n\t};\n\n\tvar push = function ba_push(buf) { endbuf(); curbuf = buf; if(curbuf.l == null) curbuf.l = curbuf.length; next(blksz); };\n\n\treturn ({ next:next, push:push, end:end, _bufs:bufs }/*:any*/);\n}\n\nfunction write_record(ba/*:BufArray*/, type/*:number*/, payload, length/*:?number*/) {\n\tvar t/*:number*/ = +type, l;\n\tif(isNaN(t)) return; // TODO: throw something here?\n\tif(!length) length = XLSBRecordEnum[t].p || (payload||[]).length || 0;\n\tl = 1 + (t >= 0x80 ? 1 : 0) + 1/* + length*/;\n\tif(length >= 0x80) ++l; if(length >= 0x4000) ++l; if(length >= 0x200000) ++l;\n\tvar o = ba.next(l);\n\tif(t <= 0x7F) o.write_shift(1, t);\n\telse {\n\t\to.write_shift(1, (t & 0x7F) + 0x80);\n\t\to.write_shift(1, (t >> 7));\n\t}\n\tfor(var i = 0; i != 4; ++i) {\n\t\tif(length >= 0x80) { o.write_shift(1, (length & 0x7F)+0x80); length >>= 7; }\n\t\telse { o.write_shift(1, length); break; }\n\t}\n\tif(/*:: length != null &&*/length > 0 && is_buf(payload)) ba.push(payload);\n}\n/* XLS ranges enforced */\nfunction shift_cell_xls(cell/*:CellAddress*/, tgt/*:any*/, opts/*:?any*/)/*:CellAddress*/ {\n\tvar out = dup(cell);\n\tif(tgt.s) {\n\t\tif(out.cRel) out.c += tgt.s.c;\n\t\tif(out.rRel) out.r += tgt.s.r;\n\t} else {\n\t\tif(out.cRel) out.c += tgt.c;\n\t\tif(out.rRel) out.r += tgt.r;\n\t}\n\tif(!opts || opts.biff < 12) {\n\t\twhile(out.c >= 0x100) out.c -= 0x100;\n\t\twhile(out.r >= 0x10000) out.r -= 0x10000;\n\t}\n\treturn out;\n}\n\nfunction shift_range_xls(cell, range, opts) {\n\tvar out = dup(cell);\n\tout.s = shift_cell_xls(out.s, range.s, opts);\n\tout.e = shift_cell_xls(out.e, range.s, opts);\n\treturn out;\n}\n\nfunction encode_cell_xls(c/*:CellAddress*/, biff/*:number*/)/*:string*/ {\n\tif(c.cRel && c.c < 0) { c = dup(c); while(c.c < 0) c.c += (biff > 8) ? 0x4000 : 0x100; }\n\tif(c.rRel && c.r < 0) { c = dup(c); while(c.r < 0) c.r += (biff > 8) ? 0x100000 : ((biff > 5) ? 0x10000 : 0x4000); }\n\tvar s = encode_cell(c);\n\tif(!c.cRel && c.cRel != null) s = fix_col(s);\n\tif(!c.rRel && c.rRel != null) s = fix_row(s);\n\treturn s;\n}\n\nfunction encode_range_xls(r, opts)/*:string*/ {\n\tif(r.s.r == 0 && !r.s.rRel) {\n\t\tif(r.e.r == (opts.biff >= 12 ? 0xFFFFF : (opts.biff >= 8 ? 0x10000 : 0x4000)) && !r.e.rRel) {\n\t\t\treturn (r.s.cRel ? \"\" : \"$\") + encode_col(r.s.c) + \":\" + (r.e.cRel ? \"\" : \"$\") + encode_col(r.e.c);\n\t\t}\n\t}\n\tif(r.s.c == 0 && !r.s.cRel) {\n\t\tif(r.e.c == (opts.biff >= 12 ? 0x3FFF : 0xFF) && !r.e.cRel) {\n\t\t\treturn (r.s.rRel ? \"\" : \"$\") + encode_row(r.s.r) + \":\" + (r.e.rRel ? \"\" : \"$\") + encode_row(r.e.r);\n\t\t}\n\t}\n\treturn encode_cell_xls(r.s, opts.biff) + \":\" + encode_cell_xls(r.e, opts.biff);\n}\nfunction decode_row(rowstr/*:string*/)/*:number*/ { return parseInt(unfix_row(rowstr),10) - 1; }\nfunction encode_row(row/*:number*/)/*:string*/ { return \"\" + (row + 1); }\nfunction fix_row(cstr/*:string*/)/*:string*/ { return cstr.replace(/([A-Z]|^)(\\d+)$/,\"$1$$$2\"); }\nfunction unfix_row(cstr/*:string*/)/*:string*/ { return cstr.replace(/\\$(\\d+)$/,\"$1\"); }\n\nfunction decode_col(colstr/*:string*/)/*:number*/ { var c = unfix_col(colstr), d = 0, i = 0; for(; i !== c.length; ++i) d = 26*d + c.charCodeAt(i) - 64; return d - 1; }\nfunction encode_col(col/*:number*/)/*:string*/ { if(col < 0) throw new Error(\"invalid column \" + col); var s=\"\"; for(++col; col; col=Math.floor((col-1)/26)) s = String.fromCharCode(((col-1)%26) + 65) + s; return s; }\nfunction fix_col(cstr/*:string*/)/*:string*/ { return cstr.replace(/^([A-Z])/,\"$$$1\"); }\nfunction unfix_col(cstr/*:string*/)/*:string*/ { return cstr.replace(/^\\$([A-Z])/,\"$1\"); }\n\nfunction split_cell(cstr/*:string*/)/*:Array*/ { return cstr.replace(/(\\$?[A-Z]*)(\\$?\\d*)/,\"$1,$2\").split(\",\"); }\n//function decode_cell(cstr/*:string*/)/*:CellAddress*/ { var splt = split_cell(cstr); return { c:decode_col(splt[0]), r:decode_row(splt[1]) }; }\nfunction decode_cell(cstr/*:string*/)/*:CellAddress*/ {\n\tvar R = 0, C = 0;\n\tfor(var i = 0; i < cstr.length; ++i) {\n\t\tvar cc = cstr.charCodeAt(i);\n\t\tif(cc >= 48 && cc <= 57) R = 10 * R + (cc - 48);\n\t\telse if(cc >= 65 && cc <= 90) C = 26 * C + (cc - 64);\n\t}\n\treturn { c: C - 1, r:R - 1 };\n}\n//function encode_cell(cell/*:CellAddress*/)/*:string*/ { return encode_col(cell.c) + encode_row(cell.r); }\nfunction encode_cell(cell/*:CellAddress*/)/*:string*/ {\n\tvar col = cell.c + 1;\n\tvar s=\"\";\n\tfor(; col; col=((col-1)/26)|0) s = String.fromCharCode(((col-1)%26) + 65) + s;\n\treturn s + (cell.r + 1);\n}\nfunction decode_range(range/*:string*/)/*:Range*/ {\n\tvar idx = range.indexOf(\":\");\n\tif(idx == -1) return { s: decode_cell(range), e: decode_cell(range) };\n\treturn { s: decode_cell(range.slice(0, idx)), e: decode_cell(range.slice(idx + 1)) };\n}\n/*# if only one arg, it is assumed to be a Range. If 2 args, both are cell addresses */\nfunction encode_range(cs/*:CellAddrSpec|Range*/,ce/*:?CellAddrSpec*/)/*:string*/ {\n\tif(typeof ce === 'undefined' || typeof ce === 'number') {\n/*:: if(!(cs instanceof Range)) throw \"unreachable\"; */\n\t\treturn encode_range(cs.s, cs.e);\n\t}\n/*:: if((cs instanceof Range)) throw \"unreachable\"; */\n\tif(typeof cs !== 'string') cs = encode_cell((cs/*:any*/));\n\tif(typeof ce !== 'string') ce = encode_cell((ce/*:any*/));\n/*:: if(typeof cs !== 'string') throw \"unreachable\"; */\n/*:: if(typeof ce !== 'string') throw \"unreachable\"; */\n\treturn cs == ce ? cs : cs + \":\" + ce;\n}\n\nfunction safe_decode_range(range/*:string*/)/*:Range*/ {\n\tvar o = {s:{c:0,r:0},e:{c:0,r:0}};\n\tvar idx = 0, i = 0, cc = 0;\n\tvar len = range.length;\n\tfor(idx = 0; i < len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-64) < 1 || cc > 26) break;\n\t\tidx = 26*idx + cc;\n\t}\n\to.s.c = --idx;\n\n\tfor(idx = 0; i < len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-48) < 0 || cc > 9) break;\n\t\tidx = 10*idx + cc;\n\t}\n\to.s.r = --idx;\n\n\tif(i === len || cc != 10) { o.e.c=o.s.c; o.e.r=o.s.r; return o; }\n\t++i;\n\n\tfor(idx = 0; i != len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-64) < 1 || cc > 26) break;\n\t\tidx = 26*idx + cc;\n\t}\n\to.e.c = --idx;\n\n\tfor(idx = 0; i != len; ++i) {\n\t\tif((cc=range.charCodeAt(i)-48) < 0 || cc > 9) break;\n\t\tidx = 10*idx + cc;\n\t}\n\to.e.r = --idx;\n\treturn o;\n}\n\nfunction safe_format_cell(cell/*:Cell*/, v/*:any*/) {\n\tvar q = (cell.t == 'd' && v instanceof Date);\n\tif(cell.z != null) try { return (cell.w = SSF_format(cell.z, q ? datenum(v) : v)); } catch(e) { }\n\ttry { return (cell.w = SSF_format((cell.XF||{}).numFmtId||(q ? 14 : 0), q ? datenum(v) : v)); } catch(e) { return ''+v; }\n}\n\nfunction format_cell(cell/*:Cell*/, v/*:any*/, o/*:any*/) {\n\tif(cell == null || cell.t == null || cell.t == 'z') return \"\";\n\tif(cell.w !== undefined) return cell.w;\n\tif(cell.t == 'd' && !cell.z && o && o.dateNF) cell.z = o.dateNF;\n\tif(cell.t == \"e\") return BErr[cell.v] || cell.v;\n\tif(v == undefined) return safe_format_cell(cell, cell.v);\n\treturn safe_format_cell(cell, v);\n}\n\nfunction sheet_to_workbook(sheet/*:Worksheet*/, opts)/*:Workbook*/ {\n\tvar n = opts && opts.sheet ? opts.sheet : \"Sheet1\";\n\tvar sheets = {}; sheets[n] = sheet;\n\treturn { SheetNames: [n], Sheets: sheets };\n}\n\nfunction sheet_add_aoa(_ws/*:?Worksheet*/, data/*:AOA*/, opts/*:?any*/)/*:Worksheet*/ {\n\tvar o = opts || {};\n\tvar dense = _ws ? Array.isArray(_ws) : o.dense;\n\tif(DENSE != null && dense == null) dense = DENSE;\n\tvar ws/*:Worksheet*/ = _ws || (dense ? ([]/*:any*/) : ({}/*:any*/));\n\tvar _R = 0, _C = 0;\n\tif(ws && o.origin != null) {\n\t\tif(typeof o.origin == 'number') _R = o.origin;\n\t\telse {\n\t\t\tvar _origin/*:CellAddress*/ = typeof o.origin == \"string\" ? decode_cell(o.origin) : o.origin;\n\t\t\t_R = _origin.r; _C = _origin.c;\n\t\t}\n\t\tif(!ws[\"!ref\"]) ws[\"!ref\"] = \"A1:A1\";\n\t}\n\tvar range/*:Range*/ = ({s: {c:10000000, r:10000000}, e: {c:0, r:0}}/*:any*/);\n\tif(ws['!ref']) {\n\t\tvar _range = safe_decode_range(ws['!ref']);\n\t\trange.s.c = _range.s.c;\n\t\trange.s.r = _range.s.r;\n\t\trange.e.c = Math.max(range.e.c, _range.e.c);\n\t\trange.e.r = Math.max(range.e.r, _range.e.r);\n\t\tif(_R == -1) range.e.r = _R = _range.e.r + 1;\n\t}\n\tfor(var R = 0; R != data.length; ++R) {\n\t\tif(!data[R]) continue;\n\t\tif(!Array.isArray(data[R])) throw new Error(\"aoa_to_sheet expects an array of arrays\");\n\t\tfor(var C = 0; C != data[R].length; ++C) {\n\t\t\tif(typeof data[R][C] === 'undefined') continue;\n\t\t\tvar cell/*:Cell*/ = ({v: data[R][C] }/*:any*/);\n\t\t\tvar __R = _R + R, __C = _C + C;\n\t\t\tif(range.s.r > __R) range.s.r = __R;\n\t\t\tif(range.s.c > __C) range.s.c = __C;\n\t\t\tif(range.e.r < __R) range.e.r = __R;\n\t\t\tif(range.e.c < __C) range.e.c = __C;\n\t\t\tif(data[R][C] && typeof data[R][C] === 'object' && !Array.isArray(data[R][C]) && !(data[R][C] instanceof Date)) cell = data[R][C];\n\t\t\telse {\n\t\t\t\tif(Array.isArray(cell.v)) { cell.f = data[R][C][1]; cell.v = cell.v[0]; }\n\t\t\t\tif(cell.v === null) {\n\t\t\t\t\tif(cell.f) cell.t = 'n';\n\t\t\t\t\telse if(o.nullError) { cell.t = 'e'; cell.v = 0; }\n\t\t\t\t\telse if(!o.sheetStubs) continue;\n\t\t\t\t\telse cell.t = 'z';\n\t\t\t\t}\n\t\t\t\telse if(typeof cell.v === 'number') cell.t = 'n';\n\t\t\t\telse if(typeof cell.v === 'boolean') cell.t = 'b';\n\t\t\t\telse if(cell.v instanceof Date) {\n\t\t\t\t\tcell.z = o.dateNF || table_fmt[14];\n\t\t\t\t\tif(o.cellDates) { cell.t = 'd'; cell.w = SSF_format(cell.z, datenum(cell.v)); }\n\t\t\t\t\telse { cell.t = 'n'; cell.v = datenum(cell.v); cell.w = SSF_format(cell.z, cell.v); }\n\t\t\t\t}\n\t\t\t\telse cell.t = 's';\n\t\t\t}\n\t\t\tif(dense) {\n\t\t\t\tif(!ws[__R]) ws[__R] = [];\n\t\t\t\tif(ws[__R][__C] && ws[__R][__C].z) cell.z = ws[__R][__C].z;\n\t\t\t\tws[__R][__C] = cell;\n\t\t\t} else {\n\t\t\t\tvar cell_ref = encode_cell(({c:__C,r:__R}/*:any*/));\n\t\t\t\tif(ws[cell_ref] && ws[cell_ref].z) cell.z = ws[cell_ref].z;\n\t\t\t\tws[cell_ref] = cell;\n\t\t\t}\n\t\t}\n\t}\n\tif(range.s.c < 10000000) ws['!ref'] = encode_range(range);\n\treturn ws;\n}\nfunction aoa_to_sheet(data/*:AOA*/, opts/*:?any*/)/*:Worksheet*/ { return sheet_add_aoa(null, data, opts); }\n\nfunction parse_Int32LE(data) {\n\treturn data.read_shift(4, 'i');\n}\nfunction write_UInt32LE(x/*:number*/, o) {\n\tif (!o) o = new_buf(4);\n\to.write_shift(4, x);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.168 */\nfunction parse_XLWideString(data/*::, length*/)/*:string*/ {\n\tvar cchCharacters = data.read_shift(4);\n\treturn cchCharacters === 0 ? \"\" : data.read_shift(cchCharacters, 'dbcs');\n}\nfunction write_XLWideString(data/*:string*/, o) {\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(4 + 2 * data.length); }\n\to.write_shift(4, data.length);\n\tif (data.length > 0) o.write_shift(0, data, 'dbcs');\n\treturn _null ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.5.91 */\n//function parse_LPWideString(data/*::, length*/)/*:string*/ {\n//\tvar cchCharacters = data.read_shift(2);\n//\treturn cchCharacters === 0 ? \"\" : data.read_shift(cchCharacters, \"utf16le\");\n//}\n\n/* [MS-XLSB] 2.5.143 */\nfunction parse_StrRun(data) {\n\treturn { ich: data.read_shift(2), ifnt: data.read_shift(2) };\n}\nfunction write_StrRun(run, o) {\n\tif (!o) o = new_buf(4);\n\to.write_shift(2, run.ich || 0);\n\to.write_shift(2, run.ifnt || 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.121 */\nfunction parse_RichStr(data, length/*:number*/)/*:XLString*/ {\n\tvar start = data.l;\n\tvar flags = data.read_shift(1);\n\tvar str = parse_XLWideString(data);\n\tvar rgsStrRun = [];\n\tvar z = ({ t: str, h: str }/*:any*/);\n\tif ((flags & 1) !== 0) { /* fRichStr */\n\t\t/* TODO: formatted string */\n\t\tvar dwSizeStrRun = data.read_shift(4);\n\t\tfor (var i = 0; i != dwSizeStrRun; ++i) rgsStrRun.push(parse_StrRun(data));\n\t\tz.r = rgsStrRun;\n\t}\n\telse z.r = [{ ich: 0, ifnt: 0 }];\n\t//if((flags & 2) !== 0) { /* fExtStr */\n\t//\t/* TODO: phonetic string */\n\t//}\n\tdata.l = start + length;\n\treturn z;\n}\nfunction write_RichStr(str/*:XLString*/, o/*:?Block*/)/*:Block*/ {\n\t/* TODO: formatted string */\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(15 + 4 * str.t.length); }\n\to.write_shift(1, 0);\n\twrite_XLWideString(str.t, o);\n\treturn _null ? o.slice(0, o.l) : o;\n}\n/* [MS-XLSB] 2.4.328 BrtCommentText (RichStr w/1 run) */\nvar parse_BrtCommentText = parse_RichStr;\nfunction write_BrtCommentText(str/*:XLString*/, o/*:?Block*/)/*:Block*/ {\n\t/* TODO: formatted string */\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(23 + 4 * str.t.length); }\n\to.write_shift(1, 1);\n\twrite_XLWideString(str.t, o);\n\to.write_shift(4, 1);\n\twrite_StrRun({ ich: 0, ifnt: 0 }, o);\n\treturn _null ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.5.9 */\nfunction parse_XLSBCell(data)/*:any*/ {\n\tvar col = data.read_shift(4);\n\tvar iStyleRef = data.read_shift(2);\n\tiStyleRef += data.read_shift(1) << 16;\n\tdata.l++; //var fPhShow = data.read_shift(1);\n\treturn { c: col, iStyleRef: iStyleRef };\n}\nfunction write_XLSBCell(cell/*:any*/, o/*:?Block*/) {\n\tif (o == null) o = new_buf(8);\n\to.write_shift(-4, cell.c);\n\to.write_shift(3, cell.iStyleRef || cell.s);\n\to.write_shift(1, 0); /* fPhShow */\n\treturn o;\n}\n\n/* Short XLSB Cell does not include column */\nfunction parse_XLSBShortCell(data)/*:any*/ {\n\tvar iStyleRef = data.read_shift(2);\n\tiStyleRef += data.read_shift(1) <<16;\n\tdata.l++; //var fPhShow = data.read_shift(1);\n\treturn { c:-1, iStyleRef: iStyleRef };\n}\nfunction write_XLSBShortCell(cell/*:any*/, o/*:?Block*/) {\n\tif(o == null) o = new_buf(4);\n\to.write_shift(3, cell.iStyleRef || cell.s);\n\to.write_shift(1, 0); /* fPhShow */\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.21 */\nvar parse_XLSBCodeName = parse_XLWideString;\nvar write_XLSBCodeName = write_XLWideString;\n\n/* [MS-XLSB] 2.5.166 */\nfunction parse_XLNullableWideString(data/*::, length*/)/*:string*/ {\n\tvar cchCharacters = data.read_shift(4);\n\treturn cchCharacters === 0 || cchCharacters === 0xFFFFFFFF ? \"\" : data.read_shift(cchCharacters, 'dbcs');\n}\nfunction write_XLNullableWideString(data/*:string*/, o) {\n\tvar _null = false; if (o == null) { _null = true; o = new_buf(127); }\n\to.write_shift(4, data.length > 0 ? data.length : 0xFFFFFFFF);\n\tif (data.length > 0) o.write_shift(0, data, 'dbcs');\n\treturn _null ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.5.165 */\nvar parse_XLNameWideString = parse_XLWideString;\n//var write_XLNameWideString = write_XLWideString;\n\n/* [MS-XLSB] 2.5.114 */\nvar parse_RelID = parse_XLNullableWideString;\nvar write_RelID = write_XLNullableWideString;\n\n\n/* [MS-XLS] 2.5.217 ; [MS-XLSB] 2.5.122 */\nfunction parse_RkNumber(data)/*:number*/ {\n\tvar b = data.slice(data.l, data.l + 4);\n\tvar fX100 = (b[0] & 1), fInt = (b[0] & 2);\n\tdata.l += 4;\n\tvar RK = fInt === 0 ? __double([0, 0, 0, 0, (b[0] & 0xFC), b[1], b[2], b[3]], 0) : __readInt32LE(b, 0) >> 2;\n\treturn fX100 ? (RK / 100) : RK;\n}\nfunction write_RkNumber(data/*:number*/, o) {\n\tif (o == null) o = new_buf(4);\n\tvar fX100 = 0, fInt = 0, d100 = data * 100;\n\tif ((data == (data | 0)) && (data >= -(1 << 29)) && (data < (1 << 29))) { fInt = 1; }\n\telse if ((d100 == (d100 | 0)) && (d100 >= -(1 << 29)) && (d100 < (1 << 29))) { fInt = 1; fX100 = 1; }\n\tif (fInt) o.write_shift(-4, ((fX100 ? d100 : data) << 2) + (fX100 + 2));\n\telse throw new Error(\"unsupported RkNumber \" + data); // TODO\n}\n\n\n/* [MS-XLSB] 2.5.117 RfX */\nfunction parse_RfX(data /*::, length*/)/*:Range*/ {\n\tvar cell/*:Range*/ = ({ s: {}, e: {} }/*:any*/);\n\tcell.s.r = data.read_shift(4);\n\tcell.e.r = data.read_shift(4);\n\tcell.s.c = data.read_shift(4);\n\tcell.e.c = data.read_shift(4);\n\treturn cell;\n}\nfunction write_RfX(r/*:Range*/, o) {\n\tif (!o) o = new_buf(16);\n\to.write_shift(4, r.s.r);\n\to.write_shift(4, r.e.r);\n\to.write_shift(4, r.s.c);\n\to.write_shift(4, r.e.c);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.153 UncheckedRfX */\nvar parse_UncheckedRfX = parse_RfX;\nvar write_UncheckedRfX = write_RfX;\n\n/* [MS-XLSB] 2.5.155 UncheckedSqRfX */\n//function parse_UncheckedSqRfX(data) {\n//\tvar cnt = data.read_shift(4);\n//\tvar out = [];\n//\tfor(var i = 0; i < cnt; ++i) {\n//\t\tvar rng = parse_UncheckedRfX(data);\n//\t\tout.push(encode_range(rng));\n//\t}\n//\treturn out.join(\",\");\n//}\n//function write_UncheckedSqRfX(sqrfx/*:string*/) {\n//\tvar parts = sqrfx.split(/\\s*,\\s*/);\n//\tvar o = new_buf(4); o.write_shift(4, parts.length);\n//\tvar out = [o];\n//\tparts.forEach(function(rng) {\n//\t\tout.push(write_UncheckedRfX(safe_decode_range(rng)));\n//\t});\n//\treturn bconcat(out);\n//}\n\n/* [MS-XLS] 2.5.342 ; [MS-XLSB] 2.5.171 */\n/* TODO: error checking, NaN and Infinity values are not valid Xnum */\nfunction parse_Xnum(data/*::, length*/) {\n\tif(data.length - data.l < 8) throw \"XLS Xnum Buffer underflow\";\n\treturn data.read_shift(8, 'f');\n}\nfunction write_Xnum(data, o) { return (o || new_buf(8)).write_shift(8, data, 'f'); }\n\n/* [MS-XLSB] 2.4.324 BrtColor */\nfunction parse_BrtColor(data/*::, length*/) {\n\tvar out = {};\n\tvar d = data.read_shift(1);\n\n\t//var fValidRGB = d & 1;\n\tvar xColorType = d >>> 1;\n\n\tvar index = data.read_shift(1);\n\tvar nTS = data.read_shift(2, 'i');\n\tvar bR = data.read_shift(1);\n\tvar bG = data.read_shift(1);\n\tvar bB = data.read_shift(1);\n\tdata.l++; //var bAlpha = data.read_shift(1);\n\n\tswitch (xColorType) {\n\t\tcase 0: out.auto = 1; break;\n\t\tcase 1:\n\t\t\tout.index = index;\n\t\t\tvar icv = XLSIcv[index];\n\t\t\t/* automatic pseudo index 81 */\n\t\t\tif (icv) out.rgb = rgb2Hex(icv);\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\t/* if(!fValidRGB) throw new Error(\"invalid\"); */\n\t\t\tout.rgb = rgb2Hex([bR, bG, bB]);\n\t\t\tbreak;\n\t\tcase 3: out.theme = index; break;\n\t}\n\tif (nTS != 0) out.tint = nTS > 0 ? nTS / 32767 : nTS / 32768;\n\n\treturn out;\n}\nfunction write_BrtColor(color, o) {\n\tif (!o) o = new_buf(8);\n\tif (!color || color.auto) { o.write_shift(4, 0); o.write_shift(4, 0); return o; }\n\tif (color.index != null) {\n\t\to.write_shift(1, 0x02);\n\t\to.write_shift(1, color.index);\n\t} else if (color.theme != null) {\n\t\to.write_shift(1, 0x06);\n\t\to.write_shift(1, color.theme);\n\t} else {\n\t\to.write_shift(1, 0x05);\n\t\to.write_shift(1, 0);\n\t}\n\tvar nTS = color.tint || 0;\n\tif (nTS > 0) nTS *= 32767;\n\telse if (nTS < 0) nTS *= 32768;\n\to.write_shift(2, nTS);\n\tif (!color.rgb || color.theme != null) {\n\t\to.write_shift(2, 0);\n\t\to.write_shift(1, 0);\n\t\to.write_shift(1, 0);\n\t} else {\n\t\tvar rgb = (color.rgb || 'FFFFFF');\n\t\tif (typeof rgb == 'number') rgb = (\"000000\" + rgb.toString(16)).slice(-6);\n\t\to.write_shift(1, parseInt(rgb.slice(0, 2), 16));\n\t\to.write_shift(1, parseInt(rgb.slice(2, 4), 16));\n\t\to.write_shift(1, parseInt(rgb.slice(4, 6), 16));\n\t\to.write_shift(1, 0xFF);\n\t}\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.52 */\nfunction parse_FontFlags(data/*::, length, opts*/) {\n\tvar d = data.read_shift(1);\n\tdata.l++;\n\tvar out = {\n\t\tfBold: d & 0x01,\n\t\tfItalic: d & 0x02,\n\t\tfUnderline: d & 0x04,\n\t\tfStrikeout: d & 0x08,\n\t\tfOutline: d & 0x10,\n\t\tfShadow: d & 0x20,\n\t\tfCondense: d & 0x40,\n\t\tfExtend: d & 0x80\n\t};\n\treturn out;\n}\nfunction write_FontFlags(font, o) {\n\tif (!o) o = new_buf(2);\n\tvar grbit =\n\t\t(font.italic ? 0x02 : 0) |\n\t\t(font.strike ? 0x08 : 0) |\n\t\t(font.outline ? 0x10 : 0) |\n\t\t(font.shadow ? 0x20 : 0) |\n\t\t(font.condense ? 0x40 : 0) |\n\t\t(font.extend ? 0x80 : 0);\n\to.write_shift(1, grbit);\n\to.write_shift(1, 0);\n\treturn o;\n}\n\n/* [MS-OLEDS] 2.3.1 and 2.3.2 */\nfunction parse_ClipboardFormatOrString(o, w/*:number*/)/*:string*/ {\n\t// $FlowIgnore\n\tvar ClipFmt = { 2: \"BITMAP\", 3: \"METAFILEPICT\", 8: \"DIB\", 14: \"ENHMETAFILE\" };\n\tvar m/*:number*/ = o.read_shift(4);\n\tswitch (m) {\n\t\tcase 0x00000000: return \"\";\n\t\tcase 0xffffffff: case 0xfffffffe: return ClipFmt[o.read_shift(4)] || \"\";\n\t}\n\tif (m > 0x190) throw new Error(\"Unsupported Clipboard: \" + m.toString(16));\n\to.l -= 4;\n\treturn o.read_shift(0, w == 1 ? \"lpstr\" : \"lpwstr\");\n}\nfunction parse_ClipboardFormatOrAnsiString(o) { return parse_ClipboardFormatOrString(o, 1); }\nfunction parse_ClipboardFormatOrUnicodeString(o) { return parse_ClipboardFormatOrString(o, 2); }\n\n/* [MS-OLEPS] 2.2 PropertyType */\n// Note: some tree shakers cannot handle VT_VECTOR | $CONST, hence extra vars\n//var VT_EMPTY = 0x0000;\n//var VT_NULL = 0x0001;\nvar VT_I2 = 0x0002;\nvar VT_I4 = 0x0003;\n//var VT_R4 = 0x0004;\n//var VT_R8 = 0x0005;\n//var VT_CY = 0x0006;\n//var VT_DATE = 0x0007;\n//var VT_BSTR = 0x0008;\n//var VT_ERROR = 0x000A;\nvar VT_BOOL = 0x000B;\nvar VT_VARIANT = 0x000C;\n//var VT_DECIMAL = 0x000E;\n//var VT_I1 = 0x0010;\n//var VT_UI1 = 0x0011;\n//var VT_UI2 = 0x0012;\nvar VT_UI4 = 0x0013;\n//var VT_I8 = 0x0014;\n//var VT_UI8 = 0x0015;\n//var VT_INT = 0x0016;\n//var VT_UINT = 0x0017;\nvar VT_LPSTR = 0x001E;\n//var VT_LPWSTR = 0x001F;\nvar VT_FILETIME = 0x0040;\nvar VT_BLOB = 0x0041;\n//var VT_STREAM = 0x0042;\n//var VT_STORAGE = 0x0043;\n//var VT_STREAMED_Object = 0x0044;\n//var VT_STORED_Object = 0x0045;\n//var VT_BLOB_Object = 0x0046;\nvar VT_CF = 0x0047;\n//var VT_CLSID = 0x0048;\n//var VT_VERSIONED_STREAM = 0x0049;\nvar VT_VECTOR = 0x1000;\nvar VT_VECTOR_VARIANT = 0x100C;\nvar VT_VECTOR_LPSTR = 0x101E;\n//var VT_ARRAY = 0x2000;\n\nvar VT_STRING = 0x0050; // 2.3.3.1.11 VtString\nvar VT_USTR = 0x0051; // 2.3.3.1.12 VtUnalignedString\nvar VT_CUSTOM = [VT_STRING, VT_USTR];\n\n/* [MS-OSHARED] 2.3.3.2.2.1 Document Summary Information PIDDSI */\nvar DocSummaryPIDDSI = {\n\t/*::[*/0x01/*::]*/: { n: 'CodePage', t: VT_I2 },\n\t/*::[*/0x02/*::]*/: { n: 'Category', t: VT_STRING },\n\t/*::[*/0x03/*::]*/: { n: 'PresentationFormat', t: VT_STRING },\n\t/*::[*/0x04/*::]*/: { n: 'ByteCount', t: VT_I4 },\n\t/*::[*/0x05/*::]*/: { n: 'LineCount', t: VT_I4 },\n\t/*::[*/0x06/*::]*/: { n: 'ParagraphCount', t: VT_I4 },\n\t/*::[*/0x07/*::]*/: { n: 'SlideCount', t: VT_I4 },\n\t/*::[*/0x08/*::]*/: { n: 'NoteCount', t: VT_I4 },\n\t/*::[*/0x09/*::]*/: { n: 'HiddenCount', t: VT_I4 },\n\t/*::[*/0x0a/*::]*/: { n: 'MultimediaClipCount', t: VT_I4 },\n\t/*::[*/0x0b/*::]*/: { n: 'ScaleCrop', t: VT_BOOL },\n\t/*::[*/0x0c/*::]*/: { n: 'HeadingPairs', t: VT_VECTOR_VARIANT /* VT_VECTOR | VT_VARIANT */ },\n\t/*::[*/0x0d/*::]*/: { n: 'TitlesOfParts', t: VT_VECTOR_LPSTR /* VT_VECTOR | VT_LPSTR */ },\n\t/*::[*/0x0e/*::]*/: { n: 'Manager', t: VT_STRING },\n\t/*::[*/0x0f/*::]*/: { n: 'Company', t: VT_STRING },\n\t/*::[*/0x10/*::]*/: { n: 'LinksUpToDate', t: VT_BOOL },\n\t/*::[*/0x11/*::]*/: { n: 'CharacterCount', t: VT_I4 },\n\t/*::[*/0x13/*::]*/: { n: 'SharedDoc', t: VT_BOOL },\n\t/*::[*/0x16/*::]*/: { n: 'HyperlinksChanged', t: VT_BOOL },\n\t/*::[*/0x17/*::]*/: { n: 'AppVersion', t: VT_I4, p: 'version' },\n\t/*::[*/0x18/*::]*/: { n: 'DigSig', t: VT_BLOB },\n\t/*::[*/0x1A/*::]*/: { n: 'ContentType', t: VT_STRING },\n\t/*::[*/0x1B/*::]*/: { n: 'ContentStatus', t: VT_STRING },\n\t/*::[*/0x1C/*::]*/: { n: 'Language', t: VT_STRING },\n\t/*::[*/0x1D/*::]*/: { n: 'Version', t: VT_STRING },\n\t/*::[*/0xFF/*::]*/: {},\n\t/* [MS-OLEPS] 2.18 */\n\t/*::[*/0x80000000/*::]*/: { n: 'Locale', t: VT_UI4 },\n\t/*::[*/0x80000003/*::]*/: { n: 'Behavior', t: VT_UI4 },\n\t/*::[*/0x72627262/*::]*/: {}\n};\n\n/* [MS-OSHARED] 2.3.3.2.1.1 Summary Information Property Set PIDSI */\nvar SummaryPIDSI = {\n\t/*::[*/0x01/*::]*/: { n: 'CodePage', t: VT_I2 },\n\t/*::[*/0x02/*::]*/: { n: 'Title', t: VT_STRING },\n\t/*::[*/0x03/*::]*/: { n: 'Subject', t: VT_STRING },\n\t/*::[*/0x04/*::]*/: { n: 'Author', t: VT_STRING },\n\t/*::[*/0x05/*::]*/: { n: 'Keywords', t: VT_STRING },\n\t/*::[*/0x06/*::]*/: { n: 'Comments', t: VT_STRING },\n\t/*::[*/0x07/*::]*/: { n: 'Template', t: VT_STRING },\n\t/*::[*/0x08/*::]*/: { n: 'LastAuthor', t: VT_STRING },\n\t/*::[*/0x09/*::]*/: { n: 'RevNumber', t: VT_STRING },\n\t/*::[*/0x0A/*::]*/: { n: 'EditTime', t: VT_FILETIME },\n\t/*::[*/0x0B/*::]*/: { n: 'LastPrinted', t: VT_FILETIME },\n\t/*::[*/0x0C/*::]*/: { n: 'CreatedDate', t: VT_FILETIME },\n\t/*::[*/0x0D/*::]*/: { n: 'ModifiedDate', t: VT_FILETIME },\n\t/*::[*/0x0E/*::]*/: { n: 'PageCount', t: VT_I4 },\n\t/*::[*/0x0F/*::]*/: { n: 'WordCount', t: VT_I4 },\n\t/*::[*/0x10/*::]*/: { n: 'CharCount', t: VT_I4 },\n\t/*::[*/0x11/*::]*/: { n: 'Thumbnail', t: VT_CF },\n\t/*::[*/0x12/*::]*/: { n: 'Application', t: VT_STRING },\n\t/*::[*/0x13/*::]*/: { n: 'DocSecurity', t: VT_I4 },\n\t/*::[*/0xFF/*::]*/: {},\n\t/* [MS-OLEPS] 2.18 */\n\t/*::[*/0x80000000/*::]*/: { n: 'Locale', t: VT_UI4 },\n\t/*::[*/0x80000003/*::]*/: { n: 'Behavior', t: VT_UI4 },\n\t/*::[*/0x72627262/*::]*/: {}\n};\n\n/* [MS-XLS] 2.4.63 Country/Region codes */\nvar CountryEnum = {\n\t/*::[*/0x0001/*::]*/: \"US\", // United States\n\t/*::[*/0x0002/*::]*/: \"CA\", // Canada\n\t/*::[*/0x0003/*::]*/: \"\", // Latin America (except Brazil)\n\t/*::[*/0x0007/*::]*/: \"RU\", // Russia\n\t/*::[*/0x0014/*::]*/: \"EG\", // Egypt\n\t/*::[*/0x001E/*::]*/: \"GR\", // Greece\n\t/*::[*/0x001F/*::]*/: \"NL\", // Netherlands\n\t/*::[*/0x0020/*::]*/: \"BE\", // Belgium\n\t/*::[*/0x0021/*::]*/: \"FR\", // France\n\t/*::[*/0x0022/*::]*/: \"ES\", // Spain\n\t/*::[*/0x0024/*::]*/: \"HU\", // Hungary\n\t/*::[*/0x0027/*::]*/: \"IT\", // Italy\n\t/*::[*/0x0029/*::]*/: \"CH\", // Switzerland\n\t/*::[*/0x002B/*::]*/: \"AT\", // Austria\n\t/*::[*/0x002C/*::]*/: \"GB\", // United Kingdom\n\t/*::[*/0x002D/*::]*/: \"DK\", // Denmark\n\t/*::[*/0x002E/*::]*/: \"SE\", // Sweden\n\t/*::[*/0x002F/*::]*/: \"NO\", // Norway\n\t/*::[*/0x0030/*::]*/: \"PL\", // Poland\n\t/*::[*/0x0031/*::]*/: \"DE\", // Germany\n\t/*::[*/0x0034/*::]*/: \"MX\", // Mexico\n\t/*::[*/0x0037/*::]*/: \"BR\", // Brazil\n\t/*::[*/0x003d/*::]*/: \"AU\", // Australia\n\t/*::[*/0x0040/*::]*/: \"NZ\", // New Zealand\n\t/*::[*/0x0042/*::]*/: \"TH\", // Thailand\n\t/*::[*/0x0051/*::]*/: \"JP\", // Japan\n\t/*::[*/0x0052/*::]*/: \"KR\", // Korea\n\t/*::[*/0x0054/*::]*/: \"VN\", // Viet Nam\n\t/*::[*/0x0056/*::]*/: \"CN\", // China\n\t/*::[*/0x005A/*::]*/: \"TR\", // Turkey\n\t/*::[*/0x0069/*::]*/: \"JS\", // Ramastan\n\t/*::[*/0x00D5/*::]*/: \"DZ\", // Algeria\n\t/*::[*/0x00D8/*::]*/: \"MA\", // Morocco\n\t/*::[*/0x00DA/*::]*/: \"LY\", // Libya\n\t/*::[*/0x015F/*::]*/: \"PT\", // Portugal\n\t/*::[*/0x0162/*::]*/: \"IS\", // Iceland\n\t/*::[*/0x0166/*::]*/: \"FI\", // Finland\n\t/*::[*/0x01A4/*::]*/: \"CZ\", // Czech Republic\n\t/*::[*/0x0376/*::]*/: \"TW\", // Taiwan\n\t/*::[*/0x03C1/*::]*/: \"LB\", // Lebanon\n\t/*::[*/0x03C2/*::]*/: \"JO\", // Jordan\n\t/*::[*/0x03C3/*::]*/: \"SY\", // Syria\n\t/*::[*/0x03C4/*::]*/: \"IQ\", // Iraq\n\t/*::[*/0x03C5/*::]*/: \"KW\", // Kuwait\n\t/*::[*/0x03C6/*::]*/: \"SA\", // Saudi Arabia\n\t/*::[*/0x03CB/*::]*/: \"AE\", // United Arab Emirates\n\t/*::[*/0x03CC/*::]*/: \"IL\", // Israel\n\t/*::[*/0x03CE/*::]*/: \"QA\", // Qatar\n\t/*::[*/0x03D5/*::]*/: \"IR\", // Iran\n\t/*::[*/0xFFFF/*::]*/: \"US\" // United States\n};\n\n/* [MS-XLS] 2.5.127 */\nvar XLSFillPattern = [\n\tnull,\n\t'solid',\n\t'mediumGray',\n\t'darkGray',\n\t'lightGray',\n\t'darkHorizontal',\n\t'darkVertical',\n\t'darkDown',\n\t'darkUp',\n\t'darkGrid',\n\t'darkTrellis',\n\t'lightHorizontal',\n\t'lightVertical',\n\t'lightDown',\n\t'lightUp',\n\t'lightGrid',\n\t'lightTrellis',\n\t'gray125',\n\t'gray0625'\n];\n\nfunction rgbify(arr/*:Array*/)/*:Array<[number, number, number]>*/ { return arr.map(function(x) { return [(x>>16)&255,(x>>8)&255,x&255]; }); }\n\n/* [MS-XLS] 2.5.161 */\n/* [MS-XLSB] 2.5.75 Icv */\nvar _XLSIcv = /*#__PURE__*/ rgbify([\n\t/* Color Constants */\n\t0x000000,\n\t0xFFFFFF,\n\t0xFF0000,\n\t0x00FF00,\n\t0x0000FF,\n\t0xFFFF00,\n\t0xFF00FF,\n\t0x00FFFF,\n\n\t/* Overridable Defaults */\n\t0x000000,\n\t0xFFFFFF,\n\t0xFF0000,\n\t0x00FF00,\n\t0x0000FF,\n\t0xFFFF00,\n\t0xFF00FF,\n\t0x00FFFF,\n\n\t0x800000,\n\t0x008000,\n\t0x000080,\n\t0x808000,\n\t0x800080,\n\t0x008080,\n\t0xC0C0C0,\n\t0x808080,\n\t0x9999FF,\n\t0x993366,\n\t0xFFFFCC,\n\t0xCCFFFF,\n\t0x660066,\n\t0xFF8080,\n\t0x0066CC,\n\t0xCCCCFF,\n\n\t0x000080,\n\t0xFF00FF,\n\t0xFFFF00,\n\t0x00FFFF,\n\t0x800080,\n\t0x800000,\n\t0x008080,\n\t0x0000FF,\n\t0x00CCFF,\n\t0xCCFFFF,\n\t0xCCFFCC,\n\t0xFFFF99,\n\t0x99CCFF,\n\t0xFF99CC,\n\t0xCC99FF,\n\t0xFFCC99,\n\n\t0x3366FF,\n\t0x33CCCC,\n\t0x99CC00,\n\t0xFFCC00,\n\t0xFF9900,\n\t0xFF6600,\n\t0x666699,\n\t0x969696,\n\t0x003366,\n\t0x339966,\n\t0x003300,\n\t0x333300,\n\t0x993300,\n\t0x993366,\n\t0x333399,\n\t0x333333,\n\n\t/* Other entries to appease BIFF8/12 */\n\t0xFFFFFF, /* 0x40 icvForeground ?? */\n\t0x000000, /* 0x41 icvBackground ?? */\n\t0x000000, /* 0x42 icvFrame ?? */\n\t0x000000, /* 0x43 icv3D ?? */\n\t0x000000, /* 0x44 icv3DText ?? */\n\t0x000000, /* 0x45 icv3DHilite ?? */\n\t0x000000, /* 0x46 icv3DShadow ?? */\n\t0x000000, /* 0x47 icvHilite ?? */\n\t0x000000, /* 0x48 icvCtlText ?? */\n\t0x000000, /* 0x49 icvCtlScrl ?? */\n\t0x000000, /* 0x4A icvCtlInv ?? */\n\t0x000000, /* 0x4B icvCtlBody ?? */\n\t0x000000, /* 0x4C icvCtlFrame ?? */\n\t0x000000, /* 0x4D icvCtlFore ?? */\n\t0x000000, /* 0x4E icvCtlBack ?? */\n\t0x000000, /* 0x4F icvCtlNeutral */\n\t0x000000, /* 0x50 icvInfoBk ?? */\n\t0x000000 /* 0x51 icvInfoText ?? */\n]);\nvar XLSIcv = /*#__PURE__*/dup(_XLSIcv);\n\n/* [MS-XLSB] 2.5.97.2 */\nvar BErr = {\n\t/*::[*/0x00/*::]*/: \"#NULL!\",\n\t/*::[*/0x07/*::]*/: \"#DIV/0!\",\n\t/*::[*/0x0F/*::]*/: \"#VALUE!\",\n\t/*::[*/0x17/*::]*/: \"#REF!\",\n\t/*::[*/0x1D/*::]*/: \"#NAME?\",\n\t/*::[*/0x24/*::]*/: \"#NUM!\",\n\t/*::[*/0x2A/*::]*/: \"#N/A\",\n\t/*::[*/0x2B/*::]*/: \"#GETTING_DATA\",\n\t/*::[*/0xFF/*::]*/: \"#WTF?\"\n};\n//var RBErr = evert_num(BErr);\nvar RBErr = {\n\t\"#NULL!\": 0x00,\n\t\"#DIV/0!\": 0x07,\n\t\"#VALUE!\": 0x0F,\n\t\"#REF!\": 0x17,\n\t\"#NAME?\": 0x1D,\n\t\"#NUM!\": 0x24,\n\t\"#N/A\": 0x2A,\n\t\"#GETTING_DATA\": 0x2B,\n\t\"#WTF?\": 0xFF\n};\n\n/* Parts enumerated in OPC spec, MS-XLSB and MS-XLSX */\n/* 12.3 Part Summary */\n/* 14.2 Part Summary */\n/* [MS-XLSX] 2.1 Part Enumerations ; [MS-XLSB] 2.1.7 Part Enumeration */\nvar ct2type/*{[string]:string}*/ = ({\n\t/* Workbook */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\": \"workbooks\",\n\t\"application/vnd.ms-excel.sheet.macroEnabled.main+xml\": \"workbooks\",\n\t\"application/vnd.ms-excel.sheet.binary.macroEnabled.main\": \"workbooks\",\n\t\"application/vnd.ms-excel.addin.macroEnabled.main+xml\": \"workbooks\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml\": \"workbooks\",\n\n\t/* Worksheet */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\": \"sheets\",\n\t\"application/vnd.ms-excel.worksheet\": \"sheets\",\n\t\"application/vnd.ms-excel.binIndexWs\": \"TODO\", /* Binary Index */\n\n\t/* Chartsheet */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml\": \"charts\",\n\t\"application/vnd.ms-excel.chartsheet\": \"charts\",\n\n\t/* Macrosheet */\n\t\"application/vnd.ms-excel.macrosheet+xml\": \"macros\",\n\t\"application/vnd.ms-excel.macrosheet\": \"macros\",\n\t\"application/vnd.ms-excel.intlmacrosheet\": \"TODO\",\n\t\"application/vnd.ms-excel.binIndexMs\": \"TODO\", /* Binary Index */\n\n\t/* Dialogsheet */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml\": \"dialogs\",\n\t\"application/vnd.ms-excel.dialogsheet\": \"dialogs\",\n\n\t/* Shared Strings */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml\": \"strs\",\n\t\"application/vnd.ms-excel.sharedStrings\": \"strs\",\n\n\t/* Styles */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\": \"styles\",\n\t\"application/vnd.ms-excel.styles\": \"styles\",\n\n\t/* File Properties */\n\t\"application/vnd.openxmlformats-package.core-properties+xml\": \"coreprops\",\n\t\"application/vnd.openxmlformats-officedocument.custom-properties+xml\": \"custprops\",\n\t\"application/vnd.openxmlformats-officedocument.extended-properties+xml\": \"extprops\",\n\n\t/* Custom Data Properties */\n\t\"application/vnd.openxmlformats-officedocument.customXmlProperties+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.customProperty\": \"TODO\",\n\n\t/* Comments */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml\": \"comments\",\n\t\"application/vnd.ms-excel.comments\": \"comments\",\n\t\"application/vnd.ms-excel.threadedcomments+xml\": \"threadedcomments\",\n\t\"application/vnd.ms-excel.person+xml\": \"people\",\n\n\t/* Metadata (Stock/Geography and Dynamic Array) */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml\": \"metadata\",\n\t\"application/vnd.ms-excel.sheetMetadata\": \"metadata\",\n\n\t/* PivotTable */\n\t\"application/vnd.ms-excel.pivotTable\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml\": \"TODO\",\n\n\t/* Chart Objects */\n\t\"application/vnd.openxmlformats-officedocument.drawingml.chart+xml\": \"TODO\",\n\n\t/* Chart Colors */\n\t\"application/vnd.ms-office.chartcolorstyle+xml\": \"TODO\",\n\n\t/* Chart Style */\n\t\"application/vnd.ms-office.chartstyle+xml\": \"TODO\",\n\n\t/* Chart Advanced */\n\t\"application/vnd.ms-office.chartex+xml\": \"TODO\",\n\n\t/* Calculation Chain */\n\t\"application/vnd.ms-excel.calcChain\": \"calcchains\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml\": \"calcchains\",\n\n\t/* Printer Settings */\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.printerSettings\": \"TODO\",\n\n\t/* ActiveX */\n\t\"application/vnd.ms-office.activeX\": \"TODO\",\n\t\"application/vnd.ms-office.activeX+xml\": \"TODO\",\n\n\t/* Custom Toolbars */\n\t\"application/vnd.ms-excel.attachedToolbars\": \"TODO\",\n\n\t/* External Data Connections */\n\t\"application/vnd.ms-excel.connections\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml\": \"TODO\",\n\n\t/* External Links */\n\t\"application/vnd.ms-excel.externalLink\": \"links\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.externalLink+xml\": \"links\",\n\n\t/* PivotCache */\n\t\"application/vnd.ms-excel.pivotCacheDefinition\": \"TODO\",\n\t\"application/vnd.ms-excel.pivotCacheRecords\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml\": \"TODO\",\n\n\t/* Query Table */\n\t\"application/vnd.ms-excel.queryTable\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.queryTable+xml\": \"TODO\",\n\n\t/* Shared Workbook */\n\t\"application/vnd.ms-excel.userNames\": \"TODO\",\n\t\"application/vnd.ms-excel.revisionHeaders\": \"TODO\",\n\t\"application/vnd.ms-excel.revisionLog\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionHeaders+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionLog+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.userNames+xml\": \"TODO\",\n\n\t/* Single Cell Table */\n\t\"application/vnd.ms-excel.tableSingleCells\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.tableSingleCells+xml\": \"TODO\",\n\n\t/* Slicer */\n\t\"application/vnd.ms-excel.slicer\": \"TODO\",\n\t\"application/vnd.ms-excel.slicerCache\": \"TODO\",\n\t\"application/vnd.ms-excel.slicer+xml\": \"TODO\",\n\t\"application/vnd.ms-excel.slicerCache+xml\": \"TODO\",\n\n\t/* Sort Map */\n\t\"application/vnd.ms-excel.wsSortMap\": \"TODO\",\n\n\t/* Table */\n\t\"application/vnd.ms-excel.table\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml\": \"TODO\",\n\n\t/* Themes */\n\t\"application/vnd.openxmlformats-officedocument.theme+xml\": \"themes\",\n\n\t/* Theme Override */\n\t\"application/vnd.openxmlformats-officedocument.themeOverride+xml\": \"TODO\",\n\n\t/* Timeline */\n\t\"application/vnd.ms-excel.Timeline+xml\": \"TODO\", /* verify */\n\t\"application/vnd.ms-excel.TimelineCache+xml\": \"TODO\", /* verify */\n\n\t/* VBA */\n\t\"application/vnd.ms-office.vbaProject\": \"vba\",\n\t\"application/vnd.ms-office.vbaProjectSignature\": \"TODO\",\n\n\t/* Volatile Dependencies */\n\t\"application/vnd.ms-office.volatileDependencies\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.spreadsheetml.volatileDependencies+xml\": \"TODO\",\n\n\t/* Control Properties */\n\t\"application/vnd.ms-excel.controlproperties+xml\": \"TODO\",\n\n\t/* Data Model */\n\t\"application/vnd.openxmlformats-officedocument.model+data\": \"TODO\",\n\n\t/* Survey */\n\t\"application/vnd.ms-excel.Survey+xml\": \"TODO\",\n\n\t/* Drawing */\n\t\"application/vnd.openxmlformats-officedocument.drawing+xml\": \"drawings\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramColors+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramData+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramLayout+xml\": \"TODO\",\n\t\"application/vnd.openxmlformats-officedocument.drawingml.diagramStyle+xml\": \"TODO\",\n\n\t/* VML */\n\t\"application/vnd.openxmlformats-officedocument.vmlDrawing\": \"TODO\",\n\n\t\"application/vnd.openxmlformats-package.relationships+xml\": \"rels\",\n\t\"application/vnd.openxmlformats-officedocument.oleObject\": \"TODO\",\n\n\t/* Image */\n\t\"image/png\": \"TODO\",\n\n\t\"sheet\": \"js\"\n}/*:any*/);\n\nvar CT_LIST = {\n\t\tworkbooks: {\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\",\n\t\t\txlsm: \"application/vnd.ms-excel.sheet.macroEnabled.main+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.sheet.binary.macroEnabled.main\",\n\t\t\txlam: \"application/vnd.ms-excel.addin.macroEnabled.main+xml\",\n\t\t\txltx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml\"\n\t\t},\n\t\tstrs: { /* Shared Strings */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.sharedStrings\"\n\t\t},\n\t\tcomments: { /* Comments */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.comments\"\n\t\t},\n\t\tsheets: { /* Worksheet */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.worksheet\"\n\t\t},\n\t\tcharts: { /* Chartsheet */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.chartsheet\"\n\t\t},\n\t\tdialogs: { /* Dialogsheet */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.dialogsheet\"\n\t\t},\n\t\tmacros: { /* Macrosheet (Excel 4.0 Macros) */\n\t\t\txlsx: \"application/vnd.ms-excel.macrosheet+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.macrosheet\"\n\t\t},\n\t\tmetadata: { /* Metadata (Stock/Geography and Dynamic Array) */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.sheetMetadata\"\n\t\t},\n\t\tstyles: { /* Styles */\n\t\t\txlsx: \"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\",\n\t\t\txlsb: \"application/vnd.ms-excel.styles\"\n\t\t}\n};\n\nfunction new_ct()/*:any*/ {\n\treturn ({\n\t\tworkbooks:[], sheets:[], charts:[], dialogs:[], macros:[],\n\t\trels:[], strs:[], comments:[], threadedcomments:[], links:[],\n\t\tcoreprops:[], extprops:[], custprops:[], themes:[], styles:[],\n\t\tcalcchains:[], vba: [], drawings: [], metadata: [], people:[],\n\t\tTODO:[], xmlns: \"\" }/*:any*/);\n}\n\nfunction parse_ct(data/*:?string*/) {\n\tvar ct = new_ct();\n\tif(!data || !data.match) return ct;\n\tvar ctext = {};\n\t(data.match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(y[0].replace(nsregex,\"<\")) {\n\t\t\tcase ' 0 ? ct.calcchains[0] : \"\";\n\tct.sst = ct.strs.length > 0 ? ct.strs[0] : \"\";\n\tct.style = ct.styles.length > 0 ? ct.styles[0] : \"\";\n\tct.defaults = ctext;\n\tdelete ct.calcchains;\n\treturn ct;\n}\n\nfunction write_ct(ct, opts)/*:string*/ {\n\tvar type2ct/*{[string]:Array}*/ = evert_arr(ct2type);\n\n\tvar o/*:Array*/ = [], v;\n\to[o.length] = (XML_HEADER);\n\to[o.length] = writextag('Types', null, {\n\t\t'xmlns': XMLNS.CT,\n\t\t'xmlns:xsd': XMLNS.xsd,\n\t\t'xmlns:xsi': XMLNS.xsi\n\t});\n\n\to = o.concat([\n\t\t['xml', 'application/xml'],\n\t\t['bin', 'application/vnd.ms-excel.sheet.binary.macroEnabled.main'],\n\t\t['vml', 'application/vnd.openxmlformats-officedocument.vmlDrawing'],\n\t\t['data', 'application/vnd.openxmlformats-officedocument.model+data'],\n\t\t/* from test files */\n\t\t['bmp', 'image/bmp'],\n\t\t['png', 'image/png'],\n\t\t['gif', 'image/gif'],\n\t\t['emf', 'image/x-emf'],\n\t\t['wmf', 'image/x-wmf'],\n\t\t['jpg', 'image/jpeg'], ['jpeg', 'image/jpeg'],\n\t\t['tif', 'image/tiff'], ['tiff', 'image/tiff'],\n\t\t['pdf', 'application/pdf'],\n\t\t['rels', 'application/vnd.openxmlformats-package.relationships+xml']\n\t].map(function(x) {\n\t\treturn writextag('Default', null, {'Extension':x[0], 'ContentType': x[1]});\n\t}));\n\n\t/* only write first instance */\n\tvar f1 = function(w) {\n\t\tif(ct[w] && ct[w].length > 0) {\n\t\t\tv = ct[w][0];\n\t\t\to[o.length] = (writextag('Override', null, {\n\t\t\t\t'PartName': (v[0] == '/' ? \"\":\"/\") + v,\n\t\t\t\t'ContentType': CT_LIST[w][opts.bookType] || CT_LIST[w]['xlsx']\n\t\t\t}));\n\t\t}\n\t};\n\n\t/* book type-specific */\n\tvar f2 = function(w) {\n\t\t(ct[w]||[]).forEach(function(v) {\n\t\t\to[o.length] = (writextag('Override', null, {\n\t\t\t\t'PartName': (v[0] == '/' ? \"\":\"/\") + v,\n\t\t\t\t'ContentType': CT_LIST[w][opts.bookType] || CT_LIST[w]['xlsx']\n\t\t\t}));\n\t\t});\n\t};\n\n\t/* standard type */\n\tvar f3 = function(t) {\n\t\t(ct[t]||[]).forEach(function(v) {\n\t\t\to[o.length] = (writextag('Override', null, {\n\t\t\t\t'PartName': (v[0] == '/' ? \"\":\"/\") + v,\n\t\t\t\t'ContentType': type2ct[t][0]\n\t\t\t}));\n\t\t});\n\t};\n\n\tf1('workbooks');\n\tf2('sheets');\n\tf2('charts');\n\tf3('themes');\n\t['strs', 'styles'].forEach(f1);\n\t['coreprops', 'extprops', 'custprops'].forEach(f3);\n\tf3('vba');\n\tf3('comments');\n\tf3('threadedcomments');\n\tf3('drawings');\n\tf2('metadata');\n\tf3('people');\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* 9.3 Relationships */\nvar RELS = ({\n\tWB: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument\",\n\tSHEET: \"http://sheetjs.openxmlformats.org/officeDocument/2006/relationships/officeDocument\",\n\tHLINK: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink\",\n\tVML: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing\",\n\tXPATH: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLinkPath\",\n\tXMISS: \"http://schemas.microsoft.com/office/2006/relationships/xlExternalLinkPath/xlPathMissing\",\n\tXLINK: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLink\",\n\tCXML: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml\",\n\tCXMLP: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXmlProps\",\n\tCMNT: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments\",\n\tCORE_PROPS: \"http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties\",\n\tEXT_PROPS: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties',\n\tCUST_PROPS: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties',\n\tSST: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings\",\n\tSTY: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles\",\n\tTHEME: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme\",\n\tCHART: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart\",\n\tCHARTEX: \"http://schemas.microsoft.com/office/2014/relationships/chartEx\",\n\tCS: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chartsheet\",\n\tWS: [\n\t\t\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet\",\n\t\t\"http://purl.oclc.org/ooxml/officeDocument/relationships/worksheet\"\n\t],\n\tDS: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/dialogsheet\",\n\tMS: \"http://schemas.microsoft.com/office/2006/relationships/xlMacrosheet\",\n\tIMG: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image\",\n\tDRAW: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing\",\n\tXLMETA: \"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sheetMetadata\",\n\tTCMNT: \"http://schemas.microsoft.com/office/2017/10/relationships/threadedComment\",\n\tPEOPLE: \"http://schemas.microsoft.com/office/2017/10/relationships/person\",\n\tVBA: \"http://schemas.microsoft.com/office/2006/relationships/vbaProject\"\n}/*:any*/);\n\n\n/* 9.3.3 Representing Relationships */\nfunction get_rels_path(file/*:string*/)/*:string*/ {\n\tvar n = file.lastIndexOf(\"/\");\n\treturn file.slice(0,n+1) + '_rels/' + file.slice(n+1) + \".rels\";\n}\n\nfunction parse_rels(data/*:?string*/, currentFilePath/*:string*/) {\n\tvar rels = {\"!id\":{}};\n\tif (!data) return rels;\n\tif (currentFilePath.charAt(0) !== '/') {\n\t\tcurrentFilePath = '/'+currentFilePath;\n\t}\n\tvar hash = {};\n\n\t(data.match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\t/* 9.3.2.2 OPC_Relationships */\n\t\tif (y[0] === '2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\nfunction add_rels(rels, rId/*:number*/, f, type, relobj, targetmode/*:?string*/)/*:number*/ {\n\tif(!relobj) relobj = {};\n\tif(!rels['!id']) rels['!id'] = {};\n\tif(!rels['!idx']) rels['!idx'] = 1;\n\tif(rId < 0) for(rId = rels['!idx']; rels['!id']['rId' + rId]; ++rId){/* empty */}\n\trels['!idx'] = rId + 1;\n\trelobj.Id = 'rId' + rId;\n\trelobj.Type = type;\n\trelobj.Target = f;\n\tif(targetmode) relobj.TargetMode = targetmode;\n\telse if([RELS.HLINK, RELS.XPATH, RELS.XMISS].indexOf(relobj.Type) > -1) relobj.TargetMode = \"External\";\n\tif(rels['!id'][relobj.Id]) throw new Error(\"Cannot rewrite rId \" + rId);\n\trels['!id'][relobj.Id] = relobj;\n\trels[('/' + relobj.Target).replace(\"//\",\"/\")] = relobj;\n\treturn rId;\n}\n/* Open Document Format for Office Applications (OpenDocument) Version 1.2 */\n/* Part 3 Section 4 Manifest File */\nvar CT_ODS = \"application/vnd.oasis.opendocument.spreadsheet\";\nfunction parse_manifest(d, opts) {\n\tvar str = xlml_normalize(d);\n\tvar Rn;\n\tvar FEtag;\n\twhile((Rn = xlmlregex.exec(str))) switch(Rn[3]) {\n\t\tcase 'manifest': break; // 4.2 \n\t\tcase 'file-entry': // 4.3 \n\t\t\tFEtag = parsexmltag(Rn[0], false);\n\t\t\tif(FEtag.path == '/' && FEtag.type !== CT_ODS) throw new Error(\"This OpenDocument is not a spreadsheet\");\n\t\t\tbreak;\n\t\tcase 'encryption-data': // 4.4 \n\t\tcase 'algorithm': // 4.5 \n\t\tcase 'start-key-generation': // 4.6 \n\t\tcase 'key-derivation': // 4.7 \n\t\t\tthrow new Error(\"Unsupported ODS Encryption\");\n\t\tdefault: if(opts && opts.WTF) throw Rn;\n\t}\n}\n\nfunction write_manifest(manifest/*:Array >*/)/*:string*/ {\n\tvar o = [XML_HEADER];\n\to.push('\\n');\n\to.push(' \\n');\n\tfor(var i = 0; i < manifest.length; ++i) o.push(' \\n');\n\to.push('');\n\treturn o.join(\"\");\n}\n\n/* Part 3 Section 6 Metadata Manifest File */\nfunction write_rdf_type(file/*:string*/, res/*:string*/, tag/*:?string*/) {\n\treturn [\n\t\t' \\n',\n\t\t' \\n',\n\t\t' \\n'\n\t].join(\"\");\n}\nfunction write_rdf_has(base/*:string*/, file/*:string*/) {\n\treturn [\n\t\t' \\n',\n\t\t' \\n',\n\t\t' \\n'\n\t].join(\"\");\n}\nfunction write_rdf(rdf) {\n\tvar o = [XML_HEADER];\n\to.push('\\n');\n\tfor(var i = 0; i != rdf.length; ++i) {\n\t\to.push(write_rdf_type(rdf[i][0], rdf[i][1]));\n\t\to.push(write_rdf_has(\"\",rdf[i][0]));\n\t}\n\to.push(write_rdf_type(\"\",\"Document\", \"pkg\"));\n\to.push('');\n\treturn o.join(\"\");\n}\n/* TODO: pull properties */\nfunction write_meta_ods(/*:: wb: Workbook, opts: any*/)/*:string*/ {\n\treturn 'Sheet' + 'JS ' + XLSX.version + '';\n}\n\n/* ECMA-376 Part II 11.1 Core Properties Part */\n/* [MS-OSHARED] 2.3.3.2.[1-2].1 (PIDSI/PIDDSI) */\nvar CORE_PROPS/*:Array >*/ = [\n\t[\"cp:category\", \"Category\"],\n\t[\"cp:contentStatus\", \"ContentStatus\"],\n\t[\"cp:keywords\", \"Keywords\"],\n\t[\"cp:lastModifiedBy\", \"LastAuthor\"],\n\t[\"cp:lastPrinted\", \"LastPrinted\"],\n\t[\"cp:revision\", \"RevNumber\"],\n\t[\"cp:version\", \"Version\"],\n\t[\"dc:creator\", \"Author\"],\n\t[\"dc:description\", \"Comments\"],\n\t[\"dc:identifier\", \"Identifier\"],\n\t[\"dc:language\", \"Language\"],\n\t[\"dc:subject\", \"Subject\"],\n\t[\"dc:title\", \"Title\"],\n\t[\"dcterms:created\", \"CreatedDate\", 'date'],\n\t[\"dcterms:modified\", \"ModifiedDate\", 'date']\n];\n\nvar CORE_PROPS_REGEX/*:Array*/ = /*#__PURE__*/(function() {\n\tvar r = new Array(CORE_PROPS.length);\n\tfor(var i = 0; i < CORE_PROPS.length; ++i) {\n\t\tvar f = CORE_PROPS[i];\n\t\tvar g = \"(?:\"+ f[0].slice(0,f[0].indexOf(\":\")) +\":)\"+ f[0].slice(f[0].indexOf(\":\")+1);\n\t\tr[i] = new RegExp(\"<\" + g + \"[^>]*>([\\\\s\\\\S]*?)<\\/\" + g + \">\");\n\t}\n\treturn r;\n})();\n\nfunction parse_core_props(data) {\n\tvar p = {};\n\tdata = utf8read(data);\n\n\tfor(var i = 0; i < CORE_PROPS.length; ++i) {\n\t\tvar f = CORE_PROPS[i], cur = data.match(CORE_PROPS_REGEX[i]);\n\t\tif(cur != null && cur.length > 0) p[f[1]] = unescapexml(cur[1]);\n\t\tif(f[2] === 'date' && p[f[1]]) p[f[1]] = parseDate(p[f[1]]);\n\t}\n\n\treturn p;\n}\n\nfunction cp_doit(f, g, h, o, p) {\n\tif(p[f] != null || g == null || g === \"\") return;\n\tp[f] = g;\n\tg = escapexml(g);\n\to[o.length] = (h ? writextag(f,g,h) : writetag(f,g));\n}\n\nfunction write_core_props(cp, _opts) {\n\tvar opts = _opts || {};\n\tvar o = [XML_HEADER, writextag('cp:coreProperties', null, {\n\t\t//'xmlns': XMLNS.CORE_PROPS,\n\t\t'xmlns:cp': XMLNS.CORE_PROPS,\n\t\t'xmlns:dc': XMLNS.dc,\n\t\t'xmlns:dcterms': XMLNS.dcterms,\n\t\t'xmlns:dcmitype': XMLNS.dcmitype,\n\t\t'xmlns:xsi': XMLNS.xsi\n\t})], p = {};\n\tif(!cp && !opts.Props) return o.join(\"\");\n\n\tif(cp) {\n\t\tif(cp.CreatedDate != null) cp_doit(\"dcterms:created\", typeof cp.CreatedDate === \"string\" ? cp.CreatedDate : write_w3cdtf(cp.CreatedDate, opts.WTF), {\"xsi:type\":\"dcterms:W3CDTF\"}, o, p);\n\t\tif(cp.ModifiedDate != null) cp_doit(\"dcterms:modified\", typeof cp.ModifiedDate === \"string\" ? cp.ModifiedDate : write_w3cdtf(cp.ModifiedDate, opts.WTF), {\"xsi:type\":\"dcterms:W3CDTF\"}, o, p);\n\t}\n\n\tfor(var i = 0; i != CORE_PROPS.length; ++i) {\n\t\tvar f = CORE_PROPS[i];\n\t\tvar v = opts.Props && opts.Props[f[1]] != null ? opts.Props[f[1]] : cp ? cp[f[1]] : null;\n\t\tif(v === true) v = \"1\";\n\t\telse if(v === false) v = \"0\";\n\t\telse if(typeof v == \"number\") v = String(v);\n\t\tif(v != null) cp_doit(f[0], v, null, o, p);\n\t}\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* 15.2.12.3 Extended File Properties Part */\n/* [MS-OSHARED] 2.3.3.2.[1-2].1 (PIDSI/PIDDSI) */\nvar EXT_PROPS/*:Array >*/ = [\n\t[\"Application\", \"Application\", \"string\"],\n\t[\"AppVersion\", \"AppVersion\", \"string\"],\n\t[\"Company\", \"Company\", \"string\"],\n\t[\"DocSecurity\", \"DocSecurity\", \"string\"],\n\t[\"Manager\", \"Manager\", \"string\"],\n\t[\"HyperlinksChanged\", \"HyperlinksChanged\", \"bool\"],\n\t[\"SharedDoc\", \"SharedDoc\", \"bool\"],\n\t[\"LinksUpToDate\", \"LinksUpToDate\", \"bool\"],\n\t[\"ScaleCrop\", \"ScaleCrop\", \"bool\"],\n\t[\"HeadingPairs\", \"HeadingPairs\", \"raw\"],\n\t[\"TitlesOfParts\", \"TitlesOfParts\", \"raw\"]\n];\n\nvar PseudoPropsPairs = [\n\t\"Worksheets\", \"SheetNames\",\n\t\"NamedRanges\", \"DefinedNames\",\n\t\"Chartsheets\", \"ChartNames\"\n];\nfunction load_props_pairs(HP/*:string|Array>*/, TOP, props, opts) {\n\tvar v = [];\n\tif(typeof HP == \"string\") v = parseVector(HP, opts);\n\telse for(var j = 0; j < HP.length; ++j) v = v.concat(HP[j].map(function(hp) { return {v:hp}; }));\n\tvar parts = (typeof TOP == \"string\") ? parseVector(TOP, opts).map(function (x) { return x.v; }) : TOP;\n\tvar idx = 0, len = 0;\n\tif(parts.length > 0) for(var i = 0; i !== v.length; i += 2) {\n\t\tlen = +(v[i+1].v);\n\t\tswitch(v[i].v) {\n\t\t\tcase \"Worksheets\":\n\t\t\tcase \"工作表\":\n\t\t\tcase \"Листы\":\n\t\t\tcase \"أوراق العمل\":\n\t\t\tcase \"ワークシート\":\n\t\t\tcase \"גליונות עבודה\":\n\t\t\tcase \"Arbeitsblätter\":\n\t\t\tcase \"Çalışma Sayfaları\":\n\t\t\tcase \"Feuilles de calcul\":\n\t\t\tcase \"Fogli di lavoro\":\n\t\t\tcase \"Folhas de cálculo\":\n\t\t\tcase \"Planilhas\":\n\t\t\tcase \"Regneark\":\n\t\t\tcase \"Hojas de cálculo\":\n\t\t\tcase \"Werkbladen\":\n\t\t\t\tprops.Worksheets = len;\n\t\t\t\tprops.SheetNames = parts.slice(idx, idx + len);\n\t\t\t\tbreak;\n\n\t\t\tcase \"Named Ranges\":\n\t\t\tcase \"Rangos con nombre\":\n\t\t\tcase \"名前付き一覧\":\n\t\t\tcase \"Benannte Bereiche\":\n\t\t\tcase \"Navngivne områder\":\n\t\t\t\tprops.NamedRanges = len;\n\t\t\t\tprops.DefinedNames = parts.slice(idx, idx + len);\n\t\t\t\tbreak;\n\n\t\t\tcase \"Charts\":\n\t\t\tcase \"Diagramme\":\n\t\t\t\tprops.Chartsheets = len;\n\t\t\t\tprops.ChartNames = parts.slice(idx, idx + len);\n\t\t\t\tbreak;\n\t\t}\n\t\tidx += len;\n\t}\n}\n\nfunction parse_ext_props(data, p, opts) {\n\tvar q = {}; if(!p) p = {};\n\tdata = utf8read(data);\n\n\tEXT_PROPS.forEach(function(f) {\n\t\tvar xml = (data.match(matchtag(f[0]))||[])[1];\n\t\tswitch(f[2]) {\n\t\t\tcase \"string\": if(xml) p[f[1]] = unescapexml(xml); break;\n\t\t\tcase \"bool\": p[f[1]] = xml === \"true\"; break;\n\t\t\tcase \"raw\":\n\t\t\t\tvar cur = data.match(new RegExp(\"<\" + f[0] + \"[^>]*>([\\\\s\\\\S]*?)<\\/\" + f[0] + \">\"));\n\t\t\t\tif(cur && cur.length > 0) q[f[1]] = cur[1];\n\t\t\t\tbreak;\n\t\t}\n\t});\n\n\tif(q.HeadingPairs && q.TitlesOfParts) load_props_pairs(q.HeadingPairs, q.TitlesOfParts, p, opts);\n\n\treturn p;\n}\n\nfunction write_ext_props(cp/*::, opts*/)/*:string*/ {\n\tvar o/*:Array*/ = [], W = writextag;\n\tif(!cp) cp = {};\n\tcp.Application = \"SheetJS\";\n\to[o.length] = (XML_HEADER);\n\to[o.length] = (writextag('Properties', null, {\n\t\t'xmlns': XMLNS.EXT_PROPS,\n\t\t'xmlns:vt': XMLNS.vt\n\t}));\n\n\tEXT_PROPS.forEach(function(f) {\n\t\tif(cp[f[1]] === undefined) return;\n\t\tvar v;\n\t\tswitch(f[2]) {\n\t\t\tcase 'string': v = escapexml(String(cp[f[1]])); break;\n\t\t\tcase 'bool': v = cp[f[1]] ? 'true' : 'false'; break;\n\t\t}\n\t\tif(v !== undefined) o[o.length] = (W(f[0], v));\n\t});\n\n\t/* TODO: HeadingPairs, TitlesOfParts */\n\to[o.length] = (W('HeadingPairs', W('vt:vector', W('vt:variant', 'Worksheets')+W('vt:variant', W('vt:i4', String(cp.Worksheets))), {size:2, baseType:\"variant\"})));\n\to[o.length] = (W('TitlesOfParts', W('vt:vector', cp.SheetNames.map(function(s) { return \"\" + escapexml(s) + \"\"; }).join(\"\"), {size: cp.Worksheets, baseType:\"lpstr\"})));\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* 15.2.12.2 Custom File Properties Part */\nvar custregex = /<[^>]+>[^<]*/g;\nfunction parse_cust_props(data/*:string*/, opts) {\n\tvar p = {}, name = \"\";\n\tvar m = data.match(custregex);\n\tif(m) for(var i = 0; i != m.length; ++i) {\n\t\tvar x = m[i], y = parsexmltag(x);\n\t\tswitch(y[0]) {\n\t\t\tcase '': name = null; break;\n\t\t\tdefault: if (x.indexOf('');\n\t\t\t\tvar type = toks[0].slice(4), text = toks[1];\n\t\t\t\t/* 22.4.2.32 (CT_Variant). Omit the binary types from 22.4 (Variant Types) */\n\t\t\t\tswitch(type) {\n\t\t\t\t\tcase 'lpstr': case 'bstr': case 'lpwstr':\n\t\t\t\t\t\tp[name] = unescapexml(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'bool':\n\t\t\t\t\t\tp[name] = parsexmlbool(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'i1': case 'i2': case 'i4': case 'i8': case 'int': case 'uint':\n\t\t\t\t\t\tp[name] = parseInt(text, 10);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'r4': case 'r8': case 'decimal':\n\t\t\t\t\t\tp[name] = parseFloat(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'filetime': case 'date':\n\t\t\t\t\t\tp[name] = parseDate(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'cy': case 'error':\n\t\t\t\t\t\tp[name] = unescapexml(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tif(type.slice(-1) == '/') break;\n\t\t\t\t\t\tif(opts.WTF && typeof console !== 'undefined') console.warn('Unexpected', x, type, toks);\n\t\t\t\t}\n\t\t\t} else if(x.slice(0,2) === \"2){ o[o.length] = ''; o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* Common Name -> XLML Name */\nvar XLMLDocPropsMap = {\n\tTitle: 'Title',\n\tSubject: 'Subject',\n\tAuthor: 'Author',\n\tKeywords: 'Keywords',\n\tComments: 'Description',\n\tLastAuthor: 'LastAuthor',\n\tRevNumber: 'Revision',\n\tApplication: 'AppName',\n\t/* TotalTime: 'TotalTime', */\n\tLastPrinted: 'LastPrinted',\n\tCreatedDate: 'Created',\n\tModifiedDate: 'LastSaved',\n\t/* Pages */\n\t/* Words */\n\t/* Characters */\n\tCategory: 'Category',\n\t/* PresentationFormat */\n\tManager: 'Manager',\n\tCompany: 'Company',\n\t/* Guid */\n\t/* HyperlinkBase */\n\t/* Bytes */\n\t/* Lines */\n\t/* Paragraphs */\n\t/* CharactersWithSpaces */\n\tAppVersion: 'Version',\n\n\tContentStatus: 'ContentStatus', /* NOTE: missing from schema */\n\tIdentifier: 'Identifier', /* NOTE: missing from schema */\n\tLanguage: 'Language' /* NOTE: missing from schema */\n};\nvar evert_XLMLDPM;\n\nfunction xlml_set_prop(Props, tag/*:string*/, val) {\n\tif(!evert_XLMLDPM) evert_XLMLDPM = evert(XLMLDocPropsMap);\n\ttag = evert_XLMLDPM[tag] || tag;\n\tProps[tag] = val;\n}\n\nfunction xlml_write_docprops(Props, opts) {\n\tvar o/*:Array*/ = [];\n\tkeys(XLMLDocPropsMap).map(function(m) {\n\t\tfor(var i = 0; i < CORE_PROPS.length; ++i) if(CORE_PROPS[i][1] == m) return CORE_PROPS[i];\n\t\tfor(i = 0; i < EXT_PROPS.length; ++i) if(EXT_PROPS[i][1] == m) return EXT_PROPS[i];\n\t\tthrow m;\n\t}).forEach(function(p) {\n\t\tif(Props[p[1]] == null) return;\n\t\tvar m = opts && opts.Props && opts.Props[p[1]] != null ? opts.Props[p[1]] : Props[p[1]];\n\t\tswitch(p[2]) {\n\t\t\tcase 'date': m = new Date(m).toISOString().replace(/\\.\\d*Z/,\"Z\"); break;\n\t\t}\n\t\tif(typeof m == 'number') m = String(m);\n\t\telse if(m === true || m === false) { m = m ? \"1\" : \"0\"; }\n\t\telse if(m instanceof Date) m = new Date(m).toISOString().replace(/\\.\\d*Z/,\"\");\n\t\to.push(writetag(XLMLDocPropsMap[p[1]] || p[1], m));\n\t});\n\treturn writextag('DocumentProperties', o.join(\"\"), {xmlns:XLMLNS.o });\n}\nfunction xlml_write_custprops(Props, Custprops/*::, opts*/) {\n\tvar BLACKLIST = [\"Worksheets\",\"SheetNames\"];\n\tvar T = 'CustomDocumentProperties';\n\tvar o/*:Array*/ = [];\n\tif(Props) keys(Props).forEach(function(k) {\n\t\t/*:: if(!Props) return; */\n\t\tif(!Object.prototype.hasOwnProperty.call(Props, k)) return;\n\t\tfor(var i = 0; i < CORE_PROPS.length; ++i) if(k == CORE_PROPS[i][1]) return;\n\t\tfor(i = 0; i < EXT_PROPS.length; ++i) if(k == EXT_PROPS[i][1]) return;\n\t\tfor(i = 0; i < BLACKLIST.length; ++i) if(k == BLACKLIST[i]) return;\n\n\t\tvar m = Props[k];\n\t\tvar t = \"string\";\n\t\tif(typeof m == 'number') { t = \"float\"; m = String(m); }\n\t\telse if(m === true || m === false) { t = \"boolean\"; m = m ? \"1\" : \"0\"; }\n\t\telse m = String(m);\n\t\to.push(writextag(escapexmltag(k), m, {\"dt:dt\":t}));\n\t});\n\tif(Custprops) keys(Custprops).forEach(function(k) {\n\t\t/*:: if(!Custprops) return; */\n\t\tif(!Object.prototype.hasOwnProperty.call(Custprops, k)) return;\n\t\tif(Props && Object.prototype.hasOwnProperty.call(Props, k)) return;\n\t\tvar m = Custprops[k];\n\t\tvar t = \"string\";\n\t\tif(typeof m == 'number') { t = \"float\"; m = String(m); }\n\t\telse if(m === true || m === false) { t = \"boolean\"; m = m ? \"1\" : \"0\"; }\n\t\telse if(m instanceof Date) { t = \"dateTime.tz\"; m = m.toISOString(); }\n\t\telse m = String(m);\n\t\to.push(writextag(escapexmltag(k), m, {\"dt:dt\":t}));\n\t});\n\treturn '<' + T + ' xmlns=\"' + XLMLNS.o + '\">' + o.join(\"\") + '';\n}\n/* [MS-DTYP] 2.3.3 FILETIME */\n/* [MS-OLEDS] 2.1.3 FILETIME (Packet Version) */\n/* [MS-OLEPS] 2.8 FILETIME (Packet Version) */\nfunction parse_FILETIME(blob) {\n\tvar dwLowDateTime = blob.read_shift(4), dwHighDateTime = blob.read_shift(4);\n\treturn new Date(((dwHighDateTime/1e7*Math.pow(2,32) + dwLowDateTime/1e7) - 11644473600)*1000).toISOString().replace(/\\.000/,\"\");\n}\nfunction write_FILETIME(time/*:string|Date*/) {\n\tvar date = (typeof time == \"string\") ? new Date(Date.parse(time)) : time;\n\tvar t = date.getTime() / 1000 + 11644473600;\n\tvar l = t % Math.pow(2,32), h = (t - l) / Math.pow(2,32);\n\tl *= 1e7; h *= 1e7;\n\tvar w = (l / Math.pow(2,32)) | 0;\n\tif(w > 0) { l = l % Math.pow(2,32); h += w; }\n\tvar o = new_buf(8); o.write_shift(4, l); o.write_shift(4, h); return o;\n}\n\n/* [MS-OSHARED] 2.3.3.1.4 Lpstr */\nfunction parse_lpstr(blob, type, pad/*:?number*/) {\n\tvar start = blob.l;\n\tvar str = blob.read_shift(0, 'lpstr-cp');\n\tif(pad) while((blob.l - start) & 3) ++blob.l;\n\treturn str;\n}\n\n/* [MS-OSHARED] 2.3.3.1.6 Lpwstr */\nfunction parse_lpwstr(blob, type, pad) {\n\tvar str = blob.read_shift(0, 'lpwstr');\n\tif(pad) blob.l += (4 - ((str.length+1) & 3)) & 3;\n\treturn str;\n}\n\n\n/* [MS-OSHARED] 2.3.3.1.11 VtString */\n/* [MS-OSHARED] 2.3.3.1.12 VtUnalignedString */\nfunction parse_VtStringBase(blob, stringType, pad) {\n\tif(stringType === 0x1F /*VT_LPWSTR*/) return parse_lpwstr(blob);\n\treturn parse_lpstr(blob, stringType, pad);\n}\n\nfunction parse_VtString(blob, t/*:number*/, pad/*:?boolean*/) { return parse_VtStringBase(blob, t, pad === false ? 0: 4); }\nfunction parse_VtUnalignedString(blob, t/*:number*/) { if(!t) throw new Error(\"VtUnalignedString must have positive length\"); return parse_VtStringBase(blob, t, 0); }\n\n/* [MS-OSHARED] 2.3.3.1.7 VtVecLpwstrValue */\nfunction parse_VtVecLpwstrValue(blob)/*:Array*/ {\n\tvar length = blob.read_shift(4);\n\tvar ret/*:Array*/ = [];\n\tfor(var i = 0; i != length; ++i) {\n\t\tvar start = blob.l;\n\t\tret[i] = blob.read_shift(0, 'lpwstr').replace(chr0,'');\n\t\tif((blob.l - start) & 0x02) blob.l += 2;\n\t}\n\treturn ret;\n}\n\n/* [MS-OSHARED] 2.3.3.1.9 VtVecUnalignedLpstrValue */\nfunction parse_VtVecUnalignedLpstrValue(blob)/*:Array*/ {\n\tvar length = blob.read_shift(4);\n\tvar ret/*:Array*/ = [];\n\tfor(var i = 0; i != length; ++i) ret[i] = blob.read_shift(0, 'lpstr-cp').replace(chr0,'');\n\treturn ret;\n}\n\n\n/* [MS-OSHARED] 2.3.3.1.13 VtHeadingPair */\nfunction parse_VtHeadingPair(blob) {\n\tvar start = blob.l;\n\tvar headingString = parse_TypedPropertyValue(blob, VT_USTR);\n\tif(blob[blob.l] == 0x00 && blob[blob.l+1] == 0x00 && ((blob.l - start) & 0x02)) blob.l += 2;\n\tvar headerParts = parse_TypedPropertyValue(blob, VT_I4);\n\treturn [headingString, headerParts];\n}\n\n/* [MS-OSHARED] 2.3.3.1.14 VtVecHeadingPairValue */\nfunction parse_VtVecHeadingPairValue(blob) {\n\tvar cElements = blob.read_shift(4);\n\tvar out = [];\n\tfor(var i = 0; i < cElements / 2; ++i) out.push(parse_VtHeadingPair(blob));\n\treturn out;\n}\n\n/* [MS-OLEPS] 2.18.1 Dictionary (uses 2.17, 2.16) */\nfunction parse_dictionary(blob,CodePage) {\n\tvar cnt = blob.read_shift(4);\n\tvar dict/*:{[number]:string}*/ = ({}/*:any*/);\n\tfor(var j = 0; j != cnt; ++j) {\n\t\tvar pid = blob.read_shift(4);\n\t\tvar len = blob.read_shift(4);\n\t\tdict[pid] = blob.read_shift(len, (CodePage === 0x4B0 ?'utf16le':'utf8')).replace(chr0,'').replace(chr1,'!');\n\t\tif(CodePage === 0x4B0 && (len % 2)) blob.l += 2;\n\t}\n\tif(blob.l & 3) blob.l = (blob.l>>2+1)<<2;\n\treturn dict;\n}\n\n/* [MS-OLEPS] 2.9 BLOB */\nfunction parse_BLOB(blob) {\n\tvar size = blob.read_shift(4);\n\tvar bytes = blob.slice(blob.l,blob.l+size);\n\tblob.l += size;\n\tif((size & 3) > 0) blob.l += (4 - (size & 3)) & 3;\n\treturn bytes;\n}\n\n/* [MS-OLEPS] 2.11 ClipboardData */\nfunction parse_ClipboardData(blob) {\n\t// TODO\n\tvar o = {};\n\to.Size = blob.read_shift(4);\n\t//o.Format = blob.read_shift(4);\n\tblob.l += o.Size + 3 - (o.Size - 1) % 4;\n\treturn o;\n}\n\n/* [MS-OLEPS] 2.15 TypedPropertyValue */\nfunction parse_TypedPropertyValue(blob, type/*:number*/, _opts)/*:any*/ {\n\tvar t = blob.read_shift(2), ret, opts = _opts||{};\n\tblob.l += 2;\n\tif(type !== VT_VARIANT)\n\tif(t !== type && VT_CUSTOM.indexOf(type)===-1 && !((type & 0xFFFE) == 0x101E && (t & 0xFFFE) == 0x101E)) throw new Error('Expected type ' + type + ' saw ' + t);\n\tswitch(type === VT_VARIANT ? t : type) {\n\t\tcase 0x02 /*VT_I2*/: ret = blob.read_shift(2, 'i'); if(!opts.raw) blob.l += 2; return ret;\n\t\tcase 0x03 /*VT_I4*/: ret = blob.read_shift(4, 'i'); return ret;\n\t\tcase 0x0B /*VT_BOOL*/: return blob.read_shift(4) !== 0x0;\n\t\tcase 0x13 /*VT_UI4*/: ret = blob.read_shift(4); return ret;\n\t\tcase 0x1E /*VT_LPSTR*/: return parse_lpstr(blob, t, 4).replace(chr0,'');\n\t\tcase 0x1F /*VT_LPWSTR*/: return parse_lpwstr(blob);\n\t\tcase 0x40 /*VT_FILETIME*/: return parse_FILETIME(blob);\n\t\tcase 0x41 /*VT_BLOB*/: return parse_BLOB(blob);\n\t\tcase 0x47 /*VT_CF*/: return parse_ClipboardData(blob);\n\t\tcase 0x50 /*VT_STRING*/: return parse_VtString(blob, t, !opts.raw).replace(chr0,'');\n\t\tcase 0x51 /*VT_USTR*/: return parse_VtUnalignedString(blob, t/*, 4*/).replace(chr0,'');\n\t\tcase 0x100C /*VT_VECTOR|VT_VARIANT*/: return parse_VtVecHeadingPairValue(blob);\n\t\tcase 0x101E /*VT_VECTOR|VT_LPSTR*/:\n\t\tcase 0x101F /*VT_VECTOR|VT_LPWSTR*/:\n\t\t\treturn t == 0x101F ? parse_VtVecLpwstrValue(blob) : parse_VtVecUnalignedLpstrValue(blob);\n\t\tdefault: throw new Error(\"TypedPropertyValue unrecognized type \" + type + \" \" + t);\n\t}\n}\nfunction write_TypedPropertyValue(type/*:number*/, value) {\n\tvar o = new_buf(4), p = new_buf(4);\n\to.write_shift(4, type == 0x50 ? 0x1F : type);\n\tswitch(type) {\n\t\tcase 0x03 /*VT_I4*/: p.write_shift(-4, value); break;\n\t\tcase 0x05 /*VT_I4*/: p = new_buf(8); p.write_shift(8, value, 'f'); break;\n\t\tcase 0x0B /*VT_BOOL*/: p.write_shift(4, value ? 0x01 : 0x00); break;\n\t\tcase 0x40 /*VT_FILETIME*/: /*:: if(typeof value !== \"string\" && !(value instanceof Date)) throw \"unreachable\"; */ p = write_FILETIME(value); break;\n\t\tcase 0x1F /*VT_LPWSTR*/:\n\t\tcase 0x50 /*VT_STRING*/:\n\t\t\t/*:: if(typeof value !== \"string\") throw \"unreachable\"; */\n\t\t\tp = new_buf(4 + 2 * (value.length + 1) + (value.length % 2 ? 0 : 2));\n\t\t\tp.write_shift(4, value.length + 1);\n\t\t\tp.write_shift(0, value, \"dbcs\");\n\t\t\twhile(p.l != p.length) p.write_shift(1, 0);\n\t\t\tbreak;\n\t\tdefault: throw new Error(\"TypedPropertyValue unrecognized type \" + type + \" \" + value);\n\t}\n\treturn bconcat([o, p]);\n}\n\n/* [MS-OLEPS] 2.20 PropertySet */\nfunction parse_PropertySet(blob, PIDSI) {\n\tvar start_addr = blob.l;\n\tvar size = blob.read_shift(4);\n\tvar NumProps = blob.read_shift(4);\n\tvar Props = [], i = 0;\n\tvar CodePage = 0;\n\tvar Dictionary = -1, DictObj/*:{[number]:string}*/ = ({}/*:any*/);\n\tfor(i = 0; i != NumProps; ++i) {\n\t\tvar PropID = blob.read_shift(4);\n\t\tvar Offset = blob.read_shift(4);\n\t\tProps[i] = [PropID, Offset + start_addr];\n\t}\n\tProps.sort(function(x,y) { return x[1] - y[1]; });\n\tvar PropH = {};\n\tfor(i = 0; i != NumProps; ++i) {\n\t\tif(blob.l !== Props[i][1]) {\n\t\t\tvar fail = true;\n\t\t\tif(i>0 && PIDSI) switch(PIDSI[Props[i-1][0]].t) {\n\t\t\t\tcase 0x02 /*VT_I2*/: if(blob.l+2 === Props[i][1]) { blob.l+=2; fail = false; } break;\n\t\t\t\tcase 0x50 /*VT_STRING*/: if(blob.l <= Props[i][1]) { blob.l=Props[i][1]; fail = false; } break;\n\t\t\t\tcase 0x100C /*VT_VECTOR|VT_VARIANT*/: if(blob.l <= Props[i][1]) { blob.l=Props[i][1]; fail = false; } break;\n\t\t\t}\n\t\t\tif((!PIDSI||i==0) && blob.l <= Props[i][1]) { fail=false; blob.l = Props[i][1]; }\n\t\t\tif(fail) throw new Error(\"Read Error: Expected address \" + Props[i][1] + ' at ' + blob.l + ' :' + i);\n\t\t}\n\t\tif(PIDSI) {\n\t\t\tvar piddsi = PIDSI[Props[i][0]];\n\t\t\tPropH[piddsi.n] = parse_TypedPropertyValue(blob, piddsi.t, {raw:true});\n\t\t\tif(piddsi.p === 'version') PropH[piddsi.n] = String(PropH[piddsi.n] >> 16) + \".\" + (\"0000\" + String(PropH[piddsi.n] & 0xFFFF)).slice(-4);\n\t\t\tif(piddsi.n == \"CodePage\") switch(PropH[piddsi.n]) {\n\t\t\t\tcase 0: PropH[piddsi.n] = 1252;\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 874:\n\t\t\t\tcase 932:\n\t\t\t\tcase 936:\n\t\t\t\tcase 949:\n\t\t\t\tcase 950:\n\t\t\t\tcase 1250:\n\t\t\t\tcase 1251:\n\t\t\t\tcase 1253:\n\t\t\t\tcase 1254:\n\t\t\t\tcase 1255:\n\t\t\t\tcase 1256:\n\t\t\t\tcase 1257:\n\t\t\t\tcase 1258:\n\t\t\t\tcase 10000:\n\t\t\t\tcase 1200:\n\t\t\t\tcase 1201:\n\t\t\t\tcase 1252:\n\t\t\t\tcase 65000: case -536:\n\t\t\t\tcase 65001: case -535:\n\t\t\t\t\tset_cp(CodePage = (PropH[piddsi.n]>>>0) & 0xFFFF); break;\n\t\t\t\tdefault: throw new Error(\"Unsupported CodePage: \" + PropH[piddsi.n]);\n\t\t\t}\n\t\t} else {\n\t\t\tif(Props[i][0] === 0x1) {\n\t\t\t\tCodePage = PropH.CodePage = (parse_TypedPropertyValue(blob, VT_I2)/*:number*/);\n\t\t\t\tset_cp(CodePage);\n\t\t\t\tif(Dictionary !== -1) {\n\t\t\t\t\tvar oldpos = blob.l;\n\t\t\t\t\tblob.l = Props[Dictionary][1];\n\t\t\t\t\tDictObj = parse_dictionary(blob,CodePage);\n\t\t\t\t\tblob.l = oldpos;\n\t\t\t\t}\n\t\t\t} else if(Props[i][0] === 0) {\n\t\t\t\tif(CodePage === 0) { Dictionary = i; blob.l = Props[i+1][1]; continue; }\n\t\t\t\tDictObj = parse_dictionary(blob,CodePage);\n\t\t\t} else {\n\t\t\t\tvar name = DictObj[Props[i][0]];\n\t\t\t\tvar val;\n\t\t\t\t/* [MS-OSHARED] 2.3.3.2.3.1.2 + PROPVARIANT */\n\t\t\t\tswitch(blob[blob.l]) {\n\t\t\t\t\tcase 0x41 /*VT_BLOB*/: blob.l += 4; val = parse_BLOB(blob); break;\n\t\t\t\t\tcase 0x1E /*VT_LPSTR*/: blob.l += 4; val = parse_VtString(blob, blob[blob.l-4]).replace(/\\u0000+$/,\"\"); break;\n\t\t\t\t\tcase 0x1F /*VT_LPWSTR*/: blob.l += 4; val = parse_VtString(blob, blob[blob.l-4]).replace(/\\u0000+$/,\"\"); break;\n\t\t\t\t\tcase 0x03 /*VT_I4*/: blob.l += 4; val = blob.read_shift(4, 'i'); break;\n\t\t\t\t\tcase 0x13 /*VT_UI4*/: blob.l += 4; val = blob.read_shift(4); break;\n\t\t\t\t\tcase 0x05 /*VT_R8*/: blob.l += 4; val = blob.read_shift(8, 'f'); break;\n\t\t\t\t\tcase 0x0B /*VT_BOOL*/: blob.l += 4; val = parsebool(blob, 4); break;\n\t\t\t\t\tcase 0x40 /*VT_FILETIME*/: blob.l += 4; val = parseDate(parse_FILETIME(blob)); break;\n\t\t\t\t\tdefault: throw new Error(\"unparsed value: \" + blob[blob.l]);\n\t\t\t\t}\n\t\t\t\tPropH[name] = val;\n\t\t\t}\n\t\t}\n\t}\n\tblob.l = start_addr + size; /* step ahead to skip padding */\n\treturn PropH;\n}\nvar XLSPSSkip = [ \"CodePage\", \"Thumbnail\", \"_PID_LINKBASE\", \"_PID_HLINKS\", \"SystemIdentifier\", \"FMTID\" ]; //.concat(PseudoPropsPairs);\nfunction guess_property_type(val/*:any*/)/*:number*/ {\n\tswitch(typeof val) {\n\t\tcase \"boolean\": return 0x0B;\n\t\tcase \"number\": return ((val|0)==val) ? 0x03 : 0x05;\n\t\tcase \"string\": return 0x1F;\n\t\tcase \"object\": if(val instanceof Date) return 0x40; break;\n\t}\n\treturn -1;\n}\nfunction write_PropertySet(entries, RE, PIDSI) {\n\tvar hdr = new_buf(8), piao = [], prop = [];\n\tvar sz = 8, i = 0;\n\n\tvar pr = new_buf(8), pio = new_buf(8);\n\tpr.write_shift(4, 0x0002);\n\tpr.write_shift(4, 0x04B0);\n\tpio.write_shift(4, 0x0001);\n\tprop.push(pr); piao.push(pio);\n\tsz += 8 + pr.length;\n\n\tif(!RE) {\n\t\tpio = new_buf(8);\n\t\tpio.write_shift(4, 0);\n\t\tpiao.unshift(pio);\n\n\t\tvar bufs = [new_buf(4)];\n\t\tbufs[0].write_shift(4, entries.length);\n\t\tfor(i = 0; i < entries.length; ++i) {\n\t\t\tvar value = entries[i][0];\n\t\t\tpr = new_buf(4 + 4 + 2 * (value.length + 1) + (value.length % 2 ? 0 : 2));\n\t\t\tpr.write_shift(4, i+2);\n\t\t\tpr.write_shift(4, value.length + 1);\n\t\t\tpr.write_shift(0, value, \"dbcs\");\n\t\t\twhile(pr.l != pr.length) pr.write_shift(1, 0);\n\t\t\tbufs.push(pr);\n\t\t}\n\t\tpr = bconcat(bufs);\n\t\tprop.unshift(pr);\n\t\tsz += 8 + pr.length;\n\t}\n\n\tfor(i = 0; i < entries.length; ++i) {\n\t\tif(RE && !RE[entries[i][0]]) continue;\n\t\tif(XLSPSSkip.indexOf(entries[i][0]) > -1 || PseudoPropsPairs.indexOf(entries[i][0]) > -1) continue;\n\t\tif(entries[i][1] == null) continue;\n\n\t\tvar val = entries[i][1], idx = 0;\n\t\tif(RE) {\n\t\t\tidx = +RE[entries[i][0]];\n\t\t\tvar pinfo = (PIDSI/*:: || {}*/)[idx]/*:: || {} */;\n\t\t\tif(pinfo.p == \"version\" && typeof val == \"string\") {\n\t\t\t\t/*:: if(typeof val !== \"string\") throw \"unreachable\"; */\n\t\t\t\tvar arr = val.split(\".\");\n\t\t\t\tval = ((+arr[0])<<16) + ((+arr[1])||0);\n\t\t\t}\n\t\t\tpr = write_TypedPropertyValue(pinfo.t, val);\n\t\t} else {\n\t\t\tvar T = guess_property_type(val);\n\t\t\tif(T == -1) { T = 0x1F; val = String(val); }\n\t\t\tpr = write_TypedPropertyValue(T, val);\n\t\t}\n\t\tprop.push(pr);\n\n\t\tpio = new_buf(8);\n\t\tpio.write_shift(4, !RE ? 2+i : idx);\n\t\tpiao.push(pio);\n\n\t\tsz += 8 + pr.length;\n\t}\n\n\tvar w = 8 * (prop.length + 1);\n\tfor(i = 0; i < prop.length; ++i) { piao[i].write_shift(4, w); w += prop[i].length; }\n\thdr.write_shift(4, sz);\n\thdr.write_shift(4, prop.length);\n\treturn bconcat([hdr].concat(piao).concat(prop));\n}\n\n/* [MS-OLEPS] 2.21 PropertySetStream */\nfunction parse_PropertySetStream(file, PIDSI, clsid) {\n\tvar blob = file.content;\n\tif(!blob) return ({}/*:any*/);\n\tprep_blob(blob, 0);\n\n\tvar NumSets, FMTID0, FMTID1, Offset0, Offset1 = 0;\n\tblob.chk('feff', 'Byte Order: ');\n\n\t/*var vers = */blob.read_shift(2); // TODO: check version\n\tvar SystemIdentifier = blob.read_shift(4);\n\tvar CLSID = blob.read_shift(16);\n\tif(CLSID !== CFB.utils.consts.HEADER_CLSID && CLSID !== clsid) throw new Error(\"Bad PropertySet CLSID \" + CLSID);\n\tNumSets = blob.read_shift(4);\n\tif(NumSets !== 1 && NumSets !== 2) throw new Error(\"Unrecognized #Sets: \" + NumSets);\n\tFMTID0 = blob.read_shift(16); Offset0 = blob.read_shift(4);\n\n\tif(NumSets === 1 && Offset0 !== blob.l) throw new Error(\"Length mismatch: \" + Offset0 + \" !== \" + blob.l);\n\telse if(NumSets === 2) { FMTID1 = blob.read_shift(16); Offset1 = blob.read_shift(4); }\n\tvar PSet0 = parse_PropertySet(blob, PIDSI);\n\n\tvar rval = ({ SystemIdentifier: SystemIdentifier }/*:any*/);\n\tfor(var y in PSet0) rval[y] = PSet0[y];\n\t//rval.blob = blob;\n\trval.FMTID = FMTID0;\n\t//rval.PSet0 = PSet0;\n\tif(NumSets === 1) return rval;\n\tif(Offset1 - blob.l == 2) blob.l += 2;\n\tif(blob.l !== Offset1) throw new Error(\"Length mismatch 2: \" + blob.l + \" !== \" + Offset1);\n\tvar PSet1;\n\ttry { PSet1 = parse_PropertySet(blob, null); } catch(e) {/* empty */}\n\tfor(y in PSet1) rval[y] = PSet1[y];\n\trval.FMTID = [FMTID0, FMTID1]; // TODO: verify FMTID0/1\n\treturn rval;\n}\nfunction write_PropertySetStream(entries, clsid, RE, PIDSI/*:{[key:string|number]:any}*/, entries2/*:?any*/, clsid2/*:?any*/) {\n\tvar hdr = new_buf(entries2 ? 68 : 48);\n\tvar bufs = [hdr];\n\thdr.write_shift(2, 0xFFFE);\n\thdr.write_shift(2, 0x0000); /* TODO: type 1 props */\n\thdr.write_shift(4, 0x32363237);\n\thdr.write_shift(16, CFB.utils.consts.HEADER_CLSID, \"hex\");\n\thdr.write_shift(4, (entries2 ? 2 : 1));\n\thdr.write_shift(16, clsid, \"hex\");\n\thdr.write_shift(4, (entries2 ? 68 : 48));\n\tvar ps0 = write_PropertySet(entries, RE, PIDSI);\n\tbufs.push(ps0);\n\n\tif(entries2) {\n\t\tvar ps1 = write_PropertySet(entries2, null, null);\n\t\thdr.write_shift(16, clsid2, \"hex\");\n\t\thdr.write_shift(4, 68 + ps0.length);\n\t\tbufs.push(ps1);\n\t}\n\treturn bconcat(bufs);\n}\n\nfunction parsenoop2(blob, length) { blob.read_shift(length); return null; }\nfunction writezeroes(n, o) { if(!o) o=new_buf(n); for(var j=0; j= 12 ? 2 : 1);\n\tvar encoding = 'sbcs-cont';\n\tvar cp = current_codepage;\n\tif(opts && opts.biff >= 8) current_codepage = 1200;\n\tif(!opts || opts.biff == 8 ) {\n\t\tvar fHighByte = blob.read_shift(1);\n\t\tif(fHighByte) { encoding = 'dbcs-cont'; }\n\t} else if(opts.biff == 12) {\n\t\tencoding = 'wstr';\n\t}\n\tif(opts.biff >= 2 && opts.biff <= 5) encoding = 'cpstr';\n\tvar o = cch ? blob.read_shift(cch, encoding) : \"\";\n\tcurrent_codepage = cp;\n\treturn o;\n}\n\n/* 2.5.293 XLUnicodeRichExtendedString */\nfunction parse_XLUnicodeRichExtendedString(blob) {\n\tvar cp = current_codepage;\n\tcurrent_codepage = 1200;\n\tvar cch = blob.read_shift(2), flags = blob.read_shift(1);\n\tvar /*fHighByte = flags & 0x1,*/ fExtSt = flags & 0x4, fRichSt = flags & 0x8;\n\tvar width = 1 + (flags & 0x1); // 0x0 -> utf8, 0x1 -> dbcs\n\tvar cRun = 0, cbExtRst;\n\tvar z = {};\n\tif(fRichSt) cRun = blob.read_shift(2);\n\tif(fExtSt) cbExtRst = blob.read_shift(4);\n\tvar encoding = width == 2 ? 'dbcs-cont' : 'sbcs-cont';\n\tvar msg = cch === 0 ? \"\" : blob.read_shift(cch, encoding);\n\tif(fRichSt) blob.l += 4 * cRun; //TODO: parse this\n\tif(fExtSt) blob.l += cbExtRst; //TODO: parse this\n\tz.t = msg;\n\tif(!fRichSt) { z.raw = \"\" + z.t + \"\"; z.r = z.t; }\n\tcurrent_codepage = cp;\n\treturn z;\n}\nfunction write_XLUnicodeRichExtendedString(xlstr/*:: :XLString, opts*/) {\n\tvar str = (xlstr.t||\"\"), nfmts = 1;\n\n\tvar hdr = new_buf(3 + (nfmts > 1 ? 2 : 0));\n\thdr.write_shift(2, str.length);\n\thdr.write_shift(1, (nfmts > 1 ? 0x08 : 0x00) | 0x01);\n\tif(nfmts > 1) hdr.write_shift(2, nfmts);\n\n\tvar otext = new_buf(2 * str.length);\n\totext.write_shift(2 * str.length, str, 'utf16le');\n\n\tvar out = [hdr, otext];\n\n\treturn bconcat(out);\n}\n\n/* 2.5.296 XLUnicodeStringNoCch */\nfunction parse_XLUnicodeStringNoCch(blob, cch, opts) {\n\tvar retval;\n\tif(opts) {\n\t\tif(opts.biff >= 2 && opts.biff <= 5) return blob.read_shift(cch, 'cpstr');\n\t\tif(opts.biff >= 12) return blob.read_shift(cch, 'dbcs-cont');\n\t}\n\tvar fHighByte = blob.read_shift(1);\n\tif(fHighByte===0) { retval = blob.read_shift(cch, 'sbcs-cont'); }\n\telse { retval = blob.read_shift(cch, 'dbcs-cont'); }\n\treturn retval;\n}\n\n/* 2.5.294 XLUnicodeString */\nfunction parse_XLUnicodeString(blob, length, opts) {\n\tvar cch = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\tif(cch === 0) { blob.l++; return \"\"; }\n\treturn parse_XLUnicodeStringNoCch(blob, cch, opts);\n}\n/* BIFF5 override */\nfunction parse_XLUnicodeString2(blob, length, opts) {\n\tif(opts.biff > 5) return parse_XLUnicodeString(blob, length, opts);\n\tvar cch = blob.read_shift(1);\n\tif(cch === 0) { blob.l++; return \"\"; }\n\treturn blob.read_shift(cch, (opts.biff <= 4 || !blob.lens ) ? 'cpstr' : 'sbcs-cont');\n}\n/* TODO: BIFF5 and lower, codepage awareness */\nfunction write_XLUnicodeString(str, opts, o) {\n\tif(!o) o = new_buf(3 + 2 * str.length);\n\to.write_shift(2, str.length);\n\to.write_shift(1, 1);\n\to.write_shift(31, str, 'utf16le');\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.61 ControlInfo */\nfunction parse_ControlInfo(blob/*::, length, opts*/) {\n\tvar flags = blob.read_shift(1);\n\tblob.l++;\n\tvar accel = blob.read_shift(2);\n\tblob.l += 2;\n\treturn [flags, accel];\n}\n\n/* [MS-OSHARED] 2.3.7.6 URLMoniker TODO: flags */\nfunction parse_URLMoniker(blob/*::, length, opts*/) {\n\tvar len = blob.read_shift(4), start = blob.l;\n\tvar extra = false;\n\tif(len > 24) {\n\t\t/* look ahead */\n\t\tblob.l += len - 24;\n\t\tif(blob.read_shift(16) === \"795881f43b1d7f48af2c825dc4852763\") extra = true;\n\t\tblob.l = start;\n\t}\n\tvar url = blob.read_shift((extra?len-24:len)>>1, 'utf16le').replace(chr0,\"\");\n\tif(extra) blob.l += 24;\n\treturn url;\n}\n\n/* [MS-OSHARED] 2.3.7.8 FileMoniker TODO: all fields */\nfunction parse_FileMoniker(blob/*::, length*/) {\n\tvar cAnti = blob.read_shift(2);\n\tvar preamble = \"\"; while(cAnti-- > 0) preamble += \"../\";\n\tvar ansiPath = blob.read_shift(0, 'lpstr-ansi');\n\tblob.l += 2; //var endServer = blob.read_shift(2);\n\tif(blob.read_shift(2) != 0xDEAD) throw new Error(\"Bad FileMoniker\");\n\tvar sz = blob.read_shift(4);\n\tif(sz === 0) return preamble + ansiPath.replace(/\\\\/g,\"/\");\n\tvar bytes = blob.read_shift(4);\n\tif(blob.read_shift(2) != 3) throw new Error(\"Bad FileMoniker\");\n\tvar unicodePath = blob.read_shift(bytes>>1, 'utf16le').replace(chr0,\"\");\n\treturn preamble + unicodePath;\n}\n\n/* [MS-OSHARED] 2.3.7.2 HyperlinkMoniker TODO: all the monikers */\nfunction parse_HyperlinkMoniker(blob, length) {\n\tvar clsid = blob.read_shift(16); length -= 16;\n\tswitch(clsid) {\n\t\tcase \"e0c9ea79f9bace118c8200aa004ba90b\": return parse_URLMoniker(blob, length);\n\t\tcase \"0303000000000000c000000000000046\": return parse_FileMoniker(blob, length);\n\t\tdefault: throw new Error(\"Unsupported Moniker \" + clsid);\n\t}\n}\n\n/* [MS-OSHARED] 2.3.7.9 HyperlinkString */\nfunction parse_HyperlinkString(blob/*::, length*/) {\n\tvar len = blob.read_shift(4);\n\tvar o = len > 0 ? blob.read_shift(len, 'utf16le').replace(chr0, \"\") : \"\";\n\treturn o;\n}\nfunction write_HyperlinkString(str/*:string*/, o) {\n\tif(!o) o = new_buf(6 + str.length * 2);\n\to.write_shift(4, 1 + str.length);\n\tfor(var i = 0; i < str.length; ++i) o.write_shift(2, str.charCodeAt(i));\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-OSHARED] 2.3.7.1 Hyperlink Object */\nfunction parse_Hyperlink(blob, length)/*:Hyperlink*/ {\n\tvar end = blob.l + length;\n\tvar sVer = blob.read_shift(4);\n\tif(sVer !== 2) throw new Error(\"Unrecognized streamVersion: \" + sVer);\n\tvar flags = blob.read_shift(2);\n\tblob.l += 2;\n\tvar displayName, targetFrameName, moniker, oleMoniker, Loc=\"\", guid, fileTime;\n\tif(flags & 0x0010) displayName = parse_HyperlinkString(blob, end - blob.l);\n\tif(flags & 0x0080) targetFrameName = parse_HyperlinkString(blob, end - blob.l);\n\tif((flags & 0x0101) === 0x0101) moniker = parse_HyperlinkString(blob, end - blob.l);\n\tif((flags & 0x0101) === 0x0001) oleMoniker = parse_HyperlinkMoniker(blob, end - blob.l);\n\tif(flags & 0x0008) Loc = parse_HyperlinkString(blob, end - blob.l);\n\tif(flags & 0x0020) guid = blob.read_shift(16);\n\tif(flags & 0x0040) fileTime = parse_FILETIME(blob/*, 8*/);\n\tblob.l = end;\n\tvar target = targetFrameName||moniker||oleMoniker||\"\";\n\tif(target && Loc) target+=\"#\"+Loc;\n\tif(!target) target = \"#\" + Loc;\n\tif((flags & 0x0002) && target.charAt(0) == \"/\" && target.charAt(1) != \"/\") target = \"file://\" + target;\n\tvar out = ({Target:target}/*:any*/);\n\tif(guid) out.guid = guid;\n\tif(fileTime) out.time = fileTime;\n\tif(displayName) out.Tooltip = displayName;\n\treturn out;\n}\nfunction write_Hyperlink(hl) {\n\tvar out = new_buf(512), i = 0;\n\tvar Target = hl.Target;\n\tif(Target.slice(0,7) == \"file://\") Target = Target.slice(7);\n\tvar hashidx = Target.indexOf(\"#\");\n\tvar F = hashidx > -1 ? 0x1f : 0x17;\n\tswitch(Target.charAt(0)) { case \"#\": F=0x1c; break; case \".\": F&=~2; break; }\n\tout.write_shift(4,2); out.write_shift(4, F);\n\tvar data = [8,6815827,6619237,4849780,83]; for(i = 0; i < data.length; ++i) out.write_shift(4, data[i]);\n\tif(F == 0x1C) {\n\t\tTarget = Target.slice(1);\n\t\twrite_HyperlinkString(Target, out);\n\t} else if(F & 0x02) {\n\t\tdata = \"e0 c9 ea 79 f9 ba ce 11 8c 82 00 aa 00 4b a9 0b\".split(\" \");\n\t\tfor(i = 0; i < data.length; ++i) out.write_shift(1, parseInt(data[i], 16));\n\t\tvar Pretarget = hashidx > -1 ? Target.slice(0, hashidx) : Target;\n\t\tout.write_shift(4, 2*(Pretarget.length + 1));\n\t\tfor(i = 0; i < Pretarget.length; ++i) out.write_shift(2, Pretarget.charCodeAt(i));\n\t\tout.write_shift(2, 0);\n\t\tif(F & 0x08) write_HyperlinkString(hashidx > -1 ? Target.slice(hashidx+1): \"\", out);\n\t} else {\n\t\tdata = \"03 03 00 00 00 00 00 00 c0 00 00 00 00 00 00 46\".split(\" \");\n\t\tfor(i = 0; i < data.length; ++i) out.write_shift(1, parseInt(data[i], 16));\n\t\tvar P = 0;\n\t\twhile(Target.slice(P*3,P*3+3)==\"../\"||Target.slice(P*3,P*3+3)==\"..\\\\\") ++P;\n\t\tout.write_shift(2, P);\n\t\tout.write_shift(4, Target.length - 3 * P + 1);\n\t\tfor(i = 0; i < Target.length - 3 * P; ++i) out.write_shift(1, Target.charCodeAt(i + 3 * P) & 0xFF);\n\t\tout.write_shift(1, 0);\n\t\tout.write_shift(2, 0xFFFF);\n\t\tout.write_shift(2, 0xDEAD);\n\t\tfor(i = 0; i < 6; ++i) out.write_shift(4, 0);\n\t}\n\treturn out.slice(0, out.l);\n}\n\n/* 2.5.178 LongRGBA */\nfunction parse_LongRGBA(blob/*::, length*/) { var r = blob.read_shift(1), g = blob.read_shift(1), b = blob.read_shift(1), a = blob.read_shift(1); return [r,g,b,a]; }\n\n/* 2.5.177 LongRGB */\nfunction parse_LongRGB(blob, length) { var x = parse_LongRGBA(blob, length); x[3] = 0; return x; }\n\n\n/* [MS-XLS] 2.5.19 */\nfunction parse_XLSCell(blob/*::, length*/)/*:Cell*/ {\n\tvar rw = blob.read_shift(2); // 0-indexed\n\tvar col = blob.read_shift(2);\n\tvar ixfe = blob.read_shift(2);\n\treturn ({r:rw, c:col, ixfe:ixfe}/*:any*/);\n}\nfunction write_XLSCell(R/*:number*/, C/*:number*/, ixfe/*:?number*/, o) {\n\tif(!o) o = new_buf(6);\n\to.write_shift(2, R);\n\to.write_shift(2, C);\n\to.write_shift(2, ixfe||0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.134 */\nfunction parse_frtHeader(blob) {\n\tvar rt = blob.read_shift(2);\n\tvar flags = blob.read_shift(2); // TODO: parse these flags\n\tblob.l += 8;\n\treturn {type: rt, flags: flags};\n}\n\n\n\nfunction parse_OptXLUnicodeString(blob, length, opts) { return length === 0 ? \"\" : parse_XLUnicodeString2(blob, length, opts); }\n\n/* [MS-XLS] 2.5.344 */\nfunction parse_XTI(blob, length, opts) {\n\tvar w = opts.biff > 8 ? 4 : 2;\n\tvar iSupBook = blob.read_shift(w), itabFirst = blob.read_shift(w,'i'), itabLast = blob.read_shift(w,'i');\n\treturn [iSupBook, itabFirst, itabLast];\n}\n\n/* [MS-XLS] 2.5.218 */\nfunction parse_RkRec(blob) {\n\tvar ixfe = blob.read_shift(2);\n\tvar RK = parse_RkNumber(blob);\n\treturn [ixfe, RK];\n}\n\n/* [MS-XLS] 2.5.1 */\nfunction parse_AddinUdf(blob, length, opts) {\n\tblob.l += 4; length -= 4;\n\tvar l = blob.l + length;\n\tvar udfName = parse_ShortXLUnicodeString(blob, length, opts);\n\tvar cb = blob.read_shift(2);\n\tl -= blob.l;\n\tif(cb !== l) throw new Error(\"Malformed AddinUdf: padding = \" + l + \" != \" + cb);\n\tblob.l += cb;\n\treturn udfName;\n}\n\n/* [MS-XLS] 2.5.209 TODO: Check sizes */\nfunction parse_Ref8U(blob/*::, length*/) {\n\tvar rwFirst = blob.read_shift(2);\n\tvar rwLast = blob.read_shift(2);\n\tvar colFirst = blob.read_shift(2);\n\tvar colLast = blob.read_shift(2);\n\treturn {s:{c:colFirst, r:rwFirst}, e:{c:colLast,r:rwLast}};\n}\nfunction write_Ref8U(r/*:Range*/, o) {\n\tif(!o) o = new_buf(8);\n\to.write_shift(2, r.s.r);\n\to.write_shift(2, r.e.r);\n\to.write_shift(2, r.s.c);\n\to.write_shift(2, r.e.c);\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.211 */\nfunction parse_RefU(blob/*::, length*/) {\n\tvar rwFirst = blob.read_shift(2);\n\tvar rwLast = blob.read_shift(2);\n\tvar colFirst = blob.read_shift(1);\n\tvar colLast = blob.read_shift(1);\n\treturn {s:{c:colFirst, r:rwFirst}, e:{c:colLast,r:rwLast}};\n}\n\n/* [MS-XLS] 2.5.207 */\nvar parse_Ref = parse_RefU;\n\n/* [MS-XLS] 2.5.143 */\nfunction parse_FtCmo(blob/*::, length*/) {\n\tblob.l += 4;\n\tvar ot = blob.read_shift(2);\n\tvar id = blob.read_shift(2);\n\tvar flags = blob.read_shift(2);\n\tblob.l+=12;\n\treturn [id, ot, flags];\n}\n\n/* [MS-XLS] 2.5.149 */\nfunction parse_FtNts(blob) {\n\tvar out = {};\n\tblob.l += 4;\n\tblob.l += 16; // GUID TODO\n\tout.fSharedNote = blob.read_shift(2);\n\tblob.l += 4;\n\treturn out;\n}\n\n/* [MS-XLS] 2.5.142 */\nfunction parse_FtCf(blob) {\n\tvar out = {};\n\tblob.l += 4;\n\tblob.cf = blob.read_shift(2);\n\treturn out;\n}\n\n/* [MS-XLS] 2.5.140 - 2.5.154 and friends */\nfunction parse_FtSkip(blob) { blob.l += 2; blob.l += blob.read_shift(2); }\nvar FtTab = {\n\t/*::[*/0x00/*::]*/: parse_FtSkip, /* FtEnd */\n\t/*::[*/0x04/*::]*/: parse_FtSkip, /* FtMacro */\n\t/*::[*/0x05/*::]*/: parse_FtSkip, /* FtButton */\n\t/*::[*/0x06/*::]*/: parse_FtSkip, /* FtGmo */\n\t/*::[*/0x07/*::]*/: parse_FtCf, /* FtCf */\n\t/*::[*/0x08/*::]*/: parse_FtSkip, /* FtPioGrbit */\n\t/*::[*/0x09/*::]*/: parse_FtSkip, /* FtPictFmla */\n\t/*::[*/0x0A/*::]*/: parse_FtSkip, /* FtCbls */\n\t/*::[*/0x0B/*::]*/: parse_FtSkip, /* FtRbo */\n\t/*::[*/0x0C/*::]*/: parse_FtSkip, /* FtSbs */\n\t/*::[*/0x0D/*::]*/: parse_FtNts, /* FtNts */\n\t/*::[*/0x0E/*::]*/: parse_FtSkip, /* FtSbsFmla */\n\t/*::[*/0x0F/*::]*/: parse_FtSkip, /* FtGboData */\n\t/*::[*/0x10/*::]*/: parse_FtSkip, /* FtEdoData */\n\t/*::[*/0x11/*::]*/: parse_FtSkip, /* FtRboData */\n\t/*::[*/0x12/*::]*/: parse_FtSkip, /* FtCblsData */\n\t/*::[*/0x13/*::]*/: parse_FtSkip, /* FtLbsData */\n\t/*::[*/0x14/*::]*/: parse_FtSkip, /* FtCblsFmla */\n\t/*::[*/0x15/*::]*/: parse_FtCmo\n};\nfunction parse_FtArray(blob, length/*::, ot*/) {\n\tvar tgt = blob.l + length;\n\tvar fts = [];\n\twhile(blob.l < tgt) {\n\t\tvar ft = blob.read_shift(2);\n\t\tblob.l-=2;\n\t\ttry {\n\t\t\tfts.push(FtTab[ft](blob, tgt - blob.l));\n\t\t} catch(e) { blob.l = tgt; return fts; }\n\t}\n\tif(blob.l != tgt) blob.l = tgt; //throw new Error(\"bad Object Ft-sequence\");\n\treturn fts;\n}\n\n/* --- 2.4 Records --- */\n\n/* [MS-XLS] 2.4.21 */\nfunction parse_BOF(blob, length) {\n\tvar o = {BIFFVer:0, dt:0};\n\to.BIFFVer = blob.read_shift(2); length -= 2;\n\tif(length >= 2) { o.dt = blob.read_shift(2); blob.l -= 2; }\n\tswitch(o.BIFFVer) {\n\t\tcase 0x0600: /* BIFF8 */\n\t\tcase 0x0500: /* BIFF5 */\n\t\tcase 0x0400: /* BIFF4 */\n\t\tcase 0x0300: /* BIFF3 */\n\t\tcase 0x0200: /* BIFF2 */\n\t\tcase 0x0002: case 0x0007: /* BIFF2 */\n\t\t\tbreak;\n\t\tdefault: if(length > 6) throw new Error(\"Unexpected BIFF Ver \" + o.BIFFVer);\n\t}\n\n\tblob.read_shift(length);\n\treturn o;\n}\nfunction write_BOF(wb/*:Workbook*/, t/*:number*/, o) {\n\tvar h = 0x0600, w = 16;\n\tswitch(o.bookType) {\n\t\tcase 'biff8': break;\n\t\tcase 'biff5': h = 0x0500; w = 8; break;\n\t\tcase 'biff4': h = 0x0004; w = 6; break;\n\t\tcase 'biff3': h = 0x0003; w = 6; break;\n\t\tcase 'biff2': h = 0x0002; w = 4; break;\n\t\tcase 'xla': break;\n\t\tdefault: throw new Error(\"unsupported BIFF version\");\n\t}\n\tvar out = new_buf(w);\n\tout.write_shift(2, h);\n\tout.write_shift(2, t);\n\tif(w > 4) out.write_shift(2, 0x7262);\n\tif(w > 6) out.write_shift(2, 0x07CD);\n\tif(w > 8) {\n\t\tout.write_shift(2, 0xC009);\n\t\tout.write_shift(2, 0x0001);\n\t\tout.write_shift(2, 0x0706);\n\t\tout.write_shift(2, 0x0000);\n\t}\n\treturn out;\n}\n\n\n/* [MS-XLS] 2.4.146 */\nfunction parse_InterfaceHdr(blob, length) {\n\tif(length === 0) return 0x04b0;\n\tif((blob.read_shift(2))!==0x04b0){/* empty */}\n\treturn 0x04b0;\n}\n\n\n/* [MS-XLS] 2.4.349 */\nfunction parse_WriteAccess(blob, length, opts) {\n\tif(opts.enc) { blob.l += length; return \"\"; }\n\tvar l = blob.l;\n\t// TODO: make sure XLUnicodeString doesnt overrun\n\tvar UserName = parse_XLUnicodeString2(blob, 0, opts);\n\tblob.read_shift(length + l - blob.l);\n\treturn UserName;\n}\nfunction write_WriteAccess(s/*:string*/, opts) {\n\tvar b8 = !opts || opts.biff == 8;\n\tvar o = new_buf(b8 ? 112 : 54);\n\to.write_shift(opts.biff == 8 ? 2 : 1, 7);\n\tif(b8) o.write_shift(1, 0);\n\to.write_shift(4, 0x33336853);\n\to.write_shift(4, (0x00534A74 | (b8 ? 0 : 0x20000000)));\n\twhile(o.l < o.length) o.write_shift(1, (b8 ? 0 : 32));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.351 */\nfunction parse_WsBool(blob, length, opts) {\n\tvar flags = opts && opts.biff == 8 || length == 2 ? blob.read_shift(2) : (blob.l += length, 0);\n\treturn { fDialog: flags & 0x10, fBelow: flags & 0x40, fRight: flags & 0x80 };\n}\n\n/* [MS-XLS] 2.4.28 */\nfunction parse_BoundSheet8(blob, length, opts) {\n\tvar pos = blob.read_shift(4);\n\tvar hidden = blob.read_shift(1) & 0x03;\n\tvar dt = blob.read_shift(1);\n\tswitch(dt) {\n\t\tcase 0: dt = 'Worksheet'; break;\n\t\tcase 1: dt = 'Macrosheet'; break;\n\t\tcase 2: dt = 'Chartsheet'; break;\n\t\tcase 6: dt = 'VBAModule'; break;\n\t}\n\tvar name = parse_ShortXLUnicodeString(blob, 0, opts);\n\tif(name.length === 0) name = \"Sheet1\";\n\treturn { pos:pos, hs:hidden, dt:dt, name:name };\n}\nfunction write_BoundSheet8(data, opts) {\n\tvar w = (!opts || opts.biff >= 8 ? 2 : 1);\n\tvar o = new_buf(8 + w * data.name.length);\n\to.write_shift(4, data.pos);\n\to.write_shift(1, data.hs || 0);\n\to.write_shift(1, data.dt);\n\to.write_shift(1, data.name.length);\n\tif(opts.biff >= 8) o.write_shift(1, 1);\n\to.write_shift(w * data.name.length, data.name, opts.biff < 8 ? 'sbcs' : 'utf16le');\n\tvar out = o.slice(0, o.l);\n\tout.l = o.l; return out;\n}\n\n/* [MS-XLS] 2.4.265 TODO */\nfunction parse_SST(blob, length)/*:SST*/ {\n\tvar end = blob.l + length;\n\tvar cnt = blob.read_shift(4);\n\tvar ucnt = blob.read_shift(4);\n\tvar strs/*:SST*/ = ([]/*:any*/);\n\tfor(var i = 0; i != ucnt && blob.l < end; ++i) {\n\t\tstrs.push(parse_XLUnicodeRichExtendedString(blob));\n\t}\n\tstrs.Count = cnt; strs.Unique = ucnt;\n\treturn strs;\n}\nfunction write_SST(sst, opts) {\n\tvar header = new_buf(8);\n\theader.write_shift(4, sst.Count);\n\theader.write_shift(4, sst.Unique);\n\tvar strs = [];\n\tfor(var j = 0; j < sst.length; ++j) strs[j] = write_XLUnicodeRichExtendedString(sst[j], opts);\n\tvar o = bconcat([header].concat(strs));\n\t/*::(*/o/*:: :any)*/.parts = [header.length].concat(strs.map(function(str) { return str.length; }));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.107 */\nfunction parse_ExtSST(blob, length) {\n\tvar extsst = {};\n\textsst.dsst = blob.read_shift(2);\n\tblob.l += length-2;\n\treturn extsst;\n}\n\n\n/* [MS-XLS] 2.4.221 TODO: check BIFF2-4 */\nfunction parse_Row(blob) {\n\tvar z = ({}/*:any*/);\n\tz.r = blob.read_shift(2);\n\tz.c = blob.read_shift(2);\n\tz.cnt = blob.read_shift(2) - z.c;\n\tvar miyRw = blob.read_shift(2);\n\tblob.l += 4; // reserved(2), unused(2)\n\tvar flags = blob.read_shift(1); // various flags\n\tblob.l += 3; // reserved(8), ixfe(12), flags(4)\n\tif(flags & 0x07) z.level = flags & 0x07;\n\t// collapsed: flags & 0x10\n\tif(flags & 0x20) z.hidden = true;\n\tif(flags & 0x40) z.hpt = miyRw / 20;\n\treturn z;\n}\n\n\n/* [MS-XLS] 2.4.125 */\nfunction parse_ForceFullCalculation(blob) {\n\tvar header = parse_frtHeader(blob);\n\tif(header.type != 0x08A3) throw new Error(\"Invalid Future Record \" + header.type);\n\tvar fullcalc = blob.read_shift(4);\n\treturn fullcalc !== 0x0;\n}\n\n\n\n\n\n/* [MS-XLS] 2.4.215 rt */\nfunction parse_RecalcId(blob) {\n\tblob.read_shift(2);\n\treturn blob.read_shift(4);\n}\n\n/* [MS-XLS] 2.4.87 */\nfunction parse_DefaultRowHeight(blob, length, opts) {\n\tvar f = 0;\n\tif(!(opts && opts.biff == 2)) {\n\t\tf = blob.read_shift(2);\n\t}\n\tvar miyRw = blob.read_shift(2);\n\tif((opts && opts.biff == 2)) {\n\t\tf = 1 - (miyRw >> 15); miyRw &= 0x7fff;\n\t}\n\tvar fl = {Unsynced:f&1,DyZero:(f&2)>>1,ExAsc:(f&4)>>2,ExDsc:(f&8)>>3};\n\treturn [fl, miyRw];\n}\n\n/* [MS-XLS] 2.4.345 TODO */\nfunction parse_Window1(blob) {\n\tvar xWn = blob.read_shift(2), yWn = blob.read_shift(2), dxWn = blob.read_shift(2), dyWn = blob.read_shift(2);\n\tvar flags = blob.read_shift(2), iTabCur = blob.read_shift(2), iTabFirst = blob.read_shift(2);\n\tvar ctabSel = blob.read_shift(2), wTabRatio = blob.read_shift(2);\n\treturn { Pos: [xWn, yWn], Dim: [dxWn, dyWn], Flags: flags, CurTab: iTabCur,\n\t\tFirstTab: iTabFirst, Selected: ctabSel, TabRatio: wTabRatio };\n}\nfunction write_Window1(/*::opts*/) {\n\tvar o = new_buf(18);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0x7260);\n\to.write_shift(2, 0x44c0);\n\to.write_shift(2, 0x38);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 1);\n\to.write_shift(2, 0x01f4);\n\treturn o;\n}\n/* [MS-XLS] 2.4.346 TODO */\nfunction parse_Window2(blob, length, opts) {\n\tif(opts && opts.biff >= 2 && opts.biff < 5) return {};\n\tvar f = blob.read_shift(2);\n\treturn { RTL: f & 0x40 };\n}\nfunction write_Window2(view) {\n\tvar o = new_buf(18), f = 0x6b6;\n\tif(view && view.RTL) f |= 0x40;\n\to.write_shift(2, f);\n\to.write_shift(4, 0);\n\to.write_shift(4, 64);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.189 TODO */\nfunction parse_Pane(/*blob, length, opts*/) {\n}\n\n/* [MS-XLS] 2.4.122 TODO */\nfunction parse_Font(blob, length, opts) {\n\tvar o/*:any*/ = {\n\t\tdyHeight: blob.read_shift(2),\n\t\tfl: blob.read_shift(2)\n\t};\n\tswitch((opts && opts.biff) || 8) {\n\t\tcase 2: break;\n\t\tcase 3: case 4: blob.l += 2; break;\n\t\tdefault: blob.l += 10; break;\n\t}\n\to.name = parse_ShortXLUnicodeString(blob, 0, opts);\n\treturn o;\n}\nfunction write_Font(data, opts) {\n\tvar name = data.name || \"Arial\";\n\tvar b5 = (opts && (opts.biff == 5)), w = (b5 ? (15 + name.length) : (16 + 2 * name.length));\n\tvar o = new_buf(w);\n\to.write_shift(2, (data.sz || 12) * 20);\n\to.write_shift(4, 0);\n\to.write_shift(2, 400);\n\to.write_shift(4, 0);\n\to.write_shift(2, 0);\n\to.write_shift(1, name.length);\n\tif(!b5) o.write_shift(1, 1);\n\to.write_shift((b5 ? 1 : 2) * name.length, name, (b5 ? \"sbcs\" : \"utf16le\"));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.149 */\nfunction parse_LabelSst(blob) {\n\tvar cell = parse_XLSCell(blob);\n\tcell.isst = blob.read_shift(4);\n\treturn cell;\n}\nfunction write_LabelSst(R/*:number*/, C/*:number*/, v/*:number*/, os/*:number*/ /*::, opts*/) {\n\tvar o = new_buf(10);\n\twrite_XLSCell(R, C, os, o);\n\to.write_shift(4, v);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.148 */\nfunction parse_Label(blob, length, opts) {\n\tif(opts.biffguess && opts.biff == 2) opts.biff = 5;\n\tvar target = blob.l + length;\n\tvar cell = parse_XLSCell(blob, 6);\n\tif(opts.biff == 2) blob.l++;\n\tvar str = parse_XLUnicodeString(blob, target - blob.l, opts);\n\tcell.val = str;\n\treturn cell;\n}\nfunction write_Label(R/*:number*/, C/*:number*/, v/*:string*/, os/*:number*/, opts) {\n\tvar b8 = !opts || opts.biff == 8;\n\tvar o = new_buf(6 + 2 + (+b8) + (1 + b8) * v.length);\n\twrite_XLSCell(R, C, os, o);\n\to.write_shift(2, v.length);\n\tif(b8) o.write_shift(1, 1);\n\to.write_shift((1 + b8) * v.length, v, b8 ? 'utf16le' : 'sbcs');\n\treturn o;\n}\n\n\n/* [MS-XLS] 2.4.126 Number Formats */\nfunction parse_Format(blob, length, opts) {\n\tvar numFmtId = blob.read_shift(2);\n\tvar fmtstr = parse_XLUnicodeString2(blob, 0, opts);\n\treturn [numFmtId, fmtstr];\n}\nfunction write_Format(i/*:number*/, f/*:string*/, opts, o) {\n\tvar b5 = (opts && (opts.biff == 5));\n\tif(!o) o = new_buf(b5 ? (3 + f.length) : (5 + 2 * f.length));\n\to.write_shift(2, i);\n\to.write_shift((b5 ? 1 : 2), f.length);\n\tif(!b5) o.write_shift(1, 1);\n\to.write_shift((b5 ? 1 : 2) * f.length, f, (b5 ? 'sbcs' : 'utf16le'));\n\tvar out = (o.length > o.l) ? o.slice(0, o.l) : o;\n\tif(out.l == null) out.l = out.length;\n\treturn out;\n}\nvar parse_BIFF2Format = parse_XLUnicodeString2;\n\n/* [MS-XLS] 2.4.90 */\nfunction parse_Dimensions(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar w = opts.biff == 8 || !opts.biff ? 4 : 2;\n\tvar r = blob.read_shift(w), R = blob.read_shift(w);\n\tvar c = blob.read_shift(2), C = blob.read_shift(2);\n\tblob.l = end;\n\treturn {s: {r:r, c:c}, e: {r:R, c:C}};\n}\nfunction write_Dimensions(range, opts) {\n\tvar w = opts.biff == 8 || !opts.biff ? 4 : 2;\n\tvar o = new_buf(2*w + 6);\n\to.write_shift(w, range.s.r);\n\to.write_shift(w, range.e.r + 1);\n\to.write_shift(2, range.s.c);\n\to.write_shift(2, range.e.c + 1);\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.220 */\nfunction parse_RK(blob) {\n\tvar rw = blob.read_shift(2), col = blob.read_shift(2);\n\tvar rkrec = parse_RkRec(blob);\n\treturn {r:rw, c:col, ixfe:rkrec[0], rknum:rkrec[1]};\n}\n\n/* [MS-XLS] 2.4.175 */\nfunction parse_MulRk(blob, length) {\n\tvar target = blob.l + length - 2;\n\tvar rw = blob.read_shift(2), col = blob.read_shift(2);\n\tvar rkrecs = [];\n\twhile(blob.l < target) rkrecs.push(parse_RkRec(blob));\n\tif(blob.l !== target) throw new Error(\"MulRK read error\");\n\tvar lastcol = blob.read_shift(2);\n\tif(rkrecs.length != lastcol - col + 1) throw new Error(\"MulRK length mismatch\");\n\treturn {r:rw, c:col, C:lastcol, rkrec:rkrecs};\n}\n/* [MS-XLS] 2.4.174 */\nfunction parse_MulBlank(blob, length) {\n\tvar target = blob.l + length - 2;\n\tvar rw = blob.read_shift(2), col = blob.read_shift(2);\n\tvar ixfes = [];\n\twhile(blob.l < target) ixfes.push(blob.read_shift(2));\n\tif(blob.l !== target) throw new Error(\"MulBlank read error\");\n\tvar lastcol = blob.read_shift(2);\n\tif(ixfes.length != lastcol - col + 1) throw new Error(\"MulBlank length mismatch\");\n\treturn {r:rw, c:col, C:lastcol, ixfe:ixfes};\n}\n\n/* [MS-XLS] 2.5.20 2.5.249 TODO: interpret values here */\nfunction parse_CellStyleXF(blob, length, style, opts) {\n\tvar o = {};\n\tvar a = blob.read_shift(4), b = blob.read_shift(4);\n\tvar c = blob.read_shift(4), d = blob.read_shift(2);\n\to.patternType = XLSFillPattern[c >> 26];\n\n\tif(!opts.cellStyles) return o;\n\to.alc = a & 0x07;\n\to.fWrap = (a >> 3) & 0x01;\n\to.alcV = (a >> 4) & 0x07;\n\to.fJustLast = (a >> 7) & 0x01;\n\to.trot = (a >> 8) & 0xFF;\n\to.cIndent = (a >> 16) & 0x0F;\n\to.fShrinkToFit = (a >> 20) & 0x01;\n\to.iReadOrder = (a >> 22) & 0x02;\n\to.fAtrNum = (a >> 26) & 0x01;\n\to.fAtrFnt = (a >> 27) & 0x01;\n\to.fAtrAlc = (a >> 28) & 0x01;\n\to.fAtrBdr = (a >> 29) & 0x01;\n\to.fAtrPat = (a >> 30) & 0x01;\n\to.fAtrProt = (a >> 31) & 0x01;\n\n\to.dgLeft = b & 0x0F;\n\to.dgRight = (b >> 4) & 0x0F;\n\to.dgTop = (b >> 8) & 0x0F;\n\to.dgBottom = (b >> 12) & 0x0F;\n\to.icvLeft = (b >> 16) & 0x7F;\n\to.icvRight = (b >> 23) & 0x7F;\n\to.grbitDiag = (b >> 30) & 0x03;\n\n\to.icvTop = c & 0x7F;\n\to.icvBottom = (c >> 7) & 0x7F;\n\to.icvDiag = (c >> 14) & 0x7F;\n\to.dgDiag = (c >> 21) & 0x0F;\n\n\to.icvFore = d & 0x7F;\n\to.icvBack = (d >> 7) & 0x7F;\n\to.fsxButton = (d >> 14) & 0x01;\n\treturn o;\n}\n//function parse_CellXF(blob, length, opts) {return parse_CellStyleXF(blob,length,0, opts);}\n//function parse_StyleXF(blob, length, opts) {return parse_CellStyleXF(blob,length,1, opts);}\n\n/* [MS-XLS] 2.4.353 TODO: actually do this right */\nfunction parse_XF(blob, length, opts) {\n\tvar o = {};\n\to.ifnt = blob.read_shift(2); o.numFmtId = blob.read_shift(2); o.flags = blob.read_shift(2);\n\to.fStyle = (o.flags >> 2) & 0x01;\n\tlength -= 6;\n\to.data = parse_CellStyleXF(blob, length, o.fStyle, opts);\n\treturn o;\n}\nfunction write_XF(data, ixfeP, opts, o) {\n\tvar b5 = (opts && (opts.biff == 5));\n\tif(!o) o = new_buf(b5 ? 16 : 20);\n\to.write_shift(2, 0);\n\tif(data.style) {\n\t\to.write_shift(2, (data.numFmtId||0));\n\t\to.write_shift(2, 0xFFF4);\n\t} else {\n\t\to.write_shift(2, (data.numFmtId||0));\n\t\to.write_shift(2, (ixfeP<<4));\n\t}\n\tvar f = 0;\n\tif(data.numFmtId > 0 && b5) f |= 0x0400;\n\to.write_shift(4, f);\n\to.write_shift(4, 0);\n\tif(!b5) o.write_shift(4, 0);\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.134 */\nfunction parse_Guts(blob) {\n\tblob.l += 4;\n\tvar out = [blob.read_shift(2), blob.read_shift(2)];\n\tif(out[0] !== 0) out[0]--;\n\tif(out[1] !== 0) out[1]--;\n\tif(out[0] > 7 || out[1] > 7) throw new Error(\"Bad Gutters: \" + out.join(\"|\"));\n\treturn out;\n}\nfunction write_Guts(guts/*:Array*/) {\n\tvar o = new_buf(8);\n\to.write_shift(4, 0);\n\to.write_shift(2, guts[0] ? guts[0] + 1 : 0);\n\to.write_shift(2, guts[1] ? guts[1] + 1 : 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.24 */\nfunction parse_BoolErr(blob, length, opts) {\n\tvar cell = parse_XLSCell(blob, 6);\n\tif(opts.biff == 2 || length == 9) ++blob.l;\n\tvar val = parse_Bes(blob, 2);\n\tcell.val = val;\n\tcell.t = (val === true || val === false) ? 'b' : 'e';\n\treturn cell;\n}\nfunction write_BoolErr(R/*:number*/, C/*:number*/, v, os/*:number*/, opts, t/*:string*/) {\n\tvar o = new_buf(8);\n\twrite_XLSCell(R, C, os, o);\n\twrite_Bes(v, t, o);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.180 Number */\nfunction parse_Number(blob, length, opts) {\n\tif(opts.biffguess && opts.biff == 2) opts.biff = 5;\n\tvar cell = parse_XLSCell(blob, 6);\n\tvar xnum = parse_Xnum(blob, 8);\n\tcell.val = xnum;\n\treturn cell;\n}\nfunction write_Number(R/*:number*/, C/*:number*/, v, os/*:: :number, opts*/) {\n\tvar o = new_buf(14);\n\twrite_XLSCell(R, C, os, o);\n\twrite_Xnum(v, o);\n\treturn o;\n}\n\nvar parse_XLHeaderFooter = parse_OptXLUnicodeString; // TODO: parse 2.4.136\n\n/* [MS-XLS] 2.4.271 */\nfunction parse_SupBook(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar ctab = blob.read_shift(2);\n\tvar cch = blob.read_shift(2);\n\topts.sbcch = cch;\n\tif(cch == 0x0401 || cch == 0x3A01) return [cch, ctab];\n\tif(cch < 0x01 || cch >0xff) throw new Error(\"Unexpected SupBook type: \"+cch);\n\tvar virtPath = parse_XLUnicodeStringNoCch(blob, cch);\n\t/* TODO: 2.5.277 Virtual Path */\n\tvar rgst = [];\n\twhile(end > blob.l) rgst.push(parse_XLUnicodeString(blob));\n\treturn [cch, ctab, virtPath, rgst];\n}\n\n/* [MS-XLS] 2.4.105 TODO */\nfunction parse_ExternName(blob, length, opts) {\n\tvar flags = blob.read_shift(2);\n\tvar body;\n\tvar o = ({\n\t\tfBuiltIn: flags & 0x01,\n\t\tfWantAdvise: (flags >>> 1) & 0x01,\n\t\tfWantPict: (flags >>> 2) & 0x01,\n\t\tfOle: (flags >>> 3) & 0x01,\n\t\tfOleLink: (flags >>> 4) & 0x01,\n\t\tcf: (flags >>> 5) & 0x3FF,\n\t\tfIcon: flags >>> 15 & 0x01\n\t}/*:any*/);\n\tif(opts.sbcch === 0x3A01) body = parse_AddinUdf(blob, length-2, opts);\n\t//else throw new Error(\"unsupported SupBook cch: \" + opts.sbcch);\n\to.body = body || blob.read_shift(length-2);\n\tif(typeof body === \"string\") o.Name = body;\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.150 TODO */\nvar XLSLblBuiltIn = [\n\t\"_xlnm.Consolidate_Area\",\n\t\"_xlnm.Auto_Open\",\n\t\"_xlnm.Auto_Close\",\n\t\"_xlnm.Extract\",\n\t\"_xlnm.Database\",\n\t\"_xlnm.Criteria\",\n\t\"_xlnm.Print_Area\",\n\t\"_xlnm.Print_Titles\",\n\t\"_xlnm.Recorder\",\n\t\"_xlnm.Data_Form\",\n\t\"_xlnm.Auto_Activate\",\n\t\"_xlnm.Auto_Deactivate\",\n\t\"_xlnm.Sheet_Title\",\n\t\"_xlnm._FilterDatabase\"\n];\nfunction parse_Lbl(blob, length, opts) {\n\tvar target = blob.l + length;\n\tvar flags = blob.read_shift(2);\n\tvar chKey = blob.read_shift(1);\n\tvar cch = blob.read_shift(1);\n\tvar cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\tvar itab = 0;\n\tif(!opts || opts.biff >= 5) {\n\t\tif(opts.biff != 5) blob.l += 2;\n\t\titab = blob.read_shift(2);\n\t\tif(opts.biff == 5) blob.l += 2;\n\t\tblob.l += 4;\n\t}\n\tvar name = parse_XLUnicodeStringNoCch(blob, cch, opts);\n\tif(flags & 0x20) name = XLSLblBuiltIn[name.charCodeAt(0)];\n\tvar npflen = target - blob.l; if(opts && opts.biff == 2) --npflen;\n\t/*jshint -W018 */\n\tvar rgce = (target == blob.l || cce === 0 || !(npflen > 0)) ? [] : parse_NameParsedFormula(blob, npflen, opts, cce);\n\t/*jshint +W018 */\n\treturn {\n\t\tchKey: chKey,\n\t\tName: name,\n\t\titab: itab,\n\t\trgce: rgce\n\t};\n}\n\n/* [MS-XLS] 2.4.106 TODO: verify filename encoding */\nfunction parse_ExternSheet(blob, length, opts) {\n\tif(opts.biff < 8) return parse_BIFF5ExternSheet(blob, length, opts);\n\tvar o = [], target = blob.l + length, len = blob.read_shift(opts.biff > 8 ? 4 : 2);\n\twhile(len-- !== 0) o.push(parse_XTI(blob, opts.biff > 8 ? 12 : 6, opts));\n\t\t// [iSupBook, itabFirst, itabLast];\n\tif(blob.l != target) throw new Error(\"Bad ExternSheet: \" + blob.l + \" != \" + target);\n\treturn o;\n}\nfunction parse_BIFF5ExternSheet(blob, length, opts) {\n\tif(blob[blob.l + 1] == 0x03) blob[blob.l]++;\n\tvar o = parse_ShortXLUnicodeString(blob, length, opts);\n\treturn o.charCodeAt(0) == 0x03 ? o.slice(1) : o;\n}\n\n/* [MS-XLS] 2.4.176 TODO: check older biff */\nfunction parse_NameCmt(blob, length, opts) {\n\tif(opts.biff < 8) { blob.l += length; return; }\n\tvar cchName = blob.read_shift(2);\n\tvar cchComment = blob.read_shift(2);\n\tvar name = parse_XLUnicodeStringNoCch(blob, cchName, opts);\n\tvar comment = parse_XLUnicodeStringNoCch(blob, cchComment, opts);\n\treturn [name, comment];\n}\n\n/* [MS-XLS] 2.4.260 */\nfunction parse_ShrFmla(blob, length, opts) {\n\tvar ref = parse_RefU(blob, 6);\n\tblob.l++;\n\tvar cUse = blob.read_shift(1);\n\tlength -= 8;\n\treturn [parse_SharedParsedFormula(blob, length, opts), cUse, ref];\n}\n\n/* [MS-XLS] 2.4.4 TODO */\nfunction parse_Array(blob, length, opts) {\n\tvar ref = parse_Ref(blob, 6);\n\t/* TODO: fAlwaysCalc */\n\tswitch(opts.biff) {\n\t\tcase 2: blob.l ++; length -= 7; break;\n\t\tcase 3: case 4: blob.l += 2; length -= 8; break;\n\t\tdefault: blob.l += 6; length -= 12;\n\t}\n\treturn [ref, parse_ArrayParsedFormula(blob, length, opts, ref)];\n}\n\n/* [MS-XLS] 2.4.173 */\nfunction parse_MTRSettings(blob) {\n\tvar fMTREnabled = blob.read_shift(4) !== 0x00;\n\tvar fUserSetThreadCount = blob.read_shift(4) !== 0x00;\n\tvar cUserThreadCount = blob.read_shift(4);\n\treturn [fMTREnabled, fUserSetThreadCount, cUserThreadCount];\n}\n\n/* [MS-XLS] 2.5.186 TODO: BIFF5 */\nfunction parse_NoteSh(blob, length, opts) {\n\tif(opts.biff < 8) return;\n\tvar row = blob.read_shift(2), col = blob.read_shift(2);\n\tvar flags = blob.read_shift(2), idObj = blob.read_shift(2);\n\tvar stAuthor = parse_XLUnicodeString2(blob, 0, opts);\n\tif(opts.biff < 8) blob.read_shift(1);\n\treturn [{r:row,c:col}, stAuthor, idObj, flags];\n}\n\n/* [MS-XLS] 2.4.179 */\nfunction parse_Note(blob, length, opts) {\n\t/* TODO: Support revisions */\n\treturn parse_NoteSh(blob, length, opts);\n}\n\n/* [MS-XLS] 2.4.168 */\nfunction parse_MergeCells(blob, length)/*:Array*/ {\n\tvar merges/*:Array*/ = [];\n\tvar cmcs = blob.read_shift(2);\n\twhile (cmcs--) merges.push(parse_Ref8U(blob,length));\n\treturn merges;\n}\nfunction write_MergeCells(merges/*:Array*/) {\n\tvar o = new_buf(2 + merges.length * 8);\n\to.write_shift(2, merges.length);\n\tfor(var i = 0; i < merges.length; ++i) write_Ref8U(merges[i], o);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.181 TODO: parse all the things! */\nfunction parse_Obj(blob, length, opts) {\n\tif(opts && opts.biff < 8) return parse_BIFF5Obj(blob, length, opts);\n\tvar cmo = parse_FtCmo(blob, 22); // id, ot, flags\n\tvar fts = parse_FtArray(blob, length-22, cmo[1]);\n\treturn { cmo: cmo, ft:fts };\n}\n/* from older spec */\nvar parse_BIFF5OT = {\n0x08: function(blob, length) {\n\tvar tgt = blob.l + length;\n\tblob.l += 10; // todo\n\tvar cf = blob.read_shift(2);\n\tblob.l += 4;\n\tblob.l += 2; //var cbPictFmla = blob.read_shift(2);\n\tblob.l += 2;\n\tblob.l += 2; //var grbit = blob.read_shift(2);\n\tblob.l += 4;\n\tvar cchName = blob.read_shift(1);\n\tblob.l += cchName; // TODO: stName\n\tblob.l = tgt; // TODO: fmla\n\treturn { fmt:cf };\n}\n};\n\nfunction parse_BIFF5Obj(blob, length, opts) {\n\tblob.l += 4; //var cnt = blob.read_shift(4);\n\tvar ot = blob.read_shift(2);\n\tvar id = blob.read_shift(2);\n\tvar grbit = blob.read_shift(2);\n\tblob.l += 2; //var colL = blob.read_shift(2);\n\tblob.l += 2; //var dxL = blob.read_shift(2);\n\tblob.l += 2; //var rwT = blob.read_shift(2);\n\tblob.l += 2; //var dyT = blob.read_shift(2);\n\tblob.l += 2; //var colR = blob.read_shift(2);\n\tblob.l += 2; //var dxR = blob.read_shift(2);\n\tblob.l += 2; //var rwB = blob.read_shift(2);\n\tblob.l += 2; //var dyB = blob.read_shift(2);\n\tblob.l += 2; //var cbMacro = blob.read_shift(2);\n\tblob.l += 6;\n\tlength -= 36;\n\tvar fts = [];\n\tfts.push((parse_BIFF5OT[ot]||parsenoop)(blob, length, opts));\n\treturn { cmo: [id, ot, grbit], ft:fts };\n}\n\n/* [MS-XLS] 2.4.329 TODO: parse properly */\nfunction parse_TxO(blob, length, opts) {\n\tvar s = blob.l;\n\tvar texts = \"\";\ntry {\n\tblob.l += 4;\n\tvar ot = (opts.lastobj||{cmo:[0,0]}).cmo[1];\n\tvar controlInfo; // eslint-disable-line no-unused-vars\n\tif([0,5,7,11,12,14].indexOf(ot) == -1) blob.l += 6;\n\telse controlInfo = parse_ControlInfo(blob, 6, opts); // eslint-disable-line no-unused-vars\n\tvar cchText = blob.read_shift(2);\n\t/*var cbRuns = */blob.read_shift(2);\n\t/*var ifntEmpty = */parseuint16(blob, 2);\n\tvar len = blob.read_shift(2);\n\tblob.l += len;\n\t//var fmla = parse_ObjFmla(blob, s + length - blob.l);\n\n\tfor(var i = 1; i < blob.lens.length-1; ++i) {\n\t\tif(blob.l-s != blob.lens[i]) throw new Error(\"TxO: bad continue record\");\n\t\tvar hdr = blob[blob.l];\n\t\tvar t = parse_XLUnicodeStringNoCch(blob, blob.lens[i+1]-blob.lens[i]-1);\n\t\ttexts += t;\n\t\tif(texts.length >= (hdr ? cchText : 2*cchText)) break;\n\t}\n\tif(texts.length !== cchText && texts.length !== cchText*2) {\n\t\tthrow new Error(\"cchText: \" + cchText + \" != \" + texts.length);\n\t}\n\n\tblob.l = s + length;\n\t/* [MS-XLS] 2.5.272 TxORuns */\n//\tvar rgTxoRuns = [];\n//\tfor(var j = 0; j != cbRuns/8-1; ++j) blob.l += 8;\n//\tvar cchText2 = blob.read_shift(2);\n//\tif(cchText2 !== cchText) throw new Error(\"TxOLastRun mismatch: \" + cchText2 + \" \" + cchText);\n//\tblob.l += 6;\n//\tif(s + length != blob.l) throw new Error(\"TxO \" + (s + length) + \", at \" + blob.l);\n\treturn { t: texts };\n} catch(e) { blob.l = s + length; return { t: texts }; }\n}\n\n/* [MS-XLS] 2.4.140 */\nfunction parse_HLink(blob, length) {\n\tvar ref = parse_Ref8U(blob, 8);\n\tblob.l += 16; /* CLSID */\n\tvar hlink = parse_Hyperlink(blob, length-24);\n\treturn [ref, hlink];\n}\nfunction write_HLink(hl) {\n\tvar O = new_buf(24);\n\tvar ref = decode_cell(hl[0]);\n\tO.write_shift(2, ref.r); O.write_shift(2, ref.r);\n\tO.write_shift(2, ref.c); O.write_shift(2, ref.c);\n\tvar clsid = \"d0 c9 ea 79 f9 ba ce 11 8c 82 00 aa 00 4b a9 0b\".split(\" \");\n\tfor(var i = 0; i < 16; ++i) O.write_shift(1, parseInt(clsid[i], 16));\n\treturn bconcat([O, write_Hyperlink(hl[1])]);\n}\n\n\n/* [MS-XLS] 2.4.141 */\nfunction parse_HLinkTooltip(blob, length) {\n\tblob.read_shift(2);\n\tvar ref = parse_Ref8U(blob, 8);\n\tvar wzTooltip = blob.read_shift((length-10)/2, 'dbcs-cont');\n\twzTooltip = wzTooltip.replace(chr0,\"\");\n\treturn [ref, wzTooltip];\n}\nfunction write_HLinkTooltip(hl) {\n\tvar TT = hl[1].Tooltip;\n\tvar O = new_buf(10 + 2 * (TT.length + 1));\n\tO.write_shift(2, 0x0800);\n\tvar ref = decode_cell(hl[0]);\n\tO.write_shift(2, ref.r); O.write_shift(2, ref.r);\n\tO.write_shift(2, ref.c); O.write_shift(2, ref.c);\n\tfor(var i = 0; i < TT.length; ++i) O.write_shift(2, TT.charCodeAt(i));\n\tO.write_shift(2, 0);\n\treturn O;\n}\n\n/* [MS-XLS] 2.4.63 */\nfunction parse_Country(blob)/*:[string|number, string|number]*/ {\n\tvar o = [0,0], d;\n\td = blob.read_shift(2); o[0] = CountryEnum[d] || d;\n\td = blob.read_shift(2); o[1] = CountryEnum[d] || d;\n\treturn o;\n}\nfunction write_Country(o) {\n\tif(!o) o = new_buf(4);\n\to.write_shift(2, 0x01);\n\to.write_shift(2, 0x01);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.50 ClrtClient */\nfunction parse_ClrtClient(blob) {\n\tvar ccv = blob.read_shift(2);\n\tvar o = [];\n\twhile(ccv-->0) o.push(parse_LongRGB(blob, 8));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.188 */\nfunction parse_Palette(blob) {\n\tvar ccv = blob.read_shift(2);\n\tvar o = [];\n\twhile(ccv-->0) o.push(parse_LongRGB(blob, 8));\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.354 */\nfunction parse_XFCRC(blob) {\n\tblob.l += 2;\n\tvar o = {cxfs:0, crc:0};\n\to.cxfs = blob.read_shift(2);\n\to.crc = blob.read_shift(4);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.53 TODO: parse flags */\n/* [MS-XLSB] 2.4.323 TODO: parse flags */\nfunction parse_ColInfo(blob, length, opts) {\n\tif(!opts.cellStyles) return parsenoop(blob, length);\n\tvar w = opts && opts.biff >= 12 ? 4 : 2;\n\tvar colFirst = blob.read_shift(w);\n\tvar colLast = blob.read_shift(w);\n\tvar coldx = blob.read_shift(w);\n\tvar ixfe = blob.read_shift(w);\n\tvar flags = blob.read_shift(2);\n\tif(w == 2) blob.l += 2;\n\tvar o = ({s:colFirst, e:colLast, w:coldx, ixfe:ixfe, flags:flags}/*:any*/);\n\tif(opts.biff >= 5 || !opts.biff) o.level = (flags >> 8) & 0x7;\n\treturn o;\n}\nfunction write_ColInfo(col, idx) {\n\tvar o = new_buf(12);\n\to.write_shift(2, idx);\n\to.write_shift(2, idx);\n\to.write_shift(2, col.width * 256);\n\to.write_shift(2, 0);\n\tvar f = 0;\n\tif(col.hidden) f |= 1;\n\to.write_shift(1, f);\n\tf = col.level || 0;\n\to.write_shift(1, f);\n\to.write_shift(2, 0);\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.257 */\nfunction parse_Setup(blob, length) {\n\tvar o = {};\n\tif(length < 32) return o;\n\tblob.l += 16;\n\to.header = parse_Xnum(blob, 8);\n\to.footer = parse_Xnum(blob, 8);\n\tblob.l += 2;\n\treturn o;\n}\n\n/* [MS-XLS] 2.4.261 */\nfunction parse_ShtProps(blob, length, opts) {\n\tvar def = {area:false};\n\tif(opts.biff != 5) { blob.l += length; return def; }\n\tvar d = blob.read_shift(1); blob.l += 3;\n\tif((d & 0x10)) def.area = true;\n\treturn def;\n}\n\n/* [MS-XLS] 2.4.241 */\nfunction write_RRTabId(n/*:number*/) {\n\tvar out = new_buf(2 * n);\n\tfor(var i = 0; i < n; ++i) out.write_shift(2, i+1);\n\treturn out;\n}\n\nvar parse_Blank = parse_XLSCell; /* [MS-XLS] 2.4.20 Just the cell */\nvar parse_Scl = parseuint16a; /* [MS-XLS] 2.4.247 num, den */\nvar parse_String = parse_XLUnicodeString; /* [MS-XLS] 2.4.268 */\n\n/* --- Specific to versions before BIFF8 --- */\nfunction parse_ImData(blob) {\n\tvar cf = blob.read_shift(2);\n\tvar env = blob.read_shift(2);\n\tvar lcb = blob.read_shift(4);\n\tvar o = {fmt:cf, env:env, len:lcb, data:blob.slice(blob.l,blob.l+lcb)};\n\tblob.l += lcb;\n\treturn o;\n}\n\n/* BIFF2_??? where ??? is the name from [XLS] */\nfunction parse_BIFF2STR(blob, length, opts) {\n\tif(opts.biffguess && opts.biff == 5) opts.biff = 2;\n\tvar cell = parse_XLSCell(blob, 6);\n\t++blob.l;\n\tvar str = parse_XLUnicodeString2(blob, length-7, opts);\n\tcell.t = 'str';\n\tcell.val = str;\n\treturn cell;\n}\n\nfunction parse_BIFF2NUM(blob/*::, length*/) {\n\tvar cell = parse_XLSCell(blob, 6);\n\t++blob.l;\n\tvar num = parse_Xnum(blob, 8);\n\tcell.t = 'n';\n\tcell.val = num;\n\treturn cell;\n}\nfunction write_BIFF2NUM(r/*:number*/, c/*:number*/, val/*:number*/) {\n\tvar out = new_buf(15);\n\twrite_BIFF2Cell(out, r, c);\n\tout.write_shift(8, val, 'f');\n\treturn out;\n}\n\nfunction parse_BIFF2INT(blob) {\n\tvar cell = parse_XLSCell(blob, 6);\n\t++blob.l;\n\tvar num = blob.read_shift(2);\n\tcell.t = 'n';\n\tcell.val = num;\n\treturn cell;\n}\nfunction write_BIFF2INT(r/*:number*/, c/*:number*/, val/*:number*/) {\n\tvar out = new_buf(9);\n\twrite_BIFF2Cell(out, r, c);\n\tout.write_shift(2, val);\n\treturn out;\n}\n\nfunction parse_BIFF2STRING(blob) {\n\tvar cch = blob.read_shift(1);\n\tif(cch === 0) { blob.l++; return \"\"; }\n\treturn blob.read_shift(cch, 'sbcs-cont');\n}\n\n/* TODO: convert to BIFF8 font struct */\nfunction parse_BIFF2FONTXTRA(blob, length) {\n\tblob.l += 6; // unknown\n\tblob.l += 2; // font weight \"bls\"\n\tblob.l += 1; // charset\n\tblob.l += 3; // unknown\n\tblob.l += 1; // font family\n\tblob.l += length - 13;\n}\n\n/* TODO: parse rich text runs */\nfunction parse_RString(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar cell = parse_XLSCell(blob, 6);\n\tvar cch = blob.read_shift(2);\n\tvar str = parse_XLUnicodeStringNoCch(blob, cch, opts);\n\tblob.l = end;\n\tcell.t = 'str';\n\tcell.val = str;\n\treturn cell;\n}\n/* from js-harb (C) 2014-present SheetJS */\nvar DBF_SUPPORTED_VERSIONS = [0x02, 0x03, 0x30, 0x31, 0x83, 0x8B, 0x8C, 0xF5];\nvar DBF = /*#__PURE__*/(function() {\nvar dbf_codepage_map = {\n\t/* Code Pages Supported by Visual FoxPro */\n\t/*::[*/0x01/*::]*/: 437, /*::[*/0x02/*::]*/: 850,\n\t/*::[*/0x03/*::]*/: 1252, /*::[*/0x04/*::]*/: 10000,\n\t/*::[*/0x64/*::]*/: 852, /*::[*/0x65/*::]*/: 866,\n\t/*::[*/0x66/*::]*/: 865, /*::[*/0x67/*::]*/: 861,\n\t/*::[*/0x68/*::]*/: 895, /*::[*/0x69/*::]*/: 620,\n\t/*::[*/0x6A/*::]*/: 737, /*::[*/0x6B/*::]*/: 857,\n\t/*::[*/0x78/*::]*/: 950, /*::[*/0x79/*::]*/: 949,\n\t/*::[*/0x7A/*::]*/: 936, /*::[*/0x7B/*::]*/: 932,\n\t/*::[*/0x7C/*::]*/: 874, /*::[*/0x7D/*::]*/: 1255,\n\t/*::[*/0x7E/*::]*/: 1256, /*::[*/0x96/*::]*/: 10007,\n\t/*::[*/0x97/*::]*/: 10029, /*::[*/0x98/*::]*/: 10006,\n\t/*::[*/0xC8/*::]*/: 1250, /*::[*/0xC9/*::]*/: 1251,\n\t/*::[*/0xCA/*::]*/: 1254, /*::[*/0xCB/*::]*/: 1253,\n\n\t/* shapefile DBF extension */\n\t/*::[*/0x00/*::]*/: 20127, /*::[*/0x08/*::]*/: 865,\n\t/*::[*/0x09/*::]*/: 437, /*::[*/0x0A/*::]*/: 850,\n\t/*::[*/0x0B/*::]*/: 437, /*::[*/0x0D/*::]*/: 437,\n\t/*::[*/0x0E/*::]*/: 850, /*::[*/0x0F/*::]*/: 437,\n\t/*::[*/0x10/*::]*/: 850, /*::[*/0x11/*::]*/: 437,\n\t/*::[*/0x12/*::]*/: 850, /*::[*/0x13/*::]*/: 932,\n\t/*::[*/0x14/*::]*/: 850, /*::[*/0x15/*::]*/: 437,\n\t/*::[*/0x16/*::]*/: 850, /*::[*/0x17/*::]*/: 865,\n\t/*::[*/0x18/*::]*/: 437, /*::[*/0x19/*::]*/: 437,\n\t/*::[*/0x1A/*::]*/: 850, /*::[*/0x1B/*::]*/: 437,\n\t/*::[*/0x1C/*::]*/: 863, /*::[*/0x1D/*::]*/: 850,\n\t/*::[*/0x1F/*::]*/: 852, /*::[*/0x22/*::]*/: 852,\n\t/*::[*/0x23/*::]*/: 852, /*::[*/0x24/*::]*/: 860,\n\t/*::[*/0x25/*::]*/: 850, /*::[*/0x26/*::]*/: 866,\n\t/*::[*/0x37/*::]*/: 850, /*::[*/0x40/*::]*/: 852,\n\t/*::[*/0x4D/*::]*/: 936, /*::[*/0x4E/*::]*/: 949,\n\t/*::[*/0x4F/*::]*/: 950, /*::[*/0x50/*::]*/: 874,\n\t/*::[*/0x57/*::]*/: 1252, /*::[*/0x58/*::]*/: 1252,\n\t/*::[*/0x59/*::]*/: 1252, /*::[*/0x6C/*::]*/: 863,\n\t/*::[*/0x86/*::]*/: 737, /*::[*/0x87/*::]*/: 852,\n\t/*::[*/0x88/*::]*/: 857, /*::[*/0xCC/*::]*/: 1257,\n\n\t/*::[*/0xFF/*::]*/: 16969\n};\nvar dbf_reverse_map = evert({\n\t/*::[*/0x01/*::]*/: 437, /*::[*/0x02/*::]*/: 850,\n\t/*::[*/0x03/*::]*/: 1252, /*::[*/0x04/*::]*/: 10000,\n\t/*::[*/0x64/*::]*/: 852, /*::[*/0x65/*::]*/: 866,\n\t/*::[*/0x66/*::]*/: 865, /*::[*/0x67/*::]*/: 861,\n\t/*::[*/0x68/*::]*/: 895, /*::[*/0x69/*::]*/: 620,\n\t/*::[*/0x6A/*::]*/: 737, /*::[*/0x6B/*::]*/: 857,\n\t/*::[*/0x78/*::]*/: 950, /*::[*/0x79/*::]*/: 949,\n\t/*::[*/0x7A/*::]*/: 936, /*::[*/0x7B/*::]*/: 932,\n\t/*::[*/0x7C/*::]*/: 874, /*::[*/0x7D/*::]*/: 1255,\n\t/*::[*/0x7E/*::]*/: 1256, /*::[*/0x96/*::]*/: 10007,\n\t/*::[*/0x97/*::]*/: 10029, /*::[*/0x98/*::]*/: 10006,\n\t/*::[*/0xC8/*::]*/: 1250, /*::[*/0xC9/*::]*/: 1251,\n\t/*::[*/0xCA/*::]*/: 1254, /*::[*/0xCB/*::]*/: 1253,\n\t/*::[*/0x00/*::]*/: 20127\n});\n/* TODO: find an actual specification */\nfunction dbf_to_aoa(buf, opts)/*:AOA*/ {\n\tvar out/*:AOA*/ = [];\n\tvar d/*:Block*/ = (new_raw_buf(1)/*:any*/);\n\tswitch(opts.type) {\n\t\tcase 'base64': d = s2a(Base64_decode(buf)); break;\n\t\tcase 'binary': d = s2a(buf); break;\n\t\tcase 'buffer':\n\t\tcase 'array': d = buf; break;\n\t}\n\tprep_blob(d, 0);\n\n\t/* header */\n\tvar ft = d.read_shift(1);\n\tvar memo = !!(ft & 0x88);\n\tvar vfp = false, l7 = false;\n\tswitch(ft) {\n\t\tcase 0x02: break; // dBASE II\n\t\tcase 0x03: break; // dBASE III\n\t\tcase 0x30: vfp = true; memo = true; break; // VFP\n\t\tcase 0x31: vfp = true; memo = true; break; // VFP with autoincrement\n\t\t// 0x43 dBASE IV SQL table files\n\t\t// 0x63 dBASE IV SQL system files\n\t\tcase 0x83: break; // dBASE III with memo\n\t\tcase 0x8B: break; // dBASE IV with memo\n\t\tcase 0x8C: l7 = true; break; // dBASE Level 7 with memo\n\t\t// case 0xCB dBASE IV SQL table files with memo\n\t\tcase 0xF5: break; // FoxPro 2.x with memo\n\t\t// case 0xFB FoxBASE\n\t\tdefault: throw new Error(\"DBF Unsupported Version: \" + ft.toString(16));\n\t}\n\n\tvar nrow = 0, fpos = 0x0209;\n\tif(ft == 0x02) nrow = d.read_shift(2);\n\td.l += 3; // dBASE II stores DDMMYY date, others use YYMMDD\n\tif(ft != 0x02) nrow = d.read_shift(4);\n\tif(nrow > 1048576) nrow = 1e6;\n\n\tif(ft != 0x02) fpos = d.read_shift(2); // header length\n\tvar rlen = d.read_shift(2); // record length\n\n\tvar /*flags = 0,*/ current_cp = opts.codepage || 1252;\n\tif(ft != 0x02) { // 20 reserved bytes\n\t\td.l+=16;\n\t\t/*flags = */d.read_shift(1);\n\t\t//if(memo && ((flags & 0x02) === 0)) throw new Error(\"DBF Flags \" + flags.toString(16) + \" ft \" + ft.toString(16));\n\n\t\t/* codepage present in FoxPro and dBASE Level 7 */\n\t\tif(d[d.l] !== 0) current_cp = dbf_codepage_map[d[d.l]];\n\t\td.l+=1;\n\n\t\td.l+=2;\n\t}\n\tif(l7) d.l += 36; // Level 7: 32 byte \"Language driver name\", 4 byte reserved\n\n/*:: type DBFField = { name:string; len:number; type:string; } */\n\tvar fields/*:Array*/ = [], field/*:DBFField*/ = ({}/*:any*/);\n\tvar hend = Math.min(d.length, (ft == 0x02 ? 0x209 : (fpos - 10 - (vfp ? 264 : 0))));\n\tvar ww = l7 ? 32 : 11;\n\twhile(d.l < hend && d[d.l] != 0x0d) {\n\t\tfield = ({}/*:any*/);\n\t\tfield.name = $cptable.utils.decode(current_cp, d.slice(d.l, d.l+ww)).replace(/[\\u0000\\r\\n].*$/g,\"\");\n\t\td.l += ww;\n\t\tfield.type = String.fromCharCode(d.read_shift(1));\n\t\tif(ft != 0x02 && !l7) field.offset = d.read_shift(4);\n\t\tfield.len = d.read_shift(1);\n\t\tif(ft == 0x02) field.offset = d.read_shift(2);\n\t\tfield.dec = d.read_shift(1);\n\t\tif(field.name.length) fields.push(field);\n\t\tif(ft != 0x02) d.l += l7 ? 13 : 14;\n\t\tswitch(field.type) {\n\t\t\tcase 'B': // Double (VFP) / Binary (dBASE L7)\n\t\t\t\tif((!vfp || field.len != 8) && opts.WTF) console.log('Skipping ' + field.name + ':' + field.type);\n\t\t\t\tbreak;\n\t\t\tcase 'G': // General (FoxPro and dBASE L7)\n\t\t\tcase 'P': // Picture (FoxPro and dBASE L7)\n\t\t\t\tif(opts.WTF) console.log('Skipping ' + field.name + ':' + field.type);\n\t\t\t\tbreak;\n\t\t\tcase '+': // Autoincrement (dBASE L7 only)\n\t\t\tcase '0': // _NullFlags (VFP only)\n\t\t\tcase '@': // Timestamp (dBASE L7 only)\n\t\t\tcase 'C': // Character (dBASE II)\n\t\t\tcase 'D': // Date (dBASE III)\n\t\t\tcase 'F': // Float (dBASE IV)\n\t\t\tcase 'I': // Long (VFP and dBASE L7)\n\t\t\tcase 'L': // Logical (dBASE II)\n\t\t\tcase 'M': // Memo (dBASE III)\n\t\t\tcase 'N': // Number (dBASE II)\n\t\t\tcase 'O': // Double (dBASE L7 only)\n\t\t\tcase 'T': // Datetime (VFP only)\n\t\t\tcase 'Y': // Currency (VFP only)\n\t\t\t\tbreak;\n\t\t\tdefault: throw new Error('Unknown Field Type: ' + field.type);\n\t\t}\n\t}\n\n\tif(d[d.l] !== 0x0D) d.l = fpos-1;\n\tif(d.read_shift(1) !== 0x0D) throw new Error(\"DBF Terminator not found \" + d.l + \" \" + d[d.l]);\n\td.l = fpos;\n\n\t/* data */\n\tvar R = 0, C = 0;\n\tout[0] = [];\n\tfor(C = 0; C != fields.length; ++C) out[0][C] = fields[C].name;\n\twhile(nrow-- > 0) {\n\t\tif(d[d.l] === 0x2A) {\n\t\t\t// TODO: record marked as deleted -- create a hidden row?\n\t\t\td.l+=rlen;\n\t\t\tcontinue;\n\t\t}\n\t\t++d.l;\n\t\tout[++R] = []; C = 0;\n\t\tfor(C = 0; C != fields.length; ++C) {\n\t\t\tvar dd = d.slice(d.l, d.l+fields[C].len); d.l+=fields[C].len;\n\t\t\tprep_blob(dd, 0);\n\t\t\tvar s = $cptable.utils.decode(current_cp, dd);\n\t\t\tswitch(fields[C].type) {\n\t\t\t\tcase 'C':\n\t\t\t\t\t// NOTE: it is conventional to write ' / / ' for empty dates\n\t\t\t\t\tif(s.trim().length) out[R][C] = s.replace(/\\s+$/,\"\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'D':\n\t\t\t\t\tif(s.length === 8) out[R][C] = new Date(+s.slice(0,4), +s.slice(4,6)-1, +s.slice(6,8));\n\t\t\t\t\telse out[R][C] = s;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'F': out[R][C] = parseFloat(s.trim()); break;\n\t\t\t\tcase '+': case 'I': out[R][C] = l7 ? dd.read_shift(-4, 'i') ^ 0x80000000 : dd.read_shift(4, 'i'); break;\n\t\t\t\tcase 'L': switch(s.trim().toUpperCase()) {\n\t\t\t\t\tcase 'Y': case 'T': out[R][C] = true; break;\n\t\t\t\t\tcase 'N': case 'F': out[R][C] = false; break;\n\t\t\t\t\tcase '': case '?': break;\n\t\t\t\t\tdefault: throw new Error(\"DBF Unrecognized L:|\" + s + \"|\");\n\t\t\t\t\t} break;\n\t\t\t\tcase 'M': /* TODO: handle memo files */\n\t\t\t\t\tif(!memo) throw new Error(\"DBF Unexpected MEMO for type \" + ft.toString(16));\n\t\t\t\t\tout[R][C] = \"##MEMO##\" + (l7 ? parseInt(s.trim(), 10): dd.read_shift(4));\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'N':\n\t\t\t\t\ts = s.replace(/\\u0000/g,\"\").trim();\n\t\t\t\t\t// NOTE: dBASE II interprets \" . \" as 0\n\t\t\t\t\tif(s && s != \".\") out[R][C] = +s || 0; break;\n\t\t\t\tcase '@':\n\t\t\t\t\t// NOTE: dBASE specs appear to be incorrect\n\t\t\t\t\tout[R][C] = new Date(dd.read_shift(-8, 'f') - 0x388317533400);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'T': out[R][C] = new Date((dd.read_shift(4) - 0x253D8C) * 0x5265C00 + dd.read_shift(4)); break;\n\t\t\t\tcase 'Y': out[R][C] = dd.read_shift(4,'i')/1e4 + (dd.read_shift(4, 'i')/1e4)*Math.pow(2,32); break;\n\t\t\t\tcase 'O': out[R][C] = -dd.read_shift(-8, 'f'); break;\n\t\t\t\tcase 'B': if(vfp && fields[C].len == 8) { out[R][C] = dd.read_shift(8,'f'); break; }\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 'G': case 'P': dd.l += fields[C].len; break;\n\t\t\t\tcase '0':\n\t\t\t\t\tif(fields[C].name === '_NullFlags') break;\n\t\t\t\t\t/* falls through */\n\t\t\t\tdefault: throw new Error(\"DBF Unsupported data type \" + fields[C].type);\n\t\t\t}\n\t\t}\n\t}\n\tif(ft != 0x02) if(d.l < d.length && d[d.l++] != 0x1A) throw new Error(\"DBF EOF Marker missing \" + (d.l-1) + \" of \" + d.length + \" \" + d[d.l-1].toString(16));\n\tif(opts && opts.sheetRows) out = out.slice(0, opts.sheetRows);\n\topts.DBF = fields;\n\treturn out;\n}\n\nfunction dbf_to_sheet(buf, opts)/*:Worksheet*/ {\n\tvar o = opts || {};\n\tif(!o.dateNF) o.dateNF = \"yyyymmdd\";\n\tvar ws = aoa_to_sheet(dbf_to_aoa(buf, o), o);\n\tws[\"!cols\"] = o.DBF.map(function(field) { return {\n\t\twch: field.len,\n\t\tDBF: field\n\t};});\n\tdelete o.DBF;\n\treturn ws;\n}\n\nfunction dbf_to_workbook(buf, opts)/*:Workbook*/ {\n\ttry { return sheet_to_workbook(dbf_to_sheet(buf, opts), opts); }\n\tcatch(e) { if(opts && opts.WTF) throw e; }\n\treturn ({SheetNames:[],Sheets:{}});\n}\n\nvar _RLEN = { 'B': 8, 'C': 250, 'L': 1, 'D': 8, '?': 0, '': 0 };\nfunction sheet_to_dbf(ws/*:Worksheet*/, opts/*:WriteOpts*/) {\n\tvar o = opts || {};\n\tif(+o.codepage >= 0) set_cp(+o.codepage);\n\tif(o.type == \"string\") throw new Error(\"Cannot write DBF to JS string\");\n\tvar ba = buf_array();\n\tvar aoa/*:AOA*/ = sheet_to_json(ws, {header:1, raw:true, cellDates:true});\n\tvar headers = aoa[0], data = aoa.slice(1), cols = ws[\"!cols\"] || [];\n\tvar i = 0, j = 0, hcnt = 0, rlen = 1;\n\tfor(i = 0; i < headers.length; ++i) {\n\t\tif(((cols[i]||{}).DBF||{}).name) { headers[i] = cols[i].DBF.name; ++hcnt; continue; }\n\t\tif(headers[i] == null) continue;\n\t\t++hcnt;\n\t\tif(typeof headers[i] === 'number') headers[i] = headers[i].toString(10);\n\t\tif(typeof headers[i] !== 'string') throw new Error(\"DBF Invalid column name \" + headers[i] + \" |\" + (typeof headers[i]) + \"|\");\n\t\tif(headers.indexOf(headers[i]) !== i) for(j=0; j<1024;++j)\n\t\t\tif(headers.indexOf(headers[i] + \"_\" + j) == -1) { headers[i] += \"_\" + j; break; }\n\t}\n\tvar range = safe_decode_range(ws['!ref']);\n\tvar coltypes/*:Array*/ = [];\n\tvar colwidths/*:Array*/ = [];\n\tvar coldecimals/*:Array*/ = [];\n\tfor(i = 0; i <= range.e.c - range.s.c; ++i) {\n\t\tvar guess = '', _guess = '', maxlen = 0;\n\t\tvar col/*:Array*/ = [];\n\t\tfor(j=0; j < data.length; ++j) {\n\t\t\tif(data[j][i] != null) col.push(data[j][i]);\n\t\t}\n\t\tif(col.length == 0 || headers[i] == null) { coltypes[i] = '?'; continue; }\n\t\tfor(j = 0; j < col.length; ++j) {\n\t\t\tswitch(typeof col[j]) {\n\t\t\t\t/* TODO: check if L2 compat is desired */\n\t\t\t\tcase 'number': _guess = 'B'; break;\n\t\t\t\tcase 'string': _guess = 'C'; break;\n\t\t\t\tcase 'boolean': _guess = 'L'; break;\n\t\t\t\tcase 'object': _guess = col[j] instanceof Date ? 'D' : 'C'; break;\n\t\t\t\tdefault: _guess = 'C';\n\t\t\t}\n\t\t\tmaxlen = Math.max(maxlen, String(col[j]).length);\n\t\t\tguess = guess && guess != _guess ? 'C' : _guess;\n\t\t\t//if(guess == 'C') break;\n\t\t}\n\t\tif(maxlen > 250) maxlen = 250;\n\t\t_guess = ((cols[i]||{}).DBF||{}).type;\n\t\t/* TODO: more fine grained control over DBF type resolution */\n\t\tif(_guess == 'C') {\n\t\t\tif(cols[i].DBF.len > maxlen) maxlen = cols[i].DBF.len;\n\t\t}\n\t\tif(guess == 'B' && _guess == 'N') {\n\t\t\tguess = 'N';\n\t\t\tcoldecimals[i] = cols[i].DBF.dec;\n\t\t\tmaxlen = cols[i].DBF.len;\n\t\t}\n\t\tcolwidths[i] = guess == 'C' || _guess == 'N' ? maxlen : (_RLEN[guess] || 0);\n\t\trlen += colwidths[i];\n\t\tcoltypes[i] = guess;\n\t}\n\n\tvar h = ba.next(32);\n\th.write_shift(4, 0x13021130);\n\th.write_shift(4, data.length);\n\th.write_shift(2, 296 + 32 * hcnt);\n\th.write_shift(2, rlen);\n\tfor(i=0; i < 4; ++i) h.write_shift(4, 0);\n\th.write_shift(4, 0x00000000 | ((+dbf_reverse_map[/*::String(*/current_ansi/*::)*/] || 0x03)<<8));\n\n\tfor(i = 0, j = 0; i < headers.length; ++i) {\n\t\tif(headers[i] == null) continue;\n\t\tvar hf = ba.next(32);\n\t\tvar _f = (headers[i].slice(-10) + \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\").slice(0, 11);\n\t\thf.write_shift(1, _f, \"sbcs\");\n\t\thf.write_shift(1, coltypes[i] == '?' ? 'C' : coltypes[i], \"sbcs\");\n\t\thf.write_shift(4, j);\n\t\thf.write_shift(1, colwidths[i] || _RLEN[coltypes[i]] || 0);\n\t\thf.write_shift(1, coldecimals[i] || 0);\n\t\thf.write_shift(1, 0x02);\n\t\thf.write_shift(4, 0);\n\t\thf.write_shift(1, 0);\n\t\thf.write_shift(4, 0);\n\t\thf.write_shift(4, 0);\n\t\tj += (colwidths[i] || _RLEN[coltypes[i]] || 0);\n\t}\n\n\tvar hb = ba.next(264);\n\thb.write_shift(4, 0x0000000D);\n\tfor(i=0; i < 65;++i) hb.write_shift(4, 0x00000000);\n\tfor(i=0; i < data.length; ++i) {\n\t\tvar rout = ba.next(rlen);\n\t\trout.write_shift(1, 0);\n\t\tfor(j=0; j\":190, \"?\":191, \"{\":223\n\t}/*:any*/);\n\tvar sylk_char_regex = new RegExp(\"\\u001BN(\" + keys(sylk_escapes).join(\"|\").replace(/\\|\\|\\|/, \"|\\\\||\").replace(/([?()+])/g,\"\\\\$1\") + \"|\\\\|)\", \"gm\");\n\tvar sylk_char_fn = function(_, $1){ var o = sylk_escapes[$1]; return typeof o == \"number\" ? _getansi(o) : o; };\n\tvar decode_sylk_char = function($$, $1, $2) { var newcc = (($1.charCodeAt(0) - 0x20)<<4) | ($2.charCodeAt(0) - 0x30); return newcc == 59 ? $$ : _getansi(newcc); };\n\tsylk_escapes[\"|\"] = 254;\n\t/* TODO: find an actual specification */\n\tfunction sylk_to_aoa(d/*:RawData*/, opts)/*:[AOA, Worksheet]*/ {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return sylk_to_aoa_str(Base64_decode(d), opts);\n\t\t\tcase 'binary': return sylk_to_aoa_str(d, opts);\n\t\t\tcase 'buffer': return sylk_to_aoa_str(has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d), opts);\n\t\t\tcase 'array': return sylk_to_aoa_str(cc2str(d), opts);\n\t\t}\n\t\tthrow new Error(\"Unrecognized type \" + opts.type);\n\t}\n\tfunction sylk_to_aoa_str(str/*:string*/, opts)/*:[AOA, Worksheet]*/ {\n\t\tvar records = str.split(/[\\n\\r]+/), R = -1, C = -1, ri = 0, rj = 0, arr/*:AOA*/ = [];\n\t\tvar formats/*:Array*/ = [];\n\t\tvar next_cell_format/*:string|null*/ = null;\n\t\tvar sht = {}, rowinfo/*:Array*/ = [], colinfo/*:Array*/ = [], cw/*:Array*/ = [];\n\t\tvar Mval = 0, j;\n\t\tif(+opts.codepage >= 0) set_cp(+opts.codepage);\n\t\tfor (; ri !== records.length; ++ri) {\n\t\t\tMval = 0;\n\t\t\tvar rstr=records[ri].trim().replace(/\\x1B([\\x20-\\x2F])([\\x30-\\x3F])/g, decode_sylk_char).replace(sylk_char_regex, sylk_char_fn);\n\t\t\tvar record=rstr.replace(/;;/g, \"\\u0000\").split(\";\").map(function(x) { return x.replace(/\\u0000/g, \";\"); });\n\t\t\tvar RT=record[0], val;\n\t\t\tif(rstr.length > 0) switch(RT) {\n\t\t\tcase 'ID': break; /* header */\n\t\t\tcase 'E': break; /* EOF */\n\t\t\tcase 'B': break; /* dimensions */\n\t\t\tcase 'O': break; /* options? */\n\t\t\tcase 'W': break; /* window? */\n\t\t\tcase 'P':\n\t\t\t\tif(record[1].charAt(0) == 'P')\n\t\t\t\t\tformats.push(rstr.slice(3).replace(/;;/g, \";\"));\n\t\t\t\tbreak;\n\t\t\tcase 'C':\n\t\t\tvar C_seen_K = false, C_seen_X = false, C_seen_S = false, C_seen_E = false, _R = -1, _C = -1;\n\t\t\tfor(rj=1; rj -1 && arr[_R][_C];\n\t\t\t\tif(!shrbase || !shrbase[1]) throw new Error(\"SYLK shared formula cannot find base\");\n\t\t\t\tarr[R][C][1] = shift_formula_str(shrbase[1], {r: R - _R, c: C - _C});\n\t\t\t}\n\t\t\tbreak;\n\t\t\tcase 'F':\n\t\t\tvar F_seen = 0;\n\t\t\tfor(rj=1; rj 0) { rowinfo[R].hpt = Mval; rowinfo[R].hpx = pt2px(Mval); }\n\t\t\t\t\telse if(Mval === 0) rowinfo[R].hidden = true;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault: if(opts && opts.WTF) throw new Error(\"SYLK bad record \" + rstr);\n\t\t\t}\n\t\t\tif(F_seen < 1) next_cell_format = null; break;\n\t\t\tdefault: if(opts && opts.WTF) throw new Error(\"SYLK bad record \" + rstr);\n\t\t\t}\n\t\t}\n\t\tif(rowinfo.length > 0) sht['!rows'] = rowinfo;\n\t\tif(colinfo.length > 0) sht['!cols'] = colinfo;\n\t\tif(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows);\n\t\treturn [arr, sht];\n\t}\n\n\tfunction sylk_to_sheet(d/*:RawData*/, opts)/*:Worksheet*/ {\n\t\tvar aoasht = sylk_to_aoa(d, opts);\n\t\tvar aoa = aoasht[0], ws = aoasht[1];\n\t\tvar o = aoa_to_sheet(aoa, opts);\n\t\tkeys(ws).forEach(function(k) { o[k] = ws[k]; });\n\t\treturn o;\n\t}\n\n\tfunction sylk_to_workbook(d/*:RawData*/, opts)/*:Workbook*/ { return sheet_to_workbook(sylk_to_sheet(d, opts), opts); }\n\n\tfunction write_ws_cell_sylk(cell/*:Cell*/, ws/*:Worksheet*/, R/*:number*/, C/*:number*//*::, opts*/)/*:string*/ {\n\t\tvar o = \"C;Y\" + (R+1) + \";X\" + (C+1) + \";K\";\n\t\tswitch(cell.t) {\n\t\t\tcase 'n':\n\t\t\t\to += (cell.v||0);\n\t\t\t\tif(cell.f && !cell.F) o += \";E\" + a1_to_rc(cell.f, {r:R, c:C}); break;\n\t\t\tcase 'b': o += cell.v ? \"TRUE\" : \"FALSE\"; break;\n\t\t\tcase 'e': o += cell.w || cell.v; break;\n\t\t\tcase 'd': o += '\"' + (cell.w || cell.v) + '\"'; break;\n\t\t\tcase 's': o += '\"' + cell.v.replace(/\"/g,\"\").replace(/;/g, \";;\") + '\"'; break;\n\t\t}\n\t\treturn o;\n\t}\n\n\tfunction write_ws_cols_sylk(out, cols) {\n\t\tcols.forEach(function(col, i) {\n\t\t\tvar rec = \"F;W\" + (i+1) + \" \" + (i+1) + \" \";\n\t\t\tif(col.hidden) rec += \"0\";\n\t\t\telse {\n\t\t\t\tif(typeof col.width == 'number' && !col.wpx) col.wpx = width2px(col.width);\n\t\t\t\tif(typeof col.wpx == 'number' && !col.wch) col.wch = px2char(col.wpx);\n\t\t\t\tif(typeof col.wch == 'number') rec += Math.round(col.wch);\n\t\t\t}\n\t\t\tif(rec.charAt(rec.length - 1) != \" \") out.push(rec);\n\t\t});\n\t}\n\n\tfunction write_ws_rows_sylk(out/*:Array*/, rows/*:Array*/) {\n\t\trows.forEach(function(row, i) {\n\t\t\tvar rec = \"F;\";\n\t\t\tif(row.hidden) rec += \"M0;\";\n\t\t\telse if(row.hpt) rec += \"M\" + 20 * row.hpt + \";\";\n\t\t\telse if(row.hpx) rec += \"M\" + 20 * px2pt(row.hpx) + \";\";\n\t\t\tif(rec.length > 2) out.push(rec + \"R\" + (i+1));\n\t\t});\n\t}\n\n\tfunction sheet_to_sylk(ws/*:Worksheet*/, opts/*:?any*/)/*:string*/ {\n\t\tvar preamble/*:Array*/ = [\"ID;PWXL;N;E\"], o/*:Array*/ = [];\n\t\tvar r = safe_decode_range(ws['!ref']), cell/*:Cell*/;\n\t\tvar dense = Array.isArray(ws);\n\t\tvar RS = \"\\r\\n\";\n\n\t\tpreamble.push(\"P;PGeneral\");\n\t\tpreamble.push(\"F;P0;DG0G8;M255\");\n\t\tif(ws['!cols']) write_ws_cols_sylk(preamble, ws['!cols']);\n\t\tif(ws['!rows']) write_ws_rows_sylk(preamble, ws['!rows']);\n\n\t\tpreamble.push(\"B;Y\" + (r.e.r - r.s.r + 1) + \";X\" + (r.e.c - r.s.c + 1) + \";D\" + [r.s.c,r.s.r,r.e.c,r.e.r].join(\" \"));\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[R]||[])[C]: ws[coord];\n\t\t\t\tif(!cell || (cell.v == null && (!cell.f || cell.F))) continue;\n\t\t\t\to.push(write_ws_cell_sylk(cell, ws, R, C, opts));\n\t\t\t}\n\t\t}\n\t\treturn preamble.join(RS) + RS + o.join(RS) + RS + \"E\" + RS;\n\t}\n\n\treturn {\n\t\tto_workbook: sylk_to_workbook,\n\t\tto_sheet: sylk_to_sheet,\n\t\tfrom_sheet: sheet_to_sylk\n\t};\n})();\n\nvar DIF = /*#__PURE__*/(function() {\n\tfunction dif_to_aoa(d/*:RawData*/, opts)/*:AOA*/ {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return dif_to_aoa_str(Base64_decode(d), opts);\n\t\t\tcase 'binary': return dif_to_aoa_str(d, opts);\n\t\t\tcase 'buffer': return dif_to_aoa_str(has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d), opts);\n\t\t\tcase 'array': return dif_to_aoa_str(cc2str(d), opts);\n\t\t}\n\t\tthrow new Error(\"Unrecognized type \" + opts.type);\n\t}\n\tfunction dif_to_aoa_str(str/*:string*/, opts)/*:AOA*/ {\n\t\tvar records = str.split('\\n'), R = -1, C = -1, ri = 0, arr/*:AOA*/ = [];\n\t\tfor (; ri !== records.length; ++ri) {\n\t\t\tif (records[ri].trim() === 'BOT') { arr[++R] = []; C = 0; continue; }\n\t\t\tif (R < 0) continue;\n\t\t\tvar metadata = records[ri].trim().split(\",\");\n\t\t\tvar type = metadata[0], value = metadata[1];\n\t\t\t++ri;\n\t\t\tvar data = records[ri] || \"\";\n\t\t\twhile(((data.match(/[\"]/g)||[]).length & 1) && ri < records.length - 1) data += \"\\n\" + records[++ri];\n\t\t\tdata = data.trim();\n\t\t\tswitch (+type) {\n\t\t\t\tcase -1:\n\t\t\t\t\tif (data === 'BOT') { arr[++R] = []; C = 0; continue; }\n\t\t\t\t\telse if (data !== 'EOD') throw new Error(\"Unrecognized DIF special command \" + data);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0:\n\t\t\t\t\tif(data === 'TRUE') arr[R][C] = true;\n\t\t\t\t\telse if(data === 'FALSE') arr[R][C] = false;\n\t\t\t\t\telse if(!isNaN(fuzzynum(value))) arr[R][C] = fuzzynum(value);\n\t\t\t\t\telse if(!isNaN(fuzzydate(value).getDate())) arr[R][C] = parseDate(value);\n\t\t\t\t\telse arr[R][C] = value;\n\t\t\t\t\t++C; break;\n\t\t\t\tcase 1:\n\t\t\t\t\tdata = data.slice(1,data.length-1);\n\t\t\t\t\tdata = data.replace(/\"\"/g, '\"');\n\t\t\t\t\tif(DIF_XL && data && data.match(/^=\".*\"$/)) data = data.slice(2, -1);\n\t\t\t\t\tarr[R][C++] = data !== '' ? data : null;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (data === 'EOD') break;\n\t\t}\n\t\tif(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows);\n\t\treturn arr;\n\t}\n\n\tfunction dif_to_sheet(str/*:string*/, opts)/*:Worksheet*/ { return aoa_to_sheet(dif_to_aoa(str, opts), opts); }\n\tfunction dif_to_workbook(str/*:string*/, opts)/*:Workbook*/ { return sheet_to_workbook(dif_to_sheet(str, opts), opts); }\n\n\tvar sheet_to_dif = /*#__PURE__*/(function() {\n\t\tvar push_field = function pf(o/*:Array*/, topic/*:string*/, v/*:number*/, n/*:number*/, s/*:string*/) {\n\t\t\to.push(topic);\n\t\t\to.push(v + \",\" + n);\n\t\t\to.push('\"' + s.replace(/\"/g,'\"\"') + '\"');\n\t\t};\n\t\tvar push_value = function po(o/*:Array*/, type/*:number*/, v/*:any*/, s/*:string*/) {\n\t\t\to.push(type + \",\" + v);\n\t\t\to.push(type == 1 ? '\"' + s.replace(/\"/g,'\"\"') + '\"' : s);\n\t\t};\n\t\treturn function sheet_to_dif(ws/*:Worksheet*//*::, opts:?any*/)/*:string*/ {\n\t\t\tvar o/*:Array*/ = [];\n\t\t\tvar r = safe_decode_range(ws['!ref']), cell/*:Cell*/;\n\t\t\tvar dense = Array.isArray(ws);\n\t\t\tpush_field(o, \"TABLE\", 0, 1, \"sheetjs\");\n\t\t\tpush_field(o, \"VECTORS\", 0, r.e.r - r.s.r + 1,\"\");\n\t\t\tpush_field(o, \"TUPLES\", 0, r.e.c - r.s.c + 1,\"\");\n\t\t\tpush_field(o, \"DATA\", 0, 0,\"\");\n\t\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\t\tpush_value(o, -1, 0, \"BOT\");\n\t\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\t\t\tcell = dense ? (ws[R]||[])[C] : ws[coord];\n\t\t\t\t\tif(!cell) { push_value(o, 1, 0, \"\"); continue;}\n\t\t\t\t\tswitch(cell.t) {\n\t\t\t\t\t\tcase 'n':\n\t\t\t\t\t\t\tvar val = DIF_XL ? cell.w : cell.v;\n\t\t\t\t\t\t\tif(!val && cell.v != null) val = cell.v;\n\t\t\t\t\t\t\tif(val == null) {\n\t\t\t\t\t\t\t\tif(DIF_XL && cell.f && !cell.F) push_value(o, 1, 0, \"=\" + cell.f);\n\t\t\t\t\t\t\t\telse push_value(o, 1, 0, \"\");\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse push_value(o, 0, val, \"V\");\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'b':\n\t\t\t\t\t\t\tpush_value(o, 0, cell.v ? 1 : 0, cell.v ? \"TRUE\" : \"FALSE\");\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 's':\n\t\t\t\t\t\t\tpush_value(o, 1, 0, (!DIF_XL || isNaN(cell.v)) ? cell.v : '=\"' + cell.v + '\"');\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'd':\n\t\t\t\t\t\t\tif(!cell.w) cell.w = SSF_format(cell.z || table_fmt[14], datenum(parseDate(cell.v)));\n\t\t\t\t\t\t\tif(DIF_XL) push_value(o, 0, cell.w, \"V\");\n\t\t\t\t\t\t\telse push_value(o, 1, 0, cell.w);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault: push_value(o, 1, 0, \"\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tpush_value(o, -1, 0, \"EOD\");\n\t\t\tvar RS = \"\\r\\n\";\n\t\t\tvar oo = o.join(RS);\n\t\t\t//while((oo.length & 0x7F) != 0) oo += \"\\0\";\n\t\t\treturn oo;\n\t\t};\n\t})();\n\treturn {\n\t\tto_workbook: dif_to_workbook,\n\t\tto_sheet: dif_to_sheet,\n\t\tfrom_sheet: sheet_to_dif\n\t};\n})();\n\nvar ETH = /*#__PURE__*/(function() {\n\tfunction decode(s/*:string*/)/*:string*/ { return s.replace(/\\\\b/g,\"\\\\\").replace(/\\\\c/g,\":\").replace(/\\\\n/g,\"\\n\"); }\n\tfunction encode(s/*:string*/)/*:string*/ { return s.replace(/\\\\/g, \"\\\\b\").replace(/:/g, \"\\\\c\").replace(/\\n/g,\"\\\\n\"); }\n\n\tfunction eth_to_aoa(str/*:string*/, opts)/*:AOA*/ {\n\t\tvar records = str.split('\\n'), R = -1, C = -1, ri = 0, arr/*:AOA*/ = [];\n\t\tfor (; ri !== records.length; ++ri) {\n\t\t\tvar record = records[ri].trim().split(\":\");\n\t\t\tif(record[0] !== 'cell') continue;\n\t\t\tvar addr = decode_cell(record[1]);\n\t\t\tif(arr.length <= addr.r) for(R = arr.length; R <= addr.r; ++R) if(!arr[R]) arr[R] = [];\n\t\t\tR = addr.r; C = addr.c;\n\t\t\tswitch(record[2]) {\n\t\t\t\tcase 't': arr[R][C] = decode(record[3]); break;\n\t\t\t\tcase 'v': arr[R][C] = +record[3]; break;\n\t\t\t\tcase 'vtf': var _f = record[record.length - 1];\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 'vtc':\n\t\t\t\t\tswitch(record[3]) {\n\t\t\t\t\t\tcase 'nl': arr[R][C] = +record[4] ? true : false; break;\n\t\t\t\t\t\tdefault: arr[R][C] = +record[4]; break;\n\t\t\t\t\t}\n\t\t\t\t\tif(record[2] == 'vtf') arr[R][C] = [arr[R][C], _f];\n\t\t\t}\n\t\t}\n\t\tif(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows);\n\t\treturn arr;\n\t}\n\n\tfunction eth_to_sheet(d/*:string*/, opts)/*:Worksheet*/ { return aoa_to_sheet(eth_to_aoa(d, opts), opts); }\n\tfunction eth_to_workbook(d/*:string*/, opts)/*:Workbook*/ { return sheet_to_workbook(eth_to_sheet(d, opts), opts); }\n\n\tvar header = [\n\t\t\"socialcalc:version:1.5\",\n\t\t\"MIME-Version: 1.0\",\n\t\t\"Content-Type: multipart/mixed; boundary=SocialCalcSpreadsheetControlSave\"\n\t].join(\"\\n\");\n\n\tvar sep = [\n\t\t\"--SocialCalcSpreadsheetControlSave\",\n\t\t\"Content-type: text/plain; charset=UTF-8\"\n\t].join(\"\\n\") + \"\\n\";\n\n\t/* TODO: the other parts */\n\tvar meta = [\n\t\t\"# SocialCalc Spreadsheet Control Save\",\n\t\t\"part:sheet\"\n\t].join(\"\\n\");\n\n\tvar end = \"--SocialCalcSpreadsheetControlSave--\";\n\n\tfunction sheet_to_eth_data(ws/*:Worksheet*/)/*:string*/ {\n\t\tif(!ws || !ws['!ref']) return \"\";\n\t\tvar o/*:Array*/ = [], oo/*:Array*/ = [], cell, coord = \"\";\n\t\tvar r = decode_range(ws['!ref']);\n\t\tvar dense = Array.isArray(ws);\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tcoord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[R]||[])[C] : ws[coord];\n\t\t\t\tif(!cell || cell.v == null || cell.t === 'z') continue;\n\t\t\t\too = [\"cell\", coord, 't'];\n\t\t\t\tswitch(cell.t) {\n\t\t\t\t\tcase 's': case 'str': oo.push(encode(cell.v)); break;\n\t\t\t\t\tcase 'n':\n\t\t\t\t\t\tif(!cell.f) { oo[2]='v'; oo[3]=cell.v; }\n\t\t\t\t\t\telse { oo[2]='vtf'; oo[3]='n'; oo[4]=cell.v; oo[5]=encode(cell.f); }\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'b':\n\t\t\t\t\t\too[2] = 'vt'+(cell.f?'f':'c'); oo[3]='nl'; oo[4]=cell.v?\"1\":\"0\";\n\t\t\t\t\t\too[5] = encode(cell.f||(cell.v?'TRUE':'FALSE'));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'd':\n\t\t\t\t\t\tvar t = datenum(parseDate(cell.v));\n\t\t\t\t\t\too[2] = 'vtc'; oo[3] = 'nd'; oo[4] = \"\"+t;\n\t\t\t\t\t\too[5] = cell.w || SSF_format(cell.z || table_fmt[14], t);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'e': continue;\n\t\t\t\t}\n\t\t\t\to.push(oo.join(\":\"));\n\t\t\t}\n\t\t}\n\t\to.push(\"sheet:c:\" + (r.e.c-r.s.c+1) + \":r:\" + (r.e.r-r.s.r+1) + \":tvf:1\");\n\t\to.push(\"valueformat:1:text-wiki\");\n\t\t//o.push(\"copiedfrom:\" + ws['!ref']); // clipboard only\n\t\treturn o.join(\"\\n\");\n\t}\n\n\tfunction sheet_to_eth(ws/*:Worksheet*//*::, opts:?any*/)/*:string*/ {\n\t\treturn [header, sep, meta, sep, sheet_to_eth_data(ws), end].join(\"\\n\");\n\t\t// return [\"version:1.5\", sheet_to_eth_data(ws)].join(\"\\n\"); // clipboard form\n\t}\n\n\treturn {\n\t\tto_workbook: eth_to_workbook,\n\t\tto_sheet: eth_to_sheet,\n\t\tfrom_sheet: sheet_to_eth\n\t};\n})();\n\nvar PRN = /*#__PURE__*/(function() {\n\tfunction set_text_arr(data/*:string*/, arr/*:AOA*/, R/*:number*/, C/*:number*/, o/*:any*/) {\n\t\tif(o.raw) arr[R][C] = data;\n\t\telse if(data === \"\"){/* empty */}\n\t\telse if(data === 'TRUE') arr[R][C] = true;\n\t\telse if(data === 'FALSE') arr[R][C] = false;\n\t\telse if(!isNaN(fuzzynum(data))) arr[R][C] = fuzzynum(data);\n\t\telse if(!isNaN(fuzzydate(data).getDate())) arr[R][C] = parseDate(data);\n\t\telse arr[R][C] = data;\n\t}\n\n\tfunction prn_to_aoa_str(f/*:string*/, opts)/*:AOA*/ {\n\t\tvar o = opts || {};\n\t\tvar arr/*:AOA*/ = ([]/*:any*/);\n\t\tif(!f || f.length === 0) return arr;\n\t\tvar lines = f.split(/[\\r\\n]/);\n\t\tvar L = lines.length - 1;\n\t\twhile(L >= 0 && lines[L].length === 0) --L;\n\t\tvar start = 10, idx = 0;\n\t\tvar R = 0;\n\t\tfor(; R <= L; ++R) {\n\t\t\tidx = lines[R].indexOf(\" \");\n\t\t\tif(idx == -1) idx = lines[R].length; else idx++;\n\t\t\tstart = Math.max(start, idx);\n\t\t}\n\t\tfor(R = 0; R <= L; ++R) {\n\t\t\tarr[R] = [];\n\t\t\t/* TODO: confirm that widths are always 10 */\n\t\t\tvar C = 0;\n\t\t\tset_text_arr(lines[R].slice(0, start).trim(), arr, R, C, o);\n\t\t\tfor(C = 1; C <= (lines[R].length - start)/10 + 1; ++C)\n\t\t\t\tset_text_arr(lines[R].slice(start+(C-1)*10,start+C*10).trim(),arr,R,C,o);\n\t\t}\n\t\tif(o.sheetRows) arr = arr.slice(0, o.sheetRows);\n\t\treturn arr;\n\t}\n\n\t// List of accepted CSV separators\n\tvar guess_seps = {\n\t\t/*::[*/0x2C/*::]*/: ',',\n\t\t/*::[*/0x09/*::]*/: \"\\t\",\n\t\t/*::[*/0x3B/*::]*/: ';',\n\t\t/*::[*/0x7C/*::]*/: '|'\n\t};\n\n\t// CSV separator weights to be used in case of equal numbers\n\tvar guess_sep_weights = {\n\t\t/*::[*/0x2C/*::]*/: 3,\n\t\t/*::[*/0x09/*::]*/: 2,\n\t\t/*::[*/0x3B/*::]*/: 1,\n\t\t/*::[*/0x7C/*::]*/: 0\n\t};\n\n\tfunction guess_sep(str) {\n\t\tvar cnt = {}, instr = false, end = 0, cc = 0;\n\t\tfor(;end < str.length;++end) {\n\t\t\tif((cc=str.charCodeAt(end)) == 0x22) instr = !instr;\n\t\t\telse if(!instr && cc in guess_seps) cnt[cc] = (cnt[cc]||0)+1;\n\t\t}\n\n\t\tcc = [];\n\t\tfor(end in cnt) if ( Object.prototype.hasOwnProperty.call(cnt, end) ) {\n\t\t\tcc.push([ cnt[end], end ]);\n\t\t}\n\n\t\tif ( !cc.length ) {\n\t\t\tcnt = guess_sep_weights;\n\t\t\tfor(end in cnt) if ( Object.prototype.hasOwnProperty.call(cnt, end) ) {\n\t\t\t\tcc.push([ cnt[end], end ]);\n\t\t\t}\n\t\t}\n\n\t\tcc.sort(function(a, b) { return a[0] - b[0] || guess_sep_weights[a[1]] - guess_sep_weights[b[1]]; });\n\n\t\treturn guess_seps[cc.pop()[1]] || 0x2C;\n\t}\n\n\tfunction dsv_to_sheet_str(str/*:string*/, opts)/*:Worksheet*/ {\n\t\tvar o = opts || {};\n\t\tvar sep = \"\";\n\t\tif(DENSE != null && o.dense == null) o.dense = DENSE;\n\t\tvar ws/*:Worksheet*/ = o.dense ? ([]/*:any*/) : ({}/*:any*/);\n\t\tvar range/*:Range*/ = ({s: {c:0, r:0}, e: {c:0, r:0}}/*:any*/);\n\n\t\tif(str.slice(0,4) == \"sep=\") {\n\t\t\t// If the line ends in \\r\\n\n\t\t\tif(str.charCodeAt(5) == 13 && str.charCodeAt(6) == 10 ) {\n\t\t\t\tsep = str.charAt(4); str = str.slice(7);\n\t\t\t}\n\t\t\t// If line ends in \\r OR \\n\n\t\t\telse if(str.charCodeAt(5) == 13 || str.charCodeAt(5) == 10 ) {\n\t\t\t\tsep = str.charAt(4); str = str.slice(6);\n\t\t\t}\n\t\t\telse sep = guess_sep(str.slice(0,1024));\n\t\t}\n\t\telse if(o && o.FS) sep = o.FS;\n\t\telse sep = guess_sep(str.slice(0,1024));\n\t\tvar R = 0, C = 0, v = 0;\n\t\tvar start = 0, end = 0, sepcc = sep.charCodeAt(0), instr = false, cc=0, startcc=str.charCodeAt(0);\n\t\tstr = str.replace(/\\r\\n/mg, \"\\n\");\n\t\tvar _re/*:?RegExp*/ = o.dateNF != null ? dateNF_regex(o.dateNF) : null;\n\t\tfunction finish_cell() {\n\t\t\tvar s = str.slice(start, end);\n\t\t\tvar cell = ({}/*:any*/);\n\t\t\tif(s.charAt(0) == '\"' && s.charAt(s.length - 1) == '\"') s = s.slice(1,-1).replace(/\"\"/g,'\"');\n\t\t\tif(s.length === 0) cell.t = 'z';\n\t\t\telse if(o.raw) { cell.t = 's'; cell.v = s; }\n\t\t\telse if(s.trim().length === 0) { cell.t = 's'; cell.v = s; }\n\t\t\telse if(s.charCodeAt(0) == 0x3D) {\n\t\t\t\tif(s.charCodeAt(1) == 0x22 && s.charCodeAt(s.length - 1) == 0x22) { cell.t = 's'; cell.v = s.slice(2,-1).replace(/\"\"/g,'\"'); }\n\t\t\t\telse if(fuzzyfmla(s)) { cell.t = 'n'; cell.f = s.slice(1); }\n\t\t\t\telse { cell.t = 's'; cell.v = s; } }\n\t\t\telse if(s == \"TRUE\") { cell.t = 'b'; cell.v = true; }\n\t\t\telse if(s == \"FALSE\") { cell.t = 'b'; cell.v = false; }\n\t\t\telse if(!isNaN(v = fuzzynum(s))) { cell.t = 'n'; if(o.cellText !== false) cell.w = s; cell.v = v; }\n\t\t\telse if(!isNaN(fuzzydate(s).getDate()) || _re && s.match(_re)) {\n\t\t\t\tcell.z = o.dateNF || table_fmt[14];\n\t\t\t\tvar k = 0;\n\t\t\t\tif(_re && s.match(_re)){ s=dateNF_fix(s, o.dateNF, (s.match(_re)||[])); k=1; }\n\t\t\t\tif(o.cellDates) { cell.t = 'd'; cell.v = parseDate(s, k); }\n\t\t\t\telse { cell.t = 'n'; cell.v = datenum(parseDate(s, k)); }\n\t\t\t\tif(o.cellText !== false) cell.w = SSF_format(cell.z, cell.v instanceof Date ? datenum(cell.v):cell.v);\n\t\t\t\tif(!o.cellNF) delete cell.z;\n\t\t\t} else {\n\t\t\t\tcell.t = 's';\n\t\t\t\tcell.v = s;\n\t\t\t}\n\t\t\tif(cell.t == 'z'){}\n\t\t\telse if(o.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = cell; }\n\t\t\telse ws[encode_cell({c:C,r:R})] = cell;\n\t\t\tstart = end+1; startcc = str.charCodeAt(start);\n\t\t\tif(range.e.c < C) range.e.c = C;\n\t\t\tif(range.e.r < R) range.e.r = R;\n\t\t\tif(cc == sepcc) ++C; else { C = 0; ++R; if(o.sheetRows && o.sheetRows <= R) return true; }\n\t\t}\n\t\touter: for(;end < str.length;++end) switch((cc=str.charCodeAt(end))) {\n\t\t\tcase 0x22: if(startcc === 0x22) instr = !instr; break;\n\t\t\tcase sepcc: case 0x0a: case 0x0d: if(!instr && finish_cell()) break outer; break;\n\t\t\tdefault: break;\n\t\t}\n\t\tif(end - start > 0) finish_cell();\n\n\t\tws['!ref'] = encode_range(range);\n\t\treturn ws;\n\t}\n\n\tfunction prn_to_sheet_str(str/*:string*/, opts)/*:Worksheet*/ {\n\t\tif(!(opts && opts.PRN)) return dsv_to_sheet_str(str, opts);\n\t\tif(opts.FS) return dsv_to_sheet_str(str, opts);\n\t\tif(str.slice(0,4) == \"sep=\") return dsv_to_sheet_str(str, opts);\n\t\tif(str.indexOf(\"\\t\") >= 0 || str.indexOf(\",\") >= 0 || str.indexOf(\";\") >= 0) return dsv_to_sheet_str(str, opts);\n\t\treturn aoa_to_sheet(prn_to_aoa_str(str, opts), opts);\n\t}\n\n\tfunction prn_to_sheet(d/*:RawData*/, opts)/*:Worksheet*/ {\n\t\tvar str = \"\", bytes = opts.type == 'string' ? [0,0,0,0] : firstbyte(d, opts);\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': str = Base64_decode(d); break;\n\t\t\tcase 'binary': str = d; break;\n\t\t\tcase 'buffer':\n\t\t\t\tif(opts.codepage == 65001) str = d.toString('utf8'); // TODO: test if buf\n\t\t\t\telse if(opts.codepage && typeof $cptable !== 'undefined') str = $cptable.utils.decode(opts.codepage, d);\n\t\t\t\telse str = has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d);\n\t\t\t\tbreak;\n\t\t\tcase 'array': str = cc2str(d); break;\n\t\t\tcase 'string': str = d; break;\n\t\t\tdefault: throw new Error(\"Unrecognized type \" + opts.type);\n\t\t}\n\t\tif(bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) str = utf8read(str.slice(3));\n\t\telse if(opts.type != 'string' && opts.type != 'buffer' && opts.codepage == 65001) str = utf8read(str);\n\t\telse if((opts.type == 'binary') && typeof $cptable !== 'undefined' && opts.codepage) str = $cptable.utils.decode(opts.codepage, $cptable.utils.encode(28591,str));\n\t\tif(str.slice(0,19) == \"socialcalc:version:\") return ETH.to_sheet(opts.type == 'string' ? str : utf8read(str), opts);\n\t\treturn prn_to_sheet_str(str, opts);\n\t}\n\n\tfunction prn_to_workbook(d/*:RawData*/, opts)/*:Workbook*/ { return sheet_to_workbook(prn_to_sheet(d, opts), opts); }\n\n\tfunction sheet_to_prn(ws/*:Worksheet*//*::, opts:?any*/)/*:string*/ {\n\t\tvar o/*:Array*/ = [];\n\t\tvar r = safe_decode_range(ws['!ref']), cell/*:Cell*/;\n\t\tvar dense = Array.isArray(ws);\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\tvar oo/*:Array*/ = [];\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[R]||[])[C] : ws[coord];\n\t\t\t\tif(!cell || cell.v == null) { oo.push(\" \"); continue; }\n\t\t\t\tvar w = (cell.w || (format_cell(cell), cell.w) || \"\").slice(0,10);\n\t\t\t\twhile(w.length < 10) w += \" \";\n\t\t\t\too.push(w + (C === 0 ? \" \" : \"\"));\n\t\t\t}\n\t\t\to.push(oo.join(\"\"));\n\t\t}\n\t\treturn o.join(\"\\n\");\n\t}\n\n\treturn {\n\t\tto_workbook: prn_to_workbook,\n\t\tto_sheet: prn_to_sheet,\n\t\tfrom_sheet: sheet_to_prn\n\t};\n})();\n\n/* Excel defaults to SYLK but warns if data is not valid */\nfunction read_wb_ID(d, opts) {\n\tvar o = opts || {}, OLD_WTF = !!o.WTF; o.WTF = true;\n\ttry {\n\t\tvar out = SYLK.to_workbook(d, o);\n\t\to.WTF = OLD_WTF;\n\t\treturn out;\n\t} catch(e) {\n\t\to.WTF = OLD_WTF;\n\t\tif(!e.message.match(/SYLK bad record ID/) && OLD_WTF) throw e;\n\t\treturn PRN.to_workbook(d, opts);\n\t}\n}\n\nvar WK_ = /*#__PURE__*/(function() {\n\tfunction lotushopper(data, cb/*:RecordHopperCB*/, opts/*:any*/) {\n\t\tif(!data) return;\n\t\tprep_blob(data, data.l || 0);\n\t\tvar Enum = opts.Enum || WK1Enum;\n\t\twhile(data.l < data.length) {\n\t\t\tvar RT = data.read_shift(2);\n\t\t\tvar R = Enum[RT] || Enum[0xFFFF];\n\t\t\tvar length = data.read_shift(2);\n\t\t\tvar tgt = data.l + length;\n\t\t\tvar d = R.f && R.f(data, length, opts);\n\t\t\tdata.l = tgt;\n\t\t\tif(cb(d, R, RT)) return;\n\t\t}\n\t}\n\n\tfunction lotus_to_workbook(d/*:RawData*/, opts) {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return lotus_to_workbook_buf(s2a(Base64_decode(d)), opts);\n\t\t\tcase 'binary': return lotus_to_workbook_buf(s2a(d), opts);\n\t\t\tcase 'buffer':\n\t\t\tcase 'array': return lotus_to_workbook_buf(d, opts);\n\t\t}\n\t\tthrow \"Unsupported type \" + opts.type;\n\t}\n\n\tfunction lotus_to_workbook_buf(d, opts)/*:Workbook*/ {\n\t\tif(!d) return d;\n\t\tvar o = opts || {};\n\t\tif(DENSE != null && o.dense == null) o.dense = DENSE;\n\t\tvar s/*:Worksheet*/ = ((o.dense ? [] : {})/*:any*/), n = \"Sheet1\", next_n = \"\", sidx = 0;\n\t\tvar sheets = {}, snames = [], realnames = [];\n\n\t\tvar refguess = {s: {r:0, c:0}, e: {r:0, c:0} };\n\t\tvar sheetRows = o.sheetRows || 0;\n\n\t\tif(d[2] == 0x00) {\n\t\t\tif(d[3] == 0x08 || d[3] == 0x09) {\n\t\t\t\tif(d.length >= 16 && d[14] == 0x05 && d[15] === 0x6c) throw new Error(\"Unsupported Works 3 for Mac file\");\n\t\t\t}\n\t\t}\n\n\t\tif(d[2] == 0x02) {\n\t\t\to.Enum = WK1Enum;\n\t\t\tlotushopper(d, function(val, R, RT) { switch(RT) {\n\t\t\t\tcase 0x00: /* BOF */\n\t\t\t\t\to.vers = val;\n\t\t\t\t\tif(val >= 0x1000) o.qpro = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x06: refguess = val; break; /* RANGE */\n\t\t\t\tcase 0xCC: if(val) next_n = val; break; /* SHEETNAMECS */\n\t\t\t\tcase 0xDE: next_n = val; break; /* SHEETNAMELP */\n\t\t\t\tcase 0x0F: /* LABEL */\n\t\t\t\tcase 0x33: /* STRING */\n\t\t\t\t\tif(!o.qpro) val[1].v = val[1].v.slice(1);\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 0x0D: /* INTEGER */\n\t\t\t\tcase 0x0E: /* NUMBER */\n\t\t\t\tcase 0x10: /* FORMULA */\n\t\t\t\t\t/* TODO: actual translation of the format code */\n\t\t\t\t\tif(RT == 0x0E && (val[2] & 0x70) == 0x70 && (val[2] & 0x0F) > 1 && (val[2] & 0x0F) < 15) {\n\t\t\t\t\t\tval[1].z = o.dateNF || table_fmt[14];\n\t\t\t\t\t\tif(o.cellDates) { val[1].t = 'd'; val[1].v = numdate(val[1].v); }\n\t\t\t\t\t}\n\n\t\t\t\t\tif(o.qpro) {\n\t\t\t\t\t\tif(val[3] > sidx) {\n\t\t\t\t\t\t\ts[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\t\t\tsheets[n] = s;\n\t\t\t\t\t\t\tsnames.push(n);\n\t\t\t\t\t\t\ts = (o.dense ? [] : {});\n\t\t\t\t\t\t\trefguess = {s: {r:0, c:0}, e: {r:0, c:0} };\n\t\t\t\t\t\t\tsidx = val[3]; n = next_n || \"Sheet\" + (sidx + 1); next_n = \"\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tvar tmpcell = o.dense ? (s[val[0].r]||[])[val[0].c] : s[encode_cell(val[0])];\n\t\t\t\t\tif(tmpcell) {\n\t\t\t\t\t\ttmpcell.t = val[1].t; tmpcell.v = val[1].v;\n\t\t\t\t\t\tif(val[1].z != null) tmpcell.z = val[1].z;\n\t\t\t\t\t\tif(val[1].f != null) tmpcell.f = val[1].f;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif(o.dense) {\n\t\t\t\t\t\tif(!s[val[0].r]) s[val[0].r] = [];\n\t\t\t\t\t\ts[val[0].r][val[0].c] = val[1];\n\t\t\t\t\t} else s[encode_cell(val[0])] = val[1];\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t}}, o);\n\t\t} else if(d[2] == 0x1A || d[2] == 0x0E) {\n\t\t\to.Enum = WK3Enum;\n\t\t\tif(d[2] == 0x0E) { o.qpro = true; d.l = 0; }\n\t\t\tlotushopper(d, function(val, R, RT) { switch(RT) {\n\t\t\t\tcase 0xCC: n = val; break; /* SHEETNAMECS */\n\t\t\t\tcase 0x16: /* LABEL16 */\n\t\t\t\t\tval[1].v = val[1].v.slice(1);\n\t\t\t\t\t/* falls through */\n\t\t\t\tcase 0x17: /* NUMBER17 */\n\t\t\t\tcase 0x18: /* NUMBER18 */\n\t\t\t\tcase 0x19: /* FORMULA19 */\n\t\t\t\tcase 0x25: /* NUMBER25 */\n\t\t\t\tcase 0x27: /* NUMBER27 */\n\t\t\t\tcase 0x28: /* FORMULA28 */\n\t\t\t\t\tif(val[3] > sidx) {\n\t\t\t\t\t\ts[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\t\tsheets[n] = s;\n\t\t\t\t\t\tsnames.push(n);\n\t\t\t\t\t\ts = (o.dense ? [] : {});\n\t\t\t\t\t\trefguess = {s: {r:0, c:0}, e: {r:0, c:0} };\n\t\t\t\t\t\tsidx = val[3]; n = \"Sheet\" + (sidx + 1);\n\t\t\t\t\t}\n\t\t\t\t\tif(sheetRows > 0 && val[0].r >= sheetRows) break;\n\t\t\t\t\tif(o.dense) {\n\t\t\t\t\t\tif(!s[val[0].r]) s[val[0].r] = [];\n\t\t\t\t\t\ts[val[0].r][val[0].c] = val[1];\n\t\t\t\t\t} else s[encode_cell(val[0])] = val[1];\n\t\t\t\t\tif(refguess.e.c < val[0].c) refguess.e.c = val[0].c;\n\t\t\t\t\tif(refguess.e.r < val[0].r) refguess.e.r = val[0].r;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x1B: /* XFORMAT */\n\t\t\t\t\tif(val[0x36b0]) realnames[val[0x36b0][0]] = val[0x36b0][1];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0601: /* SHEETINFOQP */\n\t\t\t\t\trealnames[val[0]] = val[1]; if(val[0] == sidx) n = val[1]; break;\n\t\t\t\tdefault: break;\n\t\t\t}}, o);\n\t\t} else throw new Error(\"Unrecognized LOTUS BOF \" + d[2]);\n\t\ts[\"!ref\"] = encode_range(refguess);\n\t\tsheets[next_n || n] = s;\n\t\tsnames.push(next_n || n);\n\t\tif(!realnames.length) return { SheetNames: snames, Sheets: sheets };\n\t\tvar osheets = {}, rnames = [];\n\t\t/* TODO: verify no collisions */\n\t\tfor(var i = 0; i < realnames.length; ++i) if(sheets[snames[i]]) {\n\t\t\trnames.push(realnames[i] || snames[i]);\n\t\t\tosheets[realnames[i]] = sheets[realnames[i]] || sheets[snames[i]];\n\t\t} else {\n\t\t\trnames.push(realnames[i]);\n\t\t\tosheets[realnames[i]] = ({ \"!ref\": \"A1\" });\n\t\t}\n\t\treturn { SheetNames: rnames, Sheets: osheets };\n\t}\n\n\tfunction sheet_to_wk1(ws/*:Worksheet*/, opts/*:WriteOpts*/) {\n\t\tvar o = opts || {};\n\t\tif(+o.codepage >= 0) set_cp(+o.codepage);\n\t\tif(o.type == \"string\") throw new Error(\"Cannot write WK1 to JS string\");\n\t\tvar ba = buf_array();\n\t\tvar range = safe_decode_range(ws[\"!ref\"]);\n\t\tvar dense = Array.isArray(ws);\n\t\tvar cols = [];\n\n\t\twrite_biff_rec(ba, 0x00, write_BOF_WK1(0x0406));\n\t\twrite_biff_rec(ba, 0x06, write_RANGE(range));\n\t\tvar max_R = Math.min(range.e.r, 8191);\n\t\tfor(var R = range.s.r; R <= max_R; ++R) {\n\t\t\tvar rr = encode_row(R);\n\t\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\t\tvar ref = cols[C] + rr;\n\t\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\t\tif(!cell || cell.t == \"z\") continue;\n\t\t\t\t/* TODO: formula records */\n\t\t\t\tif(cell.t == \"n\") {\n\t\t\t\t\tif((cell.v|0)==cell.v && cell.v >= -32768 && cell.v <= 32767) write_biff_rec(ba, 0x0d, write_INTEGER(R, C, cell.v));\n\t\t\t\t\telse write_biff_rec(ba, 0x0e, write_NUMBER(R, C, cell.v));\n\t\t\t\t} else {\n\t\t\t\t\tvar str = format_cell(cell);\n\t\t\t\t\twrite_biff_rec(ba, 0x0F, write_LABEL(R, C, str.slice(0, 239)));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\twrite_biff_rec(ba, 0x01);\n\t\treturn ba.end();\n\t}\n\n\tfunction book_to_wk3(wb/*:Workbook*/, opts/*:WriteOpts*/) {\n\t\tvar o = opts || {};\n\t\tif(+o.codepage >= 0) set_cp(+o.codepage);\n\t\tif(o.type == \"string\") throw new Error(\"Cannot write WK3 to JS string\");\n\t\tvar ba = buf_array();\n\n\t\twrite_biff_rec(ba, 0x00, write_BOF_WK3(wb));\n\n\t\tfor(var i = 0, cnt = 0; i < wb.SheetNames.length; ++i) if((wb.Sheets[wb.SheetNames[i]] || {})[\"!ref\"]) write_biff_rec(ba, 0x1b, write_XFORMAT_SHEETNAME(wb.SheetNames[i], cnt++));\n\n\t\tvar wsidx = 0;\n\t\tfor(i = 0; i < wb.SheetNames.length; ++i) {\n\t\t\tvar ws = wb.Sheets[wb.SheetNames[i]];\n\t\t\tif(!ws || !ws[\"!ref\"]) continue;\n\t\t\tvar range = safe_decode_range(ws[\"!ref\"]);\n\t\t\tvar dense = Array.isArray(ws);\n\t\t\tvar cols = [];\n\t\t\tvar max_R = Math.min(range.e.r, 8191);\n\t\t\tfor(var R = range.s.r; R <= max_R; ++R) {\n\t\t\t\tvar rr = encode_row(R);\n\t\t\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\t\t\tvar ref = cols[C] + rr;\n\t\t\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\t\t\tif(!cell || cell.t == \"z\") continue;\n\t\t\t\t\t/* TODO: FORMULA19 NUMBER18 records */\n\t\t\t\t\tif(cell.t == \"n\") {\n\t\t\t\t\t\twrite_biff_rec(ba, 0x17, write_NUMBER_17(R, C, wsidx, cell.v));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar str = format_cell(cell);\n\t\t\t\t\t\t/* TODO: max len? */\n\t\t\t\t\t\twrite_biff_rec(ba, 0x16, write_LABEL_16(R, C, wsidx, str.slice(0, 239)));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t++wsidx;\n\t\t}\n\n\t\twrite_biff_rec(ba, 0x01);\n\t\treturn ba.end();\n\t}\n\n\n\tfunction write_BOF_WK1(v/*:number*/) {\n\t\tvar out = new_buf(2);\n\t\tout.write_shift(2, v);\n\t\treturn out;\n\t}\n\n\tfunction write_BOF_WK3(wb/*:Workbook*/) {\n\t\tvar out = new_buf(26);\n\t\tout.write_shift(2, 0x1000);\n\t\tout.write_shift(2, 0x0004);\n\t\tout.write_shift(4, 0x0000);\n\t\tvar rows = 0, cols = 0, wscnt = 0;\n\t\tfor(var i = 0; i < wb.SheetNames.length; ++i) {\n\t\t\tvar name = wb.SheetNames[i];\n\t\t\tvar ws = wb.Sheets[name];\n\t\t\tif(!ws || !ws[\"!ref\"]) continue;\n\t\t\t++wscnt;\n\t\t\tvar range = decode_range(ws[\"!ref\"]);\n\t\t\tif(rows < range.e.r) rows = range.e.r;\n\t\t\tif(cols < range.e.c) cols = range.e.c;\n\t\t}\n\t\tif(rows > 8191) rows = 8191;\n\t\tout.write_shift(2, rows);\n\t\tout.write_shift(1, wscnt);\n\t\tout.write_shift(1, cols);\n\t\tout.write_shift(2, 0x00);\n\t\tout.write_shift(2, 0x00);\n\t\tout.write_shift(1, 0x01);\n\t\tout.write_shift(1, 0x02);\n\t\tout.write_shift(4, 0);\n\t\tout.write_shift(4, 0);\n\t\treturn out;\n\t}\n\n\tfunction parse_RANGE(blob, length, opts) {\n\t\tvar o = {s:{c:0,r:0},e:{c:0,r:0}};\n\t\tif(length == 8 && opts.qpro) {\n\t\t\to.s.c = blob.read_shift(1);\n\t\t\tblob.l++;\n\t\t\to.s.r = blob.read_shift(2);\n\t\t\to.e.c = blob.read_shift(1);\n\t\t\tblob.l++;\n\t\t\to.e.r = blob.read_shift(2);\n\t\t\treturn o;\n\t\t}\n\t\to.s.c = blob.read_shift(2);\n\t\to.s.r = blob.read_shift(2);\n\t\tif(length == 12 && opts.qpro) blob.l += 2;\n\t\to.e.c = blob.read_shift(2);\n\t\to.e.r = blob.read_shift(2);\n\t\tif(length == 12 && opts.qpro) blob.l += 2;\n\t\tif(o.s.c == 0xFFFF) o.s.c = o.e.c = o.s.r = o.e.r = 0;\n\t\treturn o;\n\t}\n\tfunction write_RANGE(range) {\n\t\tvar out = new_buf(8);\n\t\tout.write_shift(2, range.s.c);\n\t\tout.write_shift(2, range.s.r);\n\t\tout.write_shift(2, range.e.c);\n\t\tout.write_shift(2, range.e.r);\n\t\treturn out;\n\t}\n\n\tfunction parse_cell(blob, length, opts) {\n\t\tvar o = [{c:0,r:0}, {t:'n',v:0}, 0, 0];\n\t\tif(opts.qpro && opts.vers != 0x5120) {\n\t\t\to[0].c = blob.read_shift(1);\n\t\t\to[3] = blob.read_shift(1);\n\t\t\to[0].r = blob.read_shift(2);\n\t\t\tblob.l+=2;\n\t\t} else {\n\t\t\to[2] = blob.read_shift(1);\n\t\t\to[0].c = blob.read_shift(2); o[0].r = blob.read_shift(2);\n\t\t}\n\t\treturn o;\n\t}\n\n\tfunction parse_LABEL(blob, length, opts) {\n\t\tvar tgt = blob.l + length;\n\t\tvar o = parse_cell(blob, length, opts);\n\t\to[1].t = 's';\n\t\tif(opts.vers == 0x5120) {\n\t\t\tblob.l++;\n\t\t\tvar len = blob.read_shift(1);\n\t\t\to[1].v = blob.read_shift(len, 'utf8');\n\t\t\treturn o;\n\t\t}\n\t\tif(opts.qpro) blob.l++;\n\t\to[1].v = blob.read_shift(tgt - blob.l, 'cstr');\n\t\treturn o;\n\t}\n\tfunction write_LABEL(R, C, s) {\n\t\t/* TODO: encoding */\n\t\tvar o = new_buf(7 + s.length);\n\t\to.write_shift(1, 0xFF);\n\t\to.write_shift(2, C);\n\t\to.write_shift(2, R);\n\t\to.write_shift(1, 0x27); // ??\n\t\tfor(var i = 0; i < o.length; ++i) {\n\t\t\tvar cc = s.charCodeAt(i);\n\t\t\to.write_shift(1, cc >= 0x80 ? 0x5F : cc);\n\t\t}\n\t\to.write_shift(1, 0);\n\t\treturn o;\n\t}\n\n\tfunction parse_INTEGER(blob, length, opts) {\n\t\tvar o = parse_cell(blob, length, opts);\n\t\to[1].v = blob.read_shift(2, 'i');\n\t\treturn o;\n\t}\n\tfunction write_INTEGER(R, C, v) {\n\t\tvar o = new_buf(7);\n\t\to.write_shift(1, 0xFF);\n\t\to.write_shift(2, C);\n\t\to.write_shift(2, R);\n\t\to.write_shift(2, v, 'i');\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER(blob, length, opts) {\n\t\tvar o = parse_cell(blob, length, opts);\n\t\to[1].v = blob.read_shift(8, 'f');\n\t\treturn o;\n\t}\n\tfunction write_NUMBER(R, C, v) {\n\t\tvar o = new_buf(13);\n\t\to.write_shift(1, 0xFF);\n\t\to.write_shift(2, C);\n\t\to.write_shift(2, R);\n\t\to.write_shift(8, v, 'f');\n\t\treturn o;\n\t}\n\n\tfunction parse_FORMULA(blob, length, opts) {\n\t\tvar tgt = blob.l + length;\n\t\tvar o = parse_cell(blob, length, opts);\n\t\t/* TODO: formula */\n\t\to[1].v = blob.read_shift(8, 'f');\n\t\tif(opts.qpro) blob.l = tgt;\n\t\telse {\n\t\t\tvar flen = blob.read_shift(2);\n\t\t\twk1_fmla_to_csf(blob.slice(blob.l, blob.l + flen), o);\n\t\t\tblob.l += flen;\n\t\t}\n\t\treturn o;\n\t}\n\n\tfunction wk1_parse_rc(B, V, col) {\n\t\tvar rel = V & 0x8000;\n\t\tV &= ~0x8000;\n\t\tV = (rel ? B : 0) + ((V >= 0x2000) ? V - 0x4000 : V);\n\t\treturn (rel ? \"\" : \"$\") + (col ? encode_col(V) : encode_row(V));\n\t}\n\t/* var oprec = [\n\t\t8, 8, 8, 8, 8, 8, 8, 8, 6, 4, 4, 5, 5, 7, 3, 3,\n\t\t3, 3, 3, 3, 1, 1, 2, 6, 8, 8, 8, 8, 8, 8, 8, 8\n\t]; */\n\t/* TODO: flesh out */\n\tvar FuncTab = {\n\t\t0x33: [\"FALSE\", 0],\n\t\t0x34: [\"TRUE\", 0],\n\t\t0x46: [\"LEN\", 1],\n\t\t0x50: [\"SUM\", 69],\n\t\t0x51: [\"AVERAGEA\", 69],\n\t\t0x52: [\"COUNTA\", 69],\n\t\t0x53: [\"MINA\", 69],\n\t\t0x54: [\"MAXA\", 69],\n\t\t0x6F: [\"T\", 1]\n\t};\n\tvar BinOpTab = [\n\t\t \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", // eslint-disable-line no-mixed-spaces-and-tabs\n\t\t \"\", \"+\", \"-\", \"*\", \"/\", \"^\", \"=\", \"<>\", // eslint-disable-line no-mixed-spaces-and-tabs\n\t\t\"<=\", \">=\", \"<\", \">\", \"\", \"\", \"\", \"\", // eslint-disable-line no-mixed-spaces-and-tabs\n\t\t \"&\", \"\", \"\", \"\", \"\", \"\", \"\", \"\" // eslint-disable-line no-mixed-spaces-and-tabs\n\t];\n\n\tfunction wk1_fmla_to_csf(blob, o) {\n\t\tprep_blob(blob, 0);\n\t\tvar out = [], argc = 0, R = \"\", C = \"\", argL = \"\", argR = \"\";\n\t\twhile(blob.l < blob.length) {\n\t\t\tvar cc = blob[blob.l++];\n\t\t\tswitch(cc) {\n\t\t\t\tcase 0x00: out.push(blob.read_shift(8, 'f')); break;\n\t\t\t\tcase 0x01: {\n\t\t\t\t\tC = wk1_parse_rc(o[0].c, blob.read_shift(2), true);\n\t\t\t\t\tR = wk1_parse_rc(o[0].r, blob.read_shift(2), false);\n\t\t\t\t\tout.push(C + R);\n\t\t\t\t} break;\n\t\t\t\tcase 0x02: {\n\t\t\t\t\tvar c = wk1_parse_rc(o[0].c, blob.read_shift(2), true);\n\t\t\t\t\tvar r = wk1_parse_rc(o[0].r, blob.read_shift(2), false);\n\t\t\t\t\tC = wk1_parse_rc(o[0].c, blob.read_shift(2), true);\n\t\t\t\t\tR = wk1_parse_rc(o[0].r, blob.read_shift(2), false);\n\t\t\t\t\tout.push(c + r + \":\" + C + R);\n\t\t\t\t} break;\n\t\t\t\tcase 0x03:\n\t\t\t\t\tif(blob.l < blob.length) { console.error(\"WK1 premature formula end\"); return; }\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x04: out.push(\"(\" + out.pop() + \")\"); break;\n\t\t\t\tcase 0x05: out.push(blob.read_shift(2)); break;\n\t\t\t\tcase 0x06: {\n\t\t\t\t\t/* TODO: text encoding */\n\t\t\t\t\tvar Z = \"\"; while((cc = blob[blob.l++])) Z += String.fromCharCode(cc);\n\t\t\t\t\tout.push('\"' + Z.replace(/\"/g, '\"\"') + '\"');\n\t\t\t\t} break;\n\n\t\t\t\tcase 0x08: out.push(\"-\" + out.pop()); break;\n\t\t\t\tcase 0x17: out.push(\"+\" + out.pop()); break;\n\t\t\t\tcase 0x16: out.push(\"NOT(\" + out.pop() + \")\"); break;\n\n\t\t\t\tcase 0x14: case 0x15: {\n\t\t\t\t\targR = out.pop(); argL = out.pop();\n\t\t\t\t\tout.push([\"AND\", \"OR\"][cc - 0x14] + \"(\" + argL + \",\" + argR + \")\");\n\t\t\t\t} break;\n\n\t\t\t\tdefault:\n\t\t\t\t\tif(cc < 0x20 && BinOpTab[cc]) {\n\t\t\t\t\t\targR = out.pop(); argL = out.pop();\n\t\t\t\t\t\tout.push(argL + BinOpTab[cc] + argR);\n\t\t\t\t\t} else if(FuncTab[cc]) {\n\t\t\t\t\t\targc = FuncTab[cc][1];\n\t\t\t\t\t\tif(argc == 69) argc = blob[blob.l++];\n\t\t\t\t\t\tif(argc > out.length) { console.error(\"WK1 bad formula parse 0x\" + cc.toString(16) + \":|\" + out.join(\"|\") + \"|\"); return; }\n\t\t\t\t\t\tvar args = out.slice(-argc);\n\t\t\t\t\t\tout.length -= argc;\n\t\t\t\t\t\tout.push(FuncTab[cc][0] + \"(\" + args.join(\",\") + \")\");\n\t\t\t\t\t}\n\t\t\t\t\telse if(cc <= 0x07) return console.error(\"WK1 invalid opcode \" + cc.toString(16));\n\t\t\t\t\telse if(cc <= 0x18) return console.error(\"WK1 unsupported op \" + cc.toString(16));\n\t\t\t\t\telse if(cc <= 0x1E) return console.error(\"WK1 invalid opcode \" + cc.toString(16));\n\t\t\t\t\telse if(cc <= 0x73) return console.error(\"WK1 unsupported function opcode \" + cc.toString(16));\n\t\t\t\t\t// possible future functions ??\n\t\t\t\t\telse return console.error(\"WK1 unrecognized opcode \" + cc.toString(16));\n\t\t\t}\n\t\t}\n\t\tif(out.length == 1) o[1].f = \"\" + out[0];\n\t\telse console.error(\"WK1 bad formula parse |\" + out.join(\"|\") + \"|\");\n\t}\n\n\n\tfunction parse_cell_3(blob/*::, length*/) {\n\t\tvar o = [{c:0,r:0}, {t:'n',v:0}, 0];\n\t\to[0].r = blob.read_shift(2); o[3] = blob[blob.l++]; o[0].c = blob[blob.l++];\n\t\treturn o;\n\t}\n\n\tfunction parse_LABEL_16(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\to[1].t = 's';\n\t\to[1].v = blob.read_shift(length - 4, 'cstr');\n\t\treturn o;\n\t}\n\tfunction write_LABEL_16(R, C, wsidx, s) {\n\t\t/* TODO: encoding */\n\t\tvar o = new_buf(6 + s.length);\n\t\to.write_shift(2, R);\n\t\to.write_shift(1, wsidx);\n\t\to.write_shift(1, C);\n\t\to.write_shift(1, 0x27);\n\t\tfor(var i = 0; i < s.length; ++i) {\n\t\t\tvar cc = s.charCodeAt(i);\n\t\t\to.write_shift(1, cc >= 0x80 ? 0x5F : cc);\n\t\t}\n\t\to.write_shift(1, 0);\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_18(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\to[1].v = blob.read_shift(2);\n\t\tvar v = o[1].v >> 1;\n\t\tif(o[1].v & 0x1) {\n\t\t\tswitch(v & 0x07) {\n\t\t\t\tcase 0: v = (v >> 3) * 5000; break;\n\t\t\t\tcase 1: v = (v >> 3) * 500; break;\n\t\t\t\tcase 2: v = (v >> 3) / 20; break;\n\t\t\t\tcase 3: v = (v >> 3) / 200; break;\n\t\t\t\tcase 4: v = (v >> 3) / 2000; break;\n\t\t\t\tcase 5: v = (v >> 3) / 20000; break;\n\t\t\t\tcase 6: v = (v >> 3) / 16; break;\n\t\t\t\tcase 7: v = (v >> 3) / 64; break;\n\t\t\t}\n\t\t}\n\t\to[1].v = v;\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_17(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\tvar v1 = blob.read_shift(4);\n\t\tvar v2 = blob.read_shift(4);\n\t\tvar e = blob.read_shift(2);\n\t\tif(e == 0xFFFF) {\n\t\t\tif(v1 === 0 && v2 === 0xC0000000) { o[1].t = \"e\"; o[1].v = 0x0F; } // ERR -> #VALUE!\n\t\t\telse if(v1 === 0 && v2 === 0xD0000000) { o[1].t = \"e\"; o[1].v = 0x2A; } // NA -> #N/A\n\t\t\telse o[1].v = 0;\n\t\t\treturn o;\n\t\t}\n\t\tvar s = e & 0x8000; e = (e&0x7FFF) - 16446;\n\t\to[1].v = (1 - s*2) * (v2 * Math.pow(2, e+32) + v1 * Math.pow(2, e));\n\t\treturn o;\n\t}\n\tfunction write_NUMBER_17(R, C, wsidx, v) {\n\t\tvar o = new_buf(14);\n\t\to.write_shift(2, R);\n\t\to.write_shift(1, wsidx);\n\t\to.write_shift(1, C);\n\t\tif(v == 0) {\n\t\t\to.write_shift(4, 0);\n\t\t\to.write_shift(4, 0);\n\t\t\to.write_shift(2, 0xFFFF);\n\t\t\treturn o;\n\t\t}\n\t\tvar s = 0, e = 0, v1 = 0, v2 = 0;\n\t\tif(v < 0) { s = 1; v = -v; }\n\t\te = Math.log2(v) | 0;\n\t\tv /= Math.pow(2, e-31);\n\t\tv2 = (v)>>>0;\n\t\tif((v2&0x80000000) == 0) { v/=2; ++e; v2 = v >>> 0; }\n\t\tv -= v2;\n\t\tv2 |= 0x80000000;\n\t\tv2 >>>= 0;\n\t\tv *= Math.pow(2, 32);\n\t\tv1 = v>>>0;\n\t\to.write_shift(4, v1);\n\t\to.write_shift(4, v2);\n\t\te += 0x3FFF + (s ? 0x8000 : 0);\n\t\to.write_shift(2, e);\n\t\treturn o;\n\t}\n\n\tfunction parse_FORMULA_19(blob, length) {\n\t\tvar o = parse_NUMBER_17(blob, 14);\n\t\tblob.l += length - 14; /* TODO: WK3 formula */\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_25(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\tvar v1 = blob.read_shift(4);\n\t\to[1].v = v1 >> 6;\n\t\treturn o;\n\t}\n\n\tfunction parse_NUMBER_27(blob, length) {\n\t\tvar o = parse_cell_3(blob, length);\n\t\tvar v1 = blob.read_shift(8,'f');\n\t\to[1].v = v1;\n\t\treturn o;\n\t}\n\n\tfunction parse_FORMULA_28(blob, length) {\n\t\tvar o = parse_NUMBER_27(blob, 14);\n\t\tblob.l += length - 10; /* TODO: formula */\n\t\treturn o;\n\t}\n\n\tfunction parse_SHEETNAMECS(blob, length) {\n\t\treturn blob[blob.l + length - 1] == 0 ? blob.read_shift(length, 'cstr') : \"\";\n\t}\n\n\tfunction parse_SHEETNAMELP(blob, length) {\n\t\tvar len = blob[blob.l++];\n\t\tif(len > length - 1) len = length - 1;\n\t\tvar o = \"\"; while(o.length < len) o += String.fromCharCode(blob[blob.l++]);\n\t\treturn o;\n\t}\n\n\tfunction parse_SHEETINFOQP(blob, length, opts) {\n\t\tif(!opts.qpro || length < 21) return;\n\t\tvar id = blob.read_shift(1);\n\t\tblob.l += 17;\n\t\tblob.l += 1; //var len = blob.read_shift(1);\n\t\tblob.l += 2;\n\t\tvar nm = blob.read_shift(length - 21, 'cstr');\n\t\treturn [id, nm];\n\t}\n\n\tfunction parse_XFORMAT(blob, length) {\n\t\tvar o = {}, tgt = blob.l + length;\n\t\twhile(blob.l < tgt) {\n\t\t\tvar dt = blob.read_shift(2);\n\t\t\tif(dt == 0x36b0) {\n\t\t\t\to[dt] = [0, \"\"];\n\t\t\t\to[dt][0] = blob.read_shift(2);\n\t\t\t\twhile(blob[blob.l]) { o[dt][1] += String.fromCharCode(blob[blob.l]); blob.l++; } blob.l++;\n\t\t\t}\n\t\t\t// TODO: 0x3a99 ??\n\t\t}\n\t\treturn o;\n\t}\n\tfunction write_XFORMAT_SHEETNAME(name, wsidx) {\n\t\tvar out = new_buf(5 + name.length);\n\t\tout.write_shift(2, 0x36b0);\n\t\tout.write_shift(2, wsidx);\n\t\tfor(var i = 0; i < name.length; ++i) {\n\t\t\tvar cc = name.charCodeAt(i);\n\t\t\tout[out.l++] = cc > 0x7F ? 0x5F : cc;\n\t\t}\n\t\tout[out.l++] = 0;\n\t\treturn out;\n\t}\n\n\tvar WK1Enum = {\n\t\t/*::[*/0x0000/*::]*/: { n:\"BOF\", f:parseuint16 },\n\t\t/*::[*/0x0001/*::]*/: { n:\"EOF\" },\n\t\t/*::[*/0x0002/*::]*/: { n:\"CALCMODE\" },\n\t\t/*::[*/0x0003/*::]*/: { n:\"CALCORDER\" },\n\t\t/*::[*/0x0004/*::]*/: { n:\"SPLIT\" },\n\t\t/*::[*/0x0005/*::]*/: { n:\"SYNC\" },\n\t\t/*::[*/0x0006/*::]*/: { n:\"RANGE\", f:parse_RANGE },\n\t\t/*::[*/0x0007/*::]*/: { n:\"WINDOW1\" },\n\t\t/*::[*/0x0008/*::]*/: { n:\"COLW1\" },\n\t\t/*::[*/0x0009/*::]*/: { n:\"WINTWO\" },\n\t\t/*::[*/0x000A/*::]*/: { n:\"COLW2\" },\n\t\t/*::[*/0x000B/*::]*/: { n:\"NAME\" },\n\t\t/*::[*/0x000C/*::]*/: { n:\"BLANK\" },\n\t\t/*::[*/0x000D/*::]*/: { n:\"INTEGER\", f:parse_INTEGER },\n\t\t/*::[*/0x000E/*::]*/: { n:\"NUMBER\", f:parse_NUMBER },\n\t\t/*::[*/0x000F/*::]*/: { n:\"LABEL\", f:parse_LABEL },\n\t\t/*::[*/0x0010/*::]*/: { n:\"FORMULA\", f:parse_FORMULA },\n\t\t/*::[*/0x0018/*::]*/: { n:\"TABLE\" },\n\t\t/*::[*/0x0019/*::]*/: { n:\"ORANGE\" },\n\t\t/*::[*/0x001A/*::]*/: { n:\"PRANGE\" },\n\t\t/*::[*/0x001B/*::]*/: { n:\"SRANGE\" },\n\t\t/*::[*/0x001C/*::]*/: { n:\"FRANGE\" },\n\t\t/*::[*/0x001D/*::]*/: { n:\"KRANGE1\" },\n\t\t/*::[*/0x0020/*::]*/: { n:\"HRANGE\" },\n\t\t/*::[*/0x0023/*::]*/: { n:\"KRANGE2\" },\n\t\t/*::[*/0x0024/*::]*/: { n:\"PROTEC\" },\n\t\t/*::[*/0x0025/*::]*/: { n:\"FOOTER\" },\n\t\t/*::[*/0x0026/*::]*/: { n:\"HEADER\" },\n\t\t/*::[*/0x0027/*::]*/: { n:\"SETUP\" },\n\t\t/*::[*/0x0028/*::]*/: { n:\"MARGINS\" },\n\t\t/*::[*/0x0029/*::]*/: { n:\"LABELFMT\" },\n\t\t/*::[*/0x002A/*::]*/: { n:\"TITLES\" },\n\t\t/*::[*/0x002B/*::]*/: { n:\"SHEETJS\" },\n\t\t/*::[*/0x002D/*::]*/: { n:\"GRAPH\" },\n\t\t/*::[*/0x002E/*::]*/: { n:\"NGRAPH\" },\n\t\t/*::[*/0x002F/*::]*/: { n:\"CALCCOUNT\" },\n\t\t/*::[*/0x0030/*::]*/: { n:\"UNFORMATTED\" },\n\t\t/*::[*/0x0031/*::]*/: { n:\"CURSORW12\" },\n\t\t/*::[*/0x0032/*::]*/: { n:\"WINDOW\" },\n\t\t/*::[*/0x0033/*::]*/: { n:\"STRING\", f:parse_LABEL },\n\t\t/*::[*/0x0037/*::]*/: { n:\"PASSWORD\" },\n\t\t/*::[*/0x0038/*::]*/: { n:\"LOCKED\" },\n\t\t/*::[*/0x003C/*::]*/: { n:\"QUERY\" },\n\t\t/*::[*/0x003D/*::]*/: { n:\"QUERYNAME\" },\n\t\t/*::[*/0x003E/*::]*/: { n:\"PRINT\" },\n\t\t/*::[*/0x003F/*::]*/: { n:\"PRINTNAME\" },\n\t\t/*::[*/0x0040/*::]*/: { n:\"GRAPH2\" },\n\t\t/*::[*/0x0041/*::]*/: { n:\"GRAPHNAME\" },\n\t\t/*::[*/0x0042/*::]*/: { n:\"ZOOM\" },\n\t\t/*::[*/0x0043/*::]*/: { n:\"SYMSPLIT\" },\n\t\t/*::[*/0x0044/*::]*/: { n:\"NSROWS\" },\n\t\t/*::[*/0x0045/*::]*/: { n:\"NSCOLS\" },\n\t\t/*::[*/0x0046/*::]*/: { n:\"RULER\" },\n\t\t/*::[*/0x0047/*::]*/: { n:\"NNAME\" },\n\t\t/*::[*/0x0048/*::]*/: { n:\"ACOMM\" },\n\t\t/*::[*/0x0049/*::]*/: { n:\"AMACRO\" },\n\t\t/*::[*/0x004A/*::]*/: { n:\"PARSE\" },\n\t\t/*::[*/0x0066/*::]*/: { n:\"PRANGES??\" },\n\t\t/*::[*/0x0067/*::]*/: { n:\"RRANGES??\" },\n\t\t/*::[*/0x0068/*::]*/: { n:\"FNAME??\" },\n\t\t/*::[*/0x0069/*::]*/: { n:\"MRANGES??\" },\n\t\t/*::[*/0x00CC/*::]*/: { n:\"SHEETNAMECS\", f:parse_SHEETNAMECS },\n\t\t/*::[*/0x00DE/*::]*/: { n:\"SHEETNAMELP\", f:parse_SHEETNAMELP },\n\t\t/*::[*/0xFFFF/*::]*/: { n:\"\" }\n\t};\n\n\tvar WK3Enum = {\n\t\t/*::[*/0x0000/*::]*/: { n:\"BOF\" },\n\t\t/*::[*/0x0001/*::]*/: { n:\"EOF\" },\n\t\t/*::[*/0x0002/*::]*/: { n:\"PASSWORD\" },\n\t\t/*::[*/0x0003/*::]*/: { n:\"CALCSET\" },\n\t\t/*::[*/0x0004/*::]*/: { n:\"WINDOWSET\" },\n\t\t/*::[*/0x0005/*::]*/: { n:\"SHEETCELLPTR\" },\n\t\t/*::[*/0x0006/*::]*/: { n:\"SHEETLAYOUT\" },\n\t\t/*::[*/0x0007/*::]*/: { n:\"COLUMNWIDTH\" },\n\t\t/*::[*/0x0008/*::]*/: { n:\"HIDDENCOLUMN\" },\n\t\t/*::[*/0x0009/*::]*/: { n:\"USERRANGE\" },\n\t\t/*::[*/0x000A/*::]*/: { n:\"SYSTEMRANGE\" },\n\t\t/*::[*/0x000B/*::]*/: { n:\"ZEROFORCE\" },\n\t\t/*::[*/0x000C/*::]*/: { n:\"SORTKEYDIR\" },\n\t\t/*::[*/0x000D/*::]*/: { n:\"FILESEAL\" },\n\t\t/*::[*/0x000E/*::]*/: { n:\"DATAFILLNUMS\" },\n\t\t/*::[*/0x000F/*::]*/: { n:\"PRINTMAIN\" },\n\t\t/*::[*/0x0010/*::]*/: { n:\"PRINTSTRING\" },\n\t\t/*::[*/0x0011/*::]*/: { n:\"GRAPHMAIN\" },\n\t\t/*::[*/0x0012/*::]*/: { n:\"GRAPHSTRING\" },\n\t\t/*::[*/0x0013/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0014/*::]*/: { n:\"ERRCELL\" },\n\t\t/*::[*/0x0015/*::]*/: { n:\"NACELL\" },\n\t\t/*::[*/0x0016/*::]*/: { n:\"LABEL16\", f:parse_LABEL_16},\n\t\t/*::[*/0x0017/*::]*/: { n:\"NUMBER17\", f:parse_NUMBER_17 },\n\t\t/*::[*/0x0018/*::]*/: { n:\"NUMBER18\", f:parse_NUMBER_18 },\n\t\t/*::[*/0x0019/*::]*/: { n:\"FORMULA19\", f:parse_FORMULA_19},\n\t\t/*::[*/0x001A/*::]*/: { n:\"FORMULA1A\" },\n\t\t/*::[*/0x001B/*::]*/: { n:\"XFORMAT\", f:parse_XFORMAT },\n\t\t/*::[*/0x001C/*::]*/: { n:\"DTLABELMISC\" },\n\t\t/*::[*/0x001D/*::]*/: { n:\"DTLABELCELL\" },\n\t\t/*::[*/0x001E/*::]*/: { n:\"GRAPHWINDOW\" },\n\t\t/*::[*/0x001F/*::]*/: { n:\"CPA\" },\n\t\t/*::[*/0x0020/*::]*/: { n:\"LPLAUTO\" },\n\t\t/*::[*/0x0021/*::]*/: { n:\"QUERY\" },\n\t\t/*::[*/0x0022/*::]*/: { n:\"HIDDENSHEET\" },\n\t\t/*::[*/0x0023/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0025/*::]*/: { n:\"NUMBER25\", f:parse_NUMBER_25 },\n\t\t/*::[*/0x0026/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0027/*::]*/: { n:\"NUMBER27\", f:parse_NUMBER_27 },\n\t\t/*::[*/0x0028/*::]*/: { n:\"FORMULA28\", f:parse_FORMULA_28 },\n\t\t/*::[*/0x008E/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0093/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0096/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0097/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0098/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0099/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x009A/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x009B/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x009C/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00A3/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00AE/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00AF/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00B0/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00B1/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00B8/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00B9/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00BA/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00BB/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00BC/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00C3/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00C9/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00CC/*::]*/: { n:\"SHEETNAMECS\", f:parse_SHEETNAMECS },\n\t\t/*::[*/0x00CD/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00CE/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00CF/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x00D0/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0100/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0103/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0104/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0105/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0106/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0107/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0109/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010A/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010B/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010C/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010E/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x010F/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0180/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0185/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0186/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0189/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x018C/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0200/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0202/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0201/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0204/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0205/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0280/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0281/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0282/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0283/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0284/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0285/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0286/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0287/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0288/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0292/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0293/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0294/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0295/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0296/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0299/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x029A/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0300/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0304/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0601/*::]*/: { n:\"SHEETINFOQP\", f:parse_SHEETINFOQP },\n\t\t/*::[*/0x0640/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0642/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0701/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0702/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0703/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0704/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0780/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0800/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0801/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0804/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x0A80/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x2AF6/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x3231/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x6E49/*::]*/: { n:\"??\" },\n\t\t/*::[*/0x6F44/*::]*/: { n:\"??\" },\n\t\t/*::[*/0xFFFF/*::]*/: { n:\"\" }\n\t};\n\treturn {\n\t\tsheet_to_wk1: sheet_to_wk1,\n\t\tbook_to_wk3: book_to_wk3,\n\t\tto_workbook: lotus_to_workbook\n\t};\n})();\n/* 18.4.7 rPr CT_RPrElt */\nfunction parse_rpr(rpr) {\n\tvar font = {}, m = rpr.match(tagregex), i = 0;\n\tvar pass = false;\n\tif(m) for(;i!=m.length; ++i) {\n\t\tvar y = parsexmltag(m[i]);\n\t\tswitch(y[0].replace(/\\w*:/g,\"\")) {\n\t\t\t/* 18.8.12 condense CT_BooleanProperty */\n\t\t\t/* ** not required . */\n\t\t\tcase '':\n\t\t\tcase '': font.shadow = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.4.1 charset CT_IntProperty TODO */\n\t\t\tcase '':\n\t\t\tcase '': font.outline = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.4.5 rFont CT_FontName */\n\t\t\tcase '':\n\t\t\tcase '': font.strike = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.4.13 u CT_UnderlineProperty */\n\t\t\tcase '':\n\t\t\tcase '': font.u = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.2 b */\n\t\t\tcase '':\n\t\t\tcase '': font.b = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.26 i */\n\t\t\tcase '':\n\t\t\tcase '': font.i = 1; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.3.1.15 color CT_Color TODO: tint, theme, auto, indexed */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.8.18 family ST_FontFamily */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.4.14 vertAlign CT_VerticalAlignFontProperty TODO */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.8.35 scheme CT_FontScheme TODO */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault:\n\t\t\t\tif(y[0].charCodeAt(1) !== 47 && !pass) throw new Error('Unrecognized rich format ' + y[0]);\n\t\t}\n\t}\n\treturn font;\n}\n\nvar parse_rs = /*#__PURE__*/(function() {\n\tvar tregex = matchtag(\"t\"), rpregex = matchtag(\"rPr\");\n\t/* 18.4.4 r CT_RElt */\n\tfunction parse_r(r) {\n\t\t/* 18.4.12 t ST_Xstring */\n\t\tvar t = r.match(tregex)/*, cp = 65001*/;\n\t\tif(!t) return {t:\"s\", v:\"\"};\n\n\t\tvar o/*:Cell*/ = ({t:'s', v:unescapexml(t[1])}/*:any*/);\n\t\tvar rpr = r.match(rpregex);\n\t\tif(rpr) o.s = parse_rpr(rpr[1]);\n\t\treturn o;\n\t}\n\tvar rregex = /<(?:\\w+:)?r>/g, rend = /<\\/(?:\\w+:)?r>/;\n\treturn function parse_rs(rs) {\n\t\treturn rs.replace(rregex,\"\").split(rend).map(parse_r).filter(function(r) { return r.v; });\n\t};\n})();\n\n\n/* Parse a list of tags */\nvar rs_to_html = /*#__PURE__*/(function parse_rs_factory() {\n\tvar nlregex = /(\\r\\n|\\n)/g;\n\tfunction parse_rpr2(font, intro, outro) {\n\t\tvar style/*:Array*/ = [];\n\n\t\tif(font.u) style.push(\"text-decoration: underline;\");\n\t\tif(font.uval) style.push(\"text-underline-style:\" + font.uval + \";\");\n\t\tif(font.sz) style.push(\"font-size:\" + font.sz + \"pt;\");\n\t\tif(font.outline) style.push(\"text-effect: outline;\");\n\t\tif(font.shadow) style.push(\"text-shadow: auto;\");\n\t\tintro.push('');\n\n\t\tif(font.b) { intro.push(\"\"); outro.push(\"\"); }\n\t\tif(font.i) { intro.push(\"\"); outro.push(\"\"); }\n\t\tif(font.strike) { intro.push(\"\"); outro.push(\"\"); }\n\n\t\tvar align = font.valign || \"\";\n\t\tif(align == \"superscript\" || align == \"super\") align = \"sup\";\n\t\telse if(align == \"subscript\") align = \"sub\";\n\t\tif(align != \"\") { intro.push(\"<\" + align + \">\"); outro.push(\"\"); }\n\n\t\toutro.push(\"\");\n\t\treturn font;\n\t}\n\n\t/* 18.4.4 r CT_RElt */\n\tfunction r_to_html(r) {\n\t\tvar terms/*:[Array, string, Array]*/ = [[],r.v,[]];\n\t\tif(!r.v) return \"\";\n\n\t\tif(r.s) parse_rpr2(r.s, terms[0], terms[2]);\n\n\t\treturn terms[0].join(\"\") + terms[1].replace(nlregex,'
    ') + terms[2].join(\"\");\n\t}\n\n\treturn function parse_rs(rs) {\n\t\treturn rs.map(r_to_html).join(\"\");\n\t};\n})();\n\n/* 18.4.8 si CT_Rst */\nvar sitregex = /<(?:\\w+:)?t[^>]*>([^<]*)<\\/(?:\\w+:)?t>/g, sirregex = /<(?:\\w+:)?r>/;\nvar sirphregex = /<(?:\\w+:)?rPh.*?>([\\s\\S]*?)<\\/(?:\\w+:)?rPh>/g;\nfunction parse_si(x, opts) {\n\tvar html = opts ? opts.cellHTML : true;\n\tvar z = {};\n\tif(!x) return { t: \"\" };\n\t//var y;\n\t/* 18.4.12 t ST_Xstring (Plaintext String) */\n\t// TODO: is whitespace actually valid here?\n\tif(x.match(/^\\s*<(?:\\w+:)?t[^>]*>/)) {\n\t\tz.t = unescapexml(utf8read(x.slice(x.indexOf(\">\")+1).split(/<\\/(?:\\w+:)?t>/)[0]||\"\"));\n\t\tz.r = utf8read(x);\n\t\tif(html) z.h = escapehtml(z.t);\n\t}\n\t/* 18.4.4 r CT_RElt (Rich Text Run) */\n\telse if((/*y = */x.match(sirregex))) {\n\t\tz.r = utf8read(x);\n\t\tz.t = unescapexml(utf8read((x.replace(sirphregex, '').match(sitregex)||[]).join(\"\").replace(tagregex,\"\")));\n\t\tif(html) z.h = rs_to_html(parse_rs(z.r));\n\t}\n\t/* 18.4.3 phoneticPr CT_PhoneticPr (TODO: needed for Asian support) */\n\t/* 18.4.6 rPh CT_PhoneticRun (TODO: needed for Asian support) */\n\treturn z;\n}\n\n/* 18.4 Shared String Table */\nvar sstr0 = /<(?:\\w+:)?sst([^>]*)>([\\s\\S]*)<\\/(?:\\w+:)?sst>/;\nvar sstr1 = /<(?:\\w+:)?(?:si|sstItem)>/g;\nvar sstr2 = /<\\/(?:\\w+:)?(?:si|sstItem)>/;\nfunction parse_sst_xml(data/*:string*/, opts)/*:SST*/ {\n\tvar s/*:SST*/ = ([]/*:any*/), ss = \"\";\n\tif(!data) return s;\n\t/* 18.4.9 sst CT_Sst */\n\tvar sst = data.match(sstr0);\n\tif(sst) {\n\t\tss = sst[2].replace(sstr1,\"\").split(sstr2);\n\t\tfor(var i = 0; i != ss.length; ++i) {\n\t\t\tvar o = parse_si(ss[i].trim(), opts);\n\t\t\tif(o != null) s[s.length] = o;\n\t\t}\n\t\tsst = parsexmltag(sst[1]); s.Count = sst.count; s.Unique = sst.uniqueCount;\n\t}\n\treturn s;\n}\n\nvar straywsregex = /^\\s|\\s$|[\\t\\n\\r]/;\nfunction write_sst_xml(sst/*:SST*/, opts)/*:string*/ {\n\tif(!opts.bookSST) return \"\";\n\tvar o = [XML_HEADER];\n\to[o.length] = (writextag('sst', null, {\n\t\txmlns: XMLNS_main[0],\n\t\tcount: sst.Count,\n\t\tuniqueCount: sst.Unique\n\t}));\n\tfor(var i = 0; i != sst.length; ++i) { if(sst[i] == null) continue;\n\t\tvar s/*:XLString*/ = sst[i];\n\t\tvar sitag = \"\";\n\t\tif(s.r) sitag += s.r;\n\t\telse {\n\t\t\tsitag += \"\" + escapexml(s.t) + \"\";\n\t\t}\n\t\tsitag += \"\";\n\t\to[o.length] = (sitag);\n\t}\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.221 BrtBeginSst */\nfunction parse_BrtBeginSst(data) {\n\treturn [data.read_shift(4), data.read_shift(4)];\n}\n\n/* [MS-XLSB] 2.1.7.45 Shared Strings */\nfunction parse_sst_bin(data, opts)/*:SST*/ {\n\tvar s/*:SST*/ = ([]/*:any*/);\n\tvar pass = false;\n\trecordhopper(data, function hopper_sst(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x009F: /* BrtBeginSst */\n\t\t\t\ts.Count = val[0]; s.Unique = val[1]; break;\n\t\t\tcase 0x0013: /* BrtSSTItem */\n\t\t\t\ts.push(val); break;\n\t\t\tcase 0x00A0: /* BrtEndSst */\n\t\t\t\treturn true;\n\n\t\t\tcase 0x0023: /* BrtFRTBegin */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* BrtFRTEnd */\n\t\t\t\tpass = false; break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T){}\n\t\t\t\tif(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t});\n\treturn s;\n}\n\nfunction write_BrtBeginSst(sst, o) {\n\tif(!o) o = new_buf(8);\n\to.write_shift(4, sst.Count);\n\to.write_shift(4, sst.Unique);\n\treturn o;\n}\n\nvar write_BrtSSTItem = write_RichStr;\n\nfunction write_sst_bin(sst/*::, opts*/) {\n\tvar ba = buf_array();\n\twrite_record(ba, 0x009F /* BrtBeginSst */, write_BrtBeginSst(sst));\n\tfor(var i = 0; i < sst.length; ++i) write_record(ba, 0x0013 /* BrtSSTItem */, write_BrtSSTItem(sst[i]));\n\t/* FRTSST */\n\twrite_record(ba, 0x00A0 /* BrtEndSst */);\n\treturn ba.end();\n}\nfunction _JS2ANSI(str/*:string*/)/*:Array*/ {\n\tif(typeof $cptable !== 'undefined') return $cptable.utils.encode(current_ansi, str);\n\tvar o/*:Array*/ = [], oo = str.split(\"\");\n\tfor(var i = 0; i < oo.length; ++i) o[i] = oo[i].charCodeAt(0);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.4 Version */\nfunction parse_CRYPTOVersion(blob, length/*:?number*/) {\n\tvar o/*:any*/ = {};\n\to.Major = blob.read_shift(2);\n\to.Minor = blob.read_shift(2);\n\t/*:: if(length == null) return o; */\n\tif(length >= 4) blob.l += length - 4;\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.5 DataSpaceVersionInfo */\nfunction parse_DataSpaceVersionInfo(blob) {\n\tvar o = {};\n\to.id = blob.read_shift(0, 'lpp4');\n\to.R = parse_CRYPTOVersion(blob, 4);\n\to.U = parse_CRYPTOVersion(blob, 4);\n\to.W = parse_CRYPTOVersion(blob, 4);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.6.1 DataSpaceMapEntry Structure */\nfunction parse_DataSpaceMapEntry(blob) {\n\tvar len = blob.read_shift(4);\n\tvar end = blob.l + len - 4;\n\tvar o = {};\n\tvar cnt = blob.read_shift(4);\n\tvar comps/*:Array<{t:number, v:string}>*/ = [];\n\t/* [MS-OFFCRYPTO] 2.1.6.2 DataSpaceReferenceComponent Structure */\n\twhile(cnt-- > 0) comps.push({ t: blob.read_shift(4), v: blob.read_shift(0, 'lpp4') });\n\to.name = blob.read_shift(0, 'lpp4');\n\to.comps = comps;\n\tif(blob.l != end) throw new Error(\"Bad DataSpaceMapEntry: \" + blob.l + \" != \" + end);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.6 DataSpaceMap */\nfunction parse_DataSpaceMap(blob) {\n\tvar o = [];\n\tblob.l += 4; // must be 0x8\n\tvar cnt = blob.read_shift(4);\n\twhile(cnt-- > 0) o.push(parse_DataSpaceMapEntry(blob));\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.7 DataSpaceDefinition */\nfunction parse_DataSpaceDefinition(blob)/*:Array*/ {\n\tvar o/*:Array*/ = [];\n\tblob.l += 4; // must be 0x8\n\tvar cnt = blob.read_shift(4);\n\twhile(cnt-- > 0) o.push(blob.read_shift(0, 'lpp4'));\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.1.8 DataSpaceDefinition */\nfunction parse_TransformInfoHeader(blob) {\n\tvar o = {};\n\t/*var len = */blob.read_shift(4);\n\tblob.l += 4; // must be 0x1\n\to.id = blob.read_shift(0, 'lpp4');\n\to.name = blob.read_shift(0, 'lpp4');\n\to.R = parse_CRYPTOVersion(blob, 4);\n\to.U = parse_CRYPTOVersion(blob, 4);\n\to.W = parse_CRYPTOVersion(blob, 4);\n\treturn o;\n}\n\nfunction parse_Primary(blob) {\n\t/* [MS-OFFCRYPTO] 2.2.6 IRMDSTransformInfo */\n\tvar hdr = parse_TransformInfoHeader(blob);\n\t/* [MS-OFFCRYPTO] 2.1.9 EncryptionTransformInfo */\n\thdr.ename = blob.read_shift(0, '8lpp4');\n\thdr.blksz = blob.read_shift(4);\n\thdr.cmode = blob.read_shift(4);\n\tif(blob.read_shift(4) != 0x04) throw new Error(\"Bad !Primary record\");\n\treturn hdr;\n}\n\n/* [MS-OFFCRYPTO] 2.3.2 Encryption Header */\nfunction parse_EncryptionHeader(blob, length/*:number*/) {\n\tvar tgt = blob.l + length;\n\tvar o = {};\n\to.Flags = (blob.read_shift(4) & 0x3F);\n\tblob.l += 4;\n\to.AlgID = blob.read_shift(4);\n\tvar valid = false;\n\tswitch(o.AlgID) {\n\t\tcase 0x660E: case 0x660F: case 0x6610: valid = (o.Flags == 0x24); break;\n\t\tcase 0x6801: valid = (o.Flags == 0x04); break;\n\t\tcase 0: valid = (o.Flags == 0x10 || o.Flags == 0x04 || o.Flags == 0x24); break;\n\t\tdefault: throw 'Unrecognized encryption algorithm: ' + o.AlgID;\n\t}\n\tif(!valid) throw new Error(\"Encryption Flags/AlgID mismatch\");\n\to.AlgIDHash = blob.read_shift(4);\n\to.KeySize = blob.read_shift(4);\n\to.ProviderType = blob.read_shift(4);\n\tblob.l += 8;\n\to.CSPName = blob.read_shift((tgt-blob.l)>>1, 'utf16le');\n\tblob.l = tgt;\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.3.3 Encryption Verifier */\nfunction parse_EncryptionVerifier(blob, length/*:number*/) {\n\tvar o = {}, tgt = blob.l + length;\n\tblob.l += 4; // SaltSize must be 0x10\n\to.Salt = blob.slice(blob.l, blob.l+16); blob.l += 16;\n\to.Verifier = blob.slice(blob.l, blob.l+16); blob.l += 16;\n\t/*var sz = */blob.read_shift(4);\n\to.VerifierHash = blob.slice(blob.l, tgt); blob.l = tgt;\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.3.4.* EncryptionInfo Stream */\nfunction parse_EncryptionInfo(blob) {\n\tvar vers = parse_CRYPTOVersion(blob);\n\tswitch(vers.Minor) {\n\t\tcase 0x02: return [vers.Minor, parse_EncInfoStd(blob, vers)];\n\t\tcase 0x03: return [vers.Minor, parse_EncInfoExt(blob, vers)];\n\t\tcase 0x04: return [vers.Minor, parse_EncInfoAgl(blob, vers)];\n\t}\n\tthrow new Error(\"ECMA-376 Encrypted file unrecognized Version: \" + vers.Minor);\n}\n\n/* [MS-OFFCRYPTO] 2.3.4.5 EncryptionInfo Stream (Standard Encryption) */\nfunction parse_EncInfoStd(blob/*::, vers*/) {\n\tvar flags = blob.read_shift(4);\n\tif((flags & 0x3F) != 0x24) throw new Error(\"EncryptionInfo mismatch\");\n\tvar sz = blob.read_shift(4);\n\t//var tgt = blob.l + sz;\n\tvar hdr = parse_EncryptionHeader(blob, sz);\n\tvar verifier = parse_EncryptionVerifier(blob, blob.length - blob.l);\n\treturn { t:\"Std\", h:hdr, v:verifier };\n}\n/* [MS-OFFCRYPTO] 2.3.4.6 EncryptionInfo Stream (Extensible Encryption) */\nfunction parse_EncInfoExt(/*::blob, vers*/) { throw new Error(\"File is password-protected: ECMA-376 Extensible\"); }\n/* [MS-OFFCRYPTO] 2.3.4.10 EncryptionInfo Stream (Agile Encryption) */\nfunction parse_EncInfoAgl(blob/*::, vers*/) {\n\tvar KeyData = [\"saltSize\",\"blockSize\",\"keyBits\",\"hashSize\",\"cipherAlgorithm\",\"cipherChaining\",\"hashAlgorithm\",\"saltValue\"];\n\tblob.l+=4;\n\tvar xml = blob.read_shift(blob.length - blob.l, 'utf8');\n\tvar o = {};\n\txml.replace(tagregex, function xml_agile(x) {\n\t\tvar y/*:any*/ = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': break;\n\t\t\tcase '': case '': break;\n\n\t\t\tcase '': break;\n\t\t\tcase ' 4 || vers.Major < 2) throw new Error('unrecognized major version code: ' + vers.Major);\n\to.Flags = blob.read_shift(4); length -= 4;\n\tvar sz = blob.read_shift(4); length -= 4;\n\to.EncryptionHeader = parse_EncryptionHeader(blob, sz); length -= sz;\n\to.EncryptionVerifier = parse_EncryptionVerifier(blob, length);\n\treturn o;\n}\n/* [MS-OFFCRYPTO] 2.3.6.1 RC4 Encryption Header */\nfunction parse_RC4Header(blob/*::, length*/) {\n\tvar o = {};\n\tvar vers = o.EncryptionVersionInfo = parse_CRYPTOVersion(blob, 4);\n\tif(vers.Major != 1 || vers.Minor != 1) throw 'unrecognized version code ' + vers.Major + ' : ' + vers.Minor;\n\to.Salt = blob.read_shift(16);\n\to.EncryptedVerifier = blob.read_shift(16);\n\to.EncryptedVerifierHash = blob.read_shift(16);\n\treturn o;\n}\n\n/* [MS-OFFCRYPTO] 2.3.7.1 Binary Document Password Verifier Derivation */\nfunction crypto_CreatePasswordVerifier_Method1(Password/*:string*/) {\n\tvar Verifier = 0x0000, PasswordArray;\n\tvar PasswordDecoded = _JS2ANSI(Password);\n\tvar len = PasswordDecoded.length + 1, i, PasswordByte;\n\tvar Intermediate1, Intermediate2, Intermediate3;\n\tPasswordArray = new_raw_buf(len);\n\tPasswordArray[0] = PasswordDecoded.length;\n\tfor(i = 1; i != len; ++i) PasswordArray[i] = PasswordDecoded[i-1];\n\tfor(i = len-1; i >= 0; --i) {\n\t\tPasswordByte = PasswordArray[i];\n\t\tIntermediate1 = ((Verifier & 0x4000) === 0x0000) ? 0 : 1;\n\t\tIntermediate2 = (Verifier << 1) & 0x7FFF;\n\t\tIntermediate3 = Intermediate1 | Intermediate2;\n\t\tVerifier = Intermediate3 ^ PasswordByte;\n\t}\n\treturn Verifier ^ 0xCE4B;\n}\n\n/* [MS-OFFCRYPTO] 2.3.7.2 Binary Document XOR Array Initialization */\nvar crypto_CreateXorArray_Method1 = /*#__PURE__*/(function() {\n\tvar PadArray = [0xBB, 0xFF, 0xFF, 0xBA, 0xFF, 0xFF, 0xB9, 0x80, 0x00, 0xBE, 0x0F, 0x00, 0xBF, 0x0F, 0x00];\n\tvar InitialCode = [0xE1F0, 0x1D0F, 0xCC9C, 0x84C0, 0x110C, 0x0E10, 0xF1CE, 0x313E, 0x1872, 0xE139, 0xD40F, 0x84F9, 0x280C, 0xA96A, 0x4EC3];\n\tvar XorMatrix = [0xAEFC, 0x4DD9, 0x9BB2, 0x2745, 0x4E8A, 0x9D14, 0x2A09, 0x7B61, 0xF6C2, 0xFDA5, 0xEB6B, 0xC6F7, 0x9DCF, 0x2BBF, 0x4563, 0x8AC6, 0x05AD, 0x0B5A, 0x16B4, 0x2D68, 0x5AD0, 0x0375, 0x06EA, 0x0DD4, 0x1BA8, 0x3750, 0x6EA0, 0xDD40, 0xD849, 0xA0B3, 0x5147, 0xA28E, 0x553D, 0xAA7A, 0x44D5, 0x6F45, 0xDE8A, 0xAD35, 0x4A4B, 0x9496, 0x390D, 0x721A, 0xEB23, 0xC667, 0x9CEF, 0x29FF, 0x53FE, 0xA7FC, 0x5FD9, 0x47D3, 0x8FA6, 0x0F6D, 0x1EDA, 0x3DB4, 0x7B68, 0xF6D0, 0xB861, 0x60E3, 0xC1C6, 0x93AD, 0x377B, 0x6EF6, 0xDDEC, 0x45A0, 0x8B40, 0x06A1, 0x0D42, 0x1A84, 0x3508, 0x6A10, 0xAA51, 0x4483, 0x8906, 0x022D, 0x045A, 0x08B4, 0x1168, 0x76B4, 0xED68, 0xCAF1, 0x85C3, 0x1BA7, 0x374E, 0x6E9C, 0x3730, 0x6E60, 0xDCC0, 0xA9A1, 0x4363, 0x86C6, 0x1DAD, 0x3331, 0x6662, 0xCCC4, 0x89A9, 0x0373, 0x06E6, 0x0DCC, 0x1021, 0x2042, 0x4084, 0x8108, 0x1231, 0x2462, 0x48C4];\n\tvar Ror = function(Byte) { return ((Byte/2) | (Byte*128)) & 0xFF; };\n\tvar XorRor = function(byte1, byte2) { return Ror(byte1 ^ byte2); };\n\tvar CreateXorKey_Method1 = function(Password) {\n\t\tvar XorKey = InitialCode[Password.length - 1];\n\t\tvar CurrentElement = 0x68;\n\t\tfor(var i = Password.length-1; i >= 0; --i) {\n\t\t\tvar Char = Password[i];\n\t\t\tfor(var j = 0; j != 7; ++j) {\n\t\t\t\tif(Char & 0x40) XorKey ^= XorMatrix[CurrentElement];\n\t\t\t\tChar *= 2; --CurrentElement;\n\t\t\t}\n\t\t}\n\t\treturn XorKey;\n\t};\n\treturn function(password/*:string*/) {\n\t\tvar Password = _JS2ANSI(password);\n\t\tvar XorKey = CreateXorKey_Method1(Password);\n\t\tvar Index = Password.length;\n\t\tvar ObfuscationArray = new_raw_buf(16);\n\t\tfor(var i = 0; i != 16; ++i) ObfuscationArray[i] = 0x00;\n\t\tvar Temp, PasswordLastChar, PadIndex;\n\t\tif((Index & 1) === 1) {\n\t\t\tTemp = XorKey >> 8;\n\t\t\tObfuscationArray[Index] = XorRor(PadArray[0], Temp);\n\t\t\t--Index;\n\t\t\tTemp = XorKey & 0xFF;\n\t\t\tPasswordLastChar = Password[Password.length - 1];\n\t\t\tObfuscationArray[Index] = XorRor(PasswordLastChar, Temp);\n\t\t}\n\t\twhile(Index > 0) {\n\t\t\t--Index;\n\t\t\tTemp = XorKey >> 8;\n\t\t\tObfuscationArray[Index] = XorRor(Password[Index], Temp);\n\t\t\t--Index;\n\t\t\tTemp = XorKey & 0xFF;\n\t\t\tObfuscationArray[Index] = XorRor(Password[Index], Temp);\n\t\t}\n\t\tIndex = 15;\n\t\tPadIndex = 15 - Password.length;\n\t\twhile(PadIndex > 0) {\n\t\t\tTemp = XorKey >> 8;\n\t\t\tObfuscationArray[Index] = XorRor(PadArray[PadIndex], Temp);\n\t\t\t--Index;\n\t\t\t--PadIndex;\n\t\t\tTemp = XorKey & 0xFF;\n\t\t\tObfuscationArray[Index] = XorRor(Password[Index], Temp);\n\t\t\t--Index;\n\t\t\t--PadIndex;\n\t\t}\n\t\treturn ObfuscationArray;\n\t};\n})();\n\n/* [MS-OFFCRYPTO] 2.3.7.3 Binary Document XOR Data Transformation Method 1 */\nvar crypto_DecryptData_Method1 = function(password/*:string*/, Data, XorArrayIndex, XorArray, O) {\n\t/* If XorArray is set, use it; if O is not set, make changes in-place */\n\tif(!O) O = Data;\n\tif(!XorArray) XorArray = crypto_CreateXorArray_Method1(password);\n\tvar Index, Value;\n\tfor(Index = 0; Index != Data.length; ++Index) {\n\t\tValue = Data[Index];\n\t\tValue ^= XorArray[XorArrayIndex];\n\t\tValue = ((Value>>5) | (Value<<3)) & 0xFF;\n\t\tO[Index] = Value;\n\t\t++XorArrayIndex;\n\t}\n\treturn [O, XorArrayIndex, XorArray];\n};\n\nvar crypto_MakeXorDecryptor = function(password/*:string*/) {\n\tvar XorArrayIndex = 0, XorArray = crypto_CreateXorArray_Method1(password);\n\treturn function(Data) {\n\t\tvar O = crypto_DecryptData_Method1(\"\", Data, XorArrayIndex, XorArray);\n\t\tXorArrayIndex = O[1];\n\t\treturn O[0];\n\t};\n};\n\n/* 2.5.343 */\nfunction parse_XORObfuscation(blob, length, opts, out) {\n\tvar o = ({ key: parseuint16(blob), verificationBytes: parseuint16(blob) }/*:any*/);\n\tif(opts.password) o.verifier = crypto_CreatePasswordVerifier_Method1(opts.password);\n\tout.valid = o.verificationBytes === o.verifier;\n\tif(out.valid) out.insitu = crypto_MakeXorDecryptor(opts.password);\n\treturn o;\n}\n\n/* 2.4.117 */\nfunction parse_FilePassHeader(blob, length/*:number*/, oo) {\n\tvar o = oo || {}; o.Info = blob.read_shift(2); blob.l -= 2;\n\tif(o.Info === 1) o.Data = parse_RC4Header(blob, length);\n\telse o.Data = parse_RC4CryptoHeader(blob, length);\n\treturn o;\n}\nfunction parse_FilePass(blob, length/*:number*/, opts) {\n\tvar o = ({ Type: opts.biff >= 8 ? blob.read_shift(2) : 0 }/*:any*/); /* wEncryptionType */\n\tif(o.Type) parse_FilePassHeader(blob, length-2, o);\n\telse parse_XORObfuscation(blob, opts.biff >= 8 ? length : length - 2, opts, o);\n\treturn o;\n}\n\n\nvar RTF = /*#__PURE__*/(function() {\n\tfunction rtf_to_sheet(d/*:RawData*/, opts)/*:Worksheet*/ {\n\t\tswitch(opts.type) {\n\t\t\tcase 'base64': return rtf_to_sheet_str(Base64_decode(d), opts);\n\t\t\tcase 'binary': return rtf_to_sheet_str(d, opts);\n\t\t\tcase 'buffer': return rtf_to_sheet_str(has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d), opts);\n\t\t\tcase 'array': return rtf_to_sheet_str(cc2str(d), opts);\n\t\t}\n\t\tthrow new Error(\"Unrecognized type \" + opts.type);\n\t}\n\n\t/* TODO: this is a stub */\n\tfunction rtf_to_sheet_str(str/*:string*/, opts)/*:Worksheet*/ {\n\t\tvar o = opts || {};\n\t\tvar ws/*:Worksheet*/ = o.dense ? ([]/*:any*/) : ({}/*:any*/);\n\n\t\tvar rows = str.match(/\\\\trowd.*?\\\\row\\b/g);\n\t\tif(!rows.length) throw new Error(\"RTF missing table\");\n\t\tvar range/*:Range*/ = ({s: {c:0, r:0}, e: {c:0, r:rows.length - 1}}/*:any*/);\n\t\trows.forEach(function(rowtf, R) {\n\t\t\tif(Array.isArray(ws)) ws[R] = [];\n\t\t\tvar rtfre = /\\\\\\w+\\b/g;\n\t\t\tvar last_index = 0;\n\t\t\tvar res;\n\t\t\tvar C = -1;\n\t\t\twhile((res = rtfre.exec(rowtf))) {\n\t\t\t\tswitch(res[0]) {\n\t\t\t\t\tcase \"\\\\cell\":\n\t\t\t\t\t\tvar data = rowtf.slice(last_index, rtfre.lastIndex - res[0].length);\n\t\t\t\t\t\tif(data[0] == \" \") data = data.slice(1);\n\t\t\t\t\t\t++C;\n\t\t\t\t\t\tif(data.length) {\n\t\t\t\t\t\t\t// TODO: value parsing, including codepage adjustments\n\t\t\t\t\t\t\tvar cell = {v: data, t:\"s\"};\n\t\t\t\t\t\t\tif(Array.isArray(ws)) ws[R][C] = cell;\n\t\t\t\t\t\t\telse ws[encode_cell({r:R, c:C})] = cell;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tlast_index = rtfre.lastIndex;\n\t\t\t}\n\t\t\tif(C > range.e.c) range.e.c = C;\n\t\t});\n\t\tws['!ref'] = encode_range(range);\n\t\treturn ws;\n\t}\n\n\tfunction rtf_to_workbook(d/*:RawData*/, opts)/*:Workbook*/ { return sheet_to_workbook(rtf_to_sheet(d, opts), opts); }\n\n\t/* TODO: this is a stub */\n\tfunction sheet_to_rtf(ws/*:Worksheet*//*::, opts*/)/*:string*/ {\n\t\tvar o = [\"{\\\\rtf1\\\\ansi\"];\n\t\tvar r = safe_decode_range(ws['!ref']), cell/*:Cell*/;\n\t\tvar dense = Array.isArray(ws);\n\t\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\t\to.push(\"\\\\trowd\\\\trautofit1\");\n\t\t\tfor(var C = r.s.c; C <= r.e.c; ++C) o.push(\"\\\\cellx\" + (C+1));\n\t\t\to.push(\"\\\\pard\\\\intbl\");\n\t\t\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\t\t\tvar coord = encode_cell({r:R,c:C});\n\t\t\t\tcell = dense ? (ws[R]||[])[C]: ws[coord];\n\t\t\t\tif(!cell || cell.v == null && (!cell.f || cell.F)) continue;\n\t\t\t\to.push(\" \" + (cell.w || (format_cell(cell), cell.w)));\n\t\t\t\to.push(\"\\\\cell\");\n\t\t\t}\n\t\t\to.push(\"\\\\pard\\\\intbl\\\\row\");\n\t\t}\n\t\treturn o.join(\"\") + \"}\";\n\t}\n\n\treturn {\n\t\tto_workbook: rtf_to_workbook,\n\t\tto_sheet: rtf_to_sheet,\n\t\tfrom_sheet: sheet_to_rtf\n\t};\n})();\nfunction hex2RGB(h) {\n\tvar o = h.slice(h[0]===\"#\"?1:0).slice(0,6);\n\treturn [parseInt(o.slice(0,2),16),parseInt(o.slice(2,4),16),parseInt(o.slice(4,6),16)];\n}\nfunction rgb2Hex(rgb) {\n\tfor(var i=0,o=1; i!=3; ++i) o = o*256 + (rgb[i]>255?255:rgb[i]<0?0:rgb[i]);\n\treturn o.toString(16).toUpperCase().slice(1);\n}\n\nfunction rgb2HSL(rgb) {\n\tvar R = rgb[0]/255, G = rgb[1]/255, B=rgb[2]/255;\n\tvar M = Math.max(R, G, B), m = Math.min(R, G, B), C = M - m;\n\tif(C === 0) return [0, 0, R];\n\n\tvar H6 = 0, S = 0, L2 = (M + m);\n\tS = C / (L2 > 1 ? 2 - L2 : L2);\n\tswitch(M){\n\t\tcase R: H6 = ((G - B) / C + 6)%6; break;\n\t\tcase G: H6 = ((B - R) / C + 2); break;\n\t\tcase B: H6 = ((R - G) / C + 4); break;\n\t}\n\treturn [H6 / 6, S, L2 / 2];\n}\n\nfunction hsl2RGB(hsl){\n\tvar H = hsl[0], S = hsl[1], L = hsl[2];\n\tvar C = S * 2 * (L < 0.5 ? L : 1 - L), m = L - C/2;\n\tvar rgb = [m,m,m], h6 = 6*H;\n\n\tvar X;\n\tif(S !== 0) switch(h6|0) {\n\t\tcase 0: case 6: X = C * h6; rgb[0] += C; rgb[1] += X; break;\n\t\tcase 1: X = C * (2 - h6); rgb[0] += X; rgb[1] += C; break;\n\t\tcase 2: X = C * (h6 - 2); rgb[1] += C; rgb[2] += X; break;\n\t\tcase 3: X = C * (4 - h6); rgb[1] += X; rgb[2] += C; break;\n\t\tcase 4: X = C * (h6 - 4); rgb[2] += C; rgb[0] += X; break;\n\t\tcase 5: X = C * (6 - h6); rgb[2] += X; rgb[0] += C; break;\n\t}\n\tfor(var i = 0; i != 3; ++i) rgb[i] = Math.round(rgb[i]*255);\n\treturn rgb;\n}\n\n/* 18.8.3 bgColor tint algorithm */\nfunction rgb_tint(hex, tint) {\n\tif(tint === 0) return hex;\n\tvar hsl = rgb2HSL(hex2RGB(hex));\n\tif (tint < 0) hsl[2] = hsl[2] * (1 + tint);\n\telse hsl[2] = 1 - (1 - hsl[2]) * (1 - tint);\n\treturn rgb2Hex(hsl2RGB(hsl));\n}\n\n/* 18.3.1.13 width calculations */\n/* [MS-OI29500] 2.1.595 Column Width & Formatting */\nvar DEF_MDW = 6, MAX_MDW = 15, MIN_MDW = 1, MDW = DEF_MDW;\nfunction width2px(width) { return Math.floor(( width + (Math.round(128/MDW))/256 )* MDW ); }\nfunction px2char(px) { return (Math.floor((px - 5)/MDW * 100 + 0.5))/100; }\nfunction char2width(chr) { return (Math.round((chr * MDW + 5)/MDW*256))/256; }\n//function px2char_(px) { return (((px - 5)/MDW * 100 + 0.5))/100; }\n//function char2width_(chr) { return (((chr * MDW + 5)/MDW*256))/256; }\nfunction cycle_width(collw) { return char2width(px2char(width2px(collw))); }\n/* XLSX/XLSB/XLS specify width in units of MDW */\nfunction find_mdw_colw(collw) {\n\tvar delta = Math.abs(collw - cycle_width(collw)), _MDW = MDW;\n\tif(delta > 0.005) for(MDW=MIN_MDW; MDW 0.5) guess--;\n\t\tif(Math.abs(guess) < delta) { delta = Math.abs(guess); _MDW = MDW; }\n\t}\n\tMDW = _MDW;\n}*/\n\nfunction process_col(coll/*:ColInfo*/) {\n\tif(coll.width) {\n\t\tcoll.wpx = width2px(coll.width);\n\t\tcoll.wch = px2char(coll.wpx);\n\t\tcoll.MDW = MDW;\n\t} else if(coll.wpx) {\n\t\tcoll.wch = px2char(coll.wpx);\n\t\tcoll.width = char2width(coll.wch);\n\t\tcoll.MDW = MDW;\n\t} else if(typeof coll.wch == 'number') {\n\t\tcoll.width = char2width(coll.wch);\n\t\tcoll.wpx = width2px(coll.width);\n\t\tcoll.MDW = MDW;\n\t}\n\tif(coll.customWidth) delete coll.customWidth;\n}\n\nvar DEF_PPI = 96, PPI = DEF_PPI;\nfunction px2pt(px) { return px * 96 / PPI; }\nfunction pt2px(pt) { return pt * PPI / 96; }\n\n/* [MS-EXSPXML3] 2.4.54 ST_enmPattern */\nvar XLMLPatternTypeMap = {\n\t\"None\": \"none\",\n\t\"Solid\": \"solid\",\n\t\"Gray50\": \"mediumGray\",\n\t\"Gray75\": \"darkGray\",\n\t\"Gray25\": \"lightGray\",\n\t\"HorzStripe\": \"darkHorizontal\",\n\t\"VertStripe\": \"darkVertical\",\n\t\"ReverseDiagStripe\": \"darkDown\",\n\t\"DiagStripe\": \"darkUp\",\n\t\"DiagCross\": \"darkGrid\",\n\t\"ThickDiagCross\": \"darkTrellis\",\n\t\"ThinHorzStripe\": \"lightHorizontal\",\n\t\"ThinVertStripe\": \"lightVertical\",\n\t\"ThinReverseDiagStripe\": \"lightDown\",\n\t\"ThinHorzCross\": \"lightGrid\"\n};\n\n/* 18.8.5 borders CT_Borders */\nfunction parse_borders(t, styles, themes, opts) {\n\tstyles.Borders = [];\n\tvar border = {};\n\tvar pass = false;\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.4 border CT_Border */\n\t\t\tcase '': case '':\n\t\t\t\tborder = /*::(*/{}/*:: :any)*/;\n\t\t\t\tif(y.diagonalUp) border.diagonalUp = parsexmlbool(y.diagonalUp);\n\t\t\t\tif(y.diagonalDown) border.diagonalDown = parsexmlbool(y.diagonalDown);\n\t\t\t\tstyles.Borders.push(border);\n\t\t\t\tbreak;\n\t\t\tcase '': break;\n\n\t\t\t/* note: not in spec, appears to be CT_BorderPr */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* note: not in spec, appears to be CT_BorderPr */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.43 top CT_BorderPr */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.6 bottom CT_BorderPr */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.13 diagonal CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.25 horizontal CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.44 vertical CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.37 start CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.16 end CT_BorderPr */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.? color CT_Color */\n\t\t\tcase '':\n\t\t\t\tbreak;\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in borders');\n\t\t\t}\n\t\t}\n\t});\n}\n\n/* 18.8.21 fills CT_Fills */\nfunction parse_fills(t, styles, themes, opts) {\n\tstyles.Fills = [];\n\tvar fill = {};\n\tvar pass = false;\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.20 fill CT_Fill */\n\t\t\tcase '': case '':\n\t\t\t\tfill = {}; styles.Fills.push(fill); break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.24 gradientFill CT_GradientFill */\n\t\t\tcase '': break;\n\t\t\tcase '': styles.Fills.push(fill); fill = {}; break;\n\n\t\t\t/* 18.8.32 patternFill CT_PatternFill */\n\t\t\tcase '':\n\t\t\t\tif(y.patternType) fill.patternType = y.patternType;\n\t\t\t\tbreak;\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.3 bgColor CT_Color */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.19 fgColor CT_Color */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.38 stop CT_GradientStop */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.? color CT_Color */\n\t\t\tcase '': break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in fills');\n\t\t\t}\n\t\t}\n\t});\n}\n\n/* 18.8.23 fonts CT_Fonts */\nfunction parse_fonts(t, styles, themes, opts) {\n\tstyles.Fonts = [];\n\tvar font = {};\n\tvar pass = false;\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.22 font CT_Font */\n\t\t\tcase '': break;\n\t\t\tcase '': case '':\n\t\t\t\tstyles.Fonts.push(font);\n\t\t\t\tfont = {};\n\t\t\t\tbreak;\n\n\t\t\t/* 18.8.29 name CT_FontName */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.2 b CT_BooleanProperty */\n\t\t\tcase '': font.bold = 1; break;\n\n\t\t\t/* 18.8.26 i CT_BooleanProperty */\n\t\t\tcase '': font.italic = 1; break;\n\n\t\t\t/* 18.4.13 u CT_UnderlineProperty */\n\t\t\tcase '': font.underline = 1; break;\n\n\t\t\t/* 18.4.10 strike CT_BooleanProperty */\n\t\t\tcase '': font.strike = 1; break;\n\n\t\t\t/* 18.4.2 outline CT_BooleanProperty */\n\t\t\tcase '': font.outline = 1; break;\n\n\t\t\t/* 18.8.36 shadow CT_BooleanProperty */\n\t\t\tcase '': font.shadow = 1; break;\n\n\t\t\t/* 18.8.12 condense CT_BooleanProperty */\n\t\t\tcase '': font.condense = 1; break;\n\n\t\t\t/* 18.8.17 extend CT_BooleanProperty */\n\t\t\tcase '': font.extend = 1; break;\n\n\t\t\t/* 18.4.11 sz CT_FontSize */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.4.14 vertAlign CT_VerticalAlignFontProperty */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.18 family CT_FontFamily */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.8.35 scheme CT_FontScheme */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.4.1 charset CT_IntProperty */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* note: sometimes mc:AlternateContent appears bare */\n\t\t\tcase '': pass = false; break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in fonts');\n\t\t\t}\n\t\t}\n\t});\n}\n\n/* 18.8.31 numFmts CT_NumFmts */\nfunction parse_numFmts(t, styles, opts) {\n\tstyles.NumberFmt = [];\n\tvar k/*Array*/ = (keys(table_fmt)/*:any*/);\n\tfor(var i=0; i < k.length; ++i) styles.NumberFmt[k[i]] = table_fmt[k[i]];\n\tvar m = t[0].match(tagregex);\n\tif(!m) return;\n\tfor(i=0; i < m.length; ++i) {\n\t\tvar y = parsexmltag(m[i]);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': case '': case '': break;\n\t\t\tcase '0) {\n\t\t\t\t\tif(j > 0x188) {\n\t\t\t\t\t\tfor(j = 0x188; j > 0x3c; --j) if(styles.NumberFmt[j] == null) break;\n\t\t\t\t\t\tstyles.NumberFmt[j] = f;\n\t\t\t\t\t}\n\t\t\t\t\tSSF_load(f,j);\n\t\t\t\t}\n\t\t\t} break;\n\t\t\tcase '': break;\n\t\t\tdefault: if(opts.WTF) throw new Error('unrecognized ' + y[0] + ' in numFmts');\n\t\t}\n\t}\n}\n\nfunction write_numFmts(NF/*:{[n:number|string]:string}*//*::, opts*/) {\n\tvar o = [\"\"];\n\t[[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) {\n\t\tfor(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) o[o.length] = (writextag('numFmt',null,{numFmtId:i,formatCode:escapexml(NF[i])}));\n\t});\n\tif(o.length === 1) return \"\";\n\to[o.length] = (\"\");\n\to[0] = writextag('numFmts', null, { count:o.length-2 }).replace(\"/>\", \">\");\n\treturn o.join(\"\");\n}\n\n/* 18.8.10 cellXfs CT_CellXfs */\nvar cellXF_uint = [ \"numFmtId\", \"fillId\", \"fontId\", \"borderId\", \"xfId\" ];\nvar cellXF_bool = [ \"applyAlignment\", \"applyBorder\", \"applyFill\", \"applyFont\", \"applyNumberFormat\", \"applyProtection\", \"pivotButton\", \"quotePrefix\" ];\nfunction parse_cellXfs(t, styles, opts) {\n\tstyles.CellXf = [];\n\tvar xf;\n\tvar pass = false;\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x), i = 0;\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.8.45 xf CT_Xf */\n\t\t\tcase '':\n\t\t\t\txf = y;\n\t\t\t\tdelete xf[0];\n\t\t\t\tfor(i = 0; i < cellXF_uint.length; ++i) if(xf[cellXF_uint[i]])\n\t\t\t\t\txf[cellXF_uint[i]] = parseInt(xf[cellXF_uint[i]], 10);\n\t\t\t\tfor(i = 0; i < cellXF_bool.length; ++i) if(xf[cellXF_bool[i]])\n\t\t\t\t\txf[cellXF_bool[i]] = parsexmlbool(xf[cellXF_bool[i]]);\n\t\t\t\tif(styles.NumberFmt && xf.numFmtId > 0x188) {\n\t\t\t\t\tfor(i = 0x188; i > 0x3c; --i) if(styles.NumberFmt[xf.numFmtId] == styles.NumberFmt[i]) { xf.numFmtId = i; break; }\n\t\t\t\t}\n\t\t\t\tstyles.CellXf.push(xf); break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.1 alignment CT_CellAlignment */\n\t\t\tcase '':\n\t\t\t\tvar alignment = {};\n\t\t\t\tif(y.vertical) alignment.vertical = y.vertical;\n\t\t\t\tif(y.horizontal) alignment.horizontal = y.horizontal;\n\t\t\t\tif(y.textRotation != null) alignment.textRotation = y.textRotation;\n\t\t\t\tif(y.indent) alignment.indent = y.indent;\n\t\t\t\tif(y.wrapText) alignment.wrapText = parsexmlbool(y.wrapText);\n\t\t\t\txf.alignment = alignment;\n\t\t\t\tbreak;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.8.33 protection CT_CellProtection */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* note: sometimes mc:AlternateContent appears bare */\n\t\t\tcase '': pass = false; break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': break;\n\t\t\tcase '': pass = false; break;\n\t\t\tdefault: if(opts && opts.WTF) {\n\t\t\t\tif(!pass) throw new Error('unrecognized ' + y[0] + ' in cellXfs');\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction write_cellXfs(cellXfs)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\to[o.length] = (writextag('cellXfs',null));\n\tcellXfs.forEach(function(c) {\n\t\to[o.length] = (writextag('xf', null, c));\n\t});\n\to[o.length] = (\"\");\n\tif(o.length === 2) return \"\";\n\to[0] = writextag('cellXfs',null, {count:o.length-2}).replace(\"/>\",\">\");\n\treturn o.join(\"\");\n}\n\n/* 18.8 Styles CT_Stylesheet*/\nvar parse_sty_xml= /*#__PURE__*/(function make_pstyx() {\nvar numFmtRegex = /<(?:\\w+:)?numFmts([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?numFmts>/;\nvar cellXfRegex = /<(?:\\w+:)?cellXfs([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?cellXfs>/;\nvar fillsRegex = /<(?:\\w+:)?fills([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?fills>/;\nvar fontsRegex = /<(?:\\w+:)?fonts([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?fonts>/;\nvar bordersRegex = /<(?:\\w+:)?borders([^>]*)>[\\S\\s]*?<\\/(?:\\w+:)?borders>/;\n\nreturn function parse_sty_xml(data, themes, opts) {\n\tvar styles = {};\n\tif(!data) return styles;\n\tdata = data.replace(//mg,\"\").replace(//gm,\"\");\n\t/* 18.8.39 styleSheet CT_Stylesheet */\n\tvar t;\n\n\t/* 18.8.31 numFmts CT_NumFmts ? */\n\tif((t=data.match(numFmtRegex))) parse_numFmts(t, styles, opts);\n\n\t/* 18.8.23 fonts CT_Fonts ? */\n\tif((t=data.match(fontsRegex))) parse_fonts(t, styles, themes, opts);\n\n\t/* 18.8.21 fills CT_Fills ? */\n\tif((t=data.match(fillsRegex))) parse_fills(t, styles, themes, opts);\n\n\t/* 18.8.5 borders CT_Borders ? */\n\tif((t=data.match(bordersRegex))) parse_borders(t, styles, themes, opts);\n\n\t/* 18.8.9 cellStyleXfs CT_CellStyleXfs ? */\n\t/* 18.8.8 cellStyles CT_CellStyles ? */\n\n\t/* 18.8.10 cellXfs CT_CellXfs ? */\n\tif((t=data.match(cellXfRegex))) parse_cellXfs(t, styles, opts);\n\n\t/* 18.8.15 dxfs CT_Dxfs ? */\n\t/* 18.8.42 tableStyles CT_TableStyles ? */\n\t/* 18.8.11 colors CT_Colors ? */\n\t/* 18.2.10 extLst CT_ExtensionList ? */\n\n\treturn styles;\n};\n})();\n\nfunction write_sty_xml(wb/*:Workbook*/, opts)/*:string*/ {\n\tvar o = [XML_HEADER, writextag('styleSheet', null, {\n\t\t'xmlns': XMLNS_main[0],\n\t\t'xmlns:vt': XMLNS.vt\n\t})], w;\n\tif(wb.SSF && (w = write_numFmts(wb.SSF)) != null) o[o.length] = w;\n\to[o.length] = ('');\n\to[o.length] = ('');\n\to[o.length] = ('');\n\to[o.length] = ('');\n\tif((w = write_cellXfs(opts.cellXfs))) o[o.length] = (w);\n\to[o.length] = ('');\n\to[o.length] = ('');\n\to[o.length] = ('');\n\n\tif(o.length>2){ o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.657 BrtFmt */\nfunction parse_BrtFmt(data, length/*:number*/) {\n\tvar numFmtId = data.read_shift(2);\n\tvar stFmtCode = parse_XLWideString(data,length-2);\n\treturn [numFmtId, stFmtCode];\n}\nfunction write_BrtFmt(i/*:number*/, f/*:string*/, o) {\n\tif(!o) o = new_buf(6 + 4 * f.length);\n\to.write_shift(2, i);\n\twrite_XLWideString(f, o);\n\tvar out = (o.length > o.l) ? o.slice(0, o.l) : o;\n\tif(o.l == null) o.l = o.length;\n\treturn out;\n}\n\n/* [MS-XLSB] 2.4.659 BrtFont TODO */\nfunction parse_BrtFont(data, length/*:number*/, opts) {\n\tvar out = ({}/*:any*/);\n\n\tout.sz = data.read_shift(2) / 20;\n\n\tvar grbit = parse_FontFlags(data, 2, opts);\n\tif(grbit.fItalic) out.italic = 1;\n\tif(grbit.fCondense) out.condense = 1;\n\tif(grbit.fExtend) out.extend = 1;\n\tif(grbit.fShadow) out.shadow = 1;\n\tif(grbit.fOutline) out.outline = 1;\n\tif(grbit.fStrikeout) out.strike = 1;\n\n\tvar bls = data.read_shift(2);\n\tif(bls === 0x02BC) out.bold = 1;\n\n\tswitch(data.read_shift(2)) {\n\t\t/* case 0: out.vertAlign = \"baseline\"; break; */\n\t\tcase 1: out.vertAlign = \"superscript\"; break;\n\t\tcase 2: out.vertAlign = \"subscript\"; break;\n\t}\n\n\tvar underline = data.read_shift(1);\n\tif(underline != 0) out.underline = underline;\n\n\tvar family = data.read_shift(1);\n\tif(family > 0) out.family = family;\n\n\tvar bCharSet = data.read_shift(1);\n\tif(bCharSet > 0) out.charset = bCharSet;\n\n\tdata.l++;\n\tout.color = parse_BrtColor(data, 8);\n\n\tswitch(data.read_shift(1)) {\n\t\t/* case 0: out.scheme = \"none\": break; */\n\t\tcase 1: out.scheme = \"major\"; break;\n\t\tcase 2: out.scheme = \"minor\"; break;\n\t}\n\n\tout.name = parse_XLWideString(data, length - 21);\n\n\treturn out;\n}\nfunction write_BrtFont(font/*:any*/, o) {\n\tif(!o) o = new_buf(25+4*32);\n\to.write_shift(2, font.sz * 20);\n\twrite_FontFlags(font, o);\n\to.write_shift(2, font.bold ? 0x02BC : 0x0190);\n\tvar sss = 0;\n\tif(font.vertAlign == \"superscript\") sss = 1;\n\telse if(font.vertAlign == \"subscript\") sss = 2;\n\to.write_shift(2, sss);\n\to.write_shift(1, font.underline || 0);\n\to.write_shift(1, font.family || 0);\n\to.write_shift(1, font.charset || 0);\n\to.write_shift(1, 0);\n\twrite_BrtColor(font.color, o);\n\tvar scheme = 0;\n\tif(font.scheme == \"major\") scheme = 1;\n\tif(font.scheme == \"minor\") scheme = 2;\n\to.write_shift(1, scheme);\n\twrite_XLWideString(font.name, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.650 BrtFill */\nvar XLSBFillPTNames = [\n\t\"none\",\n\t\"solid\",\n\t\"mediumGray\",\n\t\"darkGray\",\n\t\"lightGray\",\n\t\"darkHorizontal\",\n\t\"darkVertical\",\n\t\"darkDown\",\n\t\"darkUp\",\n\t\"darkGrid\",\n\t\"darkTrellis\",\n\t\"lightHorizontal\",\n\t\"lightVertical\",\n\t\"lightDown\",\n\t\"lightUp\",\n\t\"lightGrid\",\n\t\"lightTrellis\",\n\t\"gray125\",\n\t\"gray0625\"\n];\nvar rev_XLSBFillPTNames/*:EvertNumType*/;\n/* TODO: gradient fill representation */\nvar parse_BrtFill = parsenoop;\nfunction write_BrtFill(fill, o) {\n\tif(!o) o = new_buf(4*3 + 8*7 + 16*1);\n\tif(!rev_XLSBFillPTNames) rev_XLSBFillPTNames = (evert(XLSBFillPTNames)/*:any*/);\n\tvar fls/*:number*/ = rev_XLSBFillPTNames[fill.patternType];\n\tif(fls == null) fls = 0x28;\n\to.write_shift(4, fls);\n\tvar j = 0;\n\tif(fls != 0x28) {\n\t\t/* TODO: custom FG Color */\n\t\twrite_BrtColor({auto:1}, o);\n\t\t/* TODO: custom BG Color */\n\t\twrite_BrtColor({auto:1}, o);\n\n\t\tfor(; j < 12; ++j) o.write_shift(4, 0);\n\t} else {\n\t\tfor(; j < 4; ++j) o.write_shift(4, 0);\n\n\t\tfor(; j < 12; ++j) o.write_shift(4, 0); /* TODO */\n\t\t/* iGradientType */\n\t\t/* xnumDegree */\n\t\t/* xnumFillToLeft */\n\t\t/* xnumFillToRight */\n\t\t/* xnumFillToTop */\n\t\t/* xnumFillToBottom */\n\t\t/* cNumStop */\n\t\t/* xfillGradientStop */\n\t}\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.824 BrtXF */\nfunction parse_BrtXF(data, length/*:number*/) {\n\tvar tgt = data.l + length;\n\tvar ixfeParent = data.read_shift(2);\n\tvar ifmt = data.read_shift(2);\n\tdata.l = tgt;\n\treturn {ixfe:ixfeParent, numFmtId:ifmt };\n}\nfunction write_BrtXF(data, ixfeP, o) {\n\tif(!o) o = new_buf(16);\n\to.write_shift(2, ixfeP||0);\n\to.write_shift(2, data.numFmtId||0);\n\to.write_shift(2, 0); /* iFont */\n\to.write_shift(2, 0); /* iFill */\n\to.write_shift(2, 0); /* ixBorder */\n\to.write_shift(1, 0); /* trot */\n\to.write_shift(1, 0); /* indent */\n\tvar flow = 0;\n\to.write_shift(1, flow); /* flags */\n\to.write_shift(1, 0); /* flags */\n\to.write_shift(1, 0); /* xfGrbitAtr */\n\to.write_shift(1, 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.5.4 Blxf TODO */\nfunction write_Blxf(data, o) {\n\tif(!o) o = new_buf(10);\n\to.write_shift(1, 0); /* dg */\n\to.write_shift(1, 0);\n\to.write_shift(4, 0); /* color */\n\to.write_shift(4, 0); /* color */\n\treturn o;\n}\n/* [MS-XLSB] 2.4.302 BrtBorder TODO */\nvar parse_BrtBorder = parsenoop;\nfunction write_BrtBorder(border, o) {\n\tif(!o) o = new_buf(51);\n\to.write_shift(1, 0); /* diagonal */\n\twrite_Blxf(null, o); /* top */\n\twrite_Blxf(null, o); /* bottom */\n\twrite_Blxf(null, o); /* left */\n\twrite_Blxf(null, o); /* right */\n\twrite_Blxf(null, o); /* diag */\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.763 BrtStyle TODO */\nfunction write_BrtStyle(style, o) {\n\tif(!o) o = new_buf(12+4*10);\n\to.write_shift(4, style.xfId);\n\to.write_shift(2, 1);\n\to.write_shift(1, +style.builtinId);\n\to.write_shift(1, 0); /* iLevel */\n\twrite_XLNullableWideString(style.name || \"\", o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.272 BrtBeginTableStyles */\nfunction write_BrtBeginTableStyles(cnt, defTableStyle, defPivotStyle) {\n\tvar o = new_buf(4+256*2*4);\n\to.write_shift(4, cnt);\n\twrite_XLNullableWideString(defTableStyle, o);\n\twrite_XLNullableWideString(defPivotStyle, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.1.7.50 Styles */\nfunction parse_sty_bin(data, themes, opts) {\n\tvar styles = {};\n\tstyles.NumberFmt = ([]/*:any*/);\n\tfor(var y in table_fmt) styles.NumberFmt[y] = table_fmt[y];\n\n\tstyles.CellXf = [];\n\tstyles.Fonts = [];\n\tvar state/*:Array*/ = [];\n\tvar pass = false;\n\trecordhopper(data, function hopper_sty(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x002C: /* BrtFmt */\n\t\t\t\tstyles.NumberFmt[val[0]] = val[1]; SSF_load(val[1], val[0]);\n\t\t\t\tbreak;\n\t\t\tcase 0x002B: /* BrtFont */\n\t\t\t\tstyles.Fonts.push(val);\n\t\t\t\tif(val.color.theme != null && themes && themes.themeElements && themes.themeElements.clrScheme) {\n\t\t\t\t\tval.color.rgb = rgb_tint(themes.themeElements.clrScheme[val.color.theme].rgb, val.color.tint || 0);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x0401: /* BrtKnownFonts */ break;\n\t\t\tcase 0x002D: /* BrtFill */\n\t\t\t\tbreak;\n\t\t\tcase 0x002E: /* BrtBorder */\n\t\t\t\tbreak;\n\t\t\tcase 0x002F: /* BrtXF */\n\t\t\t\tif(state[state.length - 1] == 0x0269 /* BrtBeginCellXFs */) {\n\t\t\t\t\tstyles.CellXf.push(val);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 0x0030: /* BrtStyle */\n\t\t\tcase 0x01FB: /* BrtDXF */\n\t\t\tcase 0x023C: /* BrtMRUColor */\n\t\t\tcase 0x01DB: /* BrtIndexedColor */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0493: /* BrtDXF14 */\n\t\t\tcase 0x0836: /* BrtDXF15 */\n\t\t\tcase 0x046A: /* BrtSlicerStyleElement */\n\t\t\tcase 0x0200: /* BrtTableStyleElement */\n\t\t\tcase 0x082F: /* BrtTimelineStyleElement */\n\t\t\tcase 0x0C00: /* BrtUid */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* BrtFRTBegin */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* BrtFRTEnd */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* BrtACBegin */\n\t\t\t\tstate.push(RT); pass = true; break;\n\t\t\tcase 0x0026: /* BrtACEnd */\n\t\t\t\tstate.pop(); pass = false; break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T > 0) state.push(RT);\n\t\t\t\telse if(R.T < 0) state.pop();\n\t\t\t\telse if(!pass || (opts.WTF && state[state.length-1] != 0x0025 /* BrtACBegin */)) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t});\n\treturn styles;\n}\n\nfunction write_FMTS_bin(ba, NF/*:?SSFTable*/) {\n\tif(!NF) return;\n\tvar cnt = 0;\n\t[[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) {\n\t\t/*:: if(!NF) return; */\n\t\tfor(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) ++cnt;\n\t});\n\n\tif(cnt == 0) return;\n\twrite_record(ba, 0x0267 /* BrtBeginFmts */, write_UInt32LE(cnt));\n\t[[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) {\n\t\t/*:: if(!NF) return; */\n\t\tfor(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) write_record(ba, 0x002C /* BrtFmt */, write_BrtFmt(i, NF[i]));\n\t});\n\twrite_record(ba, 0x0268 /* BrtEndFmts */);\n}\n\nfunction write_FONTS_bin(ba/*::, data*/) {\n\tvar cnt = 1;\n\n\tif(cnt == 0) return;\n\twrite_record(ba, 0x0263 /* BrtBeginFonts */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x002B /* BrtFont */, write_BrtFont({\n\t\tsz:12,\n\t\tcolor: {theme:1},\n\t\tname: \"Calibri\",\n\t\tfamily: 2,\n\t\tscheme: \"minor\"\n\t}));\n\t/* 1*65491BrtFont [ACFONTS] */\n\twrite_record(ba, 0x0264 /* BrtEndFonts */);\n}\n\nfunction write_FILLS_bin(ba/*::, data*/) {\n\tvar cnt = 2;\n\n\tif(cnt == 0) return;\n\twrite_record(ba, 0x025B /* BrtBeginFills */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x002D /* BrtFill */, write_BrtFill({patternType:\"none\"}));\n\twrite_record(ba, 0x002D /* BrtFill */, write_BrtFill({patternType:\"gray125\"}));\n\t/* 1*65431BrtFill */\n\twrite_record(ba, 0x025C /* BrtEndFills */);\n}\n\nfunction write_BORDERS_bin(ba/*::, data*/) {\n\tvar cnt = 1;\n\n\tif(cnt == 0) return;\n\twrite_record(ba, 0x0265 /* BrtBeginBorders */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x002E /* BrtBorder */, write_BrtBorder({}));\n\t/* 1*65430BrtBorder */\n\twrite_record(ba, 0x0266 /* BrtEndBorders */);\n}\n\nfunction write_CELLSTYLEXFS_bin(ba/*::, data*/) {\n\tvar cnt = 1;\n\twrite_record(ba, 0x0272 /* BrtBeginCellStyleXFs */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x002F /* BrtXF */, write_BrtXF({\n\t\tnumFmtId: 0,\n\t\tfontId: 0,\n\t\tfillId: 0,\n\t\tborderId: 0\n\t}, 0xFFFF));\n\t/* 1*65430(BrtXF *FRT) */\n\twrite_record(ba, 0x0273 /* BrtEndCellStyleXFs */);\n}\n\nfunction write_CELLXFS_bin(ba, data) {\n\twrite_record(ba, 0x0269 /* BrtBeginCellXFs */, write_UInt32LE(data.length));\n\tdata.forEach(function(c) { write_record(ba, 0x002F /* BrtXF */, write_BrtXF(c,0)); });\n\t/* 1*65430(BrtXF *FRT) */\n\twrite_record(ba, 0x026A /* BrtEndCellXFs */);\n}\n\nfunction write_STYLES_bin(ba/*::, data*/) {\n\tvar cnt = 1;\n\n\twrite_record(ba, 0x026B /* BrtBeginStyles */, write_UInt32LE(cnt));\n\twrite_record(ba, 0x0030 /* BrtStyle */, write_BrtStyle({\n\t\txfId:0,\n\t\tbuiltinId:0,\n\t\tname:\"Normal\"\n\t}));\n\t/* 1*65430(BrtStyle *FRT) */\n\twrite_record(ba, 0x026C /* BrtEndStyles */);\n}\n\nfunction write_DXFS_bin(ba/*::, data*/) {\n\tvar cnt = 0;\n\n\twrite_record(ba, 0x01F9 /* BrtBeginDXFs */, write_UInt32LE(cnt));\n\t/* *2147483647(BrtDXF *FRT) */\n\twrite_record(ba, 0x01FA /* BrtEndDXFs */);\n}\n\nfunction write_TABLESTYLES_bin(ba/*::, data*/) {\n\tvar cnt = 0;\n\n\twrite_record(ba, 0x01FC /* BrtBeginTableStyles */, write_BrtBeginTableStyles(cnt, \"TableStyleMedium9\", \"PivotStyleMedium4\"));\n\t/* *TABLESTYLE */\n\twrite_record(ba, 0x01FD /* BrtEndTableStyles */);\n}\n\nfunction write_COLORPALETTE_bin(/*::ba, data*/) {\n\treturn;\n\t/* BrtBeginColorPalette [INDEXEDCOLORS] [MRUCOLORS] BrtEndColorPalette */\n}\n\n/* [MS-XLSB] 2.1.7.50 Styles */\nfunction write_sty_bin(wb, opts) {\n\tvar ba = buf_array();\n\twrite_record(ba, 0x0116 /* BrtBeginStyleSheet */);\n\twrite_FMTS_bin(ba, wb.SSF);\n\twrite_FONTS_bin(ba, wb);\n\twrite_FILLS_bin(ba, wb);\n\twrite_BORDERS_bin(ba, wb);\n\twrite_CELLSTYLEXFS_bin(ba, wb);\n\twrite_CELLXFS_bin(ba, opts.cellXfs);\n\twrite_STYLES_bin(ba, wb);\n\twrite_DXFS_bin(ba, wb);\n\twrite_TABLESTYLES_bin(ba, wb);\n\twrite_COLORPALETTE_bin(ba, wb);\n\t/* FRTSTYLESHEET*/\n\twrite_record(ba, 0x0117 /* BrtEndStyleSheet */);\n\treturn ba.end();\n}\n/* Even though theme layout is dk1 lt1 dk2 lt2, true order is lt1 dk1 lt2 dk2 */\nvar XLSXThemeClrScheme = [\n\t'', '', '', '',\n\t'', '', '',\n\t'', '', '',\n\t'', ''\n];\n/* 20.1.6.2 clrScheme CT_ColorScheme */\nfunction parse_clrScheme(t, themes, opts) {\n\tthemes.themeElements.clrScheme = [];\n\tvar color = {};\n\t(t[0].match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(y[0]) {\n\t\t\t/* 20.1.6.2 clrScheme (Color Scheme) CT_ColorScheme */\n\t\t\tcase '': break;\n\n\t\t\t/* 20.1.2.3.32 srgbClr CT_SRgbColor */\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\tcase '': case '':\n\t\t\t\tif (y[0].charAt(1) === '/') {\n\t\t\t\t\tthemes.themeElements.clrScheme[XLSXThemeClrScheme.indexOf(y[0])] = color;\n\t\t\t\t\tcolor = {};\n\t\t\t\t} else {\n\t\t\t\t\tcolor.name = y[0].slice(3, y[0].length - 1);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tdefault: if(opts && opts.WTF) throw new Error('Unrecognized ' + y[0] + ' in clrScheme');\n\t\t}\n\t});\n}\n\n/* 20.1.4.1.18 fontScheme CT_FontScheme */\nfunction parse_fontScheme(/*::t, themes, opts*/) { }\n\n/* 20.1.4.1.15 fmtScheme CT_StyleMatrix */\nfunction parse_fmtScheme(/*::t, themes, opts*/) { }\n\nvar clrsregex = /]*)>[\\s\\S]*<\\/a:clrScheme>/;\nvar fntsregex = /]*)>[\\s\\S]*<\\/a:fontScheme>/;\nvar fmtsregex = /]*)>[\\s\\S]*<\\/a:fmtScheme>/;\n\n/* 20.1.6.10 themeElements CT_BaseStyles */\nfunction parse_themeElements(data, themes, opts) {\n\tthemes.themeElements = {};\n\n\tvar t;\n\n\t[\n\t\t/* clrScheme CT_ColorScheme */\n\t\t['clrScheme', clrsregex, parse_clrScheme],\n\t\t/* fontScheme CT_FontScheme */\n\t\t['fontScheme', fntsregex, parse_fontScheme],\n\t\t/* fmtScheme CT_StyleMatrix */\n\t\t['fmtScheme', fmtsregex, parse_fmtScheme]\n\t].forEach(function(m) {\n\t\tif(!(t=data.match(m[1]))) throw new Error(m[0] + ' not found in themeElements');\n\t\tm[2](t, themes, opts);\n\t});\n}\n\nvar themeltregex = /]*)>[\\s\\S]*<\\/a:themeElements>/;\n\n/* 14.2.7 Theme Part */\nfunction parse_theme_xml(data/*:string*/, opts) {\n\t/* 20.1.6.9 theme CT_OfficeStyleSheet */\n\tif(!data || data.length === 0) data = write_theme();\n\n\tvar t;\n\tvar themes = {};\n\n\t/* themeElements CT_BaseStyles */\n\tif(!(t=data.match(themeltregex))) throw new Error('themeElements not found in theme');\n\tparse_themeElements(t[0], themes, opts);\n\tthemes.raw = data;\n\treturn themes;\n}\n\nfunction write_theme(Themes, opts)/*:string*/ {\n\tif(opts && opts.themeXLSX) return opts.themeXLSX;\n\tif(Themes && typeof Themes.raw == \"string\") return Themes.raw;\n\tvar o = [XML_HEADER];\n\to[o.length] = '';\n\to[o.length] = '';\n\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\to[o.length] = '';\n\treturn o.join(\"\");\n}\n/* [MS-XLS] 2.4.326 TODO: payload is a zip file */\nfunction parse_Theme(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar dwThemeVersion = blob.read_shift(4);\n\tif(dwThemeVersion === 124226) return;\n\tif(!opts.cellStyles) { blob.l = end; return; }\n\tvar data = blob.slice(blob.l);\n\tblob.l = end;\n\tvar zip; try { zip = zip_read(data, {type: \"array\"}); } catch(e) { return; }\n\tvar themeXML = getzipstr(zip, \"theme/theme/theme1.xml\", true);\n\tif(!themeXML) return;\n\treturn parse_theme_xml(themeXML, opts);\n}\n\n/* 2.5.49 */\nfunction parse_ColorTheme(blob/*::, length*/) { return blob.read_shift(4); }\n\n/* 2.5.155 */\nfunction parse_FullColorExt(blob/*::, length*/) {\n\tvar o = {};\n\to.xclrType = blob.read_shift(2);\n\to.nTintShade = blob.read_shift(2);\n\tswitch(o.xclrType) {\n\t\tcase 0: blob.l += 4; break;\n\t\tcase 1: o.xclrValue = parse_IcvXF(blob, 4); break;\n\t\tcase 2: o.xclrValue = parse_LongRGBA(blob, 4); break;\n\t\tcase 3: o.xclrValue = parse_ColorTheme(blob, 4); break;\n\t\tcase 4: blob.l += 4; break;\n\t}\n\tblob.l += 8;\n\treturn o;\n}\n\n/* 2.5.164 TODO: read 7 bits*/\nfunction parse_IcvXF(blob, length) {\n\treturn parsenoop(blob, length);\n}\n\n/* 2.5.280 */\nfunction parse_XFExtGradient(blob, length) {\n\treturn parsenoop(blob, length);\n}\n\n/* [MS-XLS] 2.5.108 */\nfunction parse_ExtProp(blob/*::, length*/)/*:Array*/ {\n\tvar extType = blob.read_shift(2);\n\tvar cb = blob.read_shift(2) - 4;\n\tvar o = [extType];\n\tswitch(extType) {\n\t\tcase 0x04: case 0x05: case 0x07: case 0x08:\n\t\tcase 0x09: case 0x0A: case 0x0B: case 0x0D:\n\t\t\to[1] = parse_FullColorExt(blob, cb); break;\n\t\tcase 0x06: o[1] = parse_XFExtGradient(blob, cb); break;\n\t\tcase 0x0E: case 0x0F: o[1] = blob.read_shift(cb === 1 ? 1 : 2); break;\n\t\tdefault: throw new Error(\"Unrecognized ExtProp type: \" + extType + \" \" + cb);\n\t}\n\treturn o;\n}\n\n/* 2.4.355 */\nfunction parse_XFExt(blob, length) {\n\tvar end = blob.l + length;\n\tblob.l += 2;\n\tvar ixfe = blob.read_shift(2);\n\tblob.l += 2;\n\tvar cexts = blob.read_shift(2);\n\tvar ext/*:AOA*/ = [];\n\twhile(cexts-- > 0) ext.push(parse_ExtProp(blob, end-blob.l));\n\treturn {ixfe:ixfe, ext:ext};\n}\n\n/* xf is an XF, see parse_XFExt for xfext */\nfunction update_xfext(xf, xfext) {\n\txfext.forEach(function(xfe) {\n\t\tswitch(xfe[0]) { /* 2.5.108 extPropData */\n\t\t\tcase 0x04: break; /* foreground color */\n\t\t\tcase 0x05: break; /* background color */\n\t\t\tcase 0x06: break; /* gradient fill */\n\t\t\tcase 0x07: break; /* top cell border color */\n\t\t\tcase 0x08: break; /* bottom cell border color */\n\t\t\tcase 0x09: break; /* left cell border color */\n\t\t\tcase 0x0a: break; /* right cell border color */\n\t\t\tcase 0x0b: break; /* diagonal cell border color */\n\t\t\tcase 0x0d: /* text color */\n\t\t\t\tbreak;\n\t\t\tcase 0x0e: break; /* font scheme */\n\t\t\tcase 0x0f: break; /* indentation level */\n\t\t}\n\t});\n}\n\nfunction parse_BrtMdtinfo(data, length) {\n return {\n flags: data.read_shift(4),\n version: data.read_shift(4),\n name: parse_XLWideString(data, length - 8)\n };\n}\nfunction write_BrtMdtinfo(data) {\n var o = new_buf(12 + 2 * data.name.length);\n o.write_shift(4, data.flags);\n o.write_shift(4, data.version);\n write_XLWideString(data.name, o);\n return o.slice(0, o.l);\n}\nfunction parse_BrtMdb(data) {\n var out = [];\n var cnt = data.read_shift(4);\n while (cnt-- > 0)\n out.push([data.read_shift(4), data.read_shift(4)]);\n return out;\n}\nfunction write_BrtMdb(mdb) {\n var o = new_buf(4 + 8 * mdb.length);\n o.write_shift(4, mdb.length);\n for (var i = 0; i < mdb.length; ++i) {\n o.write_shift(4, mdb[i][0]);\n o.write_shift(4, mdb[i][1]);\n }\n return o;\n}\nfunction write_BrtBeginEsfmd(cnt, name) {\n var o = new_buf(8 + 2 * name.length);\n o.write_shift(4, cnt);\n write_XLWideString(name, o);\n return o.slice(0, o.l);\n}\nfunction parse_BrtBeginEsmdb(data) {\n data.l += 4;\n return data.read_shift(4) != 0;\n}\nfunction write_BrtBeginEsmdb(cnt, cm) {\n var o = new_buf(8);\n o.write_shift(4, cnt);\n o.write_shift(4, cm ? 1 : 0);\n return o;\n}\nfunction parse_xlmeta_bin(data, name, _opts) {\n var out = { Types: [], Cell: [], Value: [] };\n var opts = _opts || {};\n var state = [];\n var pass = false;\n var metatype = 2;\n recordhopper(data, function(val, R, RT) {\n switch (RT) {\n case 335:\n out.Types.push({ name: val.name });\n break;\n case 51:\n val.forEach(function(r) {\n if (metatype == 1)\n out.Cell.push({ type: out.Types[r[0] - 1].name, index: r[1] });\n else if (metatype == 0)\n out.Value.push({ type: out.Types[r[0] - 1].name, index: r[1] });\n });\n break;\n case 337:\n metatype = val ? 1 : 0;\n break;\n case 338:\n metatype = 2;\n break;\n case 35:\n state.push(RT);\n pass = true;\n break;\n case 36:\n state.pop();\n pass = false;\n break;\n default:\n if (R.T) {\n } else if (!pass || opts.WTF && state[state.length - 1] != 35)\n throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n }\n });\n return out;\n}\nfunction write_xlmeta_bin() {\n var ba = buf_array();\n write_record(ba, 332);\n write_record(ba, 334, write_UInt32LE(1));\n write_record(ba, 335, write_BrtMdtinfo({\n name: \"XLDAPR\",\n version: 12e4,\n flags: 3496657072\n }));\n write_record(ba, 336);\n write_record(ba, 339, write_BrtBeginEsfmd(1, \"XLDAPR\"));\n write_record(ba, 52);\n write_record(ba, 35, write_UInt32LE(514));\n write_record(ba, 4096, write_UInt32LE(0));\n write_record(ba, 4097, writeuint16(1));\n write_record(ba, 36);\n write_record(ba, 53);\n write_record(ba, 340);\n write_record(ba, 337, write_BrtBeginEsmdb(1, true));\n write_record(ba, 51, write_BrtMdb([[1, 0]]));\n write_record(ba, 338);\n write_record(ba, 333);\n return ba.end();\n}\nfunction parse_xlmeta_xml(data, name, opts) {\n var out = { Types: [], Cell: [], Value: [] };\n if (!data)\n return out;\n var pass = false;\n var metatype = 2;\n var lastmeta;\n data.replace(tagregex, function(x) {\n var y = parsexmltag(x);\n switch (strip_ns(y[0])) {\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n break;\n case \"\":\n metatype = 2;\n break;\n case \"\":\n metatype = 2;\n break;\n case \"\":\n case \"\":\n case \"\":\n break;\n case \"\":\n pass = false;\n break;\n case \"\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n');\n return o.join(\"\");\n}\n/* 18.6 Calculation Chain */\nfunction parse_cc_xml(data/*::, name, opts*/)/*:Array*/ {\n\tvar d = [];\n\tif(!data) return d;\n\tvar i = 1;\n\t(data.match(tagregex)||[]).forEach(function(x) {\n\t\tvar y = parsexmltag(x);\n\t\tswitch(y[0]) {\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.6.1 c CT_CalcCell 1 */\n\t\t\tcase ']*r:id=\"([^\"]*)\"/)||[\"\",\"\"])[1];\n\n\treturn rels['!id'][id].Target;\n}\n\n/* L.5.5.2 SpreadsheetML Comments + VML Schema */\nvar _shapeid = 1024;\nfunction write_comments_vml(rId/*:number*/, comments) {\n\tvar csize = [21600, 21600];\n\t/* L.5.2.1.2 Path Attribute */\n\tvar bbox = [\"m0,0l0\",csize[1],csize[0],csize[1],csize[0],\"0xe\"].join(\",\");\n\tvar o = [\n\t\twritextag(\"xml\", null, { 'xmlns:v': XLMLNS.v, 'xmlns:o': XLMLNS.o, 'xmlns:x': XLMLNS.x, 'xmlns:mv': XLMLNS.mv }).replace(/\\/>/,\">\"),\n\t\twritextag(\"o:shapelayout\", writextag(\"o:idmap\", null, {'v:ext':\"edit\", 'data':rId}), {'v:ext':\"edit\"}),\n\t\twritextag(\"v:shapetype\", [\n\t\t\twritextag(\"v:stroke\", null, {joinstyle:\"miter\"}),\n\t\t\twritextag(\"v:path\", null, {gradientshapeok:\"t\", 'o:connecttype':\"rect\"})\n\t\t].join(\"\"), {id:\"_x0000_t202\", 'o:spt':202, coordsize:csize.join(\",\"),path:bbox})\n\t];\n\twhile(_shapeid < rId * 1000) _shapeid += 1000;\n\n\tcomments.forEach(function(x) {\n\tvar c = decode_cell(x[0]);\n\tvar fillopts = /*::(*/{'color2':\"#BEFF82\", 'type':\"gradient\"}/*:: :any)*/;\n\tif(fillopts.type == \"gradient\") fillopts.angle = \"-180\";\n\tvar fillparm = fillopts.type == \"gradient\" ? writextag(\"o:fill\", null, {type:\"gradientUnscaled\", 'v:ext':\"view\"}) : null;\n\tvar fillxml = writextag('v:fill', fillparm, fillopts);\n\n\tvar shadata = ({on:\"t\", 'obscured':\"t\"}/*:any*/);\n\t++_shapeid;\n\n\to = o.concat([\n\t'',\n\t\tfillxml,\n\t\twritextag(\"v:shadow\", null, shadata),\n\t\twritextag(\"v:path\", null, {'o:connecttype':\"none\"}),\n\t\t'
    ',\n\t\t'',\n\t\t\t'',\n\t\t\t'',\n\t\t\t/* Part 4 19.4.2.3 Anchor (Anchor) */\n\t\t\twritetag('x:Anchor', [c.c+1, 0, c.r+1, 0, c.c+3, 20, c.r+5, 20].join(\",\")),\n\t\t\twritetag('x:AutoFill', \"False\"),\n\t\t\twritetag('x:Row', String(c.r)),\n\t\t\twritetag('x:Column', String(c.c)),\n\t\t\tx[1].hidden ? '' : '',\n\t\t'',\n\t''\n\t]); });\n\to.push('');\n\treturn o.join(\"\");\n}\nfunction sheet_insert_comments(sheet, comments/*:Array*/, threaded/*:boolean*/, people/*:?Array*/) {\n\tvar dense = Array.isArray(sheet);\n\tvar cell/*:Cell*/;\n\tcomments.forEach(function(comment) {\n\t\tvar r = decode_cell(comment.ref);\n\t\tif(dense) {\n\t\t\tif(!sheet[r.r]) sheet[r.r] = [];\n\t\t\tcell = sheet[r.r][r.c];\n\t\t} else cell = sheet[comment.ref];\n\t\tif (!cell) {\n\t\t\tcell = ({t:\"z\"}/*:any*/);\n\t\t\tif(dense) sheet[r.r][r.c] = cell;\n\t\t\telse sheet[comment.ref] = cell;\n\t\t\tvar range = safe_decode_range(sheet[\"!ref\"]||\"BDWGO1000001:A1\");\n\t\t\tif(range.s.r > r.r) range.s.r = r.r;\n\t\t\tif(range.e.r < r.r) range.e.r = r.r;\n\t\t\tif(range.s.c > r.c) range.s.c = r.c;\n\t\t\tif(range.e.c < r.c) range.e.c = r.c;\n\t\t\tvar encoded = encode_range(range);\n\t\t\tif (encoded !== sheet[\"!ref\"]) sheet[\"!ref\"] = encoded;\n\t\t}\n\n\t\tif (!cell.c) cell.c = [];\n\t\tvar o/*:Comment*/ = ({a: comment.author, t: comment.t, r: comment.r, T: threaded});\n\t\tif(comment.h) o.h = comment.h;\n\n\t\t/* threaded comments always override */\n\t\tfor(var i = cell.c.length - 1; i >= 0; --i) {\n\t\t\tif(!threaded && cell.c[i].T) return;\n\t\t\tif(threaded && !cell.c[i].T) cell.c.splice(i, 1);\n\t\t}\n\t\tif(threaded && people) for(i = 0; i < people.length; ++i) {\n\t\t\tif(o.a == people[i].id) { o.a = people[i].name || o.a; break; }\n\t\t}\n\t\tcell.c.push(o);\n\t});\n}\n\n/* 18.7 Comments */\nfunction parse_comments_xml(data/*:string*/, opts)/*:Array*/ {\n\t/* 18.7.6 CT_Comments */\n\tif(data.match(/<(?:\\w+:)?comments *\\/>/)) return [];\n\tvar authors/*:Array*/ = [];\n\tvar commentList/*:Array*/ = [];\n\tvar authtag = data.match(/<(?:\\w+:)?authors>([\\s\\S]*)<\\/(?:\\w+:)?authors>/);\n\tif(authtag && authtag[1]) authtag[1].split(/<\\/\\w*:?author>/).forEach(function(x) {\n\t\tif(x === \"\" || x.trim() === \"\") return;\n\t\tvar a = x.match(/<(?:\\w+:)?author[^>]*>(.*)/);\n\t\tif(a) authors.push(a[1]);\n\t});\n\tvar cmnttag = data.match(/<(?:\\w+:)?commentList>([\\s\\S]*)<\\/(?:\\w+:)?commentList>/);\n\tif(cmnttag && cmnttag[1]) cmnttag[1].split(/<\\/\\w*:?comment>/).forEach(function(x) {\n\t\tif(x === \"\" || x.trim() === \"\") return;\n\t\tvar cm = x.match(/<(?:\\w+:)?comment[^>]*>/);\n\t\tif(!cm) return;\n\t\tvar y = parsexmltag(cm[0]);\n\t\tvar comment/*:RawComment*/ = ({ author: y.authorId && authors[y.authorId] || \"sheetjsghost\", ref: y.ref, guid: y.guid }/*:any*/);\n\t\tvar cell = decode_cell(y.ref);\n\t\tif(opts.sheetRows && opts.sheetRows <= cell.r) return;\n\t\tvar textMatch = x.match(/<(?:\\w+:)?text>([\\s\\S]*)<\\/(?:\\w+:)?text>/);\n\t\tvar rt = !!textMatch && !!textMatch[1] && parse_si(textMatch[1]) || {r:\"\",t:\"\",h:\"\"};\n\t\tcomment.r = rt.r;\n\t\tif(rt.r == \"\") rt.t = rt.h = \"\";\n\t\tcomment.t = (rt.t||\"\").replace(/\\r\\n/g,\"\\n\").replace(/\\r/g,\"\\n\");\n\t\tif(opts.cellHTML) comment.h = rt.h;\n\t\tcommentList.push(comment);\n\t});\n\treturn commentList;\n}\n\nfunction write_comments_xml(data/*::, opts*/) {\n\tvar o = [XML_HEADER, writextag('comments', null, { 'xmlns': XMLNS_main[0] })];\n\n\tvar iauthor/*:Array*/ = [];\n\to.push(\"\");\n\tdata.forEach(function(x) { x[1].forEach(function(w) { var a = escapexml(w.a);\n\t\tif(iauthor.indexOf(a) == -1) {\n\t\t\tiauthor.push(a);\n\t\t\to.push(\"\" + a + \"\");\n\t\t}\n\t\tif(w.T && w.ID && iauthor.indexOf(\"tc=\" + w.ID) == -1) {\n\t\t\tiauthor.push(\"tc=\" + w.ID);\n\t\t\to.push(\"\" + \"tc=\" + w.ID + \"\");\n\t\t}\n\t}); });\n\tif(iauthor.length == 0) { iauthor.push(\"SheetJ5\"); o.push(\"SheetJ5\"); }\n\to.push(\"\");\n\to.push(\"\");\n\tdata.forEach(function(d) {\n\t\t/* 18.7.3 CT_Comment */\n\t\tvar lastauthor = 0, ts = [];\n\t\tif(d[1][0] && d[1][0].T && d[1][0].ID) lastauthor = iauthor.indexOf(\"tc=\" + d[1][0].ID);\n\t\telse d[1].forEach(function(c) {\n\t\t\tif(c.a) lastauthor = iauthor.indexOf(escapexml(c.a));\n\t\t\tts.push(c.t||\"\");\n\t\t});\n\t\to.push('');\n\t\tif(ts.length <= 1) o.push(writetag(\"t\", escapexml(ts[0]||\"\")));\n\t\telse {\n\t\t\t/* based on Threaded Comments -> Comments projection */\n\t\t\tvar t = \"Comment:\\n \" + (ts[0]) + \"\\n\";\n\t\t\tfor(var i = 1; i < ts.length; ++i) t += \"Reply:\\n \" + ts[i] + \"\\n\";\n\t\t\to.push(writetag(\"t\", escapexml(t)));\n\t\t}\n\t\to.push('');\n\t});\n\to.push(\"\");\n\tif(o.length>2) { o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSX] 2.1.17 */\nfunction parse_tcmnt_xml(data/*:string*/, opts)/*:Array*/ {\n\tvar out = [];\n\tvar pass = false, comment = {}, tidx = 0;\n\tdata.replace(tagregex, function xml_tcmnt(x, idx) {\n\t\tvar y/*:any*/ = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': break;\n\n\t\t\t/* 2.6.205 threadedComment CT_ThreadedComment */\n\t\t\tcase '': if(comment.t != null) out.push(comment); break;\n\n\t\t\tcase '': case '': comment.t = data.slice(tidx, idx).replace(/\\r\\n/g, \"\\n\").replace(/\\r/g, \"\\n\"); break;\n\n\t\t\t/* 2.6.206 mentions CT_ThreadedCommentMentions TODO */\n\t\t\tcase '': pass = true; break;\n\t\t\tcase '': pass = false; break;\n\n\t\t\t/* 2.6.202 mention CT_Mention TODO */\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '
    ': case '': break;\n\t\t\t/* 18.2.7 ext CT_Extension + */\n\t\t\tcase '': pass=false; break;\n\n\t\t\tdefault: if(!pass && opts.WTF) throw new Error('unrecognized ' + y[0] + ' in threaded comments');\n\t\t}\n\t\treturn x;\n\t});\n\treturn out;\n}\n\nfunction write_tcmnt_xml(comments, people, opts) {\n\tvar o = [XML_HEADER, writextag('ThreadedComments', null, { 'xmlns': XMLNS.TCMNT }).replace(/[\\/]>/, \">\")];\n\tcomments.forEach(function(carr) {\n\t\tvar rootid = \"\";\n\t\t(carr[1] || []).forEach(function(c, idx) {\n\t\t\tif(!c.T) { delete c.ID; return; }\n\t\t\tif(c.a && people.indexOf(c.a) == -1) people.push(c.a);\n\t\t\tvar tcopts = {\n\t\t\t\tref: carr[0],\n\t\t\t\tid: \"{54EE7951-7262-4200-6969-\" + (\"000000000000\" + opts.tcid++).slice(-12) + \"}\"\n\t\t\t};\n\t\t\tif(idx == 0) rootid = tcopts.id;\n\t\t\telse tcopts.parentId = rootid;\n\t\t\tc.ID = tcopts.id;\n\t\t\tif(c.a) tcopts.personId = \"{54EE7950-7262-4200-6969-\" + (\"000000000000\" + people.indexOf(c.a)).slice(-12) + \"}\";\n\t\t\to.push(writextag('threadedComment', writetag('text', c.t||\"\"), tcopts));\n\t\t});\n\t});\n\to.push('');\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSX] 2.1.18 */\nfunction parse_people_xml(data/*:string*/, opts) {\n\tvar out = [];\n\tvar pass = false;\n\tdata.replace(tagregex, function xml_tcmnt(x) {\n\t\tvar y/*:any*/ = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': break;\n\n\t\t\t/* 2.6.203 person CT_Person TODO: providers */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.10 extLst CT_ExtensionList ? */\n\t\t\tcase '': case '': case '': break;\n\t\t\t/* 18.2.7 ext CT_Extension + */\n\t\t\tcase '': pass=false; break;\n\n\t\t\tdefault: if(!pass && opts.WTF) throw new Error('unrecognized ' + y[0] + ' in threaded comments');\n\t\t}\n\t\treturn x;\n\t});\n\treturn out;\n}\nfunction write_people_xml(people/*, opts*/) {\n\tvar o = [XML_HEADER, writextag('personList', null, {\n\t\t'xmlns': XMLNS.TCMNT,\n\t\t'xmlns:x': XMLNS_main[0]\n\t}).replace(/[\\/]>/, \">\")];\n\tpeople.forEach(function(person, idx) {\n\t\to.push(writextag('person', null, {\n\t\t\tdisplayName: person,\n\t\t\tid: \"{54EE7950-7262-4200-6969-\" + (\"000000000000\" + idx).slice(-12) + \"}\",\n\t\t\tuserId: person,\n\t\t\tproviderId: \"None\"\n\t\t}));\n\t});\n\to.push(\"\");\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.28 BrtBeginComment */\nfunction parse_BrtBeginComment(data) {\n\tvar out = {};\n\tout.iauthor = data.read_shift(4);\n\tvar rfx = parse_UncheckedRfX(data, 16);\n\tout.rfx = rfx.s;\n\tout.ref = encode_cell(rfx.s);\n\tdata.l += 16; /*var guid = parse_GUID(data); */\n\treturn out;\n}\nfunction write_BrtBeginComment(data, o) {\n\tif(o == null) o = new_buf(36);\n\to.write_shift(4, data[1].iauthor);\n\twrite_UncheckedRfX((data[0]/*:any*/), o);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\to.write_shift(4, 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.327 BrtCommentAuthor */\nvar parse_BrtCommentAuthor = parse_XLWideString;\nfunction write_BrtCommentAuthor(data) { return write_XLWideString(data.slice(0, 54)); }\n\n/* [MS-XLSB] 2.1.7.8 Comments */\nfunction parse_comments_bin(data, opts)/*:Array*/ {\n\tvar out/*:Array*/ = [];\n\tvar authors/*:Array*/ = [];\n\tvar c = {};\n\tvar pass = false;\n\trecordhopper(data, function hopper_cmnt(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x0278: /* 'BrtCommentAuthor' */\n\t\t\t\tauthors.push(val); break;\n\t\t\tcase 0x027B: /* 'BrtBeginComment' */\n\t\t\t\tc = val; break;\n\t\t\tcase 0x027D: /* 'BrtCommentText' */\n\t\t\t\tc.t = val.t; c.h = val.h; c.r = val.r; break;\n\t\t\tcase 0x027C: /* 'BrtEndComment' */\n\t\t\t\tc.author = authors[c.iauthor];\n\t\t\t\tdelete (c/*:any*/).iauthor;\n\t\t\t\tif(opts.sheetRows && c.rfx && opts.sheetRows <= c.rfx.r) break;\n\t\t\t\tif(!c.t) c.t = \"\";\n\t\t\t\tdelete c.rfx; out.push(c); break;\n\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */ break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */ break;\n\n\n\t\t\tdefault:\n\t\t\t\tif(R.T){/* empty */}\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t});\n\treturn out;\n}\n\nfunction write_comments_bin(data/*::, opts*/) {\n\tvar ba = buf_array();\n\tvar iauthor/*:Array*/ = [];\n\twrite_record(ba, 0x0274 /* BrtBeginComments */);\n\n\twrite_record(ba, 0x0276 /* BrtBeginCommentAuthors */);\n\tdata.forEach(function(comment) {\n\t\tcomment[1].forEach(function(c) {\n\t\t\tif(iauthor.indexOf(c.a) > -1) return;\n\t\t\tiauthor.push(c.a.slice(0,54));\n\t\t\twrite_record(ba, 0x0278 /* BrtCommentAuthor */, write_BrtCommentAuthor(c.a));\n\t\t});\n\t});\n\twrite_record(ba, 0x0277 /* BrtEndCommentAuthors */);\n\n\twrite_record(ba, 0x0279 /* BrtBeginCommentList */);\n\tdata.forEach(function(comment) {\n\t\tcomment[1].forEach(function(c) {\n\t\t\tc.iauthor = iauthor.indexOf(c.a);\n\t\t\tvar range = {s:decode_cell(comment[0]),e:decode_cell(comment[0])};\n\t\t\twrite_record(ba, 0x027B /* BrtBeginComment */, write_BrtBeginComment([range, c]));\n\t\t\tif(c.t && c.t.length > 0) write_record(ba, 0x027D /* BrtCommentText */, write_BrtCommentText(c));\n\t\t\twrite_record(ba, 0x027C /* BrtEndComment */);\n\t\t\tdelete c.iauthor;\n\t\t});\n\t});\n\twrite_record(ba, 0x027A /* BrtEndCommentList */);\n\n\twrite_record(ba, 0x0275 /* BrtEndComments */);\n\treturn ba.end();\n}\nvar CT_VBA = \"application/vnd.ms-office.vbaProject\";\nfunction make_vba_xls(cfb) {\n var newcfb = CFB.utils.cfb_new({ root: \"R\" });\n cfb.FullPaths.forEach(function(p, i) {\n if (p.slice(-1) === \"/\" || !p.match(/_VBA_PROJECT_CUR/))\n return;\n var newpath = p.replace(/^[^\\/]*/, \"R\").replace(/\\/_VBA_PROJECT_CUR\\u0000*/, \"\");\n CFB.utils.cfb_add(newcfb, newpath, cfb.FileIndex[i].content);\n });\n return CFB.write(newcfb);\n}\nfunction fill_vba_xls(cfb, vba) {\n vba.FullPaths.forEach(function(p, i) {\n if (i == 0)\n return;\n var newpath = p.replace(/[^\\/]*[\\/]/, \"/_VBA_PROJECT_CUR/\");\n if (newpath.slice(-1) !== \"/\")\n CFB.utils.cfb_add(cfb, newpath, vba.FileIndex[i].content);\n });\n}\nvar VBAFMTS = [\"xlsb\", \"xlsm\", \"xlam\", \"biff8\", \"xla\"];\n/* macro and dialog sheet stubs */\nfunction parse_ds_bin(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'dialog'}; }\nfunction parse_ds_xml(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'dialog'}; }\nfunction parse_ms_bin(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'macro'}; }\nfunction parse_ms_xml(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'macro'}; }\n/* TODO: it will be useful to parse the function str */\nvar rc_to_a1 = /*#__PURE__*/(function(){\n\tvar rcregex = /(^|[^A-Za-z_])R(\\[?-?\\d+\\]|[1-9]\\d*|)C(\\[?-?\\d+\\]|[1-9]\\d*|)(?![A-Za-z0-9_])/g;\n\tvar rcbase/*:Cell*/ = ({r:0,c:0}/*:any*/);\n\tfunction rcfunc($$,$1,$2,$3) {\n\t\tvar cRel = false, rRel = false;\n\n\t\tif($2.length == 0) rRel = true;\n\t\telse if($2.charAt(0) == \"[\") { rRel = true; $2 = $2.slice(1, -1); }\n\n\t\tif($3.length == 0) cRel = true;\n\t\telse if($3.charAt(0) == \"[\") { cRel = true; $3 = $3.slice(1, -1); }\n\n\t\tvar R = $2.length>0?parseInt($2,10)|0:0, C = $3.length>0?parseInt($3,10)|0:0;\n\n\t\tif(cRel) C += rcbase.c; else --C;\n\t\tif(rRel) R += rcbase.r; else --R;\n\t\treturn $1 + (cRel ? \"\" : \"$\") + encode_col(C) + (rRel ? \"\" : \"$\") + encode_row(R);\n\t}\n\treturn function rc_to_a1(fstr/*:string*/, base/*:Cell*/)/*:string*/ {\n\t\trcbase = base;\n\t\treturn fstr.replace(rcregex, rcfunc);\n\t};\n})();\n\nvar crefregex = /(^|[^._A-Z0-9])([$]?)([A-Z]{1,2}|[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D])([$]?)(10[0-3]\\d{4}|104[0-7]\\d{3}|1048[0-4]\\d{2}|10485[0-6]\\d|104857[0-6]|[1-9]\\d{0,5})(?![_.\\(A-Za-z0-9])/g;\nvar a1_to_rc = /*#__PURE__*/(function(){\n\treturn function a1_to_rc(fstr/*:string*/, base/*:CellAddress*/) {\n\t\treturn fstr.replace(crefregex, function($0, $1, $2, $3, $4, $5) {\n\t\t\tvar c = decode_col($3) - ($2 ? 0 : base.c);\n\t\t\tvar r = decode_row($5) - ($4 ? 0 : base.r);\n\t\t\tvar R = (r == 0 ? \"\" : !$4 ? \"[\" + r + \"]\" : (r+1));\n\t\t\tvar C = (c == 0 ? \"\" : !$2 ? \"[\" + c + \"]\" : (c+1));\n\t\t\treturn $1 + \"R\" + R + \"C\" + C;\n\t\t});\n\t};\n})();\n\n/* no defined name can collide with a valid cell address A1:XFD1048576 ... except LOG10! */\nfunction shift_formula_str(f/*:string*/, delta/*:Cell*/)/*:string*/ {\n\treturn f.replace(crefregex, function($0, $1, $2, $3, $4, $5) {\n\t\treturn $1+($2==\"$\" ? $2+$3 : encode_col(decode_col($3)+delta.c))+($4==\"$\" ? $4+$5 : encode_row(decode_row($5) + delta.r));\n\t});\n}\n\nfunction shift_formula_xlsx(f/*:string*/, range/*:string*/, cell/*:string*/)/*:string*/ {\n\tvar r = decode_range(range), s = r.s, c = decode_cell(cell);\n\tvar delta = {r:c.r - s.r, c:c.c - s.c};\n\treturn shift_formula_str(f, delta);\n}\n\n/* TODO: parse formula */\nfunction fuzzyfmla(f/*:string*/)/*:boolean*/ {\n\tif(f.length == 1) return false;\n\treturn true;\n}\n\nfunction _xlfn(f/*:string*/)/*:string*/ {\n\treturn f.replace(/_xlfn\\./g,\"\");\n}\nfunction parseread1(blob) { blob.l+=1; return; }\n\n/* [MS-XLS] 2.5.51 */\nfunction parse_ColRelU(blob, length) {\n\tvar c = blob.read_shift(length == 1 ? 1 : 2);\n\treturn [c & 0x3FFF, (c >> 14) & 1, (c >> 15) & 1];\n}\n\n/* [MS-XLS] 2.5.198.105 ; [MS-XLSB] 2.5.97.89 */\nfunction parse_RgceArea(blob, length, opts) {\n\tvar w = 2;\n\tif(opts) {\n\t\tif(opts.biff >= 2 && opts.biff <= 5) return parse_RgceArea_BIFF2(blob, length, opts);\n\t\telse if(opts.biff == 12) w = 4;\n\t}\n\tvar r=blob.read_shift(w), R=blob.read_shift(w);\n\tvar c=parse_ColRelU(blob, 2);\n\tvar C=parse_ColRelU(blob, 2);\n\treturn { s:{r:r, c:c[0], cRel:c[1], rRel:c[2]}, e:{r:R, c:C[0], cRel:C[1], rRel:C[2]} };\n}\n/* BIFF 2-5 encodes flags in the row field */\nfunction parse_RgceArea_BIFF2(blob/*::, length, opts*/) {\n\tvar r=parse_ColRelU(blob, 2), R=parse_ColRelU(blob, 2);\n\tvar c=blob.read_shift(1);\n\tvar C=blob.read_shift(1);\n\treturn { s:{r:r[0], c:c, cRel:r[1], rRel:r[2]}, e:{r:R[0], c:C, cRel:R[1], rRel:R[2]} };\n}\n\n/* [MS-XLS] 2.5.198.105 ; [MS-XLSB] 2.5.97.90 */\nfunction parse_RgceAreaRel(blob, length, opts) {\n\tif(opts.biff < 8) return parse_RgceArea_BIFF2(blob, length, opts);\n\tvar r=blob.read_shift(opts.biff == 12 ? 4 : 2), R=blob.read_shift(opts.biff == 12 ? 4 : 2);\n\tvar c=parse_ColRelU(blob, 2);\n\tvar C=parse_ColRelU(blob, 2);\n\treturn { s:{r:r, c:c[0], cRel:c[1], rRel:c[2]}, e:{r:R, c:C[0], cRel:C[1], rRel:C[2]} };\n}\n\n/* [MS-XLS] 2.5.198.109 ; [MS-XLSB] 2.5.97.91 */\nfunction parse_RgceLoc(blob, length, opts) {\n\tif(opts && opts.biff >= 2 && opts.biff <= 5) return parse_RgceLoc_BIFF2(blob, length, opts);\n\tvar r = blob.read_shift(opts && opts.biff == 12 ? 4 : 2);\n\tvar c = parse_ColRelU(blob, 2);\n\treturn {r:r, c:c[0], cRel:c[1], rRel:c[2]};\n}\nfunction parse_RgceLoc_BIFF2(blob/*::, length, opts*/) {\n\tvar r = parse_ColRelU(blob, 2);\n\tvar c = blob.read_shift(1);\n\treturn {r:r[0], c:c, cRel:r[1], rRel:r[2]};\n}\n\n/* [MS-XLS] 2.5.198.107, 2.5.47 */\nfunction parse_RgceElfLoc(blob/*::, length, opts*/) {\n\tvar r = blob.read_shift(2);\n\tvar c = blob.read_shift(2);\n\treturn {r:r, c:c & 0xFF, fQuoted:!!(c & 0x4000), cRel:c>>15, rRel:c>>15 };\n}\n\n/* [MS-XLS] 2.5.198.111 ; [MS-XLSB] 2.5.97.92 TODO */\nfunction parse_RgceLocRel(blob, length, opts) {\n\tvar biff = opts && opts.biff ? opts.biff : 8;\n\tif(biff >= 2 && biff <= 5) return parse_RgceLocRel_BIFF2(blob, length, opts);\n\tvar r = blob.read_shift(biff >= 12 ? 4 : 2);\n\tvar cl = blob.read_shift(2);\n\tvar cRel = (cl & 0x4000) >> 14, rRel = (cl & 0x8000) >> 15;\n\tcl &= 0x3FFF;\n\tif(rRel == 1) while(r > 0x7FFFF) r -= 0x100000;\n\tif(cRel == 1) while(cl > 0x1FFF) cl = cl - 0x4000;\n\treturn {r:r,c:cl,cRel:cRel,rRel:rRel};\n}\nfunction parse_RgceLocRel_BIFF2(blob/*::, length:number, opts*/) {\n\tvar rl = blob.read_shift(2);\n\tvar c = blob.read_shift(1);\n\tvar rRel = (rl & 0x8000) >> 15, cRel = (rl & 0x4000) >> 14;\n\trl &= 0x3FFF;\n\tif(rRel == 1 && rl >= 0x2000) rl = rl - 0x4000;\n\tif(cRel == 1 && c >= 0x80) c = c - 0x100;\n\treturn {r:rl,c:c,cRel:cRel,rRel:rRel};\n}\n\n/* [MS-XLS] 2.5.198.27 ; [MS-XLSB] 2.5.97.18 */\nfunction parse_PtgArea(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar area = parse_RgceArea(blob, opts.biff >= 2 && opts.biff <= 5 ? 6 : 8, opts);\n\treturn [type, area];\n}\n\n/* [MS-XLS] 2.5.198.28 ; [MS-XLSB] 2.5.97.19 */\nfunction parse_PtgArea3d(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar ixti = blob.read_shift(2, 'i');\n\tvar w = 8;\n\tif(opts) switch(opts.biff) {\n\t\tcase 5: blob.l += 12; w = 6; break;\n\t\tcase 12: w = 12; break;\n\t}\n\tvar area = parse_RgceArea(blob, w, opts);\n\treturn [type, ixti, area];\n}\n\n/* [MS-XLS] 2.5.198.29 ; [MS-XLSB] 2.5.97.20 */\nfunction parse_PtgAreaErr(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tblob.l += opts && (opts.biff > 8) ? 12 : (opts.biff < 8 ? 6 : 8);\n\treturn [type];\n}\n/* [MS-XLS] 2.5.198.30 ; [MS-XLSB] 2.5.97.21 */\nfunction parse_PtgAreaErr3d(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar ixti = blob.read_shift(2);\n\tvar w = 8;\n\tif(opts) switch(opts.biff) {\n\t\tcase 5: blob.l += 12; w = 6; break;\n\t\tcase 12: w = 12; break;\n\t}\n\tblob.l += w;\n\treturn [type, ixti];\n}\n\n/* [MS-XLS] 2.5.198.31 ; [MS-XLSB] 2.5.97.22 */\nfunction parse_PtgAreaN(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar area = parse_RgceAreaRel(blob, length - 1, opts);\n\treturn [type, area];\n}\n\n/* [MS-XLS] 2.5.198.32 ; [MS-XLSB] 2.5.97.23 */\nfunction parse_PtgArray(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tblob.l += opts.biff == 2 ? 6 : opts.biff == 12 ? 14 : 7;\n\treturn [type];\n}\n\n/* [MS-XLS] 2.5.198.33 ; [MS-XLSB] 2.5.97.24 */\nfunction parse_PtgAttrBaxcel(blob) {\n\tvar bitSemi = blob[blob.l+1] & 0x01; /* 1 = volatile */\n\tvar bitBaxcel = 1;\n\tblob.l += 4;\n\treturn [bitSemi, bitBaxcel];\n}\n\n/* [MS-XLS] 2.5.198.34 ; [MS-XLSB] 2.5.97.25 */\nfunction parse_PtgAttrChoose(blob, length, opts)/*:Array*/ {\n\tblob.l +=2;\n\tvar offset = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\tvar o/*:Array*/ = [];\n\t/* offset is 1 less than the number of elements */\n\tfor(var i = 0; i <= offset; ++i) o.push(blob.read_shift(opts && opts.biff == 2 ? 1 : 2));\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.198.35 ; [MS-XLSB] 2.5.97.26 */\nfunction parse_PtgAttrGoto(blob, length, opts) {\n\tvar bitGoto = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += 2;\n\treturn [bitGoto, blob.read_shift(opts && opts.biff == 2 ? 1 : 2)];\n}\n\n/* [MS-XLS] 2.5.198.36 ; [MS-XLSB] 2.5.97.27 */\nfunction parse_PtgAttrIf(blob, length, opts) {\n\tvar bitIf = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += 2;\n\treturn [bitIf, blob.read_shift(opts && opts.biff == 2 ? 1 : 2)];\n}\n\n/* [MS-XLSB] 2.5.97.28 */\nfunction parse_PtgAttrIfError(blob) {\n\tvar bitIf = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += 2;\n\treturn [bitIf, blob.read_shift(2)];\n}\n\n/* [MS-XLS] 2.5.198.37 ; [MS-XLSB] 2.5.97.29 */\nfunction parse_PtgAttrSemi(blob, length, opts) {\n\tvar bitSemi = (blob[blob.l+1] & 0xFF) ? 1 : 0;\n\tblob.l += opts && opts.biff == 2 ? 3 : 4;\n\treturn [bitSemi];\n}\n\n/* [MS-XLS] 2.5.198.40 ; [MS-XLSB] 2.5.97.32 */\nfunction parse_PtgAttrSpaceType(blob/*::, length*/) {\n\tvar type = blob.read_shift(1), cch = blob.read_shift(1);\n\treturn [type, cch];\n}\n\n/* [MS-XLS] 2.5.198.38 ; [MS-XLSB] 2.5.97.30 */\nfunction parse_PtgAttrSpace(blob) {\n\tblob.read_shift(2);\n\treturn parse_PtgAttrSpaceType(blob, 2);\n}\n\n/* [MS-XLS] 2.5.198.39 ; [MS-XLSB] 2.5.97.31 */\nfunction parse_PtgAttrSpaceSemi(blob) {\n\tblob.read_shift(2);\n\treturn parse_PtgAttrSpaceType(blob, 2);\n}\n\n/* [MS-XLS] 2.5.198.84 ; [MS-XLSB] 2.5.97.68 TODO */\nfunction parse_PtgRef(blob, length, opts) {\n\t//var ptg = blob[blob.l] & 0x1F;\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar loc = parse_RgceLoc(blob, 0, opts);\n\treturn [type, loc];\n}\n\n/* [MS-XLS] 2.5.198.88 ; [MS-XLSB] 2.5.97.72 TODO */\nfunction parse_PtgRefN(blob, length, opts) {\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar loc = parse_RgceLocRel(blob, 0, opts);\n\treturn [type, loc];\n}\n\n/* [MS-XLS] 2.5.198.85 ; [MS-XLSB] 2.5.97.69 TODO */\nfunction parse_PtgRef3d(blob, length, opts) {\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar ixti = blob.read_shift(2); // XtiIndex\n\tif(opts && opts.biff == 5) blob.l += 12;\n\tvar loc = parse_RgceLoc(blob, 0, opts); // TODO: or RgceLocRel\n\treturn [type, ixti, loc];\n}\n\n\n/* [MS-XLS] 2.5.198.62 ; [MS-XLSB] 2.5.97.45 TODO */\nfunction parse_PtgFunc(blob, length, opts) {\n\t//var ptg = blob[blob.l] & 0x1F;\n\tvar type = (blob[blob.l] & 0x60)>>5;\n\tblob.l += 1;\n\tvar iftab = blob.read_shift(opts && opts.biff <= 3 ? 1 : 2);\n\treturn [FtabArgc[iftab], Ftab[iftab], type];\n}\n/* [MS-XLS] 2.5.198.63 ; [MS-XLSB] 2.5.97.46 TODO */\nfunction parse_PtgFuncVar(blob, length, opts) {\n\tvar type = blob[blob.l++];\n\tvar cparams = blob.read_shift(1), tab = opts && opts.biff <= 3 ? [(type == 0x58 ? -1 : 0), blob.read_shift(1)]: parsetab(blob);\n\treturn [cparams, (tab[0] === 0 ? Ftab : Cetab)[tab[1]]];\n}\n\nfunction parsetab(blob) {\n\treturn [blob[blob.l+1]>>7, blob.read_shift(2) & 0x7FFF];\n}\n\n/* [MS-XLS] 2.5.198.41 ; [MS-XLSB] 2.5.97.33 */\nfunction parse_PtgAttrSum(blob, length, opts) {\n\tblob.l += opts && opts.biff == 2 ? 3 : 4; return;\n}\n\n/* [MS-XLS] 2.5.198.58 ; [MS-XLSB] 2.5.97.40 */\nfunction parse_PtgExp(blob, length, opts) {\n\tblob.l++;\n\tif(opts && opts.biff == 12) return [blob.read_shift(4, 'i'), 0];\n\tvar row = blob.read_shift(2);\n\tvar col = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\treturn [row, col];\n}\n\n/* [MS-XLS] 2.5.198.57 ; [MS-XLSB] 2.5.97.39 */\nfunction parse_PtgErr(blob) { blob.l++; return BErr[blob.read_shift(1)]; }\n\n/* [MS-XLS] 2.5.198.66 ; [MS-XLSB] 2.5.97.49 */\nfunction parse_PtgInt(blob) { blob.l++; return blob.read_shift(2); }\n\n/* [MS-XLS] 2.5.198.42 ; [MS-XLSB] 2.5.97.34 */\nfunction parse_PtgBool(blob) { blob.l++; return blob.read_shift(1)!==0;}\n\n/* [MS-XLS] 2.5.198.79 ; [MS-XLSB] 2.5.97.63 */\nfunction parse_PtgNum(blob) { blob.l++; return parse_Xnum(blob, 8); }\n\n/* [MS-XLS] 2.5.198.89 ; [MS-XLSB] 2.5.97.74 */\nfunction parse_PtgStr(blob, length, opts) { blob.l++; return parse_ShortXLUnicodeString(blob, length-1, opts); }\n\n/* [MS-XLS] 2.5.192.112 + 2.5.192.11{3,4,5,6,7} */\n/* [MS-XLSB] 2.5.97.93 + 2.5.97.9{4,5,6,7} */\nfunction parse_SerAr(blob, biff/*:number*/) {\n\tvar val = [blob.read_shift(1)];\n\tif(biff == 12) switch(val[0]) {\n\t\tcase 0x02: val[0] = 0x04; break; /* SerBool */\n\t\tcase 0x04: val[0] = 0x10; break; /* SerErr */\n\t\tcase 0x00: val[0] = 0x01; break; /* SerNum */\n\t\tcase 0x01: val[0] = 0x02; break; /* SerStr */\n\t}\n\tswitch(val[0]) {\n\t\tcase 0x04: /* SerBool -- boolean */\n\t\t\tval[1] = parsebool(blob, 1) ? 'TRUE' : 'FALSE';\n\t\t\tif(biff != 12) blob.l += 7; break;\n\t\tcase 0x25: /* appears to be an alias */\n\t\tcase 0x10: /* SerErr -- error */\n\t\t\tval[1] = BErr[blob[blob.l]];\n\t\t\tblob.l += ((biff == 12) ? 4 : 8); break;\n\t\tcase 0x00: /* SerNil -- honestly, I'm not sure how to reproduce this */\n\t\t\tblob.l += 8; break;\n\t\tcase 0x01: /* SerNum -- Xnum */\n\t\t\tval[1] = parse_Xnum(blob, 8); break;\n\t\tcase 0x02: /* SerStr -- XLUnicodeString (<256 chars) */\n\t\t\tval[1] = parse_XLUnicodeString2(blob, 0, {biff:biff > 0 && biff < 8 ? 2 : biff}); break;\n\t\tdefault: throw new Error(\"Bad SerAr: \" + val[0]); /* Unreachable */\n\t}\n\treturn val;\n}\n\n/* [MS-XLS] 2.5.198.61 ; [MS-XLSB] 2.5.97.44 */\nfunction parse_PtgExtraMem(blob, cce, opts) {\n\tvar count = blob.read_shift((opts.biff == 12) ? 4 : 2);\n\tvar out/*:Array*/ = [];\n\tfor(var i = 0; i != count; ++i) out.push(((opts.biff == 12) ? parse_UncheckedRfX : parse_Ref8U)(blob, 8));\n\treturn out;\n}\n\n/* [MS-XLS] 2.5.198.59 ; [MS-XLSB] 2.5.97.41 */\nfunction parse_PtgExtraArray(blob, length, opts) {\n\tvar rows = 0, cols = 0;\n\tif(opts.biff == 12) {\n\t\trows = blob.read_shift(4); // DRw\n\t\tcols = blob.read_shift(4); // DCol\n\t} else {\n\t\tcols = 1 + blob.read_shift(1); //DColByteU\n\t\trows = 1 + blob.read_shift(2); //DRw\n\t}\n\tif(opts.biff >= 2 && opts.biff < 8) { --rows; if(--cols == 0) cols = 0x100; }\n\t// $FlowIgnore\n\tfor(var i = 0, o/*:Array>*/ = []; i != rows && (o[i] = []); ++i)\n\t\tfor(var j = 0; j != cols; ++j) o[i][j] = parse_SerAr(blob, opts.biff);\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.198.76 ; [MS-XLSB] 2.5.97.60 */\nfunction parse_PtgName(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar w = (!opts || (opts.biff >= 8)) ? 4 : 2;\n\tvar nameindex = blob.read_shift(w);\n\tswitch(opts.biff) {\n\t\tcase 2: blob.l += 5; break;\n\t\tcase 3: case 4: blob.l += 8; break;\n\t\tcase 5: blob.l += 12; break;\n\t}\n\treturn [type, 0, nameindex];\n}\n\n/* [MS-XLS] 2.5.198.77 ; [MS-XLSB] 2.5.97.61 */\nfunction parse_PtgNameX(blob, length, opts) {\n\tif(opts.biff == 5) return parse_PtgNameX_BIFF5(blob, length, opts);\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar ixti = blob.read_shift(2); // XtiIndex\n\tvar nameindex = blob.read_shift(4);\n\treturn [type, ixti, nameindex];\n}\nfunction parse_PtgNameX_BIFF5(blob/*::, length, opts*/) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar ixti = blob.read_shift(2, 'i'); // XtiIndex\n\tblob.l += 8;\n\tvar nameindex = blob.read_shift(2);\n\tblob.l += 12;\n\treturn [type, ixti, nameindex];\n}\n\n/* [MS-XLS] 2.5.198.70 ; [MS-XLSB] 2.5.97.54 */\nfunction parse_PtgMemArea(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tblob.l += (opts && opts.biff == 2 ? 3 : 4);\n\tvar cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\treturn [type, cce];\n}\n\n/* [MS-XLS] 2.5.198.72 ; [MS-XLSB] 2.5.97.56 */\nfunction parse_PtgMemFunc(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2);\n\treturn [type, cce];\n}\n\n\n/* [MS-XLS] 2.5.198.86 ; [MS-XLSB] 2.5.97.69 */\nfunction parse_PtgRefErr(blob, length, opts) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tblob.l += 4;\n\tif(opts.biff < 8) blob.l--;\n\tif(opts.biff == 12) blob.l += 2;\n\treturn [type];\n}\n\n/* [MS-XLS] 2.5.198.87 ; [MS-XLSB] 2.5.97.71 */\nfunction parse_PtgRefErr3d(blob, length, opts) {\n\tvar type = (blob[blob.l++] & 0x60) >> 5;\n\tvar ixti = blob.read_shift(2);\n\tvar w = 4;\n\tif(opts) switch(opts.biff) {\n\t\tcase 5: w = 15; break;\n\t\tcase 12: w = 6; break;\n\t}\n\tblob.l += w;\n\treturn [type, ixti];\n}\n\n/* [MS-XLS] 2.5.198.71 ; [MS-XLSB] 2.5.97.55 */\nvar parse_PtgMemErr = parsenoop;\n/* [MS-XLS] 2.5.198.73 ; [MS-XLSB] 2.5.97.57 */\nvar parse_PtgMemNoMem = parsenoop;\n/* [MS-XLS] 2.5.198.92 */\nvar parse_PtgTbl = parsenoop;\n\nfunction parse_PtgElfLoc(blob, length, opts) {\n\tblob.l += 2;\n\treturn [parse_RgceElfLoc(blob, 4, opts)];\n}\nfunction parse_PtgElfNoop(blob/*::, length, opts*/) {\n\tblob.l += 6;\n\treturn [];\n}\n/* [MS-XLS] 2.5.198.46 */\nvar parse_PtgElfCol = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.47 */\nvar parse_PtgElfColS = parse_PtgElfNoop;\n/* [MS-XLS] 2.5.198.48 */\nvar parse_PtgElfColSV = parse_PtgElfNoop;\n/* [MS-XLS] 2.5.198.49 */\nvar parse_PtgElfColV = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.50 */\nfunction parse_PtgElfLel(blob/*::, length, opts*/) {\n\tblob.l += 2;\n\treturn [parseuint16(blob), blob.read_shift(2) & 0x01];\n}\n/* [MS-XLS] 2.5.198.51 */\nvar parse_PtgElfRadical = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.52 */\nvar parse_PtgElfRadicalLel = parse_PtgElfLel;\n/* [MS-XLS] 2.5.198.53 */\nvar parse_PtgElfRadicalS = parse_PtgElfNoop;\n/* [MS-XLS] 2.5.198.54 */\nvar parse_PtgElfRw = parse_PtgElfLoc;\n/* [MS-XLS] 2.5.198.55 */\nvar parse_PtgElfRwV = parse_PtgElfLoc;\n\n/* [MS-XLSB] 2.5.97.52 TODO */\nvar PtgListRT = [\n\t\"Data\",\n\t\"All\",\n\t\"Headers\",\n\t\"??\",\n\t\"?Data2\",\n\t\"??\",\n\t\"?DataHeaders\",\n\t\"??\",\n\t\"Totals\",\n\t\"??\",\n\t\"??\",\n\t\"??\",\n\t\"?DataTotals\",\n\t\"??\",\n\t\"??\",\n\t\"??\",\n\t\"?Current\"\n];\nfunction parse_PtgList(blob/*::, length, opts*/) {\n\tblob.l += 2;\n\tvar ixti = blob.read_shift(2);\n\tvar flags = blob.read_shift(2);\n\tvar idx = blob.read_shift(4);\n\tvar c = blob.read_shift(2);\n\tvar C = blob.read_shift(2);\n\tvar rt = PtgListRT[(flags >> 2) & 0x1F];\n\treturn {ixti: ixti, coltype:(flags&0x3), rt:rt, idx:idx, c:c, C:C};\n}\n/* [MS-XLS] 2.5.198.91 ; [MS-XLSB] 2.5.97.76 */\nfunction parse_PtgSxName(blob/*::, length, opts*/) {\n\tblob.l += 2;\n\treturn [blob.read_shift(4)];\n}\n\n/* [XLS] old spec */\nfunction parse_PtgSheet(blob, length, opts) {\n\tblob.l += 5;\n\tblob.l += 2;\n\tblob.l += (opts.biff == 2 ? 1 : 4);\n\treturn [\"PTGSHEET\"];\n}\nfunction parse_PtgEndSheet(blob, length, opts) {\n\tblob.l += (opts.biff == 2 ? 4 : 5);\n\treturn [\"PTGENDSHEET\"];\n}\nfunction parse_PtgMemAreaN(blob/*::, length, opts*/) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar cce = blob.read_shift(2);\n\treturn [type, cce];\n}\nfunction parse_PtgMemNoMemN(blob/*::, length, opts*/) {\n\tvar type = (blob.read_shift(1) >>> 5) & 0x03;\n\tvar cce = blob.read_shift(2);\n\treturn [type, cce];\n}\nfunction parse_PtgAttrNoop(blob/*::, length, opts*/) {\n\tblob.l += 4;\n\treturn [0, 0];\n}\n\n/* [MS-XLS] 2.5.198.25 ; [MS-XLSB] 2.5.97.16 */\nvar PtgTypes = {\n\t/*::[*/0x01/*::]*/: { n:'PtgExp', f:parse_PtgExp },\n\t/*::[*/0x02/*::]*/: { n:'PtgTbl', f:parse_PtgTbl },\n\t/*::[*/0x03/*::]*/: { n:'PtgAdd', f:parseread1 },\n\t/*::[*/0x04/*::]*/: { n:'PtgSub', f:parseread1 },\n\t/*::[*/0x05/*::]*/: { n:'PtgMul', f:parseread1 },\n\t/*::[*/0x06/*::]*/: { n:'PtgDiv', f:parseread1 },\n\t/*::[*/0x07/*::]*/: { n:'PtgPower', f:parseread1 },\n\t/*::[*/0x08/*::]*/: { n:'PtgConcat', f:parseread1 },\n\t/*::[*/0x09/*::]*/: { n:'PtgLt', f:parseread1 },\n\t/*::[*/0x0A/*::]*/: { n:'PtgLe', f:parseread1 },\n\t/*::[*/0x0B/*::]*/: { n:'PtgEq', f:parseread1 },\n\t/*::[*/0x0C/*::]*/: { n:'PtgGe', f:parseread1 },\n\t/*::[*/0x0D/*::]*/: { n:'PtgGt', f:parseread1 },\n\t/*::[*/0x0E/*::]*/: { n:'PtgNe', f:parseread1 },\n\t/*::[*/0x0F/*::]*/: { n:'PtgIsect', f:parseread1 },\n\t/*::[*/0x10/*::]*/: { n:'PtgUnion', f:parseread1 },\n\t/*::[*/0x11/*::]*/: { n:'PtgRange', f:parseread1 },\n\t/*::[*/0x12/*::]*/: { n:'PtgUplus', f:parseread1 },\n\t/*::[*/0x13/*::]*/: { n:'PtgUminus', f:parseread1 },\n\t/*::[*/0x14/*::]*/: { n:'PtgPercent', f:parseread1 },\n\t/*::[*/0x15/*::]*/: { n:'PtgParen', f:parseread1 },\n\t/*::[*/0x16/*::]*/: { n:'PtgMissArg', f:parseread1 },\n\t/*::[*/0x17/*::]*/: { n:'PtgStr', f:parse_PtgStr },\n\t/*::[*/0x1A/*::]*/: { n:'PtgSheet', f:parse_PtgSheet },\n\t/*::[*/0x1B/*::]*/: { n:'PtgEndSheet', f:parse_PtgEndSheet },\n\t/*::[*/0x1C/*::]*/: { n:'PtgErr', f:parse_PtgErr },\n\t/*::[*/0x1D/*::]*/: { n:'PtgBool', f:parse_PtgBool },\n\t/*::[*/0x1E/*::]*/: { n:'PtgInt', f:parse_PtgInt },\n\t/*::[*/0x1F/*::]*/: { n:'PtgNum', f:parse_PtgNum },\n\t/*::[*/0x20/*::]*/: { n:'PtgArray', f:parse_PtgArray },\n\t/*::[*/0x21/*::]*/: { n:'PtgFunc', f:parse_PtgFunc },\n\t/*::[*/0x22/*::]*/: { n:'PtgFuncVar', f:parse_PtgFuncVar },\n\t/*::[*/0x23/*::]*/: { n:'PtgName', f:parse_PtgName },\n\t/*::[*/0x24/*::]*/: { n:'PtgRef', f:parse_PtgRef },\n\t/*::[*/0x25/*::]*/: { n:'PtgArea', f:parse_PtgArea },\n\t/*::[*/0x26/*::]*/: { n:'PtgMemArea', f:parse_PtgMemArea },\n\t/*::[*/0x27/*::]*/: { n:'PtgMemErr', f:parse_PtgMemErr },\n\t/*::[*/0x28/*::]*/: { n:'PtgMemNoMem', f:parse_PtgMemNoMem },\n\t/*::[*/0x29/*::]*/: { n:'PtgMemFunc', f:parse_PtgMemFunc },\n\t/*::[*/0x2A/*::]*/: { n:'PtgRefErr', f:parse_PtgRefErr },\n\t/*::[*/0x2B/*::]*/: { n:'PtgAreaErr', f:parse_PtgAreaErr },\n\t/*::[*/0x2C/*::]*/: { n:'PtgRefN', f:parse_PtgRefN },\n\t/*::[*/0x2D/*::]*/: { n:'PtgAreaN', f:parse_PtgAreaN },\n\t/*::[*/0x2E/*::]*/: { n:'PtgMemAreaN', f:parse_PtgMemAreaN },\n\t/*::[*/0x2F/*::]*/: { n:'PtgMemNoMemN', f:parse_PtgMemNoMemN },\n\t/*::[*/0x39/*::]*/: { n:'PtgNameX', f:parse_PtgNameX },\n\t/*::[*/0x3A/*::]*/: { n:'PtgRef3d', f:parse_PtgRef3d },\n\t/*::[*/0x3B/*::]*/: { n:'PtgArea3d', f:parse_PtgArea3d },\n\t/*::[*/0x3C/*::]*/: { n:'PtgRefErr3d', f:parse_PtgRefErr3d },\n\t/*::[*/0x3D/*::]*/: { n:'PtgAreaErr3d', f:parse_PtgAreaErr3d },\n\t/*::[*/0xFF/*::]*/: {}\n};\n/* These are duplicated in the PtgTypes table */\nvar PtgDupes = {\n\t/*::[*/0x40/*::]*/: 0x20, /*::[*/0x60/*::]*/: 0x20,\n\t/*::[*/0x41/*::]*/: 0x21, /*::[*/0x61/*::]*/: 0x21,\n\t/*::[*/0x42/*::]*/: 0x22, /*::[*/0x62/*::]*/: 0x22,\n\t/*::[*/0x43/*::]*/: 0x23, /*::[*/0x63/*::]*/: 0x23,\n\t/*::[*/0x44/*::]*/: 0x24, /*::[*/0x64/*::]*/: 0x24,\n\t/*::[*/0x45/*::]*/: 0x25, /*::[*/0x65/*::]*/: 0x25,\n\t/*::[*/0x46/*::]*/: 0x26, /*::[*/0x66/*::]*/: 0x26,\n\t/*::[*/0x47/*::]*/: 0x27, /*::[*/0x67/*::]*/: 0x27,\n\t/*::[*/0x48/*::]*/: 0x28, /*::[*/0x68/*::]*/: 0x28,\n\t/*::[*/0x49/*::]*/: 0x29, /*::[*/0x69/*::]*/: 0x29,\n\t/*::[*/0x4A/*::]*/: 0x2A, /*::[*/0x6A/*::]*/: 0x2A,\n\t/*::[*/0x4B/*::]*/: 0x2B, /*::[*/0x6B/*::]*/: 0x2B,\n\t/*::[*/0x4C/*::]*/: 0x2C, /*::[*/0x6C/*::]*/: 0x2C,\n\t/*::[*/0x4D/*::]*/: 0x2D, /*::[*/0x6D/*::]*/: 0x2D,\n\t/*::[*/0x4E/*::]*/: 0x2E, /*::[*/0x6E/*::]*/: 0x2E,\n\t/*::[*/0x4F/*::]*/: 0x2F, /*::[*/0x6F/*::]*/: 0x2F,\n\t/*::[*/0x58/*::]*/: 0x22, /*::[*/0x78/*::]*/: 0x22,\n\t/*::[*/0x59/*::]*/: 0x39, /*::[*/0x79/*::]*/: 0x39,\n\t/*::[*/0x5A/*::]*/: 0x3A, /*::[*/0x7A/*::]*/: 0x3A,\n\t/*::[*/0x5B/*::]*/: 0x3B, /*::[*/0x7B/*::]*/: 0x3B,\n\t/*::[*/0x5C/*::]*/: 0x3C, /*::[*/0x7C/*::]*/: 0x3C,\n\t/*::[*/0x5D/*::]*/: 0x3D, /*::[*/0x7D/*::]*/: 0x3D\n};\n\nvar Ptg18 = {\n\t/*::[*/0x01/*::]*/: { n:'PtgElfLel', f:parse_PtgElfLel },\n\t/*::[*/0x02/*::]*/: { n:'PtgElfRw', f:parse_PtgElfRw },\n\t/*::[*/0x03/*::]*/: { n:'PtgElfCol', f:parse_PtgElfCol },\n\t/*::[*/0x06/*::]*/: { n:'PtgElfRwV', f:parse_PtgElfRwV },\n\t/*::[*/0x07/*::]*/: { n:'PtgElfColV', f:parse_PtgElfColV },\n\t/*::[*/0x0A/*::]*/: { n:'PtgElfRadical', f:parse_PtgElfRadical },\n\t/*::[*/0x0B/*::]*/: { n:'PtgElfRadicalS', f:parse_PtgElfRadicalS },\n\t/*::[*/0x0D/*::]*/: { n:'PtgElfColS', f:parse_PtgElfColS },\n\t/*::[*/0x0F/*::]*/: { n:'PtgElfColSV', f:parse_PtgElfColSV },\n\t/*::[*/0x10/*::]*/: { n:'PtgElfRadicalLel', f:parse_PtgElfRadicalLel },\n\t/*::[*/0x19/*::]*/: { n:'PtgList', f:parse_PtgList },\n\t/*::[*/0x1D/*::]*/: { n:'PtgSxName', f:parse_PtgSxName },\n\t/*::[*/0xFF/*::]*/: {}\n};\nvar Ptg19 = {\n\t/*::[*/0x00/*::]*/: { n:'PtgAttrNoop', f:parse_PtgAttrNoop },\n\t/*::[*/0x01/*::]*/: { n:'PtgAttrSemi', f:parse_PtgAttrSemi },\n\t/*::[*/0x02/*::]*/: { n:'PtgAttrIf', f:parse_PtgAttrIf },\n\t/*::[*/0x04/*::]*/: { n:'PtgAttrChoose', f:parse_PtgAttrChoose },\n\t/*::[*/0x08/*::]*/: { n:'PtgAttrGoto', f:parse_PtgAttrGoto },\n\t/*::[*/0x10/*::]*/: { n:'PtgAttrSum', f:parse_PtgAttrSum },\n\t/*::[*/0x20/*::]*/: { n:'PtgAttrBaxcel', f:parse_PtgAttrBaxcel },\n\t/*::[*/0x21/*::]*/: { n:'PtgAttrBaxcel', f:parse_PtgAttrBaxcel },\n\t/*::[*/0x40/*::]*/: { n:'PtgAttrSpace', f:parse_PtgAttrSpace },\n\t/*::[*/0x41/*::]*/: { n:'PtgAttrSpaceSemi', f:parse_PtgAttrSpaceSemi },\n\t/*::[*/0x80/*::]*/: { n:'PtgAttrIfError', f:parse_PtgAttrIfError },\n\t/*::[*/0xFF/*::]*/: {}\n};\n\n/* [MS-XLS] 2.5.198.103 ; [MS-XLSB] 2.5.97.87 */\nfunction parse_RgbExtra(blob, length, rgce, opts) {\n\tif(opts.biff < 8) return parsenoop(blob, length);\n\tvar target = blob.l + length;\n\tvar o = [];\n\tfor(var i = 0; i !== rgce.length; ++i) {\n\t\tswitch(rgce[i][0]) {\n\t\t\tcase 'PtgArray': /* PtgArray -> PtgExtraArray */\n\t\t\t\trgce[i][1] = parse_PtgExtraArray(blob, 0, opts);\n\t\t\t\to.push(rgce[i][1]);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgMemArea': /* PtgMemArea -> PtgExtraMem */\n\t\t\t\trgce[i][2] = parse_PtgExtraMem(blob, rgce[i][1], opts);\n\t\t\t\to.push(rgce[i][2]);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgExp': /* PtgExp -> PtgExtraCol */\n\t\t\t\tif(opts && opts.biff == 12) {\n\t\t\t\t\trgce[i][1][1] = blob.read_shift(4);\n\t\t\t\t\to.push(rgce[i][1]);\n\t\t\t\t} break;\n\t\t\tcase 'PtgList': /* TODO: PtgList -> PtgExtraList */\n\t\t\tcase 'PtgElfRadicalS': /* TODO: PtgElfRadicalS -> PtgExtraElf */\n\t\t\tcase 'PtgElfColS': /* TODO: PtgElfColS -> PtgExtraElf */\n\t\t\tcase 'PtgElfColSV': /* TODO: PtgElfColSV -> PtgExtraElf */\n\t\t\t\tthrow \"Unsupported \" + rgce[i][0];\n\t\t\tdefault: break;\n\t\t}\n\t}\n\tlength = target - blob.l;\n\t/* note: this is technically an error but Excel disregards */\n\t//if(target !== blob.l && blob.l !== target - length) throw new Error(target + \" != \" + blob.l);\n\tif(length !== 0) o.push(parsenoop(blob, length));\n\treturn o;\n}\n\n/* [MS-XLS] 2.5.198.104 ; [MS-XLSB] 2.5.97.88 */\nfunction parse_Rgce(blob, length, opts) {\n\tvar target = blob.l + length;\n\tvar R, id, ptgs = [];\n\twhile(target != blob.l) {\n\t\tlength = target - blob.l;\n\t\tid = blob[blob.l];\n\t\tR = PtgTypes[id] || PtgTypes[PtgDupes[id]];\n\t\tif(id === 0x18 || id === 0x19) R = (id === 0x18 ? Ptg18 : Ptg19)[blob[blob.l + 1]];\n\t\tif(!R || !R.f) { /*ptgs.push*/(parsenoop(blob, length)); }\n\t\telse { ptgs.push([R.n, R.f(blob, length, opts)]); }\n\t}\n\treturn ptgs;\n}\n\nfunction stringify_array(f/*:Array>*/)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\tfor(var i = 0; i < f.length; ++i) {\n\t\tvar x = f[i], r/*:Array*/ = [];\n\t\tfor(var j = 0; j < x.length; ++j) {\n\t\t\tvar y = x[j];\n\t\t\tif(y) switch(y[0]) {\n\t\t\t\t// TODO: handle embedded quotes\n\t\t\t\tcase 0x02:\n\t\t\t\t\t/*:: if(typeof y[1] != 'string') throw \"unreachable\"; */\n\t\t\t\t\tr.push('\"' + y[1].replace(/\"/g,'\"\"') + '\"'); break;\n\t\t\t\tdefault: r.push(y[1]);\n\t\t\t} else r.push(\"\");\n\t\t}\n\t\to.push(r.join(\",\"));\n\t}\n\treturn o.join(\";\");\n}\n\n/* [MS-XLS] 2.2.2 ; [MS-XLSB] 2.2.2 TODO */\nvar PtgBinOp = {\n\tPtgAdd: \"+\",\n\tPtgConcat: \"&\",\n\tPtgDiv: \"/\",\n\tPtgEq: \"=\",\n\tPtgGe: \">=\",\n\tPtgGt: \">\",\n\tPtgLe: \"<=\",\n\tPtgLt: \"<\",\n\tPtgMul: \"*\",\n\tPtgNe: \"<>\",\n\tPtgPower: \"^\",\n\tPtgSub: \"-\"\n};\n\n// List of invalid characters needs to be tested further\nfunction formula_quote_sheet_name(sname/*:string*/, opts)/*:string*/ {\n\tif(!sname && !(opts && opts.biff <= 5 && opts.biff >= 2)) throw new Error(\"empty sheet name\");\n\tif (/[^\\w\\u4E00-\\u9FFF\\u3040-\\u30FF]/.test(sname)) return \"'\" + sname + \"'\";\n\treturn sname;\n}\nfunction get_ixti_raw(supbooks, ixti/*:number*/, opts)/*:string*/ {\n\tif(!supbooks) return \"SH33TJSERR0\";\n\tif(opts.biff > 8 && (!supbooks.XTI || !supbooks.XTI[ixti])) return supbooks.SheetNames[ixti];\n\tif(!supbooks.XTI) return \"SH33TJSERR6\";\n\tvar XTI = supbooks.XTI[ixti];\n\tif(opts.biff < 8) {\n\t\tif(ixti > 10000) ixti-= 65536;\n\t\tif(ixti < 0) ixti = -ixti;\n\t\treturn ixti == 0 ? \"\" : supbooks.XTI[ixti - 1];\n\t}\n\tif(!XTI) return \"SH33TJSERR1\";\n\tvar o = \"\";\n\tif(opts.biff > 8) switch(supbooks[XTI[0]][0]) {\n\t\tcase 0x0165: /* 'BrtSupSelf' */\n\t\t\to = XTI[1] == -1 ? \"#REF\" : supbooks.SheetNames[XTI[1]];\n\t\t\treturn XTI[1] == XTI[2] ? o : o + \":\" + supbooks.SheetNames[XTI[2]];\n\t\tcase 0x0166: /* 'BrtSupSame' */\n\t\t\tif(opts.SID != null) return supbooks.SheetNames[opts.SID];\n\t\t\treturn \"SH33TJSSAME\" + supbooks[XTI[0]][0];\n\t\tcase 0x0163: /* 'BrtSupBookSrc' */\n\t\t\t/* falls through */\n\t\tdefault: return \"SH33TJSSRC\" + supbooks[XTI[0]][0];\n\t}\n\tswitch(supbooks[XTI[0]][0][0]) {\n\t\tcase 0x0401:\n\t\t\to = XTI[1] == -1 ? \"#REF\" : (supbooks.SheetNames[XTI[1]] || \"SH33TJSERR3\");\n\t\t\treturn XTI[1] == XTI[2] ? o : o + \":\" + supbooks.SheetNames[XTI[2]];\n\t\tcase 0x3A01: return supbooks[XTI[0]].slice(1).map(function(name) { return name.Name; }).join(\";;\"); //return \"SH33TJSERR8\";\n\t\tdefault:\n\t\t\tif(!supbooks[XTI[0]][0][3]) return \"SH33TJSERR2\";\n\t\t\to = XTI[1] == -1 ? \"#REF\" : (supbooks[XTI[0]][0][3][XTI[1]] || \"SH33TJSERR4\");\n\t\t\treturn XTI[1] == XTI[2] ? o : o + \":\" + supbooks[XTI[0]][0][3][XTI[2]];\n\t}\n}\nfunction get_ixti(supbooks, ixti/*:number*/, opts)/*:string*/ {\n\tvar ixtiraw = get_ixti_raw(supbooks, ixti, opts);\n\treturn ixtiraw == \"#REF\" ? ixtiraw : formula_quote_sheet_name(ixtiraw, opts);\n}\nfunction stringify_formula(formula/*Array*/, range, cell/*:any*/, supbooks, opts)/*:string*/ {\n\tvar biff = (opts && opts.biff) || 8;\n\tvar _range = /*range != null ? range :*/ {s:{c:0, r:0},e:{c:0, r:0}};\n\tvar stack/*:Array*/ = [], e1, e2, /*::type,*/ c/*:CellAddress*/, ixti=0, nameidx=0, r, sname=\"\";\n\tif(!formula[0] || !formula[0][0]) return \"\";\n\tvar last_sp = -1, sp = \"\";\n\tfor(var ff = 0, fflen = formula[0].length; ff < fflen; ++ff) {\n\t\tvar f = formula[0][ff];\n\t\tswitch(f[0]) {\n\t\t\tcase 'PtgUminus': /* [MS-XLS] 2.5.198.93 */\n\t\t\t\tstack.push(\"-\" + stack.pop()); break;\n\t\t\tcase 'PtgUplus': /* [MS-XLS] 2.5.198.95 */\n\t\t\t\tstack.push(\"+\" + stack.pop()); break;\n\t\t\tcase 'PtgPercent': /* [MS-XLS] 2.5.198.81 */\n\t\t\t\tstack.push(stack.pop() + \"%\"); break;\n\n\t\t\tcase 'PtgAdd': /* [MS-XLS] 2.5.198.26 */\n\t\t\tcase 'PtgConcat': /* [MS-XLS] 2.5.198.43 */\n\t\t\tcase 'PtgDiv': /* [MS-XLS] 2.5.198.45 */\n\t\t\tcase 'PtgEq': /* [MS-XLS] 2.5.198.56 */\n\t\t\tcase 'PtgGe': /* [MS-XLS] 2.5.198.64 */\n\t\t\tcase 'PtgGt': /* [MS-XLS] 2.5.198.65 */\n\t\t\tcase 'PtgLe': /* [MS-XLS] 2.5.198.68 */\n\t\t\tcase 'PtgLt': /* [MS-XLS] 2.5.198.69 */\n\t\t\tcase 'PtgMul': /* [MS-XLS] 2.5.198.75 */\n\t\t\tcase 'PtgNe': /* [MS-XLS] 2.5.198.78 */\n\t\t\tcase 'PtgPower': /* [MS-XLS] 2.5.198.82 */\n\t\t\tcase 'PtgSub': /* [MS-XLS] 2.5.198.90 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tif(last_sp >= 0) {\n\t\t\t\t\tswitch(formula[0][last_sp][1][0]) {\n\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tsp = fill(\" \", formula[0][last_sp][1][1]); break;\n\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tsp = fill(\"\\r\", formula[0][last_sp][1][1]); break;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tsp = \"\";\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tif(opts.WTF) throw new Error(\"Unexpected PtgAttrSpaceType \" + formula[0][last_sp][1][0]);\n\t\t\t\t\t}\n\t\t\t\t\te2 = e2 + sp;\n\t\t\t\t\tlast_sp = -1;\n\t\t\t\t}\n\t\t\t\tstack.push(e2+PtgBinOp[f[0]]+e1);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgIsect': /* [MS-XLS] 2.5.198.67 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tstack.push(e2+\" \"+e1);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgUnion': /* [MS-XLS] 2.5.198.94 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tstack.push(e2+\",\"+e1);\n\t\t\t\tbreak;\n\t\t\tcase 'PtgRange': /* [MS-XLS] 2.5.198.83 */\n\t\t\t\te1 = stack.pop(); e2 = stack.pop();\n\t\t\t\tstack.push(e2+\":\"+e1);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAttrChoose': /* [MS-XLS] 2.5.198.34 */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrGoto': /* [MS-XLS] 2.5.198.35 */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrIf': /* [MS-XLS] 2.5.198.36 */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrIfError': /* [MS-XLSB] 2.5.97.28 */\n\t\t\t\tbreak;\n\n\n\t\t\tcase 'PtgRef': /* [MS-XLS] 2.5.198.84 */\n\t\t\t\t/*::type = f[1][0]; */c = shift_cell_xls((f[1][1]/*:any*/), _range, opts);\n\t\t\t\tstack.push(encode_cell_xls(c, biff));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgRefN': /* [MS-XLS] 2.5.198.88 */\n\t\t\t\t/*::type = f[1][0]; */c = cell ? shift_cell_xls((f[1][1]/*:any*/), cell, opts) : (f[1][1]/*:any*/);\n\t\t\t\tstack.push(encode_cell_xls(c, biff));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgRef3d': /* [MS-XLS] 2.5.198.85 */\n\t\t\t\t/*::type = f[1][0]; */ixti = /*::Number(*/f[1][1]/*::)*/; c = shift_cell_xls((f[1][2]/*:any*/), _range, opts);\n\t\t\t\tsname = get_ixti(supbooks, ixti, opts);\n\t\t\t\tvar w = sname; /* IE9 fails on defined names */ // eslint-disable-line no-unused-vars\n\t\t\t\tstack.push(sname + \"!\" + encode_cell_xls(c, biff));\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgFunc': /* [MS-XLS] 2.5.198.62 */\n\t\t\tcase 'PtgFuncVar': /* [MS-XLS] 2.5.198.63 */\n\t\t\t\t/* f[1] = [argc, func, type] */\n\t\t\t\tvar argc/*:number*/ = (f[1][0]/*:any*/), func/*:string*/ = (f[1][1]/*:any*/);\n\t\t\t\tif(!argc) argc = 0;\n\t\t\t\targc &= 0x7F;\n\t\t\t\tvar args = argc == 0 ? [] : stack.slice(-argc);\n\t\t\t\tstack.length -= argc;\n\t\t\t\tif(func === 'User') func = args.shift();\n\t\t\t\tstack.push(func + \"(\" + args.join(\",\") + \")\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgBool': /* [MS-XLS] 2.5.198.42 */\n\t\t\t\tstack.push(f[1] ? \"TRUE\" : \"FALSE\"); break;\n\t\t\tcase 'PtgInt': /* [MS-XLS] 2.5.198.66 */\n\t\t\t\tstack.push(/*::String(*/f[1]/*::)*/); break;\n\t\t\tcase 'PtgNum': /* [MS-XLS] 2.5.198.79 TODO: precision? */\n\t\t\t\tstack.push(String(f[1])); break;\n\t\t\tcase 'PtgStr': /* [MS-XLS] 2.5.198.89 */\n\t\t\t\t// $FlowIgnore\n\t\t\t\tstack.push('\"' + f[1].replace(/\"/g, '\"\"') + '\"'); break;\n\t\t\tcase 'PtgErr': /* [MS-XLS] 2.5.198.57 */\n\t\t\t\tstack.push(/*::String(*/f[1]/*::)*/); break;\n\t\t\tcase 'PtgAreaN': /* [MS-XLS] 2.5.198.31 TODO */\n\t\t\t\t/*::type = f[1][0]; */r = shift_range_xls(f[1][1], cell ? {s:cell} : _range, opts);\n\t\t\t\tstack.push(encode_range_xls((r/*:any*/), opts));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgArea': /* [MS-XLS] 2.5.198.27 TODO: fixed points */\n\t\t\t\t/*::type = f[1][0]; */r = shift_range_xls(f[1][1], _range, opts);\n\t\t\t\tstack.push(encode_range_xls((r/*:any*/), opts));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgArea3d': /* [MS-XLS] 2.5.198.28 TODO */\n\t\t\t\t/*::type = f[1][0]; */ixti = /*::Number(*/f[1][1]/*::)*/; r = f[1][2];\n\t\t\t\tsname = get_ixti(supbooks, ixti, opts);\n\t\t\t\tstack.push(sname + \"!\" + encode_range_xls((r/*:any*/), opts));\n\t\t\t\tbreak;\n\t\t\tcase 'PtgAttrSum': /* [MS-XLS] 2.5.198.41 */\n\t\t\t\tstack.push(\"SUM(\" + stack.pop() + \")\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAttrBaxcel': /* [MS-XLS] 2.5.198.33 */\n\t\t\tcase 'PtgAttrSemi': /* [MS-XLS] 2.5.198.37 */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgName': /* [MS-XLS] 2.5.198.76 ; [MS-XLSB] 2.5.97.60 TODO: revisions */\n\t\t\t\t/* f[1] = type, 0, nameindex */\n\t\t\t\tnameidx = (f[1][2]/*:any*/);\n\t\t\t\tvar lbl = (supbooks.names||[])[nameidx-1] || (supbooks[0]||[])[nameidx];\n\t\t\t\tvar name = lbl ? lbl.Name : \"SH33TJSNAME\" + String(nameidx);\n\t\t\t\t/* [MS-XLSB] 2.5.97.10 Ftab -- last verified 20220204 */\n\t\t\t\tif(name && name.slice(0,6) == \"_xlfn.\" && !opts.xlfn) name = name.slice(6);\n\t\t\t\tstack.push(name);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgNameX': /* [MS-XLS] 2.5.198.77 ; [MS-XLSB] 2.5.97.61 TODO: revisions */\n\t\t\t\t/* f[1] = type, ixti, nameindex */\n\t\t\t\tvar bookidx/*:number*/ = (f[1][1]/*:any*/); nameidx = (f[1][2]/*:any*/); var externbook;\n\t\t\t\t/* TODO: Properly handle missing values -- this should be using get_ixti_raw primarily */\n\t\t\t\tif(opts.biff <= 5) {\n\t\t\t\t\tif(bookidx < 0) bookidx = -bookidx;\n\t\t\t\t\tif(supbooks[bookidx]) externbook = supbooks[bookidx][nameidx];\n\t\t\t\t} else {\n\t\t\t\t\tvar o = \"\";\n\t\t\t\t\tif(((supbooks[bookidx]||[])[0]||[])[0] == 0x3A01){/* empty */}\n\t\t\t\t\telse if(((supbooks[bookidx]||[])[0]||[])[0] == 0x0401){\n\t\t\t\t\t\tif(supbooks[bookidx][nameidx] && supbooks[bookidx][nameidx].itab > 0) {\n\t\t\t\t\t\t\to = supbooks.SheetNames[supbooks[bookidx][nameidx].itab-1] + \"!\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse o = supbooks.SheetNames[nameidx-1]+ \"!\";\n\t\t\t\t\tif(supbooks[bookidx] && supbooks[bookidx][nameidx]) o += supbooks[bookidx][nameidx].Name;\n\t\t\t\t\telse if(supbooks[0] && supbooks[0][nameidx]) o += supbooks[0][nameidx].Name;\n\t\t\t\t\telse {\n\t\t\t\t\t\tvar ixtidata = (get_ixti_raw(supbooks, bookidx, opts)||\"\").split(\";;\");\n\t\t\t\t\t\tif(ixtidata[nameidx - 1]) o = ixtidata[nameidx - 1]; // TODO: confirm this is correct\n\t\t\t\t\t\telse o += \"SH33TJSERRX\";\n\t\t\t\t\t}\n\t\t\t\t\tstack.push(o);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(!externbook) externbook = {Name: \"SH33TJSERRY\"};\n\t\t\t\tstack.push(externbook.Name);\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgParen': /* [MS-XLS] 2.5.198.80 */\n\t\t\t\tvar lp = '(', rp = ')';\n\t\t\t\tif(last_sp >= 0) {\n\t\t\t\t\tsp = \"\";\n\t\t\t\t\tswitch(formula[0][last_sp][1][0]) {\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 2: lp = fill(\" \", formula[0][last_sp][1][1]) + lp; break;\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 3: lp = fill(\"\\r\", formula[0][last_sp][1][1]) + lp; break;\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 4: rp = fill(\" \", formula[0][last_sp][1][1]) + rp; break;\n\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\tcase 5: rp = fill(\"\\r\", formula[0][last_sp][1][1]) + rp; break;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\t\t\tif(opts.WTF) throw new Error(\"Unexpected PtgAttrSpaceType \" + formula[0][last_sp][1][0]);\n\t\t\t\t\t}\n\t\t\t\t\tlast_sp = -1;\n\t\t\t\t}\n\t\t\t\tstack.push(lp + stack.pop() + rp); break;\n\n\t\t\tcase 'PtgRefErr': /* [MS-XLS] 2.5.198.86 */\n\t\t\t\tstack.push('#REF!'); break;\n\n\t\t\tcase 'PtgRefErr3d': /* [MS-XLS] 2.5.198.87 */\n\t\t\t\tstack.push('#REF!'); break;\n\n\t\t\tcase 'PtgExp': /* [MS-XLS] 2.5.198.58 TODO */\n\t\t\t\tc = {c:(f[1][1]/*:any*/),r:(f[1][0]/*:any*/)};\n\t\t\t\tvar q = ({c: cell.c, r:cell.r}/*:any*/);\n\t\t\t\tif(supbooks.sharedf[encode_cell(c)]) {\n\t\t\t\t\tvar parsedf = (supbooks.sharedf[encode_cell(c)]);\n\t\t\t\t\tstack.push(stringify_formula(parsedf, _range, q, supbooks, opts));\n\t\t\t\t} else {\n\t\t\t\t\tvar fnd = false;\n\t\t\t\t\tfor(e1=0;e1!=supbooks.arrayf.length; ++e1) {\n\t\t\t\t\t\t/* TODO: should be something like range_has */\n\t\t\t\t\t\te2 = supbooks.arrayf[e1];\n\t\t\t\t\t\tif(c.c < e2[0].s.c || c.c > e2[0].e.c) continue;\n\t\t\t\t\t\tif(c.r < e2[0].s.r || c.r > e2[0].e.r) continue;\n\t\t\t\t\t\tstack.push(stringify_formula(e2[1], _range, q, supbooks, opts));\n\t\t\t\t\t\tfnd = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif(!fnd) stack.push(/*::String(*/f[1]/*::)*/);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgArray': /* [MS-XLS] 2.5.198.32 TODO */\n\t\t\t\tstack.push(\"{\" + stringify_array(/*::(*/f[1]/*:: :any)*/) + \"}\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemArea': /* [MS-XLS] 2.5.198.70 TODO: confirm this is a non-display */\n\t\t\t\t//stack.push(\"(\" + f[2].map(encode_range).join(\",\") + \")\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAttrSpace': /* [MS-XLS] 2.5.198.38 */\n\t\t\tcase 'PtgAttrSpaceSemi': /* [MS-XLS] 2.5.198.39 */\n\t\t\t\tlast_sp = ff;\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgTbl': /* [MS-XLS] 2.5.198.92 TODO */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemErr': /* [MS-XLS] 2.5.198.71 */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMissArg': /* [MS-XLS] 2.5.198.74 */\n\t\t\t\tstack.push(\"\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgAreaErr': /* [MS-XLS] 2.5.198.29 */\n\t\t\t\tstack.push(\"#REF!\"); break;\n\n\t\t\tcase 'PtgAreaErr3d': /* [MS-XLS] 2.5.198.30 */\n\t\t\t\tstack.push(\"#REF!\"); break;\n\n\t\t\tcase 'PtgList': /* [MS-XLSB] 2.5.97.52 */\n\t\t\t\t// $FlowIgnore\n\t\t\t\tstack.push(\"Table\" + f[1].idx + \"[#\" + f[1].rt + \"]\");\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemAreaN':\n\t\t\tcase 'PtgMemNoMemN':\n\t\t\tcase 'PtgAttrNoop':\n\t\t\tcase 'PtgSheet':\n\t\t\tcase 'PtgEndSheet':\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgMemFunc': /* [MS-XLS] 2.5.198.72 TODO */\n\t\t\t\tbreak;\n\t\t\tcase 'PtgMemNoMem': /* [MS-XLS] 2.5.198.73 TODO */\n\t\t\t\tbreak;\n\n\t\t\tcase 'PtgElfCol': /* [MS-XLS] 2.5.198.46 */\n\t\t\tcase 'PtgElfColS': /* [MS-XLS] 2.5.198.47 */\n\t\t\tcase 'PtgElfColSV': /* [MS-XLS] 2.5.198.48 */\n\t\t\tcase 'PtgElfColV': /* [MS-XLS] 2.5.198.49 */\n\t\t\tcase 'PtgElfLel': /* [MS-XLS] 2.5.198.50 */\n\t\t\tcase 'PtgElfRadical': /* [MS-XLS] 2.5.198.51 */\n\t\t\tcase 'PtgElfRadicalLel': /* [MS-XLS] 2.5.198.52 */\n\t\t\tcase 'PtgElfRadicalS': /* [MS-XLS] 2.5.198.53 */\n\t\t\tcase 'PtgElfRw': /* [MS-XLS] 2.5.198.54 */\n\t\t\tcase 'PtgElfRwV': /* [MS-XLS] 2.5.198.55 */\n\t\t\t\tthrow new Error(\"Unsupported ELFs\");\n\n\t\t\tcase 'PtgSxName': /* [MS-XLS] 2.5.198.91 TODO -- find a test case */\n\t\t\t\tthrow new Error('Unrecognized Formula Token: ' + String(f));\n\t\t\tdefault: throw new Error('Unrecognized Formula Token: ' + String(f));\n\t\t}\n\t\tvar PtgNonDisp = ['PtgAttrSpace', 'PtgAttrSpaceSemi', 'PtgAttrGoto'];\n\t\tif(opts.biff != 3) if(last_sp >= 0 && PtgNonDisp.indexOf(formula[0][ff][0]) == -1) {\n\t\t\tf = formula[0][last_sp];\n\t\t\tvar _left = true;\n\t\t\tswitch(f[1][0]) {\n\t\t\t\t/* note: some bad XLSB files omit the PtgParen */\n\t\t\t\tcase 4: _left = false;\n\t\t\t\t/* falls through */\n\t\t\t\tcase 0:\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tsp = fill(\" \", f[1][1]); break;\n\t\t\t\tcase 5: _left = false;\n\t\t\t\t/* falls through */\n\t\t\t\tcase 1:\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tsp = fill(\"\\r\", f[1][1]); break;\n\t\t\t\tdefault:\n\t\t\t\t\tsp = \"\";\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tif(opts.WTF) throw new Error(\"Unexpected PtgAttrSpaceType \" + f[1][0]);\n\t\t\t}\n\t\t\tstack.push((_left ? sp : \"\") + stack.pop() + (_left ? \"\" : sp));\n\t\t\tlast_sp = -1;\n\t\t}\n\t}\n\tif(stack.length > 1 && opts.WTF) throw new Error(\"bad formula stack\");\n\treturn stack[0];\n}\n\n/* [MS-XLS] 2.5.198.1 TODO */\nfunction parse_ArrayParsedFormula(blob, length, opts/*::, ref*/) {\n\tvar target = blob.l + length, len = opts.biff == 2 ? 1 : 2;\n\tvar rgcb, cce = blob.read_shift(len); // length of rgce\n\tif(cce == 0xFFFF) return [[],parsenoop(blob, length-2)];\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tif(length !== cce + len) rgcb = parse_RgbExtra(blob, length - cce - len, rgce, opts);\n\tblob.l = target;\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.198.3 TODO */\nfunction parse_XLSCellParsedFormula(blob, length, opts) {\n\tvar target = blob.l + length, len = opts.biff == 2 ? 1 : 2;\n\tvar rgcb, cce = blob.read_shift(len); // length of rgce\n\tif(cce == 0xFFFF) return [[],parsenoop(blob, length-2)];\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tif(length !== cce + len) rgcb = parse_RgbExtra(blob, length - cce - len, rgce, opts);\n\tblob.l = target;\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.198.21 */\nfunction parse_NameParsedFormula(blob, length, opts, cce) {\n\tvar target = blob.l + length;\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tvar rgcb;\n\tif(target !== blob.l) rgcb = parse_RgbExtra(blob, target - blob.l, rgce, opts);\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.198.118 TODO */\nfunction parse_SharedParsedFormula(blob, length, opts) {\n\tvar target = blob.l + length;\n\tvar rgcb, cce = blob.read_shift(2); // length of rgce\n\tvar rgce = parse_Rgce(blob, cce, opts);\n\tif(cce == 0xFFFF) return [[],parsenoop(blob, length-2)];\n\tif(length !== cce + 2) rgcb = parse_RgbExtra(blob, target - cce - 2, rgce, opts);\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLS] 2.5.133 TODO: how to emit empty strings? */\nfunction parse_FormulaValue(blob/*::, length*/) {\n\tvar b;\n\tif(__readUInt16LE(blob,blob.l + 6) !== 0xFFFF) return [parse_Xnum(blob),'n'];\n\tswitch(blob[blob.l]) {\n\t\tcase 0x00: blob.l += 8; return [\"String\", 's'];\n\t\tcase 0x01: b = blob[blob.l+2] === 0x1; blob.l += 8; return [b,'b'];\n\t\tcase 0x02: b = blob[blob.l+2]; blob.l += 8; return [b,'e'];\n\t\tcase 0x03: blob.l += 8; return [\"\",'s'];\n\t}\n\treturn [];\n}\nfunction write_FormulaValue(value) {\n\tif(value == null) {\n\t\t// Blank String Value\n\t\tvar o = new_buf(8);\n\t\to.write_shift(1, 0x03);\n\t\to.write_shift(1, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0);\n\t\to.write_shift(2, 0xFFFF);\n\t\treturn o;\n\t} else if(typeof value == \"number\") return write_Xnum(value);\n\treturn write_Xnum(0);\n}\n\n/* [MS-XLS] 2.4.127 TODO */\nfunction parse_Formula(blob, length, opts) {\n\tvar end = blob.l + length;\n\tvar cell = parse_XLSCell(blob, 6);\n\tif(opts.biff == 2) ++blob.l;\n\tvar val = parse_FormulaValue(blob,8);\n\tvar flags = blob.read_shift(1);\n\tif(opts.biff != 2) {\n\t\tblob.read_shift(1);\n\t\tif(opts.biff >= 5) {\n\t\t\t/*var chn = */blob.read_shift(4);\n\t\t}\n\t}\n\tvar cbf = parse_XLSCellParsedFormula(blob, end - blob.l, opts);\n\treturn {cell:cell, val:val[0], formula:cbf, shared: (flags >> 3) & 1, tt:val[1]};\n}\nfunction write_Formula(cell/*:Cell*/, R/*:number*/, C/*:number*/, opts, os/*:number*/) {\n\t// Cell\n\tvar o1 = write_XLSCell(R, C, os);\n\n\t// FormulaValue\n\tvar o2 = write_FormulaValue(cell.v);\n\n\t// flags + cache\n\tvar o3 = new_buf(6);\n\tvar flags = 0x01 | 0x20;\n\to3.write_shift(2, flags);\n\to3.write_shift(4, 0);\n\n\t// CellParsedFormula\n\tvar bf = new_buf(cell.bf.length);\n\tfor(var i = 0; i < cell.bf.length; ++i) bf[i] = cell.bf[i];\n\n\tvar out = bconcat([o1, o2, o3, bf]);\n\treturn out;\n}\n\n\n/* XLSB Parsed Formula records have the same shape */\nfunction parse_XLSBParsedFormula(data, length, opts) {\n\tvar cce = data.read_shift(4);\n\tvar rgce = parse_Rgce(data, cce, opts);\n\tvar cb = data.read_shift(4);\n\tvar rgcb = cb > 0 ? parse_RgbExtra(data, cb, rgce, opts) : null;\n\treturn [rgce, rgcb];\n}\n\n/* [MS-XLSB] 2.5.97.1 ArrayParsedFormula */\nvar parse_XLSBArrayParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.4 CellParsedFormula */\nvar parse_XLSBCellParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.8 DVParsedFormula */\n//var parse_XLSBDVParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.9 FRTParsedFormula */\n//var parse_XLSBFRTParsedFormula = parse_XLSBParsedFormula2;\n/* [MS-XLSB] 2.5.97.12 NameParsedFormula */\nvar parse_XLSBNameParsedFormula = parse_XLSBParsedFormula;\n/* [MS-XLSB] 2.5.97.98 SharedParsedFormula */\nvar parse_XLSBSharedParsedFormula = parse_XLSBParsedFormula;\nvar Cetab = {\n 0: \"BEEP\",\n 1: \"OPEN\",\n 2: \"OPEN.LINKS\",\n 3: \"CLOSE.ALL\",\n 4: \"SAVE\",\n 5: \"SAVE.AS\",\n 6: \"FILE.DELETE\",\n 7: \"PAGE.SETUP\",\n 8: \"PRINT\",\n 9: \"PRINTER.SETUP\",\n 10: \"QUIT\",\n 11: \"NEW.WINDOW\",\n 12: \"ARRANGE.ALL\",\n 13: \"WINDOW.SIZE\",\n 14: \"WINDOW.MOVE\",\n 15: \"FULL\",\n 16: \"CLOSE\",\n 17: \"RUN\",\n 22: \"SET.PRINT.AREA\",\n 23: \"SET.PRINT.TITLES\",\n 24: \"SET.PAGE.BREAK\",\n 25: \"REMOVE.PAGE.BREAK\",\n 26: \"FONT\",\n 27: \"DISPLAY\",\n 28: \"PROTECT.DOCUMENT\",\n 29: \"PRECISION\",\n 30: \"A1.R1C1\",\n 31: \"CALCULATE.NOW\",\n 32: \"CALCULATION\",\n 34: \"DATA.FIND\",\n 35: \"EXTRACT\",\n 36: \"DATA.DELETE\",\n 37: \"SET.DATABASE\",\n 38: \"SET.CRITERIA\",\n 39: \"SORT\",\n 40: \"DATA.SERIES\",\n 41: \"TABLE\",\n 42: \"FORMAT.NUMBER\",\n 43: \"ALIGNMENT\",\n 44: \"STYLE\",\n 45: \"BORDER\",\n 46: \"CELL.PROTECTION\",\n 47: \"COLUMN.WIDTH\",\n 48: \"UNDO\",\n 49: \"CUT\",\n 50: \"COPY\",\n 51: \"PASTE\",\n 52: \"CLEAR\",\n 53: \"PASTE.SPECIAL\",\n 54: \"EDIT.DELETE\",\n 55: \"INSERT\",\n 56: \"FILL.RIGHT\",\n 57: \"FILL.DOWN\",\n 61: \"DEFINE.NAME\",\n 62: \"CREATE.NAMES\",\n 63: \"FORMULA.GOTO\",\n 64: \"FORMULA.FIND\",\n 65: \"SELECT.LAST.CELL\",\n 66: \"SHOW.ACTIVE.CELL\",\n 67: \"GALLERY.AREA\",\n 68: \"GALLERY.BAR\",\n 69: \"GALLERY.COLUMN\",\n 70: \"GALLERY.LINE\",\n 71: \"GALLERY.PIE\",\n 72: \"GALLERY.SCATTER\",\n 73: \"COMBINATION\",\n 74: \"PREFERRED\",\n 75: \"ADD.OVERLAY\",\n 76: \"GRIDLINES\",\n 77: \"SET.PREFERRED\",\n 78: \"AXES\",\n 79: \"LEGEND\",\n 80: \"ATTACH.TEXT\",\n 81: \"ADD.ARROW\",\n 82: \"SELECT.CHART\",\n 83: \"SELECT.PLOT.AREA\",\n 84: \"PATTERNS\",\n 85: \"MAIN.CHART\",\n 86: \"OVERLAY\",\n 87: \"SCALE\",\n 88: \"FORMAT.LEGEND\",\n 89: \"FORMAT.TEXT\",\n 90: \"EDIT.REPEAT\",\n 91: \"PARSE\",\n 92: \"JUSTIFY\",\n 93: \"HIDE\",\n 94: \"UNHIDE\",\n 95: \"WORKSPACE\",\n 96: \"FORMULA\",\n 97: \"FORMULA.FILL\",\n 98: \"FORMULA.ARRAY\",\n 99: \"DATA.FIND.NEXT\",\n 100: \"DATA.FIND.PREV\",\n 101: \"FORMULA.FIND.NEXT\",\n 102: \"FORMULA.FIND.PREV\",\n 103: \"ACTIVATE\",\n 104: \"ACTIVATE.NEXT\",\n 105: \"ACTIVATE.PREV\",\n 106: \"UNLOCKED.NEXT\",\n 107: \"UNLOCKED.PREV\",\n 108: \"COPY.PICTURE\",\n 109: \"SELECT\",\n 110: \"DELETE.NAME\",\n 111: \"DELETE.FORMAT\",\n 112: \"VLINE\",\n 113: \"HLINE\",\n 114: \"VPAGE\",\n 115: \"HPAGE\",\n 116: \"VSCROLL\",\n 117: \"HSCROLL\",\n 118: \"ALERT\",\n 119: \"NEW\",\n 120: \"CANCEL.COPY\",\n 121: \"SHOW.CLIPBOARD\",\n 122: \"MESSAGE\",\n 124: \"PASTE.LINK\",\n 125: \"APP.ACTIVATE\",\n 126: \"DELETE.ARROW\",\n 127: \"ROW.HEIGHT\",\n 128: \"FORMAT.MOVE\",\n 129: \"FORMAT.SIZE\",\n 130: \"FORMULA.REPLACE\",\n 131: \"SEND.KEYS\",\n 132: \"SELECT.SPECIAL\",\n 133: \"APPLY.NAMES\",\n 134: \"REPLACE.FONT\",\n 135: \"FREEZE.PANES\",\n 136: \"SHOW.INFO\",\n 137: \"SPLIT\",\n 138: \"ON.WINDOW\",\n 139: \"ON.DATA\",\n 140: \"DISABLE.INPUT\",\n 142: \"OUTLINE\",\n 143: \"LIST.NAMES\",\n 144: \"FILE.CLOSE\",\n 145: \"SAVE.WORKBOOK\",\n 146: \"DATA.FORM\",\n 147: \"COPY.CHART\",\n 148: \"ON.TIME\",\n 149: \"WAIT\",\n 150: \"FORMAT.FONT\",\n 151: \"FILL.UP\",\n 152: \"FILL.LEFT\",\n 153: \"DELETE.OVERLAY\",\n 155: \"SHORT.MENUS\",\n 159: \"SET.UPDATE.STATUS\",\n 161: \"COLOR.PALETTE\",\n 162: \"DELETE.STYLE\",\n 163: \"WINDOW.RESTORE\",\n 164: \"WINDOW.MAXIMIZE\",\n 166: \"CHANGE.LINK\",\n 167: \"CALCULATE.DOCUMENT\",\n 168: \"ON.KEY\",\n 169: \"APP.RESTORE\",\n 170: \"APP.MOVE\",\n 171: \"APP.SIZE\",\n 172: \"APP.MINIMIZE\",\n 173: \"APP.MAXIMIZE\",\n 174: \"BRING.TO.FRONT\",\n 175: \"SEND.TO.BACK\",\n 185: \"MAIN.CHART.TYPE\",\n 186: \"OVERLAY.CHART.TYPE\",\n 187: \"SELECT.END\",\n 188: \"OPEN.MAIL\",\n 189: \"SEND.MAIL\",\n 190: \"STANDARD.FONT\",\n 191: \"CONSOLIDATE\",\n 192: \"SORT.SPECIAL\",\n 193: \"GALLERY.3D.AREA\",\n 194: \"GALLERY.3D.COLUMN\",\n 195: \"GALLERY.3D.LINE\",\n 196: \"GALLERY.3D.PIE\",\n 197: \"VIEW.3D\",\n 198: \"GOAL.SEEK\",\n 199: \"WORKGROUP\",\n 200: \"FILL.GROUP\",\n 201: \"UPDATE.LINK\",\n 202: \"PROMOTE\",\n 203: \"DEMOTE\",\n 204: \"SHOW.DETAIL\",\n 206: \"UNGROUP\",\n 207: \"OBJECT.PROPERTIES\",\n 208: \"SAVE.NEW.OBJECT\",\n 209: \"SHARE\",\n 210: \"SHARE.NAME\",\n 211: \"DUPLICATE\",\n 212: \"APPLY.STYLE\",\n 213: \"ASSIGN.TO.OBJECT\",\n 214: \"OBJECT.PROTECTION\",\n 215: \"HIDE.OBJECT\",\n 216: \"SET.EXTRACT\",\n 217: \"CREATE.PUBLISHER\",\n 218: \"SUBSCRIBE.TO\",\n 219: \"ATTRIBUTES\",\n 220: \"SHOW.TOOLBAR\",\n 222: \"PRINT.PREVIEW\",\n 223: \"EDIT.COLOR\",\n 224: \"SHOW.LEVELS\",\n 225: \"FORMAT.MAIN\",\n 226: \"FORMAT.OVERLAY\",\n 227: \"ON.RECALC\",\n 228: \"EDIT.SERIES\",\n 229: \"DEFINE.STYLE\",\n 240: \"LINE.PRINT\",\n 243: \"ENTER.DATA\",\n 249: \"GALLERY.RADAR\",\n 250: \"MERGE.STYLES\",\n 251: \"EDITION.OPTIONS\",\n 252: \"PASTE.PICTURE\",\n 253: \"PASTE.PICTURE.LINK\",\n 254: \"SPELLING\",\n 256: \"ZOOM\",\n 259: \"INSERT.OBJECT\",\n 260: \"WINDOW.MINIMIZE\",\n 265: \"SOUND.NOTE\",\n 266: \"SOUND.PLAY\",\n 267: \"FORMAT.SHAPE\",\n 268: \"EXTEND.POLYGON\",\n 269: \"FORMAT.AUTO\",\n 272: \"GALLERY.3D.BAR\",\n 273: \"GALLERY.3D.SURFACE\",\n 274: \"FILL.AUTO\",\n 276: \"CUSTOMIZE.TOOLBAR\",\n 277: \"ADD.TOOL\",\n 278: \"EDIT.OBJECT\",\n 279: \"ON.DOUBLECLICK\",\n 280: \"ON.ENTRY\",\n 281: \"WORKBOOK.ADD\",\n 282: \"WORKBOOK.MOVE\",\n 283: \"WORKBOOK.COPY\",\n 284: \"WORKBOOK.OPTIONS\",\n 285: \"SAVE.WORKSPACE\",\n 288: \"CHART.WIZARD\",\n 289: \"DELETE.TOOL\",\n 290: \"MOVE.TOOL\",\n 291: \"WORKBOOK.SELECT\",\n 292: \"WORKBOOK.ACTIVATE\",\n 293: \"ASSIGN.TO.TOOL\",\n 295: \"COPY.TOOL\",\n 296: \"RESET.TOOL\",\n 297: \"CONSTRAIN.NUMERIC\",\n 298: \"PASTE.TOOL\",\n 302: \"WORKBOOK.NEW\",\n 305: \"SCENARIO.CELLS\",\n 306: \"SCENARIO.DELETE\",\n 307: \"SCENARIO.ADD\",\n 308: \"SCENARIO.EDIT\",\n 309: \"SCENARIO.SHOW\",\n 310: \"SCENARIO.SHOW.NEXT\",\n 311: \"SCENARIO.SUMMARY\",\n 312: \"PIVOT.TABLE.WIZARD\",\n 313: \"PIVOT.FIELD.PROPERTIES\",\n 314: \"PIVOT.FIELD\",\n 315: \"PIVOT.ITEM\",\n 316: \"PIVOT.ADD.FIELDS\",\n 318: \"OPTIONS.CALCULATION\",\n 319: \"OPTIONS.EDIT\",\n 320: \"OPTIONS.VIEW\",\n 321: \"ADDIN.MANAGER\",\n 322: \"MENU.EDITOR\",\n 323: \"ATTACH.TOOLBARS\",\n 324: \"VBAActivate\",\n 325: \"OPTIONS.CHART\",\n 328: \"VBA.INSERT.FILE\",\n 330: \"VBA.PROCEDURE.DEFINITION\",\n 336: \"ROUTING.SLIP\",\n 338: \"ROUTE.DOCUMENT\",\n 339: \"MAIL.LOGON\",\n 342: \"INSERT.PICTURE\",\n 343: \"EDIT.TOOL\",\n 344: \"GALLERY.DOUGHNUT\",\n 350: \"CHART.TREND\",\n 352: \"PIVOT.ITEM.PROPERTIES\",\n 354: \"WORKBOOK.INSERT\",\n 355: \"OPTIONS.TRANSITION\",\n 356: \"OPTIONS.GENERAL\",\n 370: \"FILTER.ADVANCED\",\n 373: \"MAIL.ADD.MAILER\",\n 374: \"MAIL.DELETE.MAILER\",\n 375: \"MAIL.REPLY\",\n 376: \"MAIL.REPLY.ALL\",\n 377: \"MAIL.FORWARD\",\n 378: \"MAIL.NEXT.LETTER\",\n 379: \"DATA.LABEL\",\n 380: \"INSERT.TITLE\",\n 381: \"FONT.PROPERTIES\",\n 382: \"MACRO.OPTIONS\",\n 383: \"WORKBOOK.HIDE\",\n 384: \"WORKBOOK.UNHIDE\",\n 385: \"WORKBOOK.DELETE\",\n 386: \"WORKBOOK.NAME\",\n 388: \"GALLERY.CUSTOM\",\n 390: \"ADD.CHART.AUTOFORMAT\",\n 391: \"DELETE.CHART.AUTOFORMAT\",\n 392: \"CHART.ADD.DATA\",\n 393: \"AUTO.OUTLINE\",\n 394: \"TAB.ORDER\",\n 395: \"SHOW.DIALOG\",\n 396: \"SELECT.ALL\",\n 397: \"UNGROUP.SHEETS\",\n 398: \"SUBTOTAL.CREATE\",\n 399: \"SUBTOTAL.REMOVE\",\n 400: \"RENAME.OBJECT\",\n 412: \"WORKBOOK.SCROLL\",\n 413: \"WORKBOOK.NEXT\",\n 414: \"WORKBOOK.PREV\",\n 415: \"WORKBOOK.TAB.SPLIT\",\n 416: \"FULL.SCREEN\",\n 417: \"WORKBOOK.PROTECT\",\n 420: \"SCROLLBAR.PROPERTIES\",\n 421: \"PIVOT.SHOW.PAGES\",\n 422: \"TEXT.TO.COLUMNS\",\n 423: \"FORMAT.CHARTTYPE\",\n 424: \"LINK.FORMAT\",\n 425: \"TRACER.DISPLAY\",\n 430: \"TRACER.NAVIGATE\",\n 431: \"TRACER.CLEAR\",\n 432: \"TRACER.ERROR\",\n 433: \"PIVOT.FIELD.GROUP\",\n 434: \"PIVOT.FIELD.UNGROUP\",\n 435: \"CHECKBOX.PROPERTIES\",\n 436: \"LABEL.PROPERTIES\",\n 437: \"LISTBOX.PROPERTIES\",\n 438: \"EDITBOX.PROPERTIES\",\n 439: \"PIVOT.REFRESH\",\n 440: \"LINK.COMBO\",\n 441: \"OPEN.TEXT\",\n 442: \"HIDE.DIALOG\",\n 443: \"SET.DIALOG.FOCUS\",\n 444: \"ENABLE.OBJECT\",\n 445: \"PUSHBUTTON.PROPERTIES\",\n 446: \"SET.DIALOG.DEFAULT\",\n 447: \"FILTER\",\n 448: \"FILTER.SHOW.ALL\",\n 449: \"CLEAR.OUTLINE\",\n 450: \"FUNCTION.WIZARD\",\n 451: \"ADD.LIST.ITEM\",\n 452: \"SET.LIST.ITEM\",\n 453: \"REMOVE.LIST.ITEM\",\n 454: \"SELECT.LIST.ITEM\",\n 455: \"SET.CONTROL.VALUE\",\n 456: \"SAVE.COPY.AS\",\n 458: \"OPTIONS.LISTS.ADD\",\n 459: \"OPTIONS.LISTS.DELETE\",\n 460: \"SERIES.AXES\",\n 461: \"SERIES.X\",\n 462: \"SERIES.Y\",\n 463: \"ERRORBAR.X\",\n 464: \"ERRORBAR.Y\",\n 465: \"FORMAT.CHART\",\n 466: \"SERIES.ORDER\",\n 467: \"MAIL.LOGOFF\",\n 468: \"CLEAR.ROUTING.SLIP\",\n 469: \"APP.ACTIVATE.MICROSOFT\",\n 470: \"MAIL.EDIT.MAILER\",\n 471: \"ON.SHEET\",\n 472: \"STANDARD.WIDTH\",\n 473: \"SCENARIO.MERGE\",\n 474: \"SUMMARY.INFO\",\n 475: \"FIND.FILE\",\n 476: \"ACTIVE.CELL.FONT\",\n 477: \"ENABLE.TIPWIZARD\",\n 478: \"VBA.MAKE.ADDIN\",\n 480: \"INSERTDATATABLE\",\n 481: \"WORKGROUP.OPTIONS\",\n 482: \"MAIL.SEND.MAILER\",\n 485: \"AUTOCORRECT\",\n 489: \"POST.DOCUMENT\",\n 491: \"PICKLIST\",\n 493: \"VIEW.SHOW\",\n 494: \"VIEW.DEFINE\",\n 495: \"VIEW.DELETE\",\n 509: \"SHEET.BACKGROUND\",\n 510: \"INSERT.MAP.OBJECT\",\n 511: \"OPTIONS.MENONO\",\n 517: \"MSOCHECKS\",\n 518: \"NORMAL\",\n 519: \"LAYOUT\",\n 520: \"RM.PRINT.AREA\",\n 521: \"CLEAR.PRINT.AREA\",\n 522: \"ADD.PRINT.AREA\",\n 523: \"MOVE.BRK\",\n 545: \"HIDECURR.NOTE\",\n 546: \"HIDEALL.NOTES\",\n 547: \"DELETE.NOTE\",\n 548: \"TRAVERSE.NOTES\",\n 549: \"ACTIVATE.NOTES\",\n 620: \"PROTECT.REVISIONS\",\n 621: \"UNPROTECT.REVISIONS\",\n 647: \"OPTIONS.ME\",\n 653: \"WEB.PUBLISH\",\n 667: \"NEWWEBQUERY\",\n 673: \"PIVOT.TABLE.CHART\",\n 753: \"OPTIONS.SAVE\",\n 755: \"OPTIONS.SPELL\",\n 808: \"HIDEALL.INKANNOTS\"\n};\nvar Ftab = {\n 0: \"COUNT\",\n 1: \"IF\",\n 2: \"ISNA\",\n 3: \"ISERROR\",\n 4: \"SUM\",\n 5: \"AVERAGE\",\n 6: \"MIN\",\n 7: \"MAX\",\n 8: \"ROW\",\n 9: \"COLUMN\",\n 10: \"NA\",\n 11: \"NPV\",\n 12: \"STDEV\",\n 13: \"DOLLAR\",\n 14: \"FIXED\",\n 15: \"SIN\",\n 16: \"COS\",\n 17: \"TAN\",\n 18: \"ATAN\",\n 19: \"PI\",\n 20: \"SQRT\",\n 21: \"EXP\",\n 22: \"LN\",\n 23: \"LOG10\",\n 24: \"ABS\",\n 25: \"INT\",\n 26: \"SIGN\",\n 27: \"ROUND\",\n 28: \"LOOKUP\",\n 29: \"INDEX\",\n 30: \"REPT\",\n 31: \"MID\",\n 32: \"LEN\",\n 33: \"VALUE\",\n 34: \"TRUE\",\n 35: \"FALSE\",\n 36: \"AND\",\n 37: \"OR\",\n 38: \"NOT\",\n 39: \"MOD\",\n 40: \"DCOUNT\",\n 41: \"DSUM\",\n 42: \"DAVERAGE\",\n 43: \"DMIN\",\n 44: \"DMAX\",\n 45: \"DSTDEV\",\n 46: \"VAR\",\n 47: \"DVAR\",\n 48: \"TEXT\",\n 49: \"LINEST\",\n 50: \"TREND\",\n 51: \"LOGEST\",\n 52: \"GROWTH\",\n 53: \"GOTO\",\n 54: \"HALT\",\n 55: \"RETURN\",\n 56: \"PV\",\n 57: \"FV\",\n 58: \"NPER\",\n 59: \"PMT\",\n 60: \"RATE\",\n 61: \"MIRR\",\n 62: \"IRR\",\n 63: \"RAND\",\n 64: \"MATCH\",\n 65: \"DATE\",\n 66: \"TIME\",\n 67: \"DAY\",\n 68: \"MONTH\",\n 69: \"YEAR\",\n 70: \"WEEKDAY\",\n 71: \"HOUR\",\n 72: \"MINUTE\",\n 73: \"SECOND\",\n 74: \"NOW\",\n 75: \"AREAS\",\n 76: \"ROWS\",\n 77: \"COLUMNS\",\n 78: \"OFFSET\",\n 79: \"ABSREF\",\n 80: \"RELREF\",\n 81: \"ARGUMENT\",\n 82: \"SEARCH\",\n 83: \"TRANSPOSE\",\n 84: \"ERROR\",\n 85: \"STEP\",\n 86: \"TYPE\",\n 87: \"ECHO\",\n 88: \"SET.NAME\",\n 89: \"CALLER\",\n 90: \"DEREF\",\n 91: \"WINDOWS\",\n 92: \"SERIES\",\n 93: \"DOCUMENTS\",\n 94: \"ACTIVE.CELL\",\n 95: \"SELECTION\",\n 96: \"RESULT\",\n 97: \"ATAN2\",\n 98: \"ASIN\",\n 99: \"ACOS\",\n 100: \"CHOOSE\",\n 101: \"HLOOKUP\",\n 102: \"VLOOKUP\",\n 103: \"LINKS\",\n 104: \"INPUT\",\n 105: \"ISREF\",\n 106: \"GET.FORMULA\",\n 107: \"GET.NAME\",\n 108: \"SET.VALUE\",\n 109: \"LOG\",\n 110: \"EXEC\",\n 111: \"CHAR\",\n 112: \"LOWER\",\n 113: \"UPPER\",\n 114: \"PROPER\",\n 115: \"LEFT\",\n 116: \"RIGHT\",\n 117: \"EXACT\",\n 118: \"TRIM\",\n 119: \"REPLACE\",\n 120: \"SUBSTITUTE\",\n 121: \"CODE\",\n 122: \"NAMES\",\n 123: \"DIRECTORY\",\n 124: \"FIND\",\n 125: \"CELL\",\n 126: \"ISERR\",\n 127: \"ISTEXT\",\n 128: \"ISNUMBER\",\n 129: \"ISBLANK\",\n 130: \"T\",\n 131: \"N\",\n 132: \"FOPEN\",\n 133: \"FCLOSE\",\n 134: \"FSIZE\",\n 135: \"FREADLN\",\n 136: \"FREAD\",\n 137: \"FWRITELN\",\n 138: \"FWRITE\",\n 139: \"FPOS\",\n 140: \"DATEVALUE\",\n 141: \"TIMEVALUE\",\n 142: \"SLN\",\n 143: \"SYD\",\n 144: \"DDB\",\n 145: \"GET.DEF\",\n 146: \"REFTEXT\",\n 147: \"TEXTREF\",\n 148: \"INDIRECT\",\n 149: \"REGISTER\",\n 150: \"CALL\",\n 151: \"ADD.BAR\",\n 152: \"ADD.MENU\",\n 153: \"ADD.COMMAND\",\n 154: \"ENABLE.COMMAND\",\n 155: \"CHECK.COMMAND\",\n 156: \"RENAME.COMMAND\",\n 157: \"SHOW.BAR\",\n 158: \"DELETE.MENU\",\n 159: \"DELETE.COMMAND\",\n 160: \"GET.CHART.ITEM\",\n 161: \"DIALOG.BOX\",\n 162: \"CLEAN\",\n 163: \"MDETERM\",\n 164: \"MINVERSE\",\n 165: \"MMULT\",\n 166: \"FILES\",\n 167: \"IPMT\",\n 168: \"PPMT\",\n 169: \"COUNTA\",\n 170: \"CANCEL.KEY\",\n 171: \"FOR\",\n 172: \"WHILE\",\n 173: \"BREAK\",\n 174: \"NEXT\",\n 175: \"INITIATE\",\n 176: \"REQUEST\",\n 177: \"POKE\",\n 178: \"EXECUTE\",\n 179: \"TERMINATE\",\n 180: \"RESTART\",\n 181: \"HELP\",\n 182: \"GET.BAR\",\n 183: \"PRODUCT\",\n 184: \"FACT\",\n 185: \"GET.CELL\",\n 186: \"GET.WORKSPACE\",\n 187: \"GET.WINDOW\",\n 188: \"GET.DOCUMENT\",\n 189: \"DPRODUCT\",\n 190: \"ISNONTEXT\",\n 191: \"GET.NOTE\",\n 192: \"NOTE\",\n 193: \"STDEVP\",\n 194: \"VARP\",\n 195: \"DSTDEVP\",\n 196: \"DVARP\",\n 197: \"TRUNC\",\n 198: \"ISLOGICAL\",\n 199: \"DCOUNTA\",\n 200: \"DELETE.BAR\",\n 201: \"UNREGISTER\",\n 204: \"USDOLLAR\",\n 205: \"FINDB\",\n 206: \"SEARCHB\",\n 207: \"REPLACEB\",\n 208: \"LEFTB\",\n 209: \"RIGHTB\",\n 210: \"MIDB\",\n 211: \"LENB\",\n 212: \"ROUNDUP\",\n 213: \"ROUNDDOWN\",\n 214: \"ASC\",\n 215: \"DBCS\",\n 216: \"RANK\",\n 219: \"ADDRESS\",\n 220: \"DAYS360\",\n 221: \"TODAY\",\n 222: \"VDB\",\n 223: \"ELSE\",\n 224: \"ELSE.IF\",\n 225: \"END.IF\",\n 226: \"FOR.CELL\",\n 227: \"MEDIAN\",\n 228: \"SUMPRODUCT\",\n 229: \"SINH\",\n 230: \"COSH\",\n 231: \"TANH\",\n 232: \"ASINH\",\n 233: \"ACOSH\",\n 234: \"ATANH\",\n 235: \"DGET\",\n 236: \"CREATE.OBJECT\",\n 237: \"VOLATILE\",\n 238: \"LAST.ERROR\",\n 239: \"CUSTOM.UNDO\",\n 240: \"CUSTOM.REPEAT\",\n 241: \"FORMULA.CONVERT\",\n 242: \"GET.LINK.INFO\",\n 243: \"TEXT.BOX\",\n 244: \"INFO\",\n 245: \"GROUP\",\n 246: \"GET.OBJECT\",\n 247: \"DB\",\n 248: \"PAUSE\",\n 251: \"RESUME\",\n 252: \"FREQUENCY\",\n 253: \"ADD.TOOLBAR\",\n 254: \"DELETE.TOOLBAR\",\n 255: \"User\",\n 256: \"RESET.TOOLBAR\",\n 257: \"EVALUATE\",\n 258: \"GET.TOOLBAR\",\n 259: \"GET.TOOL\",\n 260: \"SPELLING.CHECK\",\n 261: \"ERROR.TYPE\",\n 262: \"APP.TITLE\",\n 263: \"WINDOW.TITLE\",\n 264: \"SAVE.TOOLBAR\",\n 265: \"ENABLE.TOOL\",\n 266: \"PRESS.TOOL\",\n 267: \"REGISTER.ID\",\n 268: \"GET.WORKBOOK\",\n 269: \"AVEDEV\",\n 270: \"BETADIST\",\n 271: \"GAMMALN\",\n 272: \"BETAINV\",\n 273: \"BINOMDIST\",\n 274: \"CHIDIST\",\n 275: \"CHIINV\",\n 276: \"COMBIN\",\n 277: \"CONFIDENCE\",\n 278: \"CRITBINOM\",\n 279: \"EVEN\",\n 280: \"EXPONDIST\",\n 281: \"FDIST\",\n 282: \"FINV\",\n 283: \"FISHER\",\n 284: \"FISHERINV\",\n 285: \"FLOOR\",\n 286: \"GAMMADIST\",\n 287: \"GAMMAINV\",\n 288: \"CEILING\",\n 289: \"HYPGEOMDIST\",\n 290: \"LOGNORMDIST\",\n 291: \"LOGINV\",\n 292: \"NEGBINOMDIST\",\n 293: \"NORMDIST\",\n 294: \"NORMSDIST\",\n 295: \"NORMINV\",\n 296: \"NORMSINV\",\n 297: \"STANDARDIZE\",\n 298: \"ODD\",\n 299: \"PERMUT\",\n 300: \"POISSON\",\n 301: \"TDIST\",\n 302: \"WEIBULL\",\n 303: \"SUMXMY2\",\n 304: \"SUMX2MY2\",\n 305: \"SUMX2PY2\",\n 306: \"CHITEST\",\n 307: \"CORREL\",\n 308: \"COVAR\",\n 309: \"FORECAST\",\n 310: \"FTEST\",\n 311: \"INTERCEPT\",\n 312: \"PEARSON\",\n 313: \"RSQ\",\n 314: \"STEYX\",\n 315: \"SLOPE\",\n 316: \"TTEST\",\n 317: \"PROB\",\n 318: \"DEVSQ\",\n 319: \"GEOMEAN\",\n 320: \"HARMEAN\",\n 321: \"SUMSQ\",\n 322: \"KURT\",\n 323: \"SKEW\",\n 324: \"ZTEST\",\n 325: \"LARGE\",\n 326: \"SMALL\",\n 327: \"QUARTILE\",\n 328: \"PERCENTILE\",\n 329: \"PERCENTRANK\",\n 330: \"MODE\",\n 331: \"TRIMMEAN\",\n 332: \"TINV\",\n 334: \"MOVIE.COMMAND\",\n 335: \"GET.MOVIE\",\n 336: \"CONCATENATE\",\n 337: \"POWER\",\n 338: \"PIVOT.ADD.DATA\",\n 339: \"GET.PIVOT.TABLE\",\n 340: \"GET.PIVOT.FIELD\",\n 341: \"GET.PIVOT.ITEM\",\n 342: \"RADIANS\",\n 343: \"DEGREES\",\n 344: \"SUBTOTAL\",\n 345: \"SUMIF\",\n 346: \"COUNTIF\",\n 347: \"COUNTBLANK\",\n 348: \"SCENARIO.GET\",\n 349: \"OPTIONS.LISTS.GET\",\n 350: \"ISPMT\",\n 351: \"DATEDIF\",\n 352: \"DATESTRING\",\n 353: \"NUMBERSTRING\",\n 354: \"ROMAN\",\n 355: \"OPEN.DIALOG\",\n 356: \"SAVE.DIALOG\",\n 357: \"VIEW.GET\",\n 358: \"GETPIVOTDATA\",\n 359: \"HYPERLINK\",\n 360: \"PHONETIC\",\n 361: \"AVERAGEA\",\n 362: \"MAXA\",\n 363: \"MINA\",\n 364: \"STDEVPA\",\n 365: \"VARPA\",\n 366: \"STDEVA\",\n 367: \"VARA\",\n 368: \"BAHTTEXT\",\n 369: \"THAIDAYOFWEEK\",\n 370: \"THAIDIGIT\",\n 371: \"THAIMONTHOFYEAR\",\n 372: \"THAINUMSOUND\",\n 373: \"THAINUMSTRING\",\n 374: \"THAISTRINGLENGTH\",\n 375: \"ISTHAIDIGIT\",\n 376: \"ROUNDBAHTDOWN\",\n 377: \"ROUNDBAHTUP\",\n 378: \"THAIYEAR\",\n 379: \"RTD\",\n 380: \"CUBEVALUE\",\n 381: \"CUBEMEMBER\",\n 382: \"CUBEMEMBERPROPERTY\",\n 383: \"CUBERANKEDMEMBER\",\n 384: \"HEX2BIN\",\n 385: \"HEX2DEC\",\n 386: \"HEX2OCT\",\n 387: \"DEC2BIN\",\n 388: \"DEC2HEX\",\n 389: \"DEC2OCT\",\n 390: \"OCT2BIN\",\n 391: \"OCT2HEX\",\n 392: \"OCT2DEC\",\n 393: \"BIN2DEC\",\n 394: \"BIN2OCT\",\n 395: \"BIN2HEX\",\n 396: \"IMSUB\",\n 397: \"IMDIV\",\n 398: \"IMPOWER\",\n 399: \"IMABS\",\n 400: \"IMSQRT\",\n 401: \"IMLN\",\n 402: \"IMLOG2\",\n 403: \"IMLOG10\",\n 404: \"IMSIN\",\n 405: \"IMCOS\",\n 406: \"IMEXP\",\n 407: \"IMARGUMENT\",\n 408: \"IMCONJUGATE\",\n 409: \"IMAGINARY\",\n 410: \"IMREAL\",\n 411: \"COMPLEX\",\n 412: \"IMSUM\",\n 413: \"IMPRODUCT\",\n 414: \"SERIESSUM\",\n 415: \"FACTDOUBLE\",\n 416: \"SQRTPI\",\n 417: \"QUOTIENT\",\n 418: \"DELTA\",\n 419: \"GESTEP\",\n 420: \"ISEVEN\",\n 421: \"ISODD\",\n 422: \"MROUND\",\n 423: \"ERF\",\n 424: \"ERFC\",\n 425: \"BESSELJ\",\n 426: \"BESSELK\",\n 427: \"BESSELY\",\n 428: \"BESSELI\",\n 429: \"XIRR\",\n 430: \"XNPV\",\n 431: \"PRICEMAT\",\n 432: \"YIELDMAT\",\n 433: \"INTRATE\",\n 434: \"RECEIVED\",\n 435: \"DISC\",\n 436: \"PRICEDISC\",\n 437: \"YIELDDISC\",\n 438: \"TBILLEQ\",\n 439: \"TBILLPRICE\",\n 440: \"TBILLYIELD\",\n 441: \"PRICE\",\n 442: \"YIELD\",\n 443: \"DOLLARDE\",\n 444: \"DOLLARFR\",\n 445: \"NOMINAL\",\n 446: \"EFFECT\",\n 447: \"CUMPRINC\",\n 448: \"CUMIPMT\",\n 449: \"EDATE\",\n 450: \"EOMONTH\",\n 451: \"YEARFRAC\",\n 452: \"COUPDAYBS\",\n 453: \"COUPDAYS\",\n 454: \"COUPDAYSNC\",\n 455: \"COUPNCD\",\n 456: \"COUPNUM\",\n 457: \"COUPPCD\",\n 458: \"DURATION\",\n 459: \"MDURATION\",\n 460: \"ODDLPRICE\",\n 461: \"ODDLYIELD\",\n 462: \"ODDFPRICE\",\n 463: \"ODDFYIELD\",\n 464: \"RANDBETWEEN\",\n 465: \"WEEKNUM\",\n 466: \"AMORDEGRC\",\n 467: \"AMORLINC\",\n 468: \"CONVERT\",\n 724: \"SHEETJS\",\n 469: \"ACCRINT\",\n 470: \"ACCRINTM\",\n 471: \"WORKDAY\",\n 472: \"NETWORKDAYS\",\n 473: \"GCD\",\n 474: \"MULTINOMIAL\",\n 475: \"LCM\",\n 476: \"FVSCHEDULE\",\n 477: \"CUBEKPIMEMBER\",\n 478: \"CUBESET\",\n 479: \"CUBESETCOUNT\",\n 480: \"IFERROR\",\n 481: \"COUNTIFS\",\n 482: \"SUMIFS\",\n 483: \"AVERAGEIF\",\n 484: \"AVERAGEIFS\"\n};\nvar FtabArgc = {\n 2: 1,\n 3: 1,\n 10: 0,\n 15: 1,\n 16: 1,\n 17: 1,\n 18: 1,\n 19: 0,\n 20: 1,\n 21: 1,\n 22: 1,\n 23: 1,\n 24: 1,\n 25: 1,\n 26: 1,\n 27: 2,\n 30: 2,\n 31: 3,\n 32: 1,\n 33: 1,\n 34: 0,\n 35: 0,\n 38: 1,\n 39: 2,\n 40: 3,\n 41: 3,\n 42: 3,\n 43: 3,\n 44: 3,\n 45: 3,\n 47: 3,\n 48: 2,\n 53: 1,\n 61: 3,\n 63: 0,\n 65: 3,\n 66: 3,\n 67: 1,\n 68: 1,\n 69: 1,\n 70: 1,\n 71: 1,\n 72: 1,\n 73: 1,\n 74: 0,\n 75: 1,\n 76: 1,\n 77: 1,\n 79: 2,\n 80: 2,\n 83: 1,\n 85: 0,\n 86: 1,\n 89: 0,\n 90: 1,\n 94: 0,\n 95: 0,\n 97: 2,\n 98: 1,\n 99: 1,\n 101: 3,\n 102: 3,\n 105: 1,\n 106: 1,\n 108: 2,\n 111: 1,\n 112: 1,\n 113: 1,\n 114: 1,\n 117: 2,\n 118: 1,\n 119: 4,\n 121: 1,\n 126: 1,\n 127: 1,\n 128: 1,\n 129: 1,\n 130: 1,\n 131: 1,\n 133: 1,\n 134: 1,\n 135: 1,\n 136: 2,\n 137: 2,\n 138: 2,\n 140: 1,\n 141: 1,\n 142: 3,\n 143: 4,\n 144: 4,\n 161: 1,\n 162: 1,\n 163: 1,\n 164: 1,\n 165: 2,\n 172: 1,\n 175: 2,\n 176: 2,\n 177: 3,\n 178: 2,\n 179: 1,\n 184: 1,\n 186: 1,\n 189: 3,\n 190: 1,\n 195: 3,\n 196: 3,\n 197: 1,\n 198: 1,\n 199: 3,\n 201: 1,\n 207: 4,\n 210: 3,\n 211: 1,\n 212: 2,\n 213: 2,\n 214: 1,\n 215: 1,\n 225: 0,\n 229: 1,\n 230: 1,\n 231: 1,\n 232: 1,\n 233: 1,\n 234: 1,\n 235: 3,\n 244: 1,\n 247: 4,\n 252: 2,\n 257: 1,\n 261: 1,\n 271: 1,\n 273: 4,\n 274: 2,\n 275: 2,\n 276: 2,\n 277: 3,\n 278: 3,\n 279: 1,\n 280: 3,\n 281: 3,\n 282: 3,\n 283: 1,\n 284: 1,\n 285: 2,\n 286: 4,\n 287: 3,\n 288: 2,\n 289: 4,\n 290: 3,\n 291: 3,\n 292: 3,\n 293: 4,\n 294: 1,\n 295: 3,\n 296: 1,\n 297: 3,\n 298: 1,\n 299: 2,\n 300: 3,\n 301: 3,\n 302: 4,\n 303: 2,\n 304: 2,\n 305: 2,\n 306: 2,\n 307: 2,\n 308: 2,\n 309: 3,\n 310: 2,\n 311: 2,\n 312: 2,\n 313: 2,\n 314: 2,\n 315: 2,\n 316: 4,\n 325: 2,\n 326: 2,\n 327: 2,\n 328: 2,\n 331: 2,\n 332: 2,\n 337: 2,\n 342: 1,\n 343: 1,\n 346: 2,\n 347: 1,\n 350: 4,\n 351: 3,\n 352: 1,\n 353: 2,\n 360: 1,\n 368: 1,\n 369: 1,\n 370: 1,\n 371: 1,\n 372: 1,\n 373: 1,\n 374: 1,\n 375: 1,\n 376: 1,\n 377: 1,\n 378: 1,\n 382: 3,\n 385: 1,\n 392: 1,\n 393: 1,\n 396: 2,\n 397: 2,\n 398: 2,\n 399: 1,\n 400: 1,\n 401: 1,\n 402: 1,\n 403: 1,\n 404: 1,\n 405: 1,\n 406: 1,\n 407: 1,\n 408: 1,\n 409: 1,\n 410: 1,\n 414: 4,\n 415: 1,\n 416: 1,\n 417: 2,\n 420: 1,\n 421: 1,\n 422: 2,\n 424: 1,\n 425: 2,\n 426: 2,\n 427: 2,\n 428: 2,\n 430: 3,\n 438: 3,\n 439: 3,\n 440: 3,\n 443: 2,\n 444: 2,\n 445: 2,\n 446: 2,\n 447: 6,\n 448: 6,\n 449: 2,\n 450: 2,\n 464: 2,\n 468: 3,\n 476: 2,\n 479: 1,\n 480: 2,\n 65535: 0\n};\n/* Part 3 TODO: actually parse formulae */\nfunction ods_to_csf_formula(f/*:string*/)/*:string*/ {\n\tif(f.slice(0,3) == \"of:\") f = f.slice(3);\n\t/* 5.2 Basic Expressions */\n\tif(f.charCodeAt(0) == 61) {\n\t\tf = f.slice(1);\n\t\tif(f.charCodeAt(0) == 61) f = f.slice(1);\n\t}\n\tf = f.replace(/COM\\.MICROSOFT\\./g, \"\");\n\t/* Part 3 Section 5.8 References */\n\tf = f.replace(/\\[((?:\\.[A-Z]+[0-9]+)(?::\\.[A-Z]+[0-9]+)?)\\]/g, function($$, $1) { return $1.replace(/\\./g,\"\"); });\n\t/* TODO: something other than this */\n\tf = f.replace(/\\[.(#[A-Z]*[?!])\\]/g, \"$1\");\n\treturn f.replace(/[;~]/g,\",\").replace(/\\|/g,\";\");\n}\n\nfunction csf_to_ods_formula(f/*:string*/)/*:string*/ {\n\tvar o = \"of:=\" + f.replace(crefregex, \"$1[.$2$3$4$5]\").replace(/\\]:\\[/g,\":\");\n\t/* TODO: something other than this */\n\treturn o.replace(/;/g, \"|\").replace(/,/g,\";\");\n}\n\nfunction ods_to_csf_3D(r/*:string*/)/*:[string, string]*/ {\n\tvar a = r.split(\":\");\n\tvar s = a[0].split(\".\")[0];\n\treturn [s, a[0].split(\".\")[1] + (a.length > 1 ? (\":\" + (a[1].split(\".\")[1] || a[1].split(\".\")[0])) : \"\")];\n}\n\nfunction csf_to_ods_3D(r/*:string*/)/*:string*/ {\n\treturn r.replace(/\\./,\"!\");\n}\n\nvar strs = {}; // shared strings\nvar _ssfopts = {}; // spreadsheet formatting options\n\n\n/*global Map */\nvar browser_has_Map = typeof Map !== 'undefined';\n\nfunction get_sst_id(sst/*:SST*/, str/*:string*/, rev)/*:number*/ {\n\tvar i = 0, len = sst.length;\n\tif(rev) {\n\t\tif(browser_has_Map ? rev.has(str) : Object.prototype.hasOwnProperty.call(rev, str)) {\n\t\t\tvar revarr = browser_has_Map ? rev.get(str) : rev[str];\n\t\t\tfor(; i < revarr.length; ++i) {\n\t\t\t\tif(sst[revarr[i]].t === str) { sst.Count ++; return revarr[i]; }\n\t\t\t}\n\t\t}\n\t} else for(; i < len; ++i) {\n\t\tif(sst[i].t === str) { sst.Count ++; return i; }\n\t}\n\tsst[len] = ({t:str}/*:any*/); sst.Count ++; sst.Unique ++;\n\tif(rev) {\n\t\tif(browser_has_Map) {\n\t\t\tif(!rev.has(str)) rev.set(str, []);\n\t\t\trev.get(str).push(len);\n\t\t} else {\n\t\t\tif(!Object.prototype.hasOwnProperty.call(rev, str)) rev[str] = [];\n\t\t\trev[str].push(len);\n\t\t}\n\t}\n\treturn len;\n}\n\nfunction col_obj_w(C/*:number*/, col) {\n\tvar p = ({min:C+1,max:C+1}/*:any*/);\n\t/* wch (chars), wpx (pixels) */\n\tvar wch = -1;\n\tif(col.MDW) MDW = col.MDW;\n\tif(col.width != null) p.customWidth = 1;\n\telse if(col.wpx != null) wch = px2char(col.wpx);\n\telse if(col.wch != null) wch = col.wch;\n\tif(wch > -1) { p.width = char2width(wch); p.customWidth = 1; }\n\telse if(col.width != null) p.width = col.width;\n\tif(col.hidden) p.hidden = true;\n\tif(col.level != null) { p.outlineLevel = p.level = col.level; }\n\treturn p;\n}\n\nfunction default_margins(margins/*:Margins*/, mode/*:?string*/) {\n\tif(!margins) return;\n\tvar defs = [0.7, 0.7, 0.75, 0.75, 0.3, 0.3];\n\tif(mode == 'xlml') defs = [1, 1, 1, 1, 0.5, 0.5];\n\tif(margins.left == null) margins.left = defs[0];\n\tif(margins.right == null) margins.right = defs[1];\n\tif(margins.top == null) margins.top = defs[2];\n\tif(margins.bottom == null) margins.bottom = defs[3];\n\tif(margins.header == null) margins.header = defs[4];\n\tif(margins.footer == null) margins.footer = defs[5];\n}\n\nfunction get_cell_style(styles/*:Array*/, cell/*:Cell*/, opts) {\n\tvar z = opts.revssf[cell.z != null ? cell.z : \"General\"];\n\tvar i = 0x3c, len = styles.length;\n\tif(z == null && opts.ssf) {\n\t\tfor(; i < 0x188; ++i) if(opts.ssf[i] == null) {\n\t\t\tSSF_load(cell.z, i);\n\t\t\t// $FlowIgnore\n\t\t\topts.ssf[i] = cell.z;\n\t\t\topts.revssf[cell.z] = z = i;\n\t\t\tbreak;\n\t\t}\n\t}\n\tfor(i = 0; i != len; ++i) if(styles[i].numFmtId === z) return i;\n\tstyles[len] = {\n\t\tnumFmtId:z,\n\t\tfontId:0,\n\t\tfillId:0,\n\t\tborderId:0,\n\t\txfId:0,\n\t\tapplyNumberFormat:1\n\t};\n\treturn len;\n}\n\nfunction safe_format(p/*:Cell*/, fmtid/*:number*/, fillid/*:?number*/, opts, themes, styles) {\n\ttry {\n\t\tif(opts.cellNF) p.z = table_fmt[fmtid];\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(p.t === 'z' && !opts.cellStyles) return;\n\tif(p.t === 'd' && typeof p.v === 'string') p.v = parseDate(p.v);\n\tif((!opts || opts.cellText !== false) && p.t !== 'z') try {\n\t\tif(table_fmt[fmtid] == null) SSF_load(SSFImplicit[fmtid] || \"General\", fmtid);\n\t\tif(p.t === 'e') p.w = p.w || BErr[p.v];\n\t\telse if(fmtid === 0) {\n\t\t\tif(p.t === 'n') {\n\t\t\t\tif((p.v|0) === p.v) p.w = p.v.toString(10);\n\t\t\t\telse p.w = SSF_general_num(p.v);\n\t\t\t}\n\t\t\telse if(p.t === 'd') {\n\t\t\t\tvar dd = datenum(p.v);\n\t\t\t\tif((dd|0) === dd) p.w = dd.toString(10);\n\t\t\t\telse p.w = SSF_general_num(dd);\n\t\t\t}\n\t\t\telse if(p.v === undefined) return \"\";\n\t\t\telse p.w = SSF_general(p.v,_ssfopts);\n\t\t}\n\t\telse if(p.t === 'd') p.w = SSF_format(fmtid,datenum(p.v),_ssfopts);\n\t\telse p.w = SSF_format(fmtid,p.v,_ssfopts);\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(!opts.cellStyles) return;\n\tif(fillid != null) try {\n\t\tp.s = styles.Fills[fillid];\n\t\tif (p.s.fgColor && p.s.fgColor.theme && !p.s.fgColor.rgb) {\n\t\t\tp.s.fgColor.rgb = rgb_tint(themes.themeElements.clrScheme[p.s.fgColor.theme].rgb, p.s.fgColor.tint || 0);\n\t\t\tif(opts.WTF) p.s.fgColor.raw_rgb = themes.themeElements.clrScheme[p.s.fgColor.theme].rgb;\n\t\t}\n\t\tif (p.s.bgColor && p.s.bgColor.theme) {\n\t\t\tp.s.bgColor.rgb = rgb_tint(themes.themeElements.clrScheme[p.s.bgColor.theme].rgb, p.s.bgColor.tint || 0);\n\t\t\tif(opts.WTF) p.s.bgColor.raw_rgb = themes.themeElements.clrScheme[p.s.bgColor.theme].rgb;\n\t\t}\n\t} catch(e) { if(opts.WTF && styles.Fills) throw e; }\n}\n\nfunction check_ws(ws/*:Worksheet*/, sname/*:string*/, i/*:number*/) {\n\tif(ws && ws['!ref']) {\n\t\tvar range = safe_decode_range(ws['!ref']);\n\t\tif(range.e.c < range.s.c || range.e.r < range.s.r) throw new Error(\"Bad range (\" + i + \"): \" + ws['!ref']);\n\t}\n}\nfunction parse_ws_xml_dim(ws/*:Worksheet*/, s/*:string*/) {\n\tvar d = safe_decode_range(s);\n\tif(d.s.r<=d.e.r && d.s.c<=d.e.c && d.s.r>=0 && d.s.c>=0) ws[\"!ref\"] = encode_range(d);\n}\nvar mergecregex = /<(?:\\w:)?mergeCell ref=\"[A-Z0-9:]+\"\\s*[\\/]?>/g;\nvar sheetdataregex = /<(?:\\w+:)?sheetData[^>]*>([\\s\\S]*)<\\/(?:\\w+:)?sheetData>/;\nvar hlinkregex = /<(?:\\w:)?hyperlink [^>]*>/mg;\nvar dimregex = /\"(\\w*:\\w*)\"/;\nvar colregex = /<(?:\\w:)?col\\b[^>]*[\\/]?>/g;\nvar afregex = /<(?:\\w:)?autoFilter[^>]*([\\/]|>([\\s\\S]*)<\\/(?:\\w:)?autoFilter)>/g;\nvar marginregex= /<(?:\\w:)?pageMargins[^>]*\\/>/g;\nvar sheetprregex = /<(?:\\w:)?sheetPr\\b(?:[^>a-z][^>]*)?\\/>/;\nvar sheetprregex2= /<(?:\\w:)?sheetPr[^>]*(?:[\\/]|>([\\s\\S]*)<\\/(?:\\w:)?sheetPr)>/;\nvar svsregex = /<(?:\\w:)?sheetViews[^>]*(?:[\\/]|>([\\s\\S]*)<\\/(?:\\w:)?sheetViews)>/;\n\n/* 18.3 Worksheets */\nfunction parse_ws_xml(data/*:?string*/, opts, idx/*:number*/, rels, wb/*:WBWBProps*/, themes, styles)/*:Worksheet*/ {\n\tif(!data) return data;\n\tif(!rels) rels = {'!id':{}};\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\n\t/* 18.3.1.99 worksheet CT_Worksheet */\n\tvar s = opts.dense ? ([]/*:any*/) : ({}/*:any*/);\n\tvar refguess/*:Range*/ = ({s: {r:2000000, c:2000000}, e: {r:0, c:0} }/*:any*/);\n\n\tvar data1 = \"\", data2 = \"\";\n\tvar mtch/*:?any*/ = data.match(sheetdataregex);\n\tif(mtch) {\n\t\tdata1 = data.slice(0, mtch.index);\n\t\tdata2 = data.slice(mtch.index + mtch[0].length);\n\t} else data1 = data2 = data;\n\n\t/* 18.3.1.82 sheetPr CT_SheetPr */\n\tvar sheetPr = data1.match(sheetprregex);\n\tif(sheetPr) parse_ws_xml_sheetpr(sheetPr[0], s, wb, idx);\n\telse if((sheetPr = data1.match(sheetprregex2))) parse_ws_xml_sheetpr2(sheetPr[0], sheetPr[1]||\"\", s, wb, idx, styles, themes);\n\n\t/* 18.3.1.35 dimension CT_SheetDimension */\n\tvar ridx = (data1.match(/<(?:\\w*:)?dimension/)||{index:-1}).index;\n\tif(ridx > 0) {\n\t\tvar ref = data1.slice(ridx,ridx+50).match(dimregex);\n\t\tif(ref) parse_ws_xml_dim(s, ref[1]);\n\t}\n\n\t/* 18.3.1.88 sheetViews CT_SheetViews */\n\tvar svs = data1.match(svsregex);\n\tif(svs && svs[1]) parse_ws_xml_sheetviews(svs[1], wb);\n\n\t/* 18.3.1.17 cols CT_Cols */\n\tvar columns/*:Array*/ = [];\n\tif(opts.cellStyles) {\n\t\t/* 18.3.1.13 col CT_Col */\n\t\tvar cols = data1.match(colregex);\n\t\tif(cols) parse_ws_xml_cols(columns, cols);\n\t}\n\n\t/* 18.3.1.80 sheetData CT_SheetData ? */\n\tif(mtch) parse_ws_xml_data(mtch[1], s, opts, refguess, themes, styles);\n\n\t/* 18.3.1.2 autoFilter CT_AutoFilter */\n\tvar afilter = data2.match(afregex);\n\tif(afilter) s['!autofilter'] = parse_ws_xml_autofilter(afilter[0]);\n\n\t/* 18.3.1.55 mergeCells CT_MergeCells */\n\tvar merges/*:Array*/ = [];\n\tvar _merge = data2.match(mergecregex);\n\tif(_merge) for(ridx = 0; ridx != _merge.length; ++ridx)\n\t\tmerges[ridx] = safe_decode_range(_merge[ridx].slice(_merge[ridx].indexOf(\"\\\"\")+1));\n\n\t/* 18.3.1.48 hyperlinks CT_Hyperlinks */\n\tvar hlink = data2.match(hlinkregex);\n\tif(hlink) parse_ws_xml_hlinks(s, hlink, rels);\n\n\t/* 18.3.1.62 pageMargins CT_PageMargins */\n\tvar margins = data2.match(marginregex);\n\tif(margins) s['!margins'] = parse_ws_xml_margins(parsexmltag(margins[0]));\n\n\tif(!s[\"!ref\"] && refguess.e.c >= refguess.s.c && refguess.e.r >= refguess.s.r) s[\"!ref\"] = encode_range(refguess);\n\tif(opts.sheetRows > 0 && s[\"!ref\"]) {\n\t\tvar tmpref = safe_decode_range(s[\"!ref\"]);\n\t\tif(opts.sheetRows <= +tmpref.e.r) {\n\t\t\ttmpref.e.r = opts.sheetRows - 1;\n\t\t\tif(tmpref.e.r > refguess.e.r) tmpref.e.r = refguess.e.r;\n\t\t\tif(tmpref.e.r < tmpref.s.r) tmpref.s.r = tmpref.e.r;\n\t\t\tif(tmpref.e.c > refguess.e.c) tmpref.e.c = refguess.e.c;\n\t\t\tif(tmpref.e.c < tmpref.s.c) tmpref.s.c = tmpref.e.c;\n\t\t\ts[\"!fullref\"] = s[\"!ref\"];\n\t\t\ts[\"!ref\"] = encode_range(tmpref);\n\t\t}\n\t}\n\tif(columns.length > 0) s[\"!cols\"] = columns;\n\tif(merges.length > 0) s[\"!merges\"] = merges;\n\treturn s;\n}\n\nfunction write_ws_xml_merges(merges/*:Array*/)/*:string*/ {\n\tif(merges.length === 0) return \"\";\n\tvar o = '';\n\tfor(var i = 0; i != merges.length; ++i) o += '';\n\treturn o + '';\n}\n\n/* 18.3.1.82-3 sheetPr CT_ChartsheetPr / CT_SheetPr */\nfunction parse_ws_xml_sheetpr(sheetPr/*:string*/, s, wb/*:WBWBProps*/, idx/*:number*/) {\n\tvar data = parsexmltag(sheetPr);\n\tif(!wb.Sheets[idx]) wb.Sheets[idx] = {};\n\tif(data.codeName) wb.Sheets[idx].CodeName = unescapexml(utf8read(data.codeName));\n}\nfunction parse_ws_xml_sheetpr2(sheetPr/*:string*/, body/*:string*/, s, wb/*:WBWBProps*/, idx/*:number*/) {\n\tparse_ws_xml_sheetpr(sheetPr.slice(0, sheetPr.indexOf(\">\")), s, wb, idx);\n}\nfunction write_ws_xml_sheetpr(ws, wb, idx, opts, o) {\n\tvar needed = false;\n\tvar props = {}, payload = null;\n\tif(opts.bookType !== 'xlsx' && wb.vbaraw) {\n\t\tvar cname = wb.SheetNames[idx];\n\t\ttry { if(wb.Workbook) cname = wb.Workbook.Sheets[idx].CodeName || cname; } catch(e) {}\n\t\tneeded = true;\n\t\tprops.codeName = utf8write(escapexml(cname));\n\t}\n\n\tif(ws && ws[\"!outline\"]) {\n\t\tvar outlineprops = {summaryBelow:1, summaryRight:1};\n\t\tif(ws[\"!outline\"].above) outlineprops.summaryBelow = 0;\n\t\tif(ws[\"!outline\"].left) outlineprops.summaryRight = 0;\n\t\tpayload = (payload||\"\") + writextag('outlinePr', null, outlineprops);\n\t}\n\n\tif(!needed && !payload) return;\n\to[o.length] = (writextag('sheetPr', payload, props));\n}\n\n/* 18.3.1.85 sheetProtection CT_SheetProtection */\nvar sheetprot_deffalse = [\"objects\", \"scenarios\", \"selectLockedCells\", \"selectUnlockedCells\"];\nvar sheetprot_deftrue = [\n\t\"formatColumns\", \"formatRows\", \"formatCells\",\n\t\"insertColumns\", \"insertRows\", \"insertHyperlinks\",\n\t\"deleteColumns\", \"deleteRows\",\n\t\"sort\", \"autoFilter\", \"pivotTables\"\n];\nfunction write_ws_xml_protection(sp)/*:string*/ {\n\t// algorithmName, hashValue, saltValue, spinCount\n\tvar o = ({sheet:1}/*:any*/);\n\tsheetprot_deffalse.forEach(function(n) { if(sp[n] != null && sp[n]) o[n] = \"1\"; });\n\tsheetprot_deftrue.forEach(function(n) { if(sp[n] != null && !sp[n]) o[n] = \"0\"; });\n\t/* TODO: algorithm */\n\tif(sp.password) o.password = crypto_CreatePasswordVerifier_Method1(sp.password).toString(16).toUpperCase();\n\treturn writextag('sheetProtection', null, o);\n}\n\nfunction parse_ws_xml_hlinks(s, data/*:Array*/, rels) {\n\tvar dense = Array.isArray(s);\n\tfor(var i = 0; i != data.length; ++i) {\n\t\tvar val = parsexmltag(utf8read(data[i]), true);\n\t\tif(!val.ref) return;\n\t\tvar rel = ((rels || {})['!id']||[])[val.id];\n\t\tif(rel) {\n\t\t\tval.Target = rel.Target;\n\t\t\tif(val.location) val.Target += \"#\"+unescapexml(val.location);\n\t\t} else {\n\t\t\tval.Target = \"#\" + unescapexml(val.location);\n\t\t\trel = {Target: val.Target, TargetMode: 'Internal'};\n\t\t}\n\t\tval.Rel = rel;\n\t\tif(val.tooltip) { val.Tooltip = val.tooltip; delete val.tooltip; }\n\t\tvar rng = safe_decode_range(val.ref);\n\t\tfor(var R=rng.s.r;R<=rng.e.r;++R) for(var C=rng.s.c;C<=rng.e.c;++C) {\n\t\t\tvar addr = encode_cell({c:C,r:R});\n\t\t\tif(dense) {\n\t\t\t\tif(!s[R]) s[R] = [];\n\t\t\t\tif(!s[R][C]) s[R][C] = {t:\"z\",v:undefined};\n\t\t\t\ts[R][C].l = val;\n\t\t\t} else {\n\t\t\t\tif(!s[addr]) s[addr] = {t:\"z\",v:undefined};\n\t\t\t\ts[addr].l = val;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction parse_ws_xml_margins(margin) {\n\tvar o = {};\n\t[\"left\", \"right\", \"top\", \"bottom\", \"header\", \"footer\"].forEach(function(k) {\n\t\tif(margin[k]) o[k] = parseFloat(margin[k]);\n\t});\n\treturn o;\n}\nfunction write_ws_xml_margins(margin)/*:string*/ {\n\tdefault_margins(margin);\n\treturn writextag('pageMargins', null, margin);\n}\n\nfunction parse_ws_xml_cols(columns, cols) {\n\tvar seencol = false;\n\tfor(var coli = 0; coli != cols.length; ++coli) {\n\t\tvar coll = parsexmltag(cols[coli], true);\n\t\tif(coll.hidden) coll.hidden = parsexmlbool(coll.hidden);\n\t\tvar colm=parseInt(coll.min, 10)-1, colM=parseInt(coll.max,10)-1;\n\t\tif(coll.outlineLevel) coll.level = (+coll.outlineLevel || 0);\n\t\tdelete coll.min; delete coll.max; coll.width = +coll.width;\n\t\tif(!seencol && coll.width) { seencol = true; find_mdw_colw(coll.width); }\n\t\tprocess_col(coll);\n\t\twhile(colm <= colM) columns[colm++] = dup(coll);\n\t}\n}\nfunction write_ws_xml_cols(ws, cols)/*:string*/ {\n\tvar o = [\"\"], col;\n\tfor(var i = 0; i != cols.length; ++i) {\n\t\tif(!(col = cols[i])) continue;\n\t\to[o.length] = (writextag('col', null, col_obj_w(i, col)));\n\t}\n\to[o.length] = \"\";\n\treturn o.join(\"\");\n}\n\nfunction parse_ws_xml_autofilter(data/*:string*/) {\n\tvar o = { ref: (data.match(/ref=\"([^\"]*)\"/)||[])[1]};\n\treturn o;\n}\nfunction write_ws_xml_autofilter(data, ws, wb, idx)/*:string*/ {\n\tvar ref = typeof data.ref == \"string\" ? data.ref : encode_range(data.ref);\n\tif(!wb.Workbook) wb.Workbook = ({Sheets:[]}/*:any*/);\n\tif(!wb.Workbook.Names) wb.Workbook.Names = [];\n\tvar names/*: Array */ = wb.Workbook.Names;\n\tvar range = decode_range(ref);\n\tif(range.s.r == range.e.r) { range.e.r = decode_range(ws[\"!ref\"]).e.r; ref = encode_range(range); }\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar name = names[i];\n\t\tif(name.Name != '_xlnm._FilterDatabase') continue;\n\t\tif(name.Sheet != idx) continue;\n\t\tname.Ref = \"'\" + wb.SheetNames[idx] + \"'!\" + ref; break;\n\t}\n\tif(i == names.length) names.push({ Name: '_xlnm._FilterDatabase', Sheet: idx, Ref: \"'\" + wb.SheetNames[idx] + \"'!\" + ref });\n\treturn writextag(\"autoFilter\", null, {ref:ref});\n}\n\n/* 18.3.1.88 sheetViews CT_SheetViews */\n/* 18.3.1.87 sheetView CT_SheetView */\nvar sviewregex = /<(?:\\w:)?sheetView(?:[^>a-z][^>]*)?\\/?>/;\nfunction parse_ws_xml_sheetviews(data, wb/*:WBWBProps*/) {\n\tif(!wb.Views) wb.Views = [{}];\n\t(data.match(sviewregex)||[]).forEach(function(r/*:string*/, i/*:number*/) {\n\t\tvar tag = parsexmltag(r);\n\t\t// $FlowIgnore\n\t\tif(!wb.Views[i]) wb.Views[i] = {};\n\t\t// $FlowIgnore\n\t\tif(+tag.zoomScale) wb.Views[i].zoom = +tag.zoomScale;\n\t\t// $FlowIgnore\n\t\tif(parsexmlbool(tag.rightToLeft)) wb.Views[i].RTL = true;\n\t});\n}\nfunction write_ws_xml_sheetviews(ws, opts, idx, wb)/*:string*/ {\n\tvar sview = ({workbookViewId:\"0\"}/*:any*/);\n\t// $FlowIgnore\n\tif((((wb||{}).Workbook||{}).Views||[])[0]) sview.rightToLeft = wb.Workbook.Views[0].RTL ? \"1\" : \"0\";\n\treturn writextag(\"sheetViews\", writextag(\"sheetView\", null, sview), {});\n}\n\nfunction write_ws_xml_cell(cell/*:Cell*/, ref, ws, opts/*::, idx, wb*/)/*:string*/ {\n\tif(cell.c) ws['!comments'].push([ref, cell.c]);\n\tif(cell.v === undefined && typeof cell.f !== \"string\" || cell.t === 'z' && !cell.f) return \"\";\n\tvar vv = \"\";\n\tvar oldt = cell.t, oldv = cell.v;\n\tif(cell.t !== \"z\") switch(cell.t) {\n\t\tcase 'b': vv = cell.v ? \"1\" : \"0\"; break;\n\t\tcase 'n': vv = ''+cell.v; break;\n\t\tcase 'e': vv = BErr[cell.v]; break;\n\t\tcase 'd':\n\t\t\tif(opts && opts.cellDates) vv = parseDate(cell.v, -1).toISOString();\n\t\t\telse {\n\t\t\t\tcell = dup(cell);\n\t\t\t\tcell.t = 'n';\n\t\t\t\tvv = ''+(cell.v = datenum(parseDate(cell.v)));\n\t\t\t}\n\t\t\tif(typeof cell.z === 'undefined') cell.z = table_fmt[14];\n\t\t\tbreak;\n\t\tdefault: vv = cell.v; break;\n\t}\n\tvar v = writetag('v', escapexml(vv)), o = ({r:ref}/*:any*/);\n\t/* TODO: cell style */\n\tvar os = get_cell_style(opts.cellXfs, cell, opts);\n\tif(os !== 0) o.s = os;\n\tswitch(cell.t) {\n\t\tcase 'n': break;\n\t\tcase 'd': o.t = \"d\"; break;\n\t\tcase 'b': o.t = \"b\"; break;\n\t\tcase 'e': o.t = \"e\"; break;\n\t\tcase 'z': break;\n\t\tdefault: if(cell.v == null) { delete cell.t; break; }\n\t\t\tif(cell.v.length > 32767) throw new Error(\"Text length must not exceed 32767 characters\");\n\t\t\tif(opts && opts.bookSST) {\n\t\t\t\tv = writetag('v', ''+get_sst_id(opts.Strings, cell.v, opts.revStrings));\n\t\t\t\to.t = \"s\"; break;\n\t\t\t}\n\t\t\to.t = \"str\"; break;\n\t}\n\tif(cell.t != oldt) { cell.t = oldt; cell.v = oldv; }\n\tif(typeof cell.f == \"string\" && cell.f) {\n\t\tvar ff = cell.F && cell.F.slice(0, ref.length) == ref ? {t:\"array\", ref:cell.F} : null;\n\t\tv = writextag('f', escapexml(cell.f), ff) + (cell.v != null ? v : \"\");\n\t}\n\tif(cell.l) ws['!links'].push([ref, cell.l]);\n\tif(cell.D) o.cm = 1;\n\treturn writextag('c', v, o);\n}\n\nvar parse_ws_xml_data = /*#__PURE__*/(function() {\n\tvar cellregex = /<(?:\\w+:)?c[ \\/>]/, rowregex = /<\\/(?:\\w+:)?row>/;\n\tvar rregex = /r=[\"']([^\"']*)[\"']/, isregex = /<(?:\\w+:)?is>([\\S\\s]*?)<\\/(?:\\w+:)?is>/;\n\tvar refregex = /ref=[\"']([^\"']*)[\"']/;\n\tvar match_v = matchtag(\"v\"), match_f = matchtag(\"f\");\n\nreturn function parse_ws_xml_data(sdata/*:string*/, s, opts, guess/*:Range*/, themes, styles) {\n\tvar ri = 0, x = \"\", cells/*:Array*/ = [], cref/*:?Array*/ = [], idx=0, i=0, cc=0, d=\"\", p/*:any*/;\n\tvar tag, tagr = 0, tagc = 0;\n\tvar sstr, ftag;\n\tvar fmtid = 0, fillid = 0;\n\tvar do_format = Array.isArray(styles.CellXf), cf;\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar sharedf = [];\n\tvar dense = Array.isArray(s);\n\tvar rows/*:Array*/ = [], rowobj = {}, rowrite = false;\n\tvar sheetStubs = !!opts.sheetStubs;\n\tfor(var marr = sdata.split(rowregex), mt = 0, marrlen = marr.length; mt != marrlen; ++mt) {\n\t\tx = marr[mt].trim();\n\t\tvar xlen = x.length;\n\t\tif(xlen === 0) continue;\n\n\t\t/* 18.3.1.73 row CT_Row */\n\t\tvar rstarti = 0;\n\t\touta: for(ri = 0; ri < xlen; ++ri) switch(/*x.charCodeAt(ri)*/x[ri]) {\n\t\t\tcase \">\" /*62*/:\n\t\t\t\tif(/*x.charCodeAt(ri-1) != 47*/x[ri-1] != \"/\") { ++ri; break outa; }\n\t\t\t\tif(opts && opts.cellStyles) {\n\t\t\t\t\t// TODO: avoid duplication\n\t\t\t\t\ttag = parsexmltag(x.slice(rstarti,ri), true);\n\t\t\t\t\ttagr = tag.r != null ? parseInt(tag.r, 10) : tagr+1; tagc = -1;\n\t\t\t\t\tif(opts.sheetRows && opts.sheetRows < tagr) continue;\n\t\t\t\t\trowobj = {}; rowrite = false;\n\t\t\t\t\tif(tag.ht) { rowrite = true; rowobj.hpt = parseFloat(tag.ht); rowobj.hpx = pt2px(rowobj.hpt); }\n\t\t\t\t\tif(tag.hidden == \"1\") { rowrite = true; rowobj.hidden = true; }\n\t\t\t\t\tif(tag.outlineLevel != null) { rowrite = true; rowobj.level = +tag.outlineLevel; }\n\t\t\t\t\tif(rowrite) rows[tagr-1] = rowobj;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"<\" /*60*/: rstarti = ri; break;\n\t\t}\n\t\tif(rstarti >= ri) break;\n\t\ttag = parsexmltag(x.slice(rstarti,ri), true);\n\t\ttagr = tag.r != null ? parseInt(tag.r, 10) : tagr+1; tagc = -1;\n\t\tif(opts.sheetRows && opts.sheetRows < tagr) continue;\n\t\tif(guess.s.r > tagr - 1) guess.s.r = tagr - 1;\n\t\tif(guess.e.r < tagr - 1) guess.e.r = tagr - 1;\n\n\t\tif(opts && opts.cellStyles) {\n\t\t\trowobj = {}; rowrite = false;\n\t\t\tif(tag.ht) { rowrite = true; rowobj.hpt = parseFloat(tag.ht); rowobj.hpx = pt2px(rowobj.hpt); }\n\t\t\tif(tag.hidden == \"1\") { rowrite = true; rowobj.hidden = true; }\n\t\t\tif(tag.outlineLevel != null) { rowrite = true; rowobj.level = +tag.outlineLevel; }\n\t\t\tif(rowrite) rows[tagr-1] = rowobj;\n\t\t}\n\n\t\t/* 18.3.1.4 c CT_Cell */\n\t\tcells = x.slice(ri).split(cellregex);\n\t\tfor(var rslice = 0; rslice != cells.length; ++rslice) if(cells[rslice].trim().charAt(0) != \"<\") break;\n\t\tcells = cells.slice(rslice);\n\t\tfor(ri = 0; ri != cells.length; ++ri) {\n\t\t\tx = cells[ri].trim();\n\t\t\tif(x.length === 0) continue;\n\t\t\tcref = x.match(rregex); idx = ri; i=0; cc=0;\n\t\t\tx = \"\":\"\") + x;\n\t\t\tif(cref != null && cref.length === 2) {\n\t\t\t\tidx = 0; d=cref[1];\n\t\t\t\tfor(i=0; i != d.length; ++i) {\n\t\t\t\t\tif((cc=d.charCodeAt(i)-64) < 1 || cc > 26) break;\n\t\t\t\t\tidx = 26*idx + cc;\n\t\t\t\t}\n\t\t\t\t--idx;\n\t\t\t\ttagc = idx;\n\t\t\t} else ++tagc;\n\t\t\tfor(i = 0; i != x.length; ++i) if(x.charCodeAt(i) === 62) break; ++i;\n\t\t\ttag = parsexmltag(x.slice(0,i), true);\n\t\t\tif(!tag.r) tag.r = encode_cell({r:tagr-1, c:tagc});\n\t\t\td = x.slice(i);\n\t\t\tp = ({t:\"\"}/*:any*/);\n\n\t\t\tif((cref=d.match(match_v))!= null && /*::cref != null && */cref[1] !== '') p.v=unescapexml(cref[1]);\n\t\t\tif(opts.cellFormula) {\n\t\t\t\tif((cref=d.match(match_f))!= null && /*::cref != null && */cref[1] !== '') {\n\t\t\t\t\t/* TODO: match against XLSXFutureFunctions */\n\t\t\t\t\tp.f=unescapexml(utf8read(cref[1])).replace(/\\r\\n/g, \"\\n\");\n\t\t\t\t\tif(!opts.xlfn) p.f = _xlfn(p.f);\n\t\t\t\t\tif(/*::cref != null && cref[0] != null && */cref[0].indexOf('t=\"array\"') > -1) {\n\t\t\t\t\t\tp.F = (d.match(refregex)||[])[1];\n\t\t\t\t\t\tif(p.F.indexOf(\":\") > -1) arrayf.push([safe_decode_range(p.F), p.F]);\n\t\t\t\t\t} else if(/*::cref != null && cref[0] != null && */cref[0].indexOf('t=\"shared\"') > -1) {\n\t\t\t\t\t\t// TODO: parse formula\n\t\t\t\t\t\tftag = parsexmltag(cref[0]);\n\t\t\t\t\t\tvar ___f = unescapexml(utf8read(cref[1]));\n\t\t\t\t\t\tif(!opts.xlfn) ___f = _xlfn(___f);\n\t\t\t\t\t\tsharedf[parseInt(ftag.si, 10)] = [ftag, ___f, tag.r];\n\t\t\t\t\t}\n\t\t\t\t} else if((cref=d.match(/]*\\/>/))) {\n\t\t\t\t\tftag = parsexmltag(cref[0]);\n\t\t\t\t\tif(sharedf[ftag.si]) p.f = shift_formula_xlsx(sharedf[ftag.si][1], sharedf[ftag.si][2]/*[0].ref*/, tag.r);\n\t\t\t\t}\n\t\t\t\t/* TODO: factor out contains logic */\n\t\t\t\tvar _tag = decode_cell(tag.r);\n\t\t\t\tfor(i = 0; i < arrayf.length; ++i)\n\t\t\t\t\tif(_tag.r >= arrayf[i][0].s.r && _tag.r <= arrayf[i][0].e.r)\n\t\t\t\t\t\tif(_tag.c >= arrayf[i][0].s.c && _tag.c <= arrayf[i][0].e.c)\n\t\t\t\t\t\t\tp.F = arrayf[i][1];\n\t\t\t}\n\n\t\t\tif(tag.t == null && p.v === undefined) {\n\t\t\t\tif(p.f || p.F) {\n\t\t\t\t\tp.v = 0; p.t = \"n\";\n\t\t\t\t} else if(!sheetStubs) continue;\n\t\t\t\telse p.t = \"z\";\n\t\t\t}\n\t\t\telse p.t = tag.t || \"n\";\n\t\t\tif(guess.s.c > tagc) guess.s.c = tagc;\n\t\t\tif(guess.e.c < tagc) guess.e.c = tagc;\n\t\t\t/* 18.18.11 t ST_CellType */\n\t\t\tswitch(p.t) {\n\t\t\t\tcase 'n':\n\t\t\t\t\tif(p.v == \"\" || p.v == null) {\n\t\t\t\t\t\tif(!sheetStubs) continue;\n\t\t\t\t\t\tp.t = 'z';\n\t\t\t\t\t} else p.v = parseFloat(p.v);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 's':\n\t\t\t\t\tif(typeof p.v == 'undefined') {\n\t\t\t\t\t\tif(!sheetStubs) continue;\n\t\t\t\t\t\tp.t = 'z';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsstr = strs[parseInt(p.v, 10)];\n\t\t\t\t\t\tp.v = sstr.t;\n\t\t\t\t\t\tp.r = sstr.r;\n\t\t\t\t\t\tif(opts.cellHTML) p.h = sstr.h;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'str':\n\t\t\t\t\tp.t = \"s\";\n\t\t\t\t\tp.v = (p.v!=null) ? utf8read(p.v) : '';\n\t\t\t\t\tif(opts.cellHTML) p.h = escapehtml(p.v);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'inlineStr':\n\t\t\t\t\tcref = d.match(isregex);\n\t\t\t\t\tp.t = 's';\n\t\t\t\t\tif(cref != null && (sstr = parse_si(cref[1]))) {\n\t\t\t\t\t\tp.v = sstr.t;\n\t\t\t\t\t\tif(opts.cellHTML) p.h = sstr.h;\n\t\t\t\t\t} else p.v = \"\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'b': p.v = parsexmlbool(p.v); break;\n\t\t\t\tcase 'd':\n\t\t\t\t\tif(opts.cellDates) p.v = parseDate(p.v, 1);\n\t\t\t\t\telse { p.v = datenum(parseDate(p.v, 1)); p.t = 'n'; }\n\t\t\t\t\tbreak;\n\t\t\t\t/* error string in .w, number in .v */\n\t\t\t\tcase 'e':\n\t\t\t\t\tif(!opts || opts.cellText !== false) p.w = p.v;\n\t\t\t\t\tp.v = RBErr[p.v]; break;\n\t\t\t}\n\t\t\t/* formatting */\n\t\t\tfmtid = fillid = 0;\n\t\t\tcf = null;\n\t\t\tif(do_format && tag.s !== undefined) {\n\t\t\t\tcf = styles.CellXf[tag.s];\n\t\t\t\tif(cf != null) {\n\t\t\t\t\tif(cf.numFmtId != null) fmtid = cf.numFmtId;\n\t\t\t\t\tif(opts.cellStyles) {\n\t\t\t\t\t\tif(cf.fillId != null) fillid = cf.fillId;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tsafe_format(p, fmtid, fillid, opts, themes, styles);\n\t\t\tif(opts.cellDates && do_format && p.t == 'n' && fmt_is_date(table_fmt[fmtid])) { p.t = 'd'; p.v = numdate(p.v); }\n\t\t\tif(tag.cm && opts.xlmeta) {\n\t\t\t\tvar cm = (opts.xlmeta.Cell||[])[+tag.cm-1];\n\t\t\t\tif(cm && cm.type == 'XLDAPR') p.D = true;\n\t\t\t}\n\t\t\tif(dense) {\n\t\t\t\tvar _r = decode_cell(tag.r);\n\t\t\t\tif(!s[_r.r]) s[_r.r] = [];\n\t\t\t\ts[_r.r][_r.c] = p;\n\t\t\t} else s[tag.r] = p;\n\t\t}\n\t}\n\tif(rows.length > 0) s['!rows'] = rows;\n}; })();\n\nfunction write_ws_xml_data(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*//*::, rels*/)/*:string*/ {\n\tvar o/*:Array*/ = [], r/*:Array*/ = [], range = safe_decode_range(ws['!ref']), cell=\"\", ref, rr = \"\", cols/*:Array*/ = [], R=0, C=0, rows = ws['!rows'];\n\tvar dense = Array.isArray(ws);\n\tvar params = ({r:rr}/*:any*/), row/*:RowInfo*/, height = -1;\n\tfor(C = range.s.c; C <= range.e.c; ++C) cols[C] = encode_col(C);\n\tfor(R = range.s.r; R <= range.e.r; ++R) {\n\t\tr = [];\n\t\trr = encode_row(R);\n\t\tfor(C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tref = cols[C] + rr;\n\t\t\tvar _cell = dense ? (ws[R]||[])[C]: ws[ref];\n\t\t\tif(_cell === undefined) continue;\n\t\t\tif((cell = write_ws_xml_cell(_cell, ref, ws, opts, idx, wb)) != null) r.push(cell);\n\t\t}\n\t\tif(r.length > 0 || (rows && rows[R])) {\n\t\t\tparams = ({r:rr}/*:any*/);\n\t\t\tif(rows && rows[R]) {\n\t\t\t\trow = rows[R];\n\t\t\t\tif(row.hidden) params.hidden = 1;\n\t\t\t\theight = -1;\n\t\t\t\tif(row.hpx) height = px2pt(row.hpx);\n\t\t\t\telse if(row.hpt) height = row.hpt;\n\t\t\t\tif(height > -1) { params.ht = height; params.customHeight = 1; }\n\t\t\t\tif(row.level) { params.outlineLevel = row.level; }\n\t\t\t}\n\t\t\to[o.length] = (writextag('row', r.join(\"\"), params));\n\t\t}\n\t}\n\tif(rows) for(; R < rows.length; ++R) {\n\t\tif(rows && rows[R]) {\n\t\t\tparams = ({r:R+1}/*:any*/);\n\t\t\trow = rows[R];\n\t\t\tif(row.hidden) params.hidden = 1;\n\t\t\theight = -1;\n\t\t\tif (row.hpx) height = px2pt(row.hpx);\n\t\t\telse if (row.hpt) height = row.hpt;\n\t\t\tif (height > -1) { params.ht = height; params.customHeight = 1; }\n\t\t\tif (row.level) { params.outlineLevel = row.level; }\n\t\t\to[o.length] = (writextag('row', \"\", params));\n\t\t}\n\t}\n\treturn o.join(\"\");\n}\n\nfunction write_ws_xml(idx/*:number*/, opts, wb/*:Workbook*/, rels)/*:string*/ {\n\tvar o = [XML_HEADER, writextag('worksheet', null, {\n\t\t'xmlns': XMLNS_main[0],\n\t\t'xmlns:r': XMLNS.r\n\t})];\n\tvar s = wb.SheetNames[idx], sidx = 0, rdata = \"\";\n\tvar ws = wb.Sheets[s];\n\tif(ws == null) ws = {};\n\tvar ref = ws['!ref'] || 'A1';\n\tvar range = safe_decode_range(ref);\n\tif(range.e.c > 0x3FFF || range.e.r > 0xFFFFF) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + ref + \" exceeds format limit A1:XFD1048576\");\n\t\trange.e.c = Math.min(range.e.c, 0x3FFF);\n\t\trange.e.r = Math.min(range.e.c, 0xFFFFF);\n\t\tref = encode_range(range);\n\t}\n\tif(!rels) rels = {};\n\tws['!comments'] = [];\n\tvar _drawing = [];\n\n\twrite_ws_xml_sheetpr(ws, wb, idx, opts, o);\n\n\to[o.length] = (writextag('dimension', null, {'ref': ref}));\n\n\to[o.length] = write_ws_xml_sheetviews(ws, opts, idx, wb);\n\n\t/* TODO: store in WB, process styles */\n\tif(opts.sheetFormat) o[o.length] = (writextag('sheetFormatPr', null, {\n\t\tdefaultRowHeight:opts.sheetFormat.defaultRowHeight||'16',\n\t\tbaseColWidth:opts.sheetFormat.baseColWidth||'10',\n\t\toutlineLevelRow:opts.sheetFormat.outlineLevelRow||'7'\n\t}));\n\n\tif(ws['!cols'] != null && ws['!cols'].length > 0) o[o.length] = (write_ws_xml_cols(ws, ws['!cols']));\n\n\to[sidx = o.length] = '';\n\tws['!links'] = [];\n\tif(ws['!ref'] != null) {\n\t\trdata = write_ws_xml_data(ws, opts, idx, wb, rels);\n\t\tif(rdata.length > 0) o[o.length] = (rdata);\n\t}\n\tif(o.length>sidx+1) { o[o.length] = (''); o[sidx]=o[sidx].replace(\"/>\",\">\"); }\n\n\t/* sheetCalcPr */\n\n\tif(ws['!protect']) o[o.length] = write_ws_xml_protection(ws['!protect']);\n\n\t/* protectedRanges */\n\t/* scenarios */\n\n\tif(ws['!autofilter'] != null) o[o.length] = write_ws_xml_autofilter(ws['!autofilter'], ws, wb, idx);\n\n\t/* sortState */\n\t/* dataConsolidate */\n\t/* customSheetViews */\n\n\tif(ws['!merges'] != null && ws['!merges'].length > 0) o[o.length] = (write_ws_xml_merges(ws['!merges']));\n\n\t/* phoneticPr */\n\t/* conditionalFormatting */\n\t/* dataValidations */\n\n\tvar relc = -1, rel, rId = -1;\n\tif(/*::(*/ws['!links']/*::||[])*/.length > 0) {\n\t\to[o.length] = \"\";\n\t\t/*::(*/ws['!links']/*::||[])*/.forEach(function(l) {\n\t\t\tif(!l[1].Target) return;\n\t\t\trel = ({\"ref\":l[0]}/*:any*/);\n\t\t\tif(l[1].Target.charAt(0) != \"#\") {\n\t\t\t\trId = add_rels(rels, -1, escapexml(l[1].Target).replace(/#.*$/, \"\"), RELS.HLINK);\n\t\t\t\trel[\"r:id\"] = \"rId\"+rId;\n\t\t\t}\n\t\t\tif((relc = l[1].Target.indexOf(\"#\")) > -1) rel.location = escapexml(l[1].Target.slice(relc+1));\n\t\t\tif(l[1].Tooltip) rel.tooltip = escapexml(l[1].Tooltip);\n\t\t\to[o.length] = writextag(\"hyperlink\",null,rel);\n\t\t});\n\t\to[o.length] = \"\";\n\t}\n\tdelete ws['!links'];\n\n\t/* printOptions */\n\n\tif(ws['!margins'] != null) o[o.length] = write_ws_xml_margins(ws['!margins']);\n\n\t/* pageSetup */\n\t/* headerFooter */\n\t/* rowBreaks */\n\t/* colBreaks */\n\t/* customProperties */\n\t/* cellWatches */\n\n\tif(!opts || opts.ignoreEC || (opts.ignoreEC == (void 0))) o[o.length] = writetag(\"ignoredErrors\", writextag(\"ignoredError\", null, {numberStoredAsText:1, sqref:ref}));\n\n\t/* smartTags */\n\n\tif(_drawing.length > 0) {\n\t\trId = add_rels(rels, -1, \"../drawings/drawing\" + (idx+1) + \".xml\", RELS.DRAW);\n\t\to[o.length] = writextag(\"drawing\", null, {\"r:id\":\"rId\" + rId});\n\t\tws['!drawing'] = _drawing;\n\t}\n\n\tif(ws['!comments'].length > 0) {\n\t\trId = add_rels(rels, -1, \"../drawings/vmlDrawing\" + (idx+1) + \".vml\", RELS.VML);\n\t\to[o.length] = writextag(\"legacyDrawing\", null, {\"r:id\":\"rId\" + rId});\n\t\tws['!legacy'] = rId;\n\t}\n\n\t/* legacyDrawingHF */\n\t/* picture */\n\t/* oleObjects */\n\t/* controls */\n\t/* webPublishItems */\n\t/* tableParts */\n\t/* extLst */\n\n\tif(o.length>1) { o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSB] 2.4.726 BrtRowHdr */\nfunction parse_BrtRowHdr(data, length) {\n\tvar z = ({}/*:any*/);\n\tvar tgt = data.l + length;\n\tz.r = data.read_shift(4);\n\tdata.l += 4; // TODO: ixfe\n\tvar miyRw = data.read_shift(2);\n\tdata.l += 1; // TODO: top/bot padding\n\tvar flags = data.read_shift(1);\n\tdata.l = tgt;\n\tif(flags & 0x07) z.level = flags & 0x07;\n\tif(flags & 0x10) z.hidden = true;\n\tif(flags & 0x20) z.hpt = miyRw / 20;\n\treturn z;\n}\nfunction write_BrtRowHdr(R/*:number*/, range, ws) {\n\tvar o = new_buf(17+8*16);\n\tvar row = (ws['!rows']||[])[R]||{};\n\to.write_shift(4, R);\n\n\to.write_shift(4, 0); /* TODO: ixfe */\n\n\tvar miyRw = 0x0140;\n\tif(row.hpx) miyRw = px2pt(row.hpx) * 20;\n\telse if(row.hpt) miyRw = row.hpt * 20;\n\to.write_shift(2, miyRw);\n\n\to.write_shift(1, 0); /* top/bot padding */\n\n\tvar flags = 0x0;\n\tif(row.level) flags |= row.level;\n\tif(row.hidden) flags |= 0x10;\n\tif(row.hpx || row.hpt) flags |= 0x20;\n\to.write_shift(1, flags);\n\n\to.write_shift(1, 0); /* phonetic guide */\n\n\t/* [MS-XLSB] 2.5.8 BrtColSpan explains the mechanism */\n\tvar ncolspan = 0, lcs = o.l;\n\to.l += 4;\n\n\tvar caddr = {r:R, c:0};\n\tfor(var i = 0; i < 16; ++i) {\n\t\tif((range.s.c > ((i+1) << 10)) || (range.e.c < (i << 10))) continue;\n\t\tvar first = -1, last = -1;\n\t\tfor(var j = (i<<10); j < ((i+1)<<10); ++j) {\n\t\t\tcaddr.c = j;\n\t\t\tvar cell = Array.isArray(ws) ? (ws[caddr.r]||[])[caddr.c] : ws[encode_cell(caddr)];\n\t\t\tif(cell) { if(first < 0) first = j; last = j; }\n\t\t}\n\t\tif(first < 0) continue;\n\t\t++ncolspan;\n\t\to.write_shift(4, first);\n\t\to.write_shift(4, last);\n\t}\n\n\tvar l = o.l;\n\to.l = lcs;\n\to.write_shift(4, ncolspan);\n\to.l = l;\n\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\nfunction write_row_header(ba, ws, range, R) {\n\tvar o = write_BrtRowHdr(R, range, ws);\n\tif((o.length > 17) || (ws['!rows']||[])[R]) write_record(ba, 0x0000 /* BrtRowHdr */, o);\n}\n\n/* [MS-XLSB] 2.4.820 BrtWsDim */\nvar parse_BrtWsDim = parse_UncheckedRfX;\nvar write_BrtWsDim = write_UncheckedRfX;\n\n/* [MS-XLSB] 2.4.821 BrtWsFmtInfo */\nfunction parse_BrtWsFmtInfo(/*::data, length*/) {\n}\n//function write_BrtWsFmtInfo(ws, o) { }\n\n/* [MS-XLSB] 2.4.823 BrtWsProp */\nfunction parse_BrtWsProp(data, length) {\n\tvar z = {};\n\tvar f = data[data.l]; ++data.l;\n\tz.above = !(f & 0x40);\n\tz.left = !(f & 0x80);\n\t/* TODO: pull flags */\n\tdata.l += 18;\n\tz.name = parse_XLSBCodeName(data, length - 19);\n\treturn z;\n}\nfunction write_BrtWsProp(str, outl, o) {\n\tif(o == null) o = new_buf(84+4*str.length);\n\tvar f = 0xC0;\n\tif(outl) {\n\t\tif(outl.above) f &= ~0x40;\n\t\tif(outl.left) f &= ~0x80;\n\t}\n\to.write_shift(1, f);\n\tfor(var i = 1; i < 3; ++i) o.write_shift(1,0);\n\twrite_BrtColor({auto:1}, o);\n\to.write_shift(-4,-1);\n\to.write_shift(-4,-1);\n\twrite_XLSBCodeName(str, o);\n\treturn o.slice(0, o.l);\n}\n\n/* [MS-XLSB] 2.4.306 BrtCellBlank */\nfunction parse_BrtCellBlank(data) {\n\tvar cell = parse_XLSBCell(data);\n\treturn [cell];\n}\nfunction write_BrtCellBlank(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\treturn write_XLSBCell(ncell, o);\n}\nfunction parse_BrtShortBlank(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\treturn [cell];\n}\nfunction write_BrtShortBlank(cell, ncell, o) {\n\tif(o == null) o = new_buf(4);\n\treturn write_XLSBShortCell(ncell, o);\n}\n\n/* [MS-XLSB] 2.4.307 BrtCellBool */\nfunction parse_BrtCellBool(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar fBool = data.read_shift(1);\n\treturn [cell, fBool, 'b'];\n}\nfunction write_BrtCellBool(cell, ncell, o) {\n\tif(o == null) o = new_buf(9);\n\twrite_XLSBCell(ncell, o);\n\to.write_shift(1, cell.v ? 1 : 0);\n\treturn o;\n}\nfunction parse_BrtShortBool(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar fBool = data.read_shift(1);\n\treturn [cell, fBool, 'b'];\n}\nfunction write_BrtShortBool(cell, ncell, o) {\n\tif(o == null) o = new_buf(5);\n\twrite_XLSBShortCell(ncell, o);\n\to.write_shift(1, cell.v ? 1 : 0);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.308 BrtCellError */\nfunction parse_BrtCellError(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar bError = data.read_shift(1);\n\treturn [cell, bError, 'e'];\n}\nfunction write_BrtCellError(cell, ncell, o) {\n\tif(o == null) o = new_buf(9);\n\twrite_XLSBCell(ncell, o);\n\to.write_shift(1, cell.v);\n\treturn o;\n}\nfunction parse_BrtShortError(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar bError = data.read_shift(1);\n\treturn [cell, bError, 'e'];\n}\nfunction write_BrtShortError(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\twrite_XLSBShortCell(ncell, o);\n\to.write_shift(1, cell.v);\n\to.write_shift(2, 0);\n\to.write_shift(1, 0);\n\treturn o;\n}\n\n\n/* [MS-XLSB] 2.4.311 BrtCellIsst */\nfunction parse_BrtCellIsst(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar isst = data.read_shift(4);\n\treturn [cell, isst, 's'];\n}\nfunction write_BrtCellIsst(cell, ncell, o) {\n\tif(o == null) o = new_buf(12);\n\twrite_XLSBCell(ncell, o);\n\to.write_shift(4, ncell.v);\n\treturn o;\n}\nfunction parse_BrtShortIsst(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar isst = data.read_shift(4);\n\treturn [cell, isst, 's'];\n}\nfunction write_BrtShortIsst(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\twrite_XLSBShortCell(ncell, o);\n\to.write_shift(4, ncell.v);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.313 BrtCellReal */\nfunction parse_BrtCellReal(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_Xnum(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtCellReal(cell, ncell, o) {\n\tif(o == null) o = new_buf(16);\n\twrite_XLSBCell(ncell, o);\n\twrite_Xnum(cell.v, o);\n\treturn o;\n}\nfunction parse_BrtShortReal(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar value = parse_Xnum(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtShortReal(cell, ncell, o) {\n\tif(o == null) o = new_buf(12);\n\twrite_XLSBShortCell(ncell, o);\n\twrite_Xnum(cell.v, o);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.314 BrtCellRk */\nfunction parse_BrtCellRk(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_RkNumber(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtCellRk(cell, ncell, o) {\n\tif(o == null) o = new_buf(12);\n\twrite_XLSBCell(ncell, o);\n\twrite_RkNumber(cell.v, o);\n\treturn o;\n}\nfunction parse_BrtShortRk(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar value = parse_RkNumber(data);\n\treturn [cell, value, 'n'];\n}\nfunction write_BrtShortRk(cell, ncell, o) {\n\tif(o == null) o = new_buf(8);\n\twrite_XLSBShortCell(ncell, o);\n\twrite_RkNumber(cell.v, o);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.323 BrtCellRString */\nfunction parse_BrtCellRString(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_RichStr(data);\n\treturn [cell, value, 'is'];\n}\n\n/* [MS-XLSB] 2.4.317 BrtCellSt */\nfunction parse_BrtCellSt(data) {\n\tvar cell = parse_XLSBCell(data);\n\tvar value = parse_XLWideString(data);\n\treturn [cell, value, 'str'];\n}\nfunction write_BrtCellSt(cell, ncell, o) {\n\tif(o == null) o = new_buf(12 + 4 * cell.v.length);\n\twrite_XLSBCell(ncell, o);\n\twrite_XLWideString(cell.v, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\nfunction parse_BrtShortSt(data) {\n\tvar cell = parse_XLSBShortCell(data);\n\tvar value = parse_XLWideString(data);\n\treturn [cell, value, 'str'];\n}\nfunction write_BrtShortSt(cell, ncell, o) {\n\tif(o == null) o = new_buf(8 + 4 * cell.v.length);\n\twrite_XLSBShortCell(ncell, o);\n\twrite_XLWideString(cell.v, o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.653 BrtFmlaBool */\nfunction parse_BrtFmlaBool(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = data.read_shift(1);\n\tvar o = [cell, value, 'b'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.654 BrtFmlaError */\nfunction parse_BrtFmlaError(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = data.read_shift(1);\n\tvar o = [cell, value, 'e'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.655 BrtFmlaNum */\nfunction parse_BrtFmlaNum(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = parse_Xnum(data);\n\tvar o = [cell, value, 'n'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.656 BrtFmlaString */\nfunction parse_BrtFmlaString(data, length, opts) {\n\tvar end = data.l + length;\n\tvar cell = parse_XLSBCell(data);\n\tcell.r = opts['!row'];\n\tvar value = parse_XLWideString(data);\n\tvar o = [cell, value, 'str'];\n\tif(opts.cellFormula) {\n\t\tdata.l += 2;\n\t\tvar formula = parse_XLSBCellParsedFormula(data, end - data.l, opts);\n\t\to[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */\n\t}\n\telse data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.682 BrtMergeCell */\nvar parse_BrtMergeCell = parse_UncheckedRfX;\nvar write_BrtMergeCell = write_UncheckedRfX;\n/* [MS-XLSB] 2.4.107 BrtBeginMergeCells */\nfunction write_BrtBeginMergeCells(cnt, o) {\n\tif(o == null) o = new_buf(4);\n\to.write_shift(4, cnt);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.662 BrtHLink */\nfunction parse_BrtHLink(data, length/*::, opts*/) {\n\tvar end = data.l + length;\n\tvar rfx = parse_UncheckedRfX(data, 16);\n\tvar relId = parse_XLNullableWideString(data);\n\tvar loc = parse_XLWideString(data);\n\tvar tooltip = parse_XLWideString(data);\n\tvar display = parse_XLWideString(data);\n\tdata.l = end;\n\tvar o = ({rfx:rfx, relId:relId, loc:loc, display:display}/*:any*/);\n\tif(tooltip) o.Tooltip = tooltip;\n\treturn o;\n}\nfunction write_BrtHLink(l, rId) {\n\tvar o = new_buf(50+4*(l[1].Target.length + (l[1].Tooltip || \"\").length));\n\twrite_UncheckedRfX({s:decode_cell(l[0]), e:decode_cell(l[0])}, o);\n\twrite_RelID(\"rId\" + rId, o);\n\tvar locidx = l[1].Target.indexOf(\"#\");\n\tvar loc = locidx == -1 ? \"\" : l[1].Target.slice(locidx+1);\n\twrite_XLWideString(loc || \"\", o);\n\twrite_XLWideString(l[1].Tooltip || \"\", o);\n\twrite_XLWideString(\"\", o);\n\treturn o.slice(0, o.l);\n}\n\n/* [MS-XLSB] 2.4.692 BrtPane */\nfunction parse_BrtPane(/*data, length, opts*/) {\n}\n\n/* [MS-XLSB] 2.4.6 BrtArrFmla */\nfunction parse_BrtArrFmla(data, length, opts) {\n\tvar end = data.l + length;\n\tvar rfx = parse_RfX(data, 16);\n\tvar fAlwaysCalc = data.read_shift(1);\n\tvar o = [rfx]; o[2] = fAlwaysCalc;\n\tif(opts.cellFormula) {\n\t\tvar formula = parse_XLSBArrayParsedFormula(data, end - data.l, opts);\n\t\to[1] = formula;\n\t} else data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.750 BrtShrFmla */\nfunction parse_BrtShrFmla(data, length, opts) {\n\tvar end = data.l + length;\n\tvar rfx = parse_UncheckedRfX(data, 16);\n\tvar o = [rfx];\n\tif(opts.cellFormula) {\n\t\tvar formula = parse_XLSBSharedParsedFormula(data, end - data.l, opts);\n\t\to[1] = formula;\n\t\tdata.l = end;\n\t} else data.l = end;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.323 BrtColInfo */\n/* TODO: once XLS ColInfo is set, combine the functions */\nfunction write_BrtColInfo(C/*:number*/, col, o) {\n\tif(o == null) o = new_buf(18);\n\tvar p = col_obj_w(C, col);\n\to.write_shift(-4, C);\n\to.write_shift(-4, C);\n\to.write_shift(4, (p.width || 10) * 256);\n\to.write_shift(4, 0/*ixfe*/); // style\n\tvar flags = 0;\n\tif(col.hidden) flags |= 0x01;\n\tif(typeof p.width == 'number') flags |= 0x02;\n\tif(col.level) flags |= (col.level << 8);\n\to.write_shift(2, flags); // bit flag\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.678 BrtMargins */\nvar BrtMarginKeys = [\"left\",\"right\",\"top\",\"bottom\",\"header\",\"footer\"];\nfunction parse_BrtMargins(data/*::, length, opts*/)/*:Margins*/ {\n\tvar margins = ({}/*:any*/);\n\tBrtMarginKeys.forEach(function(k) { margins[k] = parse_Xnum(data, 8); });\n\treturn margins;\n}\nfunction write_BrtMargins(margins/*:Margins*/, o) {\n\tif(o == null) o = new_buf(6*8);\n\tdefault_margins(margins);\n\tBrtMarginKeys.forEach(function(k) { write_Xnum((margins/*:any*/)[k], o); });\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.299 BrtBeginWsView */\nfunction parse_BrtBeginWsView(data/*::, length, opts*/) {\n\tvar f = data.read_shift(2);\n\tdata.l += 28;\n\treturn { RTL: f & 0x20 };\n}\nfunction write_BrtBeginWsView(ws, Workbook, o) {\n\tif(o == null) o = new_buf(30);\n\tvar f = 0x39c;\n\tif((((Workbook||{}).Views||[])[0]||{}).RTL) f |= 0x20;\n\to.write_shift(2, f); // bit flag\n\to.write_shift(4, 0);\n\to.write_shift(4, 0); // view first row\n\to.write_shift(4, 0); // view first col\n\to.write_shift(1, 0); // gridline color ICV\n\to.write_shift(1, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 100); // zoom scale\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(2, 0);\n\to.write_shift(4, 0); // workbook view id\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.309 BrtCellIgnoreEC */\nfunction write_BrtCellIgnoreEC(ref) {\n\tvar o = new_buf(24);\n\to.write_shift(4, 4);\n\to.write_shift(4, 1);\n\twrite_UncheckedRfX(ref, o);\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.748 BrtSheetProtection */\nfunction write_BrtSheetProtection(sp, o) {\n\tif(o == null) o = new_buf(16*4+2);\n\to.write_shift(2, sp.password ? crypto_CreatePasswordVerifier_Method1(sp.password) : 0);\n\to.write_shift(4, 1); // this record should not be written if no protection\n\t[\n\t\t[\"objects\", false], // fObjects\n\t\t[\"scenarios\", false], // fScenarios\n\t\t[\"formatCells\", true], // fFormatCells\n\t\t[\"formatColumns\", true], // fFormatColumns\n\t\t[\"formatRows\", true], // fFormatRows\n\t\t[\"insertColumns\", true], // fInsertColumns\n\t\t[\"insertRows\", true], // fInsertRows\n\t\t[\"insertHyperlinks\", true], // fInsertHyperlinks\n\t\t[\"deleteColumns\", true], // fDeleteColumns\n\t\t[\"deleteRows\", true], // fDeleteRows\n\t\t[\"selectLockedCells\", false], // fSelLockedCells\n\t\t[\"sort\", true], // fSort\n\t\t[\"autoFilter\", true], // fAutoFilter\n\t\t[\"pivotTables\", true], // fPivotTables\n\t\t[\"selectUnlockedCells\", false] // fSelUnlockedCells\n\t].forEach(function(n) {\n\t\t/*:: if(o == null) throw \"unreachable\"; */\n\t\tif(n[1]) o.write_shift(4, sp[n[0]] != null && !sp[n[0]] ? 1 : 0);\n\t\telse o.write_shift(4, sp[n[0]] != null && sp[n[0]] ? 0 : 1);\n\t});\n\treturn o;\n}\n\nfunction parse_BrtDVal(/*data, length, opts*/) {\n}\nfunction parse_BrtDVal14(/*data, length, opts*/) {\n}\n/* [MS-XLSB] 2.1.7.61 Worksheet */\nfunction parse_ws_bin(data, _opts, idx, rels, wb/*:WBWBProps*/, themes, styles)/*:Worksheet*/ {\n\tif(!data) return data;\n\tvar opts = _opts || {};\n\tif(!rels) rels = {'!id':{}};\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\tvar s/*:Worksheet*/ = (opts.dense ? [] : {});\n\n\tvar ref;\n\tvar refguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\n\tvar state/*:Array*/ = [];\n\tvar pass = false, end = false;\n\tvar row, p, cf, R, C, addr, sstr, rr, cell/*:Cell*/;\n\tvar merges/*:Array*/ = [];\n\topts.biff = 12;\n\topts['!row'] = 0;\n\n\tvar ai = 0, af = false;\n\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar sharedf = {};\n\tvar supbooks = opts.supbooks || /*::(*/wb/*:: :any)*/.supbooks || ([[]]/*:any*/);\n\tsupbooks.sharedf = sharedf;\n\tsupbooks.arrayf = arrayf;\n\tsupbooks.SheetNames = wb.SheetNames || wb.Sheets.map(function(x) { return x.name; });\n\tif(!opts.supbooks) {\n\t\topts.supbooks = supbooks;\n\t\tif(wb.Names) for(var i = 0; i < wb.Names.length; ++i) supbooks[0][i+1] = wb.Names[i];\n\t}\n\n\tvar colinfo/*:Array*/ = [], rowinfo/*:Array*/ = [];\n\tvar seencol = false;\n\n\tXLSBRecordEnum[0x0010] = { n:\"BrtShortReal\", f:parse_BrtShortReal };\n\n\tvar cm, vm;\n\n\trecordhopper(data, function ws_parse(val, RR, RT) {\n\t\tif(end) return;\n\t\tswitch(RT) {\n\t\t\tcase 0x0094: /* 'BrtWsDim' */\n\t\t\t\tref = val; break;\n\t\t\tcase 0x0000: /* 'BrtRowHdr' */\n\t\t\t\trow = val;\n\t\t\t\tif(opts.sheetRows && opts.sheetRows <= row.r) end=true;\n\t\t\t\trr = encode_row(R = row.r);\n\t\t\t\topts['!row'] = row.r;\n\t\t\t\tif(val.hidden || val.hpt || val.level != null) {\n\t\t\t\t\tif(val.hpt) val.hpx = pt2px(val.hpt);\n\t\t\t\t\trowinfo[val.r] = val;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0002: /* 'BrtCellRk' */\n\t\t\tcase 0x0003: /* 'BrtCellError' */\n\t\t\tcase 0x0004: /* 'BrtCellBool' */\n\t\t\tcase 0x0005: /* 'BrtCellReal' */\n\t\t\tcase 0x0006: /* 'BrtCellSt' */\n\t\t\tcase 0x0007: /* 'BrtCellIsst' */\n\t\t\tcase 0x0008: /* 'BrtFmlaString' */\n\t\t\tcase 0x0009: /* 'BrtFmlaNum' */\n\t\t\tcase 0x000A: /* 'BrtFmlaBool' */\n\t\t\tcase 0x000B: /* 'BrtFmlaError' */\n\t\t\tcase 0x000D: /* 'BrtShortRk' */\n\t\t\tcase 0x000E: /* 'BrtShortError' */\n\t\t\tcase 0x000F: /* 'BrtShortBool' */\n\t\t\tcase 0x0010: /* 'BrtShortReal' */\n\t\t\tcase 0x0011: /* 'BrtShortSt' */\n\t\t\tcase 0x0012: /* 'BrtShortIsst' */\n\t\t\tcase 0x003E: /* 'BrtCellRString' */\n\t\t\t\tp = ({t:val[2]}/*:any*/);\n\t\t\t\tswitch(val[2]) {\n\t\t\t\t\tcase 'n': p.v = val[1]; break;\n\t\t\t\t\tcase 's': sstr = strs[val[1]]; p.v = sstr.t; p.r = sstr.r; break;\n\t\t\t\t\tcase 'b': p.v = val[1] ? true : false; break;\n\t\t\t\t\tcase 'e': p.v = val[1]; if(opts.cellText !== false) p.w = BErr[p.v]; break;\n\t\t\t\t\tcase 'str': p.t = 's'; p.v = val[1]; break;\n\t\t\t\t\tcase 'is': p.t = 's'; p.v = val[1].t; break;\n\t\t\t\t}\n\t\t\t\tif((cf = styles.CellXf[val[0].iStyleRef])) safe_format(p,cf.numFmtId,null,opts, themes, styles);\n\t\t\t\tC = val[0].c == -1 ? C + 1 : val[0].c;\n\t\t\t\tif(opts.dense) { if(!s[R]) s[R] = []; s[R][C] = p; }\n\t\t\t\telse s[encode_col(C) + rr] = p;\n\t\t\t\tif(opts.cellFormula) {\n\t\t\t\t\taf = false;\n\t\t\t\t\tfor(ai = 0; ai < arrayf.length; ++ai) {\n\t\t\t\t\t\tvar aii = arrayf[ai];\n\t\t\t\t\t\tif(row.r >= aii[0].s.r && row.r <= aii[0].e.r)\n\t\t\t\t\t\t\tif(C >= aii[0].s.c && C <= aii[0].e.c) {\n\t\t\t\t\t\t\t\tp.F = encode_range(aii[0]); af = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif(!af && val.length > 3) p.f = val[3];\n\t\t\t\t}\n\n\t\t\t\tif(refguess.s.r > row.r) refguess.s.r = row.r;\n\t\t\t\tif(refguess.s.c > C) refguess.s.c = C;\n\t\t\t\tif(refguess.e.r < row.r) refguess.e.r = row.r;\n\t\t\t\tif(refguess.e.c < C) refguess.e.c = C;\n\t\t\t\tif(opts.cellDates && cf && p.t == 'n' && fmt_is_date(table_fmt[cf.numFmtId])) {\n\t\t\t\t\tvar _d = SSF_parse_date_code(p.v); if(_d) { p.t = 'd'; p.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); }\n\t\t\t\t}\n\t\t\t\tif(cm) {\n\t\t\t\t\tif(cm.type == 'XLDAPR') p.D = true;\n\t\t\t\t\tcm = void 0;\n\t\t\t\t}\n\t\t\t\tif(vm) vm = void 0;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0001: /* 'BrtCellBlank' */\n\t\t\tcase 0x000C: /* 'BrtShortBlank' */\n\t\t\t\tif(!opts.sheetStubs || pass) break;\n\t\t\t\tp = ({t:'z',v:void 0}/*:any*/);\n\t\t\t\tC = val[0].c == -1 ? C + 1 : val[0].c;\n\t\t\t\tif(opts.dense) { if(!s[R]) s[R] = []; s[R][C] = p; }\n\t\t\t\telse s[encode_col(C) + rr] = p;\n\t\t\t\tif(refguess.s.r > row.r) refguess.s.r = row.r;\n\t\t\t\tif(refguess.s.c > C) refguess.s.c = C;\n\t\t\t\tif(refguess.e.r < row.r) refguess.e.r = row.r;\n\t\t\t\tif(refguess.e.c < C) refguess.e.c = C;\n\t\t\t\tif(cm) {\n\t\t\t\t\tif(cm.type == 'XLDAPR') p.D = true;\n\t\t\t\t\tcm = void 0;\n\t\t\t\t}\n\t\t\t\tif(vm) vm = void 0;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x00B0: /* 'BrtMergeCell' */\n\t\t\t\tmerges.push(val); break;\n\n\t\t\tcase 0x0031: { /* 'BrtCellMeta' */\n\t\t\t\tcm = ((opts.xlmeta||{}).Cell||[])[val-1];\n\t\t\t} break;\n\n\t\t\tcase 0x01EE: /* 'BrtHLink' */\n\t\t\t\tvar rel = rels['!id'][val.relId];\n\t\t\t\tif(rel) {\n\t\t\t\t\tval.Target = rel.Target;\n\t\t\t\t\tif(val.loc) val.Target += \"#\"+val.loc;\n\t\t\t\t\tval.Rel = rel;\n\t\t\t\t} else if(val.relId == '') {\n\t\t\t\t\tval.Target = \"#\" + val.loc;\n\t\t\t\t}\n\t\t\t\tfor(R=val.rfx.s.r;R<=val.rfx.e.r;++R) for(C=val.rfx.s.c;C<=val.rfx.e.c;++C) {\n\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\tif(!s[R]) s[R] = [];\n\t\t\t\t\t\tif(!s[R][C]) s[R][C] = {t:'z',v:undefined};\n\t\t\t\t\t\ts[R][C].l = val;\n\t\t\t\t\t} else {\n\t\t\t\t\t\taddr = encode_cell({c:C,r:R});\n\t\t\t\t\t\tif(!s[addr]) s[addr] = {t:'z',v:undefined};\n\t\t\t\t\t\ts[addr].l = val;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 0x01AA: /* 'BrtArrFmla' */\n\t\t\t\tif(!opts.cellFormula) break;\n\t\t\t\tarrayf.push(val);\n\t\t\t\tcell = ((opts.dense ? s[R][C] : s[encode_col(C) + rr])/*:any*/);\n\t\t\t\tcell.f = stringify_formula(val[1], refguess, {r:row.r, c:C}, supbooks, opts);\n\t\t\t\tcell.F = encode_range(val[0]);\n\t\t\t\tbreak;\n\t\t\tcase 0x01AB: /* 'BrtShrFmla' */\n\t\t\t\tif(!opts.cellFormula) break;\n\t\t\t\tsharedf[encode_cell(val[0].s)] = val[1];\n\t\t\t\tcell = (opts.dense ? s[R][C] : s[encode_col(C) + rr]);\n\t\t\t\tcell.f = stringify_formula(val[1], refguess, {r:row.r, c:C}, supbooks, opts);\n\t\t\t\tbreak;\n\n\t\t\t/* identical to 'ColInfo' in XLS */\n\t\t\tcase 0x003C: /* 'BrtColInfo' */\n\t\t\t\tif(!opts.cellStyles) break;\n\t\t\t\twhile(val.e >= val.s) {\n\t\t\t\t\tcolinfo[val.e--] = { width: val.w/256, hidden: !!(val.flags & 0x01), level: val.level };\n\t\t\t\t\tif(!seencol) { seencol = true; find_mdw_colw(val.w/256); }\n\t\t\t\t\tprocess_col(colinfo[val.e+1]);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 0x00A1: /* 'BrtBeginAFilter' */\n\t\t\t\ts['!autofilter'] = { ref:encode_range(val) };\n\t\t\t\tbreak;\n\n\t\t\tcase 0x01DC: /* 'BrtMargins' */\n\t\t\t\ts['!margins'] = val;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0093: /* 'BrtWsProp' */\n\t\t\t\tif(!wb.Sheets[idx]) wb.Sheets[idx] = {};\n\t\t\t\tif(val.name) wb.Sheets[idx].CodeName = val.name;\n\t\t\t\tif(val.above || val.left) s['!outline'] = { above: val.above, left: val.left };\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0089: /* 'BrtBeginWsView' */\n\t\t\t\tif(!wb.Views) wb.Views = [{}];\n\t\t\t\tif(!wb.Views[0]) wb.Views[0] = {};\n\t\t\t\tif(val.RTL) wb.Views[0].RTL = true;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x01E5: /* 'BrtWsFmtInfo' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0040: /* 'BrtDVal' */\n\t\t\tcase 0x041D: /* 'BrtDVal14' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0097: /* 'BrtPane' */\n\t\t\t\tbreak;\n\t\t\tcase 0x0098: /* 'BrtSel' */\n\t\t\tcase 0x00AF: /* 'BrtAFilterDateGroupItem' */\n\t\t\tcase 0x0284: /* 'BrtActiveX' */\n\t\t\tcase 0x0271: /* 'BrtBigName' */\n\t\t\tcase 0x0232: /* 'BrtBkHim' */\n\t\t\tcase 0x018C: /* 'BrtBrk' */\n\t\t\tcase 0x0458: /* 'BrtCFIcon' */\n\t\t\tcase 0x047A: /* 'BrtCFRuleExt' */\n\t\t\tcase 0x01D7: /* 'BrtCFVO' */\n\t\t\tcase 0x041A: /* 'BrtCFVO14' */\n\t\t\tcase 0x0289: /* 'BrtCellIgnoreEC' */\n\t\t\tcase 0x0451: /* 'BrtCellIgnoreEC14' */\n\t\t\tcase 0x024D: /* 'BrtCellSmartTagProperty' */\n\t\t\tcase 0x025F: /* 'BrtCellWatch' */\n\t\t\tcase 0x0234: /* 'BrtColor' */\n\t\t\tcase 0x041F: /* 'BrtColor14' */\n\t\t\tcase 0x00A8: /* 'BrtColorFilter' */\n\t\t\tcase 0x00AE: /* 'BrtCustomFilter' */\n\t\t\tcase 0x049C: /* 'BrtCustomFilter14' */\n\t\t\tcase 0x01F3: /* 'BrtDRef' */\n\t\t\tcase 0x01FB: /* 'BrtDXF' */\n\t\t\tcase 0x0226: /* 'BrtDrawing' */\n\t\t\tcase 0x00AB: /* 'BrtDynamicFilter' */\n\t\t\tcase 0x00A7: /* 'BrtFilter' */\n\t\t\tcase 0x0499: /* 'BrtFilter14' */\n\t\t\tcase 0x00A9: /* 'BrtIconFilter' */\n\t\t\tcase 0x049D: /* 'BrtIconFilter14' */\n\t\t\tcase 0x0227: /* 'BrtLegacyDrawing' */\n\t\t\tcase 0x0228: /* 'BrtLegacyDrawingHF' */\n\t\t\tcase 0x0295: /* 'BrtListPart' */\n\t\t\tcase 0x027F: /* 'BrtOleObject' */\n\t\t\tcase 0x01DE: /* 'BrtPageSetup' */\n\t\t\tcase 0x0219: /* 'BrtPhoneticInfo' */\n\t\t\tcase 0x01DD: /* 'BrtPrintOptions' */\n\t\t\tcase 0x0218: /* 'BrtRangeProtection' */\n\t\t\tcase 0x044F: /* 'BrtRangeProtection14' */\n\t\t\tcase 0x02A8: /* 'BrtRangeProtectionIso' */\n\t\t\tcase 0x0450: /* 'BrtRangeProtectionIso14' */\n\t\t\tcase 0x0400: /* 'BrtRwDescent' */\n\t\t\tcase 0x0297: /* 'BrtSheetCalcProp' */\n\t\t\tcase 0x0217: /* 'BrtSheetProtection' */\n\t\t\tcase 0x02A6: /* 'BrtSheetProtectionIso' */\n\t\t\tcase 0x01F8: /* 'BrtSlc' */\n\t\t\tcase 0x0413: /* 'BrtSparkline' */\n\t\t\tcase 0x01AC: /* 'BrtTable' */\n\t\t\tcase 0x00AA: /* 'BrtTop10Filter' */\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\tcase 0x0032: /* 'BrtValueMeta' */\n\t\t\tcase 0x0816: /* 'BrtWebExtension' */\n\t\t\tcase 0x0415: /* 'BrtWsFmtInfoEx14' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */\n\t\t\t\tstate.push(RT); pass = true; break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */\n\t\t\t\tstate.pop(); pass = false; break;\n\n\t\t\tdefault:\n\t\t\t\tif(RR.T){/* empty */}\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t}, opts);\n\n\tdelete opts.supbooks;\n\tdelete opts['!row'];\n\n\tif(!s[\"!ref\"] && (refguess.s.r < 2000000 || ref && (ref.e.r > 0 || ref.e.c > 0 || ref.s.r > 0 || ref.s.c > 0))) s[\"!ref\"] = encode_range(ref || refguess);\n\tif(opts.sheetRows && s[\"!ref\"]) {\n\t\tvar tmpref = safe_decode_range(s[\"!ref\"]);\n\t\tif(opts.sheetRows <= +tmpref.e.r) {\n\t\t\ttmpref.e.r = opts.sheetRows - 1;\n\t\t\tif(tmpref.e.r > refguess.e.r) tmpref.e.r = refguess.e.r;\n\t\t\tif(tmpref.e.r < tmpref.s.r) tmpref.s.r = tmpref.e.r;\n\t\t\tif(tmpref.e.c > refguess.e.c) tmpref.e.c = refguess.e.c;\n\t\t\tif(tmpref.e.c < tmpref.s.c) tmpref.s.c = tmpref.e.c;\n\t\t\ts[\"!fullref\"] = s[\"!ref\"];\n\t\t\ts[\"!ref\"] = encode_range(tmpref);\n\t\t}\n\t}\n\tif(merges.length > 0) s[\"!merges\"] = merges;\n\tif(colinfo.length > 0) s[\"!cols\"] = colinfo;\n\tif(rowinfo.length > 0) s[\"!rows\"] = rowinfo;\n\treturn s;\n}\n\n/* TODO: something useful -- this is a stub */\nfunction write_ws_bin_cell(ba/*:BufArray*/, cell/*:Cell*/, R/*:number*/, C/*:number*/, opts, ws/*:Worksheet*/, last_seen/*:boolean*/)/*:boolean*/ {\n\tif(cell.v === undefined) return false;\n\tvar vv = \"\";\n\tswitch(cell.t) {\n\t\tcase 'b': vv = cell.v ? \"1\" : \"0\"; break;\n\t\tcase 'd': // no BrtCellDate :(\n\t\t\tcell = dup(cell);\n\t\t\tcell.z = cell.z || table_fmt[14];\n\t\t\tcell.v = datenum(parseDate(cell.v)); cell.t = 'n';\n\t\t\tbreak;\n\t\t/* falls through */\n\t\tcase 'n': case 'e': vv = ''+cell.v; break;\n\t\tdefault: vv = cell.v; break;\n\t}\n\tvar o/*:any*/ = ({r:R, c:C}/*:any*/);\n\t/* TODO: cell style */\n\to.s = get_cell_style(opts.cellXfs, cell, opts);\n\tif(cell.l) ws['!links'].push([encode_cell(o), cell.l]);\n\tif(cell.c) ws['!comments'].push([encode_cell(o), cell.c]);\n\tswitch(cell.t) {\n\t\tcase 's': case 'str':\n\t\t\tif(opts.bookSST) {\n\t\t\t\tvv = get_sst_id(opts.Strings, (cell.v/*:any*/), opts.revStrings);\n\t\t\t\to.t = \"s\"; o.v = vv;\n\t\t\t\tif(last_seen) write_record(ba, 0x0012 /* BrtShortIsst */, write_BrtShortIsst(cell, o));\n\t\t\t\telse write_record(ba, 0x0007 /* BrtCellIsst */, write_BrtCellIsst(cell, o));\n\t\t\t} else {\n\t\t\t\to.t = \"str\";\n\t\t\t\tif(last_seen) write_record(ba, 0x0011 /* BrtShortSt */, write_BrtShortSt(cell, o));\n\t\t\t\telse write_record(ba, 0x0006 /* BrtCellSt */, write_BrtCellSt(cell, o));\n\t\t\t}\n\t\t\treturn true;\n\t\tcase 'n':\n\t\t\t/* TODO: determine threshold for Real vs RK */\n\t\t\tif(cell.v == (cell.v | 0) && cell.v > -1000 && cell.v < 1000) {\n\t\t\t\tif(last_seen) write_record(ba, 0x000D /* BrtShortRk */, write_BrtShortRk(cell, o));\n\t\t\t\telse write_record(ba, 0x0002 /* BrtCellRk */, write_BrtCellRk(cell, o));\n\t\t\t} else {\n\t\t\t\tif(last_seen) write_record(ba, 0x0010 /* BrtShortReal */, write_BrtShortReal(cell, o));\n\t\t\t\telse write_record(ba, 0x0005 /* BrtCellReal */, write_BrtCellReal(cell, o));\n\t\t\t} return true;\n\t\tcase 'b':\n\t\t\to.t = \"b\";\n\t\t\tif(last_seen) write_record(ba, 0x000F /* BrtShortBool */, write_BrtShortBool(cell, o));\n\t\t\telse write_record(ba, 0x0004 /* BrtCellBool */, write_BrtCellBool(cell, o));\n\t\t\treturn true;\n\t\tcase 'e':\n\t\t\to.t = \"e\";\n\t\t\tif(last_seen) write_record(ba, 0x000E /* BrtShortError */, write_BrtShortError(cell, o));\n\t\t\telse write_record(ba, 0x0003 /* BrtCellError */, write_BrtCellError(cell, o));\n\t\t\treturn true;\n\t}\n\tif(last_seen) write_record(ba, 0x000C /* BrtShortBlank */, write_BrtShortBlank(cell, o));\n\telse write_record(ba, 0x0001 /* BrtCellBlank */, write_BrtCellBlank(cell, o));\n\treturn true;\n}\n\nfunction write_CELLTABLE(ba, ws/*:Worksheet*/, idx/*:number*/, opts/*::, wb:Workbook*/) {\n\tvar range = safe_decode_range(ws['!ref'] || \"A1\"), ref, rr = \"\", cols/*:Array*/ = [];\n\twrite_record(ba, 0x0091 /* BrtBeginSheetData */);\n\tvar dense = Array.isArray(ws);\n\tvar cap = range.e.r;\n\tif(ws['!rows']) cap = Math.max(range.e.r, ws['!rows'].length - 1);\n\tfor(var R = range.s.r; R <= cap; ++R) {\n\t\trr = encode_row(R);\n\t\t/* [ACCELLTABLE] */\n\t\t/* BrtRowHdr */\n\t\twrite_row_header(ba, ws, range, R);\n\t\tvar last_seen = false;\n\t\tif(R <= range.e.r) for(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\t/* *16384CELL */\n\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\tref = cols[C] + rr;\n\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\tif(!cell) { last_seen = false; continue; }\n\t\t\t/* write cell */\n\t\t\tlast_seen = write_ws_bin_cell(ba, cell, R, C, opts, ws, last_seen);\n\t\t}\n\t}\n\twrite_record(ba, 0x0092 /* BrtEndSheetData */);\n}\n\nfunction write_MERGECELLS(ba, ws/*:Worksheet*/) {\n\tif(!ws || !ws['!merges']) return;\n\twrite_record(ba, 0x00B1 /* BrtBeginMergeCells */, write_BrtBeginMergeCells(ws['!merges'].length));\n\tws['!merges'].forEach(function(m) { write_record(ba, 0x00B0 /* BrtMergeCell */, write_BrtMergeCell(m)); });\n\twrite_record(ba, 0x00B2 /* BrtEndMergeCells */);\n}\n\nfunction write_COLINFOS(ba, ws/*:Worksheet*//*::, idx:number, opts, wb:Workbook*/) {\n\tif(!ws || !ws['!cols']) return;\n\twrite_record(ba, 0x0186 /* BrtBeginColInfos */);\n\tws['!cols'].forEach(function(m, i) { if(m) write_record(ba, 0x003C /* 'BrtColInfo' */, write_BrtColInfo(i, m)); });\n\twrite_record(ba, 0x0187 /* BrtEndColInfos */);\n}\n\nfunction write_IGNOREECS(ba, ws/*:Worksheet*/) {\n\tif(!ws || !ws['!ref']) return;\n\twrite_record(ba, 0x0288 /* BrtBeginCellIgnoreECs */);\n\twrite_record(ba, 0x0289 /* BrtCellIgnoreEC */, write_BrtCellIgnoreEC(safe_decode_range(ws['!ref'])));\n\twrite_record(ba, 0x028A /* BrtEndCellIgnoreECs */);\n}\n\nfunction write_HLINKS(ba, ws/*:Worksheet*/, rels) {\n\t/* *BrtHLink */\n\tws['!links'].forEach(function(l) {\n\t\tif(!l[1].Target) return;\n\t\tvar rId = add_rels(rels, -1, l[1].Target.replace(/#.*$/, \"\"), RELS.HLINK);\n\t\twrite_record(ba, 0x01EE /* BrtHLink */, write_BrtHLink(l, rId));\n\t});\n\tdelete ws['!links'];\n}\nfunction write_LEGACYDRAWING(ba, ws/*:Worksheet*/, idx/*:number*/, rels) {\n\t/* [BrtLegacyDrawing] */\n\tif(ws['!comments'].length > 0) {\n\t\tvar rId = add_rels(rels, -1, \"../drawings/vmlDrawing\" + (idx+1) + \".vml\", RELS.VML);\n\t\twrite_record(ba, 0x0227 /* BrtLegacyDrawing */, write_RelID(\"rId\" + rId));\n\t\tws['!legacy'] = rId;\n\t}\n}\n\nfunction write_AUTOFILTER(ba, ws, wb, idx) {\n\tif(!ws['!autofilter']) return;\n\tvar data = ws['!autofilter'];\n\tvar ref = typeof data.ref === \"string\" ? data.ref : encode_range(data.ref);\n\n\t/* Update FilterDatabase defined name for the worksheet */\n\tif(!wb.Workbook) wb.Workbook = ({Sheets:[]}/*:any*/);\n\tif(!wb.Workbook.Names) wb.Workbook.Names = [];\n\tvar names/*: Array */ = wb.Workbook.Names;\n\tvar range = decode_range(ref);\n\tif(range.s.r == range.e.r) { range.e.r = decode_range(ws[\"!ref\"]).e.r; ref = encode_range(range); }\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar name = names[i];\n\t\tif(name.Name != '_xlnm._FilterDatabase') continue;\n\t\tif(name.Sheet != idx) continue;\n\t\tname.Ref = \"'\" + wb.SheetNames[idx] + \"'!\" + ref; break;\n\t}\n\tif(i == names.length) names.push({ Name: '_xlnm._FilterDatabase', Sheet: idx, Ref: \"'\" + wb.SheetNames[idx] + \"'!\" + ref });\n\n\twrite_record(ba, 0x00A1 /* BrtBeginAFilter */, write_UncheckedRfX(safe_decode_range(ref)));\n\t/* *FILTERCOLUMN */\n\t/* [SORTSTATE] */\n\t/* BrtEndAFilter */\n\twrite_record(ba, 0x00A2 /* BrtEndAFilter */);\n}\n\nfunction write_WSVIEWS2(ba, ws, Workbook) {\n\twrite_record(ba, 0x0085 /* BrtBeginWsViews */);\n\t{ /* 1*WSVIEW2 */\n\t\t/* [ACUID] */\n\t\twrite_record(ba, 0x0089 /* BrtBeginWsView */, write_BrtBeginWsView(ws, Workbook));\n\t\t/* [BrtPane] */\n\t\t/* *4BrtSel */\n\t\t/* *4SXSELECT */\n\t\t/* *FRT */\n\t\twrite_record(ba, 0x008A /* BrtEndWsView */);\n\t}\n\t/* *FRT */\n\twrite_record(ba, 0x0086 /* BrtEndWsViews */);\n}\n\nfunction write_WSFMTINFO(/*::ba, ws*/) {\n\t/* [ACWSFMTINFO] */\n\t// write_record(ba, 0x01E5 /* BrtWsFmtInfo */, write_BrtWsFmtInfo(ws));\n}\n\nfunction write_SHEETPROTECT(ba, ws) {\n\tif(!ws['!protect']) return;\n\t/* [BrtSheetProtectionIso] */\n\twrite_record(ba, 0x0217 /* BrtSheetProtection */, write_BrtSheetProtection(ws['!protect']));\n}\n\nfunction write_ws_bin(idx/*:number*/, opts, wb/*:Workbook*/, rels) {\n\tvar ba = buf_array();\n\tvar s = wb.SheetNames[idx], ws = wb.Sheets[s] || {};\n\tvar c/*:string*/ = s; try { if(wb && wb.Workbook) c = wb.Workbook.Sheets[idx].CodeName || c; } catch(e) {}\n\tvar r = safe_decode_range(ws['!ref'] || \"A1\");\n\tif(r.e.c > 0x3FFF || r.e.r > 0xFFFFF) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + (ws['!ref'] || \"A1\") + \" exceeds format limit A1:XFD1048576\");\n\t\tr.e.c = Math.min(r.e.c, 0x3FFF);\n\t\tr.e.r = Math.min(r.e.c, 0xFFFFF);\n\t}\n\tws['!links'] = [];\n\t/* passed back to write_zip and removed there */\n\tws['!comments'] = [];\n\twrite_record(ba, 0x0081 /* BrtBeginSheet */);\n\tif(wb.vbaraw || ws['!outline']) write_record(ba, 0x0093 /* BrtWsProp */, write_BrtWsProp(c, ws['!outline']));\n\twrite_record(ba, 0x0094 /* BrtWsDim */, write_BrtWsDim(r));\n\twrite_WSVIEWS2(ba, ws, wb.Workbook);\n\twrite_WSFMTINFO(ba, ws);\n\twrite_COLINFOS(ba, ws, idx, opts, wb);\n\twrite_CELLTABLE(ba, ws, idx, opts, wb);\n\t/* [BrtSheetCalcProp] */\n\twrite_SHEETPROTECT(ba, ws);\n\t/* *([BrtRangeProtectionIso] BrtRangeProtection) */\n\t/* [SCENMAN] */\n\twrite_AUTOFILTER(ba, ws, wb, idx);\n\t/* [SORTSTATE] */\n\t/* [DCON] */\n\t/* [USERSHVIEWS] */\n\twrite_MERGECELLS(ba, ws);\n\t/* [BrtPhoneticInfo] */\n\t/* *CONDITIONALFORMATTING */\n\t/* [DVALS] */\n\twrite_HLINKS(ba, ws, rels);\n\t/* [BrtPrintOptions] */\n\tif(ws['!margins']) write_record(ba, 0x01DC /* BrtMargins */, write_BrtMargins(ws['!margins']));\n\t/* [BrtPageSetup] */\n\t/* [HEADERFOOTER] */\n\t/* [RWBRK] */\n\t/* [COLBRK] */\n\t/* *BrtBigName */\n\t/* [CELLWATCHES] */\n\tif(!opts || opts.ignoreEC || (opts.ignoreEC == (void 0))) write_IGNOREECS(ba, ws);\n\t/* [SMARTTAGS] */\n\t/* [BrtDrawing] */\n\twrite_LEGACYDRAWING(ba, ws, idx, rels);\n\t/* [BrtLegacyDrawingHF] */\n\t/* [BrtBkHim] */\n\t/* [OLEOBJECTS] */\n\t/* [ACTIVEXCONTROLS] */\n\t/* [WEBPUBITEMS] */\n\t/* [LISTPARTS] */\n\t/* FRTWORKSHEET */\n\twrite_record(ba, 0x0082 /* BrtEndSheet */);\n\treturn ba.end();\n}\nfunction parse_Cache(data/*:string*/)/*:[Array, string, ?string]*/ {\n\tvar col/*:Array*/ = [];\n\tvar num = data.match(/^/);\n\tvar f;\n\n\t/* 21.2.2.150 pt CT_NumVal */\n\t(data.match(/(.*?)<\\/c:pt>/mg)||[]).forEach(function(pt) {\n\t\tvar q = pt.match(/(.*)<\\/c:v><\\/c:pt>/);\n\t\tif(!q) return;\n\t\tcol[+q[1]] = num ? +q[2] : q[2];\n\t});\n\n\t/* 21.2.2.71 formatCode CT_Xstring */\n\tvar nf = unescapexml((data.match(/([\\s\\S]*?)<\\/c:formatCode>/) || [\"\",\"General\"])[1]);\n\n\t(data.match(/(.*?)<\\/c:f>/mg)||[]).forEach(function(F) { f = F.replace(/<.*?>/g,\"\"); });\n\n\treturn [col, nf, f];\n}\n\n/* 21.2 DrawingML - Charts */\nfunction parse_chart(data/*:?string*/, name/*:string*/, opts, rels, wb, csheet) {\n\tvar cs/*:Worksheet*/ = ((csheet || {\"!type\":\"chart\"})/*:any*/);\n\tif(!data) return csheet;\n\t/* 21.2.2.27 chart CT_Chart */\n\n\tvar C = 0, R = 0, col = \"A\";\n\tvar refguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\n\t/* 21.2.2.120 numCache CT_NumData */\n\t(data.match(/[\\s\\S]*?<\\/c:numCache>/gm)||[]).forEach(function(nc) {\n\t\tvar cache = parse_Cache(nc);\n\t\trefguess.s.r = refguess.s.c = 0;\n\t\trefguess.e.c = C;\n\t\tcol = encode_col(C);\n\t\tcache[0].forEach(function(n,i) {\n\t\t\tcs[col + encode_row(i)] = {t:'n', v:n, z:cache[1] };\n\t\t\tR = i;\n\t\t});\n\t\tif(refguess.e.r < R) refguess.e.r = R;\n\t\t++C;\n\t});\n\tif(C > 0) cs[\"!ref\"] = encode_range(refguess);\n\treturn cs;\n}\n/* 18.3 Worksheets also covers Chartsheets */\nfunction parse_cs_xml(data/*:?string*/, opts, idx/*:number*/, rels, wb/*::, themes, styles*/)/*:Worksheet*/ {\n\tif(!data) return data;\n\t/* 18.3.1.12 chartsheet CT_ChartSheet */\n\tif(!rels) rels = {'!id':{}};\n\tvar s = ({'!type':\"chart\", '!drawel':null, '!rel':\"\"}/*:any*/);\n\tvar m;\n\n\t/* 18.3.1.83 sheetPr CT_ChartsheetPr */\n\tvar sheetPr = data.match(sheetprregex);\n\tif(sheetPr) parse_ws_xml_sheetpr(sheetPr[0], s, wb, idx);\n\n\t/* 18.3.1.36 drawing CT_Drawing */\n\tif((m = data.match(/drawing r:id=\"(.*?)\"/))) s['!rel'] = m[1];\n\n\tif(rels['!id'][s['!rel']]) s['!drawel'] = rels['!id'][s['!rel']];\n\treturn s;\n}\nfunction write_cs_xml(idx/*:number*/, opts, wb/*:Workbook*/, rels)/*:string*/ {\n\tvar o = [XML_HEADER, writextag('chartsheet', null, {\n\t\t'xmlns': XMLNS_main[0],\n\t\t'xmlns:r': XMLNS.r\n\t})];\n\to[o.length] = writextag(\"drawing\", null, {\"r:id\": \"rId1\"});\n\tadd_rels(rels, -1, \"../drawings/drawing\" + (idx+1) + \".xml\", RELS.DRAW);\n\tif(o.length>2) { o[o.length] = (''); o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n\n/* [MS-XLSB] 2.4.331 BrtCsProp */\nfunction parse_BrtCsProp(data, length/*:number*/) {\n\tdata.l += 10;\n\tvar name = parse_XLWideString(data, length - 10);\n\treturn { name: name };\n}\n\n/* [MS-XLSB] 2.1.7.7 Chart Sheet */\nfunction parse_cs_bin(data, opts, idx/*:number*/, rels, wb/*::, themes, styles*/)/*:Worksheet*/ {\n\tif(!data) return data;\n\tif(!rels) rels = {'!id':{}};\n\tvar s = {'!type':\"chart\", '!drawel':null, '!rel':\"\"};\n\tvar state/*:Array*/ = [];\n\tvar pass = false;\n\trecordhopper(data, function cs_parse(val, R, RT) {\n\t\tswitch(RT) {\n\n\t\t\tcase 0x0226: /* 'BrtDrawing' */\n\t\t\t\ts['!rel'] = val; break;\n\n\t\t\tcase 0x028B: /* 'BrtCsProp' */\n\t\t\t\tif(!wb.Sheets[idx]) wb.Sheets[idx] = {};\n\t\t\t\tif(val.name) wb.Sheets[idx].CodeName = val.name;\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0232: /* 'BrtBkHim' */\n\t\t\tcase 0x028C: /* 'BrtCsPageSetup' */\n\t\t\tcase 0x029D: /* 'BrtCsProtection' */\n\t\t\tcase 0x02A7: /* 'BrtCsProtectionIso' */\n\t\t\tcase 0x0227: /* 'BrtLegacyDrawing' */\n\t\t\tcase 0x0228: /* 'BrtLegacyDrawingHF' */\n\t\t\tcase 0x01DC: /* 'BrtMargins' */\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tpass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tpass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */\n\t\t\t\tstate.push(RT); break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */\n\t\t\t\tstate.pop(); break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T > 0) state.push(RT);\n\t\t\t\telse if(R.T < 0) state.pop();\n\t\t\t\telse if(!pass || opts.WTF) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t}, opts);\n\n\tif(rels['!id'][s['!rel']]) s['!drawel'] = rels['!id'][s['!rel']];\n\treturn s;\n}\nfunction write_cs_bin(/*::idx:number, opts, wb:Workbook, rels*/) {\n\tvar ba = buf_array();\n\twrite_record(ba, 0x0081 /* BrtBeginSheet */);\n\t/* [BrtCsProp] */\n\t/* CSVIEWS */\n\t/* [[BrtCsProtectionIso] BrtCsProtection] */\n\t/* [USERCSVIEWS] */\n\t/* [BrtMargins] */\n\t/* [BrtCsPageSetup] */\n\t/* [HEADERFOOTER] */\n\t/* BrtDrawing */\n\t/* [BrtLegacyDrawing] */\n\t/* [BrtLegacyDrawingHF] */\n\t/* [BrtBkHim] */\n\t/* [WEBPUBITEMS] */\n\t/* FRTCHARTSHEET */\n\twrite_record(ba, 0x0082 /* BrtEndSheet */);\n\treturn ba.end();\n}\n/* 18.2.28 (CT_WorkbookProtection) Defaults */\nvar WBPropsDef = [\n\t['allowRefreshQuery', false, \"bool\"],\n\t['autoCompressPictures', true, \"bool\"],\n\t['backupFile', false, \"bool\"],\n\t['checkCompatibility', false, \"bool\"],\n\t['CodeName', ''],\n\t['date1904', false, \"bool\"],\n\t['defaultThemeVersion', 0, \"int\"],\n\t['filterPrivacy', false, \"bool\"],\n\t['hidePivotFieldList', false, \"bool\"],\n\t['promptedSolutions', false, \"bool\"],\n\t['publishItems', false, \"bool\"],\n\t['refreshAllConnections', false, \"bool\"],\n\t['saveExternalLinkValues', true, \"bool\"],\n\t['showBorderUnselectedTables', true, \"bool\"],\n\t['showInkAnnotation', true, \"bool\"],\n\t['showObjects', 'all'],\n\t['showPivotChartFilter', false, \"bool\"],\n\t['updateLinks', 'userSet']\n];\n\n/* 18.2.30 (CT_BookView) Defaults */\nvar WBViewDef = [\n\t['activeTab', 0, \"int\"],\n\t['autoFilterDateGrouping', true, \"bool\"],\n\t['firstSheet', 0, \"int\"],\n\t['minimized', false, \"bool\"],\n\t['showHorizontalScroll', true, \"bool\"],\n\t['showSheetTabs', true, \"bool\"],\n\t['showVerticalScroll', true, \"bool\"],\n\t['tabRatio', 600, \"int\"],\n\t['visibility', 'visible']\n\t//window{Height,Width}, {x,y}Window\n];\n\n/* 18.2.19 (CT_Sheet) Defaults */\nvar SheetDef = [\n\t//['state', 'visible']\n];\n\n/* 18.2.2 (CT_CalcPr) Defaults */\nvar CalcPrDef = [\n\t['calcCompleted', 'true'],\n\t['calcMode', 'auto'],\n\t['calcOnSave', 'true'],\n\t['concurrentCalc', 'true'],\n\t['fullCalcOnLoad', 'false'],\n\t['fullPrecision', 'true'],\n\t['iterate', 'false'],\n\t['iterateCount', '100'],\n\t['iterateDelta', '0.001'],\n\t['refMode', 'A1']\n];\n\n/* 18.2.3 (CT_CustomWorkbookView) Defaults */\n/*var CustomWBViewDef = [\n\t['autoUpdate', 'false'],\n\t['changesSavedWin', 'false'],\n\t['includeHiddenRowCol', 'true'],\n\t['includePrintSettings', 'true'],\n\t['maximized', 'false'],\n\t['minimized', 'false'],\n\t['onlySync', 'false'],\n\t['personalView', 'false'],\n\t['showComments', 'commIndicator'],\n\t['showFormulaBar', 'true'],\n\t['showHorizontalScroll', 'true'],\n\t['showObjects', 'all'],\n\t['showSheetTabs', 'true'],\n\t['showStatusbar', 'true'],\n\t['showVerticalScroll', 'true'],\n\t['tabRatio', '600'],\n\t['xWindow', '0'],\n\t['yWindow', '0']\n];*/\n\nfunction push_defaults_array(target, defaults) {\n\tfor(var j = 0; j != target.length; ++j) { var w = target[j];\n\t\tfor(var i=0; i != defaults.length; ++i) { var z = defaults[i];\n\t\t\tif(w[z[0]] == null) w[z[0]] = z[1];\n\t\t\telse switch(z[2]) {\n\t\t\tcase \"bool\": if(typeof w[z[0]] == \"string\") w[z[0]] = parsexmlbool(w[z[0]]); break;\n\t\t\tcase \"int\": if(typeof w[z[0]] == \"string\") w[z[0]] = parseInt(w[z[0]], 10); break;\n\t\t\t}\n\t\t}\n\t}\n}\nfunction push_defaults(target, defaults) {\n\tfor(var i = 0; i != defaults.length; ++i) { var z = defaults[i];\n\t\tif(target[z[0]] == null) target[z[0]] = z[1];\n\t\telse switch(z[2]) {\n\t\t\tcase \"bool\": if(typeof target[z[0]] == \"string\") target[z[0]] = parsexmlbool(target[z[0]]); break;\n\t\t\tcase \"int\": if(typeof target[z[0]] == \"string\") target[z[0]] = parseInt(target[z[0]], 10); break;\n\t\t}\n\t}\n}\n\nfunction parse_wb_defaults(wb) {\n\tpush_defaults(wb.WBProps, WBPropsDef);\n\tpush_defaults(wb.CalcPr, CalcPrDef);\n\n\tpush_defaults_array(wb.WBView, WBViewDef);\n\tpush_defaults_array(wb.Sheets, SheetDef);\n\n\t_ssfopts.date1904 = parsexmlbool(wb.WBProps.date1904);\n}\n\nfunction safe1904(wb/*:Workbook*/)/*:string*/ {\n\t/* TODO: store date1904 somewhere else */\n\tif(!wb.Workbook) return \"false\";\n\tif(!wb.Workbook.WBProps) return \"false\";\n\treturn parsexmlbool(wb.Workbook.WBProps.date1904) ? \"true\" : \"false\";\n}\n\nvar badchars = /*#__PURE__*/\"][*?\\/\\\\\".split(\"\");\nfunction check_ws_name(n/*:string*/, safe/*:?boolean*/)/*:boolean*/ {\n\tif(n.length > 31) { if(safe) return false; throw new Error(\"Sheet names cannot exceed 31 chars\"); }\n\tvar _good = true;\n\tbadchars.forEach(function(c) {\n\t\tif(n.indexOf(c) == -1) return;\n\t\tif(!safe) throw new Error(\"Sheet name cannot contain : \\\\ / ? * [ ]\");\n\t\t_good = false;\n\t});\n\treturn _good;\n}\nfunction check_wb_names(N, S, codes) {\n\tN.forEach(function(n,i) {\n\t\tcheck_ws_name(n);\n\t\tfor(var j = 0; j < i; ++j) if(n == N[j]) throw new Error(\"Duplicate Sheet Name: \" + n);\n\t\tif(codes) {\n\t\t\tvar cn = (S && S[i] && S[i].CodeName) || n;\n\t\t\tif(cn.charCodeAt(0) == 95 && cn.length > 22) throw new Error(\"Bad Code Name: Worksheet\" + cn);\n\t\t}\n\t});\n}\nfunction check_wb(wb) {\n\tif(!wb || !wb.SheetNames || !wb.Sheets) throw new Error(\"Invalid Workbook\");\n\tif(!wb.SheetNames.length) throw new Error(\"Workbook is empty\");\n\tvar Sheets = (wb.Workbook && wb.Workbook.Sheets) || [];\n\tcheck_wb_names(wb.SheetNames, Sheets, !!wb.vbaraw);\n\tfor(var i = 0; i < wb.SheetNames.length; ++i) check_ws(wb.Sheets[wb.SheetNames[i]], wb.SheetNames[i], i);\n\t/* TODO: validate workbook */\n}\n/* 18.2 Workbook */\nvar wbnsregex = /<\\w+:workbook/;\nfunction parse_wb_xml(data, opts)/*:WorkbookFile*/ {\n\tif(!data) throw new Error(\"Could not find file\");\n\tvar wb = /*::(*/{ AppVersion:{}, WBProps:{}, WBView:[], Sheets:[], CalcPr:{}, Names:[], xmlns: \"\" }/*::)*/;\n\tvar pass = false, xmlns = \"xmlns\";\n\tvar dname = {}, dnstart = 0;\n\tdata.replace(tagregex, function xml_wb(x, idx) {\n\t\tvar y/*:any*/ = parsexmltag(x);\n\t\tswitch(strip_ns(y[0])) {\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.13 fileVersion CT_FileVersion ? */\n\t\t\tcase '': case '': break;\n\n\t\t\t/* 18.2.12 fileSharing CT_FileSharing ? */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.28 workbookPr CT_WorkbookPr ? */\n\t\t\tcase '':\n\t\t\t\tWBPropsDef.forEach(function(w) {\n\t\t\t\t\tif(y[w[0]] == null) return;\n\t\t\t\t\tswitch(w[2]) {\n\t\t\t\t\t\tcase \"bool\": wb.WBProps[w[0]] = parsexmlbool(y[w[0]]); break;\n\t\t\t\t\t\tcase \"int\": wb.WBProps[w[0]] = parseInt(y[w[0]], 10); break;\n\t\t\t\t\t\tdefault: wb.WBProps[w[0]] = y[w[0]];\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif(y.codeName) wb.WBProps.CodeName = utf8read(y.codeName);\n\t\t\t\tbreak;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.29 workbookProtection CT_WorkbookProtection ? */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.1 bookViews CT_BookViews ? */\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.2.30 workbookView CT_BookView + */\n\t\t\tcase '': delete y[0]; wb.WBView.push(y); break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.20 sheets CT_Sheets 1 */\n\t\t\tcase '': case '': break; // aggregate sheet\n\t\t\t/* 18.2.19 sheet CT_Sheet + */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.15 functionGroups CT_FunctionGroups ? */\n\t\t\tcase '': break;\n\t\t\t/* 18.2.14 functionGroup CT_FunctionGroup + */\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.2.8 externalReference CT_ExternalReference + */\n\t\t\tcase '': break;\n\t\t\tcase '': case '': pass=false; break;\n\t\t\t/* 18.2.5 definedName CT_DefinedName + */\n\t\t\tcase '': {\n\t\t\t\tdname.Ref = unescapexml(utf8read(data.slice(dnstart, idx)));\n\t\t\t\twb.Names.push(dname);\n\t\t\t} break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.2 calcPr CT_CalcPr ? */\n\t\t\tcase '': delete y[0]; wb.CalcPr = y; break;\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.16 oleSize CT_OleSize ? (ref required) */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.2.18 pivotCaches CT_PivotCaches ? */\n\t\t\tcase '': case '': case '': break;\n\n\t\t\t/* 18.2.23 smartTagTypes CT_SmartTagTypes ? */\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.2.22 smartTagType CT_SmartTagType ? */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.11 fileRecoveryPr CT_FileRecoveryPr ? */\n\t\t\tcase '': break;\n\n\t\t\t/* 18.2.26 webPublishObjects CT_WebPublishObjects ? */\n\t\t\tcase '': case '': break;\n\t\t\t/* 18.2.25 webPublishObject CT_WebPublishObject ? */\n\t\t\tcase '': case '': case '': break;\n\t\t\t/* 18.2.7 ext CT_Extension + */\n\t\t\tcase '': pass=false; break;\n\n\t\t\t/* Others */\n\t\t\tcase '': pass=true; break;\n\t\t\tcase '': pass=false; break;\n\n\t\t\t/* TODO */\n\t\t\tcase ' 0);\n\n\t/* fileVersion */\n\t/* fileSharing */\n\n\tvar workbookPr/*:any*/ = ({codeName:\"ThisWorkbook\"}/*:any*/);\n\tif(wb.Workbook && wb.Workbook.WBProps) {\n\t\tWBPropsDef.forEach(function(x) {\n\t\t\t/*:: if(!wb.Workbook || !wb.Workbook.WBProps) throw \"unreachable\"; */\n\t\t\tif((wb.Workbook.WBProps[x[0]]/*:any*/) == null) return;\n\t\t\tif((wb.Workbook.WBProps[x[0]]/*:any*/) == x[1]) return;\n\t\t\tworkbookPr[x[0]] = (wb.Workbook.WBProps[x[0]]/*:any*/);\n\t\t});\n\t\t/*:: if(!wb.Workbook || !wb.Workbook.WBProps) throw \"unreachable\"; */\n\t\tif(wb.Workbook.WBProps.CodeName) { workbookPr.codeName = wb.Workbook.WBProps.CodeName; delete workbookPr.CodeName; }\n\t}\n\to[o.length] = (writextag('workbookPr', null, workbookPr));\n\n\t/* workbookProtection */\n\n\tvar sheets = wb.Workbook && wb.Workbook.Sheets || [];\n\tvar i = 0;\n\n\t/* bookViews only written if first worksheet is hidden */\n\tif(sheets && sheets[0] && !!sheets[0].Hidden) {\n\t\to[o.length] = \"\";\n\t\tfor(i = 0; i != wb.SheetNames.length; ++i) {\n\t\t\tif(!sheets[i]) break;\n\t\t\tif(!sheets[i].Hidden) break;\n\t\t}\n\t\tif(i == wb.SheetNames.length) i = 0;\n\t\to[o.length] = '';\n\t\to[o.length] = \"\";\n\t}\n\n\to[o.length] = \"\";\n\tfor(i = 0; i != wb.SheetNames.length; ++i) {\n\t\tvar sht = ({name:escapexml(wb.SheetNames[i].slice(0,31))}/*:any*/);\n\t\tsht.sheetId = \"\"+(i+1);\n\t\tsht[\"r:id\"] = \"rId\"+(i+1);\n\t\tif(sheets[i]) switch(sheets[i].Hidden) {\n\t\t\tcase 1: sht.state = \"hidden\"; break;\n\t\t\tcase 2: sht.state = \"veryHidden\"; break;\n\t\t}\n\t\to[o.length] = (writextag('sheet',null,sht));\n\t}\n\to[o.length] = \"\";\n\n\t/* functionGroups */\n\t/* externalReferences */\n\n\tif(write_names) {\n\t\to[o.length] = \"\";\n\t\tif(wb.Workbook && wb.Workbook.Names) wb.Workbook.Names.forEach(function(n) {\n\t\t\tvar d/*:any*/ = {name:n.Name};\n\t\t\tif(n.Comment) d.comment = n.Comment;\n\t\t\tif(n.Sheet != null) d.localSheetId = \"\"+n.Sheet;\n\t\t\tif(n.Hidden) d.hidden = \"1\";\n\t\t\tif(!n.Ref) return;\n\t\t\to[o.length] = writextag('definedName', escapexml(n.Ref), d);\n\t\t});\n\t\to[o.length] = \"\";\n\t}\n\n\t/* calcPr */\n\t/* oleSize */\n\t/* customWorkbookViews */\n\t/* pivotCaches */\n\t/* smartTagPr */\n\t/* smartTagTypes */\n\t/* webPublishing */\n\t/* fileRecoveryPr */\n\t/* webPublishObjects */\n\t/* extLst */\n\n\tif(o.length>2){ o[o.length] = ''; o[1]=o[1].replace(\"/>\",\">\"); }\n\treturn o.join(\"\");\n}\n/* [MS-XLSB] 2.4.304 BrtBundleSh */\nfunction parse_BrtBundleSh(data, length/*:number*/) {\n\tvar z = {};\n\tz.Hidden = data.read_shift(4); //hsState ST_SheetState\n\tz.iTabID = data.read_shift(4);\n\tz.strRelID = parse_RelID(data,length-8);\n\tz.name = parse_XLWideString(data);\n\treturn z;\n}\nfunction write_BrtBundleSh(data, o) {\n\tif(!o) o = new_buf(127);\n\to.write_shift(4, data.Hidden);\n\to.write_shift(4, data.iTabID);\n\twrite_RelID(data.strRelID, o);\n\twrite_XLWideString(data.name.slice(0,31), o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.815 BrtWbProp */\nfunction parse_BrtWbProp(data, length)/*:WBProps*/ {\n\tvar o/*:WBProps*/ = ({}/*:any*/);\n\tvar flags = data.read_shift(4);\n\to.defaultThemeVersion = data.read_shift(4);\n\tvar strName = (length > 8) ? parse_XLWideString(data) : \"\";\n\tif(strName.length > 0) o.CodeName = strName;\n\to.autoCompressPictures = !!(flags & 0x10000);\n\to.backupFile = !!(flags & 0x40);\n\to.checkCompatibility = !!(flags & 0x1000);\n\to.date1904 = !!(flags & 0x01);\n\to.filterPrivacy = !!(flags & 0x08);\n\to.hidePivotFieldList = !!(flags & 0x400);\n\to.promptedSolutions = !!(flags & 0x10);\n\to.publishItems = !!(flags & 0x800);\n\to.refreshAllConnections = !!(flags & 0x40000);\n\to.saveExternalLinkValues = !!(flags & 0x80);\n\to.showBorderUnselectedTables = !!(flags & 0x04);\n\to.showInkAnnotation = !!(flags & 0x20);\n\to.showObjects = [\"all\", \"placeholders\", \"none\"][(flags >> 13) & 0x03];\n\to.showPivotChartFilter = !!(flags & 0x8000);\n\to.updateLinks = [\"userSet\", \"never\", \"always\"][(flags >> 8) & 0x03];\n\treturn o;\n}\nfunction write_BrtWbProp(data/*:?WBProps*/, o) {\n\tif(!o) o = new_buf(72);\n\tvar flags = 0;\n\tif(data) {\n\t\t/* TODO: mirror parse_BrtWbProp fields */\n\t\tif(data.filterPrivacy) flags |= 0x08;\n\t}\n\to.write_shift(4, flags);\n\to.write_shift(4, 0);\n\twrite_XLSBCodeName(data && data.CodeName || \"ThisWorkbook\", o);\n\treturn o.slice(0, o.l);\n}\n\nfunction parse_BrtFRTArchID$(data, length) {\n\tvar o = {};\n\tdata.read_shift(4);\n\to.ArchID = data.read_shift(4);\n\tdata.l += length - 8;\n\treturn o;\n}\n\n/* [MS-XLSB] 2.4.687 BrtName */\nfunction parse_BrtName(data, length, opts) {\n\tvar end = data.l + length;\n\tdata.l += 4; //var flags = data.read_shift(4);\n\tdata.l += 1; //var chKey = data.read_shift(1);\n\tvar itab = data.read_shift(4);\n\tvar name = parse_XLNameWideString(data);\n\tvar formula = parse_XLSBNameParsedFormula(data, 0, opts);\n\tvar comment = parse_XLNullableWideString(data);\n\t//if(0 /* fProc */) {\n\t\t// unusedstring1: XLNullableWideString\n\t\t// description: XLNullableWideString\n\t\t// helpTopic: XLNullableWideString\n\t\t// unusedstring2: XLNullableWideString\n\t//}\n\tdata.l = end;\n\tvar out = ({Name:name, Ptg:formula}/*:any*/);\n\tif(itab < 0xFFFFFFF) out.Sheet = itab;\n\tif(comment) out.Comment = comment;\n\treturn out;\n}\n\n/* [MS-XLSB] 2.1.7.61 Workbook */\nfunction parse_wb_bin(data, opts)/*:WorkbookFile*/ {\n\tvar wb = { AppVersion:{}, WBProps:{}, WBView:[], Sheets:[], CalcPr:{}, xmlns: \"\" };\n\tvar state/*:Array*/ = [];\n\tvar pass = false;\n\n\tif(!opts) opts = {};\n\topts.biff = 12;\n\n\tvar Names = [];\n\tvar supbooks = ([[]]/*:any*/);\n\tsupbooks.SheetNames = [];\n\tsupbooks.XTI = [];\n\n\tXLSBRecordEnum[0x0010] = { n:\"BrtFRTArchID$\", f:parse_BrtFRTArchID$ };\n\n\trecordhopper(data, function hopper_wb(val, R, RT) {\n\t\tswitch(RT) {\n\t\t\tcase 0x009C: /* 'BrtBundleSh' */\n\t\t\t\tsupbooks.SheetNames.push(val.name);\n\t\t\t\twb.Sheets.push(val); break;\n\n\t\t\tcase 0x0099: /* 'BrtWbProp' */\n\t\t\t\twb.WBProps = val; break;\n\n\t\t\tcase 0x0027: /* 'BrtName' */\n\t\t\t\tif(val.Sheet != null) opts.SID = val.Sheet;\n\t\t\t\tval.Ref = stringify_formula(val.Ptg, null, null, supbooks, opts);\n\t\t\t\tdelete opts.SID;\n\t\t\t\tdelete val.Ptg;\n\t\t\t\tNames.push(val);\n\t\t\t\tbreak;\n\t\t\tcase 0x040C: /* 'BrtNameExt' */ break;\n\n\t\t\tcase 0x0165: /* 'BrtSupSelf' */\n\t\t\tcase 0x0166: /* 'BrtSupSame' */\n\t\t\tcase 0x0163: /* 'BrtSupBookSrc' */\n\t\t\tcase 0x029B: /* 'BrtSupAddin' */\n\t\t\t\tif(!supbooks[0].length) supbooks[0] = [RT, val];\n\t\t\t\telse supbooks.push([RT, val]);\n\t\t\t\tsupbooks[supbooks.length - 1].XTI = [];\n\t\t\t\tbreak;\n\t\t\tcase 0x016A: /* 'BrtExternSheet' */\n\t\t\t\tif(supbooks.length === 0) { supbooks[0] = []; supbooks[0].XTI = []; }\n\t\t\t\tsupbooks[supbooks.length - 1].XTI = supbooks[supbooks.length - 1].XTI.concat(val);\n\t\t\t\tsupbooks.XTI = supbooks.XTI.concat(val);\n\t\t\t\tbreak;\n\t\t\tcase 0x0169: /* 'BrtPlaceholderName' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0817: /* 'BrtAbsPath15' */\n\t\t\tcase 0x009E: /* 'BrtBookView' */\n\t\t\tcase 0x008F: /* 'BrtBeginBundleShs' */\n\t\t\tcase 0x0298: /* 'BrtBeginFnGroup' */\n\t\t\tcase 0x0161: /* 'BrtBeginExternals' */\n\t\t\t\tbreak;\n\n\t\t\t/* case 'BrtModelTimeGroupingCalcCol' */\n\t\t\tcase 0x0C00: /* 'BrtUid' */\n\t\t\tcase 0x0C01: /* 'BrtRevisionPtr' */\n\t\t\tcase 0x0216: /* 'BrtBookProtection' */\n\t\t\tcase 0x02A5: /* 'BrtBookProtectionIso' */\n\t\t\tcase 0x009D: /* 'BrtCalcProp' */\n\t\t\tcase 0x0262: /* 'BrtCrashRecErr' */\n\t\t\tcase 0x0802: /* 'BrtDecoupledPivotCacheID' */\n\t\t\tcase 0x009B: /* 'BrtFileRecover' */\n\t\t\tcase 0x0224: /* 'BrtFileSharing' */\n\t\t\tcase 0x02A4: /* 'BrtFileSharingIso' */\n\t\t\tcase 0x0080: /* 'BrtFileVersion' */\n\t\t\tcase 0x0299: /* 'BrtFnGroup' */\n\t\t\tcase 0x0850: /* 'BrtModelRelationship' */\n\t\t\tcase 0x084D: /* 'BrtModelTable' */\n\t\t\tcase 0x0225: /* 'BrtOleSize' */\n\t\t\tcase 0x0805: /* 'BrtPivotTableRef' */\n\t\t\tcase 0x0254: /* 'BrtSmartTagType' */\n\t\t\tcase 0x081C: /* 'BrtTableSlicerCacheID' */\n\t\t\tcase 0x081B: /* 'BrtTableSlicerCacheIDs' */\n\t\t\tcase 0x0822: /* 'BrtTimelineCachePivotCacheID' */\n\t\t\tcase 0x018D: /* 'BrtUserBookView' */\n\t\t\tcase 0x009A: /* 'BrtWbFactoid' */\n\t\t\tcase 0x045D: /* 'BrtWbProp14' */\n\t\t\tcase 0x0229: /* 'BrtWebOpt' */\n\t\t\tcase 0x082B: /* 'BrtWorkBookPr15' */\n\t\t\t\tbreak;\n\n\t\t\tcase 0x0023: /* 'BrtFRTBegin' */\n\t\t\t\tstate.push(RT); pass = true; break;\n\t\t\tcase 0x0024: /* 'BrtFRTEnd' */\n\t\t\t\tstate.pop(); pass = false; break;\n\t\t\tcase 0x0025: /* 'BrtACBegin' */\n\t\t\t\tstate.push(RT); pass = true; break;\n\t\t\tcase 0x0026: /* 'BrtACEnd' */\n\t\t\t\tstate.pop(); pass = false; break;\n\n\t\t\tcase 0x0010: /* 'BrtFRTArchID$' */ break;\n\n\t\t\tdefault:\n\t\t\t\tif(R.T){/* empty */}\n\t\t\t\telse if(!pass || (opts.WTF && state[state.length-1] != 0x0025 /* BrtACBegin */ && state[state.length-1] != 0x0023 /* BrtFRTBegin */)) throw new Error(\"Unexpected record 0x\" + RT.toString(16));\n\t\t}\n\t}, opts);\n\n\tparse_wb_defaults(wb);\n\n\t// $FlowIgnore\n\twb.Names = Names;\n\n\t(wb/*:any*/).supbooks = supbooks;\n\treturn wb;\n}\n\nfunction write_BUNDLESHS(ba, wb/*::, opts*/) {\n\twrite_record(ba, 0x008F /* BrtBeginBundleShs */);\n\tfor(var idx = 0; idx != wb.SheetNames.length; ++idx) {\n\t\tvar viz = wb.Workbook && wb.Workbook.Sheets && wb.Workbook.Sheets[idx] && wb.Workbook.Sheets[idx].Hidden || 0;\n\t\tvar d = { Hidden: viz, iTabID: idx+1, strRelID: 'rId' + (idx+1), name: wb.SheetNames[idx] };\n\t\twrite_record(ba, 0x009C /* BrtBundleSh */, write_BrtBundleSh(d));\n\t}\n\twrite_record(ba, 0x0090 /* BrtEndBundleShs */);\n}\n\n/* [MS-XLSB] 2.4.649 BrtFileVersion */\nfunction write_BrtFileVersion(data, o) {\n\tif(!o) o = new_buf(127);\n\tfor(var i = 0; i != 4; ++i) o.write_shift(4, 0);\n\twrite_XLWideString(\"SheetJS\", o);\n\twrite_XLWideString(XLSX.version, o);\n\twrite_XLWideString(XLSX.version, o);\n\twrite_XLWideString(\"7262\", o);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\n/* [MS-XLSB] 2.4.301 BrtBookView */\nfunction write_BrtBookView(idx, o) {\n\tif(!o) o = new_buf(29);\n\to.write_shift(-4, 0);\n\to.write_shift(-4, 460);\n\to.write_shift(4, 28800);\n\to.write_shift(4, 17600);\n\to.write_shift(4, 500);\n\to.write_shift(4, idx);\n\to.write_shift(4, idx);\n\tvar flags = 0x78;\n\to.write_shift(1, flags);\n\treturn o.length > o.l ? o.slice(0, o.l) : o;\n}\n\nfunction write_BOOKVIEWS(ba, wb/*::, opts*/) {\n\t/* required if hidden tab appears before visible tab */\n\tif(!wb.Workbook || !wb.Workbook.Sheets) return;\n\tvar sheets = wb.Workbook.Sheets;\n\tvar i = 0, vistab = -1, hidden = -1;\n\tfor(; i < sheets.length; ++i) {\n\t\tif(!sheets[i] || !sheets[i].Hidden && vistab == -1) vistab = i;\n\t\telse if(sheets[i].Hidden == 1 && hidden == -1) hidden = i;\n\t}\n\tif(hidden > vistab) return;\n\twrite_record(ba, 0x0087 /* BrtBeginBookViews */);\n\twrite_record(ba, 0x009E /* BrtBookView */, write_BrtBookView(vistab));\n\t/* 1*(BrtBookView *FRT) */\n\twrite_record(ba, 0x0088 /* BrtEndBookViews */);\n}\n\n/* [MS-XLSB] 2.4.305 BrtCalcProp */\n/*function write_BrtCalcProp(data, o) {\n\tif(!o) o = new_buf(26);\n\to.write_shift(4,0); // force recalc\n\to.write_shift(4,1);\n\to.write_shift(4,0);\n\twrite_Xnum(0, o);\n\to.write_shift(-4, 1023);\n\to.write_shift(1, 0x33);\n\to.write_shift(1, 0x00);\n\treturn o;\n}*/\n\n/* [MS-XLSB] 2.4.646 BrtFileRecover */\n/*function write_BrtFileRecover(data, o) {\n\tif(!o) o = new_buf(1);\n\to.write_shift(1,0);\n\treturn o;\n}*/\n\n/* [MS-XLSB] 2.1.7.61 Workbook */\nfunction write_wb_bin(wb, opts) {\n\tvar ba = buf_array();\n\twrite_record(ba, 0x0083 /* BrtBeginBook */);\n\twrite_record(ba, 0x0080 /* BrtFileVersion */, write_BrtFileVersion());\n\t/* [[BrtFileSharingIso] BrtFileSharing] */\n\twrite_record(ba, 0x0099 /* BrtWbProp */, write_BrtWbProp(wb.Workbook && wb.Workbook.WBProps || null));\n\t/* [ACABSPATH] */\n\t/* [[BrtBookProtectionIso] BrtBookProtection] */\n\twrite_BOOKVIEWS(ba, wb, opts);\n\twrite_BUNDLESHS(ba, wb, opts);\n\t/* [FNGROUP] */\n\t/* [EXTERNALS] */\n\t/* *BrtName */\n\t/* write_record(ba, 0x009D BrtCalcProp, write_BrtCalcProp()); */\n\t/* [BrtOleSize] */\n\t/* *(BrtUserBookView *FRT) */\n\t/* [PIVOTCACHEIDS] */\n\t/* [BrtWbFactoid] */\n\t/* [SMARTTAGTYPES] */\n\t/* [BrtWebOpt] */\n\t/* write_record(ba, 0x009B BrtFileRecover, write_BrtFileRecover()); */\n\t/* [WEBPUBITEMS] */\n\t/* [CRERRS] */\n\t/* FRTWORKBOOK */\n\twrite_record(ba, 0x0084 /* BrtEndBook */);\n\n\treturn ba.end();\n}\nfunction parse_wb(data, name/*:string*/, opts)/*:WorkbookFile*/ {\n\tif(name.slice(-4)===\".bin\") return parse_wb_bin((data/*:any*/), opts);\n\treturn parse_wb_xml((data/*:any*/), opts);\n}\n\nfunction parse_ws(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ {\n\tif(name.slice(-4)===\".bin\") return parse_ws_bin((data/*:any*/), opts, idx, rels, wb, themes, styles);\n\treturn parse_ws_xml((data/*:any*/), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_cs(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ {\n\tif(name.slice(-4)===\".bin\") return parse_cs_bin((data/*:any*/), opts, idx, rels, wb, themes, styles);\n\treturn parse_cs_xml((data/*:any*/), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_ms(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ {\n\tif(name.slice(-4)===\".bin\") return parse_ms_bin((data/*:any*/), opts, idx, rels, wb, themes, styles);\n\treturn parse_ms_xml((data/*:any*/), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_ds(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ {\n\tif(name.slice(-4)===\".bin\") return parse_ds_bin((data/*:any*/), opts, idx, rels, wb, themes, styles);\n\treturn parse_ds_xml((data/*:any*/), opts, idx, rels, wb, themes, styles);\n}\n\nfunction parse_sty(data, name/*:string*/, themes, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_sty_bin((data/*:any*/), themes, opts);\n\treturn parse_sty_xml((data/*:any*/), themes, opts);\n}\n\nfunction parse_theme(data/*:string*/, name/*:string*/, opts) {\n\treturn parse_theme_xml(data, opts);\n}\n\nfunction parse_sst(data, name/*:string*/, opts)/*:SST*/ {\n\tif(name.slice(-4)===\".bin\") return parse_sst_bin((data/*:any*/), opts);\n\treturn parse_sst_xml((data/*:any*/), opts);\n}\n\nfunction parse_cmnt(data, name/*:string*/, opts)/*:Array*/ {\n\tif(name.slice(-4)===\".bin\") return parse_comments_bin((data/*:any*/), opts);\n\treturn parse_comments_xml((data/*:any*/), opts);\n}\n\nfunction parse_cc(data, name/*:string*/, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_cc_bin((data/*:any*/), name, opts);\n\treturn parse_cc_xml((data/*:any*/), name, opts);\n}\n\nfunction parse_xlink(data, rel, name/*:string*/, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_xlink_bin((data/*:any*/), rel, name, opts);\n\treturn parse_xlink_xml((data/*:any*/), rel, name, opts);\n}\n\nfunction parse_xlmeta(data, name/*:string*/, opts) {\n\tif(name.slice(-4)===\".bin\") return parse_xlmeta_bin((data/*:any*/), name, opts);\n\treturn parse_xlmeta_xml((data/*:any*/), name, opts);\n}\n\nfunction write_wb(wb, name/*:string*/, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_wb_bin : write_wb_xml)(wb, opts);\n}\n\nfunction write_ws(data/*:number*/, name/*:string*/, opts, wb/*:Workbook*/, rels) {\n\treturn (name.slice(-4)===\".bin\" ? write_ws_bin : write_ws_xml)(data, opts, wb, rels);\n}\n\n// eslint-disable-next-line no-unused-vars\nfunction write_cs(data/*:number*/, name/*:string*/, opts, wb/*:Workbook*/, rels) {\n\treturn (name.slice(-4)===\".bin\" ? write_cs_bin : write_cs_xml)(data, opts, wb, rels);\n}\n\nfunction write_sty(data, name/*:string*/, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_sty_bin : write_sty_xml)(data, opts);\n}\n\nfunction write_sst(data/*:SST*/, name/*:string*/, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_sst_bin : write_sst_xml)(data, opts);\n}\n\nfunction write_cmnt(data/*:Array*/, name/*:string*/, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_comments_bin : write_comments_xml)(data, opts);\n}\n/*\nfunction write_cc(data, name:string, opts) {\n\treturn (name.slice(-4)===\".bin\" ? write_cc_bin : write_cc_xml)(data, opts);\n}\n*/\n\nfunction write_xlmeta(name/*:string*/) {\n\treturn (name.slice(-4)===\".bin\" ? write_xlmeta_bin : write_xlmeta_xml)();\n}\nvar attregexg2=/([\\w:]+)=((?:\")([^\"]*)(?:\")|(?:')([^']*)(?:'))/g;\nvar attregex2=/([\\w:]+)=((?:\")(?:[^\"]*)(?:\")|(?:')(?:[^']*)(?:'))/;\nfunction xlml_parsexmltag(tag/*:string*/, skip_root/*:?boolean*/) {\n\tvar words = tag.split(/\\s+/);\n\tvar z/*:any*/ = ([]/*:any*/); if(!skip_root) z[0] = words[0];\n\tif(words.length === 1) return z;\n\tvar m = tag.match(attregexg2), y, j, w, i;\n\tif(m) for(i = 0; i != m.length; ++i) {\n\t\ty = m[i].match(attregex2);\n/*:: if(!y || !y[2]) continue; */\n\t\tif((j=y[1].indexOf(\":\")) === -1) z[y[1]] = y[2].slice(1,y[2].length-1);\n\t\telse {\n\t\t\tif(y[1].slice(0,6) === \"xmlns:\") w = \"xmlns\"+y[1].slice(6);\n\t\t\telse w = y[1].slice(j+1);\n\t\t\tz[w] = y[2].slice(1,y[2].length-1);\n\t\t}\n\t}\n\treturn z;\n}\nfunction xlml_parsexmltagobj(tag/*:string*/) {\n\tvar words = tag.split(/\\s+/);\n\tvar z = {};\n\tif(words.length === 1) return z;\n\tvar m = tag.match(attregexg2), y, j, w, i;\n\tif(m) for(i = 0; i != m.length; ++i) {\n\t\ty = m[i].match(attregex2);\n/*:: if(!y || !y[2]) continue; */\n\t\tif((j=y[1].indexOf(\":\")) === -1) z[y[1]] = y[2].slice(1,y[2].length-1);\n\t\telse {\n\t\t\tif(y[1].slice(0,6) === \"xmlns:\") w = \"xmlns\"+y[1].slice(6);\n\t\t\telse w = y[1].slice(j+1);\n\t\t\tz[w] = y[2].slice(1,y[2].length-1);\n\t\t}\n\t}\n\treturn z;\n}\n\n// ----\n\n/* map from xlml named formats to SSF TODO: localize */\nvar XLMLFormatMap/*: {[string]:string}*/;\n\nfunction xlml_format(format, value)/*:string*/ {\n\tvar fmt = XLMLFormatMap[format] || unescapexml(format);\n\tif(fmt === \"General\") return SSF_general(value);\n\treturn SSF_format(fmt, value);\n}\n\nfunction xlml_set_custprop(Custprops, key, cp, val/*:string*/) {\n\tvar oval/*:any*/ = val;\n\tswitch((cp[0].match(/dt:dt=\"([\\w.]+)\"/)||[\"\",\"\"])[1]) {\n\t\tcase \"boolean\": oval = parsexmlbool(val); break;\n\t\tcase \"i2\": case \"int\": oval = parseInt(val, 10); break;\n\t\tcase \"r4\": case \"float\": oval = parseFloat(val); break;\n\t\tcase \"date\": case \"dateTime.tz\": oval = parseDate(val); break;\n\t\tcase \"i8\": case \"string\": case \"fixed\": case \"uuid\": case \"bin.base64\": break;\n\t\tdefault: throw new Error(\"bad custprop:\" + cp[0]);\n\t}\n\tCustprops[unescapexml(key)] = oval;\n}\n\nfunction safe_format_xlml(cell/*:Cell*/, nf, o) {\n\tif(cell.t === 'z') return;\n\tif(!o || o.cellText !== false) try {\n\t\tif(cell.t === 'e') { cell.w = cell.w || BErr[cell.v]; }\n\t\telse if(nf === \"General\") {\n\t\t\tif(cell.t === 'n') {\n\t\t\t\tif((cell.v|0) === cell.v) cell.w = cell.v.toString(10);\n\t\t\t\telse cell.w = SSF_general_num(cell.v);\n\t\t\t}\n\t\t\telse cell.w = SSF_general(cell.v);\n\t\t}\n\t\telse cell.w = xlml_format(nf||\"General\", cell.v);\n\t} catch(e) { if(o.WTF) throw e; }\n\ttry {\n\t\tvar z = XLMLFormatMap[nf]||nf||\"General\";\n\t\tif(o.cellNF) cell.z = z;\n\t\tif(o.cellDates && cell.t == 'n' && fmt_is_date(z)) {\n\t\t\tvar _d = SSF_parse_date_code(cell.v); if(_d) { cell.t = 'd'; cell.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); }\n\t\t}\n\t} catch(e) { if(o.WTF) throw e; }\n}\n\nfunction process_style_xlml(styles, stag, opts) {\n\tif(opts.cellStyles) {\n\t\tif(stag.Interior) {\n\t\t\tvar I = stag.Interior;\n\t\t\tif(I.Pattern) I.patternType = XLMLPatternTypeMap[I.Pattern] || I.Pattern;\n\t\t}\n\t}\n\tstyles[stag.ID] = stag;\n}\n\n/* TODO: there must exist some form of OSP-blessed spec */\nfunction parse_xlml_data(xml, ss, data, cell/*:any*/, base, styles, csty, row, arrayf, o) {\n\tvar nf = \"General\", sid = cell.StyleID, S = {}; o = o || {};\n\tvar interiors = [];\n\tvar i = 0;\n\tif(sid === undefined && row) sid = row.StyleID;\n\tif(sid === undefined && csty) sid = csty.StyleID;\n\twhile(styles[sid] !== undefined) {\n\t\tif(styles[sid].nf) nf = styles[sid].nf;\n\t\tif(styles[sid].Interior) interiors.push(styles[sid].Interior);\n\t\tif(!styles[sid].Parent) break;\n\t\tsid = styles[sid].Parent;\n\t}\n\tswitch(data.Type) {\n\t\tcase 'Boolean':\n\t\t\tcell.t = 'b';\n\t\t\tcell.v = parsexmlbool(xml);\n\t\t\tbreak;\n\t\tcase 'String':\n\t\t\tcell.t = 's'; cell.r = xlml_fixstr(unescapexml(xml));\n\t\t\tcell.v = (xml.indexOf(\"<\") > -1 ? unescapexml(ss||xml).replace(/<.*?>/g, \"\") : cell.r); // todo: BR etc\n\t\t\tbreak;\n\t\tcase 'DateTime':\n\t\t\tif(xml.slice(-1) != \"Z\") xml += \"Z\";\n\t\t\tcell.v = (parseDate(xml) - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000);\n\t\t\tif(cell.v !== cell.v) cell.v = unescapexml(xml);\n\t\t\telse if(cell.v<60) cell.v = cell.v -1;\n\t\t\tif(!nf || nf == \"General\") nf = \"yyyy-mm-dd\";\n\t\t\t/* falls through */\n\t\tcase 'Number':\n\t\t\tif(cell.v === undefined) cell.v=+xml;\n\t\t\tif(!cell.t) cell.t = 'n';\n\t\t\tbreak;\n\t\tcase 'Error': cell.t = 'e'; cell.v = RBErr[xml]; if(o.cellText !== false) cell.w = xml; break;\n\t\tdefault:\n\t\t\tif(xml == \"\" && ss == \"\") { cell.t = 'z'; }\n\t\t\telse { cell.t = 's'; cell.v = xlml_fixstr(ss||xml); }\n\t\t\tbreak;\n\t}\n\tsafe_format_xlml(cell, nf, o);\n\tif(o.cellFormula !== false) {\n\t\tif(cell.Formula) {\n\t\t\tvar fstr = unescapexml(cell.Formula);\n\t\t\t/* strictly speaking, the leading = is required but some writers omit */\n\t\t\tif(fstr.charCodeAt(0) == 61 /* = */) fstr = fstr.slice(1);\n\t\t\tcell.f = rc_to_a1(fstr, base);\n\t\t\tdelete cell.Formula;\n\t\t\tif(cell.ArrayRange == \"RC\") cell.F = rc_to_a1(\"RC:RC\", base);\n\t\t\telse if(cell.ArrayRange) {\n\t\t\t\tcell.F = rc_to_a1(cell.ArrayRange, base);\n\t\t\t\tarrayf.push([safe_decode_range(cell.F), cell.F]);\n\t\t\t}\n\t\t} else {\n\t\t\tfor(i = 0; i < arrayf.length; ++i)\n\t\t\t\tif(base.r >= arrayf[i][0].s.r && base.r <= arrayf[i][0].e.r)\n\t\t\t\t\tif(base.c >= arrayf[i][0].s.c && base.c <= arrayf[i][0].e.c)\n\t\t\t\t\t\tcell.F = arrayf[i][1];\n\t\t}\n\t}\n\tif(o.cellStyles) {\n\t\tinteriors.forEach(function(x) {\n\t\t\tif(!S.patternType && x.patternType) S.patternType = x.patternType;\n\t\t});\n\t\tcell.s = S;\n\t}\n\tif(cell.StyleID !== undefined) cell.ixfe = cell.StyleID;\n}\n\nfunction xlml_clean_comment(comment/*:any*/) {\n\tcomment.t = comment.v || \"\";\n\tcomment.t = comment.t.replace(/\\r\\n/g,\"\\n\").replace(/\\r/g,\"\\n\");\n\tcomment.v = comment.w = comment.ixfe = undefined;\n}\n\n/* TODO: Everything */\nfunction parse_xlml_xml(d, _opts)/*:Workbook*/ {\n\tvar opts = _opts || {};\n\tmake_ssf();\n\tvar str = debom(xlml_normalize(d));\n\tif(opts.type == 'binary' || opts.type == 'array' || opts.type == 'base64') {\n\t\tif(typeof $cptable !== 'undefined') str = $cptable.utils.decode(65001, char_codes(str));\n\t\telse str = utf8read(str);\n\t}\n\tvar opening = str.slice(0, 1024).toLowerCase(), ishtml = false;\n\topening = opening.replace(/\".*?\"/g, \"\");\n\tif((opening.indexOf(\">\") & 1023) > Math.min((opening.indexOf(\",\") & 1023), (opening.indexOf(\";\")&1023))) { var _o = dup(opts); _o.type = \"string\"; return PRN.to_workbook(str, _o); }\n\tif(opening.indexOf(\"= 0) ishtml = true; });\n\tif(ishtml) return html_to_workbook(str, opts);\n\n\tXLMLFormatMap = ({\n\t\t\"General Number\": \"General\",\n\t\t\"General Date\": table_fmt[22],\n\t\t\"Long Date\": \"dddd, mmmm dd, yyyy\",\n\t\t\"Medium Date\": table_fmt[15],\n\t\t\"Short Date\": table_fmt[14],\n\t\t\"Long Time\": table_fmt[19],\n\t\t\"Medium Time\": table_fmt[18],\n\t\t\"Short Time\": table_fmt[20],\n\t\t\"Currency\": '\"$\"#,##0.00_);[Red]\\\\(\"$\"#,##0.00\\\\)',\n\t\t\"Fixed\": table_fmt[2],\n\t\t\"Standard\": table_fmt[4],\n\t\t\"Percent\": table_fmt[10],\n\t\t\"Scientific\": table_fmt[11],\n\t\t\"Yes/No\": '\"Yes\";\"Yes\";\"No\";@',\n\t\t\"True/False\": '\"True\";\"True\";\"False\";@',\n\t\t\"On/Off\": '\"Yes\";\"Yes\";\"No\";@'\n\t}/*:any*/);\n\n\n\tvar Rn;\n\tvar state = [], tmp;\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\tvar sheets = {}, sheetnames/*:Array*/ = [], cursheet/*:Worksheet*/ = (opts.dense ? [] : {}), sheetname = \"\";\n\tvar cell = ({}/*:any*/), row = {};// eslint-disable-line no-unused-vars\n\tvar dtag = xlml_parsexmltag(''), didx = 0;\n\tvar c = 0, r = 0;\n\tvar refguess/*:Range*/ = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\tvar styles = {}, stag = {};\n\tvar ss = \"\", fidx = 0;\n\tvar merges/*:Array*/ = [];\n\tvar Props = {}, Custprops = {}, pidx = 0, cp = [];\n\tvar comments/*:Array*/ = [], comment/*:Comment*/ = ({}/*:any*/);\n\tvar cstys = [], csty, seencol = false;\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar rowinfo/*:Array*/ = [], rowobj = {}, cc = 0, rr = 0;\n\tvar Workbook/*:WBWBProps*/ = ({ Sheets:[], WBProps:{date1904:false} }/*:any*/), wsprops = {};\n\txlmlregex.lastIndex = 0;\n\tstr = str.replace(//mg,\"\");\n\tvar raw_Rn3 = \"\";\n\twhile((Rn = xlmlregex.exec(str))) switch((Rn[3] = (raw_Rn3 = Rn[3]).toLowerCase())) {\n\t\tcase 'data' /*case 'Data'*/:\n\t\t\tif(raw_Rn3 == \"data\") {\n\t\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(state[state.length-1][1]) break;\n\t\t\tif(Rn[1]==='/') parse_xlml_data(str.slice(didx, Rn.index), ss, dtag, state[state.length-1][0]==/*\"Comment\"*/\"comment\"?comment:cell, {c:c,r:r}, styles, cstys[c], row, arrayf, opts);\n\t\t\telse { ss = \"\"; dtag = xlml_parsexmltag(Rn[0]); didx = Rn.index + Rn[0].length; }\n\t\t\tbreak;\n\t\tcase 'cell' /*case 'Cell'*/:\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif(comments.length > 0) cell.c = comments;\n\t\t\t\tif((!opts.sheetRows || opts.sheetRows > r) && cell.v !== undefined) {\n\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\tif(!cursheet[r]) cursheet[r] = [];\n\t\t\t\t\t\tcursheet[r][c] = cell;\n\t\t\t\t\t} else cursheet[encode_col(c) + encode_row(r)] = cell;\n\t\t\t\t}\n\t\t\t\tif(cell.HRef) {\n\t\t\t\t\tcell.l = ({Target:unescapexml(cell.HRef)}/*:any*/);\n\t\t\t\t\tif(cell.HRefScreenTip) cell.l.Tooltip = cell.HRefScreenTip;\n\t\t\t\t\tdelete cell.HRef; delete cell.HRefScreenTip;\n\t\t\t\t}\n\t\t\t\tif(cell.MergeAcross || cell.MergeDown) {\n\t\t\t\t\tcc = c + (parseInt(cell.MergeAcross,10)|0);\n\t\t\t\t\trr = r + (parseInt(cell.MergeDown,10)|0);\n\t\t\t\t\tmerges.push({s:{c:c,r:r},e:{c:cc,r:rr}});\n\t\t\t\t}\n\t\t\t\tif(!opts.sheetStubs) { if(cell.MergeAcross) c = cc + 1; else ++c; }\n\t\t\t\telse if(cell.MergeAcross || cell.MergeDown) {\n\t\t\t\t\t/*:: if(!cc) cc = 0; if(!rr) rr = 0; */\n\t\t\t\t\tfor(var cma = c; cma <= cc; ++cma) {\n\t\t\t\t\t\tfor(var cmd = r; cmd <= rr; ++cmd) {\n\t\t\t\t\t\t\tif(cma > c || cmd > r) {\n\t\t\t\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\t\t\t\tif(!cursheet[cmd]) cursheet[cmd] = [];\n\t\t\t\t\t\t\t\t\tcursheet[cmd][cma] = {t:'z'};\n\t\t\t\t\t\t\t\t} else cursheet[encode_col(cma) + encode_row(cmd)] = {t:'z'};\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\tc = cc + 1;\n\t\t\t\t}\n\t\t\t\telse ++c;\n\t\t\t} else {\n\t\t\t\tcell = xlml_parsexmltagobj(Rn[0]);\n\t\t\t\tif(cell.Index) c = +cell.Index - 1;\n\t\t\t\tif(c < refguess.s.c) refguess.s.c = c;\n\t\t\t\tif(c > refguess.e.c) refguess.e.c = c;\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") ++c;\n\t\t\t\tcomments = [];\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'row' /*case 'Row'*/:\n\t\t\tif(Rn[1]==='/' || Rn[0].slice(-2) === \"/>\") {\n\t\t\t\tif(r < refguess.s.r) refguess.s.r = r;\n\t\t\t\tif(r > refguess.e.r) refguess.e.r = r;\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") {\n\t\t\t\t\trow = xlml_parsexmltag(Rn[0]);\n\t\t\t\t\tif(row.Index) r = +row.Index - 1;\n\t\t\t\t}\n\t\t\t\tc = 0; ++r;\n\t\t\t} else {\n\t\t\t\trow = xlml_parsexmltag(Rn[0]);\n\t\t\t\tif(row.Index) r = +row.Index - 1;\n\t\t\t\trowobj = {};\n\t\t\t\tif(row.AutoFitHeight == \"0\" || row.Height) {\n\t\t\t\t\trowobj.hpx = parseInt(row.Height, 10); rowobj.hpt = px2pt(rowobj.hpx);\n\t\t\t\t\trowinfo[r] = rowobj;\n\t\t\t\t}\n\t\t\t\tif(row.Hidden == \"1\") { rowobj.hidden = true; rowinfo[r] = rowobj; }\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'worksheet' /*case 'Worksheet'*/: /* TODO: read range from FullRows/FullColumns */\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));\n\t\t\t\tsheetnames.push(sheetname);\n\t\t\t\tif(refguess.s.r <= refguess.e.r && refguess.s.c <= refguess.e.c) {\n\t\t\t\t\tcursheet[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\tif(opts.sheetRows && opts.sheetRows <= refguess.e.r) {\n\t\t\t\t\t\tcursheet[\"!fullref\"] = cursheet[\"!ref\"];\n\t\t\t\t\t\trefguess.e.r = opts.sheetRows - 1;\n\t\t\t\t\t\tcursheet[\"!ref\"] = encode_range(refguess);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(merges.length) cursheet[\"!merges\"] = merges;\n\t\t\t\tif(cstys.length > 0) cursheet[\"!cols\"] = cstys;\n\t\t\t\tif(rowinfo.length > 0) cursheet[\"!rows\"] = rowinfo;\n\t\t\t\tsheets[sheetname] = cursheet;\n\t\t\t} else {\n\t\t\t\trefguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} };\n\t\t\t\tr = c = 0;\n\t\t\t\tstate.push([Rn[3], false]);\n\t\t\t\ttmp = xlml_parsexmltag(Rn[0]);\n\t\t\t\tsheetname = unescapexml(tmp.Name);\n\t\t\t\tcursheet = (opts.dense ? [] : {});\n\t\t\t\tmerges = [];\n\t\t\t\tarrayf = [];\n\t\t\t\trowinfo = [];\n\t\t\t\twsprops = {name:sheetname, Hidden:0};\n\t\t\t\tWorkbook.Sheets.push(wsprops);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 'table' /*case 'Table'*/:\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse if(Rn[0].slice(-2) == \"/>\") break;\n\t\t\telse {\n\t\t\t\tstate.push([Rn[3], false]);\n\t\t\t\tcstys = []; seencol = false;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'style' /*case 'Style'*/:\n\t\t\tif(Rn[1]==='/') process_style_xlml(styles, stag, opts);\n\t\t\telse stag = xlml_parsexmltag(Rn[0]);\n\t\t\tbreak;\n\n\t\tcase 'numberformat' /*case 'NumberFormat'*/:\n\t\t\tstag.nf = unescapexml(xlml_parsexmltag(Rn[0]).Format || \"General\");\n\t\t\tif(XLMLFormatMap[stag.nf]) stag.nf = XLMLFormatMap[stag.nf];\n\t\t\tfor(var ssfidx = 0; ssfidx != 0x188; ++ssfidx) if(table_fmt[ssfidx] == stag.nf) break;\n\t\t\tif(ssfidx == 0x188) for(ssfidx = 0x39; ssfidx != 0x188; ++ssfidx) if(table_fmt[ssfidx] == null) { SSF_load(stag.nf, ssfidx); break; }\n\t\t\tbreak;\n\n\t\tcase 'column' /*case 'Column'*/:\n\t\t\tif(state[state.length-1][0] !== /*'Table'*/'table') break;\n\t\t\tcsty = xlml_parsexmltag(Rn[0]);\n\t\t\tif(csty.Hidden) { csty.hidden = true; delete csty.Hidden; }\n\t\t\tif(csty.Width) csty.wpx = parseInt(csty.Width, 10);\n\t\t\tif(!seencol && csty.wpx > 10) {\n\t\t\t\tseencol = true; MDW = DEF_MDW; //find_mdw_wpx(csty.wpx);\n\t\t\t\tfor(var _col = 0; _col < cstys.length; ++_col) if(cstys[_col]) process_col(cstys[_col]);\n\t\t\t}\n\t\t\tif(seencol) process_col(csty);\n\t\t\tcstys[(csty.Index-1||cstys.length)] = csty;\n\t\t\tfor(var i = 0; i < +csty.Span; ++i) cstys[cstys.length] = dup(csty);\n\t\t\tbreak;\n\n\t\tcase 'namedrange' /*case 'NamedRange'*/:\n\t\t\tif(Rn[1]==='/') break;\n\t\t\tif(!Workbook.Names) Workbook.Names = [];\n\t\t\tvar _NamedRange = parsexmltag(Rn[0]);\n\t\t\tvar _DefinedName/*:DefinedName*/ = ({\n\t\t\t\tName: _NamedRange.Name,\n\t\t\t\tRef: rc_to_a1(_NamedRange.RefersTo.slice(1), {r:0, c:0})\n\t\t\t}/*:any*/);\n\t\t\tif(Workbook.Sheets.length>0) _DefinedName.Sheet=Workbook.Sheets.length-1;\n\t\t\t/*:: if(Workbook.Names) */Workbook.Names.push(_DefinedName);\n\t\t\tbreak;\n\n\t\tcase 'namedcell' /*case 'NamedCell'*/: break;\n\t\tcase 'b' /*case 'B'*/: break;\n\t\tcase 'i' /*case 'I'*/: break;\n\t\tcase 'u' /*case 'U'*/: break;\n\t\tcase 's' /*case 'S'*/: break;\n\t\tcase 'em' /*case 'EM'*/: break;\n\t\tcase 'h2' /*case 'H2'*/: break;\n\t\tcase 'h3' /*case 'H3'*/: break;\n\t\tcase 'sub' /*case 'Sub'*/: break;\n\t\tcase 'sup' /*case 'Sup'*/: break;\n\t\tcase 'span' /*case 'Span'*/: break;\n\t\tcase 'alignment' /*case 'Alignment'*/:\n\t\t\tbreak;\n\t\tcase 'borders' /*case 'Borders'*/: break;\n\t\tcase 'border' /*case 'Border'*/: break;\n\t\tcase 'font' /*case 'Font'*/:\n\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\telse if(Rn[1]===\"/\") ss += str.slice(fidx, Rn.index);\n\t\t\telse fidx = Rn.index + Rn[0].length;\n\t\t\tbreak;\n\t\tcase 'interior' /*case 'Interior'*/:\n\t\t\tif(!opts.cellStyles) break;\n\t\t\tstag.Interior = xlml_parsexmltag(Rn[0]);\n\t\t\tbreak;\n\t\tcase 'protection' /*case 'Protection'*/: break;\n\n\t\tcase 'author' /*case 'Author'*/:\n\t\tcase 'title' /*case 'Title'*/:\n\t\tcase 'description' /*case 'Description'*/:\n\t\tcase 'created' /*case 'Created'*/:\n\t\tcase 'keywords' /*case 'Keywords'*/:\n\t\tcase 'subject' /*case 'Subject'*/:\n\t\tcase 'category' /*case 'Category'*/:\n\t\tcase 'company' /*case 'Company'*/:\n\t\tcase 'lastauthor' /*case 'LastAuthor'*/:\n\t\tcase 'lastsaved' /*case 'LastSaved'*/:\n\t\tcase 'lastprinted' /*case 'LastPrinted'*/:\n\t\tcase 'version' /*case 'Version'*/:\n\t\tcase 'revision' /*case 'Revision'*/:\n\t\tcase 'totaltime' /*case 'TotalTime'*/:\n\t\tcase 'hyperlinkbase' /*case 'HyperlinkBase'*/:\n\t\tcase 'manager' /*case 'Manager'*/:\n\t\tcase 'contentstatus' /*case 'ContentStatus'*/:\n\t\tcase 'identifier' /*case 'Identifier'*/:\n\t\tcase 'language' /*case 'Language'*/:\n\t\tcase 'appname' /*case 'AppName'*/:\n\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\telse if(Rn[1]===\"/\") xlml_set_prop(Props, raw_Rn3, str.slice(pidx, Rn.index));\n\t\t\telse pidx = Rn.index + Rn[0].length;\n\t\t\tbreak;\n\t\tcase 'paragraphs' /*case 'Paragraphs'*/: break;\n\n\t\tcase 'styles' /*case 'Styles'*/:\n\t\tcase 'workbook' /*case 'Workbook'*/:\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse state.push([Rn[3], false]);\n\t\t\tbreak;\n\n\t\tcase 'comment' /*case 'Comment'*/:\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));\n\t\t\t\txlml_clean_comment(comment);\n\t\t\t\tcomments.push(comment);\n\t\t\t} else {\n\t\t\t\tstate.push([Rn[3], false]);\n\t\t\t\ttmp = xlml_parsexmltag(Rn[0]);\n\t\t\t\tcomment = ({a:tmp.Author}/*:any*/);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'autofilter' /*case 'AutoFilter'*/:\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\tvar AutoFilter = xlml_parsexmltag(Rn[0]);\n\t\t\t\tcursheet['!autofilter'] = { ref:rc_to_a1(AutoFilter.Range).replace(/\\$/g,\"\") };\n\t\t\t\tstate.push([Rn[3], true]);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'name' /*case 'Name'*/: break;\n\n\t\tcase 'datavalidation' /*case 'DataValidation'*/:\n\t\t\tif(Rn[1]==='/'){\n\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));\n\t\t\t} else {\n\t\t\t\tif(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase 'pixelsperinch' /*case 'PixelsPerInch'*/:\n\t\t\tbreak;\n\t\tcase 'componentoptions' /*case 'ComponentOptions'*/:\n\t\tcase 'documentproperties' /*case 'DocumentProperties'*/:\n\t\tcase 'customdocumentproperties' /*case 'CustomDocumentProperties'*/:\n\t\tcase 'officedocumentsettings' /*case 'OfficeDocumentSettings'*/:\n\t\tcase 'pivottable' /*case 'PivotTable'*/:\n\t\tcase 'pivotcache' /*case 'PivotCache'*/:\n\t\tcase 'names' /*case 'Names'*/:\n\t\tcase 'mapinfo' /*case 'MapInfo'*/:\n\t\tcase 'pagebreaks' /*case 'PageBreaks'*/:\n\t\tcase 'querytable' /*case 'QueryTable'*/:\n\t\tcase 'sorting' /*case 'Sorting'*/:\n\t\tcase 'schema' /*case 'Schema'*/: //case 'data' /*case 'data'*/:\n\t\tcase 'conditionalformatting' /*case 'ConditionalFormatting'*/:\n\t\tcase 'smarttagtype' /*case 'SmartTagType'*/:\n\t\tcase 'smarttags' /*case 'SmartTags'*/:\n\t\tcase 'excelworkbook' /*case 'ExcelWorkbook'*/:\n\t\tcase 'workbookoptions' /*case 'WorkbookOptions'*/:\n\t\tcase 'worksheetoptions' /*case 'WorksheetOptions'*/:\n\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error(\"Bad state: \"+tmp.join(\"|\"));}\n\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\tbreak;\n\n\t\tcase 'null' /*case 'Null'*/: break;\n\n\t\tdefault:\n\t\t\t/* FODS file root is */\n\t\t\tif(state.length == 0 && Rn[3] == \"document\") return parse_fods(str, opts);\n\t\t\t/* UOS file root is */\n\t\t\tif(state.length == 0 && Rn[3] == \"uof\"/*\"UOF\"*/) return parse_fods(str, opts);\n\n\t\t\tvar seen = true;\n\t\t\tswitch(state[state.length-1][0]) {\n\t\t\t\t/* OfficeDocumentSettings */\n\t\t\t\tcase 'officedocumentsettings' /*case 'OfficeDocumentSettings'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'allowpng' /*case 'AllowPNG'*/: break;\n\t\t\t\t\tcase 'removepersonalinformation' /*case 'RemovePersonalInformation'*/: break;\n\t\t\t\t\tcase 'downloadcomponents' /*case 'DownloadComponents'*/: break;\n\t\t\t\t\tcase 'locationofcomponents' /*case 'LocationOfComponents'*/: break;\n\t\t\t\t\tcase 'colors' /*case 'Colors'*/: break;\n\t\t\t\t\tcase 'color' /*case 'Color'*/: break;\n\t\t\t\t\tcase 'index' /*case 'Index'*/: break;\n\t\t\t\t\tcase 'rgb' /*case 'RGB'*/: break;\n\t\t\t\t\tcase 'targetscreensize' /*case 'TargetScreenSize'*/: break;\n\t\t\t\t\tcase 'readonlyrecommended' /*case 'ReadOnlyRecommended'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* ComponentOptions */\n\t\t\t\tcase 'componentoptions' /*case 'ComponentOptions'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'toolbar' /*case 'Toolbar'*/: break;\n\t\t\t\t\tcase 'hideofficelogo' /*case 'HideOfficeLogo'*/: break;\n\t\t\t\t\tcase 'spreadsheetautofit' /*case 'SpreadsheetAutoFit'*/: break;\n\t\t\t\t\tcase 'label' /*case 'Label'*/: break;\n\t\t\t\t\tcase 'caption' /*case 'Caption'*/: break;\n\t\t\t\t\tcase 'maxheight' /*case 'MaxHeight'*/: break;\n\t\t\t\t\tcase 'maxwidth' /*case 'MaxWidth'*/: break;\n\t\t\t\t\tcase 'nextsheetnumber' /*case 'NextSheetNumber'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* ExcelWorkbook */\n\t\t\t\tcase 'excelworkbook' /*case 'ExcelWorkbook'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'date1904' /*case 'Date1904'*/:\n\t\t\t\t\t\t/*:: if(!Workbook.WBProps) Workbook.WBProps = {}; */\n\t\t\t\t\t\tWorkbook.WBProps.date1904 = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'windowheight' /*case 'WindowHeight'*/: break;\n\t\t\t\t\tcase 'windowwidth' /*case 'WindowWidth'*/: break;\n\t\t\t\t\tcase 'windowtopx' /*case 'WindowTopX'*/: break;\n\t\t\t\t\tcase 'windowtopy' /*case 'WindowTopY'*/: break;\n\t\t\t\t\tcase 'tabratio' /*case 'TabRatio'*/: break;\n\t\t\t\t\tcase 'protectstructure' /*case 'ProtectStructure'*/: break;\n\t\t\t\t\tcase 'protectwindow' /*case 'ProtectWindow'*/: break;\n\t\t\t\t\tcase 'protectwindows' /*case 'ProtectWindows'*/: break;\n\t\t\t\t\tcase 'activesheet' /*case 'ActiveSheet'*/: break;\n\t\t\t\t\tcase 'displayinknotes' /*case 'DisplayInkNotes'*/: break;\n\t\t\t\t\tcase 'firstvisiblesheet' /*case 'FirstVisibleSheet'*/: break;\n\t\t\t\t\tcase 'supbook' /*case 'SupBook'*/: break;\n\t\t\t\t\tcase 'sheetname' /*case 'SheetName'*/: break;\n\t\t\t\t\tcase 'sheetindex' /*case 'SheetIndex'*/: break;\n\t\t\t\t\tcase 'sheetindexfirst' /*case 'SheetIndexFirst'*/: break;\n\t\t\t\t\tcase 'sheetindexlast' /*case 'SheetIndexLast'*/: break;\n\t\t\t\t\tcase 'dll' /*case 'Dll'*/: break;\n\t\t\t\t\tcase 'acceptlabelsinformulas' /*case 'AcceptLabelsInFormulas'*/: break;\n\t\t\t\t\tcase 'donotsavelinkvalues' /*case 'DoNotSaveLinkValues'*/: break;\n\t\t\t\t\tcase 'iteration' /*case 'Iteration'*/: break;\n\t\t\t\t\tcase 'maxiterations' /*case 'MaxIterations'*/: break;\n\t\t\t\t\tcase 'maxchange' /*case 'MaxChange'*/: break;\n\t\t\t\t\tcase 'path' /*case 'Path'*/: break;\n\t\t\t\t\tcase 'xct' /*case 'Xct'*/: break;\n\t\t\t\t\tcase 'count' /*case 'Count'*/: break;\n\t\t\t\t\tcase 'selectedsheets' /*case 'SelectedSheets'*/: break;\n\t\t\t\t\tcase 'calculation' /*case 'Calculation'*/: break;\n\t\t\t\t\tcase 'uncalced' /*case 'Uncalced'*/: break;\n\t\t\t\t\tcase 'startupprompt' /*case 'StartupPrompt'*/: break;\n\t\t\t\t\tcase 'crn' /*case 'Crn'*/: break;\n\t\t\t\t\tcase 'externname' /*case 'ExternName'*/: break;\n\t\t\t\t\tcase 'formula' /*case 'Formula'*/: break;\n\t\t\t\t\tcase 'colfirst' /*case 'ColFirst'*/: break;\n\t\t\t\t\tcase 'collast' /*case 'ColLast'*/: break;\n\t\t\t\t\tcase 'wantadvise' /*case 'WantAdvise'*/: break;\n\t\t\t\t\tcase 'boolean' /*case 'Boolean'*/: break;\n\t\t\t\t\tcase 'error' /*case 'Error'*/: break;\n\t\t\t\t\tcase 'text' /*case 'Text'*/: break;\n\t\t\t\t\tcase 'ole' /*case 'OLE'*/: break;\n\t\t\t\t\tcase 'noautorecover' /*case 'NoAutoRecover'*/: break;\n\t\t\t\t\tcase 'publishobjects' /*case 'PublishObjects'*/: break;\n\t\t\t\t\tcase 'donotcalculatebeforesave' /*case 'DoNotCalculateBeforeSave'*/: break;\n\t\t\t\t\tcase 'number' /*case 'Number'*/: break;\n\t\t\t\t\tcase 'refmoder1c1' /*case 'RefModeR1C1'*/: break;\n\t\t\t\t\tcase 'embedsavesmarttags' /*case 'EmbedSaveSmartTags'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* WorkbookOptions */\n\t\t\t\tcase 'workbookoptions' /*case 'WorkbookOptions'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'owcversion' /*case 'OWCVersion'*/: break;\n\t\t\t\t\tcase 'height' /*case 'Height'*/: break;\n\t\t\t\t\tcase 'width' /*case 'Width'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* WorksheetOptions */\n\t\t\t\tcase 'worksheetoptions' /*case 'WorksheetOptions'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'visible' /*case 'Visible'*/:\n\t\t\t\t\t\tif(Rn[0].slice(-2) === \"/>\"){/* empty */}\n\t\t\t\t\t\telse if(Rn[1]===\"/\") switch(str.slice(pidx, Rn.index)) {\n\t\t\t\t\t\t\tcase \"SheetHidden\": wsprops.Hidden = 1; break;\n\t\t\t\t\t\t\tcase \"SheetVeryHidden\": wsprops.Hidden = 2; break;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse pidx = Rn.index + Rn[0].length;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'header' /*case 'Header'*/:\n\t\t\t\t\t\tif(!cursheet['!margins']) default_margins(cursheet['!margins']={}, 'xlml');\n\t\t\t\t\t\tif(!isNaN(+parsexmltag(Rn[0]).Margin)) cursheet['!margins'].header = +parsexmltag(Rn[0]).Margin;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'footer' /*case 'Footer'*/:\n\t\t\t\t\t\tif(!cursheet['!margins']) default_margins(cursheet['!margins']={}, 'xlml');\n\t\t\t\t\t\tif(!isNaN(+parsexmltag(Rn[0]).Margin)) cursheet['!margins'].footer = +parsexmltag(Rn[0]).Margin;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'pagemargins' /*case 'PageMargins'*/:\n\t\t\t\t\t\tvar pagemargins = parsexmltag(Rn[0]);\n\t\t\t\t\t\tif(!cursheet['!margins']) default_margins(cursheet['!margins']={},'xlml');\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Top)) cursheet['!margins'].top = +pagemargins.Top;\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Left)) cursheet['!margins'].left = +pagemargins.Left;\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Right)) cursheet['!margins'].right = +pagemargins.Right;\n\t\t\t\t\t\tif(!isNaN(+pagemargins.Bottom)) cursheet['!margins'].bottom = +pagemargins.Bottom;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'displayrighttoleft' /*case 'DisplayRightToLeft'*/:\n\t\t\t\t\t\tif(!Workbook.Views) Workbook.Views = [];\n\t\t\t\t\t\tif(!Workbook.Views[0]) Workbook.Views[0] = {};\n\t\t\t\t\t\tWorkbook.Views[0].RTL = true;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'freezepanes' /*case 'FreezePanes'*/: break;\n\t\t\t\t\tcase 'frozennosplit' /*case 'FrozenNoSplit'*/: break;\n\n\t\t\t\t\tcase 'splithorizontal' /*case 'SplitHorizontal'*/:\n\t\t\t\t\tcase 'splitvertical' /*case 'SplitVertical'*/:\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'donotdisplaygridlines' /*case 'DoNotDisplayGridlines'*/:\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'activerow' /*case 'ActiveRow'*/: break;\n\t\t\t\t\tcase 'activecol' /*case 'ActiveCol'*/: break;\n\t\t\t\t\tcase 'toprowbottompane' /*case 'TopRowBottomPane'*/: break;\n\t\t\t\t\tcase 'leftcolumnrightpane' /*case 'LeftColumnRightPane'*/: break;\n\n\t\t\t\t\tcase 'unsynced' /*case 'Unsynced'*/: break;\n\t\t\t\t\tcase 'print' /*case 'Print'*/: break;\n\t\t\t\t\tcase 'printerrors' /*case 'PrintErrors'*/: break;\n\t\t\t\t\tcase 'panes' /*case 'Panes'*/: break;\n\t\t\t\t\tcase 'scale' /*case 'Scale'*/: break;\n\t\t\t\t\tcase 'pane' /*case 'Pane'*/: break;\n\t\t\t\t\tcase 'number' /*case 'Number'*/: break;\n\t\t\t\t\tcase 'layout' /*case 'Layout'*/: break;\n\t\t\t\t\tcase 'pagesetup' /*case 'PageSetup'*/: break;\n\t\t\t\t\tcase 'selected' /*case 'Selected'*/: break;\n\t\t\t\t\tcase 'protectobjects' /*case 'ProtectObjects'*/: break;\n\t\t\t\t\tcase 'enableselection' /*case 'EnableSelection'*/: break;\n\t\t\t\t\tcase 'protectscenarios' /*case 'ProtectScenarios'*/: break;\n\t\t\t\t\tcase 'validprinterinfo' /*case 'ValidPrinterInfo'*/: break;\n\t\t\t\t\tcase 'horizontalresolution' /*case 'HorizontalResolution'*/: break;\n\t\t\t\t\tcase 'verticalresolution' /*case 'VerticalResolution'*/: break;\n\t\t\t\t\tcase 'numberofcopies' /*case 'NumberofCopies'*/: break;\n\t\t\t\t\tcase 'activepane' /*case 'ActivePane'*/: break;\n\t\t\t\t\tcase 'toprowvisible' /*case 'TopRowVisible'*/: break;\n\t\t\t\t\tcase 'leftcolumnvisible' /*case 'LeftColumnVisible'*/: break;\n\t\t\t\t\tcase 'fittopage' /*case 'FitToPage'*/: break;\n\t\t\t\t\tcase 'rangeselection' /*case 'RangeSelection'*/: break;\n\t\t\t\t\tcase 'papersizeindex' /*case 'PaperSizeIndex'*/: break;\n\t\t\t\t\tcase 'pagelayoutzoom' /*case 'PageLayoutZoom'*/: break;\n\t\t\t\t\tcase 'pagebreakzoom' /*case 'PageBreakZoom'*/: break;\n\t\t\t\t\tcase 'filteron' /*case 'FilterOn'*/: break;\n\t\t\t\t\tcase 'fitwidth' /*case 'FitWidth'*/: break;\n\t\t\t\t\tcase 'fitheight' /*case 'FitHeight'*/: break;\n\t\t\t\t\tcase 'commentslayout' /*case 'CommentsLayout'*/: break;\n\t\t\t\t\tcase 'zoom' /*case 'Zoom'*/: break;\n\t\t\t\t\tcase 'lefttoright' /*case 'LeftToRight'*/: break;\n\t\t\t\t\tcase 'gridlines' /*case 'Gridlines'*/: break;\n\t\t\t\t\tcase 'allowsort' /*case 'AllowSort'*/: break;\n\t\t\t\t\tcase 'allowfilter' /*case 'AllowFilter'*/: break;\n\t\t\t\t\tcase 'allowinsertrows' /*case 'AllowInsertRows'*/: break;\n\t\t\t\t\tcase 'allowdeleterows' /*case 'AllowDeleteRows'*/: break;\n\t\t\t\t\tcase 'allowinsertcols' /*case 'AllowInsertCols'*/: break;\n\t\t\t\t\tcase 'allowdeletecols' /*case 'AllowDeleteCols'*/: break;\n\t\t\t\t\tcase 'allowinserthyperlinks' /*case 'AllowInsertHyperlinks'*/: break;\n\t\t\t\t\tcase 'allowformatcells' /*case 'AllowFormatCells'*/: break;\n\t\t\t\t\tcase 'allowsizecols' /*case 'AllowSizeCols'*/: break;\n\t\t\t\t\tcase 'allowsizerows' /*case 'AllowSizeRows'*/: break;\n\t\t\t\t\tcase 'nosummaryrowsbelowdetail' /*case 'NoSummaryRowsBelowDetail'*/:\n\t\t\t\t\t\tif(!cursheet[\"!outline\"]) cursheet[\"!outline\"] = {};\n\t\t\t\t\t\tcursheet[\"!outline\"].above = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'tabcolorindex' /*case 'TabColorIndex'*/: break;\n\t\t\t\t\tcase 'donotdisplayheadings' /*case 'DoNotDisplayHeadings'*/: break;\n\t\t\t\t\tcase 'showpagelayoutzoom' /*case 'ShowPageLayoutZoom'*/: break;\n\t\t\t\t\tcase 'nosummarycolumnsrightdetail' /*case 'NoSummaryColumnsRightDetail'*/:\n\t\t\t\t\t\tif(!cursheet[\"!outline\"]) cursheet[\"!outline\"] = {};\n\t\t\t\t\t\tcursheet[\"!outline\"].left = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'blackandwhite' /*case 'BlackAndWhite'*/: break;\n\t\t\t\t\tcase 'donotdisplayzeros' /*case 'DoNotDisplayZeros'*/: break;\n\t\t\t\t\tcase 'displaypagebreak' /*case 'DisplayPageBreak'*/: break;\n\t\t\t\t\tcase 'rowcolheadings' /*case 'RowColHeadings'*/: break;\n\t\t\t\t\tcase 'donotdisplayoutline' /*case 'DoNotDisplayOutline'*/: break;\n\t\t\t\t\tcase 'noorientation' /*case 'NoOrientation'*/: break;\n\t\t\t\t\tcase 'allowusepivottables' /*case 'AllowUsePivotTables'*/: break;\n\t\t\t\t\tcase 'zeroheight' /*case 'ZeroHeight'*/: break;\n\t\t\t\t\tcase 'viewablerange' /*case 'ViewableRange'*/: break;\n\t\t\t\t\tcase 'selection' /*case 'Selection'*/: break;\n\t\t\t\t\tcase 'protectcontents' /*case 'ProtectContents'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* PivotTable */\n\t\t\t\tcase 'pivottable' /*case 'PivotTable'*/: case 'pivotcache' /*case 'PivotCache'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'immediateitemsondrop' /*case 'ImmediateItemsOnDrop'*/: break;\n\t\t\t\t\tcase 'showpagemultipleitemlabel' /*case 'ShowPageMultipleItemLabel'*/: break;\n\t\t\t\t\tcase 'compactrowindent' /*case 'CompactRowIndent'*/: break;\n\t\t\t\t\tcase 'location' /*case 'Location'*/: break;\n\t\t\t\t\tcase 'pivotfield' /*case 'PivotField'*/: break;\n\t\t\t\t\tcase 'orientation' /*case 'Orientation'*/: break;\n\t\t\t\t\tcase 'layoutform' /*case 'LayoutForm'*/: break;\n\t\t\t\t\tcase 'layoutsubtotallocation' /*case 'LayoutSubtotalLocation'*/: break;\n\t\t\t\t\tcase 'layoutcompactrow' /*case 'LayoutCompactRow'*/: break;\n\t\t\t\t\tcase 'position' /*case 'Position'*/: break;\n\t\t\t\t\tcase 'pivotitem' /*case 'PivotItem'*/: break;\n\t\t\t\t\tcase 'datatype' /*case 'DataType'*/: break;\n\t\t\t\t\tcase 'datafield' /*case 'DataField'*/: break;\n\t\t\t\t\tcase 'sourcename' /*case 'SourceName'*/: break;\n\t\t\t\t\tcase 'parentfield' /*case 'ParentField'*/: break;\n\t\t\t\t\tcase 'ptlineitems' /*case 'PTLineItems'*/: break;\n\t\t\t\t\tcase 'ptlineitem' /*case 'PTLineItem'*/: break;\n\t\t\t\t\tcase 'countofsameitems' /*case 'CountOfSameItems'*/: break;\n\t\t\t\t\tcase 'item' /*case 'Item'*/: break;\n\t\t\t\t\tcase 'itemtype' /*case 'ItemType'*/: break;\n\t\t\t\t\tcase 'ptsource' /*case 'PTSource'*/: break;\n\t\t\t\t\tcase 'cacheindex' /*case 'CacheIndex'*/: break;\n\t\t\t\t\tcase 'consolidationreference' /*case 'ConsolidationReference'*/: break;\n\t\t\t\t\tcase 'filename' /*case 'FileName'*/: break;\n\t\t\t\t\tcase 'reference' /*case 'Reference'*/: break;\n\t\t\t\t\tcase 'nocolumngrand' /*case 'NoColumnGrand'*/: break;\n\t\t\t\t\tcase 'norowgrand' /*case 'NoRowGrand'*/: break;\n\t\t\t\t\tcase 'blanklineafteritems' /*case 'BlankLineAfterItems'*/: break;\n\t\t\t\t\tcase 'hidden' /*case 'Hidden'*/: break;\n\t\t\t\t\tcase 'subtotal' /*case 'Subtotal'*/: break;\n\t\t\t\t\tcase 'basefield' /*case 'BaseField'*/: break;\n\t\t\t\t\tcase 'mapchilditems' /*case 'MapChildItems'*/: break;\n\t\t\t\t\tcase 'function' /*case 'Function'*/: break;\n\t\t\t\t\tcase 'refreshonfileopen' /*case 'RefreshOnFileOpen'*/: break;\n\t\t\t\t\tcase 'printsettitles' /*case 'PrintSetTitles'*/: break;\n\t\t\t\t\tcase 'mergelabels' /*case 'MergeLabels'*/: break;\n\t\t\t\t\tcase 'defaultversion' /*case 'DefaultVersion'*/: break;\n\t\t\t\t\tcase 'refreshname' /*case 'RefreshName'*/: break;\n\t\t\t\t\tcase 'refreshdate' /*case 'RefreshDate'*/: break;\n\t\t\t\t\tcase 'refreshdatecopy' /*case 'RefreshDateCopy'*/: break;\n\t\t\t\t\tcase 'versionlastrefresh' /*case 'VersionLastRefresh'*/: break;\n\t\t\t\t\tcase 'versionlastupdate' /*case 'VersionLastUpdate'*/: break;\n\t\t\t\t\tcase 'versionupdateablemin' /*case 'VersionUpdateableMin'*/: break;\n\t\t\t\t\tcase 'versionrefreshablemin' /*case 'VersionRefreshableMin'*/: break;\n\t\t\t\t\tcase 'calculation' /*case 'Calculation'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* PageBreaks */\n\t\t\t\tcase 'pagebreaks' /*case 'PageBreaks'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'colbreaks' /*case 'ColBreaks'*/: break;\n\t\t\t\t\tcase 'colbreak' /*case 'ColBreak'*/: break;\n\t\t\t\t\tcase 'rowbreaks' /*case 'RowBreaks'*/: break;\n\t\t\t\t\tcase 'rowbreak' /*case 'RowBreak'*/: break;\n\t\t\t\t\tcase 'colstart' /*case 'ColStart'*/: break;\n\t\t\t\t\tcase 'colend' /*case 'ColEnd'*/: break;\n\t\t\t\t\tcase 'rowend' /*case 'RowEnd'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* AutoFilter */\n\t\t\t\tcase 'autofilter' /*case 'AutoFilter'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'autofiltercolumn' /*case 'AutoFilterColumn'*/: break;\n\t\t\t\t\tcase 'autofiltercondition' /*case 'AutoFilterCondition'*/: break;\n\t\t\t\t\tcase 'autofilterand' /*case 'AutoFilterAnd'*/: break;\n\t\t\t\t\tcase 'autofilteror' /*case 'AutoFilterOr'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* QueryTable */\n\t\t\t\tcase 'querytable' /*case 'QueryTable'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'id' /*case 'Id'*/: break;\n\t\t\t\t\tcase 'autoformatfont' /*case 'AutoFormatFont'*/: break;\n\t\t\t\t\tcase 'autoformatpattern' /*case 'AutoFormatPattern'*/: break;\n\t\t\t\t\tcase 'querysource' /*case 'QuerySource'*/: break;\n\t\t\t\t\tcase 'querytype' /*case 'QueryType'*/: break;\n\t\t\t\t\tcase 'enableredirections' /*case 'EnableRedirections'*/: break;\n\t\t\t\t\tcase 'refreshedinxl9' /*case 'RefreshedInXl9'*/: break;\n\t\t\t\t\tcase 'urlstring' /*case 'URLString'*/: break;\n\t\t\t\t\tcase 'htmltables' /*case 'HTMLTables'*/: break;\n\t\t\t\t\tcase 'connection' /*case 'Connection'*/: break;\n\t\t\t\t\tcase 'commandtext' /*case 'CommandText'*/: break;\n\t\t\t\t\tcase 'refreshinfo' /*case 'RefreshInfo'*/: break;\n\t\t\t\t\tcase 'notitles' /*case 'NoTitles'*/: break;\n\t\t\t\t\tcase 'nextid' /*case 'NextId'*/: break;\n\t\t\t\t\tcase 'columninfo' /*case 'ColumnInfo'*/: break;\n\t\t\t\t\tcase 'overwritecells' /*case 'OverwriteCells'*/: break;\n\t\t\t\t\tcase 'donotpromptforfile' /*case 'DoNotPromptForFile'*/: break;\n\t\t\t\t\tcase 'textwizardsettings' /*case 'TextWizardSettings'*/: break;\n\t\t\t\t\tcase 'source' /*case 'Source'*/: break;\n\t\t\t\t\tcase 'number' /*case 'Number'*/: break;\n\t\t\t\t\tcase 'decimal' /*case 'Decimal'*/: break;\n\t\t\t\t\tcase 'thousandseparator' /*case 'ThousandSeparator'*/: break;\n\t\t\t\t\tcase 'trailingminusnumbers' /*case 'TrailingMinusNumbers'*/: break;\n\t\t\t\t\tcase 'formatsettings' /*case 'FormatSettings'*/: break;\n\t\t\t\t\tcase 'fieldtype' /*case 'FieldType'*/: break;\n\t\t\t\t\tcase 'delimiters' /*case 'Delimiters'*/: break;\n\t\t\t\t\tcase 'tab' /*case 'Tab'*/: break;\n\t\t\t\t\tcase 'comma' /*case 'Comma'*/: break;\n\t\t\t\t\tcase 'autoformatname' /*case 'AutoFormatName'*/: break;\n\t\t\t\t\tcase 'versionlastedit' /*case 'VersionLastEdit'*/: break;\n\t\t\t\t\tcase 'versionlastrefresh' /*case 'VersionLastRefresh'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\tcase 'datavalidation' /*case 'DataValidation'*/:\n\t\t\t\tswitch(Rn[3]) {\n\t\t\t\t\tcase 'range' /*case 'Range'*/: break;\n\n\t\t\t\t\tcase 'type' /*case 'Type'*/: break;\n\t\t\t\t\tcase 'min' /*case 'Min'*/: break;\n\t\t\t\t\tcase 'max' /*case 'Max'*/: break;\n\t\t\t\t\tcase 'sort' /*case 'Sort'*/: break;\n\t\t\t\t\tcase 'descending' /*case 'Descending'*/: break;\n\t\t\t\t\tcase 'order' /*case 'Order'*/: break;\n\t\t\t\t\tcase 'casesensitive' /*case 'CaseSensitive'*/: break;\n\t\t\t\t\tcase 'value' /*case 'Value'*/: break;\n\t\t\t\t\tcase 'errorstyle' /*case 'ErrorStyle'*/: break;\n\t\t\t\t\tcase 'errormessage' /*case 'ErrorMessage'*/: break;\n\t\t\t\t\tcase 'errortitle' /*case 'ErrorTitle'*/: break;\n\t\t\t\t\tcase 'inputmessage' /*case 'InputMessage'*/: break;\n\t\t\t\t\tcase 'inputtitle' /*case 'InputTitle'*/: break;\n\t\t\t\t\tcase 'combohide' /*case 'ComboHide'*/: break;\n\t\t\t\t\tcase 'inputhide' /*case 'InputHide'*/: break;\n\t\t\t\t\tcase 'condition' /*case 'Condition'*/: break;\n\t\t\t\t\tcase 'qualifier' /*case 'Qualifier'*/: break;\n\t\t\t\t\tcase 'useblank' /*case 'UseBlank'*/: break;\n\t\t\t\t\tcase 'value1' /*case 'Value1'*/: break;\n\t\t\t\t\tcase 'value2' /*case 'Value2'*/: break;\n\t\t\t\t\tcase 'format' /*case 'Format'*/: break;\n\n\t\t\t\t\tcase 'cellrangelist' /*case 'CellRangeList'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\tcase 'sorting' /*case 'Sorting'*/:\n\t\t\t\tcase 'conditionalformatting' /*case 'ConditionalFormatting'*/:\n\t\t\t\tswitch(Rn[3]) {\n\t\t\t\t\tcase 'range' /*case 'Range'*/: break;\n\t\t\t\t\tcase 'type' /*case 'Type'*/: break;\n\t\t\t\t\tcase 'min' /*case 'Min'*/: break;\n\t\t\t\t\tcase 'max' /*case 'Max'*/: break;\n\t\t\t\t\tcase 'sort' /*case 'Sort'*/: break;\n\t\t\t\t\tcase 'descending' /*case 'Descending'*/: break;\n\t\t\t\t\tcase 'order' /*case 'Order'*/: break;\n\t\t\t\t\tcase 'casesensitive' /*case 'CaseSensitive'*/: break;\n\t\t\t\t\tcase 'value' /*case 'Value'*/: break;\n\t\t\t\t\tcase 'errorstyle' /*case 'ErrorStyle'*/: break;\n\t\t\t\t\tcase 'errormessage' /*case 'ErrorMessage'*/: break;\n\t\t\t\t\tcase 'errortitle' /*case 'ErrorTitle'*/: break;\n\t\t\t\t\tcase 'cellrangelist' /*case 'CellRangeList'*/: break;\n\t\t\t\t\tcase 'inputmessage' /*case 'InputMessage'*/: break;\n\t\t\t\t\tcase 'inputtitle' /*case 'InputTitle'*/: break;\n\t\t\t\t\tcase 'combohide' /*case 'ComboHide'*/: break;\n\t\t\t\t\tcase 'inputhide' /*case 'InputHide'*/: break;\n\t\t\t\t\tcase 'condition' /*case 'Condition'*/: break;\n\t\t\t\t\tcase 'qualifier' /*case 'Qualifier'*/: break;\n\t\t\t\t\tcase 'useblank' /*case 'UseBlank'*/: break;\n\t\t\t\t\tcase 'value1' /*case 'Value1'*/: break;\n\t\t\t\t\tcase 'value2' /*case 'Value2'*/: break;\n\t\t\t\t\tcase 'format' /*case 'Format'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* MapInfo (schema) */\n\t\t\t\tcase 'mapinfo' /*case 'MapInfo'*/: case 'schema' /*case 'Schema'*/: case 'data' /*case 'data'*/: switch(Rn[3]) {\n\t\t\t\t\tcase 'map' /*case 'Map'*/: break;\n\t\t\t\t\tcase 'entry' /*case 'Entry'*/: break;\n\t\t\t\t\tcase 'range' /*case 'Range'*/: break;\n\t\t\t\t\tcase 'xpath' /*case 'XPath'*/: break;\n\t\t\t\t\tcase 'field' /*case 'Field'*/: break;\n\t\t\t\t\tcase 'xsdtype' /*case 'XSDType'*/: break;\n\t\t\t\t\tcase 'filteron' /*case 'FilterOn'*/: break;\n\t\t\t\t\tcase 'aggregate' /*case 'Aggregate'*/: break;\n\t\t\t\t\tcase 'elementtype' /*case 'ElementType'*/: break;\n\t\t\t\t\tcase 'attributetype' /*case 'AttributeType'*/: break;\n\t\t\t\t/* These are from xsd (XML Schema Definition) */\n\t\t\t\t\tcase 'schema' /*case 'schema'*/:\n\t\t\t\t\tcase 'element' /*case 'element'*/:\n\t\t\t\t\tcase 'complextype' /*case 'complexType'*/:\n\t\t\t\t\tcase 'datatype' /*case 'datatype'*/:\n\t\t\t\t\tcase 'all' /*case 'all'*/:\n\t\t\t\t\tcase 'attribute' /*case 'attribute'*/:\n\t\t\t\t\tcase 'extends' /*case 'extends'*/: break;\n\n\t\t\t\t\tcase 'row' /*case 'row'*/: break;\n\t\t\t\t\tdefault: seen = false;\n\t\t\t\t} break;\n\n\t\t\t\t/* SmartTags (can be anything) */\n\t\t\t\tcase 'smarttags' /*case 'SmartTags'*/: break;\n\n\t\t\t\tdefault: seen = false; break;\n\t\t\t}\n\t\t\tif(seen) break;\n\t\t\t/* CustomDocumentProperties */\n\t\t\tif(Rn[3].match(/!\\[CDATA/)) break;\n\t\t\tif(!state[state.length-1][1]) throw 'Unrecognized tag: ' + Rn[3] + \"|\" + state.join(\"|\");\n\t\t\tif(state[state.length-1][0]===/*'CustomDocumentProperties'*/'customdocumentproperties') {\n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\t\telse if(Rn[1]===\"/\") xlml_set_custprop(Custprops, raw_Rn3, cp, str.slice(pidx, Rn.index));\n\t\t\t\telse { cp = Rn; pidx = Rn.index + Rn[0].length; }\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(opts.WTF) throw 'Unrecognized tag: ' + Rn[3] + \"|\" + state.join(\"|\");\n\t}\n\tvar out = ({}/*:any*/);\n\tif(!opts.bookSheets && !opts.bookProps) out.Sheets = sheets;\n\tout.SheetNames = sheetnames;\n\tout.Workbook = Workbook;\n\tout.SSF = dup(table_fmt);\n\tout.Props = Props;\n\tout.Custprops = Custprops;\n\treturn out;\n}\n\nfunction parse_xlml(data/*:RawBytes|string*/, opts)/*:Workbook*/ {\n\tfix_read_opts(opts=opts||{});\n\tswitch(opts.type||\"base64\") {\n\t\tcase \"base64\": return parse_xlml_xml(Base64_decode(data), opts);\n\t\tcase \"binary\": case \"buffer\": case \"file\": return parse_xlml_xml(data, opts);\n\t\tcase \"array\": return parse_xlml_xml(a2s(data), opts);\n\t}\n\t/*:: throw new Error(\"unsupported type \" + opts.type); */\n}\n\n/* TODO */\nfunction write_props_xlml(wb/*:Workbook*/, opts)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\t/* DocumentProperties */\n\tif(wb.Props) o.push(xlml_write_docprops(wb.Props, opts));\n\t/* CustomDocumentProperties */\n\tif(wb.Custprops) o.push(xlml_write_custprops(wb.Props, wb.Custprops, opts));\n\treturn o.join(\"\");\n}\n/* TODO */\nfunction write_wb_xlml(/*::wb, opts*/)/*:string*/ {\n\t/* OfficeDocumentSettings */\n\t/* ExcelWorkbook */\n\treturn \"\";\n}\n/* TODO */\nfunction write_sty_xlml(wb, opts)/*:string*/ {\n\t/* Styles */\n\tvar styles/*:Array*/ = [''];\n\topts.cellXfs.forEach(function(xf, id) {\n\t\tvar payload/*:Array*/ = [];\n\t\tpayload.push(writextag('NumberFormat', null, {\"ss:Format\": escapexml(table_fmt[xf.numFmtId])}));\n\n\t\tvar o = /*::(*/{\"ss:ID\": \"s\" + (21+id)}/*:: :any)*/;\n\t\tstyles.push(writextag('Style', payload.join(\"\"), o));\n\t});\n\treturn writextag(\"Styles\", styles.join(\"\"));\n}\nfunction write_name_xlml(n) { return writextag(\"NamedRange\", null, {\"ss:Name\": n.Name, \"ss:RefersTo\":\"=\" + a1_to_rc(n.Ref, {r:0,c:0})}); }\nfunction write_names_xlml(wb/*::, opts*/)/*:string*/ {\n\tif(!((wb||{}).Workbook||{}).Names) return \"\";\n\t/*:: if(!wb || !wb.Workbook || !wb.Workbook.Names) throw new Error(\"unreachable\"); */\n\tvar names/*:Array*/ = wb.Workbook.Names;\n\tvar out/*:Array*/ = [];\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar n = names[i];\n\t\tif(n.Sheet != null) continue;\n\t\tif(n.Name.match(/^_xlfn\\./)) continue;\n\t\tout.push(write_name_xlml(n));\n\t}\n\treturn writextag(\"Names\", out.join(\"\"));\n}\nfunction write_ws_xlml_names(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*/)/*:string*/ {\n\tif(!ws) return \"\";\n\tif(!((wb||{}).Workbook||{}).Names) return \"\";\n\t/*:: if(!wb || !wb.Workbook || !wb.Workbook.Names) throw new Error(\"unreachable\"); */\n\tvar names/*:Array*/ = wb.Workbook.Names;\n\tvar out/*:Array*/ = [];\n\tfor(var i = 0; i < names.length; ++i) {\n\t\tvar n = names[i];\n\t\tif(n.Sheet != idx) continue;\n\t\t/*switch(n.Name) {\n\t\t\tcase \"_\": continue;\n\t\t}*/\n\t\tif(n.Name.match(/^_xlfn\\./)) continue;\n\t\tout.push(write_name_xlml(n));\n\t}\n\treturn out.join(\"\");\n}\n/* WorksheetOptions */\nfunction write_ws_xlml_wsopts(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*/)/*:string*/ {\n\tif(!ws) return \"\";\n\tvar o/*:Array*/ = [];\n\t/* NOTE: spec technically allows any order, but stick with implied order */\n\n\t/* FitToPage */\n\t/* DoNotDisplayColHeaders */\n\t/* DoNotDisplayRowHeaders */\n\t/* ViewableRange */\n\t/* Selection */\n\t/* GridlineColor */\n\t/* Name */\n\t/* ExcelWorksheetType */\n\t/* IntlMacro */\n\t/* Unsynced */\n\t/* Selected */\n\t/* CodeName */\n\n\tif(ws['!margins']) {\n\t\to.push(\"\");\n\t\tif(ws['!margins'].header) o.push(writextag(\"Header\", null, {'x:Margin':ws['!margins'].header}));\n\t\tif(ws['!margins'].footer) o.push(writextag(\"Footer\", null, {'x:Margin':ws['!margins'].footer}));\n\t\to.push(writextag(\"PageMargins\", null, {\n\t\t\t'x:Bottom': ws['!margins'].bottom || \"0.75\",\n\t\t\t'x:Left': ws['!margins'].left || \"0.7\",\n\t\t\t'x:Right': ws['!margins'].right || \"0.7\",\n\t\t\t'x:Top': ws['!margins'].top || \"0.75\"\n\t\t}));\n\t\to.push(\"\");\n\t}\n\n\t/* PageSetup */\n\t/* DisplayPageBreak */\n\t/* TransitionExpressionEvaluation */\n\t/* TransitionFormulaEntry */\n\t/* Print */\n\t/* Zoom */\n\t/* PageLayoutZoom */\n\t/* PageBreakZoom */\n\t/* ShowPageBreakZoom */\n\t/* DefaultRowHeight */\n\t/* DefaultColumnWidth */\n\t/* StandardWidth */\n\n\tif(wb && wb.Workbook && wb.Workbook.Sheets && wb.Workbook.Sheets[idx]) {\n\t\t/* Visible */\n\t\tif(wb.Workbook.Sheets[idx].Hidden) o.push(writextag(\"Visible\", (wb.Workbook.Sheets[idx].Hidden == 1 ? \"SheetHidden\" : \"SheetVeryHidden\"), {}));\n\t\telse {\n\t\t\t/* Selected */\n\t\t\tfor(var i = 0; i < idx; ++i) if(wb.Workbook.Sheets[i] && !wb.Workbook.Sheets[i].Hidden) break;\n\t\t\tif(i == idx) o.push(\"\");\n\t\t}\n\t}\n\n\t/* LeftColumnVisible */\n\n\tif(((((wb||{}).Workbook||{}).Views||[])[0]||{}).RTL) o.push(\"\");\n\n\t/* GridlineColorIndex */\n\t/* DisplayFormulas */\n\t/* DoNotDisplayGridlines */\n\t/* DoNotDisplayHeadings */\n\t/* DoNotDisplayOutline */\n\t/* ApplyAutomaticOutlineStyles */\n\t/* NoSummaryRowsBelowDetail */\n\t/* NoSummaryColumnsRightDetail */\n\t/* DoNotDisplayZeros */\n\t/* ActiveRow */\n\t/* ActiveColumn */\n\t/* FilterOn */\n\t/* RangeSelection */\n\t/* TopRowVisible */\n\t/* TopRowBottomPane */\n\t/* LeftColumnRightPane */\n\t/* ActivePane */\n\t/* SplitHorizontal */\n\t/* SplitVertical */\n\t/* FreezePanes */\n\t/* FrozenNoSplit */\n\t/* TabColorIndex */\n\t/* Panes */\n\n\t/* NOTE: Password not supported in XLML Format */\n\tif(ws['!protect']) {\n\t\to.push(writetag(\"ProtectContents\", \"True\"));\n\t\tif(ws['!protect'].objects) o.push(writetag(\"ProtectObjects\", \"True\"));\n\t\tif(ws['!protect'].scenarios) o.push(writetag(\"ProtectScenarios\", \"True\"));\n\t\tif(ws['!protect'].selectLockedCells != null && !ws['!protect'].selectLockedCells) o.push(writetag(\"EnableSelection\", \"NoSelection\"));\n\t\telse if(ws['!protect'].selectUnlockedCells != null && !ws['!protect'].selectUnlockedCells) o.push(writetag(\"EnableSelection\", \"UnlockedCells\"));\n\t[\n\t\t[ \"formatCells\", \"AllowFormatCells\" ],\n\t\t[ \"formatColumns\", \"AllowSizeCols\" ],\n\t\t[ \"formatRows\", \"AllowSizeRows\" ],\n\t\t[ \"insertColumns\", \"AllowInsertCols\" ],\n\t\t[ \"insertRows\", \"AllowInsertRows\" ],\n\t\t[ \"insertHyperlinks\", \"AllowInsertHyperlinks\" ],\n\t\t[ \"deleteColumns\", \"AllowDeleteCols\" ],\n\t\t[ \"deleteRows\", \"AllowDeleteRows\" ],\n\t\t[ \"sort\", \"AllowSort\" ],\n\t\t[ \"autoFilter\", \"AllowFilter\" ],\n\t\t[ \"pivotTables\", \"AllowUsePivotTables\" ]\n\t].forEach(function(x) { if(ws['!protect'][x[0]]) o.push(\"<\"+x[1]+\"/>\"); });\n\t}\n\n\tif(o.length == 0) return \"\";\n\treturn writextag(\"WorksheetOptions\", o.join(\"\"), {xmlns:XLMLNS.x});\n}\nfunction write_ws_xlml_comment(comments/*:Array*/)/*:string*/ {\n\treturn comments.map(function(c) {\n\t\t// TODO: formatted text\n\t\tvar t = xlml_unfixstr(c.t||\"\");\n\t\tvar d =writextag(\"ss:Data\", t, {\"xmlns\":\"http://www.w3.org/TR/REC-html40\"});\n\t\treturn writextag(\"Comment\", d, {\"ss:Author\":c.a});\n\t}).join(\"\");\n}\nfunction write_ws_xlml_cell(cell, ref/*:string*/, ws, opts, idx/*:number*/, wb, addr)/*:string*/{\n\tif(!cell || (cell.v == undefined && cell.f == undefined)) return \"\";\n\n\tvar attr = {};\n\tif(cell.f) attr[\"ss:Formula\"] = \"=\" + escapexml(a1_to_rc(cell.f, addr));\n\tif(cell.F && cell.F.slice(0, ref.length) == ref) {\n\t\tvar end = decode_cell(cell.F.slice(ref.length + 1));\n\t\tattr[\"ss:ArrayRange\"] = \"RC:R\" + (end.r == addr.r ? \"\" : \"[\" + (end.r - addr.r) + \"]\") + \"C\" + (end.c == addr.c ? \"\" : \"[\" + (end.c - addr.c) + \"]\");\n\t}\n\n\tif(cell.l && cell.l.Target) {\n\t\tattr[\"ss:HRef\"] = escapexml(cell.l.Target);\n\t\tif(cell.l.Tooltip) attr[\"x:HRefScreenTip\"] = escapexml(cell.l.Tooltip);\n\t}\n\n\tif(ws['!merges']) {\n\t\tvar marr = ws['!merges'];\n\t\tfor(var mi = 0; mi != marr.length; ++mi) {\n\t\t\tif(marr[mi].s.c != addr.c || marr[mi].s.r != addr.r) continue;\n\t\t\tif(marr[mi].e.c > marr[mi].s.c) attr['ss:MergeAcross'] = marr[mi].e.c - marr[mi].s.c;\n\t\t\tif(marr[mi].e.r > marr[mi].s.r) attr['ss:MergeDown'] = marr[mi].e.r - marr[mi].s.r;\n\t\t}\n\t}\n\n\tvar t = \"\", p = \"\";\n\tswitch(cell.t) {\n\t\tcase 'z': if(!opts.sheetStubs) return \"\"; break;\n\t\tcase 'n': t = 'Number'; p = String(cell.v); break;\n\t\tcase 'b': t = 'Boolean'; p = (cell.v ? \"1\" : \"0\"); break;\n\t\tcase 'e': t = 'Error'; p = BErr[cell.v]; break;\n\t\tcase 'd': t = 'DateTime'; p = new Date(cell.v).toISOString(); if(cell.z == null) cell.z = cell.z || table_fmt[14]; break;\n\t\tcase 's': t = 'String'; p = escapexlml(cell.v||\"\"); break;\n\t}\n\t/* TODO: cell style */\n\tvar os = get_cell_style(opts.cellXfs, cell, opts);\n\tattr[\"ss:StyleID\"] = \"s\" + (21+os);\n\tattr[\"ss:Index\"] = addr.c + 1;\n\tvar _v = (cell.v != null ? p : \"\");\n\tvar m = cell.t == 'z' ? \"\" : ('' + _v + '');\n\n\tif((cell.c||[]).length > 0) m += write_ws_xlml_comment(cell.c);\n\n\treturn writextag(\"Cell\", m, attr);\n}\nfunction write_ws_xlml_row(R/*:number*/, row)/*:string*/ {\n\tvar o = '';\n}\n/* TODO */\nfunction write_ws_xlml_table(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*/)/*:string*/ {\n\tif(!ws['!ref']) return \"\";\n\tvar range/*:Range*/ = safe_decode_range(ws['!ref']);\n\tvar marr/*:Array*/ = ws['!merges'] || [], mi = 0;\n\tvar o/*:Array*/ = [];\n\tif(ws['!cols']) ws['!cols'].forEach(function(n, i) {\n\t\tprocess_col(n);\n\t\tvar w = !!n.width;\n\t\tvar p = col_obj_w(i, n);\n\t\tvar k/*:any*/ = {\"ss:Index\":i+1};\n\t\tif(w) k['ss:Width'] = width2px(p.width);\n\t\tif(n.hidden) k['ss:Hidden']=\"1\";\n\t\to.push(writextag(\"Column\",null,k));\n\t});\n\tvar dense = Array.isArray(ws);\n\tfor(var R = range.s.r; R <= range.e.r; ++R) {\n\t\tvar row = [write_ws_xlml_row(R, (ws['!rows']||[])[R])];\n\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tvar skip = false;\n\t\t\tfor(mi = 0; mi != marr.length; ++mi) {\n\t\t\t\tif(marr[mi].s.c > C) continue;\n\t\t\t\tif(marr[mi].s.r > R) continue;\n\t\t\t\tif(marr[mi].e.c < C) continue;\n\t\t\t\tif(marr[mi].e.r < R) continue;\n\t\t\t\tif(marr[mi].s.c != C || marr[mi].s.r != R) skip = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif(skip) continue;\n\t\t\tvar addr = {r:R,c:C};\n\t\t\tvar ref = encode_cell(addr), cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\trow.push(write_ws_xlml_cell(cell, ref, ws, opts, idx, wb, addr));\n\t\t}\n\t\trow.push(\"\");\n\t\tif(row.length > 2) o.push(row.join(\"\"));\n\t}\n\treturn o.join(\"\");\n}\nfunction write_ws_xlml(idx/*:number*/, opts, wb/*:Workbook*/)/*:string*/ {\n\tvar o/*:Array*/ = [];\n\tvar s = wb.SheetNames[idx];\n\tvar ws = wb.Sheets[s];\n\n\tvar t/*:string*/ = ws ? write_ws_xlml_names(ws, opts, idx, wb) : \"\";\n\tif(t.length > 0) o.push(\"\" + t + \"\");\n\n\t/* Table */\n\tt = ws ? write_ws_xlml_table(ws, opts, idx, wb) : \"\";\n\tif(t.length > 0) o.push(\"
    \" + t + \"
    \");\n\n\t/* WorksheetOptions */\n\to.push(write_ws_xlml_wsopts(ws, opts, idx, wb));\n\n\treturn o.join(\"\");\n}\nfunction write_xlml(wb, opts)/*:string*/ {\n\tif(!opts) opts = {};\n\tif(!wb.SSF) wb.SSF = dup(table_fmt);\n\tif(wb.SSF) {\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\topts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0;\n\t\topts.ssf = wb.SSF;\n\t\topts.cellXfs = [];\n\t\tget_cell_style(opts.cellXfs, {}, {revssf:{\"General\":0}});\n\t}\n\tvar d/*:Array*/ = [];\n\td.push(write_props_xlml(wb, opts));\n\td.push(write_wb_xlml(wb, opts));\n\td.push(\"\");\n\td.push(\"\");\n\tfor(var i = 0; i < wb.SheetNames.length; ++i)\n\t\td.push(writextag(\"Worksheet\", write_ws_xlml(i, opts, wb), {\"ss:Name\":escapexml(wb.SheetNames[i])}));\n\td[2] = write_sty_xlml(wb, opts);\n\td[3] = write_names_xlml(wb, opts);\n\treturn XML_HEADER + writextag(\"Workbook\", d.join(\"\"), {\n\t\t'xmlns': XLMLNS.ss,\n\t\t'xmlns:o': XLMLNS.o,\n\t\t'xmlns:x': XLMLNS.x,\n\t\t'xmlns:ss': XLMLNS.ss,\n\t\t'xmlns:dt': XLMLNS.dt,\n\t\t'xmlns:html': XLMLNS.html\n\t});\n}\n/* [MS-OLEDS] 2.3.8 CompObjStream */\nfunction parse_compobj(obj/*:CFBEntry*/) {\n\tvar v = {};\n\tvar o = obj.content;\n\t/*:: if(o == null) return; */\n\n\t/* [MS-OLEDS] 2.3.7 CompObjHeader -- All fields MUST be ignored */\n\to.l = 28;\n\n\tv.AnsiUserType = o.read_shift(0, \"lpstr-ansi\");\n\tv.AnsiClipboardFormat = parse_ClipboardFormatOrAnsiString(o);\n\n\tif(o.length - o.l <= 4) return v;\n\n\tvar m/*:number*/ = o.read_shift(4);\n\tif(m == 0 || m > 40) return v;\n\to.l-=4; v.Reserved1 = o.read_shift(0, \"lpstr-ansi\");\n\n\tif(o.length - o.l <= 4) return v;\n\tm = o.read_shift(4);\n\tif(m !== 0x71b239f4) return v;\n\tv.UnicodeClipboardFormat = parse_ClipboardFormatOrUnicodeString(o);\n\n\tm = o.read_shift(4);\n\tif(m == 0 || m > 40) return v;\n\to.l-=4; v.Reserved2 = o.read_shift(0, \"lpwstr\");\n}\n\n/*\n\tContinue logic for:\n\t- 2.4.58 Continue 0x003c\n\t- 2.4.59 ContinueBigName 0x043c\n\t- 2.4.60 ContinueFrt 0x0812\n\t- 2.4.61 ContinueFrt11 0x0875\n\t- 2.4.62 ContinueFrt12 0x087f\n*/\nvar CONTINUE_RT = [ 0x003c, 0x043c, 0x0812, 0x0875, 0x087f ];\nfunction slurp(RecordType, R, blob, length/*:number*/, opts)/*:any*/ {\n\tvar l = length;\n\tvar bufs = [];\n\tvar d = blob.slice(blob.l,blob.l+l);\n\tif(opts && opts.enc && opts.enc.insitu && d.length > 0) switch(RecordType) {\n\tcase 0x0009: case 0x0209: case 0x0409: case 0x0809/* BOF */: case 0x002f /* FilePass */: case 0x0195 /* FileLock */: case 0x00e1 /* InterfaceHdr */: case 0x0196 /* RRDInfo */: case 0x0138 /* RRDHead */: case 0x0194 /* UsrExcl */: case 0x000a /* EOF */:\n\t\tbreak;\n\tcase 0x0085 /* BoundSheet8 */:\n\t\tbreak;\n\tdefault:\n\t\topts.enc.insitu(d);\n\t}\n\tbufs.push(d);\n\tblob.l += l;\n\tvar nextrt = __readUInt16LE(blob,blob.l), next = XLSRecordEnum[nextrt];\n\tvar start = 0;\n\twhile(next != null && CONTINUE_RT.indexOf(nextrt) > -1) {\n\t\tl = __readUInt16LE(blob,blob.l+2);\n\t\tstart = blob.l + 4;\n\t\tif(nextrt == 0x0812 /* ContinueFrt */) start += 4;\n\t\telse if(nextrt == 0x0875 || nextrt == 0x087f) {\n\t\t\tstart += 12;\n\t\t}\n\t\td = blob.slice(start,blob.l+4+l);\n\t\tbufs.push(d);\n\t\tblob.l += 4+l;\n\t\tnext = (XLSRecordEnum[nextrt = __readUInt16LE(blob, blob.l)]);\n\t}\n\tvar b = (bconcat(bufs)/*:any*/);\n\tprep_blob(b, 0);\n\tvar ll = 0; b.lens = [];\n\tfor(var j = 0; j < bufs.length; ++j) { b.lens.push(ll); ll += bufs[j].length; }\n\tif(b.length < length) throw \"XLS Record 0x\" + RecordType.toString(16) + \" Truncated: \" + b.length + \" < \" + length;\n\treturn R.f(b, b.length, opts);\n}\n\nfunction safe_format_xf(p/*:any*/, opts/*:ParseOpts*/, date1904/*:?boolean*/) {\n\tif(p.t === 'z') return;\n\tif(!p.XF) return;\n\tvar fmtid = 0;\n\ttry {\n\t\tfmtid = p.z || p.XF.numFmtId || 0;\n\t\tif(opts.cellNF) p.z = table_fmt[fmtid];\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(!opts || opts.cellText !== false) try {\n\t\tif(p.t === 'e') { p.w = p.w || BErr[p.v]; }\n\t\telse if(fmtid === 0 || fmtid == \"General\") {\n\t\t\tif(p.t === 'n') {\n\t\t\t\tif((p.v|0) === p.v) p.w = p.v.toString(10);\n\t\t\t\telse p.w = SSF_general_num(p.v);\n\t\t\t}\n\t\t\telse p.w = SSF_general(p.v);\n\t\t}\n\t\telse p.w = SSF_format(fmtid,p.v, {date1904:!!date1904, dateNF: opts && opts.dateNF});\n\t} catch(e) { if(opts.WTF) throw e; }\n\tif(opts.cellDates && fmtid && p.t == 'n' && fmt_is_date(table_fmt[fmtid] || String(fmtid))) {\n\t\tvar _d = SSF_parse_date_code(p.v); if(_d) { p.t = 'd'; p.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); }\n\t}\n}\n\nfunction make_cell(val, ixfe, t)/*:Cell*/ {\n\treturn ({v:val, ixfe:ixfe, t:t}/*:any*/);\n}\n\n// 2.3.2\nfunction parse_workbook(blob, options/*:ParseOpts*/)/*:Workbook*/ {\n\tvar wb = ({opts:{}}/*:any*/);\n\tvar Sheets = {};\n\tif(DENSE != null && options.dense == null) options.dense = DENSE;\n\tvar out/*:Worksheet*/ = ((options.dense ? [] : {})/*:any*/);\n\tvar Directory = {};\n\tvar range/*:Range*/ = ({}/*:any*/);\n\tvar last_formula = null;\n\tvar sst/*:SST*/ = ([]/*:any*/);\n\tvar cur_sheet = \"\";\n\tvar Preamble = {};\n\tvar lastcell, last_cell = \"\", cc/*:Cell*/, cmnt, rngC, rngR;\n\tvar sharedf = {};\n\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\tvar temp_val/*:Cell*/;\n\tvar country;\n\tvar XFs = []; /* XF records */\n\tvar palette/*:Array<[number, number, number]>*/ = [];\n\tvar Workbook/*:WBWBProps*/ = ({ Sheets:[], WBProps:{date1904:false}, Views:[{}] }/*:any*/), wsprops = {};\n\tvar get_rgb = function getrgb(icv/*:number*/)/*:[number, number, number]*/ {\n\t\tif(icv < 8) return XLSIcv[icv];\n\t\tif(icv < 64) return palette[icv-8] || XLSIcv[icv];\n\t\treturn XLSIcv[icv];\n\t};\n\tvar process_cell_style = function pcs(cell, line/*:any*/, options) {\n\t\tvar xfd = line.XF.data;\n\t\tif(!xfd || !xfd.patternType || !options || !options.cellStyles) return;\n\t\tline.s = ({}/*:any*/);\n\t\tline.s.patternType = xfd.patternType;\n\t\tvar t;\n\t\tif((t = rgb2Hex(get_rgb(xfd.icvFore)))) { line.s.fgColor = {rgb:t}; }\n\t\tif((t = rgb2Hex(get_rgb(xfd.icvBack)))) { line.s.bgColor = {rgb:t}; }\n\t};\n\tvar addcell = function addcell(cell/*:any*/, line/*:any*/, options/*:any*/) {\n\t\tif(file_depth > 1) return;\n\t\tif(options.sheetRows && cell.r >= options.sheetRows) return;\n\t\tif(options.cellStyles && line.XF && line.XF.data) process_cell_style(cell, line, options);\n\t\tdelete line.ixfe; delete line.XF;\n\t\tlastcell = cell;\n\t\tlast_cell = encode_cell(cell);\n\t\tif(!range || !range.s || !range.e) range = {s:{r:0,c:0},e:{r:0,c:0}};\n\t\tif(cell.r < range.s.r) range.s.r = cell.r;\n\t\tif(cell.c < range.s.c) range.s.c = cell.c;\n\t\tif(cell.r + 1 > range.e.r) range.e.r = cell.r + 1;\n\t\tif(cell.c + 1 > range.e.c) range.e.c = cell.c + 1;\n\t\tif(options.cellFormula && line.f) {\n\t\t\tfor(var afi = 0; afi < arrayf.length; ++afi) {\n\t\t\t\tif(arrayf[afi][0].s.c > cell.c || arrayf[afi][0].s.r > cell.r) continue;\n\t\t\t\tif(arrayf[afi][0].e.c < cell.c || arrayf[afi][0].e.r < cell.r) continue;\n\t\t\t\tline.F = encode_range(arrayf[afi][0]);\n\t\t\t\tif(arrayf[afi][0].s.c != cell.c || arrayf[afi][0].s.r != cell.r) delete line.f;\n\t\t\t\tif(line.f) line.f = \"\" + stringify_formula(arrayf[afi][1], range, cell, supbooks, opts);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\t{\n\t\t\tif(options.dense) {\n\t\t\t\tif(!out[cell.r]) out[cell.r] = [];\n\t\t\t\tout[cell.r][cell.c] = line;\n\t\t\t} else out[last_cell] = line;\n\t\t}\n\t};\n\tvar opts = ({\n\t\tenc: false, // encrypted\n\t\tsbcch: 0, // cch in the preceding SupBook\n\t\tsnames: [], // sheetnames\n\t\tsharedf: sharedf, // shared formulae by address\n\t\tarrayf: arrayf, // array formulae array\n\t\trrtabid: [], // RRTabId\n\t\tlastuser: \"\", // Last User from WriteAccess\n\t\tbiff: 8, // BIFF version\n\t\tcodepage: 0, // CP from CodePage record\n\t\twinlocked: 0, // fLockWn from WinProtect\n\t\tcellStyles: !!options && !!options.cellStyles,\n\t\tWTF: !!options && !!options.wtf\n\t}/*:any*/);\n\tif(options.password) opts.password = options.password;\n\tvar themes;\n\tvar merges/*:Array*/ = [];\n\tvar objects = [];\n\tvar colinfo/*:Array*/ = [], rowinfo/*:Array*/ = [];\n\tvar seencol = false;\n\tvar supbooks = ([]/*:any*/); // 1-indexed, will hold extern names\n\tsupbooks.SheetNames = opts.snames;\n\tsupbooks.sharedf = opts.sharedf;\n\tsupbooks.arrayf = opts.arrayf;\n\tsupbooks.names = [];\n\tsupbooks.XTI = [];\n\tvar last_RT = 0;\n\tvar file_depth = 0; /* TODO: make a real stack */\n\tvar BIFF2Fmt = 0, BIFF2FmtTable/*:Array*/ = [];\n\tvar FilterDatabases = []; /* TODO: sort out supbooks and process elsewhere */\n\tvar last_lbl/*:?DefinedName*/;\n\n\t/* explicit override for some broken writers */\n\topts.codepage = 1200;\n\tset_cp(1200);\n\tvar seen_codepage = false;\n\twhile(blob.l < blob.length - 1) {\n\t\tvar s = blob.l;\n\t\tvar RecordType = blob.read_shift(2);\n\t\tif(RecordType === 0 && last_RT === 0x000a /* EOF */) break;\n\t\tvar length = (blob.l === blob.length ? 0 : blob.read_shift(2));\n\t\tvar R = XLSRecordEnum[RecordType];\n\t\t//console.log(RecordType.toString(16), RecordType, R, blob.l, length, blob.length);\n\t\t//if(!R) console.log(blob.slice(blob.l, blob.l + length));\n\t\tif(R && R.f) {\n\t\t\tif(options.bookSheets) {\n\t\t\t\tif(last_RT === 0x0085 /* BoundSheet8 */ && RecordType !== 0x0085 /* R.n !== 'BoundSheet8' */) break;\n\t\t\t}\n\t\t\tlast_RT = RecordType;\n\t\t\tif(R.r === 2 || R.r == 12) {\n\t\t\t\tvar rt = blob.read_shift(2); length -= 2;\n\t\t\t\tif(!opts.enc && rt !== RecordType && (((rt&0xFF)<<8)|(rt>>8)) !== RecordType) throw new Error(\"rt mismatch: \" + rt + \"!=\" + RecordType);\n\t\t\t\tif(R.r == 12){\n\t\t\t\t\tblob.l += 10; length -= 10;\n\t\t\t\t} // skip FRT\n\t\t\t}\n\t\t\t//console.error(R,blob.l,length,blob.length);\n\t\t\tvar val/*:any*/ = ({}/*:any*/);\n\t\t\tif(RecordType === 0x000a /* EOF */) val = /*::(*/R.f(blob, length, opts)/*:: :any)*/;\n\t\t\telse val = /*::(*/slurp(RecordType, R, blob, length, opts)/*:: :any)*/;\n\t\t\t/*:: val = (val:any); */\n\t\t\tif(file_depth == 0 && [0x0009, 0x0209, 0x0409, 0x0809].indexOf(last_RT) === -1 /* 'BOF' */) continue;\n\t\t\tswitch(RecordType) {\n\t\t\t\tcase 0x0022 /* Date1904 */:\n\t\t\t\t\t/*:: if(!Workbook.WBProps) Workbook.WBProps = {}; */\n\t\t\t\t\twb.opts.Date1904 = Workbook.WBProps.date1904 = val; break;\n\t\t\t\tcase 0x0086 /* WriteProtect */: wb.opts.WriteProtect = true; break;\n\t\t\t\tcase 0x002f /* FilePass */:\n\t\t\t\t\tif(!opts.enc) blob.l = 0;\n\t\t\t\t\topts.enc = val;\n\t\t\t\t\tif(!options.password) throw new Error(\"File is password-protected\");\n\t\t\t\t\tif(val.valid == null) throw new Error(\"Encryption scheme unsupported\");\n\t\t\t\t\tif(!val.valid) throw new Error(\"Password is incorrect\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x005c /* WriteAccess */: opts.lastuser = val; break;\n\t\t\t\tcase 0x0042 /* CodePage */:\n\t\t\t\t\tvar cpval = Number(val);\n\t\t\t\t\t/* overrides based on test cases */\n\t\t\t\t\tswitch(cpval) {\n\t\t\t\t\t\tcase 0x5212: cpval = 1200; break;\n\t\t\t\t\t\tcase 0x8000: cpval = 10000; break;\n\t\t\t\t\t\tcase 0x8001: cpval = 1252; break;\n\t\t\t\t\t}\n\t\t\t\t\tset_cp(opts.codepage = cpval);\n\t\t\t\t\tseen_codepage = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x013d /* RRTabId */: opts.rrtabid = val; break;\n\t\t\t\tcase 0x0019 /* WinProtect */: opts.winlocked = val; break;\n\t\t\t\tcase 0x01b7 /* RefreshAll */: wb.opts[\"RefreshAll\"] = val; break;\n\t\t\t\tcase 0x000c /* CalcCount */: wb.opts[\"CalcCount\"] = val; break;\n\t\t\t\tcase 0x0010 /* CalcDelta */: wb.opts[\"CalcDelta\"] = val; break;\n\t\t\t\tcase 0x0011 /* CalcIter */: wb.opts[\"CalcIter\"] = val; break;\n\t\t\t\tcase 0x000d /* CalcMode */: wb.opts[\"CalcMode\"] = val; break;\n\t\t\t\tcase 0x000e /* CalcPrecision */: wb.opts[\"CalcPrecision\"] = val; break;\n\t\t\t\tcase 0x005f /* CalcSaveRecalc */: wb.opts[\"CalcSaveRecalc\"] = val; break;\n\t\t\t\tcase 0x000f /* CalcRefMode */: opts.CalcRefMode = val; break; // TODO: implement R1C1\n\t\t\t\tcase 0x08a3 /* ForceFullCalculation */: wb.opts.FullCalc = val; break;\n\t\t\t\tcase 0x0081 /* WsBool */:\n\t\t\t\t\tif(val.fDialog) out[\"!type\"] = \"dialog\";\n\t\t\t\t\tif(!val.fBelow) (out[\"!outline\"] || (out[\"!outline\"] = {})).above = true;\n\t\t\t\t\tif(!val.fRight) (out[\"!outline\"] || (out[\"!outline\"] = {})).left = true;\n\t\t\t\t\tbreak; // TODO\n\t\t\t\tcase 0x00e0 /* XF */:\n\t\t\t\t\tXFs.push(val); break;\n\t\t\t\tcase 0x01ae /* SupBook */:\n\t\t\t\t\tsupbooks.push([val]);\n\t\t\t\t\tsupbooks[supbooks.length-1].XTI = [];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0023: case 0x0223 /* ExternName */:\n\t\t\t\t\tsupbooks[supbooks.length-1].push(val);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0018: case 0x0218 /* Lbl */:\n\t\t\t\t\tlast_lbl = ({\n\t\t\t\t\t\tName: val.Name,\n\t\t\t\t\t\tRef: stringify_formula(val.rgce,range,null,supbooks,opts)\n\t\t\t\t\t}/*:DefinedName*/);\n\t\t\t\t\tif(val.itab > 0) last_lbl.Sheet = val.itab - 1;\n\t\t\t\t\tsupbooks.names.push(last_lbl);\n\t\t\t\t\tif(!supbooks[0]) { supbooks[0] = []; supbooks[0].XTI = []; }\n\t\t\t\t\tsupbooks[supbooks.length-1].push(val);\n\t\t\t\t\tif(val.Name == \"_xlnm._FilterDatabase\" && val.itab > 0)\n\t\t\t\t\t\tif(val.rgce && val.rgce[0] && val.rgce[0][0] && val.rgce[0][0][0] == 'PtgArea3d')\n\t\t\t\t\t\t\tFilterDatabases[val.itab - 1] = { ref: encode_range(val.rgce[0][0][1][2]) };\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0016 /* ExternCount */: opts.ExternCount = val; break;\n\t\t\t\tcase 0x0017 /* ExternSheet */:\n\t\t\t\t\tif(supbooks.length == 0) { supbooks[0] = []; supbooks[0].XTI = []; }\n\t\t\t\t\tsupbooks[supbooks.length - 1].XTI = supbooks[supbooks.length - 1].XTI.concat(val); supbooks.XTI = supbooks.XTI.concat(val); break;\n\t\t\t\tcase 0x0894 /* NameCmt */:\n\t\t\t\t\t/* TODO: search for correct name */\n\t\t\t\t\tif(opts.biff < 8) break;\n\t\t\t\t\tif(last_lbl != null) last_lbl.Comment = val[1];\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0012 /* Protect */: out[\"!protect\"] = val; break; /* for sheet or book */\n\t\t\t\tcase 0x0013 /* Password */: if(val !== 0 && opts.WTF) console.error(\"Password verifier: \" + val); break;\n\t\t\t\tcase 0x0085 /* BoundSheet8 */: {\n\t\t\t\t\tDirectory[val.pos] = val;\n\t\t\t\t\topts.snames.push(val.name);\n\t\t\t\t} break;\n\t\t\t\tcase 0x000a /* EOF */: {\n\t\t\t\t\tif(--file_depth) break;\n\t\t\t\t\tif(range.e) {\n\t\t\t\t\t\tif(range.e.r > 0 && range.e.c > 0) {\n\t\t\t\t\t\t\trange.e.r--; range.e.c--;\n\t\t\t\t\t\t\tout[\"!ref\"] = encode_range(range);\n\t\t\t\t\t\t\tif(options.sheetRows && options.sheetRows <= range.e.r) {\n\t\t\t\t\t\t\t\tvar tmpri = range.e.r;\n\t\t\t\t\t\t\t\trange.e.r = options.sheetRows - 1;\n\t\t\t\t\t\t\t\tout[\"!fullref\"] = out[\"!ref\"];\n\t\t\t\t\t\t\t\tout[\"!ref\"] = encode_range(range);\n\t\t\t\t\t\t\t\trange.e.r = tmpri;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\trange.e.r++; range.e.c++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(merges.length > 0) out[\"!merges\"] = merges;\n\t\t\t\t\t\tif(objects.length > 0) out[\"!objects\"] = objects;\n\t\t\t\t\t\tif(colinfo.length > 0) out[\"!cols\"] = colinfo;\n\t\t\t\t\t\tif(rowinfo.length > 0) out[\"!rows\"] = rowinfo;\n\t\t\t\t\t\tWorkbook.Sheets.push(wsprops);\n\t\t\t\t\t}\n\t\t\t\t\tif(cur_sheet === \"\") Preamble = out; else Sheets[cur_sheet] = out;\n\t\t\t\t\tout = ((options.dense ? [] : {})/*:any*/);\n\t\t\t\t} break;\n\t\t\t\tcase 0x0009: case 0x0209: case 0x0409: case 0x0809 /* BOF */: {\n\t\t\t\t\tif(opts.biff === 8) opts.biff = {\n\t\t\t\t\t\t/*::[*/0x0009/*::]*/:2,\n\t\t\t\t\t\t/*::[*/0x0209/*::]*/:3,\n\t\t\t\t\t\t/*::[*/0x0409/*::]*/:4\n\t\t\t\t\t}[RecordType] || {\n\t\t\t\t\t\t/*::[*/0x0200/*::]*/:2,\n\t\t\t\t\t\t/*::[*/0x0300/*::]*/:3,\n\t\t\t\t\t\t/*::[*/0x0400/*::]*/:4,\n\t\t\t\t\t\t/*::[*/0x0500/*::]*/:5,\n\t\t\t\t\t\t/*::[*/0x0600/*::]*/:8,\n\t\t\t\t\t\t/*::[*/0x0002/*::]*/:2,\n\t\t\t\t\t\t/*::[*/0x0007/*::]*/:2\n\t\t\t\t\t}[val.BIFFVer] || 8;\n\t\t\t\t\topts.biffguess = val.BIFFVer == 0;\n\t\t\t\t\tif(val.BIFFVer == 0 && val.dt == 0x1000) { opts.biff = 5; seen_codepage = true; set_cp(opts.codepage = 28591); }\n\t\t\t\t\tif(opts.biff == 8 && val.BIFFVer == 0 && val.dt == 16) opts.biff = 2;\n\t\t\t\t\tif(file_depth++) break;\n\t\t\t\t\tout = ((options.dense ? [] : {})/*:any*/);\n\n\t\t\t\t\tif(opts.biff < 8 && !seen_codepage) { seen_codepage = true; set_cp(opts.codepage = options.codepage || 1252); }\n\n\t\t\t\t\tif(opts.biff < 5 || val.BIFFVer == 0 && val.dt == 0x1000) {\n\t\t\t\t\t\tif(cur_sheet === \"\") cur_sheet = \"Sheet1\";\n\t\t\t\t\t\trange = {s:{r:0,c:0},e:{r:0,c:0}};\n\t\t\t\t\t\t/* fake BoundSheet8 */\n\t\t\t\t\t\tvar fakebs8 = {pos: blob.l - length, name:cur_sheet};\n\t\t\t\t\t\tDirectory[fakebs8.pos] = fakebs8;\n\t\t\t\t\t\topts.snames.push(cur_sheet);\n\t\t\t\t\t}\n\t\t\t\t\telse cur_sheet = (Directory[s] || {name:\"\"}).name;\n\t\t\t\t\tif(val.dt == 0x20) out[\"!type\"] = \"chart\";\n\t\t\t\t\tif(val.dt == 0x40) out[\"!type\"] = \"macro\";\n\t\t\t\t\tmerges = [];\n\t\t\t\t\tobjects = [];\n\t\t\t\t\topts.arrayf = arrayf = [];\n\t\t\t\t\tcolinfo = []; rowinfo = [];\n\t\t\t\t\tseencol = false;\n\t\t\t\t\twsprops = {Hidden:(Directory[s]||{hs:0}).hs, name:cur_sheet };\n\t\t\t\t} break;\n\t\t\t\tcase 0x0203 /* Number */: case 0x0003 /* BIFF2NUM */: case 0x0002 /* BIFF2INT */: {\n\t\t\t\t\tif(out[\"!type\"] == \"chart\") if(options.dense ? (out[val.r]||[])[val.c]: out[encode_cell({c:val.c, r:val.r})]) ++val.c;\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe]||{}, v:val.val, t:'n'}/*:any*/);\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 0x0005: case 0x0205 /* BoolErr */: {\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], v:val.val, t:val.t}/*:any*/);\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 0x027e /* RK */: {\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], v:val.rknum, t:'n'}/*:any*/);\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 0x00bd /* MulRk */: {\n\t\t\t\t\tfor(var j = val.c; j <= val.C; ++j) {\n\t\t\t\t\t\tvar ixfe = val.rkrec[j-val.c][0];\n\t\t\t\t\t\ttemp_val= ({ixfe:ixfe, XF:XFs[ixfe], v:val.rkrec[j-val.c][1], t:'n'}/*:any*/);\n\t\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\t\taddcell({c:j, r:val.r}, temp_val, options);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0006: case 0x0206: case 0x0406 /* Formula */: {\n\t\t\t\t\tif(val.val == 'String') { last_formula = val; break; }\n\t\t\t\t\ttemp_val = make_cell(val.val, val.cell.ixfe, val.tt);\n\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\tif(options.cellFormula) {\n\t\t\t\t\t\tvar _f = val.formula;\n\t\t\t\t\t\tif(_f && _f[0] && _f[0][0] && _f[0][0][0] == 'PtgExp') {\n\t\t\t\t\t\t\tvar _fr = _f[0][0][1][0], _fc = _f[0][0][1][1];\n\t\t\t\t\t\t\tvar _fe = encode_cell({r:_fr, c:_fc});\n\t\t\t\t\t\t\tif(sharedf[_fe]) temp_val.f = \"\"+stringify_formula(val.formula,range,val.cell,supbooks, opts);\n\t\t\t\t\t\t\telse temp_val.F = ((options.dense ? (out[_fr]||[])[_fc]: out[_fe]) || {}).F;\n\t\t\t\t\t\t} else temp_val.f = \"\"+stringify_formula(val.formula,range,val.cell,supbooks, opts);\n\t\t\t\t\t}\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell(val.cell, temp_val, options);\n\t\t\t\t\tlast_formula = val;\n\t\t\t\t} break;\n\t\t\t\tcase 0x0007: case 0x0207 /* String */: {\n\t\t\t\t\tif(last_formula) { /* technically always true */\n\t\t\t\t\t\tlast_formula.val = val;\n\t\t\t\t\t\ttemp_val = make_cell(val, last_formula.cell.ixfe, 's');\n\t\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\t\tif(options.cellFormula) {\n\t\t\t\t\t\t\ttemp_val.f = \"\"+stringify_formula(last_formula.formula, range, last_formula.cell, supbooks, opts);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\t\taddcell(last_formula.cell, temp_val, options);\n\t\t\t\t\t\tlast_formula = null;\n\t\t\t\t\t} else throw new Error(\"String record expects Formula\");\n\t\t\t\t} break;\n\t\t\t\tcase 0x0021: case 0x0221 /* Array */: {\n\t\t\t\t\tarrayf.push(val);\n\t\t\t\t\tvar _arraystart = encode_cell(val[0].s);\n\t\t\t\t\tcc = options.dense ? (out[val[0].s.r]||[])[val[0].s.c] : out[_arraystart];\n\t\t\t\t\tif(options.cellFormula && cc) {\n\t\t\t\t\t\tif(!last_formula) break; /* technically unreachable */\n\t\t\t\t\t\tif(!_arraystart || !cc) break;\n\t\t\t\t\t\tcc.f = \"\"+stringify_formula(val[1], range, val[0], supbooks, opts);\n\t\t\t\t\t\tcc.F = encode_range(val[0]);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x04bc /* ShrFmla */: {\n\t\t\t\t\tif(!options.cellFormula) break;\n\t\t\t\t\tif(last_cell) {\n\t\t\t\t\t\t/* TODO: capture range */\n\t\t\t\t\t\tif(!last_formula) break; /* technically unreachable */\n\t\t\t\t\t\tsharedf[encode_cell(last_formula.cell)]= val[0];\n\t\t\t\t\t\tcc = options.dense ? (out[last_formula.cell.r]||[])[last_formula.cell.c] : out[encode_cell(last_formula.cell)];\n\t\t\t\t\t\t(cc||{}).f = \"\"+stringify_formula(val[0], range, lastcell, supbooks, opts);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x00fd /* LabelSst */:\n\t\t\t\t\ttemp_val=make_cell(sst[val.isst].t, val.ixfe, 's');\n\t\t\t\t\tif(sst[val.isst].h) temp_val.h = sst[val.isst].h;\n\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0201 /* Blank */: if(options.sheetStubs) {\n\t\t\t\t\ttemp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], t:'z'}/*:any*/);\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t} break;\n\t\t\t\tcase 0x00be /* MulBlank */: if(options.sheetStubs) {\n\t\t\t\t\tfor(var _j = val.c; _j <= val.C; ++_j) {\n\t\t\t\t\t\tvar _ixfe = val.ixfe[_j-val.c];\n\t\t\t\t\t\ttemp_val= ({ixfe:_ixfe, XF:XFs[_ixfe], t:'z'}/*:any*/);\n\t\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\t\taddcell({c:_j, r:val.r}, temp_val, options);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x00d6 /* RString */:\n\t\t\t\tcase 0x0204 /* Label */: case 0x0004 /* BIFF2STR */:\n\t\t\t\t\ttemp_val=make_cell(val.val, val.ixfe, 's');\n\t\t\t\t\ttemp_val.XF = XFs[temp_val.ixfe];\n\t\t\t\t\tif(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F];\n\t\t\t\t\tsafe_format_xf(temp_val, options, wb.opts.Date1904);\n\t\t\t\t\taddcell({c:val.c, r:val.r}, temp_val, options);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 0x0000: case 0x0200 /* Dimensions */: {\n\t\t\t\t\tif(file_depth === 1) range = val; /* TODO: stack */\n\t\t\t\t} break;\n\t\t\t\tcase 0x00fc /* SST */: {\n\t\t\t\t\tsst = val;\n\t\t\t\t} break;\n\t\t\t\tcase 0x041e /* Format */: { /* val = [id, fmt] */\n\t\t\t\t\tif(opts.biff == 4) {\n\t\t\t\t\t\tBIFF2FmtTable[BIFF2Fmt++] = val[1];\n\t\t\t\t\t\tfor(var b4idx = 0; b4idx < BIFF2Fmt + 163; ++b4idx) if(table_fmt[b4idx] == val[1]) break;\n\t\t\t\t\t\tif(b4idx >= 163) SSF_load(val[1], BIFF2Fmt + 163);\n\t\t\t\t\t}\n\t\t\t\t\telse SSF_load(val[1], val[0]);\n\t\t\t\t} break;\n\t\t\t\tcase 0x001e /* BIFF2FORMAT */: {\n\t\t\t\t\tBIFF2FmtTable[BIFF2Fmt++] = val;\n\t\t\t\t\tfor(var b2idx = 0; b2idx < BIFF2Fmt + 163; ++b2idx) if(table_fmt[b2idx] == val) break;\n\t\t\t\t\tif(b2idx >= 163) SSF_load(val, BIFF2Fmt + 163);\n\t\t\t\t} break;\n\n\t\t\t\tcase 0x00e5 /* MergeCells */: merges = merges.concat(val); break;\n\n\t\t\t\tcase 0x005d /* Obj */: objects[val.cmo[0]] = opts.lastobj = val; break;\n\t\t\t\tcase 0x01b6 /* TxO */: opts.lastobj.TxO = val; break;\n\t\t\t\tcase 0x007f /* ImData */: opts.lastobj.ImData = val; break;\n\n\t\t\t\tcase 0x01b8 /* HLink */: {\n\t\t\t\t\tfor(rngR = val[0].s.r; rngR <= val[0].e.r; ++rngR)\n\t\t\t\t\t\tfor(rngC = val[0].s.c; rngC <= val[0].e.c; ++rngC) {\n\t\t\t\t\t\t\tcc = options.dense ? (out[rngR]||[])[rngC] : out[encode_cell({c:rngC,r:rngR})];\n\t\t\t\t\t\t\tif(cc) cc.l = val[1];\n\t\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0800 /* HLinkTooltip */: {\n\t\t\t\t\tfor(rngR = val[0].s.r; rngR <= val[0].e.r; ++rngR)\n\t\t\t\t\t\tfor(rngC = val[0].s.c; rngC <= val[0].e.c; ++rngC) {\n\t\t\t\t\t\t\tcc = options.dense ? (out[rngR]||[])[rngC] : out[encode_cell({c:rngC,r:rngR})];\n\t\t\t\t\t\t\tif(cc && cc.l) cc.l.Tooltip = val[1];\n\t\t\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x001c /* Note */: {\n\t\t\t\t\tif(opts.biff <= 5 && opts.biff >= 2) break; /* TODO: BIFF5 */\n\t\t\t\t\tcc = options.dense ? (out[val[0].r]||[])[val[0].c] : out[encode_cell(val[0])];\n\t\t\t\t\tvar noteobj = objects[val[2]];\n\t\t\t\t\tif(!cc) {\n\t\t\t\t\t\tif(options.dense) {\n\t\t\t\t\t\t\tif(!out[val[0].r]) out[val[0].r] = [];\n\t\t\t\t\t\t\tcc = out[val[0].r][val[0].c] = ({t:\"z\"}/*:any*/);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcc = out[encode_cell(val[0])] = ({t:\"z\"}/*:any*/);\n\t\t\t\t\t\t}\n\t\t\t\t\t\trange.e.r = Math.max(range.e.r, val[0].r);\n\t\t\t\t\t\trange.s.r = Math.min(range.s.r, val[0].r);\n\t\t\t\t\t\trange.e.c = Math.max(range.e.c, val[0].c);\n\t\t\t\t\t\trange.s.c = Math.min(range.s.c, val[0].c);\n\t\t\t\t\t}\n\t\t\t\t\tif(!cc.c) cc.c = [];\n\t\t\t\t\tcmnt = {a:val[1],t:noteobj.TxO.t};\n\t\t\t\t\tcc.c.push(cmnt);\n\t\t\t\t} break;\n\t\t\t\tcase 0x087d /* XFExt */: update_xfext(XFs[val.ixfe], val.ext); break;\n\t\t\t\tcase 0x007d /* ColInfo */: {\n\t\t\t\t\tif(!opts.cellStyles) break;\n\t\t\t\t\twhile(val.e >= val.s) {\n\t\t\t\t\t\tcolinfo[val.e--] = { width: val.w/256, level: (val.level || 0), hidden: !!(val.flags & 1) };\n\t\t\t\t\t\tif(!seencol) { seencol = true; find_mdw_colw(val.w/256); }\n\t\t\t\t\t\tprocess_col(colinfo[val.e+1]);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0208 /* Row */: {\n\t\t\t\t\tvar rowobj = {};\n\t\t\t\t\tif(val.level != null) { rowinfo[val.r] = rowobj; rowobj.level = val.level; }\n\t\t\t\t\tif(val.hidden) { rowinfo[val.r] = rowobj; rowobj.hidden = true; }\n\t\t\t\t\tif(val.hpt) {\n\t\t\t\t\t\trowinfo[val.r] = rowobj;\n\t\t\t\t\t\trowobj.hpt = val.hpt; rowobj.hpx = pt2px(val.hpt);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase 0x0026 /* LeftMargin */:\n\t\t\t\tcase 0x0027 /* RightMargin */:\n\t\t\t\tcase 0x0028 /* TopMargin */:\n\t\t\t\tcase 0x0029 /* BottomMargin */:\n\t\t\t\t\tif(!out['!margins']) default_margins(out['!margins'] = {});\n\t\t\t\t\tout['!margins'][({0x26: \"left\", 0x27:\"right\", 0x28:\"top\", 0x29:\"bottom\"})[RecordType]] = val;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x00a1 /* Setup */: // TODO\n\t\t\t\t\tif(!out['!margins']) default_margins(out['!margins'] = {});\n\t\t\t\t\tout['!margins'].header = val.header;\n\t\t\t\t\tout['!margins'].footer = val.footer;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x023e /* Window2 */: // TODO\n\t\t\t\t\t// $FlowIgnore\n\t\t\t\t\tif(val.RTL) Workbook.Views[0].RTL = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 0x0092 /* Palette */: palette = val; break;\n\t\t\t\tcase 0x0896 /* Theme */: themes = val; break;\n\t\t\t\tcase 0x008c /* Country */: country = val; break;\n\t\t\t\tcase 0x01ba /* CodeName */: {\n\t\t\t\t\t/*:: if(!Workbook.WBProps) Workbook.WBProps = {}; */\n\t\t\t\t\tif(!cur_sheet) Workbook.WBProps.CodeName = val || \"ThisWorkbook\";\n\t\t\t\t\telse wsprops.CodeName = val || wsprops.name;\n\t\t\t\t} break;\n\t\t\t}\n\t\t} else {\n\t\t\tif(!R) console.error(\"Missing Info for XLS Record 0x\" + RecordType.toString(16));\n\t\t\tblob.l += length;\n\t\t}\n\t}\n\twb.SheetNames=keys(Directory).sort(function(a,b) { return Number(a) - Number(b); }).map(function(x){return Directory[x].name;});\n\tif(!options.bookSheets) wb.Sheets=Sheets;\n\tif(!wb.SheetNames.length && Preamble[\"!ref\"]) {\n\t\twb.SheetNames.push(\"Sheet1\");\n\t\t/*jshint -W069 */\n\t\tif(wb.Sheets) wb.Sheets[\"Sheet1\"] = Preamble;\n\t\t/*jshint +W069 */\n\t} else wb.Preamble=Preamble;\n\tif(wb.Sheets) FilterDatabases.forEach(function(r,i) { wb.Sheets[wb.SheetNames[i]]['!autofilter'] = r; });\n\twb.Strings = sst;\n\twb.SSF = dup(table_fmt);\n\tif(opts.enc) wb.Encryption = opts.enc;\n\tif(themes) wb.Themes = themes;\n\twb.Metadata = {};\n\tif(country !== undefined) wb.Metadata.Country = country;\n\tif(supbooks.names.length > 0) Workbook.Names = supbooks.names;\n\twb.Workbook = Workbook;\n\treturn wb;\n}\n\n/* TODO: split props*/\nvar PSCLSID = {\n\tSI: \"e0859ff2f94f6810ab9108002b27b3d9\",\n\tDSI: \"02d5cdd59c2e1b10939708002b2cf9ae\",\n\tUDI: \"05d5cdd59c2e1b10939708002b2cf9ae\"\n};\nfunction parse_xls_props(cfb/*:CFBContainer*/, props, o) {\n\t/* [MS-OSHARED] 2.3.3.2.2 Document Summary Information Property Set */\n\tvar DSI = CFB.find(cfb, '/!DocumentSummaryInformation');\n\tif(DSI && DSI.size > 0) try {\n\t\tvar DocSummary = parse_PropertySetStream(DSI, DocSummaryPIDDSI, PSCLSID.DSI);\n\t\tfor(var d in DocSummary) props[d] = DocSummary[d];\n\t} catch(e) {if(o.WTF) throw e;/* empty */}\n\n\t/* [MS-OSHARED] 2.3.3.2.1 Summary Information Property Set*/\n\tvar SI = CFB.find(cfb, '/!SummaryInformation');\n\tif(SI && SI.size > 0) try {\n\t\tvar Summary = parse_PropertySetStream(SI, SummaryPIDSI, PSCLSID.SI);\n\t\tfor(var s in Summary) if(props[s] == null) props[s] = Summary[s];\n\t} catch(e) {if(o.WTF) throw e;/* empty */}\n\n\tif(props.HeadingPairs && props.TitlesOfParts) {\n\t\tload_props_pairs(props.HeadingPairs, props.TitlesOfParts, props, o);\n\t\tdelete props.HeadingPairs; delete props.TitlesOfParts;\n\t}\n}\nfunction write_xls_props(wb/*:Workbook*/, cfb/*:CFBContainer*/) {\n\tvar DSEntries = [], SEntries = [], CEntries = [];\n\tvar i = 0, Keys;\n\tvar DocSummaryRE/*:{[key:string]:string}*/ = evert_key(DocSummaryPIDDSI, \"n\");\n\tvar SummaryRE/*:{[key:string]:string}*/ = evert_key(SummaryPIDSI, \"n\");\n\tif(wb.Props) {\n\t\tKeys = keys(wb.Props);\n\t\t// $FlowIgnore\n\t\tfor(i = 0; i < Keys.length; ++i) (Object.prototype.hasOwnProperty.call(DocSummaryRE, Keys[i]) ? DSEntries : Object.prototype.hasOwnProperty.call(SummaryRE, Keys[i]) ? SEntries : CEntries).push([Keys[i], wb.Props[Keys[i]]]);\n\t}\n\tif(wb.Custprops) {\n\t\tKeys = keys(wb.Custprops);\n\t\t// $FlowIgnore\n\t\tfor(i = 0; i < Keys.length; ++i) if(!Object.prototype.hasOwnProperty.call((wb.Props||{}), Keys[i])) (Object.prototype.hasOwnProperty.call(DocSummaryRE, Keys[i]) ? DSEntries : Object.prototype.hasOwnProperty.call(SummaryRE, Keys[i]) ? SEntries : CEntries).push([Keys[i], wb.Custprops[Keys[i]]]);\n\t}\n\tvar CEntries2 = [];\n\tfor(i = 0; i < CEntries.length; ++i) {\n\t\tif(XLSPSSkip.indexOf(CEntries[i][0]) > -1 || PseudoPropsPairs.indexOf(CEntries[i][0]) > -1) continue;\n\t\tif(CEntries[i][1] == null) continue;\n\t\tCEntries2.push(CEntries[i]);\n\t}\n\tif(SEntries.length) CFB.utils.cfb_add(cfb, \"/\\u0005SummaryInformation\", write_PropertySetStream(SEntries, PSCLSID.SI, SummaryRE, SummaryPIDSI));\n\tif(DSEntries.length || CEntries2.length) CFB.utils.cfb_add(cfb, \"/\\u0005DocumentSummaryInformation\", write_PropertySetStream(DSEntries, PSCLSID.DSI, DocSummaryRE, DocSummaryPIDDSI, CEntries2.length ? CEntries2 : null, PSCLSID.UDI));\n}\n\nfunction parse_xlscfb(cfb/*:any*/, options/*:?ParseOpts*/)/*:Workbook*/ {\nif(!options) options = {};\nfix_read_opts(options);\nreset_cp();\nif(options.codepage) set_ansi(options.codepage);\nvar CompObj/*:?CFBEntry*/, WB/*:?any*/;\nif(cfb.FullPaths) {\n\tif(CFB.find(cfb, '/encryption')) throw new Error(\"File is password-protected\");\n\tCompObj = CFB.find(cfb, '!CompObj');\n\tWB = CFB.find(cfb, '/Workbook') || CFB.find(cfb, '/Book');\n} else {\n\tswitch(options.type) {\n\t\tcase 'base64': cfb = s2a(Base64_decode(cfb)); break;\n\t\tcase 'binary': cfb = s2a(cfb); break;\n\t\tcase 'buffer': break;\n\t\tcase 'array': if(!Array.isArray(cfb)) cfb = Array.prototype.slice.call(cfb); break;\n\t}\n\tprep_blob(cfb, 0);\n\tWB = ({content: cfb}/*:any*/);\n}\nvar /*::CompObjP, */WorkbookP/*:: :Workbook = XLSX.utils.book_new(); */;\n\nvar _data/*:?any*/;\nif(CompObj) /*::CompObjP = */parse_compobj(CompObj);\nif(options.bookProps && !options.bookSheets) WorkbookP = ({}/*:any*/);\nelse/*:: if(cfb instanceof CFBContainer) */ {\n\tvar T = has_buf ? 'buffer' : 'array';\n\tif(WB && WB.content) WorkbookP = parse_workbook(WB.content, options);\n\t/* Quattro Pro 7-8 */\n\telse if((_data=CFB.find(cfb, 'PerfectOffice_MAIN')) && _data.content) WorkbookP = WK_.to_workbook(_data.content, (options.type = T, options));\n\t/* Quattro Pro 9 */\n\telse if((_data=CFB.find(cfb, 'NativeContent_MAIN')) && _data.content) WorkbookP = WK_.to_workbook(_data.content, (options.type = T, options));\n\t/* Works 4 for Mac */\n\telse if((_data=CFB.find(cfb, 'MN0')) && _data.content) throw new Error(\"Unsupported Works 4 for Mac file\");\n\telse throw new Error(\"Cannot find Workbook stream\");\n\tif(options.bookVBA && cfb.FullPaths && CFB.find(cfb, '/_VBA_PROJECT_CUR/VBA/dir')) WorkbookP.vbaraw = make_vba_xls(cfb);\n}\n\nvar props = {};\nif(cfb.FullPaths) parse_xls_props(/*::((*/cfb/*:: :any):CFBContainer)*/, props, options);\n\nWorkbookP.Props = WorkbookP.Custprops = props; /* TODO: split up properties */\nif(options.bookFiles) WorkbookP.cfb = cfb;\n/*WorkbookP.CompObjP = CompObjP; // TODO: storage? */\nreturn WorkbookP;\n}\n\n\nfunction write_xlscfb(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:CFBContainer*/ {\n\tvar o = opts || {};\n\tvar cfb = CFB.utils.cfb_new({root:\"R\"});\n\tvar wbpath = \"/Workbook\";\n\tswitch(o.bookType || \"xls\") {\n\t\tcase \"xls\": o.bookType = \"biff8\";\n\t\t/* falls through */\n\t\tcase \"xla\": if(!o.bookType) o.bookType = \"xla\";\n\t\t/* falls through */\n\t\tcase \"biff8\": wbpath = \"/Workbook\"; o.biff = 8; break;\n\t\tcase \"biff5\": wbpath = \"/Book\"; o.biff = 5; break;\n\t\tdefault: throw new Error(\"invalid type \" + o.bookType + \" for XLS CFB\");\n\t}\n\tCFB.utils.cfb_add(cfb, wbpath, write_biff_buf(wb, o));\n\tif(o.biff == 8 && (wb.Props || wb.Custprops)) write_xls_props(wb, cfb);\n\t// TODO: SI, DSI, CO\n\tif(o.biff == 8 && wb.vbaraw) fill_vba_xls(cfb, CFB.read(wb.vbaraw, {type: typeof wb.vbaraw == \"string\" ? \"binary\" : \"buffer\"}));\n\treturn cfb;\n}\n/* [MS-XLSB] 2.3 Record Enumeration */\nvar XLSBRecordEnum = {\n\t/*::[*/0x0000/*::]*/: { /* n:\"BrtRowHdr\", */ f:parse_BrtRowHdr },\n\t/*::[*/0x0001/*::]*/: { /* n:\"BrtCellBlank\", */ f:parse_BrtCellBlank },\n\t/*::[*/0x0002/*::]*/: { /* n:\"BrtCellRk\", */ f:parse_BrtCellRk },\n\t/*::[*/0x0003/*::]*/: { /* n:\"BrtCellError\", */ f:parse_BrtCellError },\n\t/*::[*/0x0004/*::]*/: { /* n:\"BrtCellBool\", */ f:parse_BrtCellBool },\n\t/*::[*/0x0005/*::]*/: { /* n:\"BrtCellReal\", */ f:parse_BrtCellReal },\n\t/*::[*/0x0006/*::]*/: { /* n:\"BrtCellSt\", */ f:parse_BrtCellSt },\n\t/*::[*/0x0007/*::]*/: { /* n:\"BrtCellIsst\", */ f:parse_BrtCellIsst },\n\t/*::[*/0x0008/*::]*/: { /* n:\"BrtFmlaString\", */ f:parse_BrtFmlaString },\n\t/*::[*/0x0009/*::]*/: { /* n:\"BrtFmlaNum\", */ f:parse_BrtFmlaNum },\n\t/*::[*/0x000A/*::]*/: { /* n:\"BrtFmlaBool\", */ f:parse_BrtFmlaBool },\n\t/*::[*/0x000B/*::]*/: { /* n:\"BrtFmlaError\", */ f:parse_BrtFmlaError },\n\t/*::[*/0x000C/*::]*/: { /* n:\"BrtShortBlank\", */ f:parse_BrtShortBlank },\n\t/*::[*/0x000D/*::]*/: { /* n:\"BrtShortRk\", */ f:parse_BrtShortRk },\n\t/*::[*/0x000E/*::]*/: { /* n:\"BrtShortError\", */ f:parse_BrtShortError },\n\t/*::[*/0x000F/*::]*/: { /* n:\"BrtShortBool\", */ f:parse_BrtShortBool },\n\t/*::[*/0x0010/*::]*/: { /* n:\"BrtShortReal\", */ f:parse_BrtShortReal },\n\t/*::[*/0x0011/*::]*/: { /* n:\"BrtShortSt\", */ f:parse_BrtShortSt },\n\t/*::[*/0x0012/*::]*/: { /* n:\"BrtShortIsst\", */ f:parse_BrtShortIsst },\n\t/*::[*/0x0013/*::]*/: { /* n:\"BrtSSTItem\", */ f:parse_RichStr },\n\t/*::[*/0x0014/*::]*/: { /* n:\"BrtPCDIMissing\" */ },\n\t/*::[*/0x0015/*::]*/: { /* n:\"BrtPCDINumber\" */ },\n\t/*::[*/0x0016/*::]*/: { /* n:\"BrtPCDIBoolean\" */ },\n\t/*::[*/0x0017/*::]*/: { /* n:\"BrtPCDIError\" */ },\n\t/*::[*/0x0018/*::]*/: { /* n:\"BrtPCDIString\" */ },\n\t/*::[*/0x0019/*::]*/: { /* n:\"BrtPCDIDatetime\" */ },\n\t/*::[*/0x001A/*::]*/: { /* n:\"BrtPCDIIndex\" */ },\n\t/*::[*/0x001B/*::]*/: { /* n:\"BrtPCDIAMissing\" */ },\n\t/*::[*/0x001C/*::]*/: { /* n:\"BrtPCDIANumber\" */ },\n\t/*::[*/0x001D/*::]*/: { /* n:\"BrtPCDIABoolean\" */ },\n\t/*::[*/0x001E/*::]*/: { /* n:\"BrtPCDIAError\" */ },\n\t/*::[*/0x001F/*::]*/: { /* n:\"BrtPCDIAString\" */ },\n\t/*::[*/0x0020/*::]*/: { /* n:\"BrtPCDIADatetime\" */ },\n\t/*::[*/0x0021/*::]*/: { /* n:\"BrtPCRRecord\" */ },\n\t/*::[*/0x0022/*::]*/: { /* n:\"BrtPCRRecordDt\" */ },\n\t/*::[*/0x0023/*::]*/: { /* n:\"BrtFRTBegin\", */ T:1 },\n\t/*::[*/0x0024/*::]*/: { /* n:\"BrtFRTEnd\", */ T:-1 },\n\t/*::[*/0x0025/*::]*/: { /* n:\"BrtACBegin\", */ T:1 },\n\t/*::[*/0x0026/*::]*/: { /* n:\"BrtACEnd\", */ T:-1 },\n\t/*::[*/0x0027/*::]*/: { /* n:\"BrtName\", */ f:parse_BrtName },\n\t/*::[*/0x0028/*::]*/: { /* n:\"BrtIndexRowBlock\" */ },\n\t/*::[*/0x002A/*::]*/: { /* n:\"BrtIndexBlock\" */ },\n\t/*::[*/0x002B/*::]*/: { /* n:\"BrtFont\", */ f:parse_BrtFont },\n\t/*::[*/0x002C/*::]*/: { /* n:\"BrtFmt\", */ f:parse_BrtFmt },\n\t/*::[*/0x002D/*::]*/: { /* n:\"BrtFill\", */ f:parse_BrtFill },\n\t/*::[*/0x002E/*::]*/: { /* n:\"BrtBorder\", */ f:parse_BrtBorder },\n\t/*::[*/0x002F/*::]*/: { /* n:\"BrtXF\", */ f:parse_BrtXF },\n\t/*::[*/0x0030/*::]*/: { /* n:\"BrtStyle\" */ },\n\t/*::[*/0x0031/*::]*/: { /* n:\"BrtCellMeta\", */ f:parse_Int32LE },\n\t/*::[*/0x0032/*::]*/: { /* n:\"BrtValueMeta\" */ },\n\t/*::[*/0x0033/*::]*/: { /* n:\"BrtMdb\" */ f:parse_BrtMdb },\n\t/*::[*/0x0034/*::]*/: { /* n:\"BrtBeginFmd\", */ T:1 },\n\t/*::[*/0x0035/*::]*/: { /* n:\"BrtEndFmd\", */ T:-1 },\n\t/*::[*/0x0036/*::]*/: { /* n:\"BrtBeginMdx\", */ T:1 },\n\t/*::[*/0x0037/*::]*/: { /* n:\"BrtEndMdx\", */ T:-1 },\n\t/*::[*/0x0038/*::]*/: { /* n:\"BrtBeginMdxTuple\", */ T:1 },\n\t/*::[*/0x0039/*::]*/: { /* n:\"BrtEndMdxTuple\", */ T:-1 },\n\t/*::[*/0x003A/*::]*/: { /* n:\"BrtMdxMbrIstr\" */ },\n\t/*::[*/0x003B/*::]*/: { /* n:\"BrtStr\" */ },\n\t/*::[*/0x003C/*::]*/: { /* n:\"BrtColInfo\", */ f:parse_ColInfo },\n\t/*::[*/0x003E/*::]*/: { /* n:\"BrtCellRString\", */ f:parse_BrtCellRString },\n\t/*::[*/0x003F/*::]*/: { /* n:\"BrtCalcChainItem$\", */ f:parse_BrtCalcChainItem$ },\n\t/*::[*/0x0040/*::]*/: { /* n:\"BrtDVal\", */ f:parse_BrtDVal },\n\t/*::[*/0x0041/*::]*/: { /* n:\"BrtSxvcellNum\" */ },\n\t/*::[*/0x0042/*::]*/: { /* n:\"BrtSxvcellStr\" */ },\n\t/*::[*/0x0043/*::]*/: { /* n:\"BrtSxvcellBool\" */ },\n\t/*::[*/0x0044/*::]*/: { /* n:\"BrtSxvcellErr\" */ },\n\t/*::[*/0x0045/*::]*/: { /* n:\"BrtSxvcellDate\" */ },\n\t/*::[*/0x0046/*::]*/: { /* n:\"BrtSxvcellNil\" */ },\n\t/*::[*/0x0080/*::]*/: { /* n:\"BrtFileVersion\" */ },\n\t/*::[*/0x0081/*::]*/: { /* n:\"BrtBeginSheet\", */ T:1 },\n\t/*::[*/0x0082/*::]*/: { /* n:\"BrtEndSheet\", */ T:-1 },\n\t/*::[*/0x0083/*::]*/: { /* n:\"BrtBeginBook\", */ T:1, f:parsenoop, p:0 },\n\t/*::[*/0x0084/*::]*/: { /* n:\"BrtEndBook\", */ T:-1 },\n\t/*::[*/0x0085/*::]*/: { /* n:\"BrtBeginWsViews\", */ T:1 },\n\t/*::[*/0x0086/*::]*/: { /* n:\"BrtEndWsViews\", */ T:-1 },\n\t/*::[*/0x0087/*::]*/: { /* n:\"BrtBeginBookViews\", */ T:1 },\n\t/*::[*/0x0088/*::]*/: { /* n:\"BrtEndBookViews\", */ T:-1 },\n\t/*::[*/0x0089/*::]*/: { /* n:\"BrtBeginWsView\", */ T:1, f:parse_BrtBeginWsView },\n\t/*::[*/0x008A/*::]*/: { /* n:\"BrtEndWsView\", */ T:-1 },\n\t/*::[*/0x008B/*::]*/: { /* n:\"BrtBeginCsViews\", */ T:1 },\n\t/*::[*/0x008C/*::]*/: { /* n:\"BrtEndCsViews\", */ T:-1 },\n\t/*::[*/0x008D/*::]*/: { /* n:\"BrtBeginCsView\", */ T:1 },\n\t/*::[*/0x008E/*::]*/: { /* n:\"BrtEndCsView\", */ T:-1 },\n\t/*::[*/0x008F/*::]*/: { /* n:\"BrtBeginBundleShs\", */ T:1 },\n\t/*::[*/0x0090/*::]*/: { /* n:\"BrtEndBundleShs\", */ T:-1 },\n\t/*::[*/0x0091/*::]*/: { /* n:\"BrtBeginSheetData\", */ T:1 },\n\t/*::[*/0x0092/*::]*/: { /* n:\"BrtEndSheetData\", */ T:-1 },\n\t/*::[*/0x0093/*::]*/: { /* n:\"BrtWsProp\", */ f:parse_BrtWsProp },\n\t/*::[*/0x0094/*::]*/: { /* n:\"BrtWsDim\", */ f:parse_BrtWsDim, p:16 },\n\t/*::[*/0x0097/*::]*/: { /* n:\"BrtPane\", */ f:parse_BrtPane },\n\t/*::[*/0x0098/*::]*/: { /* n:\"BrtSel\" */ },\n\t/*::[*/0x0099/*::]*/: { /* n:\"BrtWbProp\", */ f:parse_BrtWbProp },\n\t/*::[*/0x009A/*::]*/: { /* n:\"BrtWbFactoid\" */ },\n\t/*::[*/0x009B/*::]*/: { /* n:\"BrtFileRecover\" */ },\n\t/*::[*/0x009C/*::]*/: { /* n:\"BrtBundleSh\", */ f:parse_BrtBundleSh },\n\t/*::[*/0x009D/*::]*/: { /* n:\"BrtCalcProp\" */ },\n\t/*::[*/0x009E/*::]*/: { /* n:\"BrtBookView\" */ },\n\t/*::[*/0x009F/*::]*/: { /* n:\"BrtBeginSst\", */ T:1, f:parse_BrtBeginSst },\n\t/*::[*/0x00A0/*::]*/: { /* n:\"BrtEndSst\", */ T:-1 },\n\t/*::[*/0x00A1/*::]*/: { /* n:\"BrtBeginAFilter\", */ T:1, f:parse_UncheckedRfX },\n\t/*::[*/0x00A2/*::]*/: { /* n:\"BrtEndAFilter\", */ T:-1 },\n\t/*::[*/0x00A3/*::]*/: { /* n:\"BrtBeginFilterColumn\", */ T:1 },\n\t/*::[*/0x00A4/*::]*/: { /* n:\"BrtEndFilterColumn\", */ T:-1 },\n\t/*::[*/0x00A5/*::]*/: { /* n:\"BrtBeginFilters\", */ T:1 },\n\t/*::[*/0x00A6/*::]*/: { /* n:\"BrtEndFilters\", */ T:-1 },\n\t/*::[*/0x00A7/*::]*/: { /* n:\"BrtFilter\" */ },\n\t/*::[*/0x00A8/*::]*/: { /* n:\"BrtColorFilter\" */ },\n\t/*::[*/0x00A9/*::]*/: { /* n:\"BrtIconFilter\" */ },\n\t/*::[*/0x00AA/*::]*/: { /* n:\"BrtTop10Filter\" */ },\n\t/*::[*/0x00AB/*::]*/: { /* n:\"BrtDynamicFilter\" */ },\n\t/*::[*/0x00AC/*::]*/: { /* n:\"BrtBeginCustomFilters\", */ T:1 },\n\t/*::[*/0x00AD/*::]*/: { /* n:\"BrtEndCustomFilters\", */ T:-1 },\n\t/*::[*/0x00AE/*::]*/: { /* n:\"BrtCustomFilter\" */ },\n\t/*::[*/0x00AF/*::]*/: { /* n:\"BrtAFilterDateGroupItem\" */ },\n\t/*::[*/0x00B0/*::]*/: { /* n:\"BrtMergeCell\", */ f:parse_BrtMergeCell },\n\t/*::[*/0x00B1/*::]*/: { /* n:\"BrtBeginMergeCells\", */ T:1 },\n\t/*::[*/0x00B2/*::]*/: { /* n:\"BrtEndMergeCells\", */ T:-1 },\n\t/*::[*/0x00B3/*::]*/: { /* n:\"BrtBeginPivotCacheDef\", */ T:1 },\n\t/*::[*/0x00B4/*::]*/: { /* n:\"BrtEndPivotCacheDef\", */ T:-1 },\n\t/*::[*/0x00B5/*::]*/: { /* n:\"BrtBeginPCDFields\", */ T:1 },\n\t/*::[*/0x00B6/*::]*/: { /* n:\"BrtEndPCDFields\", */ T:-1 },\n\t/*::[*/0x00B7/*::]*/: { /* n:\"BrtBeginPCDField\", */ T:1 },\n\t/*::[*/0x00B8/*::]*/: { /* n:\"BrtEndPCDField\", */ T:-1 },\n\t/*::[*/0x00B9/*::]*/: { /* n:\"BrtBeginPCDSource\", */ T:1 },\n\t/*::[*/0x00BA/*::]*/: { /* n:\"BrtEndPCDSource\", */ T:-1 },\n\t/*::[*/0x00BB/*::]*/: { /* n:\"BrtBeginPCDSRange\", */ T:1 },\n\t/*::[*/0x00BC/*::]*/: { /* n:\"BrtEndPCDSRange\", */ T:-1 },\n\t/*::[*/0x00BD/*::]*/: { /* n:\"BrtBeginPCDFAtbl\", */ T:1 },\n\t/*::[*/0x00BE/*::]*/: { /* n:\"BrtEndPCDFAtbl\", */ T:-1 },\n\t/*::[*/0x00BF/*::]*/: { /* n:\"BrtBeginPCDIRun\", */ T:1 },\n\t/*::[*/0x00C0/*::]*/: { /* n:\"BrtEndPCDIRun\", */ T:-1 },\n\t/*::[*/0x00C1/*::]*/: { /* n:\"BrtBeginPivotCacheRecords\", */ T:1 },\n\t/*::[*/0x00C2/*::]*/: { /* n:\"BrtEndPivotCacheRecords\", */ T:-1 },\n\t/*::[*/0x00C3/*::]*/: { /* n:\"BrtBeginPCDHierarchies\", */ T:1 },\n\t/*::[*/0x00C4/*::]*/: { /* n:\"BrtEndPCDHierarchies\", */ T:-1 },\n\t/*::[*/0x00C5/*::]*/: { /* n:\"BrtBeginPCDHierarchy\", */ T:1 },\n\t/*::[*/0x00C6/*::]*/: { /* n:\"BrtEndPCDHierarchy\", */ T:-1 },\n\t/*::[*/0x00C7/*::]*/: { /* n:\"BrtBeginPCDHFieldsUsage\", */ T:1 },\n\t/*::[*/0x00C8/*::]*/: { /* n:\"BrtEndPCDHFieldsUsage\", */ T:-1 },\n\t/*::[*/0x00C9/*::]*/: { /* n:\"BrtBeginExtConnection\", */ T:1 },\n\t/*::[*/0x00CA/*::]*/: { /* n:\"BrtEndExtConnection\", */ T:-1 },\n\t/*::[*/0x00CB/*::]*/: { /* n:\"BrtBeginECDbProps\", */ T:1 },\n\t/*::[*/0x00CC/*::]*/: { /* n:\"BrtEndECDbProps\", */ T:-1 },\n\t/*::[*/0x00CD/*::]*/: { /* n:\"BrtBeginECOlapProps\", */ T:1 },\n\t/*::[*/0x00CE/*::]*/: { /* n:\"BrtEndECOlapProps\", */ T:-1 },\n\t/*::[*/0x00CF/*::]*/: { /* n:\"BrtBeginPCDSConsol\", */ T:1 },\n\t/*::[*/0x00D0/*::]*/: { /* n:\"BrtEndPCDSConsol\", */ T:-1 },\n\t/*::[*/0x00D1/*::]*/: { /* n:\"BrtBeginPCDSCPages\", */ T:1 },\n\t/*::[*/0x00D2/*::]*/: { /* n:\"BrtEndPCDSCPages\", */ T:-1 },\n\t/*::[*/0x00D3/*::]*/: { /* n:\"BrtBeginPCDSCPage\", */ T:1 },\n\t/*::[*/0x00D4/*::]*/: { /* n:\"BrtEndPCDSCPage\", */ T:-1 },\n\t/*::[*/0x00D5/*::]*/: { /* n:\"BrtBeginPCDSCPItem\", */ T:1 },\n\t/*::[*/0x00D6/*::]*/: { /* n:\"BrtEndPCDSCPItem\", */ T:-1 },\n\t/*::[*/0x00D7/*::]*/: { /* n:\"BrtBeginPCDSCSets\", */ T:1 },\n\t/*::[*/0x00D8/*::]*/: { /* n:\"BrtEndPCDSCSets\", */ T:-1 },\n\t/*::[*/0x00D9/*::]*/: { /* n:\"BrtBeginPCDSCSet\", */ T:1 },\n\t/*::[*/0x00DA/*::]*/: { /* n:\"BrtEndPCDSCSet\", */ T:-1 },\n\t/*::[*/0x00DB/*::]*/: { /* n:\"BrtBeginPCDFGroup\", */ T:1 },\n\t/*::[*/0x00DC/*::]*/: { /* n:\"BrtEndPCDFGroup\", */ T:-1 },\n\t/*::[*/0x00DD/*::]*/: { /* n:\"BrtBeginPCDFGItems\", */ T:1 },\n\t/*::[*/0x00DE/*::]*/: { /* n:\"BrtEndPCDFGItems\", */ T:-1 },\n\t/*::[*/0x00DF/*::]*/: { /* n:\"BrtBeginPCDFGRange\", */ T:1 },\n\t/*::[*/0x00E0/*::]*/: { /* n:\"BrtEndPCDFGRange\", */ T:-1 },\n\t/*::[*/0x00E1/*::]*/: { /* n:\"BrtBeginPCDFGDiscrete\", */ T:1 },\n\t/*::[*/0x00E2/*::]*/: { /* n:\"BrtEndPCDFGDiscrete\", */ T:-1 },\n\t/*::[*/0x00E3/*::]*/: { /* n:\"BrtBeginPCDSDTupleCache\", */ T:1 },\n\t/*::[*/0x00E4/*::]*/: { /* n:\"BrtEndPCDSDTupleCache\", */ T:-1 },\n\t/*::[*/0x00E5/*::]*/: { /* n:\"BrtBeginPCDSDTCEntries\", */ T:1 },\n\t/*::[*/0x00E6/*::]*/: { /* n:\"BrtEndPCDSDTCEntries\", */ T:-1 },\n\t/*::[*/0x00E7/*::]*/: { /* n:\"BrtBeginPCDSDTCEMembers\", */ T:1 },\n\t/*::[*/0x00E8/*::]*/: { /* n:\"BrtEndPCDSDTCEMembers\", */ T:-1 },\n\t/*::[*/0x00E9/*::]*/: { /* n:\"BrtBeginPCDSDTCEMember\", */ T:1 },\n\t/*::[*/0x00EA/*::]*/: { /* n:\"BrtEndPCDSDTCEMember\", */ T:-1 },\n\t/*::[*/0x00EB/*::]*/: { /* n:\"BrtBeginPCDSDTCQueries\", */ T:1 },\n\t/*::[*/0x00EC/*::]*/: { /* n:\"BrtEndPCDSDTCQueries\", */ T:-1 },\n\t/*::[*/0x00ED/*::]*/: { /* n:\"BrtBeginPCDSDTCQuery\", */ T:1 },\n\t/*::[*/0x00EE/*::]*/: { /* n:\"BrtEndPCDSDTCQuery\", */ T:-1 },\n\t/*::[*/0x00EF/*::]*/: { /* n:\"BrtBeginPCDSDTCSets\", */ T:1 },\n\t/*::[*/0x00F0/*::]*/: { /* n:\"BrtEndPCDSDTCSets\", */ T:-1 },\n\t/*::[*/0x00F1/*::]*/: { /* n:\"BrtBeginPCDSDTCSet\", */ T:1 },\n\t/*::[*/0x00F2/*::]*/: { /* n:\"BrtEndPCDSDTCSet\", */ T:-1 },\n\t/*::[*/0x00F3/*::]*/: { /* n:\"BrtBeginPCDCalcItems\", */ T:1 },\n\t/*::[*/0x00F4/*::]*/: { /* n:\"BrtEndPCDCalcItems\", */ T:-1 },\n\t/*::[*/0x00F5/*::]*/: { /* n:\"BrtBeginPCDCalcItem\", */ T:1 },\n\t/*::[*/0x00F6/*::]*/: { /* n:\"BrtEndPCDCalcItem\", */ T:-1 },\n\t/*::[*/0x00F7/*::]*/: { /* n:\"BrtBeginPRule\", */ T:1 },\n\t/*::[*/0x00F8/*::]*/: { /* n:\"BrtEndPRule\", */ T:-1 },\n\t/*::[*/0x00F9/*::]*/: { /* n:\"BrtBeginPRFilters\", */ T:1 },\n\t/*::[*/0x00FA/*::]*/: { /* n:\"BrtEndPRFilters\", */ T:-1 },\n\t/*::[*/0x00FB/*::]*/: { /* n:\"BrtBeginPRFilter\", */ T:1 },\n\t/*::[*/0x00FC/*::]*/: { /* n:\"BrtEndPRFilter\", */ T:-1 },\n\t/*::[*/0x00FD/*::]*/: { /* n:\"BrtBeginPNames\", */ T:1 },\n\t/*::[*/0x00FE/*::]*/: { /* n:\"BrtEndPNames\", */ T:-1 },\n\t/*::[*/0x00FF/*::]*/: { /* n:\"BrtBeginPName\", */ T:1 },\n\t/*::[*/0x0100/*::]*/: { /* n:\"BrtEndPName\", */ T:-1 },\n\t/*::[*/0x0101/*::]*/: { /* n:\"BrtBeginPNPairs\", */ T:1 },\n\t/*::[*/0x0102/*::]*/: { /* n:\"BrtEndPNPairs\", */ T:-1 },\n\t/*::[*/0x0103/*::]*/: { /* n:\"BrtBeginPNPair\", */ T:1 },\n\t/*::[*/0x0104/*::]*/: { /* n:\"BrtEndPNPair\", */ T:-1 },\n\t/*::[*/0x0105/*::]*/: { /* n:\"BrtBeginECWebProps\", */ T:1 },\n\t/*::[*/0x0106/*::]*/: { /* n:\"BrtEndECWebProps\", */ T:-1 },\n\t/*::[*/0x0107/*::]*/: { /* n:\"BrtBeginEcWpTables\", */ T:1 },\n\t/*::[*/0x0108/*::]*/: { /* n:\"BrtEndECWPTables\", */ T:-1 },\n\t/*::[*/0x0109/*::]*/: { /* n:\"BrtBeginECParams\", */ T:1 },\n\t/*::[*/0x010A/*::]*/: { /* n:\"BrtEndECParams\", */ T:-1 },\n\t/*::[*/0x010B/*::]*/: { /* n:\"BrtBeginECParam\", */ T:1 },\n\t/*::[*/0x010C/*::]*/: { /* n:\"BrtEndECParam\", */ T:-1 },\n\t/*::[*/0x010D/*::]*/: { /* n:\"BrtBeginPCDKPIs\", */ T:1 },\n\t/*::[*/0x010E/*::]*/: { /* n:\"BrtEndPCDKPIs\", */ T:-1 },\n\t/*::[*/0x010F/*::]*/: { /* n:\"BrtBeginPCDKPI\", */ T:1 },\n\t/*::[*/0x0110/*::]*/: { /* n:\"BrtEndPCDKPI\", */ T:-1 },\n\t/*::[*/0x0111/*::]*/: { /* n:\"BrtBeginDims\", */ T:1 },\n\t/*::[*/0x0112/*::]*/: { /* n:\"BrtEndDims\", */ T:-1 },\n\t/*::[*/0x0113/*::]*/: { /* n:\"BrtBeginDim\", */ T:1 },\n\t/*::[*/0x0114/*::]*/: { /* n:\"BrtEndDim\", */ T:-1 },\n\t/*::[*/0x0115/*::]*/: { /* n:\"BrtIndexPartEnd\" */ },\n\t/*::[*/0x0116/*::]*/: { /* n:\"BrtBeginStyleSheet\", */ T:1 },\n\t/*::[*/0x0117/*::]*/: { /* n:\"BrtEndStyleSheet\", */ T:-1 },\n\t/*::[*/0x0118/*::]*/: { /* n:\"BrtBeginSXView\", */ T:1 },\n\t/*::[*/0x0119/*::]*/: { /* n:\"BrtEndSXVI\", */ T:-1 },\n\t/*::[*/0x011A/*::]*/: { /* n:\"BrtBeginSXVI\", */ T:1 },\n\t/*::[*/0x011B/*::]*/: { /* n:\"BrtBeginSXVIs\", */ T:1 },\n\t/*::[*/0x011C/*::]*/: { /* n:\"BrtEndSXVIs\", */ T:-1 },\n\t/*::[*/0x011D/*::]*/: { /* n:\"BrtBeginSXVD\", */ T:1 },\n\t/*::[*/0x011E/*::]*/: { /* n:\"BrtEndSXVD\", */ T:-1 },\n\t/*::[*/0x011F/*::]*/: { /* n:\"BrtBeginSXVDs\", */ T:1 },\n\t/*::[*/0x0120/*::]*/: { /* n:\"BrtEndSXVDs\", */ T:-1 },\n\t/*::[*/0x0121/*::]*/: { /* n:\"BrtBeginSXPI\", */ T:1 },\n\t/*::[*/0x0122/*::]*/: { /* n:\"BrtEndSXPI\", */ T:-1 },\n\t/*::[*/0x0123/*::]*/: { /* n:\"BrtBeginSXPIs\", */ T:1 },\n\t/*::[*/0x0124/*::]*/: { /* n:\"BrtEndSXPIs\", */ T:-1 },\n\t/*::[*/0x0125/*::]*/: { /* n:\"BrtBeginSXDI\", */ T:1 },\n\t/*::[*/0x0126/*::]*/: { /* n:\"BrtEndSXDI\", */ T:-1 },\n\t/*::[*/0x0127/*::]*/: { /* n:\"BrtBeginSXDIs\", */ T:1 },\n\t/*::[*/0x0128/*::]*/: { /* n:\"BrtEndSXDIs\", */ T:-1 },\n\t/*::[*/0x0129/*::]*/: { /* n:\"BrtBeginSXLI\", */ T:1 },\n\t/*::[*/0x012A/*::]*/: { /* n:\"BrtEndSXLI\", */ T:-1 },\n\t/*::[*/0x012B/*::]*/: { /* n:\"BrtBeginSXLIRws\", */ T:1 },\n\t/*::[*/0x012C/*::]*/: { /* n:\"BrtEndSXLIRws\", */ T:-1 },\n\t/*::[*/0x012D/*::]*/: { /* n:\"BrtBeginSXLICols\", */ T:1 },\n\t/*::[*/0x012E/*::]*/: { /* n:\"BrtEndSXLICols\", */ T:-1 },\n\t/*::[*/0x012F/*::]*/: { /* n:\"BrtBeginSXFormat\", */ T:1 },\n\t/*::[*/0x0130/*::]*/: { /* n:\"BrtEndSXFormat\", */ T:-1 },\n\t/*::[*/0x0131/*::]*/: { /* n:\"BrtBeginSXFormats\", */ T:1 },\n\t/*::[*/0x0132/*::]*/: { /* n:\"BrtEndSxFormats\", */ T:-1 },\n\t/*::[*/0x0133/*::]*/: { /* n:\"BrtBeginSxSelect\", */ T:1 },\n\t/*::[*/0x0134/*::]*/: { /* n:\"BrtEndSxSelect\", */ T:-1 },\n\t/*::[*/0x0135/*::]*/: { /* n:\"BrtBeginISXVDRws\", */ T:1 },\n\t/*::[*/0x0136/*::]*/: { /* n:\"BrtEndISXVDRws\", */ T:-1 },\n\t/*::[*/0x0137/*::]*/: { /* n:\"BrtBeginISXVDCols\", */ T:1 },\n\t/*::[*/0x0138/*::]*/: { /* n:\"BrtEndISXVDCols\", */ T:-1 },\n\t/*::[*/0x0139/*::]*/: { /* n:\"BrtEndSXLocation\", */ T:-1 },\n\t/*::[*/0x013A/*::]*/: { /* n:\"BrtBeginSXLocation\", */ T:1 },\n\t/*::[*/0x013B/*::]*/: { /* n:\"BrtEndSXView\", */ T:-1 },\n\t/*::[*/0x013C/*::]*/: { /* n:\"BrtBeginSXTHs\", */ T:1 },\n\t/*::[*/0x013D/*::]*/: { /* n:\"BrtEndSXTHs\", */ T:-1 },\n\t/*::[*/0x013E/*::]*/: { /* n:\"BrtBeginSXTH\", */ T:1 },\n\t/*::[*/0x013F/*::]*/: { /* n:\"BrtEndSXTH\", */ T:-1 },\n\t/*::[*/0x0140/*::]*/: { /* n:\"BrtBeginISXTHRws\", */ T:1 },\n\t/*::[*/0x0141/*::]*/: { /* n:\"BrtEndISXTHRws\", */ T:-1 },\n\t/*::[*/0x0142/*::]*/: { /* n:\"BrtBeginISXTHCols\", */ T:1 },\n\t/*::[*/0x0143/*::]*/: { /* n:\"BrtEndISXTHCols\", */ T:-1 },\n\t/*::[*/0x0144/*::]*/: { /* n:\"BrtBeginSXTDMPS\", */ T:1 },\n\t/*::[*/0x0145/*::]*/: { /* n:\"BrtEndSXTDMPs\", */ T:-1 },\n\t/*::[*/0x0146/*::]*/: { /* n:\"BrtBeginSXTDMP\", */ T:1 },\n\t/*::[*/0x0147/*::]*/: { /* n:\"BrtEndSXTDMP\", */ T:-1 },\n\t/*::[*/0x0148/*::]*/: { /* n:\"BrtBeginSXTHItems\", */ T:1 },\n\t/*::[*/0x0149/*::]*/: { /* n:\"BrtEndSXTHItems\", */ T:-1 },\n\t/*::[*/0x014A/*::]*/: { /* n:\"BrtBeginSXTHItem\", */ T:1 },\n\t/*::[*/0x014B/*::]*/: { /* n:\"BrtEndSXTHItem\", */ T:-1 },\n\t/*::[*/0x014C/*::]*/: { /* n:\"BrtBeginMetadata\", */ T:1 },\n\t/*::[*/0x014D/*::]*/: { /* n:\"BrtEndMetadata\", */ T:-1 },\n\t/*::[*/0x014E/*::]*/: { /* n:\"BrtBeginEsmdtinfo\", */ T:1 },\n\t/*::[*/0x014F/*::]*/: { /* n:\"BrtMdtinfo\", */ f:parse_BrtMdtinfo },\n\t/*::[*/0x0150/*::]*/: { /* n:\"BrtEndEsmdtinfo\", */ T:-1 },\n\t/*::[*/0x0151/*::]*/: { /* n:\"BrtBeginEsmdb\", */ f:parse_BrtBeginEsmdb, T:1 },\n\t/*::[*/0x0152/*::]*/: { /* n:\"BrtEndEsmdb\", */ T:-1 },\n\t/*::[*/0x0153/*::]*/: { /* n:\"BrtBeginEsfmd\", */ T:1 },\n\t/*::[*/0x0154/*::]*/: { /* n:\"BrtEndEsfmd\", */ T:-1 },\n\t/*::[*/0x0155/*::]*/: { /* n:\"BrtBeginSingleCells\", */ T:1 },\n\t/*::[*/0x0156/*::]*/: { /* n:\"BrtEndSingleCells\", */ T:-1 },\n\t/*::[*/0x0157/*::]*/: { /* n:\"BrtBeginList\", */ T:1 },\n\t/*::[*/0x0158/*::]*/: { /* n:\"BrtEndList\", */ T:-1 },\n\t/*::[*/0x0159/*::]*/: { /* n:\"BrtBeginListCols\", */ T:1 },\n\t/*::[*/0x015A/*::]*/: { /* n:\"BrtEndListCols\", */ T:-1 },\n\t/*::[*/0x015B/*::]*/: { /* n:\"BrtBeginListCol\", */ T:1 },\n\t/*::[*/0x015C/*::]*/: { /* n:\"BrtEndListCol\", */ T:-1 },\n\t/*::[*/0x015D/*::]*/: { /* n:\"BrtBeginListXmlCPr\", */ T:1 },\n\t/*::[*/0x015E/*::]*/: { /* n:\"BrtEndListXmlCPr\", */ T:-1 },\n\t/*::[*/0x015F/*::]*/: { /* n:\"BrtListCCFmla\" */ },\n\t/*::[*/0x0160/*::]*/: { /* n:\"BrtListTrFmla\" */ },\n\t/*::[*/0x0161/*::]*/: { /* n:\"BrtBeginExternals\", */ T:1 },\n\t/*::[*/0x0162/*::]*/: { /* n:\"BrtEndExternals\", */ T:-1 },\n\t/*::[*/0x0163/*::]*/: { /* n:\"BrtSupBookSrc\", */ f:parse_RelID},\n\t/*::[*/0x0165/*::]*/: { /* n:\"BrtSupSelf\" */ },\n\t/*::[*/0x0166/*::]*/: { /* n:\"BrtSupSame\" */ },\n\t/*::[*/0x0167/*::]*/: { /* n:\"BrtSupTabs\" */ },\n\t/*::[*/0x0168/*::]*/: { /* n:\"BrtBeginSupBook\", */ T:1 },\n\t/*::[*/0x0169/*::]*/: { /* n:\"BrtPlaceholderName\" */ },\n\t/*::[*/0x016A/*::]*/: { /* n:\"BrtExternSheet\", */ f:parse_ExternSheet },\n\t/*::[*/0x016B/*::]*/: { /* n:\"BrtExternTableStart\" */ },\n\t/*::[*/0x016C/*::]*/: { /* n:\"BrtExternTableEnd\" */ },\n\t/*::[*/0x016E/*::]*/: { /* n:\"BrtExternRowHdr\" */ },\n\t/*::[*/0x016F/*::]*/: { /* n:\"BrtExternCellBlank\" */ },\n\t/*::[*/0x0170/*::]*/: { /* n:\"BrtExternCellReal\" */ },\n\t/*::[*/0x0171/*::]*/: { /* n:\"BrtExternCellBool\" */ },\n\t/*::[*/0x0172/*::]*/: { /* n:\"BrtExternCellError\" */ },\n\t/*::[*/0x0173/*::]*/: { /* n:\"BrtExternCellString\" */ },\n\t/*::[*/0x0174/*::]*/: { /* n:\"BrtBeginEsmdx\", */ T:1 },\n\t/*::[*/0x0175/*::]*/: { /* n:\"BrtEndEsmdx\", */ T:-1 },\n\t/*::[*/0x0176/*::]*/: { /* n:\"BrtBeginMdxSet\", */ T:1 },\n\t/*::[*/0x0177/*::]*/: { /* n:\"BrtEndMdxSet\", */ T:-1 },\n\t/*::[*/0x0178/*::]*/: { /* n:\"BrtBeginMdxMbrProp\", */ T:1 },\n\t/*::[*/0x0179/*::]*/: { /* n:\"BrtEndMdxMbrProp\", */ T:-1 },\n\t/*::[*/0x017A/*::]*/: { /* n:\"BrtBeginMdxKPI\", */ T:1 },\n\t/*::[*/0x017B/*::]*/: { /* n:\"BrtEndMdxKPI\", */ T:-1 },\n\t/*::[*/0x017C/*::]*/: { /* n:\"BrtBeginEsstr\", */ T:1 },\n\t/*::[*/0x017D/*::]*/: { /* n:\"BrtEndEsstr\", */ T:-1 },\n\t/*::[*/0x017E/*::]*/: { /* n:\"BrtBeginPRFItem\", */ T:1 },\n\t/*::[*/0x017F/*::]*/: { /* n:\"BrtEndPRFItem\", */ T:-1 },\n\t/*::[*/0x0180/*::]*/: { /* n:\"BrtBeginPivotCacheIDs\", */ T:1 },\n\t/*::[*/0x0181/*::]*/: { /* n:\"BrtEndPivotCacheIDs\", */ T:-1 },\n\t/*::[*/0x0182/*::]*/: { /* n:\"BrtBeginPivotCacheID\", */ T:1 },\n\t/*::[*/0x0183/*::]*/: { /* n:\"BrtEndPivotCacheID\", */ T:-1 },\n\t/*::[*/0x0184/*::]*/: { /* n:\"BrtBeginISXVIs\", */ T:1 },\n\t/*::[*/0x0185/*::]*/: { /* n:\"BrtEndISXVIs\", */ T:-1 },\n\t/*::[*/0x0186/*::]*/: { /* n:\"BrtBeginColInfos\", */ T:1 },\n\t/*::[*/0x0187/*::]*/: { /* n:\"BrtEndColInfos\", */ T:-1 },\n\t/*::[*/0x0188/*::]*/: { /* n:\"BrtBeginRwBrk\", */ T:1 },\n\t/*::[*/0x0189/*::]*/: { /* n:\"BrtEndRwBrk\", */ T:-1 },\n\t/*::[*/0x018A/*::]*/: { /* n:\"BrtBeginColBrk\", */ T:1 },\n\t/*::[*/0x018B/*::]*/: { /* n:\"BrtEndColBrk\", */ T:-1 },\n\t/*::[*/0x018C/*::]*/: { /* n:\"BrtBrk\" */ },\n\t/*::[*/0x018D/*::]*/: { /* n:\"BrtUserBookView\" */ },\n\t/*::[*/0x018E/*::]*/: { /* n:\"BrtInfo\" */ },\n\t/*::[*/0x018F/*::]*/: { /* n:\"BrtCUsr\" */ },\n\t/*::[*/0x0190/*::]*/: { /* n:\"BrtUsr\" */ },\n\t/*::[*/0x0191/*::]*/: { /* n:\"BrtBeginUsers\", */ T:1 },\n\t/*::[*/0x0193/*::]*/: { /* n:\"BrtEOF\" */ },\n\t/*::[*/0x0194/*::]*/: { /* n:\"BrtUCR\" */ },\n\t/*::[*/0x0195/*::]*/: { /* n:\"BrtRRInsDel\" */ },\n\t/*::[*/0x0196/*::]*/: { /* n:\"BrtRREndInsDel\" */ },\n\t/*::[*/0x0197/*::]*/: { /* n:\"BrtRRMove\" */ },\n\t/*::[*/0x0198/*::]*/: { /* n:\"BrtRREndMove\" */ },\n\t/*::[*/0x0199/*::]*/: { /* n:\"BrtRRChgCell\" */ },\n\t/*::[*/0x019A/*::]*/: { /* n:\"BrtRREndChgCell\" */ },\n\t/*::[*/0x019B/*::]*/: { /* n:\"BrtRRHeader\" */ },\n\t/*::[*/0x019C/*::]*/: { /* n:\"BrtRRUserView\" */ },\n\t/*::[*/0x019D/*::]*/: { /* n:\"BrtRRRenSheet\" */ },\n\t/*::[*/0x019E/*::]*/: { /* n:\"BrtRRInsertSh\" */ },\n\t/*::[*/0x019F/*::]*/: { /* n:\"BrtRRDefName\" */ },\n\t/*::[*/0x01A0/*::]*/: { /* n:\"BrtRRNote\" */ },\n\t/*::[*/0x01A1/*::]*/: { /* n:\"BrtRRConflict\" */ },\n\t/*::[*/0x01A2/*::]*/: { /* n:\"BrtRRTQSIF\" */ },\n\t/*::[*/0x01A3/*::]*/: { /* n:\"BrtRRFormat\" */ },\n\t/*::[*/0x01A4/*::]*/: { /* n:\"BrtRREndFormat\" */ },\n\t/*::[*/0x01A5/*::]*/: { /* n:\"BrtRRAutoFmt\" */ },\n\t/*::[*/0x01A6/*::]*/: { /* n:\"BrtBeginUserShViews\", */ T:1 },\n\t/*::[*/0x01A7/*::]*/: { /* n:\"BrtBeginUserShView\", */ T:1 },\n\t/*::[*/0x01A8/*::]*/: { /* n:\"BrtEndUserShView\", */ T:-1 },\n\t/*::[*/0x01A9/*::]*/: { /* n:\"BrtEndUserShViews\", */ T:-1 },\n\t/*::[*/0x01AA/*::]*/: { /* n:\"BrtArrFmla\", */ f:parse_BrtArrFmla },\n\t/*::[*/0x01AB/*::]*/: { /* n:\"BrtShrFmla\", */ f:parse_BrtShrFmla },\n\t/*::[*/0x01AC/*::]*/: { /* n:\"BrtTable\" */ },\n\t/*::[*/0x01AD/*::]*/: { /* n:\"BrtBeginExtConnections\", */ T:1 },\n\t/*::[*/0x01AE/*::]*/: { /* n:\"BrtEndExtConnections\", */ T:-1 },\n\t/*::[*/0x01AF/*::]*/: { /* n:\"BrtBeginPCDCalcMems\", */ T:1 },\n\t/*::[*/0x01B0/*::]*/: { /* n:\"BrtEndPCDCalcMems\", */ T:-1 },\n\t/*::[*/0x01B1/*::]*/: { /* n:\"BrtBeginPCDCalcMem\", */ T:1 },\n\t/*::[*/0x01B2/*::]*/: { /* n:\"BrtEndPCDCalcMem\", */ T:-1 },\n\t/*::[*/0x01B3/*::]*/: { /* n:\"BrtBeginPCDHGLevels\", */ T:1 },\n\t/*::[*/0x01B4/*::]*/: { /* n:\"BrtEndPCDHGLevels\", */ T:-1 },\n\t/*::[*/0x01B5/*::]*/: { /* n:\"BrtBeginPCDHGLevel\", */ T:1 },\n\t/*::[*/0x01B6/*::]*/: { /* n:\"BrtEndPCDHGLevel\", */ T:-1 },\n\t/*::[*/0x01B7/*::]*/: { /* n:\"BrtBeginPCDHGLGroups\", */ T:1 },\n\t/*::[*/0x01B8/*::]*/: { /* n:\"BrtEndPCDHGLGroups\", */ T:-1 },\n\t/*::[*/0x01B9/*::]*/: { /* n:\"BrtBeginPCDHGLGroup\", */ T:1 },\n\t/*::[*/0x01BA/*::]*/: { /* n:\"BrtEndPCDHGLGroup\", */ T:-1 },\n\t/*::[*/0x01BB/*::]*/: { /* n:\"BrtBeginPCDHGLGMembers\", */ T:1 },\n\t/*::[*/0x01BC/*::]*/: { /* n:\"BrtEndPCDHGLGMembers\", */ T:-1 },\n\t/*::[*/0x01BD/*::]*/: { /* n:\"BrtBeginPCDHGLGMember\", */ T:1 },\n\t/*::[*/0x01BE/*::]*/: { /* n:\"BrtEndPCDHGLGMember\", */ T:-1 },\n\t/*::[*/0x01BF/*::]*/: { /* n:\"BrtBeginQSI\", */ T:1 },\n\t/*::[*/0x01C0/*::]*/: { /* n:\"BrtEndQSI\", */ T:-1 },\n\t/*::[*/0x01C1/*::]*/: { /* n:\"BrtBeginQSIR\", */ T:1 },\n\t/*::[*/0x01C2/*::]*/: { /* n:\"BrtEndQSIR\", */ T:-1 },\n\t/*::[*/0x01C3/*::]*/: { /* n:\"BrtBeginDeletedNames\", */ T:1 },\n\t/*::[*/0x01C4/*::]*/: { /* n:\"BrtEndDeletedNames\", */ T:-1 },\n\t/*::[*/0x01C5/*::]*/: { /* n:\"BrtBeginDeletedName\", */ T:1 },\n\t/*::[*/0x01C6/*::]*/: { /* n:\"BrtEndDeletedName\", */ T:-1 },\n\t/*::[*/0x01C7/*::]*/: { /* n:\"BrtBeginQSIFs\", */ T:1 },\n\t/*::[*/0x01C8/*::]*/: { /* n:\"BrtEndQSIFs\", */ T:-1 },\n\t/*::[*/0x01C9/*::]*/: { /* n:\"BrtBeginQSIF\", */ T:1 },\n\t/*::[*/0x01CA/*::]*/: { /* n:\"BrtEndQSIF\", */ T:-1 },\n\t/*::[*/0x01CB/*::]*/: { /* n:\"BrtBeginAutoSortScope\", */ T:1 },\n\t/*::[*/0x01CC/*::]*/: { /* n:\"BrtEndAutoSortScope\", */ T:-1 },\n\t/*::[*/0x01CD/*::]*/: { /* n:\"BrtBeginConditionalFormatting\", */ T:1 },\n\t/*::[*/0x01CE/*::]*/: { /* n:\"BrtEndConditionalFormatting\", */ T:-1 },\n\t/*::[*/0x01CF/*::]*/: { /* n:\"BrtBeginCFRule\", */ T:1 },\n\t/*::[*/0x01D0/*::]*/: { /* n:\"BrtEndCFRule\", */ T:-1 },\n\t/*::[*/0x01D1/*::]*/: { /* n:\"BrtBeginIconSet\", */ T:1 },\n\t/*::[*/0x01D2/*::]*/: { /* n:\"BrtEndIconSet\", */ T:-1 },\n\t/*::[*/0x01D3/*::]*/: { /* n:\"BrtBeginDatabar\", */ T:1 },\n\t/*::[*/0x01D4/*::]*/: { /* n:\"BrtEndDatabar\", */ T:-1 },\n\t/*::[*/0x01D5/*::]*/: { /* n:\"BrtBeginColorScale\", */ T:1 },\n\t/*::[*/0x01D6/*::]*/: { /* n:\"BrtEndColorScale\", */ T:-1 },\n\t/*::[*/0x01D7/*::]*/: { /* n:\"BrtCFVO\" */ },\n\t/*::[*/0x01D8/*::]*/: { /* n:\"BrtExternValueMeta\" */ },\n\t/*::[*/0x01D9/*::]*/: { /* n:\"BrtBeginColorPalette\", */ T:1 },\n\t/*::[*/0x01DA/*::]*/: { /* n:\"BrtEndColorPalette\", */ T:-1 },\n\t/*::[*/0x01DB/*::]*/: { /* n:\"BrtIndexedColor\" */ },\n\t/*::[*/0x01DC/*::]*/: { /* n:\"BrtMargins\", */ f:parse_BrtMargins },\n\t/*::[*/0x01DD/*::]*/: { /* n:\"BrtPrintOptions\" */ },\n\t/*::[*/0x01DE/*::]*/: { /* n:\"BrtPageSetup\" */ },\n\t/*::[*/0x01DF/*::]*/: { /* n:\"BrtBeginHeaderFooter\", */ T:1 },\n\t/*::[*/0x01E0/*::]*/: { /* n:\"BrtEndHeaderFooter\", */ T:-1 },\n\t/*::[*/0x01E1/*::]*/: { /* n:\"BrtBeginSXCrtFormat\", */ T:1 },\n\t/*::[*/0x01E2/*::]*/: { /* n:\"BrtEndSXCrtFormat\", */ T:-1 },\n\t/*::[*/0x01E3/*::]*/: { /* n:\"BrtBeginSXCrtFormats\", */ T:1 },\n\t/*::[*/0x01E4/*::]*/: { /* n:\"BrtEndSXCrtFormats\", */ T:-1 },\n\t/*::[*/0x01E5/*::]*/: { /* n:\"BrtWsFmtInfo\", */ f:parse_BrtWsFmtInfo },\n\t/*::[*/0x01E6/*::]*/: { /* n:\"BrtBeginMgs\", */ T:1 },\n\t/*::[*/0x01E7/*::]*/: { /* n:\"BrtEndMGs\", */ T:-1 },\n\t/*::[*/0x01E8/*::]*/: { /* n:\"BrtBeginMGMaps\", */ T:1 },\n\t/*::[*/0x01E9/*::]*/: { /* n:\"BrtEndMGMaps\", */ T:-1 },\n\t/*::[*/0x01EA/*::]*/: { /* n:\"BrtBeginMG\", */ T:1 },\n\t/*::[*/0x01EB/*::]*/: { /* n:\"BrtEndMG\", */ T:-1 },\n\t/*::[*/0x01EC/*::]*/: { /* n:\"BrtBeginMap\", */ T:1 },\n\t/*::[*/0x01ED/*::]*/: { /* n:\"BrtEndMap\", */ T:-1 },\n\t/*::[*/0x01EE/*::]*/: { /* n:\"BrtHLink\", */ f:parse_BrtHLink },\n\t/*::[*/0x01EF/*::]*/: { /* n:\"BrtBeginDCon\", */ T:1 },\n\t/*::[*/0x01F0/*::]*/: { /* n:\"BrtEndDCon\", */ T:-1 },\n\t/*::[*/0x01F1/*::]*/: { /* n:\"BrtBeginDRefs\", */ T:1 },\n\t/*::[*/0x01F2/*::]*/: { /* n:\"BrtEndDRefs\", */ T:-1 },\n\t/*::[*/0x01F3/*::]*/: { /* n:\"BrtDRef\" */ },\n\t/*::[*/0x01F4/*::]*/: { /* n:\"BrtBeginScenMan\", */ T:1 },\n\t/*::[*/0x01F5/*::]*/: { /* n:\"BrtEndScenMan\", */ T:-1 },\n\t/*::[*/0x01F6/*::]*/: { /* n:\"BrtBeginSct\", */ T:1 },\n\t/*::[*/0x01F7/*::]*/: { /* n:\"BrtEndSct\", */ T:-1 },\n\t/*::[*/0x01F8/*::]*/: { /* n:\"BrtSlc\" */ },\n\t/*::[*/0x01F9/*::]*/: { /* n:\"BrtBeginDXFs\", */ T:1 },\n\t/*::[*/0x01FA/*::]*/: { /* n:\"BrtEndDXFs\", */ T:-1 },\n\t/*::[*/0x01FB/*::]*/: { /* n:\"BrtDXF\" */ },\n\t/*::[*/0x01FC/*::]*/: { /* n:\"BrtBeginTableStyles\", */ T:1 },\n\t/*::[*/0x01FD/*::]*/: { /* n:\"BrtEndTableStyles\", */ T:-1 },\n\t/*::[*/0x01FE/*::]*/: { /* n:\"BrtBeginTableStyle\", */ T:1 },\n\t/*::[*/0x01FF/*::]*/: { /* n:\"BrtEndTableStyle\", */ T:-1 },\n\t/*::[*/0x0200/*::]*/: { /* n:\"BrtTableStyleElement\" */ },\n\t/*::[*/0x0201/*::]*/: { /* n:\"BrtTableStyleClient\" */ },\n\t/*::[*/0x0202/*::]*/: { /* n:\"BrtBeginVolDeps\", */ T:1 },\n\t/*::[*/0x0203/*::]*/: { /* n:\"BrtEndVolDeps\", */ T:-1 },\n\t/*::[*/0x0204/*::]*/: { /* n:\"BrtBeginVolType\", */ T:1 },\n\t/*::[*/0x0205/*::]*/: { /* n:\"BrtEndVolType\", */ T:-1 },\n\t/*::[*/0x0206/*::]*/: { /* n:\"BrtBeginVolMain\", */ T:1 },\n\t/*::[*/0x0207/*::]*/: { /* n:\"BrtEndVolMain\", */ T:-1 },\n\t/*::[*/0x0208/*::]*/: { /* n:\"BrtBeginVolTopic\", */ T:1 },\n\t/*::[*/0x0209/*::]*/: { /* n:\"BrtEndVolTopic\", */ T:-1 },\n\t/*::[*/0x020A/*::]*/: { /* n:\"BrtVolSubtopic\" */ },\n\t/*::[*/0x020B/*::]*/: { /* n:\"BrtVolRef\" */ },\n\t/*::[*/0x020C/*::]*/: { /* n:\"BrtVolNum\" */ },\n\t/*::[*/0x020D/*::]*/: { /* n:\"BrtVolErr\" */ },\n\t/*::[*/0x020E/*::]*/: { /* n:\"BrtVolStr\" */ },\n\t/*::[*/0x020F/*::]*/: { /* n:\"BrtVolBool\" */ },\n\t/*::[*/0x0210/*::]*/: { /* n:\"BrtBeginCalcChain$\", */ T:1 },\n\t/*::[*/0x0211/*::]*/: { /* n:\"BrtEndCalcChain$\", */ T:-1 },\n\t/*::[*/0x0212/*::]*/: { /* n:\"BrtBeginSortState\", */ T:1 },\n\t/*::[*/0x0213/*::]*/: { /* n:\"BrtEndSortState\", */ T:-1 },\n\t/*::[*/0x0214/*::]*/: { /* n:\"BrtBeginSortCond\", */ T:1 },\n\t/*::[*/0x0215/*::]*/: { /* n:\"BrtEndSortCond\", */ T:-1 },\n\t/*::[*/0x0216/*::]*/: { /* n:\"BrtBookProtection\" */ },\n\t/*::[*/0x0217/*::]*/: { /* n:\"BrtSheetProtection\" */ },\n\t/*::[*/0x0218/*::]*/: { /* n:\"BrtRangeProtection\" */ },\n\t/*::[*/0x0219/*::]*/: { /* n:\"BrtPhoneticInfo\" */ },\n\t/*::[*/0x021A/*::]*/: { /* n:\"BrtBeginECTxtWiz\", */ T:1 },\n\t/*::[*/0x021B/*::]*/: { /* n:\"BrtEndECTxtWiz\", */ T:-1 },\n\t/*::[*/0x021C/*::]*/: { /* n:\"BrtBeginECTWFldInfoLst\", */ T:1 },\n\t/*::[*/0x021D/*::]*/: { /* n:\"BrtEndECTWFldInfoLst\", */ T:-1 },\n\t/*::[*/0x021E/*::]*/: { /* n:\"BrtBeginECTwFldInfo\", */ T:1 },\n\t/*::[*/0x0224/*::]*/: { /* n:\"BrtFileSharing\" */ },\n\t/*::[*/0x0225/*::]*/: { /* n:\"BrtOleSize\" */ },\n\t/*::[*/0x0226/*::]*/: { /* n:\"BrtDrawing\", */ f:parse_RelID },\n\t/*::[*/0x0227/*::]*/: { /* n:\"BrtLegacyDrawing\" */ },\n\t/*::[*/0x0228/*::]*/: { /* n:\"BrtLegacyDrawingHF\" */ },\n\t/*::[*/0x0229/*::]*/: { /* n:\"BrtWebOpt\" */ },\n\t/*::[*/0x022A/*::]*/: { /* n:\"BrtBeginWebPubItems\", */ T:1 },\n\t/*::[*/0x022B/*::]*/: { /* n:\"BrtEndWebPubItems\", */ T:-1 },\n\t/*::[*/0x022C/*::]*/: { /* n:\"BrtBeginWebPubItem\", */ T:1 },\n\t/*::[*/0x022D/*::]*/: { /* n:\"BrtEndWebPubItem\", */ T:-1 },\n\t/*::[*/0x022E/*::]*/: { /* n:\"BrtBeginSXCondFmt\", */ T:1 },\n\t/*::[*/0x022F/*::]*/: { /* n:\"BrtEndSXCondFmt\", */ T:-1 },\n\t/*::[*/0x0230/*::]*/: { /* n:\"BrtBeginSXCondFmts\", */ T:1 },\n\t/*::[*/0x0231/*::]*/: { /* n:\"BrtEndSXCondFmts\", */ T:-1 },\n\t/*::[*/0x0232/*::]*/: { /* n:\"BrtBkHim\" */ },\n\t/*::[*/0x0234/*::]*/: { /* n:\"BrtColor\" */ },\n\t/*::[*/0x0235/*::]*/: { /* n:\"BrtBeginIndexedColors\", */ T:1 },\n\t/*::[*/0x0236/*::]*/: { /* n:\"BrtEndIndexedColors\", */ T:-1 },\n\t/*::[*/0x0239/*::]*/: { /* n:\"BrtBeginMRUColors\", */ T:1 },\n\t/*::[*/0x023A/*::]*/: { /* n:\"BrtEndMRUColors\", */ T:-1 },\n\t/*::[*/0x023C/*::]*/: { /* n:\"BrtMRUColor\" */ },\n\t/*::[*/0x023D/*::]*/: { /* n:\"BrtBeginDVals\", */ T:1 },\n\t/*::[*/0x023E/*::]*/: { /* n:\"BrtEndDVals\", */ T:-1 },\n\t/*::[*/0x0241/*::]*/: { /* n:\"BrtSupNameStart\" */ },\n\t/*::[*/0x0242/*::]*/: { /* n:\"BrtSupNameValueStart\" */ },\n\t/*::[*/0x0243/*::]*/: { /* n:\"BrtSupNameValueEnd\" */ },\n\t/*::[*/0x0244/*::]*/: { /* n:\"BrtSupNameNum\" */ },\n\t/*::[*/0x0245/*::]*/: { /* n:\"BrtSupNameErr\" */ },\n\t/*::[*/0x0246/*::]*/: { /* n:\"BrtSupNameSt\" */ },\n\t/*::[*/0x0247/*::]*/: { /* n:\"BrtSupNameNil\" */ },\n\t/*::[*/0x0248/*::]*/: { /* n:\"BrtSupNameBool\" */ },\n\t/*::[*/0x0249/*::]*/: { /* n:\"BrtSupNameFmla\" */ },\n\t/*::[*/0x024A/*::]*/: { /* n:\"BrtSupNameBits\" */ },\n\t/*::[*/0x024B/*::]*/: { /* n:\"BrtSupNameEnd\" */ },\n\t/*::[*/0x024C/*::]*/: { /* n:\"BrtEndSupBook\", */ T:-1 },\n\t/*::[*/0x024D/*::]*/: { /* n:\"BrtCellSmartTagProperty\" */ },\n\t/*::[*/0x024E/*::]*/: { /* n:\"BrtBeginCellSmartTag\", */ T:1 },\n\t/*::[*/0x024F/*::]*/: { /* n:\"BrtEndCellSmartTag\", */ T:-1 },\n\t/*::[*/0x0250/*::]*/: { /* n:\"BrtBeginCellSmartTags\", */ T:1 },\n\t/*::[*/0x0251/*::]*/: { /* n:\"BrtEndCellSmartTags\", */ T:-1 },\n\t/*::[*/0x0252/*::]*/: { /* n:\"BrtBeginSmartTags\", */ T:1 },\n\t/*::[*/0x0253/*::]*/: { /* n:\"BrtEndSmartTags\", */ T:-1 },\n\t/*::[*/0x0254/*::]*/: { /* n:\"BrtSmartTagType\" */ },\n\t/*::[*/0x0255/*::]*/: { /* n:\"BrtBeginSmartTagTypes\", */ T:1 },\n\t/*::[*/0x0256/*::]*/: { /* n:\"BrtEndSmartTagTypes\", */ T:-1 },\n\t/*::[*/0x0257/*::]*/: { /* n:\"BrtBeginSXFilters\", */ T:1 },\n\t/*::[*/0x0258/*::]*/: { /* n:\"BrtEndSXFilters\", */ T:-1 },\n\t/*::[*/0x0259/*::]*/: { /* n:\"BrtBeginSXFILTER\", */ T:1 },\n\t/*::[*/0x025A/*::]*/: { /* n:\"BrtEndSXFilter\", */ T:-1 },\n\t/*::[*/0x025B/*::]*/: { /* n:\"BrtBeginFills\", */ T:1 },\n\t/*::[*/0x025C/*::]*/: { /* n:\"BrtEndFills\", */ T:-1 },\n\t/*::[*/0x025D/*::]*/: { /* n:\"BrtBeginCellWatches\", */ T:1 },\n\t/*::[*/0x025E/*::]*/: { /* n:\"BrtEndCellWatches\", */ T:-1 },\n\t/*::[*/0x025F/*::]*/: { /* n:\"BrtCellWatch\" */ },\n\t/*::[*/0x0260/*::]*/: { /* n:\"BrtBeginCRErrs\", */ T:1 },\n\t/*::[*/0x0261/*::]*/: { /* n:\"BrtEndCRErrs\", */ T:-1 },\n\t/*::[*/0x0262/*::]*/: { /* n:\"BrtCrashRecErr\" */ },\n\t/*::[*/0x0263/*::]*/: { /* n:\"BrtBeginFonts\", */ T:1 },\n\t/*::[*/0x0264/*::]*/: { /* n:\"BrtEndFonts\", */ T:-1 },\n\t/*::[*/0x0265/*::]*/: { /* n:\"BrtBeginBorders\", */ T:1 },\n\t/*::[*/0x0266/*::]*/: { /* n:\"BrtEndBorders\", */ T:-1 },\n\t/*::[*/0x0267/*::]*/: { /* n:\"BrtBeginFmts\", */ T:1 },\n\t/*::[*/0x0268/*::]*/: { /* n:\"BrtEndFmts\", */ T:-1 },\n\t/*::[*/0x0269/*::]*/: { /* n:\"BrtBeginCellXFs\", */ T:1 },\n\t/*::[*/0x026A/*::]*/: { /* n:\"BrtEndCellXFs\", */ T:-1 },\n\t/*::[*/0x026B/*::]*/: { /* n:\"BrtBeginStyles\", */ T:1 },\n\t/*::[*/0x026C/*::]*/: { /* n:\"BrtEndStyles\", */ T:-1 },\n\t/*::[*/0x0271/*::]*/: { /* n:\"BrtBigName\" */ },\n\t/*::[*/0x0272/*::]*/: { /* n:\"BrtBeginCellStyleXFs\", */ T:1 },\n\t/*::[*/0x0273/*::]*/: { /* n:\"BrtEndCellStyleXFs\", */ T:-1 },\n\t/*::[*/0x0274/*::]*/: { /* n:\"BrtBeginComments\", */ T:1 },\n\t/*::[*/0x0275/*::]*/: { /* n:\"BrtEndComments\", */ T:-1 },\n\t/*::[*/0x0276/*::]*/: { /* n:\"BrtBeginCommentAuthors\", */ T:1 },\n\t/*::[*/0x0277/*::]*/: { /* n:\"BrtEndCommentAuthors\", */ T:-1 },\n\t/*::[*/0x0278/*::]*/: { /* n:\"BrtCommentAuthor\", */ f:parse_BrtCommentAuthor },\n\t/*::[*/0x0279/*::]*/: { /* n:\"BrtBeginCommentList\", */ T:1 },\n\t/*::[*/0x027A/*::]*/: { /* n:\"BrtEndCommentList\", */ T:-1 },\n\t/*::[*/0x027B/*::]*/: { /* n:\"BrtBeginComment\", */ T:1, f:parse_BrtBeginComment},\n\t/*::[*/0x027C/*::]*/: { /* n:\"BrtEndComment\", */ T:-1 },\n\t/*::[*/0x027D/*::]*/: { /* n:\"BrtCommentText\", */ f:parse_BrtCommentText },\n\t/*::[*/0x027E/*::]*/: { /* n:\"BrtBeginOleObjects\", */ T:1 },\n\t/*::[*/0x027F/*::]*/: { /* n:\"BrtOleObject\" */ },\n\t/*::[*/0x0280/*::]*/: { /* n:\"BrtEndOleObjects\", */ T:-1 },\n\t/*::[*/0x0281/*::]*/: { /* n:\"BrtBeginSxrules\", */ T:1 },\n\t/*::[*/0x0282/*::]*/: { /* n:\"BrtEndSxRules\", */ T:-1 },\n\t/*::[*/0x0283/*::]*/: { /* n:\"BrtBeginActiveXControls\", */ T:1 },\n\t/*::[*/0x0284/*::]*/: { /* n:\"BrtActiveX\" */ },\n\t/*::[*/0x0285/*::]*/: { /* n:\"BrtEndActiveXControls\", */ T:-1 },\n\t/*::[*/0x0286/*::]*/: { /* n:\"BrtBeginPCDSDTCEMembersSortBy\", */ T:1 },\n\t/*::[*/0x0288/*::]*/: { /* n:\"BrtBeginCellIgnoreECs\", */ T:1 },\n\t/*::[*/0x0289/*::]*/: { /* n:\"BrtCellIgnoreEC\" */ },\n\t/*::[*/0x028A/*::]*/: { /* n:\"BrtEndCellIgnoreECs\", */ T:-1 },\n\t/*::[*/0x028B/*::]*/: { /* n:\"BrtCsProp\", */ f:parse_BrtCsProp },\n\t/*::[*/0x028C/*::]*/: { /* n:\"BrtCsPageSetup\" */ },\n\t/*::[*/0x028D/*::]*/: { /* n:\"BrtBeginUserCsViews\", */ T:1 },\n\t/*::[*/0x028E/*::]*/: { /* n:\"BrtEndUserCsViews\", */ T:-1 },\n\t/*::[*/0x028F/*::]*/: { /* n:\"BrtBeginUserCsView\", */ T:1 },\n\t/*::[*/0x0290/*::]*/: { /* n:\"BrtEndUserCsView\", */ T:-1 },\n\t/*::[*/0x0291/*::]*/: { /* n:\"BrtBeginPcdSFCIEntries\", */ T:1 },\n\t/*::[*/0x0292/*::]*/: { /* n:\"BrtEndPCDSFCIEntries\", */ T:-1 },\n\t/*::[*/0x0293/*::]*/: { /* n:\"BrtPCDSFCIEntry\" */ },\n\t/*::[*/0x0294/*::]*/: { /* n:\"BrtBeginListParts\", */ T:1 },\n\t/*::[*/0x0295/*::]*/: { /* n:\"BrtListPart\" */ },\n\t/*::[*/0x0296/*::]*/: { /* n:\"BrtEndListParts\", */ T:-1 },\n\t/*::[*/0x0297/*::]*/: { /* n:\"BrtSheetCalcProp\" */ },\n\t/*::[*/0x0298/*::]*/: { /* n:\"BrtBeginFnGroup\", */ T:1 },\n\t/*::[*/0x0299/*::]*/: { /* n:\"BrtFnGroup\" */ },\n\t/*::[*/0x029A/*::]*/: { /* n:\"BrtEndFnGroup\", */ T:-1 },\n\t/*::[*/0x029B/*::]*/: { /* n:\"BrtSupAddin\" */ },\n\t/*::[*/0x029C/*::]*/: { /* n:\"BrtSXTDMPOrder\" */ },\n\t/*::[*/0x029D/*::]*/: { /* n:\"BrtCsProtection\" */ },\n\t/*::[*/0x029F/*::]*/: { /* n:\"BrtBeginWsSortMap\", */ T:1 },\n\t/*::[*/0x02A0/*::]*/: { /* n:\"BrtEndWsSortMap\", */ T:-1 },\n\t/*::[*/0x02A1/*::]*/: { /* n:\"BrtBeginRRSort\", */ T:1 },\n\t/*::[*/0x02A2/*::]*/: { /* n:\"BrtEndRRSort\", */ T:-1 },\n\t/*::[*/0x02A3/*::]*/: { /* n:\"BrtRRSortItem\" */ },\n\t/*::[*/0x02A4/*::]*/: { /* n:\"BrtFileSharingIso\" */ },\n\t/*::[*/0x02A5/*::]*/: { /* n:\"BrtBookProtectionIso\" */ },\n\t/*::[*/0x02A6/*::]*/: { /* n:\"BrtSheetProtectionIso\" */ },\n\t/*::[*/0x02A7/*::]*/: { /* n:\"BrtCsProtectionIso\" */ },\n\t/*::[*/0x02A8/*::]*/: { /* n:\"BrtRangeProtectionIso\" */ },\n\t/*::[*/0x02A9/*::]*/: { /* n:\"BrtDValList\" */ },\n\t/*::[*/0x0400/*::]*/: { /* n:\"BrtRwDescent\" */ },\n\t/*::[*/0x0401/*::]*/: { /* n:\"BrtKnownFonts\" */ },\n\t/*::[*/0x0402/*::]*/: { /* n:\"BrtBeginSXTupleSet\", */ T:1 },\n\t/*::[*/0x0403/*::]*/: { /* n:\"BrtEndSXTupleSet\", */ T:-1 },\n\t/*::[*/0x0404/*::]*/: { /* n:\"BrtBeginSXTupleSetHeader\", */ T:1 },\n\t/*::[*/0x0405/*::]*/: { /* n:\"BrtEndSXTupleSetHeader\", */ T:-1 },\n\t/*::[*/0x0406/*::]*/: { /* n:\"BrtSXTupleSetHeaderItem\" */ },\n\t/*::[*/0x0407/*::]*/: { /* n:\"BrtBeginSXTupleSetData\", */ T:1 },\n\t/*::[*/0x0408/*::]*/: { /* n:\"BrtEndSXTupleSetData\", */ T:-1 },\n\t/*::[*/0x0409/*::]*/: { /* n:\"BrtBeginSXTupleSetRow\", */ T:1 },\n\t/*::[*/0x040A/*::]*/: { /* n:\"BrtEndSXTupleSetRow\", */ T:-1 },\n\t/*::[*/0x040B/*::]*/: { /* n:\"BrtSXTupleSetRowItem\" */ },\n\t/*::[*/0x040C/*::]*/: { /* n:\"BrtNameExt\" */ },\n\t/*::[*/0x040D/*::]*/: { /* n:\"BrtPCDH14\" */ },\n\t/*::[*/0x040E/*::]*/: { /* n:\"BrtBeginPCDCalcMem14\", */ T:1 },\n\t/*::[*/0x040F/*::]*/: { /* n:\"BrtEndPCDCalcMem14\", */ T:-1 },\n\t/*::[*/0x0410/*::]*/: { /* n:\"BrtSXTH14\" */ },\n\t/*::[*/0x0411/*::]*/: { /* n:\"BrtBeginSparklineGroup\", */ T:1 },\n\t/*::[*/0x0412/*::]*/: { /* n:\"BrtEndSparklineGroup\", */ T:-1 },\n\t/*::[*/0x0413/*::]*/: { /* n:\"BrtSparkline\" */ },\n\t/*::[*/0x0414/*::]*/: { /* n:\"BrtSXDI14\" */ },\n\t/*::[*/0x0415/*::]*/: { /* n:\"BrtWsFmtInfoEx14\" */ },\n\t/*::[*/0x0416/*::]*/: { /* n:\"BrtBeginConditionalFormatting14\", */ T:1 },\n\t/*::[*/0x0417/*::]*/: { /* n:\"BrtEndConditionalFormatting14\", */ T:-1 },\n\t/*::[*/0x0418/*::]*/: { /* n:\"BrtBeginCFRule14\", */ T:1 },\n\t/*::[*/0x0419/*::]*/: { /* n:\"BrtEndCFRule14\", */ T:-1 },\n\t/*::[*/0x041A/*::]*/: { /* n:\"BrtCFVO14\" */ },\n\t/*::[*/0x041B/*::]*/: { /* n:\"BrtBeginDatabar14\", */ T:1 },\n\t/*::[*/0x041C/*::]*/: { /* n:\"BrtBeginIconSet14\", */ T:1 },\n\t/*::[*/0x041D/*::]*/: { /* n:\"BrtDVal14\", */ f: parse_BrtDVal14 },\n\t/*::[*/0x041E/*::]*/: { /* n:\"BrtBeginDVals14\", */ T:1 },\n\t/*::[*/0x041F/*::]*/: { /* n:\"BrtColor14\" */ },\n\t/*::[*/0x0420/*::]*/: { /* n:\"BrtBeginSparklines\", */ T:1 },\n\t/*::[*/0x0421/*::]*/: { /* n:\"BrtEndSparklines\", */ T:-1 },\n\t/*::[*/0x0422/*::]*/: { /* n:\"BrtBeginSparklineGroups\", */ T:1 },\n\t/*::[*/0x0423/*::]*/: { /* n:\"BrtEndSparklineGroups\", */ T:-1 },\n\t/*::[*/0x0425/*::]*/: { /* n:\"BrtSXVD14\" */ },\n\t/*::[*/0x0426/*::]*/: { /* n:\"BrtBeginSXView14\", */ T:1 },\n\t/*::[*/0x0427/*::]*/: { /* n:\"BrtEndSXView14\", */ T:-1 },\n\t/*::[*/0x0428/*::]*/: { /* n:\"BrtBeginSXView16\", */ T:1 },\n\t/*::[*/0x0429/*::]*/: { /* n:\"BrtEndSXView16\", */ T:-1 },\n\t/*::[*/0x042A/*::]*/: { /* n:\"BrtBeginPCD14\", */ T:1 },\n\t/*::[*/0x042B/*::]*/: { /* n:\"BrtEndPCD14\", */ T:-1 },\n\t/*::[*/0x042C/*::]*/: { /* n:\"BrtBeginExtConn14\", */ T:1 },\n\t/*::[*/0x042D/*::]*/: { /* n:\"BrtEndExtConn14\", */ T:-1 },\n\t/*::[*/0x042E/*::]*/: { /* n:\"BrtBeginSlicerCacheIDs\", */ T:1 },\n\t/*::[*/0x042F/*::]*/: { /* n:\"BrtEndSlicerCacheIDs\", */ T:-1 },\n\t/*::[*/0x0430/*::]*/: { /* n:\"BrtBeginSlicerCacheID\", */ T:1 },\n\t/*::[*/0x0431/*::]*/: { /* n:\"BrtEndSlicerCacheID\", */ T:-1 },\n\t/*::[*/0x0433/*::]*/: { /* n:\"BrtBeginSlicerCache\", */ T:1 },\n\t/*::[*/0x0434/*::]*/: { /* n:\"BrtEndSlicerCache\", */ T:-1 },\n\t/*::[*/0x0435/*::]*/: { /* n:\"BrtBeginSlicerCacheDef\", */ T:1 },\n\t/*::[*/0x0436/*::]*/: { /* n:\"BrtEndSlicerCacheDef\", */ T:-1 },\n\t/*::[*/0x0437/*::]*/: { /* n:\"BrtBeginSlicersEx\", */ T:1 },\n\t/*::[*/0x0438/*::]*/: { /* n:\"BrtEndSlicersEx\", */ T:-1 },\n\t/*::[*/0x0439/*::]*/: { /* n:\"BrtBeginSlicerEx\", */ T:1 },\n\t/*::[*/0x043A/*::]*/: { /* n:\"BrtEndSlicerEx\", */ T:-1 },\n\t/*::[*/0x043B/*::]*/: { /* n:\"BrtBeginSlicer\", */ T:1 },\n\t/*::[*/0x043C/*::]*/: { /* n:\"BrtEndSlicer\", */ T:-1 },\n\t/*::[*/0x043D/*::]*/: { /* n:\"BrtSlicerCachePivotTables\" */ },\n\t/*::[*/0x043E/*::]*/: { /* n:\"BrtBeginSlicerCacheOlapImpl\", */ T:1 },\n\t/*::[*/0x043F/*::]*/: { /* n:\"BrtEndSlicerCacheOlapImpl\", */ T:-1 },\n\t/*::[*/0x0440/*::]*/: { /* n:\"BrtBeginSlicerCacheLevelsData\", */ T:1 },\n\t/*::[*/0x0441/*::]*/: { /* n:\"BrtEndSlicerCacheLevelsData\", */ T:-1 },\n\t/*::[*/0x0442/*::]*/: { /* n:\"BrtBeginSlicerCacheLevelData\", */ T:1 },\n\t/*::[*/0x0443/*::]*/: { /* n:\"BrtEndSlicerCacheLevelData\", */ T:-1 },\n\t/*::[*/0x0444/*::]*/: { /* n:\"BrtBeginSlicerCacheSiRanges\", */ T:1 },\n\t/*::[*/0x0445/*::]*/: { /* n:\"BrtEndSlicerCacheSiRanges\", */ T:-1 },\n\t/*::[*/0x0446/*::]*/: { /* n:\"BrtBeginSlicerCacheSiRange\", */ T:1 },\n\t/*::[*/0x0447/*::]*/: { /* n:\"BrtEndSlicerCacheSiRange\", */ T:-1 },\n\t/*::[*/0x0448/*::]*/: { /* n:\"BrtSlicerCacheOlapItem\" */ },\n\t/*::[*/0x0449/*::]*/: { /* n:\"BrtBeginSlicerCacheSelections\", */ T:1 },\n\t/*::[*/0x044A/*::]*/: { /* n:\"BrtSlicerCacheSelection\" */ },\n\t/*::[*/0x044B/*::]*/: { /* n:\"BrtEndSlicerCacheSelections\", */ T:-1 },\n\t/*::[*/0x044C/*::]*/: { /* n:\"BrtBeginSlicerCacheNative\", */ T:1 },\n\t/*::[*/0x044D/*::]*/: { /* n:\"BrtEndSlicerCacheNative\", */ T:-1 },\n\t/*::[*/0x044E/*::]*/: { /* n:\"BrtSlicerCacheNativeItem\" */ },\n\t/*::[*/0x044F/*::]*/: { /* n:\"BrtRangeProtection14\" */ },\n\t/*::[*/0x0450/*::]*/: { /* n:\"BrtRangeProtectionIso14\" */ },\n\t/*::[*/0x0451/*::]*/: { /* n:\"BrtCellIgnoreEC14\" */ },\n\t/*::[*/0x0457/*::]*/: { /* n:\"BrtList14\" */ },\n\t/*::[*/0x0458/*::]*/: { /* n:\"BrtCFIcon\" */ },\n\t/*::[*/0x0459/*::]*/: { /* n:\"BrtBeginSlicerCachesPivotCacheIDs\", */ T:1 },\n\t/*::[*/0x045A/*::]*/: { /* n:\"BrtEndSlicerCachesPivotCacheIDs\", */ T:-1 },\n\t/*::[*/0x045B/*::]*/: { /* n:\"BrtBeginSlicers\", */ T:1 },\n\t/*::[*/0x045C/*::]*/: { /* n:\"BrtEndSlicers\", */ T:-1 },\n\t/*::[*/0x045D/*::]*/: { /* n:\"BrtWbProp14\" */ },\n\t/*::[*/0x045E/*::]*/: { /* n:\"BrtBeginSXEdit\", */ T:1 },\n\t/*::[*/0x045F/*::]*/: { /* n:\"BrtEndSXEdit\", */ T:-1 },\n\t/*::[*/0x0460/*::]*/: { /* n:\"BrtBeginSXEdits\", */ T:1 },\n\t/*::[*/0x0461/*::]*/: { /* n:\"BrtEndSXEdits\", */ T:-1 },\n\t/*::[*/0x0462/*::]*/: { /* n:\"BrtBeginSXChange\", */ T:1 },\n\t/*::[*/0x0463/*::]*/: { /* n:\"BrtEndSXChange\", */ T:-1 },\n\t/*::[*/0x0464/*::]*/: { /* n:\"BrtBeginSXChanges\", */ T:1 },\n\t/*::[*/0x0465/*::]*/: { /* n:\"BrtEndSXChanges\", */ T:-1 },\n\t/*::[*/0x0466/*::]*/: { /* n:\"BrtSXTupleItems\" */ },\n\t/*::[*/0x0468/*::]*/: { /* n:\"BrtBeginSlicerStyle\", */ T:1 },\n\t/*::[*/0x0469/*::]*/: { /* n:\"BrtEndSlicerStyle\", */ T:-1 },\n\t/*::[*/0x046A/*::]*/: { /* n:\"BrtSlicerStyleElement\" */ },\n\t/*::[*/0x046B/*::]*/: { /* n:\"BrtBeginStyleSheetExt14\", */ T:1 },\n\t/*::[*/0x046C/*::]*/: { /* n:\"BrtEndStyleSheetExt14\", */ T:-1 },\n\t/*::[*/0x046D/*::]*/: { /* n:\"BrtBeginSlicerCachesPivotCacheID\", */ T:1 },\n\t/*::[*/0x046E/*::]*/: { /* n:\"BrtEndSlicerCachesPivotCacheID\", */ T:-1 },\n\t/*::[*/0x046F/*::]*/: { /* n:\"BrtBeginConditionalFormattings\", */ T:1 },\n\t/*::[*/0x0470/*::]*/: { /* n:\"BrtEndConditionalFormattings\", */ T:-1 },\n\t/*::[*/0x0471/*::]*/: { /* n:\"BrtBeginPCDCalcMemExt\", */ T:1 },\n\t/*::[*/0x0472/*::]*/: { /* n:\"BrtEndPCDCalcMemExt\", */ T:-1 },\n\t/*::[*/0x0473/*::]*/: { /* n:\"BrtBeginPCDCalcMemsExt\", */ T:1 },\n\t/*::[*/0x0474/*::]*/: { /* n:\"BrtEndPCDCalcMemsExt\", */ T:-1 },\n\t/*::[*/0x0475/*::]*/: { /* n:\"BrtPCDField14\" */ },\n\t/*::[*/0x0476/*::]*/: { /* n:\"BrtBeginSlicerStyles\", */ T:1 },\n\t/*::[*/0x0477/*::]*/: { /* n:\"BrtEndSlicerStyles\", */ T:-1 },\n\t/*::[*/0x0478/*::]*/: { /* n:\"BrtBeginSlicerStyleElements\", */ T:1 },\n\t/*::[*/0x0479/*::]*/: { /* n:\"BrtEndSlicerStyleElements\", */ T:-1 },\n\t/*::[*/0x047A/*::]*/: { /* n:\"BrtCFRuleExt\" */ },\n\t/*::[*/0x047B/*::]*/: { /* n:\"BrtBeginSXCondFmt14\", */ T:1 },\n\t/*::[*/0x047C/*::]*/: { /* n:\"BrtEndSXCondFmt14\", */ T:-1 },\n\t/*::[*/0x047D/*::]*/: { /* n:\"BrtBeginSXCondFmts14\", */ T:1 },\n\t/*::[*/0x047E/*::]*/: { /* n:\"BrtEndSXCondFmts14\", */ T:-1 },\n\t/*::[*/0x0480/*::]*/: { /* n:\"BrtBeginSortCond14\", */ T:1 },\n\t/*::[*/0x0481/*::]*/: { /* n:\"BrtEndSortCond14\", */ T:-1 },\n\t/*::[*/0x0482/*::]*/: { /* n:\"BrtEndDVals14\", */ T:-1 },\n\t/*::[*/0x0483/*::]*/: { /* n:\"BrtEndIconSet14\", */ T:-1 },\n\t/*::[*/0x0484/*::]*/: { /* n:\"BrtEndDatabar14\", */ T:-1 },\n\t/*::[*/0x0485/*::]*/: { /* n:\"BrtBeginColorScale14\", */ T:1 },\n\t/*::[*/0x0486/*::]*/: { /* n:\"BrtEndColorScale14\", */ T:-1 },\n\t/*::[*/0x0487/*::]*/: { /* n:\"BrtBeginSxrules14\", */ T:1 },\n\t/*::[*/0x0488/*::]*/: { /* n:\"BrtEndSxrules14\", */ T:-1 },\n\t/*::[*/0x0489/*::]*/: { /* n:\"BrtBeginPRule14\", */ T:1 },\n\t/*::[*/0x048A/*::]*/: { /* n:\"BrtEndPRule14\", */ T:-1 },\n\t/*::[*/0x048B/*::]*/: { /* n:\"BrtBeginPRFilters14\", */ T:1 },\n\t/*::[*/0x048C/*::]*/: { /* n:\"BrtEndPRFilters14\", */ T:-1 },\n\t/*::[*/0x048D/*::]*/: { /* n:\"BrtBeginPRFilter14\", */ T:1 },\n\t/*::[*/0x048E/*::]*/: { /* n:\"BrtEndPRFilter14\", */ T:-1 },\n\t/*::[*/0x048F/*::]*/: { /* n:\"BrtBeginPRFItem14\", */ T:1 },\n\t/*::[*/0x0490/*::]*/: { /* n:\"BrtEndPRFItem14\", */ T:-1 },\n\t/*::[*/0x0491/*::]*/: { /* n:\"BrtBeginCellIgnoreECs14\", */ T:1 },\n\t/*::[*/0x0492/*::]*/: { /* n:\"BrtEndCellIgnoreECs14\", */ T:-1 },\n\t/*::[*/0x0493/*::]*/: { /* n:\"BrtDxf14\" */ },\n\t/*::[*/0x0494/*::]*/: { /* n:\"BrtBeginDxF14s\", */ T:1 },\n\t/*::[*/0x0495/*::]*/: { /* n:\"BrtEndDxf14s\", */ T:-1 },\n\t/*::[*/0x0499/*::]*/: { /* n:\"BrtFilter14\" */ },\n\t/*::[*/0x049A/*::]*/: { /* n:\"BrtBeginCustomFilters14\", */ T:1 },\n\t/*::[*/0x049C/*::]*/: { /* n:\"BrtCustomFilter14\" */ },\n\t/*::[*/0x049D/*::]*/: { /* n:\"BrtIconFilter14\" */ },\n\t/*::[*/0x049E/*::]*/: { /* n:\"BrtPivotCacheConnectionName\" */ },\n\t/*::[*/0x0800/*::]*/: { /* n:\"BrtBeginDecoupledPivotCacheIDs\", */ T:1 },\n\t/*::[*/0x0801/*::]*/: { /* n:\"BrtEndDecoupledPivotCacheIDs\", */ T:-1 },\n\t/*::[*/0x0802/*::]*/: { /* n:\"BrtDecoupledPivotCacheID\" */ },\n\t/*::[*/0x0803/*::]*/: { /* n:\"BrtBeginPivotTableRefs\", */ T:1 },\n\t/*::[*/0x0804/*::]*/: { /* n:\"BrtEndPivotTableRefs\", */ T:-1 },\n\t/*::[*/0x0805/*::]*/: { /* n:\"BrtPivotTableRef\" */ },\n\t/*::[*/0x0806/*::]*/: { /* n:\"BrtSlicerCacheBookPivotTables\" */ },\n\t/*::[*/0x0807/*::]*/: { /* n:\"BrtBeginSxvcells\", */ T:1 },\n\t/*::[*/0x0808/*::]*/: { /* n:\"BrtEndSxvcells\", */ T:-1 },\n\t/*::[*/0x0809/*::]*/: { /* n:\"BrtBeginSxRow\", */ T:1 },\n\t/*::[*/0x080A/*::]*/: { /* n:\"BrtEndSxRow\", */ T:-1 },\n\t/*::[*/0x080C/*::]*/: { /* n:\"BrtPcdCalcMem15\" */ },\n\t/*::[*/0x0813/*::]*/: { /* n:\"BrtQsi15\" */ },\n\t/*::[*/0x0814/*::]*/: { /* n:\"BrtBeginWebExtensions\", */ T:1 },\n\t/*::[*/0x0815/*::]*/: { /* n:\"BrtEndWebExtensions\", */ T:-1 },\n\t/*::[*/0x0816/*::]*/: { /* n:\"BrtWebExtension\" */ },\n\t/*::[*/0x0817/*::]*/: { /* n:\"BrtAbsPath15\" */ },\n\t/*::[*/0x0818/*::]*/: { /* n:\"BrtBeginPivotTableUISettings\", */ T:1 },\n\t/*::[*/0x0819/*::]*/: { /* n:\"BrtEndPivotTableUISettings\", */ T:-1 },\n\t/*::[*/0x081B/*::]*/: { /* n:\"BrtTableSlicerCacheIDs\" */ },\n\t/*::[*/0x081C/*::]*/: { /* n:\"BrtTableSlicerCacheID\" */ },\n\t/*::[*/0x081D/*::]*/: { /* n:\"BrtBeginTableSlicerCache\", */ T:1 },\n\t/*::[*/0x081E/*::]*/: { /* n:\"BrtEndTableSlicerCache\", */ T:-1 },\n\t/*::[*/0x081F/*::]*/: { /* n:\"BrtSxFilter15\" */ },\n\t/*::[*/0x0820/*::]*/: { /* n:\"BrtBeginTimelineCachePivotCacheIDs\", */ T:1 },\n\t/*::[*/0x0821/*::]*/: { /* n:\"BrtEndTimelineCachePivotCacheIDs\", */ T:-1 },\n\t/*::[*/0x0822/*::]*/: { /* n:\"BrtTimelineCachePivotCacheID\" */ },\n\t/*::[*/0x0823/*::]*/: { /* n:\"BrtBeginTimelineCacheIDs\", */ T:1 },\n\t/*::[*/0x0824/*::]*/: { /* n:\"BrtEndTimelineCacheIDs\", */ T:-1 },\n\t/*::[*/0x0825/*::]*/: { /* n:\"BrtBeginTimelineCacheID\", */ T:1 },\n\t/*::[*/0x0826/*::]*/: { /* n:\"BrtEndTimelineCacheID\", */ T:-1 },\n\t/*::[*/0x0827/*::]*/: { /* n:\"BrtBeginTimelinesEx\", */ T:1 },\n\t/*::[*/0x0828/*::]*/: { /* n:\"BrtEndTimelinesEx\", */ T:-1 },\n\t/*::[*/0x0829/*::]*/: { /* n:\"BrtBeginTimelineEx\", */ T:1 },\n\t/*::[*/0x082A/*::]*/: { /* n:\"BrtEndTimelineEx\", */ T:-1 },\n\t/*::[*/0x082B/*::]*/: { /* n:\"BrtWorkBookPr15\" */ },\n\t/*::[*/0x082C/*::]*/: { /* n:\"BrtPCDH15\" */ },\n\t/*::[*/0x082D/*::]*/: { /* n:\"BrtBeginTimelineStyle\", */ T:1 },\n\t/*::[*/0x082E/*::]*/: { /* n:\"BrtEndTimelineStyle\", */ T:-1 },\n\t/*::[*/0x082F/*::]*/: { /* n:\"BrtTimelineStyleElement\" */ },\n\t/*::[*/0x0830/*::]*/: { /* n:\"BrtBeginTimelineStylesheetExt15\", */ T:1 },\n\t/*::[*/0x0831/*::]*/: { /* n:\"BrtEndTimelineStylesheetExt15\", */ T:-1 },\n\t/*::[*/0x0832/*::]*/: { /* n:\"BrtBeginTimelineStyles\", */ T:1 },\n\t/*::[*/0x0833/*::]*/: { /* n:\"BrtEndTimelineStyles\", */ T:-1 },\n\t/*::[*/0x0834/*::]*/: { /* n:\"BrtBeginTimelineStyleElements\", */ T:1 },\n\t/*::[*/0x0835/*::]*/: { /* n:\"BrtEndTimelineStyleElements\", */ T:-1 },\n\t/*::[*/0x0836/*::]*/: { /* n:\"BrtDxf15\" */ },\n\t/*::[*/0x0837/*::]*/: { /* n:\"BrtBeginDxfs15\", */ T:1 },\n\t/*::[*/0x0838/*::]*/: { /* n:\"BrtEndDxfs15\", */ T:-1 },\n\t/*::[*/0x0839/*::]*/: { /* n:\"BrtSlicerCacheHideItemsWithNoData\" */ },\n\t/*::[*/0x083A/*::]*/: { /* n:\"BrtBeginItemUniqueNames\", */ T:1 },\n\t/*::[*/0x083B/*::]*/: { /* n:\"BrtEndItemUniqueNames\", */ T:-1 },\n\t/*::[*/0x083C/*::]*/: { /* n:\"BrtItemUniqueName\" */ },\n\t/*::[*/0x083D/*::]*/: { /* n:\"BrtBeginExtConn15\", */ T:1 },\n\t/*::[*/0x083E/*::]*/: { /* n:\"BrtEndExtConn15\", */ T:-1 },\n\t/*::[*/0x083F/*::]*/: { /* n:\"BrtBeginOledbPr15\", */ T:1 },\n\t/*::[*/0x0840/*::]*/: { /* n:\"BrtEndOledbPr15\", */ T:-1 },\n\t/*::[*/0x0841/*::]*/: { /* n:\"BrtBeginDataFeedPr15\", */ T:1 },\n\t/*::[*/0x0842/*::]*/: { /* n:\"BrtEndDataFeedPr15\", */ T:-1 },\n\t/*::[*/0x0843/*::]*/: { /* n:\"BrtTextPr15\" */ },\n\t/*::[*/0x0844/*::]*/: { /* n:\"BrtRangePr15\" */ },\n\t/*::[*/0x0845/*::]*/: { /* n:\"BrtDbCommand15\" */ },\n\t/*::[*/0x0846/*::]*/: { /* n:\"BrtBeginDbTables15\", */ T:1 },\n\t/*::[*/0x0847/*::]*/: { /* n:\"BrtEndDbTables15\", */ T:-1 },\n\t/*::[*/0x0848/*::]*/: { /* n:\"BrtDbTable15\" */ },\n\t/*::[*/0x0849/*::]*/: { /* n:\"BrtBeginDataModel\", */ T:1 },\n\t/*::[*/0x084A/*::]*/: { /* n:\"BrtEndDataModel\", */ T:-1 },\n\t/*::[*/0x084B/*::]*/: { /* n:\"BrtBeginModelTables\", */ T:1 },\n\t/*::[*/0x084C/*::]*/: { /* n:\"BrtEndModelTables\", */ T:-1 },\n\t/*::[*/0x084D/*::]*/: { /* n:\"BrtModelTable\" */ },\n\t/*::[*/0x084E/*::]*/: { /* n:\"BrtBeginModelRelationships\", */ T:1 },\n\t/*::[*/0x084F/*::]*/: { /* n:\"BrtEndModelRelationships\", */ T:-1 },\n\t/*::[*/0x0850/*::]*/: { /* n:\"BrtModelRelationship\" */ },\n\t/*::[*/0x0851/*::]*/: { /* n:\"BrtBeginECTxtWiz15\", */ T:1 },\n\t/*::[*/0x0852/*::]*/: { /* n:\"BrtEndECTxtWiz15\", */ T:-1 },\n\t/*::[*/0x0853/*::]*/: { /* n:\"BrtBeginECTWFldInfoLst15\", */ T:1 },\n\t/*::[*/0x0854/*::]*/: { /* n:\"BrtEndECTWFldInfoLst15\", */ T:-1 },\n\t/*::[*/0x0855/*::]*/: { /* n:\"BrtBeginECTWFldInfo15\", */ T:1 },\n\t/*::[*/0x0856/*::]*/: { /* n:\"BrtFieldListActiveItem\" */ },\n\t/*::[*/0x0857/*::]*/: { /* n:\"BrtPivotCacheIdVersion\" */ },\n\t/*::[*/0x0858/*::]*/: { /* n:\"BrtSXDI15\" */ },\n\t/*::[*/0x0859/*::]*/: { /* n:\"BrtBeginModelTimeGroupings\", */ T:1 },\n\t/*::[*/0x085A/*::]*/: { /* n:\"BrtEndModelTimeGroupings\", */ T:-1 },\n\t/*::[*/0x085B/*::]*/: { /* n:\"BrtBeginModelTimeGrouping\", */ T:1 },\n\t/*::[*/0x085C/*::]*/: { /* n:\"BrtEndModelTimeGrouping\", */ T:-1 },\n\t/*::[*/0x085D/*::]*/: { /* n:\"BrtModelTimeGroupingCalcCol\" */ },\n\t/*::[*/0x0C00/*::]*/: { /* n:\"BrtUid\" */ },\n\t/*::[*/0x0C01/*::]*/: { /* n:\"BrtRevisionPtr\" */ },\n\t/*::[*/0x1000/*::]*/: { /* n:\"BrtBeginDynamicArrayPr\", */ T:1 },\n\t/*::[*/0x1001/*::]*/: { /* n:\"BrtEndDynamicArrayPr\", */ T:-1 },\n\t/*::[*/0x138A/*::]*/: { /* n:\"BrtBeginRichValueBlock\", */ T:1 },\n\t/*::[*/0x138B/*::]*/: { /* n:\"BrtEndRichValueBlock\", */ T:-1 },\n\t/*::[*/0x13D9/*::]*/: { /* n:\"BrtBeginRichFilters\", */ T:1 },\n\t/*::[*/0x13DA/*::]*/: { /* n:\"BrtEndRichFilters\", */ T:-1 },\n\t/*::[*/0x13DB/*::]*/: { /* n:\"BrtRichFilter\" */ },\n\t/*::[*/0x13DC/*::]*/: { /* n:\"BrtBeginRichFilterColumn\", */ T:1 },\n\t/*::[*/0x13DD/*::]*/: { /* n:\"BrtEndRichFilterColumn\", */ T:-1 },\n\t/*::[*/0x13DE/*::]*/: { /* n:\"BrtBeginCustomRichFilters\", */ T:1 },\n\t/*::[*/0x13DF/*::]*/: { /* n:\"BrtEndCustomRichFilters\", */ T:-1 },\n\t/*::[*/0x13E0/*::]*/: { /* n:\"BrtCustomRichFilter\" */ },\n\t/*::[*/0x13E1/*::]*/: { /* n:\"BrtTop10RichFilter\" */ },\n\t/*::[*/0x13E2/*::]*/: { /* n:\"BrtDynamicRichFilter\" */ },\n\t/*::[*/0x13E4/*::]*/: { /* n:\"BrtBeginRichSortCondition\", */ T:1 },\n\t/*::[*/0x13E5/*::]*/: { /* n:\"BrtEndRichSortCondition\", */ T:-1 },\n\t/*::[*/0x13E6/*::]*/: { /* n:\"BrtRichFilterDateGroupItem\" */ },\n\t/*::[*/0x13E7/*::]*/: { /* n:\"BrtBeginCalcFeatures\", */ T:1 },\n\t/*::[*/0x13E8/*::]*/: { /* n:\"BrtEndCalcFeatures\", */ T:-1 },\n\t/*::[*/0x13E9/*::]*/: { /* n:\"BrtCalcFeature\" */ },\n\t/*::[*/0x13EB/*::]*/: { /* n:\"BrtExternalLinksPr\" */ },\n\t/*::[*/0xFFFF/*::]*/: { n:\"\" }\n};\n\n/* [MS-XLS] 2.3 Record Enumeration (and other sources) */\nvar XLSRecordEnum = {\n\t/* [MS-XLS] 2.3 Record Enumeration 2021-08-17 */\n\t/*::[*/0x0006/*::]*/: { /* n:\"Formula\", */ f:parse_Formula },\n\t/*::[*/0x000a/*::]*/: { /* n:\"EOF\", */ f:parsenoop2 },\n\t/*::[*/0x000c/*::]*/: { /* n:\"CalcCount\", */ f:parseuint16 }, //\n\t/*::[*/0x000d/*::]*/: { /* n:\"CalcMode\", */ f:parseuint16 }, //\n\t/*::[*/0x000e/*::]*/: { /* n:\"CalcPrecision\", */ f:parsebool }, //\n\t/*::[*/0x000f/*::]*/: { /* n:\"CalcRefMode\", */ f:parsebool }, //\n\t/*::[*/0x0010/*::]*/: { /* n:\"CalcDelta\", */ f:parse_Xnum }, //\n\t/*::[*/0x0011/*::]*/: { /* n:\"CalcIter\", */ f:parsebool }, //\n\t/*::[*/0x0012/*::]*/: { /* n:\"Protect\", */ f:parsebool },\n\t/*::[*/0x0013/*::]*/: { /* n:\"Password\", */ f:parseuint16 },\n\t/*::[*/0x0014/*::]*/: { /* n:\"Header\", */ f:parse_XLHeaderFooter },\n\t/*::[*/0x0015/*::]*/: { /* n:\"Footer\", */ f:parse_XLHeaderFooter },\n\t/*::[*/0x0017/*::]*/: { /* n:\"ExternSheet\", */ f:parse_ExternSheet },\n\t/*::[*/0x0018/*::]*/: { /* n:\"Lbl\", */ f:parse_Lbl },\n\t/*::[*/0x0019/*::]*/: { /* n:\"WinProtect\", */ f:parsebool },\n\t/*::[*/0x001a/*::]*/: { /* n:\"VerticalPageBreaks\", */ },\n\t/*::[*/0x001b/*::]*/: { /* n:\"HorizontalPageBreaks\", */ },\n\t/*::[*/0x001c/*::]*/: { /* n:\"Note\", */ f:parse_Note },\n\t/*::[*/0x001d/*::]*/: { /* n:\"Selection\", */ },\n\t/*::[*/0x0022/*::]*/: { /* n:\"Date1904\", */ f:parsebool },\n\t/*::[*/0x0023/*::]*/: { /* n:\"ExternName\", */ f:parse_ExternName },\n\t/*::[*/0x0026/*::]*/: { /* n:\"LeftMargin\", */ f:parse_Xnum }, // *\n\t/*::[*/0x0027/*::]*/: { /* n:\"RightMargin\", */ f:parse_Xnum }, // *\n\t/*::[*/0x0028/*::]*/: { /* n:\"TopMargin\", */ f:parse_Xnum }, // *\n\t/*::[*/0x0029/*::]*/: { /* n:\"BottomMargin\", */ f:parse_Xnum }, // *\n\t/*::[*/0x002a/*::]*/: { /* n:\"PrintRowCol\", */ f:parsebool },\n\t/*::[*/0x002b/*::]*/: { /* n:\"PrintGrid\", */ f:parsebool },\n\t/*::[*/0x002f/*::]*/: { /* n:\"FilePass\", */ f:parse_FilePass },\n\t/*::[*/0x0031/*::]*/: { /* n:\"Font\", */ f:parse_Font },\n\t/*::[*/0x0033/*::]*/: { /* n:\"PrintSize\", */ f:parseuint16 },\n\t/*::[*/0x003c/*::]*/: { /* n:\"Continue\", */ },\n\t/*::[*/0x003d/*::]*/: { /* n:\"Window1\", */ f:parse_Window1 },\n\t/*::[*/0x0040/*::]*/: { /* n:\"Backup\", */ f:parsebool },\n\t/*::[*/0x0041/*::]*/: { /* n:\"Pane\", */ f:parse_Pane },\n\t/*::[*/0x0042/*::]*/: { /* n:\"CodePage\", */ f:parseuint16 },\n\t/*::[*/0x004d/*::]*/: { /* n:\"Pls\", */ },\n\t/*::[*/0x0050/*::]*/: { /* n:\"DCon\", */ },\n\t/*::[*/0x0051/*::]*/: { /* n:\"DConRef\", */ },\n\t/*::[*/0x0052/*::]*/: { /* n:\"DConName\", */ },\n\t/*::[*/0x0055/*::]*/: { /* n:\"DefColWidth\", */ f:parseuint16 },\n\t/*::[*/0x0059/*::]*/: { /* n:\"XCT\", */ },\n\t/*::[*/0x005a/*::]*/: { /* n:\"CRN\", */ },\n\t/*::[*/0x005b/*::]*/: { /* n:\"FileSharing\", */ },\n\t/*::[*/0x005c/*::]*/: { /* n:\"WriteAccess\", */ f:parse_WriteAccess },\n\t/*::[*/0x005d/*::]*/: { /* n:\"Obj\", */ f:parse_Obj },\n\t/*::[*/0x005e/*::]*/: { /* n:\"Uncalced\", */ },\n\t/*::[*/0x005f/*::]*/: { /* n:\"CalcSaveRecalc\", */ f:parsebool }, //\n\t/*::[*/0x0060/*::]*/: { /* n:\"Template\", */ },\n\t/*::[*/0x0061/*::]*/: { /* n:\"Intl\", */ },\n\t/*::[*/0x0063/*::]*/: { /* n:\"ObjProtect\", */ f:parsebool },\n\t/*::[*/0x007d/*::]*/: { /* n:\"ColInfo\", */ f:parse_ColInfo },\n\t/*::[*/0x0080/*::]*/: { /* n:\"Guts\", */ f:parse_Guts },\n\t/*::[*/0x0081/*::]*/: { /* n:\"WsBool\", */ f:parse_WsBool },\n\t/*::[*/0x0082/*::]*/: { /* n:\"GridSet\", */ f:parseuint16 },\n\t/*::[*/0x0083/*::]*/: { /* n:\"HCenter\", */ f:parsebool },\n\t/*::[*/0x0084/*::]*/: { /* n:\"VCenter\", */ f:parsebool },\n\t/*::[*/0x0085/*::]*/: { /* n:\"BoundSheet8\", */ f:parse_BoundSheet8 },\n\t/*::[*/0x0086/*::]*/: { /* n:\"WriteProtect\", */ },\n\t/*::[*/0x008c/*::]*/: { /* n:\"Country\", */ f:parse_Country },\n\t/*::[*/0x008d/*::]*/: { /* n:\"HideObj\", */ f:parseuint16 },\n\t/*::[*/0x0090/*::]*/: { /* n:\"Sort\", */ },\n\t/*::[*/0x0092/*::]*/: { /* n:\"Palette\", */ f:parse_Palette },\n\t/*::[*/0x0097/*::]*/: { /* n:\"Sync\", */ },\n\t/*::[*/0x0098/*::]*/: { /* n:\"LPr\", */ },\n\t/*::[*/0x0099/*::]*/: { /* n:\"DxGCol\", */ },\n\t/*::[*/0x009a/*::]*/: { /* n:\"FnGroupName\", */ },\n\t/*::[*/0x009b/*::]*/: { /* n:\"FilterMode\", */ },\n\t/*::[*/0x009c/*::]*/: { /* n:\"BuiltInFnGroupCount\", */ f:parseuint16 },\n\t/*::[*/0x009d/*::]*/: { /* n:\"AutoFilterInfo\", */ },\n\t/*::[*/0x009e/*::]*/: { /* n:\"AutoFilter\", */ },\n\t/*::[*/0x00a0/*::]*/: { /* n:\"Scl\", */ f:parse_Scl },\n\t/*::[*/0x00a1/*::]*/: { /* n:\"Setup\", */ f:parse_Setup },\n\t/*::[*/0x00ae/*::]*/: { /* n:\"ScenMan\", */ },\n\t/*::[*/0x00af/*::]*/: { /* n:\"SCENARIO\", */ },\n\t/*::[*/0x00b0/*::]*/: { /* n:\"SxView\", */ },\n\t/*::[*/0x00b1/*::]*/: { /* n:\"Sxvd\", */ },\n\t/*::[*/0x00b2/*::]*/: { /* n:\"SXVI\", */ },\n\t/*::[*/0x00b4/*::]*/: { /* n:\"SxIvd\", */ },\n\t/*::[*/0x00b5/*::]*/: { /* n:\"SXLI\", */ },\n\t/*::[*/0x00b6/*::]*/: { /* n:\"SXPI\", */ },\n\t/*::[*/0x00b8/*::]*/: { /* n:\"DocRoute\", */ },\n\t/*::[*/0x00b9/*::]*/: { /* n:\"RecipName\", */ },\n\t/*::[*/0x00bd/*::]*/: { /* n:\"MulRk\", */ f:parse_MulRk },\n\t/*::[*/0x00be/*::]*/: { /* n:\"MulBlank\", */ f:parse_MulBlank },\n\t/*::[*/0x00c1/*::]*/: { /* n:\"Mms\", */ f:parsenoop2 },\n\t/*::[*/0x00c5/*::]*/: { /* n:\"SXDI\", */ },\n\t/*::[*/0x00c6/*::]*/: { /* n:\"SXDB\", */ },\n\t/*::[*/0x00c7/*::]*/: { /* n:\"SXFDB\", */ },\n\t/*::[*/0x00c8/*::]*/: { /* n:\"SXDBB\", */ },\n\t/*::[*/0x00c9/*::]*/: { /* n:\"SXNum\", */ },\n\t/*::[*/0x00ca/*::]*/: { /* n:\"SxBool\", */ f:parsebool },\n\t/*::[*/0x00cb/*::]*/: { /* n:\"SxErr\", */ },\n\t/*::[*/0x00cc/*::]*/: { /* n:\"SXInt\", */ },\n\t/*::[*/0x00cd/*::]*/: { /* n:\"SXString\", */ },\n\t/*::[*/0x00ce/*::]*/: { /* n:\"SXDtr\", */ },\n\t/*::[*/0x00cf/*::]*/: { /* n:\"SxNil\", */ },\n\t/*::[*/0x00d0/*::]*/: { /* n:\"SXTbl\", */ },\n\t/*::[*/0x00d1/*::]*/: { /* n:\"SXTBRGIITM\", */ },\n\t/*::[*/0x00d2/*::]*/: { /* n:\"SxTbpg\", */ },\n\t/*::[*/0x00d3/*::]*/: { /* n:\"ObProj\", */ },\n\t/*::[*/0x00d5/*::]*/: { /* n:\"SXStreamID\", */ },\n\t/*::[*/0x00d7/*::]*/: { /* n:\"DBCell\", */ },\n\t/*::[*/0x00d8/*::]*/: { /* n:\"SXRng\", */ },\n\t/*::[*/0x00d9/*::]*/: { /* n:\"SxIsxoper\", */ },\n\t/*::[*/0x00da/*::]*/: { /* n:\"BookBool\", */ f:parseuint16 },\n\t/*::[*/0x00dc/*::]*/: { /* n:\"DbOrParamQry\", */ },\n\t/*::[*/0x00dd/*::]*/: { /* n:\"ScenarioProtect\", */ f:parsebool },\n\t/*::[*/0x00de/*::]*/: { /* n:\"OleObjectSize\", */ },\n\t/*::[*/0x00e0/*::]*/: { /* n:\"XF\", */ f:parse_XF },\n\t/*::[*/0x00e1/*::]*/: { /* n:\"InterfaceHdr\", */ f:parse_InterfaceHdr },\n\t/*::[*/0x00e2/*::]*/: { /* n:\"InterfaceEnd\", */ f:parsenoop2 },\n\t/*::[*/0x00e3/*::]*/: { /* n:\"SXVS\", */ },\n\t/*::[*/0x00e5/*::]*/: { /* n:\"MergeCells\", */ f:parse_MergeCells },\n\t/*::[*/0x00e9/*::]*/: { /* n:\"BkHim\", */ },\n\t/*::[*/0x00eb/*::]*/: { /* n:\"MsoDrawingGroup\", */ },\n\t/*::[*/0x00ec/*::]*/: { /* n:\"MsoDrawing\", */ },\n\t/*::[*/0x00ed/*::]*/: { /* n:\"MsoDrawingSelection\", */ },\n\t/*::[*/0x00ef/*::]*/: { /* n:\"PhoneticInfo\", */ },\n\t/*::[*/0x00f0/*::]*/: { /* n:\"SxRule\", */ },\n\t/*::[*/0x00f1/*::]*/: { /* n:\"SXEx\", */ },\n\t/*::[*/0x00f2/*::]*/: { /* n:\"SxFilt\", */ },\n\t/*::[*/0x00f4/*::]*/: { /* n:\"SxDXF\", */ },\n\t/*::[*/0x00f5/*::]*/: { /* n:\"SxItm\", */ },\n\t/*::[*/0x00f6/*::]*/: { /* n:\"SxName\", */ },\n\t/*::[*/0x00f7/*::]*/: { /* n:\"SxSelect\", */ },\n\t/*::[*/0x00f8/*::]*/: { /* n:\"SXPair\", */ },\n\t/*::[*/0x00f9/*::]*/: { /* n:\"SxFmla\", */ },\n\t/*::[*/0x00fb/*::]*/: { /* n:\"SxFormat\", */ },\n\t/*::[*/0x00fc/*::]*/: { /* n:\"SST\", */ f:parse_SST },\n\t/*::[*/0x00fd/*::]*/: { /* n:\"LabelSst\", */ f:parse_LabelSst },\n\t/*::[*/0x00ff/*::]*/: { /* n:\"ExtSST\", */ f:parse_ExtSST },\n\t/*::[*/0x0100/*::]*/: { /* n:\"SXVDEx\", */ },\n\t/*::[*/0x0103/*::]*/: { /* n:\"SXFormula\", */ },\n\t/*::[*/0x0122/*::]*/: { /* n:\"SXDBEx\", */ },\n\t/*::[*/0x0137/*::]*/: { /* n:\"RRDInsDel\", */ },\n\t/*::[*/0x0138/*::]*/: { /* n:\"RRDHead\", */ },\n\t/*::[*/0x013b/*::]*/: { /* n:\"RRDChgCell\", */ },\n\t/*::[*/0x013d/*::]*/: { /* n:\"RRTabId\", */ f:parseuint16a },\n\t/*::[*/0x013e/*::]*/: { /* n:\"RRDRenSheet\", */ },\n\t/*::[*/0x013f/*::]*/: { /* n:\"RRSort\", */ },\n\t/*::[*/0x0140/*::]*/: { /* n:\"RRDMove\", */ },\n\t/*::[*/0x014a/*::]*/: { /* n:\"RRFormat\", */ },\n\t/*::[*/0x014b/*::]*/: { /* n:\"RRAutoFmt\", */ },\n\t/*::[*/0x014d/*::]*/: { /* n:\"RRInsertSh\", */ },\n\t/*::[*/0x014e/*::]*/: { /* n:\"RRDMoveBegin\", */ },\n\t/*::[*/0x014f/*::]*/: { /* n:\"RRDMoveEnd\", */ },\n\t/*::[*/0x0150/*::]*/: { /* n:\"RRDInsDelBegin\", */ },\n\t/*::[*/0x0151/*::]*/: { /* n:\"RRDInsDelEnd\", */ },\n\t/*::[*/0x0152/*::]*/: { /* n:\"RRDConflict\", */ },\n\t/*::[*/0x0153/*::]*/: { /* n:\"RRDDefName\", */ },\n\t/*::[*/0x0154/*::]*/: { /* n:\"RRDRstEtxp\", */ },\n\t/*::[*/0x015f/*::]*/: { /* n:\"LRng\", */ },\n\t/*::[*/0x0160/*::]*/: { /* n:\"UsesELFs\", */ f:parsebool },\n\t/*::[*/0x0161/*::]*/: { /* n:\"DSF\", */ f:parsenoop2 },\n\t/*::[*/0x0191/*::]*/: { /* n:\"CUsr\", */ },\n\t/*::[*/0x0192/*::]*/: { /* n:\"CbUsr\", */ },\n\t/*::[*/0x0193/*::]*/: { /* n:\"UsrInfo\", */ },\n\t/*::[*/0x0194/*::]*/: { /* n:\"UsrExcl\", */ },\n\t/*::[*/0x0195/*::]*/: { /* n:\"FileLock\", */ },\n\t/*::[*/0x0196/*::]*/: { /* n:\"RRDInfo\", */ },\n\t/*::[*/0x0197/*::]*/: { /* n:\"BCUsrs\", */ },\n\t/*::[*/0x0198/*::]*/: { /* n:\"UsrChk\", */ },\n\t/*::[*/0x01a9/*::]*/: { /* n:\"UserBView\", */ },\n\t/*::[*/0x01aa/*::]*/: { /* n:\"UserSViewBegin\", */ },\n\t/*::[*/0x01ab/*::]*/: { /* n:\"UserSViewEnd\", */ },\n\t/*::[*/0x01ac/*::]*/: { /* n:\"RRDUserView\", */ },\n\t/*::[*/0x01ad/*::]*/: { /* n:\"Qsi\", */ },\n\t/*::[*/0x01ae/*::]*/: { /* n:\"SupBook\", */ f:parse_SupBook },\n\t/*::[*/0x01af/*::]*/: { /* n:\"Prot4Rev\", */ f:parsebool },\n\t/*::[*/0x01b0/*::]*/: { /* n:\"CondFmt\", */ },\n\t/*::[*/0x01b1/*::]*/: { /* n:\"CF\", */ },\n\t/*::[*/0x01b2/*::]*/: { /* n:\"DVal\", */ },\n\t/*::[*/0x01b5/*::]*/: { /* n:\"DConBin\", */ },\n\t/*::[*/0x01b6/*::]*/: { /* n:\"TxO\", */ f:parse_TxO },\n\t/*::[*/0x01b7/*::]*/: { /* n:\"RefreshAll\", */ f:parsebool }, //\n\t/*::[*/0x01b8/*::]*/: { /* n:\"HLink\", */ f:parse_HLink },\n\t/*::[*/0x01b9/*::]*/: { /* n:\"Lel\", */ },\n\t/*::[*/0x01ba/*::]*/: { /* n:\"CodeName\", */ f:parse_XLUnicodeString },\n\t/*::[*/0x01bb/*::]*/: { /* n:\"SXFDBType\", */ },\n\t/*::[*/0x01bc/*::]*/: { /* n:\"Prot4RevPass\", */ f:parseuint16 },\n\t/*::[*/0x01bd/*::]*/: { /* n:\"ObNoMacros\", */ },\n\t/*::[*/0x01be/*::]*/: { /* n:\"Dv\", */ },\n\t/*::[*/0x01c0/*::]*/: { /* n:\"Excel9File\", */ f:parsenoop2 },\n\t/*::[*/0x01c1/*::]*/: { /* n:\"RecalcId\", */ f:parse_RecalcId, r:2},\n\t/*::[*/0x01c2/*::]*/: { /* n:\"EntExU2\", */ f:parsenoop2 },\n\t/*::[*/0x0200/*::]*/: { /* n:\"Dimensions\", */ f:parse_Dimensions },\n\t/*::[*/0x0201/*::]*/: { /* n:\"Blank\", */ f:parse_Blank },\n\t/*::[*/0x0203/*::]*/: { /* n:\"Number\", */ f:parse_Number },\n\t/*::[*/0x0204/*::]*/: { /* n:\"Label\", */ f:parse_Label },\n\t/*::[*/0x0205/*::]*/: { /* n:\"BoolErr\", */ f:parse_BoolErr },\n\t/*::[*/0x0207/*::]*/: { /* n:\"String\", */ f:parse_String },\n\t/*::[*/0x0208/*::]*/: { /* n:\"Row\", */ f:parse_Row },\n\t/*::[*/0x020b/*::]*/: { /* n:\"Index\", */ },\n\t/*::[*/0x0221/*::]*/: { /* n:\"Array\", */ f:parse_Array },\n\t/*::[*/0x0225/*::]*/: { /* n:\"DefaultRowHeight\", */ f:parse_DefaultRowHeight },\n\t/*::[*/0x0236/*::]*/: { /* n:\"Table\", */ },\n\t/*::[*/0x023e/*::]*/: { /* n:\"Window2\", */ f:parse_Window2 },\n\t/*::[*/0x027e/*::]*/: { /* n:\"RK\", */ f:parse_RK },\n\t/*::[*/0x0293/*::]*/: { /* n:\"Style\", */ },\n\t/*::[*/0x0418/*::]*/: { /* n:\"BigName\", */ },\n\t/*::[*/0x041e/*::]*/: { /* n:\"Format\", */ f:parse_Format },\n\t/*::[*/0x043c/*::]*/: { /* n:\"ContinueBigName\", */ },\n\t/*::[*/0x04bc/*::]*/: { /* n:\"ShrFmla\", */ f:parse_ShrFmla },\n\t/*::[*/0x0800/*::]*/: { /* n:\"HLinkTooltip\", */ f:parse_HLinkTooltip },\n\t/*::[*/0x0801/*::]*/: { /* n:\"WebPub\", */ },\n\t/*::[*/0x0802/*::]*/: { /* n:\"QsiSXTag\", */ },\n\t/*::[*/0x0803/*::]*/: { /* n:\"DBQueryExt\", */ },\n\t/*::[*/0x0804/*::]*/: { /* n:\"ExtString\", */ },\n\t/*::[*/0x0805/*::]*/: { /* n:\"TxtQry\", */ },\n\t/*::[*/0x0806/*::]*/: { /* n:\"Qsir\", */ },\n\t/*::[*/0x0807/*::]*/: { /* n:\"Qsif\", */ },\n\t/*::[*/0x0808/*::]*/: { /* n:\"RRDTQSIF\", */ },\n\t/*::[*/0x0809/*::]*/: { /* n:\"BOF\", */ f:parse_BOF },\n\t/*::[*/0x080a/*::]*/: { /* n:\"OleDbConn\", */ },\n\t/*::[*/0x080b/*::]*/: { /* n:\"WOpt\", */ },\n\t/*::[*/0x080c/*::]*/: { /* n:\"SXViewEx\", */ },\n\t/*::[*/0x080d/*::]*/: { /* n:\"SXTH\", */ },\n\t/*::[*/0x080e/*::]*/: { /* n:\"SXPIEx\", */ },\n\t/*::[*/0x080f/*::]*/: { /* n:\"SXVDTEx\", */ },\n\t/*::[*/0x0810/*::]*/: { /* n:\"SXViewEx9\", */ },\n\t/*::[*/0x0812/*::]*/: { /* n:\"ContinueFrt\", */ },\n\t/*::[*/0x0813/*::]*/: { /* n:\"RealTimeData\", */ },\n\t/*::[*/0x0850/*::]*/: { /* n:\"ChartFrtInfo\", */ },\n\t/*::[*/0x0851/*::]*/: { /* n:\"FrtWrapper\", */ },\n\t/*::[*/0x0852/*::]*/: { /* n:\"StartBlock\", */ },\n\t/*::[*/0x0853/*::]*/: { /* n:\"EndBlock\", */ },\n\t/*::[*/0x0854/*::]*/: { /* n:\"StartObject\", */ },\n\t/*::[*/0x0855/*::]*/: { /* n:\"EndObject\", */ },\n\t/*::[*/0x0856/*::]*/: { /* n:\"CatLab\", */ },\n\t/*::[*/0x0857/*::]*/: { /* n:\"YMult\", */ },\n\t/*::[*/0x0858/*::]*/: { /* n:\"SXViewLink\", */ },\n\t/*::[*/0x0859/*::]*/: { /* n:\"PivotChartBits\", */ },\n\t/*::[*/0x085a/*::]*/: { /* n:\"FrtFontList\", */ },\n\t/*::[*/0x0862/*::]*/: { /* n:\"SheetExt\", */ },\n\t/*::[*/0x0863/*::]*/: { /* n:\"BookExt\", */ r:12},\n\t/*::[*/0x0864/*::]*/: { /* n:\"SXAddl\", */ },\n\t/*::[*/0x0865/*::]*/: { /* n:\"CrErr\", */ },\n\t/*::[*/0x0866/*::]*/: { /* n:\"HFPicture\", */ },\n\t/*::[*/0x0867/*::]*/: { /* n:\"FeatHdr\", */ f:parsenoop2 },\n\t/*::[*/0x0868/*::]*/: { /* n:\"Feat\", */ },\n\t/*::[*/0x086a/*::]*/: { /* n:\"DataLabExt\", */ },\n\t/*::[*/0x086b/*::]*/: { /* n:\"DataLabExtContents\", */ },\n\t/*::[*/0x086c/*::]*/: { /* n:\"CellWatch\", */ },\n\t/*::[*/0x0871/*::]*/: { /* n:\"FeatHdr11\", */ },\n\t/*::[*/0x0872/*::]*/: { /* n:\"Feature11\", */ },\n\t/*::[*/0x0874/*::]*/: { /* n:\"DropDownObjIds\", */ },\n\t/*::[*/0x0875/*::]*/: { /* n:\"ContinueFrt11\", */ },\n\t/*::[*/0x0876/*::]*/: { /* n:\"DConn\", */ },\n\t/*::[*/0x0877/*::]*/: { /* n:\"List12\", */ },\n\t/*::[*/0x0878/*::]*/: { /* n:\"Feature12\", */ },\n\t/*::[*/0x0879/*::]*/: { /* n:\"CondFmt12\", */ },\n\t/*::[*/0x087a/*::]*/: { /* n:\"CF12\", */ },\n\t/*::[*/0x087b/*::]*/: { /* n:\"CFEx\", */ },\n\t/*::[*/0x087c/*::]*/: { /* n:\"XFCRC\", */ f:parse_XFCRC, r:12 },\n\t/*::[*/0x087d/*::]*/: { /* n:\"XFExt\", */ f:parse_XFExt, r:12 },\n\t/*::[*/0x087e/*::]*/: { /* n:\"AutoFilter12\", */ },\n\t/*::[*/0x087f/*::]*/: { /* n:\"ContinueFrt12\", */ },\n\t/*::[*/0x0884/*::]*/: { /* n:\"MDTInfo\", */ },\n\t/*::[*/0x0885/*::]*/: { /* n:\"MDXStr\", */ },\n\t/*::[*/0x0886/*::]*/: { /* n:\"MDXTuple\", */ },\n\t/*::[*/0x0887/*::]*/: { /* n:\"MDXSet\", */ },\n\t/*::[*/0x0888/*::]*/: { /* n:\"MDXProp\", */ },\n\t/*::[*/0x0889/*::]*/: { /* n:\"MDXKPI\", */ },\n\t/*::[*/0x088a/*::]*/: { /* n:\"MDB\", */ },\n\t/*::[*/0x088b/*::]*/: { /* n:\"PLV\", */ },\n\t/*::[*/0x088c/*::]*/: { /* n:\"Compat12\", */ f:parsebool, r:12 },\n\t/*::[*/0x088d/*::]*/: { /* n:\"DXF\", */ },\n\t/*::[*/0x088e/*::]*/: { /* n:\"TableStyles\", */ r:12 },\n\t/*::[*/0x088f/*::]*/: { /* n:\"TableStyle\", */ },\n\t/*::[*/0x0890/*::]*/: { /* n:\"TableStyleElement\", */ },\n\t/*::[*/0x0892/*::]*/: { /* n:\"StyleExt\", */ },\n\t/*::[*/0x0893/*::]*/: { /* n:\"NamePublish\", */ },\n\t/*::[*/0x0894/*::]*/: { /* n:\"NameCmt\", */ f:parse_NameCmt, r:12 },\n\t/*::[*/0x0895/*::]*/: { /* n:\"SortData\", */ },\n\t/*::[*/0x0896/*::]*/: { /* n:\"Theme\", */ f:parse_Theme, r:12 },\n\t/*::[*/0x0897/*::]*/: { /* n:\"GUIDTypeLib\", */ },\n\t/*::[*/0x0898/*::]*/: { /* n:\"FnGrp12\", */ },\n\t/*::[*/0x0899/*::]*/: { /* n:\"NameFnGrp12\", */ },\n\t/*::[*/0x089a/*::]*/: { /* n:\"MTRSettings\", */ f:parse_MTRSettings, r:12 },\n\t/*::[*/0x089b/*::]*/: { /* n:\"CompressPictures\", */ f:parsenoop2 },\n\t/*::[*/0x089c/*::]*/: { /* n:\"HeaderFooter\", */ },\n\t/*::[*/0x089d/*::]*/: { /* n:\"CrtLayout12\", */ },\n\t/*::[*/0x089e/*::]*/: { /* n:\"CrtMlFrt\", */ },\n\t/*::[*/0x089f/*::]*/: { /* n:\"CrtMlFrtContinue\", */ },\n\t/*::[*/0x08a3/*::]*/: { /* n:\"ForceFullCalculation\", */ f:parse_ForceFullCalculation },\n\t/*::[*/0x08a4/*::]*/: { /* n:\"ShapePropsStream\", */ },\n\t/*::[*/0x08a5/*::]*/: { /* n:\"TextPropsStream\", */ },\n\t/*::[*/0x08a6/*::]*/: { /* n:\"RichTextStream\", */ },\n\t/*::[*/0x08a7/*::]*/: { /* n:\"CrtLayout12A\", */ },\n\t/*::[*/0x1001/*::]*/: { /* n:\"Units\", */ },\n\t/*::[*/0x1002/*::]*/: { /* n:\"Chart\", */ },\n\t/*::[*/0x1003/*::]*/: { /* n:\"Series\", */ },\n\t/*::[*/0x1006/*::]*/: { /* n:\"DataFormat\", */ },\n\t/*::[*/0x1007/*::]*/: { /* n:\"LineFormat\", */ },\n\t/*::[*/0x1009/*::]*/: { /* n:\"MarkerFormat\", */ },\n\t/*::[*/0x100a/*::]*/: { /* n:\"AreaFormat\", */ },\n\t/*::[*/0x100b/*::]*/: { /* n:\"PieFormat\", */ },\n\t/*::[*/0x100c/*::]*/: { /* n:\"AttachedLabel\", */ },\n\t/*::[*/0x100d/*::]*/: { /* n:\"SeriesText\", */ },\n\t/*::[*/0x1014/*::]*/: { /* n:\"ChartFormat\", */ },\n\t/*::[*/0x1015/*::]*/: { /* n:\"Legend\", */ },\n\t/*::[*/0x1016/*::]*/: { /* n:\"SeriesList\", */ },\n\t/*::[*/0x1017/*::]*/: { /* n:\"Bar\", */ },\n\t/*::[*/0x1018/*::]*/: { /* n:\"Line\", */ },\n\t/*::[*/0x1019/*::]*/: { /* n:\"Pie\", */ },\n\t/*::[*/0x101a/*::]*/: { /* n:\"Area\", */ },\n\t/*::[*/0x101b/*::]*/: { /* n:\"Scatter\", */ },\n\t/*::[*/0x101c/*::]*/: { /* n:\"CrtLine\", */ },\n\t/*::[*/0x101d/*::]*/: { /* n:\"Axis\", */ },\n\t/*::[*/0x101e/*::]*/: { /* n:\"Tick\", */ },\n\t/*::[*/0x101f/*::]*/: { /* n:\"ValueRange\", */ },\n\t/*::[*/0x1020/*::]*/: { /* n:\"CatSerRange\", */ },\n\t/*::[*/0x1021/*::]*/: { /* n:\"AxisLine\", */ },\n\t/*::[*/0x1022/*::]*/: { /* n:\"CrtLink\", */ },\n\t/*::[*/0x1024/*::]*/: { /* n:\"DefaultText\", */ },\n\t/*::[*/0x1025/*::]*/: { /* n:\"Text\", */ },\n\t/*::[*/0x1026/*::]*/: { /* n:\"FontX\", */ f:parseuint16 },\n\t/*::[*/0x1027/*::]*/: { /* n:\"ObjectLink\", */ },\n\t/*::[*/0x1032/*::]*/: { /* n:\"Frame\", */ },\n\t/*::[*/0x1033/*::]*/: { /* n:\"Begin\", */ },\n\t/*::[*/0x1034/*::]*/: { /* n:\"End\", */ },\n\t/*::[*/0x1035/*::]*/: { /* n:\"PlotArea\", */ },\n\t/*::[*/0x103a/*::]*/: { /* n:\"Chart3d\", */ },\n\t/*::[*/0x103c/*::]*/: { /* n:\"PicF\", */ },\n\t/*::[*/0x103d/*::]*/: { /* n:\"DropBar\", */ },\n\t/*::[*/0x103e/*::]*/: { /* n:\"Radar\", */ },\n\t/*::[*/0x103f/*::]*/: { /* n:\"Surf\", */ },\n\t/*::[*/0x1040/*::]*/: { /* n:\"RadarArea\", */ },\n\t/*::[*/0x1041/*::]*/: { /* n:\"AxisParent\", */ },\n\t/*::[*/0x1043/*::]*/: { /* n:\"LegendException\", */ },\n\t/*::[*/0x1044/*::]*/: { /* n:\"ShtProps\", */ f:parse_ShtProps },\n\t/*::[*/0x1045/*::]*/: { /* n:\"SerToCrt\", */ },\n\t/*::[*/0x1046/*::]*/: { /* n:\"AxesUsed\", */ },\n\t/*::[*/0x1048/*::]*/: { /* n:\"SBaseRef\", */ },\n\t/*::[*/0x104a/*::]*/: { /* n:\"SerParent\", */ },\n\t/*::[*/0x104b/*::]*/: { /* n:\"SerAuxTrend\", */ },\n\t/*::[*/0x104e/*::]*/: { /* n:\"IFmtRecord\", */ },\n\t/*::[*/0x104f/*::]*/: { /* n:\"Pos\", */ },\n\t/*::[*/0x1050/*::]*/: { /* n:\"AlRuns\", */ },\n\t/*::[*/0x1051/*::]*/: { /* n:\"BRAI\", */ },\n\t/*::[*/0x105b/*::]*/: { /* n:\"SerAuxErrBar\", */ },\n\t/*::[*/0x105c/*::]*/: { /* n:\"ClrtClient\", */ f:parse_ClrtClient },\n\t/*::[*/0x105d/*::]*/: { /* n:\"SerFmt\", */ },\n\t/*::[*/0x105f/*::]*/: { /* n:\"Chart3DBarShape\", */ },\n\t/*::[*/0x1060/*::]*/: { /* n:\"Fbi\", */ },\n\t/*::[*/0x1061/*::]*/: { /* n:\"BopPop\", */ },\n\t/*::[*/0x1062/*::]*/: { /* n:\"AxcExt\", */ },\n\t/*::[*/0x1063/*::]*/: { /* n:\"Dat\", */ },\n\t/*::[*/0x1064/*::]*/: { /* n:\"PlotGrowth\", */ },\n\t/*::[*/0x1065/*::]*/: { /* n:\"SIIndex\", */ },\n\t/*::[*/0x1066/*::]*/: { /* n:\"GelFrame\", */ },\n\t/*::[*/0x1067/*::]*/: { /* n:\"BopPopCustom\", */ },\n\t/*::[*/0x1068/*::]*/: { /* n:\"Fbi2\", */ },\n\n\t/*::[*/0x0000/*::]*/: { /* n:\"Dimensions\", */ f:parse_Dimensions },\n\t/*::[*/0x0001/*::]*/: { /* n:\"BIFF2BLANK\", */ },\n\t/*::[*/0x0002/*::]*/: { /* n:\"BIFF2INT\", */ f:parse_BIFF2INT },\n\t/*::[*/0x0003/*::]*/: { /* n:\"BIFF2NUM\", */ f:parse_BIFF2NUM },\n\t/*::[*/0x0004/*::]*/: { /* n:\"BIFF2STR\", */ f:parse_BIFF2STR },\n\t/*::[*/0x0005/*::]*/: { /* n:\"BoolErr\", */ f:parse_BoolErr },\n\t/*::[*/0x0007/*::]*/: { /* n:\"String\", */ f:parse_BIFF2STRING },\n\t/*::[*/0x0008/*::]*/: { /* n:\"BIFF2ROW\", */ },\n\t/*::[*/0x0009/*::]*/: { /* n:\"BOF\", */ f:parse_BOF },\n\t/*::[*/0x000b/*::]*/: { /* n:\"Index\", */ },\n\t/*::[*/0x0016/*::]*/: { /* n:\"ExternCount\", */ f:parseuint16 },\n\t/*::[*/0x001e/*::]*/: { /* n:\"BIFF2FORMAT\", */ f:parse_BIFF2Format },\n\t/*::[*/0x001f/*::]*/: { /* n:\"BIFF2FMTCNT\", */ }, /* 16-bit cnt of BIFF2FORMAT records */\n\t/*::[*/0x0020/*::]*/: { /* n:\"BIFF2COLINFO\", */ },\n\t/*::[*/0x0021/*::]*/: { /* n:\"Array\", */ f:parse_Array },\n\t/*::[*/0x0024/*::]*/: { /* n:\"COLWIDTH\", */ },\n\t/*::[*/0x0025/*::]*/: { /* n:\"DefaultRowHeight\", */ f:parse_DefaultRowHeight },\n\t// 0x2c ??\n\t// 0x2d ??\n\t// 0x2e ??\n\t// 0x30 FONTCOUNT: number of fonts\n\t/*::[*/0x0032/*::]*/: { /* n:\"BIFF2FONTXTRA\", */ f:parse_BIFF2FONTXTRA },\n\t// 0x35: INFOOPTS\n\t// 0x36: TABLE (BIFF2 only)\n\t// 0x37: TABLE2 (BIFF2 only)\n\t// 0x38: WNDESK\n\t// 0x39 ??\n\t// 0x3a: BEGINPREF\n\t// 0x3b: ENDPREF\n\t/*::[*/0x003e/*::]*/: { /* n:\"BIFF2WINDOW2\", */ },\n\t// 0x3f ??\n\t// 0x46: SHOWSCROLL\n\t// 0x47: SHOWFORMULA\n\t// 0x48: STATUSBAR\n\t// 0x49: SHORTMENUS\n\t// 0x4A:\n\t// 0x4B:\n\t// 0x4C:\n\t// 0x4E:\n\t// 0x4F:\n\t// 0x58: TOOLBAR (BIFF3)\n\n\t/* - - - */\n\t/*::[*/0x0034/*::]*/: { /* n:\"DDEObjName\", */ },\n\t/*::[*/0x0043/*::]*/: { /* n:\"BIFF2XF\", */ },\n\t/*::[*/0x0044/*::]*/: { /* n:\"BIFF2XFINDEX\", */ f:parseuint16 },\n\t/*::[*/0x0045/*::]*/: { /* n:\"BIFF2FONTCLR\", */ },\n\t/*::[*/0x0056/*::]*/: { /* n:\"BIFF4FMTCNT\", */ }, /* 16-bit cnt, similar to BIFF2 */\n\t/*::[*/0x007e/*::]*/: { /* n:\"RK\", */ }, /* Not necessarily same as 0x027e */\n\t/*::[*/0x007f/*::]*/: { /* n:\"ImData\", */ f:parse_ImData },\n\t/*::[*/0x0087/*::]*/: { /* n:\"Addin\", */ },\n\t/*::[*/0x0088/*::]*/: { /* n:\"Edg\", */ },\n\t/*::[*/0x0089/*::]*/: { /* n:\"Pub\", */ },\n\t// 0x8A\n\t// 0x8B LH: alternate menu key flag (BIFF3/4)\n\t// 0x8E\n\t// 0x8F\n\t/*::[*/0x0091/*::]*/: { /* n:\"Sub\", */ },\n\t// 0x93 STYLE\n\t/*::[*/0x0094/*::]*/: { /* n:\"LHRecord\", */ },\n\t/*::[*/0x0095/*::]*/: { /* n:\"LHNGraph\", */ },\n\t/*::[*/0x0096/*::]*/: { /* n:\"Sound\", */ },\n\t// 0xA2 FNPROTO: function prototypes (BIFF4)\n\t// 0xA3\n\t// 0xA8\n\t/*::[*/0x00a9/*::]*/: { /* n:\"CoordList\", */ },\n\t/*::[*/0x00ab/*::]*/: { /* n:\"GCW\", */ },\n\t/*::[*/0x00bc/*::]*/: { /* n:\"ShrFmla\", */ }, /* Not necessarily same as 0x04bc */\n\t/*::[*/0x00bf/*::]*/: { /* n:\"ToolbarHdr\", */ },\n\t/*::[*/0x00c0/*::]*/: { /* n:\"ToolbarEnd\", */ },\n\t/*::[*/0x00c2/*::]*/: { /* n:\"AddMenu\", */ },\n\t/*::[*/0x00c3/*::]*/: { /* n:\"DelMenu\", */ },\n\t/*::[*/0x00d6/*::]*/: { /* n:\"RString\", */ f:parse_RString },\n\t/*::[*/0x00df/*::]*/: { /* n:\"UDDesc\", */ },\n\t/*::[*/0x00ea/*::]*/: { /* n:\"TabIdConf\", */ },\n\t/*::[*/0x0162/*::]*/: { /* n:\"XL5Modify\", */ },\n\t/*::[*/0x01a5/*::]*/: { /* n:\"FileSharing2\", */ },\n\t/*::[*/0x0206/*::]*/: { /* n:\"Formula\", */ f:parse_Formula },\n\t/*::[*/0x0209/*::]*/: { /* n:\"BOF\", */ f:parse_BOF },\n\t/*::[*/0x0218/*::]*/: { /* n:\"Lbl\", */ f:parse_Lbl },\n\t/*::[*/0x0223/*::]*/: { /* n:\"ExternName\", */ f:parse_ExternName },\n\t/*::[*/0x0231/*::]*/: { /* n:\"Font\", */ },\n\t/*::[*/0x0243/*::]*/: { /* n:\"BIFF3XF\", */ },\n\t/*::[*/0x0406/*::]*/: { /* n:\"Formula\", */ f:parse_Formula },\n\t/*::[*/0x0409/*::]*/: { /* n:\"BOF\", */ f:parse_BOF },\n\t/*::[*/0x0443/*::]*/: { /* n:\"BIFF4XF\", */ },\n\t/*::[*/0x086d/*::]*/: { /* n:\"FeatInfo\", */ },\n\t/*::[*/0x0873/*::]*/: { /* n:\"FeatInfo11\", */ },\n\t/*::[*/0x0881/*::]*/: { /* n:\"SXAddl12\", */ },\n\t/*::[*/0x08c0/*::]*/: { /* n:\"AutoWebPub\", */ },\n\t/*::[*/0x08c1/*::]*/: { /* n:\"ListObj\", */ },\n\t/*::[*/0x08c2/*::]*/: { /* n:\"ListField\", */ },\n\t/*::[*/0x08c3/*::]*/: { /* n:\"ListDV\", */ },\n\t/*::[*/0x08c4/*::]*/: { /* n:\"ListCondFmt\", */ },\n\t/*::[*/0x08c5/*::]*/: { /* n:\"ListCF\", */ },\n\t/*::[*/0x08c6/*::]*/: { /* n:\"FMQry\", */ },\n\t/*::[*/0x08c7/*::]*/: { /* n:\"FMSQry\", */ },\n\t/*::[*/0x08c8/*::]*/: { /* n:\"PLV\", */ },\n\t/*::[*/0x08c9/*::]*/: { /* n:\"LnExt\", */ },\n\t/*::[*/0x08ca/*::]*/: { /* n:\"MkrExt\", */ },\n\t/*::[*/0x08cb/*::]*/: { /* n:\"CrtCoopt\", */ },\n\t/*::[*/0x08d6/*::]*/: { /* n:\"FRTArchId$\", */ r:12 },\n\n\t/*::[*/0x7262/*::]*/: {}\n};\n\nfunction write_biff_rec(ba/*:BufArray*/, type/*:number*/, payload, length/*:?number*/)/*:void*/ {\n\tvar t/*:number*/ = type;\n\tif(isNaN(t)) return;\n\tvar len = length || (payload||[]).length || 0;\n\tvar o = ba.next(4);\n\to.write_shift(2, t);\n\to.write_shift(2, len);\n\tif(/*:: len != null &&*/len > 0 && is_buf(payload)) ba.push(payload);\n}\n\nfunction write_biff_continue(ba/*:BufArray*/, type/*:number*/, payload, length/*:?number*/)/*:void*/ {\n\tvar len = length || (payload||[]).length || 0;\n\tif(len <= 8224) return write_biff_rec(ba, type, payload, len);\n\tvar t = type;\n\tif(isNaN(t)) return;\n\tvar parts = payload.parts || [], sidx = 0;\n\tvar i = 0, w = 0;\n\twhile(w + (parts[sidx] || 8224) <= 8224) { w+= (parts[sidx] || 8224); sidx++; }\n\tvar o = ba.next(4);\n\to.write_shift(2, t);\n\to.write_shift(2, w);\n\tba.push(payload.slice(i, i + w));\n\ti += w;\n\twhile(i < len) {\n\t\to = ba.next(4);\n\t\to.write_shift(2, 0x3c); // TODO: figure out correct continue type\n\t\tw = 0;\n\t\twhile(w + (parts[sidx] || 8224) <= 8224) { w+= (parts[sidx] || 8224); sidx++; }\n\t\to.write_shift(2, w);\n\t\tba.push(payload.slice(i, i+w)); i+= w;\n\t}\n}\n\nfunction write_BIFF2Cell(out, r/*:number*/, c/*:number*/) {\n\tif(!out) out = new_buf(7);\n\tout.write_shift(2, r);\n\tout.write_shift(2, c);\n\tout.write_shift(2, 0);\n\tout.write_shift(1, 0);\n\treturn out;\n}\n\nfunction write_BIFF2BERR(r/*:number*/, c/*:number*/, val, t/*:?string*/) {\n\tvar out = new_buf(9);\n\twrite_BIFF2Cell(out, r, c);\n\twrite_Bes(val, t || 'b', out);\n\treturn out;\n}\n\n/* TODO: codepage, large strings */\nfunction write_BIFF2LABEL(r/*:number*/, c/*:number*/, val) {\n\tvar out = new_buf(8 + 2*val.length);\n\twrite_BIFF2Cell(out, r, c);\n\tout.write_shift(1, val.length);\n\tout.write_shift(val.length, val, 'sbcs');\n\treturn out.l < out.length ? out.slice(0, out.l) : out;\n}\n\nfunction write_ws_biff2_cell(ba/*:BufArray*/, cell/*:Cell*/, R/*:number*/, C/*:number*//*::, opts*/) {\n\tif(cell.v != null) switch(cell.t) {\n\t\tcase 'd': case 'n':\n\t\t\tvar v = cell.t == 'd' ? datenum(parseDate(cell.v)) : cell.v;\n\t\t\tif((v == (v|0)) && (v >= 0) && (v < 65536))\n\t\t\t\twrite_biff_rec(ba, 0x0002, write_BIFF2INT(R, C, v));\n\t\t\telse\n\t\t\t\twrite_biff_rec(ba, 0x0003, write_BIFF2NUM(R,C, v));\n\t\t\treturn;\n\t\tcase 'b': case 'e': write_biff_rec(ba, 0x0005, write_BIFF2BERR(R, C, cell.v, cell.t)); return;\n\t\t/* TODO: codepage, sst */\n\t\tcase 's': case 'str':\n\t\t\twrite_biff_rec(ba, 0x0004, write_BIFF2LABEL(R, C, (cell.v||\"\").slice(0,255)));\n\t\t\treturn;\n\t}\n\twrite_biff_rec(ba, 0x0001, write_BIFF2Cell(null, R, C));\n}\n\nfunction write_ws_biff2(ba/*:BufArray*/, ws/*:Worksheet*/, idx/*:number*/, opts/*::, wb:Workbook*/) {\n\tvar dense = Array.isArray(ws);\n\tvar range = safe_decode_range(ws['!ref'] || \"A1\"), ref/*:string*/, rr = \"\", cols/*:Array*/ = [];\n\tif(range.e.c > 0xFF || range.e.r > 0x3FFF) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + (ws['!ref'] || \"A1\") + \" exceeds format limit A1:IV16384\");\n\t\trange.e.c = Math.min(range.e.c, 0xFF);\n\t\trange.e.r = Math.min(range.e.c, 0x3FFF);\n\t\tref = encode_range(range);\n\t}\n\tfor(var R = range.s.r; R <= range.e.r; ++R) {\n\t\trr = encode_row(R);\n\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\tref = cols[C] + rr;\n\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\tif(!cell) continue;\n\t\t\t/* write cell */\n\t\t\twrite_ws_biff2_cell(ba, cell, R, C, opts);\n\t\t}\n\t}\n}\n\n/* Based on test files */\nfunction write_biff2_buf(wb/*:Workbook*/, opts/*:WriteOpts*/) {\n\tvar o = opts || {};\n\tif(DENSE != null && o.dense == null) o.dense = DENSE;\n\tvar ba = buf_array();\n\tvar idx = 0;\n\tfor(var i=0;i*/ = [];\n\tvar range = safe_decode_range(ws['!ref'] || \"A1\");\n\tvar MAX_ROWS = b8 ? 65536 : 16384;\n\tif(range.e.c > 0xFF || range.e.r >= MAX_ROWS) {\n\t\tif(opts.WTF) throw new Error(\"Range \" + (ws['!ref'] || \"A1\") + \" exceeds format limit A1:IV16384\");\n\t\trange.e.c = Math.min(range.e.c, 0xFF);\n\t\trange.e.r = Math.min(range.e.c, MAX_ROWS-1);\n\t}\n\n\twrite_biff_rec(ba, 0x0809, write_BOF(wb, 0x10, opts));\n\t/* [Uncalced] Index */\n\twrite_biff_rec(ba, 0x000d /* CalcMode */, writeuint16(1));\n\twrite_biff_rec(ba, 0x000c /* CalcCount */, writeuint16(100));\n\twrite_biff_rec(ba, 0x000f /* CalcRefMode */, writebool(true));\n\twrite_biff_rec(ba, 0x0011 /* CalcIter */, writebool(false));\n\twrite_biff_rec(ba, 0x0010 /* CalcDelta */, write_Xnum(0.001));\n\twrite_biff_rec(ba, 0x005f /* CalcSaveRecalc */, writebool(true));\n\twrite_biff_rec(ba, 0x002a /* PrintRowCol */, writebool(false));\n\twrite_biff_rec(ba, 0x002b /* PrintGrid */, writebool(false));\n\twrite_biff_rec(ba, 0x0082 /* GridSet */, writeuint16(1));\n\twrite_biff_rec(ba, 0x0080 /* Guts */, write_Guts([0,0]));\n\t/* DefaultRowHeight WsBool [Sync] [LPr] [HorizontalPageBreaks] [VerticalPageBreaks] */\n\t/* Header (string) */\n\t/* Footer (string) */\n\twrite_biff_rec(ba, 0x0083 /* HCenter */, writebool(false));\n\twrite_biff_rec(ba, 0x0084 /* VCenter */, writebool(false));\n\t/* ... */\n\tif(b8) write_ws_cols_biff8(ba, ws[\"!cols\"]);\n\t/* ... */\n\twrite_biff_rec(ba, 0x200, write_Dimensions(range, opts));\n\t/* ... */\n\n\tif(b8) ws['!links'] = [];\n\tfor(var R = range.s.r; R <= range.e.r; ++R) {\n\t\trr = encode_row(R);\n\t\tfor(var C = range.s.c; C <= range.e.c; ++C) {\n\t\t\tif(R === range.s.r) cols[C] = encode_col(C);\n\t\t\tref = cols[C] + rr;\n\t\t\tvar cell = dense ? (ws[R]||[])[C] : ws[ref];\n\t\t\tif(!cell) continue;\n\t\t\t/* write cell */\n\t\t\twrite_ws_biff8_cell(ba, cell, R, C, opts);\n\t\t\tif(b8 && cell.l) ws['!links'].push([ref, cell.l]);\n\t\t}\n\t}\n\tvar cname/*:string*/ = _sheet.CodeName || _sheet.name || s;\n\t/* ... */\n\tif(b8) write_biff_rec(ba, 0x023e /* Window2 */, write_Window2((_WB.Views||[])[0]));\n\t/* ... */\n\tif(b8 && (ws['!merges']||[]).length) write_biff_rec(ba, 0x00e5 /* MergeCells */, write_MergeCells(ws['!merges']));\n\t/* [LRng] *QUERYTABLE [PHONETICINFO] CONDFMTS */\n\tif(b8) write_ws_biff8_hlinks(ba, ws);\n\t/* [DVAL] */\n\twrite_biff_rec(ba, 0x01ba /* CodeName */, write_XLUnicodeString(cname, opts));\n\t/* *WebPub *CellWatch [SheetExt] */\n\tif(b8) write_FEAT(ba, ws);\n\t/* *FEAT11 *RECORD12 */\n\twrite_biff_rec(ba, 0x000a /* EOF */);\n\treturn ba.end();\n}\n\n/* [MS-XLS] 2.1.7.20.3 */\nfunction write_biff8_global(wb/*:Workbook*/, bufs, opts/*:WriteOpts*/) {\n\tvar A = buf_array();\n\tvar _WB/*:WBWBProps*/ = ((wb||{}).Workbook||{}/*:any*/);\n\tvar _sheets/*:Array*/ = (_WB.Sheets||[]);\n\tvar _wb/*:WBProps*/ = /*::((*/_WB.WBProps||{/*::CodeName:\"ThisWorkbook\"*/}/*:: ):any)*/;\n\tvar b8 = opts.biff == 8, b5 = opts.biff == 5;\n\twrite_biff_rec(A, 0x0809, write_BOF(wb, 0x05, opts));\n\tif(opts.bookType == \"xla\") write_biff_rec(A, 0x0087 /* Addin */);\n\twrite_biff_rec(A, 0x00e1 /* InterfaceHdr */, b8 ? writeuint16(0x04b0) : null);\n\twrite_biff_rec(A, 0x00c1 /* Mms */, writezeroes(2));\n\tif(b5) write_biff_rec(A, 0x00bf /* ToolbarHdr */);\n\tif(b5) write_biff_rec(A, 0x00c0 /* ToolbarEnd */);\n\twrite_biff_rec(A, 0x00e2 /* InterfaceEnd */);\n\twrite_biff_rec(A, 0x005c /* WriteAccess */, write_WriteAccess(\"SheetJS\", opts));\n\t/* [FileSharing] */\n\twrite_biff_rec(A, 0x0042 /* CodePage */, writeuint16(b8 ? 0x04b0 : 0x04E4));\n\t/* *2047 Lel */\n\tif(b8) write_biff_rec(A, 0x0161 /* DSF */, writeuint16(0));\n\tif(b8) write_biff_rec(A, 0x01c0 /* Excel9File */);\n\twrite_biff_rec(A, 0x013d /* RRTabId */, write_RRTabId(wb.SheetNames.length));\n\tif(b8 && wb.vbaraw) write_biff_rec(A, 0x00d3 /* ObProj */);\n\t/* [ObNoMacros] */\n\tif(b8 && wb.vbaraw) {\n\t\tvar cname/*:string*/ = _wb.CodeName || \"ThisWorkbook\";\n\t\twrite_biff_rec(A, 0x01ba /* CodeName */, write_XLUnicodeString(cname, opts));\n\t}\n\twrite_biff_rec(A, 0x009c /* BuiltInFnGroupCount */, writeuint16(0x11));\n\t/* *FnGroupName *FnGrp12 */\n\t/* *Lbl */\n\t/* [OleObjectSize] */\n\twrite_biff_rec(A, 0x0019 /* WinProtect */, writebool(false));\n\twrite_biff_rec(A, 0x0012 /* Protect */, writebool(false));\n\twrite_biff_rec(A, 0x0013 /* Password */, writeuint16(0));\n\tif(b8) write_biff_rec(A, 0x01af /* Prot4Rev */, writebool(false));\n\tif(b8) write_biff_rec(A, 0x01bc /* Prot4RevPass */, writeuint16(0));\n\twrite_biff_rec(A, 0x003d /* Window1 */, write_Window1(opts));\n\twrite_biff_rec(A, 0x0040 /* Backup */, writebool(false));\n\twrite_biff_rec(A, 0x008d /* HideObj */, writeuint16(0));\n\twrite_biff_rec(A, 0x0022 /* Date1904 */, writebool(safe1904(wb)==\"true\"));\n\twrite_biff_rec(A, 0x000e /* CalcPrecision */, writebool(true));\n\tif(b8) write_biff_rec(A, 0x01b7 /* RefreshAll */, writebool(false));\n\twrite_biff_rec(A, 0x00DA /* BookBool */, writeuint16(0));\n\t/* ... */\n\twrite_FONTS_biff8(A, wb, opts);\n\twrite_FMTS_biff8(A, wb.SSF, opts);\n\twrite_CELLXFS_biff8(A, opts);\n\t/* ... */\n\tif(b8) write_biff_rec(A, 0x0160 /* UsesELFs */, writebool(false));\n\tvar a = A.end();\n\n\tvar C = buf_array();\n\t/* METADATA [MTRSettings] [ForceFullCalculation] */\n\tif(b8) write_biff_rec(C, 0x008C, write_Country());\n\t/* *SUPBOOK *LBL *RTD [RecalcId] *HFPicture *MSODRAWINGGROUP */\n\n\t/* BIFF8: [SST *Continue] ExtSST */\n\tif(b8 && opts.Strings) write_biff_continue(C, 0x00FC, write_SST(opts.Strings, opts));\n\n\t/* *WebPub [WOpt] [CrErr] [BookExt] *FeatHdr *DConn [THEME] [CompressPictures] [Compat12] [GUIDTypeLib] */\n\twrite_biff_rec(C, 0x000A /* EOF */);\n\tvar c = C.end();\n\n\tvar B = buf_array();\n\tvar blen = 0, j = 0;\n\tfor(j = 0; j < wb.SheetNames.length; ++j) blen += (b8 ? 12 : 11) + (b8 ? 2 : 1) * wb.SheetNames[j].length;\n\tvar start = a.length + blen + c.length;\n\tfor(j = 0; j < wb.SheetNames.length; ++j) {\n\t\tvar _sheet/*:WBWSProp*/ = _sheets[j] || ({}/*:any*/);\n\t\twrite_biff_rec(B, 0x0085 /* BoundSheet8 */, write_BoundSheet8({pos:start, hs:_sheet.Hidden||0, dt:0, name:wb.SheetNames[j]}, opts));\n\t\tstart += bufs[j].length;\n\t}\n\t/* 1*BoundSheet8 */\n\tvar b = B.end();\n\tif(blen != b.length) throw new Error(\"BS8 \" + blen + \" != \" + b.length);\n\n\tvar out = [];\n\tif(a.length) out.push(a);\n\tif(b.length) out.push(b);\n\tif(c.length) out.push(c);\n\treturn bconcat(out);\n}\n\n/* [MS-XLS] 2.1.7.20 Workbook Stream */\nfunction write_biff8_buf(wb/*:Workbook*/, opts/*:WriteOpts*/) {\n\tvar o = opts || {};\n\tvar bufs = [];\n\n\tif(wb && !wb.SSF) {\n\t\twb.SSF = dup(table_fmt);\n\t}\n\tif(wb && wb.SSF) {\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\to.revssf = evert_num(wb.SSF); o.revssf[wb.SSF[65535]] = 0;\n\t\to.ssf = wb.SSF;\n\t}\n\n\to.Strings = /*::((*/[]/*:: :any):SST)*/; o.Strings.Count = 0; o.Strings.Unique = 0;\n\tfix_write_opts(o);\n\n\to.cellXfs = [];\n\tget_cell_style(o.cellXfs, {}, {revssf:{\"General\":0}});\n\n\tif(!wb.Props) wb.Props = {};\n\n\tfor(var i = 0; i < wb.SheetNames.length; ++i) bufs[bufs.length] = write_ws_biff8(i, o, wb);\n\tbufs.unshift(write_biff8_global(wb, bufs, o));\n\treturn bconcat(bufs);\n}\n\nfunction write_biff_buf(wb/*:Workbook*/, opts/*:WriteOpts*/) {\n\tfor(var i = 0; i <= wb.SheetNames.length; ++i) {\n\t\tvar ws = wb.Sheets[wb.SheetNames[i]];\n\t\tif(!ws || !ws[\"!ref\"]) continue;\n\t\tvar range = decode_range(ws[\"!ref\"]);\n\t\tif(range.e.c > 255) { // note: 255 is IV\n\t\tif(typeof console != \"undefined\" && console.error) console.error(\"Worksheet '\" + wb.SheetNames[i] + \"' extends beyond column IV (255). Data may be lost.\");\n\t\t}\n\t}\n\n\tvar o = opts || {};\n\tswitch(o.biff || 2) {\n\t\tcase 8: case 5: return write_biff8_buf(wb, opts);\n\t\tcase 4: case 3: case 2: return write_biff2_buf(wb, opts);\n\t}\n\tthrow new Error(\"invalid type \" + o.bookType + \" for BIFF\");\n}\n/* note: browser DOM element cannot see mso- style attrs, must parse */\nfunction html_to_sheet(str/*:string*/, _opts)/*:Workbook*/ {\n\tvar opts = _opts || {};\n\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\tvar ws/*:Worksheet*/ = opts.dense ? ([]/*:any*/) : ({}/*:any*/);\n\tstr = str.replace(//g, \"\");\n\tvar mtch/*:any*/ = str.match(/\");\n\tvar mtch2/*:any*/ = str.match(/<\\/table/i);\n\tvar i/*:number*/ = mtch.index, j/*:number*/ = mtch2 && mtch2.index || str.length;\n\tvar rows = split_regex(str.slice(i, j), /(:?]*>)/i, \"\");\n\tvar R = -1, C = 0, RS = 0, CS = 0;\n\tvar range/*:Range*/ = {s:{r:10000000, c:10000000},e:{r:0,c:0}};\n\tvar merges/*:Array*/ = [];\n\tfor(i = 0; i < rows.length; ++i) {\n\t\tvar row = rows[i].trim();\n\t\tvar hd = row.slice(0,3).toLowerCase();\n\t\tif(hd == \"/i);\n\t\tfor(j = 0; j < cells.length; ++j) {\n\t\t\tvar cell = cells[j].trim();\n\t\t\tif(!cell.match(/\")) > -1) m = m.slice(cc+1);\n\t\t\tfor(var midx = 0; midx < merges.length; ++midx) {\n\t\t\t\tvar _merge/*:Range*/ = merges[midx];\n\t\t\t\tif(_merge.s.c == C && _merge.s.r < R && R <= _merge.e.r) { C = _merge.e.c + 1; midx = -1; }\n\t\t\t}\n\t\t\tvar tag = parsexmltag(cell.slice(0, cell.indexOf(\">\")));\n\t\t\tCS = tag.colspan ? +tag.colspan : 1;\n\t\t\tif((RS = +tag.rowspan)>1 || CS>1) merges.push({s:{r:R,c:C},e:{r:R + (RS||1) - 1, c:C + CS - 1}});\n\t\t\tvar _t/*:string*/ = tag.t || tag[\"data-t\"] || \"\";\n\t\t\t/* TODO: generate stub cells */\n\t\t\tif(!m.length) { C += CS; continue; }\n\t\t\tm = htmldecode(m);\n\t\t\tif(range.s.r > R) range.s.r = R; if(range.e.r < R) range.e.r = R;\n\t\t\tif(range.s.c > C) range.s.c = C; if(range.e.c < C) range.e.c = C;\n\t\t\tif(!m.length) { C += CS; continue; }\n\t\t\tvar o/*:Cell*/ = {t:'s', v:m};\n\t\t\tif(opts.raw || !m.trim().length || _t == 's'){}\n\t\t\telse if(m === 'TRUE') o = {t:'b', v:true};\n\t\t\telse if(m === 'FALSE') o = {t:'b', v:false};\n\t\t\telse if(!isNaN(fuzzynum(m))) o = {t:'n', v:fuzzynum(m)};\n\t\t\telse if(!isNaN(fuzzydate(m).getDate())) {\n\t\t\t\to = ({t:'d', v:parseDate(m)}/*:any*/);\n\t\t\t\tif(!opts.cellDates) o = ({t:'n', v:datenum(o.v)}/*:any*/);\n\t\t\t\to.z = opts.dateNF || table_fmt[14];\n\t\t\t}\n\t\t\tif(opts.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = o; }\n\t\t\telse ws[encode_cell({r:R, c:C})] = o;\n\t\t\tC += CS;\n\t\t}\n\t}\n\tws['!ref'] = encode_range(range);\n\tif(merges.length) ws[\"!merges\"] = merges;\n\treturn ws;\n}\nfunction make_html_row(ws/*:Worksheet*/, r/*:Range*/, R/*:number*/, o/*:Sheet2HTMLOpts*/)/*:string*/ {\n\tvar M/*:Array*/ = (ws['!merges'] ||[]);\n\tvar oo/*:Array*/ = [];\n\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\tvar RS = 0, CS = 0;\n\t\tfor(var j = 0; j < M.length; ++j) {\n\t\t\tif(M[j].s.r > R || M[j].s.c > C) continue;\n\t\t\tif(M[j].e.r < R || M[j].e.c < C) continue;\n\t\t\tif(M[j].s.r < R || M[j].s.c < C) { RS = -1; break; }\n\t\t\tRS = M[j].e.r - M[j].s.r + 1; CS = M[j].e.c - M[j].s.c + 1; break;\n\t\t}\n\t\tif(RS < 0) continue;\n\t\tvar coord = encode_cell({r:R,c:C});\n\t\tvar cell = o.dense ? (ws[R]||[])[C] : ws[coord];\n\t\t/* TODO: html entities */\n\t\tvar w = (cell && cell.v != null) && (cell.h || escapehtml(cell.w || (format_cell(cell), cell.w) || \"\")) || \"\";\n\t\tvar sp = ({}/*:any*/);\n\t\tif(RS > 1) sp.rowspan = RS;\n\t\tif(CS > 1) sp.colspan = CS;\n\t\tif(o.editable) w = '' + w + '';\n\t\telse if(cell) {\n\t\t\tsp[\"data-t\"] = cell && cell.t || 'z';\n\t\t\tif(cell.v != null) sp[\"data-v\"] = cell.v;\n\t\t\tif(cell.z != null) sp[\"data-z\"] = cell.z;\n\t\t\tif(cell.l && (cell.l.Target || \"#\").charAt(0) != \"#\") w = '' + w + '';\n\t\t}\n\t\tsp.id = (o.id || \"sjs\") + \"-\" + coord;\n\t\too.push(writextag('td', w, sp));\n\t}\n\tvar preamble = \"\";\n\treturn preamble + oo.join(\"\") + \"\";\n}\n\nvar HTML_BEGIN = 'SheetJS Table Export';\nvar HTML_END = '';\n\nfunction html_to_workbook(str/*:string*/, opts)/*:Workbook*/ {\n\tvar mtch = str.match(/[\\s\\S]*?<\\/table>/gi);\n\tif(!mtch || mtch.length == 0) throw new Error(\"Invalid HTML: could not find
    \");\n\tif(mtch.length == 1) return sheet_to_workbook(html_to_sheet(mtch[0], opts), opts);\n\tvar wb = book_new();\n\tmtch.forEach(function(s, idx) { book_append_sheet(wb, html_to_sheet(s, opts), \"Sheet\" + (idx+1)); });\n\treturn wb;\n}\n\nfunction make_html_preamble(ws/*:Worksheet*/, R/*:Range*/, o/*:Sheet2HTMLOpts*/)/*:string*/ {\n\tvar out/*:Array*/ = [];\n\treturn out.join(\"\") + '';\n}\n\nfunction sheet_to_html(ws/*:Worksheet*/, opts/*:?Sheet2HTMLOpts*//*, wb:?Workbook*/)/*:string*/ {\n\tvar o = opts || {};\n\tvar header = o.header != null ? o.header : HTML_BEGIN;\n\tvar footer = o.footer != null ? o.footer : HTML_END;\n\tvar out/*:Array*/ = [header];\n\tvar r = decode_range(ws['!ref']);\n\to.dense = Array.isArray(ws);\n\tout.push(make_html_preamble(ws, r, o));\n\tfor(var R = r.s.r; R <= r.e.r; ++R) out.push(make_html_row(ws, r, R, o));\n\tout.push(\"
    \" + footer);\n\treturn out.join(\"\");\n}\n\nfunction sheet_add_dom(ws/*:Worksheet*/, table/*:HTMLElement*/, _opts/*:?any*/)/*:Worksheet*/ {\n\tvar opts = _opts || {};\n\tif(DENSE != null) opts.dense = DENSE;\n\tvar or_R = 0, or_C = 0;\n\tif(opts.origin != null) {\n\t\tif(typeof opts.origin == 'number') or_R = opts.origin;\n\t\telse {\n\t\t\tvar _origin/*:CellAddress*/ = typeof opts.origin == \"string\" ? decode_cell(opts.origin) : opts.origin;\n\t\t\tor_R = _origin.r; or_C = _origin.c;\n\t\t}\n\t}\n\n\tvar rows/*:HTMLCollection*/ = table.getElementsByTagName('tr');\n\tvar sheetRows = Math.min(opts.sheetRows||10000000, rows.length);\n\tvar range/*:Range*/ = {s:{r:0,c:0},e:{r:or_R,c:or_C}};\n\tif(ws[\"!ref\"]) {\n\t\tvar _range/*:Range*/ = decode_range(ws[\"!ref\"]);\n\t\trange.s.r = Math.min(range.s.r, _range.s.r);\n\t\trange.s.c = Math.min(range.s.c, _range.s.c);\n\t\trange.e.r = Math.max(range.e.r, _range.e.r);\n\t\trange.e.c = Math.max(range.e.c, _range.e.c);\n\t\tif(or_R == -1) range.e.r = or_R = _range.e.r + 1;\n\t}\n\tvar merges/*:Array*/ = [], midx = 0;\n\tvar rowinfo/*:Array*/ = ws[\"!rows\"] || (ws[\"!rows\"] = []);\n\tvar _R = 0, R = 0, _C = 0, C = 0, RS = 0, CS = 0;\n\tif(!ws[\"!cols\"]) ws['!cols'] = [];\n\tfor(; _R < rows.length && R < sheetRows; ++_R) {\n\t\tvar row/*:HTMLTableRowElement*/ = rows[_R];\n\t\tif (is_dom_element_hidden(row)) {\n\t\t\tif (opts.display) continue;\n\t\t\trowinfo[R] = {hidden: true};\n\t\t}\n\t\tvar elts/*:HTMLCollection*/ = (row.children/*:any*/);\n\t\tfor(_C = C = 0; _C < elts.length; ++_C) {\n\t\t\tvar elt/*:HTMLTableCellElement*/ = elts[_C];\n\t\t\tif (opts.display && is_dom_element_hidden(elt)) continue;\n\t\t\tvar v/*:?string*/ = elt.hasAttribute('data-v') ? elt.getAttribute('data-v') : elt.hasAttribute('v') ? elt.getAttribute('v') : htmldecode(elt.innerHTML);\n\t\t\tvar z/*:?string*/ = elt.getAttribute('data-z') || elt.getAttribute('z');\n\t\t\tfor(midx = 0; midx < merges.length; ++midx) {\n\t\t\t\tvar m/*:Range*/ = merges[midx];\n\t\t\t\tif(m.s.c == C + or_C && m.s.r < R + or_R && R + or_R <= m.e.r) { C = m.e.c+1 - or_C; midx = -1; }\n\t\t\t}\n\t\t\t/* TODO: figure out how to extract nonstandard mso- style */\n\t\t\tCS = +elt.getAttribute(\"colspan\") || 1;\n\t\t\tif( ((RS = (+elt.getAttribute(\"rowspan\") || 1)))>1 || CS>1) merges.push({s:{r:R + or_R,c:C + or_C},e:{r:R + or_R + (RS||1) - 1, c:C + or_C + (CS||1) - 1}});\n\t\t\tvar o/*:Cell*/ = {t:'s', v:v};\n\t\t\tvar _t/*:string*/ = elt.getAttribute(\"data-t\") || elt.getAttribute(\"t\") || \"\";\n\t\t\tif(v != null) {\n\t\t\t\tif(v.length == 0) o.t = _t || 'z';\n\t\t\t\telse if(opts.raw || v.trim().length == 0 || _t == \"s\"){}\n\t\t\t\telse if(v === 'TRUE') o = {t:'b', v:true};\n\t\t\t\telse if(v === 'FALSE') o = {t:'b', v:false};\n\t\t\t\telse if(!isNaN(fuzzynum(v))) o = {t:'n', v:fuzzynum(v)};\n\t\t\t\telse if(!isNaN(fuzzydate(v).getDate())) {\n\t\t\t\t\to = ({t:'d', v:parseDate(v)}/*:any*/);\n\t\t\t\t\tif(!opts.cellDates) o = ({t:'n', v:datenum(o.v)}/*:any*/);\n\t\t\t\t\to.z = opts.dateNF || table_fmt[14];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(o.z === undefined && z != null) o.z = z;\n\t\t\t/* The first link is used. Links are assumed to be fully specified.\n\t\t\t * TODO: The right way to process relative links is to make a new */\n\t\t\tvar l = \"\", Aelts = elt.getElementsByTagName(\"A\");\n\t\t\tif(Aelts && Aelts.length) for(var Aelti = 0; Aelti < Aelts.length; ++Aelti)\tif(Aelts[Aelti].hasAttribute(\"href\")) {\n\t\t\t\tl = Aelts[Aelti].getAttribute(\"href\"); if(l.charAt(0) != \"#\") break;\n\t\t\t}\n\t\t\tif(l && l.charAt(0) != \"#\") o.l = ({ Target: l });\n\t\t\tif(opts.dense) { if(!ws[R + or_R]) ws[R + or_R] = []; ws[R + or_R][C + or_C] = o; }\n\t\t\telse ws[encode_cell({c:C + or_C, r:R + or_R})] = o;\n\t\t\tif(range.e.c < C + or_C) range.e.c = C + or_C;\n\t\t\tC += CS;\n\t\t}\n\t\t++R;\n\t}\n\tif(merges.length) ws['!merges'] = (ws[\"!merges\"] || []).concat(merges);\n\trange.e.r = Math.max(range.e.r, R - 1 + or_R);\n\tws['!ref'] = encode_range(range);\n\tif(R >= sheetRows) ws['!fullref'] = encode_range((range.e.r = rows.length-_R+R-1 + or_R,range)); // We can count the real number of rows to parse but we don't to improve the performance\n\treturn ws;\n}\n\nfunction parse_dom_table(table/*:HTMLElement*/, _opts/*:?any*/)/*:Worksheet*/ {\n\tvar opts = _opts || {};\n\tvar ws/*:Worksheet*/ = opts.dense ? ([]/*:any*/) : ({}/*:any*/);\n\treturn sheet_add_dom(ws, table, _opts);\n}\n\nfunction table_to_book(table/*:HTMLElement*/, opts/*:?any*/)/*:Workbook*/ {\n\treturn sheet_to_workbook(parse_dom_table(table, opts), opts);\n}\n\nfunction is_dom_element_hidden(element/*:HTMLElement*/)/*:boolean*/ {\n\tvar display/*:string*/ = '';\n\tvar get_computed_style/*:?function*/ = get_get_computed_style_function(element);\n\tif(get_computed_style) display = get_computed_style(element).getPropertyValue('display');\n\tif(!display) display = element.style && element.style.display;\n\treturn display === 'none';\n}\n\n/* global getComputedStyle */\nfunction get_get_computed_style_function(element/*:HTMLElement*/)/*:?function*/ {\n\t// The proper getComputedStyle implementation is the one defined in the element window\n\tif(element.ownerDocument.defaultView && typeof element.ownerDocument.defaultView.getComputedStyle === 'function') return element.ownerDocument.defaultView.getComputedStyle;\n\t// If it is not available, try to get one from the global namespace\n\tif(typeof getComputedStyle === 'function') return getComputedStyle;\n\treturn null;\n}\n/* OpenDocument */\nfunction parse_text_p(text/*:string*//*::, tag*/)/*:Array*/ {\n\t/* 6.1.2 White Space Characters */\n\tvar fixed = text\n\t\t.replace(/[\\t\\r\\n]/g, \" \").trim().replace(/ +/g, \" \")\n\t\t.replace(//g,\" \")\n\t\t.replace(//g, function($$,$1) { return Array(parseInt($1,10)+1).join(\" \"); })\n\t\t.replace(/]*\\/>/g,\"\\t\")\n\t\t.replace(//g,\"\\n\");\n\tvar v = unescapexml(fixed.replace(/<[^>]*>/g,\"\"));\n\n\treturn [v];\n}\n\nvar number_formats_ods = {\n\t/* ods name: [short ssf fmt, long ssf fmt] */\n\tday: [\"d\", \"dd\"],\n\tmonth: [\"m\", \"mm\"],\n\tyear: [\"y\", \"yy\"],\n\thours: [\"h\", \"hh\"],\n\tminutes: [\"m\", \"mm\"],\n\tseconds: [\"s\", \"ss\"],\n\t\"am-pm\": [\"A/P\", \"AM/PM\"],\n\t\"day-of-week\": [\"ddd\", \"dddd\"],\n\tera: [\"e\", \"ee\"],\n\t/* there is no native representation of LO \"Q\" format */\n\tquarter: [\"\\\\Qm\", \"m\\\\\\\"th quarter\\\"\"]\n};\n\n\nfunction parse_content_xml(d/*:string*/, _opts)/*:Workbook*/ {\n\t\tvar opts = _opts || {};\n\t\tif(DENSE != null && opts.dense == null) opts.dense = DENSE;\n\t\tvar str = xlml_normalize(d);\n\t\tvar state/*:Array*/ = [], tmp;\n\t\tvar tag/*:: = {}*/;\n\t\tvar NFtag = {name:\"\"}, NF = \"\", pidx = 0;\n\t\tvar sheetag/*:: = {name:\"\", '名称':\"\"}*/;\n\t\tvar rowtag/*:: = {'行号':\"\"}*/;\n\t\tvar Sheets = {}, SheetNames/*:Array*/ = [];\n\t\tvar ws = opts.dense ? ([]/*:any*/) : ({}/*:any*/);\n\t\tvar Rn, q/*:: :any = ({t:\"\", v:null, z:null, w:\"\",c:[],}:any)*/;\n\t\tvar ctag = ({value:\"\"}/*:any*/);\n\t\tvar textp = \"\", textpidx = 0, textptag/*:: = {}*/;\n\t\tvar textR = [];\n\t\tvar R = -1, C = -1, range = {s: {r:1000000,c:10000000}, e: {r:0, c:0}};\n\t\tvar row_ol = 0;\n\t\tvar number_format_map = {};\n\t\tvar merges/*:Array*/ = [], mrange = {}, mR = 0, mC = 0;\n\t\tvar rowinfo/*:Array*/ = [], rowpeat = 1, colpeat = 1;\n\t\tvar arrayf/*:Array<[Range, string]>*/ = [];\n\t\tvar WB = {Names:[]};\n\t\tvar atag = ({}/*:any*/);\n\t\tvar _Ref/*:[string, string]*/ = [\"\", \"\"];\n\t\tvar comments/*:Array*/ = [], comment/*:Comment*/ = ({}/*:any*/);\n\t\tvar creator = \"\", creatoridx = 0;\n\t\tvar isstub = false, intable = false;\n\t\tvar i = 0;\n\t\txlmlregex.lastIndex = 0;\n\t\tstr = str.replace(//mg,\"\").replace(//gm,\"\");\n\t\twhile((Rn = xlmlregex.exec(str))) switch((Rn[3]=Rn[3].replace(/_.*$/,\"\"))) {\n\n\t\t\tcase 'table': case '工作表': // 9.1.2 \n\t\t\t\tif(Rn[1]==='/') {\n\t\t\t\t\tif(range.e.c >= range.s.c && range.e.r >= range.s.r) ws['!ref'] = encode_range(range);\n\t\t\t\t\telse ws['!ref'] = \"A1:A1\";\n\t\t\t\t\tif(opts.sheetRows > 0 && opts.sheetRows <= range.e.r) {\n\t\t\t\t\t\tws['!fullref'] = ws['!ref'];\n\t\t\t\t\t\trange.e.r = opts.sheetRows - 1;\n\t\t\t\t\t\tws['!ref'] = encode_range(range);\n\t\t\t\t\t}\n\t\t\t\t\tif(merges.length) ws['!merges'] = merges;\n\t\t\t\t\tif(rowinfo.length) ws[\"!rows\"] = rowinfo;\n\t\t\t\t\tsheetag.name = sheetag['名称'] || sheetag.name;\n\t\t\t\t\tif(typeof JSON !== 'undefined') JSON.stringify(sheetag);\n\t\t\t\t\tSheetNames.push(sheetag.name);\n\t\t\t\t\tSheets[sheetag.name] = ws;\n\t\t\t\t\tintable = false;\n\t\t\t\t}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\t\tsheetag = parsexmltag(Rn[0], false);\n\t\t\t\t\tR = C = -1;\n\t\t\t\t\trange.s.r = range.s.c = 10000000; range.e.r = range.e.c = 0;\n\t\t\t\t\tws = opts.dense ? ([]/*:any*/) : ({}/*:any*/); merges = [];\n\t\t\t\t\trowinfo = [];\n\t\t\t\t\tintable = true;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 'table-row-group': // 9.1.9 \n\t\t\t\tif(Rn[1] === \"/\") --row_ol; else ++row_ol;\n\t\t\t\tbreak;\n\t\t\tcase 'table-row': case '行': // 9.1.3 \n\t\t\t\tif(Rn[1] === '/') { R+=rowpeat; rowpeat = 1; break; }\n\t\t\t\trowtag = parsexmltag(Rn[0], false);\n\t\t\t\tif(rowtag['行号']) R = rowtag['行号'] - 1; else if(R == -1) R = 0;\n\t\t\t\trowpeat = +rowtag['number-rows-repeated'] || 1;\n\t\t\t\t/* TODO: remove magic */\n\t\t\t\tif(rowpeat < 10) for(i = 0; i < rowpeat; ++i) if(row_ol > 0) rowinfo[R + i] = {level: row_ol};\n\t\t\t\tC = -1; break;\n\t\t\tcase 'covered-table-cell': // 9.1.5 \n\t\t\t\tif(Rn[1] !== '/') ++C;\n\t\t\t\tif(opts.sheetStubs) {\n\t\t\t\t\tif(opts.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = {t:'z'}; }\n\t\t\t\t\telse ws[encode_cell({r:R,c:C})] = {t:'z'};\n\t\t\t\t}\n\t\t\t\ttextp = \"\"; textR = [];\n\t\t\t\tbreak; /* stub */\n\t\t\tcase 'table-cell': case '数据':\n\t\t\t\tif(Rn[0].charAt(Rn[0].length-2) === '/') {\n\t\t\t\t\t++C;\n\t\t\t\t\tctag = parsexmltag(Rn[0], false);\n\t\t\t\t\tcolpeat = parseInt(ctag['number-columns-repeated']||\"1\", 10);\n\t\t\t\t\tq = ({t:'z', v:null/*:: , z:null, w:\"\",c:[]*/}/*:any*/);\n\t\t\t\t\tif(ctag.formula && opts.cellFormula != false) q.f = ods_to_csf_formula(unescapexml(ctag.formula));\n\t\t\t\t\tif((ctag['数据类型'] || ctag['value-type']) == \"string\") {\n\t\t\t\t\t\tq.t = \"s\"; q.v = unescapexml(ctag['string-value'] || \"\");\n\t\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\t\tif(!ws[R]) ws[R] = [];\n\t\t\t\t\t\t\tws[R][C] = q;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tws[encode_cell({r:R,c:C})] = q;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tC+= colpeat-1;\n\t\t\t\t} else if(Rn[1]!=='/') {\n\t\t\t\t\t++C;\n\t\t\t\t\ttextp = \"\"; textpidx = 0; textR = [];\n\t\t\t\t\tcolpeat = 1;\n\t\t\t\t\tvar rptR = rowpeat ? R + rowpeat - 1 : R;\n\t\t\t\t\tif(C > range.e.c) range.e.c = C;\n\t\t\t\t\tif(C < range.s.c) range.s.c = C;\n\t\t\t\t\tif(R < range.s.r) range.s.r = R;\n\t\t\t\t\tif(rptR > range.e.r) range.e.r = rptR;\n\t\t\t\t\tctag = parsexmltag(Rn[0], false);\n\t\t\t\t\tcomments = []; comment = ({}/*:any*/);\n\t\t\t\t\tq = ({t:ctag['数据类型'] || ctag['value-type'], v:null/*:: , z:null, w:\"\",c:[]*/}/*:any*/);\n\t\t\t\t\tif(opts.cellFormula) {\n\t\t\t\t\t\tif(ctag.formula) ctag.formula = unescapexml(ctag.formula);\n\t\t\t\t\t\tif(ctag['number-matrix-columns-spanned'] && ctag['number-matrix-rows-spanned']) {\n\t\t\t\t\t\t\tmR = parseInt(ctag['number-matrix-rows-spanned'],10) || 0;\n\t\t\t\t\t\t\tmC = parseInt(ctag['number-matrix-columns-spanned'],10) || 0;\n\t\t\t\t\t\t\tmrange = {s: {r:R,c:C}, e:{r:R + mR-1,c:C + mC-1}};\n\t\t\t\t\t\t\tq.F = encode_range(mrange);\n\t\t\t\t\t\t\tarrayf.push([mrange, q.F]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif(ctag.formula) q.f = ods_to_csf_formula(ctag.formula);\n\t\t\t\t\t\telse for(i = 0; i < arrayf.length; ++i)\n\t\t\t\t\t\t\tif(R >= arrayf[i][0].s.r && R <= arrayf[i][0].e.r)\n\t\t\t\t\t\t\t\tif(C >= arrayf[i][0].s.c && C <= arrayf[i][0].e.c)\n\t\t\t\t\t\t\t\t\tq.F = arrayf[i][1];\n\t\t\t\t\t}\n\t\t\t\t\tif(ctag['number-columns-spanned'] || ctag['number-rows-spanned']) {\n\t\t\t\t\t\tmR = parseInt(ctag['number-rows-spanned'],10) || 0;\n\t\t\t\t\t\tmC = parseInt(ctag['number-columns-spanned'],10) || 0;\n\t\t\t\t\t\tmrange = {s: {r:R,c:C}, e:{r:R + mR-1,c:C + mC-1}};\n\t\t\t\t\t\tmerges.push(mrange);\n\t\t\t\t\t}\n\n\t\t\t\t\t/* 19.675.2 table:number-columns-repeated */\n\t\t\t\t\tif(ctag['number-columns-repeated']) colpeat = parseInt(ctag['number-columns-repeated'], 10);\n\n\t\t\t\t\t/* 19.385 office:value-type */\n\t\t\t\t\tswitch(q.t) {\n\t\t\t\t\t\tcase 'boolean': q.t = 'b'; q.v = parsexmlbool(ctag['boolean-value']); break;\n\t\t\t\t\t\tcase 'float': q.t = 'n'; q.v = parseFloat(ctag.value); break;\n\t\t\t\t\t\tcase 'percentage': q.t = 'n'; q.v = parseFloat(ctag.value); break;\n\t\t\t\t\t\tcase 'currency': q.t = 'n'; q.v = parseFloat(ctag.value); break;\n\t\t\t\t\t\tcase 'date': q.t = 'd'; q.v = parseDate(ctag['date-value']);\n\t\t\t\t\t\t\tif(!opts.cellDates) { q.t = 'n'; q.v = datenum(q.v); }\n\t\t\t\t\t\t\tq.z = 'm/d/yy'; break;\n\t\t\t\t\t\tcase 'time': q.t = 'n'; q.v = parse_isodur(ctag['time-value'])/86400;\n\t\t\t\t\t\t\tif(opts.cellDates) { q.t = 'd'; q.v = numdate(q.v); }\n\t\t\t\t\t\t\tq.z = 'HH:MM:SS'; break;\n\t\t\t\t\t\tcase 'number': q.t = 'n'; q.v = parseFloat(ctag['数据数值']); break;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tif(q.t === 'string' || q.t === 'text' || !q.t) {\n\t\t\t\t\t\t\t\tq.t = 's';\n\t\t\t\t\t\t\t\tif(ctag['string-value'] != null) { textp = unescapexml(ctag['string-value']); textR = []; }\n\t\t\t\t\t\t\t} else throw new Error('Unsupported value type ' + q.t);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tisstub = false;\n\t\t\t\t\tif(q.t === 's') {\n\t\t\t\t\t\tq.v = textp || '';\n\t\t\t\t\t\tif(textR.length) q.R = textR;\n\t\t\t\t\t\tisstub = textpidx == 0;\n\t\t\t\t\t}\n\t\t\t\t\tif(atag.Target) q.l = atag;\n\t\t\t\t\tif(comments.length > 0) { q.c = comments; comments = []; }\n\t\t\t\t\tif(textp && opts.cellText !== false) q.w = textp;\n\t\t\t\t\tif(isstub) { q.t = \"z\"; delete q.v; }\n\t\t\t\t\tif(!isstub || opts.sheetStubs) {\n\t\t\t\t\t\tif(!(opts.sheetRows && opts.sheetRows <= R)) {\n\t\t\t\t\t\t\tfor(var rpt = 0; rpt < rowpeat; ++rpt) {\n\t\t\t\t\t\t\t\tcolpeat = parseInt(ctag['number-columns-repeated']||\"1\", 10);\n\t\t\t\t\t\t\t\tif(opts.dense) {\n\t\t\t\t\t\t\t\t\tif(!ws[R + rpt]) ws[R + rpt] = [];\n\t\t\t\t\t\t\t\t\tws[R + rpt][C] = rpt == 0 ? q : dup(q);\n\t\t\t\t\t\t\t\t\twhile(--colpeat > 0) ws[R + rpt][C + colpeat] = dup(q);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tws[encode_cell({r:R + rpt,c:C})] = q;\n\t\t\t\t\t\t\t\t\twhile(--colpeat > 0) ws[encode_cell({r:R + rpt,c:C + colpeat})] = dup(q);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif(range.e.c <= C) range.e.c = C;\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\tcolpeat = parseInt(ctag['number-columns-repeated']||\"1\", 10);\n\t\t\t\t\tC += colpeat-1; colpeat = 0;\n\t\t\t\t\tq = {/*:: t:\"\", v:null, z:null, w:\"\",c:[]*/};\n\t\t\t\t\ttextp = \"\"; textR = [];\n\t\t\t\t}\n\t\t\t\tatag = ({}/*:any*/);\n\t\t\t\tbreak; // 9.1.4 \n\n\t\t\t/* pure state */\n\t\t\tcase 'document': // TODO: is the root for FODS\n\t\t\tcase 'document-content': case '电子表格文档': // 3.1.3.2 \n\t\t\tcase 'spreadsheet': case '主体': // 3.7 \n\t\t\tcase 'scripts': // 3.12 \n\t\t\tcase 'styles': // TODO \n\t\t\tcase 'font-face-decls': // 3.14 \n\t\t\tcase 'master-styles': // 3.15.4 -- relevant for FODS\n\t\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]);\n\t\t\t\tbreak;\n\n\t\t\tcase 'annotation': // 14.1 \n\t\t\t\tif(Rn[1]==='/'){\n\t\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;\n\t\t\t\t\tcomment.t = textp;\n\t\t\t\t\tif(textR.length) /*::(*/comment/*:: :any)*/.R = textR;\n\t\t\t\t\tcomment.a = creator;\n\t\t\t\t\tcomments.push(comment);\n\t\t\t\t}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') {state.push([Rn[3], false]);}\n\t\t\t\tcreator = \"\"; creatoridx = 0;\n\t\t\t\ttextp = \"\"; textpidx = 0; textR = [];\n\t\t\t\tbreak;\n\n\t\t\tcase 'creator': // 4.3.2.7 \n\t\t\t\tif(Rn[1]==='/') { creator = str.slice(creatoridx,Rn.index); }\n\t\t\t\telse creatoridx = Rn.index + Rn[0].length;\n\t\t\t\tbreak;\n\n\t\t\t/* ignore state */\n\t\t\tcase 'meta': case '元数据': // TODO: FODS/UOF\n\t\t\tcase 'settings': // TODO: \n\t\t\tcase 'config-item-set': // TODO: \n\t\t\tcase 'config-item-map-indexed': // TODO: \n\t\t\tcase 'config-item-map-entry': // TODO: \n\t\t\tcase 'config-item-map-named': // TODO: \n\t\t\tcase 'shapes': // 9.2.8 \n\t\t\tcase 'frame': // 10.4.2 \n\t\t\tcase 'text-box': // 10.4.3 \n\t\t\tcase 'image': // 10.4.4 \n\t\t\tcase 'data-pilot-tables': // 9.6.2 \n\t\t\tcase 'list-style': // 16.30 \n\t\t\tcase 'form': // 13.13 \n\t\t\tcase 'dde-links': // 9.8 \n\t\t\tcase 'event-listeners': // TODO\n\t\t\tcase 'chart': // TODO\n\t\t\t\tif(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;}\n\t\t\t\telse if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], false]);\n\t\t\t\ttextp = \"\"; textpidx = 0; textR = [];\n\t\t\t\tbreak;\n\n\t\t\tcase 'scientific-number': // TODO: \n\t\t\t\tbreak;\n\t\t\tcase 'currency-symbol': // TODO: \n\t\t\t\tbreak;\n\t\t\tcase 'currency-style': // TODO: \n\t\t\t\tbreak;\n\t\t\tcase 'number-style': // 16.27.2 \n\t\t\tcase 'percentage-style': // 16.27.9 \n\t\t\tcase 'date-style': // 16.27.10 \n\t\t\tcase 'time-style': // 16.27.18 \n\t\t\t\tif(Rn[1]==='/'){\n\t\t\t\t\tnumber_format_map[NFtag.name] = NF;\n\t\t\t\t\tif((tmp=state.pop())[0]!==Rn[3]) throw \"Bad state: \"+tmp;\n\t\t\t\t} else if(Rn[0].charAt(Rn[0].length-2) !== '/') {\n\t\t\t\t\tNF = \"\";\n\t\t\t\t\tNFtag = parsexmltag(Rn[0], false);\n\t\t\t\t\tstate.push([Rn[3], true]);\n\t\t\t\t} break;\n\n\t\t\tcase 'script': break; // 3.13 \n\t\t\tcase 'libraries': break; // TODO: \n\t\t\tcase 'automatic-styles': break; // 3.15.3 \n\n\t\t\tcase 'default-style': // TODO: \n\t\t\tcase 'page-layout': break; // TODO: \n\t\t\tcase 'style': // 16.2 \n\t\t\t\tbreak;\n\t\t\tcase 'map': break; // 16.3 \n\t\t\tcase 'font-face': break; // 16.21 \n\n\t\t\tcase 'paragraph-properties': break; // 17.6 \n\t\t\tcase 'table-properties': break; // 17.15 \n\t\t\tcase 'table-column-properties': break; // 17.16 \n\t\t\tcase 'table-row-properties': break; // 17.17 \n\t\t\tcase 'table-cell-properties': break; // 17.18 \n\n\t\t\tcase 'number': // 16.27.3 \n\t\t\t\tswitch(state[state.length-1][0]) {\n\t\t\t\t\tcase 'time-style':\n\t\t\t\t\tcase 'date-style':\n\t\t\t\t\t\ttag = parsexmltag(Rn[0], false);\n\t\t\t\t\t\tNF += number_formats_ods[Rn[3]][tag.style==='long'?1:0]; break;\n\t\t\t\t} break;\n\n\t\t\tcase 'fraction': break; // TODO 16.27.6 \n\n\t\t\tcase 'day': // 16.27.11 \n\t\t\tcase 'month': // 16.27.12 \n\t\t\tcase 'year': // 16.27.13 \n\t\t\tcase 'era': // 16.27.14 \n\t\t\tcase 'day-of-week': // 16.27.15 \n\t\t\tcase 'week-of-year': // 16.27.16 \n\t\t\tcase 'quarter': // 16.27.17 \n\t\t\tcase 'hours': // 16.27.19 \n\t\t\tcase 'minutes': // 16.27.20 \n\t\t\tcase 'seconds': // 16.27.21 \n\t\t\tcase 'am-pm': // 16.27.22 \n\t\t\t\tswitch(state[state.length-1][0]) {\n\t\t\t\t\tcase 'time-style':\n\t\t\t\t\tcase 'date-style':\n\t\t\t\t\t\ttag = parsexmltag(Rn[0], false);\n\t\t\t\t\t\tNF += number_formats_ods[Rn[3]][tag.style==='long'?1:0]; break;\n\t\t\t\t} break;\n\n\t\t\tcase 'boolean-style': break; // 16.27.23 \n\t\t\tcase 'boolean': break; // 16.27.24 \n\t\t\tcase 'text-style': break; // 16.27.25 \n\t\t\tcase 'text': // 16.27.26 \n\t\t\t\tif(Rn[0].slice(-2) === \"/>\") break;\n\t\t\t\telse if(Rn[1]===\"/\") switch(state[state.length-1][0]) {\n\t\t\t\t\tcase 'number-style':\n\t\t\t\t\tcase 'date-style':\n\t\t\t\t\tcase 'time-style':\n\t\t\t\t\t\tNF += str.slice(pidx, Rn.index);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\telse pidx = Rn.index + Rn[0].length;\n\t\t\t\tbreak;\n\n\t\t\tcase 'named-range': // 9.4.12 \n\t\t\t\ttag = parsexmltag(Rn[0], false);\n\t\t\t\t_Ref = ods_to_csf_3D(tag['cell-range-address']);\n\t\t\t\tvar nrange = ({Name:tag.name, Ref:_Ref[0] + '!' + _Ref[1]}/*:any*/);\n\t\t\t\tif(intable) nrange.Sheet = SheetNames.length;\n\t\t\t\tWB.Names.push(nrange);\n\t\t\t\tbreak;\n\n\t\t\tcase 'text-content': break; // 16.27.27 \n\t\t\tcase 'text-properties': break; // 16.27.27 \n\t\t\tcase 'embedded-text': break; // 16.27.4 \n\n\t\t\tcase 'body': case '电子表格': break; // 3.3 16.9.6 19.726.3\n\n\t\t\tcase 'forms': break; // 12.25.2 13.2\n\t\t\tcase 'table-column': break; // 9.1.6 \n\t\t\tcase 'table-header-rows': break; // 9.1.7 \n\t\t\tcase 'table-rows': break; // 9.1.12 \n\t\t\t/* TODO: outline levels */\n\t\t\tcase 'table-column-group': break; // 9.1.10 \n\t\t\tcase 'table-header-columns': break; // 9.1.11 \n\t\t\tcase 'table-columns': break; // 9.1.12 \n\n\t\t\tcase 'null-date': break; // 9.4.2 TODO: date1904\n\n\t\t\tcase 'graphic-properties': break; // 17.21 \n\t\t\tcase 'calculation-settings': break; // 9.4.1 \n\t\t\tcase 'named-expressions': break; // 9.4.11 \n\t\t\tcase 'label-range': break; // 9.4.9 \n\t\t\tcase 'label-ranges': break; // 9.4.10 \n\t\t\tcase 'named-expression': break; // 9.4.13 \n\t\t\tcase 'sort': break; // 9.4.19 \n\t\t\tcase 'sort-by': break; // 9.4.20 \n\t\t\tcase 'sort-groups': break; // 9.4.22 \n\n\t\t\tcase 'tab': break; // 6.1.4 \n\t\t\tcase 'line-break': break; // 6.1.5 \n\t\t\tcase 'span': break; // 6.1.7 \n\t\t\tcase 'p': case '文本串': // 5.1.3 \n\t\t\t\tif(['master-styles'].indexOf(state[state.length-1][0]) > -1) break;\n\t\t\t\tif(Rn[1]==='/' && (!ctag || !ctag['string-value'])) {\n\t\t\t\t\tvar ptp = parse_text_p(str.slice(textpidx,Rn.index), textptag);\n\t\t\t\t\ttextp = (textp.length > 0 ? textp + \"\\n\" : \"\") + ptp[0];\n\t\t\t\t} else { textptag = parsexmltag(Rn[0], false); textpidx = Rn.index + Rn[0].length; }\n\t\t\t\tbreak; // \n\t\t\tcase 's': break; // \n\n\t\t\tcase 'database-range': // 9.4.15 \n\t\t\t\tif(Rn[1]==='/') break;\n\t\t\t\ttry {\n\t\t\t\t\t_Ref = ods_to_csf_3D(parsexmltag(Rn[0])['target-range-address']);\n\t\t\t\t\tSheets[_Ref[0]]['!autofilter'] = { ref:_Ref[1] };\n\t\t\t\t} catch(e) {/* empty */}\n\t\t\t\tbreak;\n\n\t\t\tcase 'date': break; // <*:date>\n\n\t\t\tcase 'object': break; // 10.4.6.2 \n\t\t\tcase 'title': case '标题': break; // <*:title> OR \n\t\t\tcase 'desc': break; // <*:desc>\n\t\t\tcase 'binary-data': break; // 10.4.5 TODO: b64 blob\n\n\t\t\t/* 9.2 Advanced Tables */\n\t\t\tcase 'table-source': break; // 9.2.6\n\t\t\tcase 'scenario': break; // 9.2.6\n\n\t\t\tcase 'iteration': break; // 9.4.3 \n\t\t\tcase 'content-validations': break; // 9.4.4 \n\t\t\tcase 'filter': break; // 9.5.2 \n\t\t\tcase 'filter-and': break; // 9.5.3 \n\t\t\tcase 'filter-or': break; // 9.5.4 \n\t\t\tcase 'filter-condition': break; // 9.5.5 \n\n\t\t\tcase 'list-level-style-bullet': break; // 16.31 \n\t\t\tcase 'page-count': break; // TODO \n\t\t\tcase 'time': break; // TODO \n\n\t\t\t/* 9.3 Advanced Table Cells */\n\t\t\tcase 'cell-range-source': break; // 9.3.1 \n\t\t\tcase 'property': break; // 13.8 \n\n\t\t\tcase 'a': // 6.1.8 hyperlink\n\t\t\t\tif(Rn[1]!== '/') {\n\t\t\t\t\tatag = parsexmltag(Rn[0], false);\n\t\t\t\t\tif(!atag.href) break;\n\t\t\t\t\tatag.Target = unescapexml(atag.href); delete atag.href;\n\t\t\t\t\tif(atag.Target.charAt(0) == \"#\" && atag.Target.indexOf(\".\") > -1) {\n\t\t\t\t\t\t_Ref = ods_to_csf_3D(atag.Target.slice(1));\n\t\t\t\t\t\tatag.Target = \"#\" + _Ref[0] + \"!\" + _Ref[1];\n\t\t\t\t\t} else if(atag.Target.match(/^\\.\\.[\\\\\\/]/)) atag.Target = atag.Target.slice(3);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t/* non-standard */\n\t\t\tcase 'table-protection': break;\n\t\t\tcase 'data-pilot-grand-total': break; // ',\n\t\t\t'',\n\t\t\t\t'',\n\t\t\t\t'',\n\t\t\t\t'',\n\t\t\t\t'',\n\t\t\t'',\n\t\t''\n\t].join(\"\");\n\n\tvar payload = '' + master_styles + '';\n\n\treturn function wso(/*::wb, opts*/) {\n\t\treturn XML_HEADER + payload;\n\t};\n})();\nvar write_content_ods/*:{(wb:any, opts:any):string}*/ = /* @__PURE__ */(function() {\n\t/* 6.1.2 White Space Characters */\n\tvar write_text_p = function(text/*:string*/)/*:string*/ {\n\t\treturn escapexml(text)\n\t\t\t.replace(/ +/g, function($$){return '';})\n\t\t\t.replace(/\\t/g, \"\")\n\t\t\t.replace(/\\n/g, \"\")\n\t\t\t.replace(/^ /, \"\").replace(/ $/, \"\");\n\t};\n\n\tvar null_cell_xml = ' \\n';\n\tvar covered_cell_xml = ' \\n';\n\tvar write_ws = function(ws, wb/*:Workbook*/, i/*:number*//*::, opts*/)/*:string*/ {\n\t\t/* Section 9 Tables */\n\t\tvar o/*:Array*/ = [];\n\t\to.push(' \\n');\n\t\tvar R=0,C=0, range = decode_range(ws['!ref']||\"A1\");\n\t\tvar marr/*:Array*/ = ws['!merges'] || [], mi = 0;\n\t\tvar dense = Array.isArray(ws);\n\t\tif(ws[\"!cols\"]) {\n\t\t\tfor(C = 0; C <= range.e.c; ++C) o.push(' \\n');\n\t\t}\n\t\tvar H = \"\", ROWS = ws[\"!rows\"]||[];\n\t\tfor(R = 0; R < range.s.r; ++R) {\n\t\t\tH = ROWS[R] ? ' table:style-name=\"ro' + ROWS[R].ods + '\"' : \"\";\n\t\t\to.push(' \\n');\n\t\t}\n\t\tfor(; R <= range.e.r; ++R) {\n\t\t\tH = ROWS[R] ? ' table:style-name=\"ro' + ROWS[R].ods + '\"' : \"\";\n\t\t\to.push(' \\n');\n\t\t\tfor(C=0; C < range.s.c; ++C) o.push(null_cell_xml);\n\t\t\tfor(; C <= range.e.c; ++C) {\n\t\t\t\tvar skip = false, ct = {}, textp = \"\";\n\t\t\t\tfor(mi = 0; mi != marr.length; ++mi) {\n\t\t\t\t\tif(marr[mi].s.c > C) continue;\n\t\t\t\t\tif(marr[mi].s.r > R) continue;\n\t\t\t\t\tif(marr[mi].e.c < C) continue;\n\t\t\t\t\tif(marr[mi].e.r < R) continue;\n\t\t\t\t\tif(marr[mi].s.c != C || marr[mi].s.r != R) skip = true;\n\t\t\t\t\tct['table:number-columns-spanned'] = (marr[mi].e.c - marr[mi].s.c + 1);\n\t\t\t\t\tct['table:number-rows-spanned'] = (marr[mi].e.r - marr[mi].s.r + 1);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(skip) { o.push(covered_cell_xml); continue; }\n\t\t\t\tvar ref = encode_cell({r:R, c:C}), cell = dense ? (ws[R]||[])[C]: ws[ref];\n\t\t\t\tif(cell && cell.f) {\n\t\t\t\t\tct['table:formula'] = escapexml(csf_to_ods_formula(cell.f));\n\t\t\t\t\tif(cell.F) {\n\t\t\t\t\t\tif(cell.F.slice(0, ref.length) == ref) {\n\t\t\t\t\t\t\tvar _Fref = decode_range(cell.F);\n\t\t\t\t\t\t\tct['table:number-matrix-columns-spanned'] = (_Fref.e.c - _Fref.s.c + 1);\n\t\t\t\t\t\t\tct['table:number-matrix-rows-spanned'] = (_Fref.e.r - _Fref.s.r + 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(!cell) { o.push(null_cell_xml); continue; }\n\t\t\t\tswitch(cell.t) {\n\t\t\t\t\tcase 'b':\n\t\t\t\t\t\ttextp = (cell.v ? 'TRUE' : 'FALSE');\n\t\t\t\t\t\tct['office:value-type'] = \"boolean\";\n\t\t\t\t\t\tct['office:boolean-value'] = (cell.v ? 'true' : 'false');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'n':\n\t\t\t\t\t\ttextp = (cell.w||String(cell.v||0));\n\t\t\t\t\t\tct['office:value-type'] = \"float\";\n\t\t\t\t\t\tct['office:value'] = (cell.v||0);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 's': case 'str':\n\t\t\t\t\t\ttextp = cell.v == null ? \"\" : cell.v;\n\t\t\t\t\t\tct['office:value-type'] = \"string\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'd':\n\t\t\t\t\t\ttextp = (cell.w||(parseDate(cell.v).toISOString()));\n\t\t\t\t\t\tct['office:value-type'] = \"date\";\n\t\t\t\t\t\tct['office:date-value'] = (parseDate(cell.v).toISOString());\n\t\t\t\t\t\tct['table:style-name'] = \"ce1\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t//case 'e':\n\t\t\t\t\tdefault: o.push(null_cell_xml); continue;\n\t\t\t\t}\n\t\t\t\tvar text_p = write_text_p(textp);\n\t\t\t\tif(cell.l && cell.l.Target) {\n\t\t\t\t\tvar _tgt = cell.l.Target;\n\t\t\t\t\t_tgt = _tgt.charAt(0) == \"#\" ? \"#\" + csf_to_ods_3D(_tgt.slice(1)) : _tgt;\n\t\t\t\t\t// TODO: choose correct parent path format based on link delimiters\n\t\t\t\t\tif(_tgt.charAt(0) != \"#\" && !_tgt.match(/^\\w+:/)) _tgt = '../' + _tgt;\n\t\t\t\t\ttext_p = writextag('text:a', text_p, {'xlink:href': _tgt.replace(/&/g, \"&\")});\n\t\t\t\t}\n\t\t\t\to.push(' ' + writextag('table:table-cell', writextag('text:p', text_p, {}), ct) + '\\n');\n\t\t\t}\n\t\t\to.push(' \\n');\n\t\t}\n\t\to.push(' \\n');\n\t\treturn o.join(\"\");\n\t};\n\n\tvar write_automatic_styles_ods = function(o/*:Array*/, wb) {\n\t\to.push(' \\n');\n\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\t\to.push(' /\\n');\n\t\to.push(' \\n');\n\t\to.push(' /\\n');\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\n\t\t/* column styles */\n\t\tvar cidx = 0;\n\t\twb.SheetNames.map(function(n) { return wb.Sheets[n]; }).forEach(function(ws) {\n\t\t\tif(!ws) return;\n\t\t\tif(ws[\"!cols\"]) {\n\t\t\t\tfor(var C = 0; C < ws[\"!cols\"].length; ++C) if(ws[\"!cols\"][C]) {\n\t\t\t\t\tvar colobj = ws[\"!cols\"][C];\n\t\t\t\t\tif(colobj.width == null && colobj.wpx == null && colobj.wch == null) continue;\n\t\t\t\t\tprocess_col(colobj);\n\t\t\t\t\tcolobj.ods = cidx;\n\t\t\t\t\tvar w = ws[\"!cols\"][C].wpx + \"px\";\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\t++cidx;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t/* row styles */\n\t\tvar ridx = 0;\n\t\twb.SheetNames.map(function(n) { return wb.Sheets[n]; }).forEach(function(ws) {\n\t\t\tif(!ws) return;\n\t\t\tif(ws[\"!rows\"]) {\n\t\t\t\tfor(var R = 0; R < ws[\"!rows\"].length; ++R) if(ws[\"!rows\"][R]) {\n\t\t\t\t\tws[\"!rows\"][R].ods = ridx;\n\t\t\t\t\tvar h = ws[\"!rows\"][R].hpx + \"px\";\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\to.push(' \\n');\n\t\t\t\t\t++ridx;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t/* table */\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\n\t\t/* table cells, text */\n\t\to.push(' \\n');\n\n\t\t/* page-layout */\n\n\t\to.push(' \\n');\n\t};\n\n\treturn function wcx(wb, opts) {\n\t\tvar o = [XML_HEADER];\n\t\t/* 3.1.3.2 */\n\t\tvar attr = wxt_helper({\n\t\t\t'xmlns:office': \"urn:oasis:names:tc:opendocument:xmlns:office:1.0\",\n\t\t\t'xmlns:table': \"urn:oasis:names:tc:opendocument:xmlns:table:1.0\",\n\t\t\t'xmlns:style': \"urn:oasis:names:tc:opendocument:xmlns:style:1.0\",\n\t\t\t'xmlns:text': \"urn:oasis:names:tc:opendocument:xmlns:text:1.0\",\n\t\t\t'xmlns:draw': \"urn:oasis:names:tc:opendocument:xmlns:drawing:1.0\",\n\t\t\t'xmlns:fo': \"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0\",\n\t\t\t'xmlns:xlink': \"http://www.w3.org/1999/xlink\",\n\t\t\t'xmlns:dc': \"http://purl.org/dc/elements/1.1/\",\n\t\t\t'xmlns:meta': \"urn:oasis:names:tc:opendocument:xmlns:meta:1.0\",\n\t\t\t'xmlns:number': \"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0\",\n\t\t\t'xmlns:presentation': \"urn:oasis:names:tc:opendocument:xmlns:presentation:1.0\",\n\t\t\t'xmlns:svg': \"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0\",\n\t\t\t'xmlns:chart': \"urn:oasis:names:tc:opendocument:xmlns:chart:1.0\",\n\t\t\t'xmlns:dr3d': \"urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0\",\n\t\t\t'xmlns:math': \"http://www.w3.org/1998/Math/MathML\",\n\t\t\t'xmlns:form': \"urn:oasis:names:tc:opendocument:xmlns:form:1.0\",\n\t\t\t'xmlns:script': \"urn:oasis:names:tc:opendocument:xmlns:script:1.0\",\n\t\t\t'xmlns:ooo': \"http://openoffice.org/2004/office\",\n\t\t\t'xmlns:ooow': \"http://openoffice.org/2004/writer\",\n\t\t\t'xmlns:oooc': \"http://openoffice.org/2004/calc\",\n\t\t\t'xmlns:dom': \"http://www.w3.org/2001/xml-events\",\n\t\t\t'xmlns:xforms': \"http://www.w3.org/2002/xforms\",\n\t\t\t'xmlns:xsd': \"http://www.w3.org/2001/XMLSchema\",\n\t\t\t'xmlns:xsi': \"http://www.w3.org/2001/XMLSchema-instance\",\n\t\t\t'xmlns:sheet': \"urn:oasis:names:tc:opendocument:sh33tjs:1.0\",\n\t\t\t'xmlns:rpt': \"http://openoffice.org/2005/report\",\n\t\t\t'xmlns:of': \"urn:oasis:names:tc:opendocument:xmlns:of:1.2\",\n\t\t\t'xmlns:xhtml': \"http://www.w3.org/1999/xhtml\",\n\t\t\t'xmlns:grddl': \"http://www.w3.org/2003/g/data-view#\",\n\t\t\t'xmlns:tableooo': \"http://openoffice.org/2009/table\",\n\t\t\t'xmlns:drawooo': \"http://openoffice.org/2010/draw\",\n\t\t\t'xmlns:calcext': \"urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0\",\n\t\t\t'xmlns:loext': \"urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0\",\n\t\t\t'xmlns:field': \"urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0\",\n\t\t\t'xmlns:formx': \"urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0\",\n\t\t\t'xmlns:css3t': \"http://www.w3.org/TR/css3-text/\",\n\t\t\t'office:version': \"1.2\"\n\t\t});\n\n\t\tvar fods = wxt_helper({\n\t\t\t'xmlns:config': \"urn:oasis:names:tc:opendocument:xmlns:config:1.0\",\n\t\t\t'office:mimetype': \"application/vnd.oasis.opendocument.spreadsheet\"\n\t\t});\n\n\t\tif(opts.bookType == \"fods\") {\n\t\t\to.push('\\n');\n\t\t\to.push(write_meta_ods().replace(/office:document-meta/g, \"office:meta\"));\n\t\t\t// TODO: settings (equiv of settings.xml for ODS)\n\t\t} else o.push('\\n');\n\t\t// o.push(' \\n');\n\t\twrite_automatic_styles_ods(o, wb);\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\t\tfor(var i = 0; i != wb.SheetNames.length; ++i) o.push(write_ws(wb.Sheets[wb.SheetNames[i]], wb, i, opts));\n\t\to.push(' \\n');\n\t\to.push(' \\n');\n\t\tif(opts.bookType == \"fods\") o.push('');\n\t\telse o.push('');\n\t\treturn o.join(\"\");\n\t};\n})();\n\nfunction write_ods(wb/*:any*/, opts/*:any*/) {\n\tif(opts.bookType == \"fods\") return write_content_ods(wb, opts);\n\n\tvar zip = zip_new();\n\tvar f = \"\";\n\n\tvar manifest/*:Array >*/ = [];\n\tvar rdf/*:Array<[string, string]>*/ = [];\n\n\t/* Part 3 Section 3.3 MIME Media Type */\n\tf = \"mimetype\";\n\tzip_add_file(zip, f, \"application/vnd.oasis.opendocument.spreadsheet\");\n\n\t/* Part 1 Section 2.2 Documents */\n\tf = \"content.xml\";\n\tzip_add_file(zip, f, write_content_ods(wb, opts));\n\tmanifest.push([f, \"text/xml\"]);\n\trdf.push([f, \"ContentFile\"]);\n\n\t/* TODO: these are hard-coded styles to satiate excel */\n\tf = \"styles.xml\";\n\tzip_add_file(zip, f, write_styles_ods(wb, opts));\n\tmanifest.push([f, \"text/xml\"]);\n\trdf.push([f, \"StylesFile\"]);\n\n\t/* TODO: this is hard-coded to satiate excel */\n\tf = \"meta.xml\";\n\tzip_add_file(zip, f, XML_HEADER + write_meta_ods(/*::wb, opts*/));\n\tmanifest.push([f, \"text/xml\"]);\n\trdf.push([f, \"MetadataFile\"]);\n\n\t/* Part 3 Section 6 Metadata Manifest File */\n\tf = \"manifest.rdf\";\n\tzip_add_file(zip, f, write_rdf(rdf/*, opts*/));\n\tmanifest.push([f, \"application/rdf+xml\"]);\n\n\t/* Part 3 Section 4 Manifest File */\n\tf = \"META-INF/manifest.xml\";\n\tzip_add_file(zip, f, write_manifest(manifest/*, opts*/));\n\n\treturn zip;\n}\n\n/*! sheetjs (C) 2013-present SheetJS -- http://sheetjs.com */\nfunction u8_to_dataview(array) {\n return new DataView(array.buffer, array.byteOffset, array.byteLength);\n}\nfunction u8str(u8) {\n return typeof TextDecoder != \"undefined\" ? new TextDecoder().decode(u8) : utf8read(a2s(u8));\n}\nfunction stru8(str) {\n return typeof TextEncoder != \"undefined\" ? new TextEncoder().encode(str) : s2a(utf8write(str));\n}\nfunction u8contains(body, search) {\n outer:\n for (var L = 0; L <= body.length - search.length; ++L) {\n for (var j = 0; j < search.length; ++j)\n if (body[L + j] != search[j])\n continue outer;\n return true;\n }\n return false;\n}\nfunction u8concat(u8a) {\n var len = u8a.reduce(function(acc, x) {\n return acc + x.length;\n }, 0);\n var out = new Uint8Array(len);\n var off = 0;\n u8a.forEach(function(u8) {\n out.set(u8, off);\n off += u8.length;\n });\n return out;\n}\nfunction popcnt(x) {\n x -= x >> 1 & 1431655765;\n x = (x & 858993459) + (x >> 2 & 858993459);\n return (x + (x >> 4) & 252645135) * 16843009 >>> 24;\n}\nfunction readDecimal128LE(buf, offset) {\n var exp = (buf[offset + 15] & 127) << 7 | buf[offset + 14] >> 1;\n var mantissa = buf[offset + 14] & 1;\n for (var j = offset + 13; j >= offset; --j)\n mantissa = mantissa * 256 + buf[j];\n return (buf[offset + 15] & 128 ? -mantissa : mantissa) * Math.pow(10, exp - 6176);\n}\nfunction writeDecimal128LE(buf, offset, value) {\n var exp = Math.floor(value == 0 ? 0 : Math.LOG10E * Math.log(Math.abs(value))) + 6176 - 20;\n var mantissa = value / Math.pow(10, exp - 6176);\n buf[offset + 15] |= exp >> 7;\n buf[offset + 14] |= (exp & 127) << 1;\n for (var i = 0; mantissa >= 1; ++i, mantissa /= 256)\n buf[offset + i] = mantissa & 255;\n buf[offset + 15] |= value >= 0 ? 0 : 128;\n}\nfunction parse_varint49(buf, ptr) {\n var l = ptr ? ptr[0] : 0;\n var usz = buf[l] & 127;\n varint:\n if (buf[l++] >= 128) {\n usz |= (buf[l] & 127) << 7;\n if (buf[l++] < 128)\n break varint;\n usz |= (buf[l] & 127) << 14;\n if (buf[l++] < 128)\n break varint;\n usz |= (buf[l] & 127) << 21;\n if (buf[l++] < 128)\n break varint;\n usz += (buf[l] & 127) * Math.pow(2, 28);\n ++l;\n if (buf[l++] < 128)\n break varint;\n usz += (buf[l] & 127) * Math.pow(2, 35);\n ++l;\n if (buf[l++] < 128)\n break varint;\n usz += (buf[l] & 127) * Math.pow(2, 42);\n ++l;\n if (buf[l++] < 128)\n break varint;\n }\n if (ptr)\n ptr[0] = l;\n return usz;\n}\nfunction write_varint49(v) {\n var usz = new Uint8Array(7);\n usz[0] = v & 127;\n var L = 1;\n sz:\n if (v > 127) {\n usz[L - 1] |= 128;\n usz[L] = v >> 7 & 127;\n ++L;\n if (v <= 16383)\n break sz;\n usz[L - 1] |= 128;\n usz[L] = v >> 14 & 127;\n ++L;\n if (v <= 2097151)\n break sz;\n usz[L - 1] |= 128;\n usz[L] = v >> 21 & 127;\n ++L;\n if (v <= 268435455)\n break sz;\n usz[L - 1] |= 128;\n usz[L] = v / 256 >>> 21 & 127;\n ++L;\n if (v <= 34359738367)\n break sz;\n usz[L - 1] |= 128;\n usz[L] = v / 65536 >>> 21 & 127;\n ++L;\n if (v <= 4398046511103)\n break sz;\n usz[L - 1] |= 128;\n usz[L] = v / 16777216 >>> 21 & 127;\n ++L;\n }\n return usz.slice(0, L);\n}\nfunction varint_to_i32(buf) {\n var l = 0, i32 = buf[l] & 127;\n varint:\n if (buf[l++] >= 128) {\n i32 |= (buf[l] & 127) << 7;\n if (buf[l++] < 128)\n break varint;\n i32 |= (buf[l] & 127) << 14;\n if (buf[l++] < 128)\n break varint;\n i32 |= (buf[l] & 127) << 21;\n if (buf[l++] < 128)\n break varint;\n i32 |= (buf[l] & 127) << 28;\n }\n return i32;\n}\nfunction parse_shallow(buf) {\n var out = [], ptr = [0];\n while (ptr[0] < buf.length) {\n var off = ptr[0];\n var num = parse_varint49(buf, ptr);\n var type = num & 7;\n num = Math.floor(num / 8);\n var len = 0;\n var res;\n if (num == 0)\n break;\n switch (type) {\n case 0:\n {\n var l = ptr[0];\n while (buf[ptr[0]++] >= 128)\n ;\n res = buf.slice(l, ptr[0]);\n }\n break;\n case 5:\n len = 4;\n res = buf.slice(ptr[0], ptr[0] + len);\n ptr[0] += len;\n break;\n case 1:\n len = 8;\n res = buf.slice(ptr[0], ptr[0] + len);\n ptr[0] += len;\n break;\n case 2:\n len = parse_varint49(buf, ptr);\n res = buf.slice(ptr[0], ptr[0] + len);\n ptr[0] += len;\n break;\n case 3:\n case 4:\n default:\n throw new Error(\"PB Type \".concat(type, \" for Field \").concat(num, \" at offset \").concat(off));\n }\n var v = { data: res, type: type };\n if (out[num] == null)\n out[num] = [v];\n else\n out[num].push(v);\n }\n return out;\n}\nfunction write_shallow(proto) {\n var out = [];\n proto.forEach(function(field, idx) {\n field.forEach(function(item) {\n if (!item.data)\n return;\n out.push(write_varint49(idx * 8 + item.type));\n if (item.type == 2)\n out.push(write_varint49(item.data.length));\n out.push(item.data);\n });\n });\n return u8concat(out);\n}\nfunction mappa(data, cb) {\n return (data == null ? void 0 : data.map(function(d) {\n return cb(d.data);\n })) || [];\n}\nfunction parse_iwa_file(buf) {\n var _a;\n var out = [], ptr = [0];\n while (ptr[0] < buf.length) {\n var len = parse_varint49(buf, ptr);\n var ai = parse_shallow(buf.slice(ptr[0], ptr[0] + len));\n ptr[0] += len;\n var res = {\n id: varint_to_i32(ai[1][0].data),\n messages: []\n };\n ai[2].forEach(function(b) {\n var mi = parse_shallow(b.data);\n var fl = varint_to_i32(mi[3][0].data);\n res.messages.push({\n meta: mi,\n data: buf.slice(ptr[0], ptr[0] + fl)\n });\n ptr[0] += fl;\n });\n if ((_a = ai[3]) == null ? void 0 : _a[0])\n res.merge = varint_to_i32(ai[3][0].data) >>> 0 > 0;\n out.push(res);\n }\n return out;\n}\nfunction write_iwa_file(ias) {\n var bufs = [];\n ias.forEach(function(ia) {\n var ai = [];\n ai[1] = [{ data: write_varint49(ia.id), type: 0 }];\n ai[2] = [];\n if (ia.merge != null)\n ai[3] = [{ data: write_varint49(+!!ia.merge), type: 0 }];\n var midata = [];\n ia.messages.forEach(function(mi) {\n midata.push(mi.data);\n mi.meta[3] = [{ type: 0, data: write_varint49(mi.data.length) }];\n ai[2].push({ data: write_shallow(mi.meta), type: 2 });\n });\n var aipayload = write_shallow(ai);\n bufs.push(write_varint49(aipayload.length));\n bufs.push(aipayload);\n midata.forEach(function(mid) {\n return bufs.push(mid);\n });\n });\n return u8concat(bufs);\n}\nfunction parse_snappy_chunk(type, buf) {\n if (type != 0)\n throw new Error(\"Unexpected Snappy chunk type \".concat(type));\n var ptr = [0];\n var usz = parse_varint49(buf, ptr);\n var chunks = [];\n while (ptr[0] < buf.length) {\n var tag = buf[ptr[0]] & 3;\n if (tag == 0) {\n var len = buf[ptr[0]++] >> 2;\n if (len < 60)\n ++len;\n else {\n var c = len - 59;\n len = buf[ptr[0]];\n if (c > 1)\n len |= buf[ptr[0] + 1] << 8;\n if (c > 2)\n len |= buf[ptr[0] + 2] << 16;\n if (c > 3)\n len |= buf[ptr[0] + 3] << 24;\n len >>>= 0;\n len++;\n ptr[0] += c;\n }\n chunks.push(buf.slice(ptr[0], ptr[0] + len));\n ptr[0] += len;\n continue;\n } else {\n var offset = 0, length = 0;\n if (tag == 1) {\n length = (buf[ptr[0]] >> 2 & 7) + 4;\n offset = (buf[ptr[0]++] & 224) << 3;\n offset |= buf[ptr[0]++];\n } else {\n length = (buf[ptr[0]++] >> 2) + 1;\n if (tag == 2) {\n offset = buf[ptr[0]] | buf[ptr[0] + 1] << 8;\n ptr[0] += 2;\n } else {\n offset = (buf[ptr[0]] | buf[ptr[0] + 1] << 8 | buf[ptr[0] + 2] << 16 | buf[ptr[0] + 3] << 24) >>> 0;\n ptr[0] += 4;\n }\n }\n chunks = [u8concat(chunks)];\n if (offset == 0)\n throw new Error(\"Invalid offset 0\");\n if (offset > chunks[0].length)\n throw new Error(\"Invalid offset beyond length\");\n if (length >= offset) {\n chunks.push(chunks[0].slice(-offset));\n length -= offset;\n while (length >= chunks[chunks.length - 1].length) {\n chunks.push(chunks[chunks.length - 1]);\n length -= chunks[chunks.length - 1].length;\n }\n }\n chunks.push(chunks[0].slice(-offset, -offset + length));\n }\n }\n var o = u8concat(chunks);\n if (o.length != usz)\n throw new Error(\"Unexpected length: \".concat(o.length, \" != \").concat(usz));\n return o;\n}\nfunction decompress_iwa_file(buf) {\n var out = [];\n var l = 0;\n while (l < buf.length) {\n var t = buf[l++];\n var len = buf[l] | buf[l + 1] << 8 | buf[l + 2] << 16;\n l += 3;\n out.push(parse_snappy_chunk(t, buf.slice(l, l + len)));\n l += len;\n }\n if (l !== buf.length)\n throw new Error(\"data is not a valid framed stream!\");\n return u8concat(out);\n}\nfunction compress_iwa_file(buf) {\n var out = [];\n var l = 0;\n while (l < buf.length) {\n var c = Math.min(buf.length - l, 268435455);\n var frame = new Uint8Array(4);\n out.push(frame);\n var usz = write_varint49(c);\n var L = usz.length;\n out.push(usz);\n if (c <= 60) {\n L++;\n out.push(new Uint8Array([c - 1 << 2]));\n } else if (c <= 256) {\n L += 2;\n out.push(new Uint8Array([240, c - 1 & 255]));\n } else if (c <= 65536) {\n L += 3;\n out.push(new Uint8Array([244, c - 1 & 255, c - 1 >> 8 & 255]));\n } else if (c <= 16777216) {\n L += 4;\n out.push(new Uint8Array([248, c - 1 & 255, c - 1 >> 8 & 255, c - 1 >> 16 & 255]));\n } else if (c <= 4294967296) {\n L += 5;\n out.push(new Uint8Array([252, c - 1 & 255, c - 1 >> 8 & 255, c - 1 >> 16 & 255, c - 1 >>> 24 & 255]));\n }\n out.push(buf.slice(l, l + c));\n L += c;\n frame[0] = 0;\n frame[1] = L & 255;\n frame[2] = L >> 8 & 255;\n frame[3] = L >> 16 & 255;\n l += c;\n }\n return u8concat(out);\n}\nfunction parse_old_storage(buf, sst, rsst, v) {\n var dv = u8_to_dataview(buf);\n var flags = dv.getUint32(4, true);\n var data_offset = (v > 1 ? 12 : 8) + popcnt(flags & (v > 1 ? 3470 : 398)) * 4;\n var ridx = -1, sidx = -1, ieee = NaN, dt = new Date(2001, 0, 1);\n if (flags & 512) {\n ridx = dv.getUint32(data_offset, true);\n data_offset += 4;\n }\n data_offset += popcnt(flags & (v > 1 ? 12288 : 4096)) * 4;\n if (flags & 16) {\n sidx = dv.getUint32(data_offset, true);\n data_offset += 4;\n }\n if (flags & 32) {\n ieee = dv.getFloat64(data_offset, true);\n data_offset += 8;\n }\n if (flags & 64) {\n dt.setTime(dt.getTime() + dv.getFloat64(data_offset, true) * 1e3);\n data_offset += 8;\n }\n var ret;\n switch (buf[2]) {\n case 0:\n break;\n case 2:\n ret = { t: \"n\", v: ieee };\n break;\n case 3:\n ret = { t: \"s\", v: sst[sidx] };\n break;\n case 5:\n ret = { t: \"d\", v: dt };\n break;\n case 6:\n ret = { t: \"b\", v: ieee > 0 };\n break;\n case 7:\n ret = { t: \"n\", v: ieee / 86400 };\n break;\n case 8:\n ret = { t: \"e\", v: 0 };\n break;\n case 9:\n {\n if (ridx > -1)\n ret = { t: \"s\", v: rsst[ridx] };\n else if (sidx > -1)\n ret = { t: \"s\", v: sst[sidx] };\n else if (!isNaN(ieee))\n ret = { t: \"n\", v: ieee };\n else\n throw new Error(\"Unsupported cell type \".concat(buf.slice(0, 4)));\n }\n break;\n default:\n throw new Error(\"Unsupported cell type \".concat(buf.slice(0, 4)));\n }\n return ret;\n}\nfunction parse_new_storage(buf, sst, rsst) {\n var dv = u8_to_dataview(buf);\n var flags = dv.getUint32(8, true);\n var data_offset = 12;\n var ridx = -1, sidx = -1, d128 = NaN, ieee = NaN, dt = new Date(2001, 0, 1);\n if (flags & 1) {\n d128 = readDecimal128LE(buf, data_offset);\n data_offset += 16;\n }\n if (flags & 2) {\n ieee = dv.getFloat64(data_offset, true);\n data_offset += 8;\n }\n if (flags & 4) {\n dt.setTime(dt.getTime() + dv.getFloat64(data_offset, true) * 1e3);\n data_offset += 8;\n }\n if (flags & 8) {\n sidx = dv.getUint32(data_offset, true);\n data_offset += 4;\n }\n if (flags & 16) {\n ridx = dv.getUint32(data_offset, true);\n data_offset += 4;\n }\n var ret;\n switch (buf[1]) {\n case 0:\n break;\n case 2:\n ret = { t: \"n\", v: d128 };\n break;\n case 3:\n ret = { t: \"s\", v: sst[sidx] };\n break;\n case 5:\n ret = { t: \"d\", v: dt };\n break;\n case 6:\n ret = { t: \"b\", v: ieee > 0 };\n break;\n case 7:\n ret = { t: \"n\", v: ieee / 86400 };\n break;\n case 8:\n ret = { t: \"e\", v: 0 };\n break;\n case 9:\n {\n if (ridx > -1)\n ret = { t: \"s\", v: rsst[ridx] };\n else\n throw new Error(\"Unsupported cell type \".concat(buf[1], \" : \").concat(flags & 31, \" : \").concat(buf.slice(0, 4)));\n }\n break;\n case 10:\n ret = { t: \"n\", v: d128 };\n break;\n default:\n throw new Error(\"Unsupported cell type \".concat(buf[1], \" : \").concat(flags & 31, \" : \").concat(buf.slice(0, 4)));\n }\n return ret;\n}\nfunction write_new_storage(cell, sst) {\n var out = new Uint8Array(32), dv = u8_to_dataview(out), l = 12, flags = 0;\n out[0] = 5;\n switch (cell.t) {\n case \"n\":\n out[1] = 2;\n writeDecimal128LE(out, l, cell.v);\n flags |= 1;\n l += 16;\n break;\n case \"b\":\n out[1] = 6;\n dv.setFloat64(l, cell.v ? 1 : 0, true);\n flags |= 2;\n l += 8;\n break;\n case \"s\":\n if (sst.indexOf(cell.v) == -1)\n throw new Error(\"Value \".concat(cell.v, \" missing from SST!\"));\n out[1] = 3;\n dv.setUint32(l, sst.indexOf(cell.v), true);\n flags |= 8;\n l += 4;\n break;\n default:\n throw \"unsupported cell type \" + cell.t;\n }\n dv.setUint32(8, flags, true);\n return out.slice(0, l);\n}\nfunction write_old_storage(cell, sst) {\n var out = new Uint8Array(32), dv = u8_to_dataview(out), l = 12, flags = 0;\n out[0] = 3;\n switch (cell.t) {\n case \"n\":\n out[2] = 2;\n dv.setFloat64(l, cell.v, true);\n flags |= 32;\n l += 8;\n break;\n case \"b\":\n out[2] = 6;\n dv.setFloat64(l, cell.v ? 1 : 0, true);\n flags |= 32;\n l += 8;\n break;\n case \"s\":\n if (sst.indexOf(cell.v) == -1)\n throw new Error(\"Value \".concat(cell.v, \" missing from SST!\"));\n out[2] = 3;\n dv.setUint32(l, sst.indexOf(cell.v), true);\n flags |= 16;\n l += 4;\n break;\n default:\n throw \"unsupported cell type \" + cell.t;\n }\n dv.setUint32(4, flags, true);\n return out.slice(0, l);\n}\nfunction parse_cell_storage(buf, sst, rsst) {\n switch (buf[0]) {\n case 0:\n case 1:\n case 2:\n case 3:\n return parse_old_storage(buf, sst, rsst, buf[0]);\n case 5:\n return parse_new_storage(buf, sst, rsst);\n default:\n throw new Error(\"Unsupported payload version \".concat(buf[0]));\n }\n}\nfunction parse_TSP_Reference(buf) {\n var pb = parse_shallow(buf);\n return parse_varint49(pb[1][0].data);\n}\nfunction write_TSP_Reference(idx) {\n var out = [];\n out[1] = [{ type: 0, data: write_varint49(idx) }];\n return write_shallow(out);\n}\nfunction parse_TST_TableDataList(M, root) {\n var pb = parse_shallow(root.data);\n var type = varint_to_i32(pb[1][0].data);\n var entries = pb[3];\n var data = [];\n (entries || []).forEach(function(entry) {\n var le = parse_shallow(entry.data);\n var key = varint_to_i32(le[1][0].data) >>> 0;\n switch (type) {\n case 1:\n data[key] = u8str(le[3][0].data);\n break;\n case 8:\n {\n var rt = M[parse_TSP_Reference(le[9][0].data)][0];\n var rtp = parse_shallow(rt.data);\n var rtpref = M[parse_TSP_Reference(rtp[1][0].data)][0];\n var mtype = varint_to_i32(rtpref.meta[1][0].data);\n if (mtype != 2001)\n throw new Error(\"2000 unexpected reference to \".concat(mtype));\n var tswpsa = parse_shallow(rtpref.data);\n data[key] = tswpsa[3].map(function(x) {\n return u8str(x.data);\n }).join(\"\");\n }\n break;\n }\n });\n return data;\n}\nfunction parse_TST_TileRowInfo(u8, type) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n;\n var pb = parse_shallow(u8);\n var R = varint_to_i32(pb[1][0].data) >>> 0;\n var cnt = varint_to_i32(pb[2][0].data) >>> 0;\n var wide_offsets = ((_b = (_a = pb[8]) == null ? void 0 : _a[0]) == null ? void 0 : _b.data) && varint_to_i32(pb[8][0].data) > 0 || false;\n var used_storage_u8, used_storage;\n if (((_d = (_c = pb[7]) == null ? void 0 : _c[0]) == null ? void 0 : _d.data) && type != 0) {\n used_storage_u8 = (_f = (_e = pb[7]) == null ? void 0 : _e[0]) == null ? void 0 : _f.data;\n used_storage = (_h = (_g = pb[6]) == null ? void 0 : _g[0]) == null ? void 0 : _h.data;\n } else if (((_j = (_i = pb[4]) == null ? void 0 : _i[0]) == null ? void 0 : _j.data) && type != 1) {\n used_storage_u8 = (_l = (_k = pb[4]) == null ? void 0 : _k[0]) == null ? void 0 : _l.data;\n used_storage = (_n = (_m = pb[3]) == null ? void 0 : _m[0]) == null ? void 0 : _n.data;\n } else\n throw \"NUMBERS Tile missing \".concat(type, \" cell storage\");\n var width = wide_offsets ? 4 : 1;\n var used_storage_offsets = u8_to_dataview(used_storage_u8);\n var offsets = [];\n for (var C = 0; C < used_storage_u8.length / 2; ++C) {\n var off = used_storage_offsets.getUint16(C * 2, true);\n if (off < 65535)\n offsets.push([C, off]);\n }\n if (offsets.length != cnt)\n throw \"Expected \".concat(cnt, \" cells, found \").concat(offsets.length);\n var cells = [];\n for (C = 0; C < offsets.length - 1; ++C)\n cells[offsets[C][0]] = used_storage.subarray(offsets[C][1] * width, offsets[C + 1][1] * width);\n if (offsets.length >= 1)\n cells[offsets[offsets.length - 1][0]] = used_storage.subarray(offsets[offsets.length - 1][1] * width);\n return { R: R, cells: cells };\n}\nfunction parse_TST_Tile(M, root) {\n var _a;\n var pb = parse_shallow(root.data);\n var storage = ((_a = pb == null ? void 0 : pb[7]) == null ? void 0 : _a[0]) ? varint_to_i32(pb[7][0].data) >>> 0 > 0 ? 1 : 0 : -1;\n var ri = mappa(pb[5], function(u8) {\n return parse_TST_TileRowInfo(u8, storage);\n });\n return {\n nrows: varint_to_i32(pb[4][0].data) >>> 0,\n data: ri.reduce(function(acc, x) {\n if (!acc[x.R])\n acc[x.R] = [];\n x.cells.forEach(function(cell, C) {\n if (acc[x.R][C])\n throw new Error(\"Duplicate cell r=\".concat(x.R, \" c=\").concat(C));\n acc[x.R][C] = cell;\n });\n return acc;\n }, [])\n };\n}\nfunction parse_TST_TableModelArchive(M, root, ws) {\n var _a;\n var pb = parse_shallow(root.data);\n var range = { s: { r: 0, c: 0 }, e: { r: 0, c: 0 } };\n range.e.r = (varint_to_i32(pb[6][0].data) >>> 0) - 1;\n if (range.e.r < 0)\n throw new Error(\"Invalid row varint \".concat(pb[6][0].data));\n range.e.c = (varint_to_i32(pb[7][0].data) >>> 0) - 1;\n if (range.e.c < 0)\n throw new Error(\"Invalid col varint \".concat(pb[7][0].data));\n ws[\"!ref\"] = encode_range(range);\n var store = parse_shallow(pb[4][0].data);\n var sst = parse_TST_TableDataList(M, M[parse_TSP_Reference(store[4][0].data)][0]);\n var rsst = ((_a = store[17]) == null ? void 0 : _a[0]) ? parse_TST_TableDataList(M, M[parse_TSP_Reference(store[17][0].data)][0]) : [];\n var tile = parse_shallow(store[3][0].data);\n var _R = 0;\n tile[1].forEach(function(t) {\n var tl = parse_shallow(t.data);\n var ref = M[parse_TSP_Reference(tl[2][0].data)][0];\n var mtype = varint_to_i32(ref.meta[1][0].data);\n if (mtype != 6002)\n throw new Error(\"6001 unexpected reference to \".concat(mtype));\n var _tile = parse_TST_Tile(M, ref);\n _tile.data.forEach(function(row, R) {\n row.forEach(function(buf, C) {\n var addr = encode_cell({ r: _R + R, c: C });\n var res = parse_cell_storage(buf, sst, rsst);\n if (res)\n ws[addr] = res;\n });\n });\n _R += _tile.nrows;\n });\n}\nfunction parse_TST_TableInfoArchive(M, root) {\n var pb = parse_shallow(root.data);\n var out = { \"!ref\": \"A1\" };\n var tableref = M[parse_TSP_Reference(pb[2][0].data)];\n var mtype = varint_to_i32(tableref[0].meta[1][0].data);\n if (mtype != 6001)\n throw new Error(\"6000 unexpected reference to \".concat(mtype));\n parse_TST_TableModelArchive(M, tableref[0], out);\n return out;\n}\nfunction parse_TN_SheetArchive(M, root) {\n var _a;\n var pb = parse_shallow(root.data);\n var out = {\n name: ((_a = pb[1]) == null ? void 0 : _a[0]) ? u8str(pb[1][0].data) : \"\",\n sheets: []\n };\n var shapeoffs = mappa(pb[2], parse_TSP_Reference);\n shapeoffs.forEach(function(off) {\n M[off].forEach(function(m) {\n var mtype = varint_to_i32(m.meta[1][0].data);\n if (mtype == 6e3)\n out.sheets.push(parse_TST_TableInfoArchive(M, m));\n });\n });\n return out;\n}\nfunction parse_TN_DocumentArchive(M, root) {\n var out = book_new();\n var pb = parse_shallow(root.data);\n var sheetoffs = mappa(pb[1], parse_TSP_Reference);\n sheetoffs.forEach(function(off) {\n M[off].forEach(function(m) {\n var mtype = varint_to_i32(m.meta[1][0].data);\n if (mtype == 2) {\n var root2 = parse_TN_SheetArchive(M, m);\n root2.sheets.forEach(function(sheet, idx) {\n book_append_sheet(out, sheet, idx == 0 ? root2.name : root2.name + \"_\" + idx, true);\n });\n }\n });\n });\n if (out.SheetNames.length == 0)\n throw new Error(\"Empty NUMBERS file\");\n return out;\n}\nfunction parse_numbers_iwa(cfb) {\n var _a, _b, _c, _d;\n var M = {}, indices = [];\n cfb.FullPaths.forEach(function(p) {\n if (p.match(/\\.iwpv2/))\n throw new Error(\"Unsupported password protection\");\n });\n cfb.FileIndex.forEach(function(s) {\n if (!s.name.match(/\\.iwa$/))\n return;\n var o;\n try {\n o = decompress_iwa_file(s.content);\n } catch (e) {\n return console.log(\"?? \" + s.content.length + \" \" + (e.message || e));\n }\n var packets;\n try {\n packets = parse_iwa_file(o);\n } catch (e) {\n return console.log(\"## \" + (e.message || e));\n }\n packets.forEach(function(packet) {\n M[packet.id] = packet.messages;\n indices.push(packet.id);\n });\n });\n if (!indices.length)\n throw new Error(\"File has no messages\");\n var docroot = ((_d = (_c = (_b = (_a = M == null ? void 0 : M[1]) == null ? void 0 : _a[0]) == null ? void 0 : _b.meta) == null ? void 0 : _c[1]) == null ? void 0 : _d[0].data) && varint_to_i32(M[1][0].meta[1][0].data) == 1 && M[1][0];\n if (!docroot)\n indices.forEach(function(idx) {\n M[idx].forEach(function(iwam) {\n var mtype = varint_to_i32(iwam.meta[1][0].data) >>> 0;\n if (mtype == 1) {\n if (!docroot)\n docroot = iwam;\n else\n throw new Error(\"Document has multiple roots\");\n }\n });\n });\n if (!docroot)\n throw new Error(\"Cannot find Document root\");\n return parse_TN_DocumentArchive(M, docroot);\n}\nfunction write_tile_row(tri, data, SST) {\n var _a, _b, _c, _d;\n if (!((_a = tri[6]) == null ? void 0 : _a[0]) || !((_b = tri[7]) == null ? void 0 : _b[0]))\n throw \"Mutation only works on post-BNC storages!\";\n var wide_offsets = ((_d = (_c = tri[8]) == null ? void 0 : _c[0]) == null ? void 0 : _d.data) && varint_to_i32(tri[8][0].data) > 0 || false;\n if (wide_offsets)\n throw \"Math only works with normal offsets\";\n var cnt = 0;\n var dv = u8_to_dataview(tri[7][0].data), last_offset = 0, cell_storage = [];\n var _dv = u8_to_dataview(tri[4][0].data), _last_offset = 0, _cell_storage = [];\n for (var C = 0; C < data.length; ++C) {\n if (data[C] == null) {\n dv.setUint16(C * 2, 65535, true);\n _dv.setUint16(C * 2, 65535);\n continue;\n }\n dv.setUint16(C * 2, last_offset, true);\n _dv.setUint16(C * 2, _last_offset, true);\n var celload, _celload;\n switch (typeof data[C]) {\n case \"string\":\n celload = write_new_storage({ t: \"s\", v: data[C] }, SST);\n _celload = write_old_storage({ t: \"s\", v: data[C] }, SST);\n break;\n case \"number\":\n celload = write_new_storage({ t: \"n\", v: data[C] }, SST);\n _celload = write_old_storage({ t: \"n\", v: data[C] }, SST);\n break;\n case \"boolean\":\n celload = write_new_storage({ t: \"b\", v: data[C] }, SST);\n _celload = write_old_storage({ t: \"b\", v: data[C] }, SST);\n break;\n default:\n throw new Error(\"Unsupported value \" + data[C]);\n }\n cell_storage.push(celload);\n last_offset += celload.length;\n _cell_storage.push(_celload);\n _last_offset += _celload.length;\n ++cnt;\n }\n tri[2][0].data = write_varint49(cnt);\n for (; C < tri[7][0].data.length / 2; ++C) {\n dv.setUint16(C * 2, 65535, true);\n _dv.setUint16(C * 2, 65535, true);\n }\n tri[6][0].data = u8concat(cell_storage);\n tri[3][0].data = u8concat(_cell_storage);\n return cnt;\n}\nfunction write_numbers_iwa(wb, opts) {\n if (!opts || !opts.numbers)\n throw new Error(\"Must pass a `numbers` option -- check the README\");\n var ws = wb.Sheets[wb.SheetNames[0]];\n if (wb.SheetNames.length > 1)\n console.error(\"The Numbers writer currently writes only the first table\");\n var range = decode_range(ws[\"!ref\"]);\n range.s.r = range.s.c = 0;\n var trunc = false;\n if (range.e.c > 9) {\n trunc = true;\n range.e.c = 9;\n }\n if (range.e.r > 49) {\n trunc = true;\n range.e.r = 49;\n }\n if (trunc)\n console.error(\"The Numbers writer is currently limited to \".concat(encode_range(range)));\n var data = sheet_to_json(ws, { range: range, header: 1 });\n var SST = [\"~Sh33tJ5~\"];\n data.forEach(function(row) {\n return row.forEach(function(cell) {\n if (typeof cell == \"string\")\n SST.push(cell);\n });\n });\n var dependents = {};\n var indices = [];\n var cfb = CFB.read(opts.numbers, { type: \"base64\" });\n cfb.FileIndex.map(function(fi, idx) {\n return [fi, cfb.FullPaths[idx]];\n }).forEach(function(row) {\n var fi = row[0], fp = row[1];\n if (fi.type != 2)\n return;\n if (!fi.name.match(/\\.iwa/))\n return;\n var old_content = fi.content;\n var raw1 = decompress_iwa_file(old_content);\n var x2 = parse_iwa_file(raw1);\n x2.forEach(function(packet2) {\n indices.push(packet2.id);\n dependents[packet2.id] = { deps: [], location: fp, type: varint_to_i32(packet2.messages[0].meta[1][0].data) };\n });\n });\n indices.sort(function(x2, y2) {\n return x2 - y2;\n });\n var indices_varint = indices.filter(function(x2) {\n return x2 > 1;\n }).map(function(x2) {\n return [x2, write_varint49(x2)];\n });\n cfb.FileIndex.map(function(fi, idx) {\n return [fi, cfb.FullPaths[idx]];\n }).forEach(function(row) {\n var fi = row[0], fp = row[1];\n if (!fi.name.match(/\\.iwa/))\n return;\n var x2 = parse_iwa_file(decompress_iwa_file(fi.content));\n x2.forEach(function(ia) {\n ia.messages.forEach(function(m) {\n indices_varint.forEach(function(ivi) {\n if (ia.messages.some(function(mess) {\n return varint_to_i32(mess.meta[1][0].data) != 11006 && u8contains(mess.data, ivi[1]);\n })) {\n dependents[ivi[0]].deps.push(ia.id);\n }\n });\n });\n });\n });\n function get_unique_msgid() {\n for (var i = 927262; i < 2e6; ++i)\n if (!dependents[i])\n return i;\n throw new Error(\"Too many messages\");\n }\n var entry = CFB.find(cfb, dependents[1].location);\n var x = parse_iwa_file(decompress_iwa_file(entry.content));\n var docroot;\n for (var xi = 0; xi < x.length; ++xi) {\n var packet = x[xi];\n if (packet.id == 1)\n docroot = packet;\n }\n var sheetrootref = parse_TSP_Reference(parse_shallow(docroot.messages[0].data)[1][0].data);\n entry = CFB.find(cfb, dependents[sheetrootref].location);\n x = parse_iwa_file(decompress_iwa_file(entry.content));\n for (xi = 0; xi < x.length; ++xi) {\n packet = x[xi];\n if (packet.id == sheetrootref)\n docroot = packet;\n }\n sheetrootref = parse_TSP_Reference(parse_shallow(docroot.messages[0].data)[2][0].data);\n entry = CFB.find(cfb, dependents[sheetrootref].location);\n x = parse_iwa_file(decompress_iwa_file(entry.content));\n for (xi = 0; xi < x.length; ++xi) {\n packet = x[xi];\n if (packet.id == sheetrootref)\n docroot = packet;\n }\n sheetrootref = parse_TSP_Reference(parse_shallow(docroot.messages[0].data)[2][0].data);\n entry = CFB.find(cfb, dependents[sheetrootref].location);\n x = parse_iwa_file(decompress_iwa_file(entry.content));\n for (xi = 0; xi < x.length; ++xi) {\n packet = x[xi];\n if (packet.id == sheetrootref)\n docroot = packet;\n }\n var pb = parse_shallow(docroot.messages[0].data);\n {\n pb[6][0].data = write_varint49(range.e.r + 1);\n pb[7][0].data = write_varint49(range.e.c + 1);\n var cruidsref = parse_TSP_Reference(pb[46][0].data);\n var oldbucket = CFB.find(cfb, dependents[cruidsref].location);\n var _x = parse_iwa_file(decompress_iwa_file(oldbucket.content));\n {\n for (var j = 0; j < _x.length; ++j) {\n if (_x[j].id == cruidsref)\n break;\n }\n if (_x[j].id != cruidsref)\n throw \"Bad ColumnRowUIDMapArchive\";\n var cruids = parse_shallow(_x[j].messages[0].data);\n cruids[1] = [];\n cruids[2] = [], cruids[3] = [];\n for (var C = 0; C <= range.e.c; ++C) {\n var uuid = [];\n uuid[1] = uuid[2] = [{ type: 0, data: write_varint49(C + 420690) }];\n cruids[1].push({ type: 2, data: write_shallow(uuid) });\n cruids[2].push({ type: 0, data: write_varint49(C) });\n cruids[3].push({ type: 0, data: write_varint49(C) });\n }\n cruids[4] = [];\n cruids[5] = [], cruids[6] = [];\n for (var R = 0; R <= range.e.r; ++R) {\n uuid = [];\n uuid[1] = uuid[2] = [{ type: 0, data: write_varint49(R + 726270) }];\n cruids[4].push({ type: 2, data: write_shallow(uuid) });\n cruids[5].push({ type: 0, data: write_varint49(R) });\n cruids[6].push({ type: 0, data: write_varint49(R) });\n }\n _x[j].messages[0].data = write_shallow(cruids);\n }\n oldbucket.content = compress_iwa_file(write_iwa_file(_x));\n oldbucket.size = oldbucket.content.length;\n delete pb[46];\n var store = parse_shallow(pb[4][0].data);\n {\n store[7][0].data = write_varint49(range.e.r + 1);\n var row_headers = parse_shallow(store[1][0].data);\n var row_header_ref = parse_TSP_Reference(row_headers[2][0].data);\n oldbucket = CFB.find(cfb, dependents[row_header_ref].location);\n _x = parse_iwa_file(decompress_iwa_file(oldbucket.content));\n {\n if (_x[0].id != row_header_ref)\n throw \"Bad HeaderStorageBucket\";\n var base_bucket = parse_shallow(_x[0].messages[0].data);\n for (R = 0; R < data.length; ++R) {\n var _bucket = parse_shallow(base_bucket[2][0].data);\n _bucket[1][0].data = write_varint49(R);\n _bucket[4][0].data = write_varint49(data[R].length);\n base_bucket[2][R] = { type: base_bucket[2][0].type, data: write_shallow(_bucket) };\n }\n _x[0].messages[0].data = write_shallow(base_bucket);\n }\n oldbucket.content = compress_iwa_file(write_iwa_file(_x));\n oldbucket.size = oldbucket.content.length;\n var col_header_ref = parse_TSP_Reference(store[2][0].data);\n oldbucket = CFB.find(cfb, dependents[col_header_ref].location);\n _x = parse_iwa_file(decompress_iwa_file(oldbucket.content));\n {\n if (_x[0].id != col_header_ref)\n throw \"Bad HeaderStorageBucket\";\n base_bucket = parse_shallow(_x[0].messages[0].data);\n for (C = 0; C <= range.e.c; ++C) {\n _bucket = parse_shallow(base_bucket[2][0].data);\n _bucket[1][0].data = write_varint49(C);\n _bucket[4][0].data = write_varint49(range.e.r + 1);\n base_bucket[2][C] = { type: base_bucket[2][0].type, data: write_shallow(_bucket) };\n }\n _x[0].messages[0].data = write_shallow(base_bucket);\n }\n oldbucket.content = compress_iwa_file(write_iwa_file(_x));\n oldbucket.size = oldbucket.content.length;\n var sstref = parse_TSP_Reference(store[4][0].data);\n (function() {\n var sentry = CFB.find(cfb, dependents[sstref].location);\n var sx = parse_iwa_file(decompress_iwa_file(sentry.content));\n var sstroot;\n for (var sxi = 0; sxi < sx.length; ++sxi) {\n var packet2 = sx[sxi];\n if (packet2.id == sstref)\n sstroot = packet2;\n }\n var sstdata = parse_shallow(sstroot.messages[0].data);\n {\n sstdata[3] = [];\n var newsst = [];\n SST.forEach(function(str, i) {\n newsst[1] = [{ type: 0, data: write_varint49(i) }];\n newsst[2] = [{ type: 0, data: write_varint49(1) }];\n newsst[3] = [{ type: 2, data: stru8(str) }];\n sstdata[3].push({ type: 2, data: write_shallow(newsst) });\n });\n }\n sstroot.messages[0].data = write_shallow(sstdata);\n var sy = write_iwa_file(sx);\n var raw32 = compress_iwa_file(sy);\n sentry.content = raw32;\n sentry.size = sentry.content.length;\n })();\n var tile = parse_shallow(store[3][0].data);\n {\n var t = tile[1][0];\n delete tile[2];\n var tl = parse_shallow(t.data);\n {\n var tileref = parse_TSP_Reference(tl[2][0].data);\n (function() {\n var tentry = CFB.find(cfb, dependents[tileref].location);\n var tx = parse_iwa_file(decompress_iwa_file(tentry.content));\n var tileroot;\n for (var sxi = 0; sxi < tx.length; ++sxi) {\n var packet2 = tx[sxi];\n if (packet2.id == tileref)\n tileroot = packet2;\n }\n var tiledata = parse_shallow(tileroot.messages[0].data);\n {\n delete tiledata[6];\n delete tile[7];\n var rowload = new Uint8Array(tiledata[5][0].data);\n tiledata[5] = [];\n var cnt = 0;\n for (var R2 = 0; R2 <= range.e.r; ++R2) {\n var tilerow = parse_shallow(rowload);\n cnt += write_tile_row(tilerow, data[R2], SST);\n tilerow[1][0].data = write_varint49(R2);\n tiledata[5].push({ data: write_shallow(tilerow), type: 2 });\n }\n tiledata[1] = [{ type: 0, data: write_varint49(range.e.c + 1) }];\n tiledata[2] = [{ type: 0, data: write_varint49(range.e.r + 1) }];\n tiledata[3] = [{ type: 0, data: write_varint49(cnt) }];\n tiledata[4] = [{ type: 0, data: write_varint49(range.e.r + 1) }];\n }\n tileroot.messages[0].data = write_shallow(tiledata);\n var ty = write_iwa_file(tx);\n var raw32 = compress_iwa_file(ty);\n tentry.content = raw32;\n tentry.size = tentry.content.length;\n })();\n }\n t.data = write_shallow(tl);\n }\n store[3][0].data = write_shallow(tile);\n }\n pb[4][0].data = write_shallow(store);\n }\n docroot.messages[0].data = write_shallow(pb);\n var y = write_iwa_file(x);\n var raw3 = compress_iwa_file(y);\n entry.content = raw3;\n entry.size = entry.content.length;\n return cfb;\n}\nfunction fix_opts_func(defaults/*:Array >*/)/*:{(o:any):void}*/ {\n\treturn function fix_opts(opts) {\n\t\tfor(var i = 0; i != defaults.length; ++i) {\n\t\t\tvar d = defaults[i];\n\t\t\tif(opts[d[0]] === undefined) opts[d[0]] = d[1];\n\t\t\tif(d[2] === 'n') opts[d[0]] = Number(opts[d[0]]);\n\t\t}\n\t};\n}\n\nfunction fix_read_opts(opts) {\nfix_opts_func([\n\t['cellNF', false], /* emit cell number format string as .z */\n\t['cellHTML', true], /* emit html string as .h */\n\t['cellFormula', true], /* emit formulae as .f */\n\t['cellStyles', false], /* emits style/theme as .s */\n\t['cellText', true], /* emit formatted text as .w */\n\t['cellDates', false], /* emit date cells with type `d` */\n\n\t['sheetStubs', false], /* emit empty cells */\n\t['sheetRows', 0, 'n'], /* read n rows (0 = read all rows) */\n\n\t['bookDeps', false], /* parse calculation chains */\n\t['bookSheets', false], /* only try to get sheet names (no Sheets) */\n\t['bookProps', false], /* only try to get properties (no Sheets) */\n\t['bookFiles', false], /* include raw file structure (keys, files, cfb) */\n\t['bookVBA', false], /* include vba raw data (vbaraw) */\n\n\t['password',''], /* password */\n\t['WTF', false] /* WTF mode (throws errors) */\n])(opts);\n}\n\nfunction fix_write_opts(opts) {\nfix_opts_func([\n\t['cellDates', false], /* write date cells with type `d` */\n\n\t['bookSST', false], /* Generate Shared String Table */\n\n\t['bookType', 'xlsx'], /* Type of workbook (xlsx/m/b) */\n\n\t['compression', false], /* Use file compression */\n\n\t['WTF', false] /* WTF mode (throws errors) */\n])(opts);\n}\nfunction get_sheet_type(n/*:string*/)/*:string*/ {\n\tif(RELS.WS.indexOf(n) > -1) return \"sheet\";\n\tif(RELS.CS && n == RELS.CS) return \"chart\";\n\tif(RELS.DS && n == RELS.DS) return \"dialog\";\n\tif(RELS.MS && n == RELS.MS) return \"macro\";\n\treturn (n && n.length) ? n : \"sheet\";\n}\nfunction safe_parse_wbrels(wbrels, sheets) {\n\tif(!wbrels) return 0;\n\ttry {\n\t\twbrels = sheets.map(function pwbr(w) { if(!w.id) w.id = w.strRelID; return [w.name, wbrels['!id'][w.id].Target, get_sheet_type(wbrels['!id'][w.id].Type)]; });\n\t} catch(e) { return null; }\n\treturn !wbrels || wbrels.length === 0 ? null : wbrels;\n}\n\nfunction safe_parse_sheet(zip, path/*:string*/, relsPath/*:string*/, sheet, idx/*:number*/, sheetRels, sheets, stype/*:string*/, opts, wb, themes, styles) {\n\ttry {\n\t\tsheetRels[sheet]=parse_rels(getzipstr(zip, relsPath, true), path);\n\t\tvar data = getzipdata(zip, path);\n\t\tvar _ws;\n\t\tswitch(stype) {\n\t\t\tcase 'sheet': _ws = parse_ws(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break;\n\t\t\tcase 'chart': _ws = parse_cs(data, path, idx, opts, sheetRels[sheet], wb, themes, styles);\n\t\t\t\tif(!_ws || !_ws['!drawel']) break;\n\t\t\t\tvar dfile = resolve_path(_ws['!drawel'].Target, path);\n\t\t\t\tvar drelsp = get_rels_path(dfile);\n\t\t\t\tvar draw = parse_drawing(getzipstr(zip, dfile, true), parse_rels(getzipstr(zip, drelsp, true), dfile));\n\t\t\t\tvar chartp = resolve_path(draw, dfile);\n\t\t\t\tvar crelsp = get_rels_path(chartp);\n\t\t\t\t_ws = parse_chart(getzipstr(zip, chartp, true), chartp, opts, parse_rels(getzipstr(zip, crelsp, true), chartp), wb, _ws);\n\t\t\t\tbreak;\n\t\t\tcase 'macro': _ws = parse_ms(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break;\n\t\t\tcase 'dialog': _ws = parse_ds(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break;\n\t\t\tdefault: throw new Error(\"Unrecognized sheet type \" + stype);\n\t\t}\n\t\tsheets[sheet] = _ws;\n\n\t\t/* scan rels for comments and threaded comments */\n\t\tvar tcomments = [];\n\t\tif(sheetRels && sheetRels[sheet]) keys(sheetRels[sheet]).forEach(function(n) {\n\t\t\tvar dfile = \"\";\n\t\t\tif(sheetRels[sheet][n].Type == RELS.CMNT) {\n\t\t\t\tdfile = resolve_path(sheetRels[sheet][n].Target, path);\n\t\t\t\tvar comments = parse_cmnt(getzipdata(zip, dfile, true), dfile, opts);\n\t\t\t\tif(!comments || !comments.length) return;\n\t\t\t\tsheet_insert_comments(_ws, comments, false);\n\t\t\t}\n\t\t\tif(sheetRels[sheet][n].Type == RELS.TCMNT) {\n\t\t\t\tdfile = resolve_path(sheetRels[sheet][n].Target, path);\n\t\t\t\ttcomments = tcomments.concat(parse_tcmnt_xml(getzipdata(zip, dfile, true), opts));\n\t\t\t}\n\t\t});\n\t\tif(tcomments && tcomments.length) sheet_insert_comments(_ws, tcomments, true, opts.people || []);\n\t} catch(e) { if(opts.WTF) throw e; }\n}\n\nfunction strip_front_slash(x/*:string*/)/*:string*/ { return x.charAt(0) == '/' ? x.slice(1) : x; }\n\nfunction parse_zip(zip/*:ZIP*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tmake_ssf();\n\topts = opts || {};\n\tfix_read_opts(opts);\n\n\t/* OpenDocument Part 3 Section 2.2.1 OpenDocument Package */\n\tif(safegetzipfile(zip, 'META-INF/manifest.xml')) return parse_ods(zip, opts);\n\t/* UOC */\n\tif(safegetzipfile(zip, 'objectdata.xml')) return parse_ods(zip, opts);\n\t/* Numbers */\n\tif(safegetzipfile(zip, 'Index/Document.iwa')) {\n\t\tif(typeof Uint8Array == \"undefined\") throw new Error('NUMBERS file parsing requires Uint8Array support');\n\t\tif(typeof parse_numbers_iwa != \"undefined\") {\n\t\t\tif(zip.FileIndex) return parse_numbers_iwa(zip);\n\t\t\tvar _zip = CFB.utils.cfb_new();\n\t\t\tzipentries(zip).forEach(function(e) { zip_add_file(_zip, e, getzipbin(zip, e)); });\n\t\t\treturn parse_numbers_iwa(_zip);\n\t\t}\n\t\tthrow new Error('Unsupported NUMBERS file');\n\t}\n\tif(!safegetzipfile(zip, '[Content_Types].xml')) {\n\t\tif(safegetzipfile(zip, 'index.xml.gz')) throw new Error('Unsupported NUMBERS 08 file');\n\t\tif(safegetzipfile(zip, 'index.xml')) throw new Error('Unsupported NUMBERS 09 file');\n\t\tthrow new Error('Unsupported ZIP file');\n\t}\n\n\tvar entries = zipentries(zip);\n\tvar dir = parse_ct((getzipstr(zip, '[Content_Types].xml')/*:?any*/));\n\tvar xlsb = false;\n\tvar sheets, binname;\n\tif(dir.workbooks.length === 0) {\n\t\tbinname = \"xl/workbook.xml\";\n\t\tif(getzipdata(zip,binname, true)) dir.workbooks.push(binname);\n\t}\n\tif(dir.workbooks.length === 0) {\n\t\tbinname = \"xl/workbook.bin\";\n\t\tif(!getzipdata(zip,binname,true)) throw new Error(\"Could not find workbook\");\n\t\tdir.workbooks.push(binname);\n\t\txlsb = true;\n\t}\n\tif(dir.workbooks[0].slice(-3) == \"bin\") xlsb = true;\n\n\tvar themes = ({}/*:any*/);\n\tvar styles = ({}/*:any*/);\n\tif(!opts.bookSheets && !opts.bookProps) {\n\t\tstrs = [];\n\t\tif(dir.sst) try { strs=parse_sst(getzipdata(zip, strip_front_slash(dir.sst)), dir.sst, opts); } catch(e) { if(opts.WTF) throw e; }\n\n\t\tif(opts.cellStyles && dir.themes.length) themes = parse_theme(getzipstr(zip, dir.themes[0].replace(/^\\//,''), true)||\"\",dir.themes[0], opts);\n\n\t\tif(dir.style) styles = parse_sty(getzipdata(zip, strip_front_slash(dir.style)), dir.style, themes, opts);\n\t}\n\n\t/*var externbooks = */dir.links.map(function(link) {\n\t\ttry {\n\t\t\tvar rels = parse_rels(getzipstr(zip, get_rels_path(strip_front_slash(link))), link);\n\t\t\treturn parse_xlink(getzipdata(zip, strip_front_slash(link)), rels, link, opts);\n\t\t} catch(e) {}\n\t});\n\n\tvar wb = parse_wb(getzipdata(zip, strip_front_slash(dir.workbooks[0])), dir.workbooks[0], opts);\n\n\tvar props = {}, propdata = \"\";\n\n\tif(dir.coreprops.length) {\n\t\tpropdata = getzipdata(zip, strip_front_slash(dir.coreprops[0]), true);\n\t\tif(propdata) props = parse_core_props(propdata);\n\t\tif(dir.extprops.length !== 0) {\n\t\t\tpropdata = getzipdata(zip, strip_front_slash(dir.extprops[0]), true);\n\t\t\tif(propdata) parse_ext_props(propdata, props, opts);\n\t\t}\n\t}\n\n\tvar custprops = {};\n\tif(!opts.bookSheets || opts.bookProps) {\n\t\tif (dir.custprops.length !== 0) {\n\t\t\tpropdata = getzipstr(zip, strip_front_slash(dir.custprops[0]), true);\n\t\t\tif(propdata) custprops = parse_cust_props(propdata, opts);\n\t\t}\n\t}\n\n\tvar out = ({}/*:any*/);\n\tif(opts.bookSheets || opts.bookProps) {\n\t\tif(wb.Sheets) sheets = wb.Sheets.map(function pluck(x){ return x.name; });\n\t\telse if(props.Worksheets && props.SheetNames.length > 0) sheets=props.SheetNames;\n\t\tif(opts.bookProps) { out.Props = props; out.Custprops = custprops; }\n\t\tif(opts.bookSheets && typeof sheets !== 'undefined') out.SheetNames = sheets;\n\t\tif(opts.bookSheets ? out.SheetNames : opts.bookProps) return out;\n\t}\n\tsheets = {};\n\n\tvar deps = {};\n\tif(opts.bookDeps && dir.calcchain) deps=parse_cc(getzipdata(zip, strip_front_slash(dir.calcchain)),dir.calcchain,opts);\n\n\tvar i=0;\n\tvar sheetRels = ({}/*:any*/);\n\tvar path, relsPath;\n\n\t{\n\t\tvar wbsheets = wb.Sheets;\n\t\tprops.Worksheets = wbsheets.length;\n\t\tprops.SheetNames = [];\n\t\tfor(var j = 0; j != wbsheets.length; ++j) {\n\t\t\tprops.SheetNames[j] = wbsheets[j].name;\n\t\t}\n\t}\n\n\tvar wbext = xlsb ? \"bin\" : \"xml\";\n\tvar wbrelsi = dir.workbooks[0].lastIndexOf(\"/\");\n\tvar wbrelsfile = (dir.workbooks[0].slice(0, wbrelsi+1) + \"_rels/\" + dir.workbooks[0].slice(wbrelsi+1) + \".rels\").replace(/^\\//,\"\");\n\tif(!safegetzipfile(zip, wbrelsfile)) wbrelsfile = 'xl/_rels/workbook.' + wbext + '.rels';\n\tvar wbrels = parse_rels(getzipstr(zip, wbrelsfile, true), wbrelsfile.replace(/_rels.*/, \"s5s\"));\n\n\tif((dir.metadata || []).length >= 1) {\n\t\t/* TODO: MDX and other types of metadata */\n\t\topts.xlmeta = parse_xlmeta(getzipdata(zip, strip_front_slash(dir.metadata[0])),dir.metadata[0],opts);\n\t}\n\n\tif((dir.people || []).length >= 1) {\n\t\topts.people = parse_people_xml(getzipdata(zip, strip_front_slash(dir.people[0])),opts);\n\t}\n\n\tif(wbrels) wbrels = safe_parse_wbrels(wbrels, wb.Sheets);\n\n\t/* Numbers iOS hack */\n\tvar nmode = (getzipdata(zip,\"xl/worksheets/sheet.xml\",true))?1:0;\n\twsloop: for(i = 0; i != props.Worksheets; ++i) {\n\t\tvar stype = \"sheet\";\n\t\tif(wbrels && wbrels[i]) {\n\t\t\tpath = 'xl/' + (wbrels[i][1]).replace(/[\\/]?xl\\//, \"\");\n\t\t\tif(!safegetzipfile(zip, path)) path = wbrels[i][1];\n\t\t\tif(!safegetzipfile(zip, path)) path = wbrelsfile.replace(/_rels\\/.*$/,\"\") + wbrels[i][1];\n\t\t\tstype = wbrels[i][2];\n\t\t} else {\n\t\t\tpath = 'xl/worksheets/sheet'+(i+1-nmode)+\".\" + wbext;\n\t\t\tpath = path.replace(/sheet0\\./,\"sheet.\");\n\t\t}\n\t\trelsPath = path.replace(/^(.*)(\\/)([^\\/]*)$/, \"$1/_rels/$3.rels\");\n\t\tif(opts && opts.sheets != null) switch(typeof opts.sheets) {\n\t\t\tcase \"number\": if(i != opts.sheets) continue wsloop; break;\n\t\t\tcase \"string\": if(props.SheetNames[i].toLowerCase() != opts.sheets.toLowerCase()) continue wsloop; break;\n\t\t\tdefault: if(Array.isArray && Array.isArray(opts.sheets)) {\n\t\t\t\tvar snjseen = false;\n\t\t\t\tfor(var snj = 0; snj != opts.sheets.length; ++snj) {\n\t\t\t\t\tif(typeof opts.sheets[snj] == \"number\" && opts.sheets[snj] == i) snjseen=1;\n\t\t\t\t\tif(typeof opts.sheets[snj] == \"string\" && opts.sheets[snj].toLowerCase() == props.SheetNames[i].toLowerCase()) snjseen = 1;\n\t\t\t\t}\n\t\t\t\tif(!snjseen) continue wsloop;\n\t\t\t}\n\t\t}\n\t\tsafe_parse_sheet(zip, path, relsPath, props.SheetNames[i], i, sheetRels, sheets, stype, opts, wb, themes, styles);\n\t}\n\n\tout = ({\n\t\tDirectory: dir,\n\t\tWorkbook: wb,\n\t\tProps: props,\n\t\tCustprops: custprops,\n\t\tDeps: deps,\n\t\tSheets: sheets,\n\t\tSheetNames: props.SheetNames,\n\t\tStrings: strs,\n\t\tStyles: styles,\n\t\tThemes: themes,\n\t\tSSF: dup(table_fmt)\n\t}/*:any*/);\n\tif(opts && opts.bookFiles) {\n\t\tif(zip.files) {\n\t\t\tout.keys = entries;\n\t\t\tout.files = zip.files;\n\t\t} else {\n\t\t\tout.keys = [];\n\t\t\tout.files = {};\n\t\t\tzip.FullPaths.forEach(function(p, idx) {\n\t\t\t\tp = p.replace(/^Root Entry[\\/]/, \"\");\n\t\t\t\tout.keys.push(p);\n\t\t\t\tout.files[p] = zip.FileIndex[idx];\n\t\t\t});\n\t\t}\n\t}\n\tif(opts && opts.bookVBA) {\n\t\tif(dir.vba.length > 0) out.vbaraw = getzipdata(zip,strip_front_slash(dir.vba[0]),true);\n\t\telse if(dir.defaults && dir.defaults.bin === CT_VBA) out.vbaraw = getzipdata(zip, 'xl/vbaProject.bin',true);\n\t}\n\treturn out;\n}\n\n/* [MS-OFFCRYPTO] 2.1.1 */\nfunction parse_xlsxcfb(cfb, _opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tvar opts = _opts || {};\n\tvar f = 'Workbook', data = CFB.find(cfb, f);\n\ttry {\n\tf = '/!DataSpaces/Version';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\t/*var version = */parse_DataSpaceVersionInfo(data.content);\n\n\t/* 2.3.4.1 */\n\tf = '/!DataSpaces/DataSpaceMap';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\tvar dsm = parse_DataSpaceMap(data.content);\n\tif(dsm.length !== 1 || dsm[0].comps.length !== 1 || dsm[0].comps[0].t !== 0 || dsm[0].name !== \"StrongEncryptionDataSpace\" || dsm[0].comps[0].v !== \"EncryptedPackage\")\n\t\tthrow new Error(\"ECMA-376 Encrypted file bad \" + f);\n\n\t/* 2.3.4.2 */\n\tf = '/!DataSpaces/DataSpaceInfo/StrongEncryptionDataSpace';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\tvar seds = parse_DataSpaceDefinition(data.content);\n\tif(seds.length != 1 || seds[0] != \"StrongEncryptionTransform\")\n\t\tthrow new Error(\"ECMA-376 Encrypted file bad \" + f);\n\n\t/* 2.3.4.3 */\n\tf = '/!DataSpaces/TransformInfo/StrongEncryptionTransform/!Primary';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\t/*var hdr = */parse_Primary(data.content);\n\t} catch(e) {}\n\n\tf = '/EncryptionInfo';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\tvar einfo = parse_EncryptionInfo(data.content);\n\n\t/* 2.3.4.4 */\n\tf = '/EncryptedPackage';\n\tdata = CFB.find(cfb, f); if(!data || !data.content) throw new Error(\"ECMA-376 Encrypted file missing \" + f);\n\n/*global decrypt_agile */\n/*:: declare var decrypt_agile:any; */\n\tif(einfo[0] == 0x04 && typeof decrypt_agile !== 'undefined') return decrypt_agile(einfo[1], data.content, opts.password || \"\", opts);\n/*global decrypt_std76 */\n/*:: declare var decrypt_std76:any; */\n\tif(einfo[0] == 0x02 && typeof decrypt_std76 !== 'undefined') return decrypt_std76(einfo[1], data.content, opts.password || \"\", opts);\n\tthrow new Error(\"File is password-protected\");\n}\n\nfunction write_zip(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:ZIP*/ {\n\tif(opts.bookType == \"ods\") return write_ods(wb, opts);\n\tif(opts.bookType == \"numbers\") return write_numbers_iwa(wb, opts);\n\tif(opts.bookType == \"xlsb\") return write_zip_xlsxb(wb, opts);\n\treturn write_zip_xlsx(wb, opts);\n}\n\n/* XLSX and XLSB writing are very similar. Originally they were unified in one\n export function. This is horrible for tree shaking in the common case (most\n applications need to export files in one format) so this function supports\n both formats while write_zip_xlsx only handles XLSX */\nfunction write_zip_xlsxb(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:ZIP*/ {\n\t_shapeid = 1024;\n\tif(wb && !wb.SSF) {\n\t\twb.SSF = dup(table_fmt);\n\t}\n\tif(wb && wb.SSF) {\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\topts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0;\n\t\topts.ssf = wb.SSF;\n\t}\n\topts.rels = {}; opts.wbrels = {};\n\topts.Strings = /*::((*/[]/*:: :any):SST)*/; opts.Strings.Count = 0; opts.Strings.Unique = 0;\n\tif(browser_has_Map) opts.revStrings = new Map();\n\telse { opts.revStrings = {}; opts.revStrings.foo = []; delete opts.revStrings.foo; }\n\tvar wbext = opts.bookType == \"xlsb\" ? \"bin\" : \"xml\";\n\tvar vbafmt = VBAFMTS.indexOf(opts.bookType) > -1;\n\tvar ct = new_ct();\n\tfix_write_opts(opts = opts || {});\n\tvar zip = zip_new();\n\tvar f = \"\", rId = 0;\n\n\topts.cellXfs = [];\n\tget_cell_style(opts.cellXfs, {}, {revssf:{\"General\":0}});\n\n\tif(!wb.Props) wb.Props = {};\n\n\tf = \"docProps/core.xml\";\n\tzip_add_file(zip, f, write_core_props(wb.Props, opts));\n\tct.coreprops.push(f);\n\tadd_rels(opts.rels, 2, f, RELS.CORE_PROPS);\n\n\t/*::if(!wb.Props) throw \"unreachable\"; */\n\tf = \"docProps/app.xml\";\n\tif(wb.Props && wb.Props.SheetNames){/* empty */}\n\telse if(!wb.Workbook || !wb.Workbook.Sheets) wb.Props.SheetNames = wb.SheetNames;\n\telse {\n\t\tvar _sn = [];\n\t\tfor(var _i = 0; _i < wb.SheetNames.length; ++_i)\n\t\t\tif((wb.Workbook.Sheets[_i]||{}).Hidden != 2) _sn.push(wb.SheetNames[_i]);\n\t\twb.Props.SheetNames = _sn;\n\t}\n\twb.Props.Worksheets = wb.Props.SheetNames.length;\n\tzip_add_file(zip, f, write_ext_props(wb.Props, opts));\n\tct.extprops.push(f);\n\tadd_rels(opts.rels, 3, f, RELS.EXT_PROPS);\n\n\tif(wb.Custprops !== wb.Props && keys(wb.Custprops||{}).length > 0) {\n\t\tf = \"docProps/custom.xml\";\n\t\tzip_add_file(zip, f, write_cust_props(wb.Custprops, opts));\n\t\tct.custprops.push(f);\n\t\tadd_rels(opts.rels, 4, f, RELS.CUST_PROPS);\n\t}\n\n\tfor(rId=1;rId <= wb.SheetNames.length; ++rId) {\n\t\tvar wsrels = {'!id':{}};\n\t\tvar ws = wb.Sheets[wb.SheetNames[rId-1]];\n\t\tvar _type = (ws || {})[\"!type\"] || \"sheet\";\n\t\tswitch(_type) {\n\t\tcase \"chart\":\n\t\t\t/* falls through */\n\t\tdefault:\n\t\t\tf = \"xl/worksheets/sheet\" + rId + \".\" + wbext;\n\t\t\tzip_add_file(zip, f, write_ws(rId-1, f, opts, wb, wsrels));\n\t\t\tct.sheets.push(f);\n\t\t\tadd_rels(opts.wbrels, -1, \"worksheets/sheet\" + rId + \".\" + wbext, RELS.WS[0]);\n\t\t}\n\n\t\tif(ws) {\n\t\t\tvar comments = ws['!comments'];\n\t\t\tvar need_vml = false;\n\t\t\tvar cf = \"\";\n\t\t\tif(comments && comments.length > 0) {\n\t\t\t\tcf = \"xl/comments\" + rId + \".\" + wbext;\n\t\t\t\tzip_add_file(zip, cf, write_cmnt(comments, cf, opts));\n\t\t\t\tct.comments.push(cf);\n\t\t\t\tadd_rels(wsrels, -1, \"../comments\" + rId + \".\" + wbext, RELS.CMNT);\n\t\t\t\tneed_vml = true;\n\t\t\t}\n\t\t\tif(ws['!legacy']) {\n\t\t\t\tif(need_vml) zip_add_file(zip, \"xl/drawings/vmlDrawing\" + (rId) + \".vml\", write_comments_vml(rId, ws['!comments']));\n\t\t\t}\n\t\t\tdelete ws['!comments'];\n\t\t\tdelete ws['!legacy'];\n\t\t}\n\n\t\tif(wsrels['!id'].rId1) zip_add_file(zip, get_rels_path(f), write_rels(wsrels));\n\t}\n\n\tif(opts.Strings != null && opts.Strings.length > 0) {\n\t\tf = \"xl/sharedStrings.\" + wbext;\n\t\tzip_add_file(zip, f, write_sst(opts.Strings, f, opts));\n\t\tct.strs.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"sharedStrings.\" + wbext, RELS.SST);\n\t}\n\n\tf = \"xl/workbook.\" + wbext;\n\tzip_add_file(zip, f, write_wb(wb, f, opts));\n\tct.workbooks.push(f);\n\tadd_rels(opts.rels, 1, f, RELS.WB);\n\n\t/* TODO: something more intelligent with themes */\n\n\tf = \"xl/theme/theme1.xml\";\n\tzip_add_file(zip, f, write_theme(wb.Themes, opts));\n\tct.themes.push(f);\n\tadd_rels(opts.wbrels, -1, \"theme/theme1.xml\", RELS.THEME);\n\n\t/* TODO: something more intelligent with styles */\n\n\tf = \"xl/styles.\" + wbext;\n\tzip_add_file(zip, f, write_sty(wb, f, opts));\n\tct.styles.push(f);\n\tadd_rels(opts.wbrels, -1, \"styles.\" + wbext, RELS.STY);\n\n\tif(wb.vbaraw && vbafmt) {\n\t\tf = \"xl/vbaProject.bin\";\n\t\tzip_add_file(zip, f, wb.vbaraw);\n\t\tct.vba.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"vbaProject.bin\", RELS.VBA);\n\t}\n\n\tf = \"xl/metadata.\" + wbext;\n\tzip_add_file(zip, f, write_xlmeta(f));\n\tct.metadata.push(f);\n\tadd_rels(opts.wbrels, -1, \"metadata.\" + wbext, RELS.XLMETA);\n\n\tzip_add_file(zip, \"[Content_Types].xml\", write_ct(ct, opts));\n\tzip_add_file(zip, '_rels/.rels', write_rels(opts.rels));\n\tzip_add_file(zip, 'xl/_rels/workbook.' + wbext + '.rels', write_rels(opts.wbrels));\n\n\tdelete opts.revssf; delete opts.ssf;\n\treturn zip;\n}\n\nfunction write_zip_xlsx(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:ZIP*/ {\n\t_shapeid = 1024;\n\tif(wb && !wb.SSF) {\n\t\twb.SSF = dup(table_fmt);\n\t}\n\tif(wb && wb.SSF) {\n\t\tmake_ssf(); SSF_load_table(wb.SSF);\n\t\t// $FlowIgnore\n\t\topts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0;\n\t\topts.ssf = wb.SSF;\n\t}\n\topts.rels = {}; opts.wbrels = {};\n\topts.Strings = /*::((*/[]/*:: :any):SST)*/; opts.Strings.Count = 0; opts.Strings.Unique = 0;\n\tif(browser_has_Map) opts.revStrings = new Map();\n\telse { opts.revStrings = {}; opts.revStrings.foo = []; delete opts.revStrings.foo; }\n\tvar wbext = \"xml\";\n\tvar vbafmt = VBAFMTS.indexOf(opts.bookType) > -1;\n\tvar ct = new_ct();\n\tfix_write_opts(opts = opts || {});\n\tvar zip = zip_new();\n\tvar f = \"\", rId = 0;\n\n\topts.cellXfs = [];\n\tget_cell_style(opts.cellXfs, {}, {revssf:{\"General\":0}});\n\n\tif(!wb.Props) wb.Props = {};\n\n\tf = \"docProps/core.xml\";\n\tzip_add_file(zip, f, write_core_props(wb.Props, opts));\n\tct.coreprops.push(f);\n\tadd_rels(opts.rels, 2, f, RELS.CORE_PROPS);\n\n\t/*::if(!wb.Props) throw \"unreachable\"; */\n\tf = \"docProps/app.xml\";\n\tif(wb.Props && wb.Props.SheetNames){/* empty */}\n\telse if(!wb.Workbook || !wb.Workbook.Sheets) wb.Props.SheetNames = wb.SheetNames;\n\telse {\n\t\tvar _sn = [];\n\t\tfor(var _i = 0; _i < wb.SheetNames.length; ++_i)\n\t\t\tif((wb.Workbook.Sheets[_i]||{}).Hidden != 2) _sn.push(wb.SheetNames[_i]);\n\t\twb.Props.SheetNames = _sn;\n\t}\n\twb.Props.Worksheets = wb.Props.SheetNames.length;\n\tzip_add_file(zip, f, write_ext_props(wb.Props, opts));\n\tct.extprops.push(f);\n\tadd_rels(opts.rels, 3, f, RELS.EXT_PROPS);\n\n\tif(wb.Custprops !== wb.Props && keys(wb.Custprops||{}).length > 0) {\n\t\tf = \"docProps/custom.xml\";\n\t\tzip_add_file(zip, f, write_cust_props(wb.Custprops, opts));\n\t\tct.custprops.push(f);\n\t\tadd_rels(opts.rels, 4, f, RELS.CUST_PROPS);\n\t}\n\n\tvar people = [\"SheetJ5\"];\n\topts.tcid = 0;\n\n\tfor(rId=1;rId <= wb.SheetNames.length; ++rId) {\n\t\tvar wsrels = {'!id':{}};\n\t\tvar ws = wb.Sheets[wb.SheetNames[rId-1]];\n\t\tvar _type = (ws || {})[\"!type\"] || \"sheet\";\n\t\tswitch(_type) {\n\t\tcase \"chart\":\n\t\t\t/* falls through */\n\t\tdefault:\n\t\t\tf = \"xl/worksheets/sheet\" + rId + \".\" + wbext;\n\t\t\tzip_add_file(zip, f, write_ws_xml(rId-1, opts, wb, wsrels));\n\t\t\tct.sheets.push(f);\n\t\t\tadd_rels(opts.wbrels, -1, \"worksheets/sheet\" + rId + \".\" + wbext, RELS.WS[0]);\n\t\t}\n\n\t\tif(ws) {\n\t\t\tvar comments = ws['!comments'];\n\t\t\tvar need_vml = false;\n\t\t\tvar cf = \"\";\n\t\t\tif(comments && comments.length > 0) {\n\t\t\t\tvar needtc = false;\n\t\t\t\tcomments.forEach(function(carr) {\n\t\t\t\t\tcarr[1].forEach(function(c) { if(c.T == true) needtc = true; });\n\t\t\t\t});\n\t\t\t\tif(needtc) {\n\t\t\t\t\tcf = \"xl/threadedComments/threadedComment\" + rId + \".\" + wbext;\n\t\t\t\t\tzip_add_file(zip, cf, write_tcmnt_xml(comments, people, opts));\n\t\t\t\t\tct.threadedcomments.push(cf);\n\t\t\t\t\tadd_rels(wsrels, -1, \"../threadedComments/threadedComment\" + rId + \".\" + wbext, RELS.TCMNT);\n\t\t\t\t}\n\n\t\t\t\tcf = \"xl/comments\" + rId + \".\" + wbext;\n\t\t\t\tzip_add_file(zip, cf, write_comments_xml(comments, opts));\n\t\t\t\tct.comments.push(cf);\n\t\t\t\tadd_rels(wsrels, -1, \"../comments\" + rId + \".\" + wbext, RELS.CMNT);\n\t\t\t\tneed_vml = true;\n\t\t\t}\n\t\t\tif(ws['!legacy']) {\n\t\t\t\tif(need_vml) zip_add_file(zip, \"xl/drawings/vmlDrawing\" + (rId) + \".vml\", write_comments_vml(rId, ws['!comments']));\n\t\t\t}\n\t\t\tdelete ws['!comments'];\n\t\t\tdelete ws['!legacy'];\n\t\t}\n\n\t\tif(wsrels['!id'].rId1) zip_add_file(zip, get_rels_path(f), write_rels(wsrels));\n\t}\n\n\tif(opts.Strings != null && opts.Strings.length > 0) {\n\t\tf = \"xl/sharedStrings.\" + wbext;\n\t\tzip_add_file(zip, f, write_sst_xml(opts.Strings, opts));\n\t\tct.strs.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"sharedStrings.\" + wbext, RELS.SST);\n\t}\n\n\tf = \"xl/workbook.\" + wbext;\n\tzip_add_file(zip, f, write_wb_xml(wb, opts));\n\tct.workbooks.push(f);\n\tadd_rels(opts.rels, 1, f, RELS.WB);\n\n\t/* TODO: something more intelligent with themes */\n\n\tf = \"xl/theme/theme1.xml\";\n\tzip_add_file(zip, f, write_theme(wb.Themes, opts));\n\tct.themes.push(f);\n\tadd_rels(opts.wbrels, -1, \"theme/theme1.xml\", RELS.THEME);\n\n\t/* TODO: something more intelligent with styles */\n\n\tf = \"xl/styles.\" + wbext;\n\tzip_add_file(zip, f, write_sty_xml(wb, opts));\n\tct.styles.push(f);\n\tadd_rels(opts.wbrels, -1, \"styles.\" + wbext, RELS.STY);\n\n\tif(wb.vbaraw && vbafmt) {\n\t\tf = \"xl/vbaProject.bin\";\n\t\tzip_add_file(zip, f, wb.vbaraw);\n\t\tct.vba.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"vbaProject.bin\", RELS.VBA);\n\t}\n\n\tf = \"xl/metadata.\" + wbext;\n\tzip_add_file(zip, f, write_xlmeta_xml());\n\tct.metadata.push(f);\n\tadd_rels(opts.wbrels, -1, \"metadata.\" + wbext, RELS.XLMETA);\n\n\tif(people.length > 1) {\n\t\tf = \"xl/persons/person.xml\";\n\t\tzip_add_file(zip, f, write_people_xml(people, opts));\n\t\tct.people.push(f);\n\t\tadd_rels(opts.wbrels, -1, \"persons/person.xml\", RELS.PEOPLE);\n\t}\n\n\tzip_add_file(zip, \"[Content_Types].xml\", write_ct(ct, opts));\n\tzip_add_file(zip, '_rels/.rels', write_rels(opts.rels));\n\tzip_add_file(zip, 'xl/_rels/workbook.' + wbext + '.rels', write_rels(opts.wbrels));\n\n\tdelete opts.revssf; delete opts.ssf;\n\treturn zip;\n}\n\nfunction firstbyte(f/*:RawData*/,o/*:?TypeOpts*/)/*:Array*/ {\n\tvar x = \"\";\n\tswitch((o||{}).type || \"base64\") {\n\t\tcase 'buffer': return [f[0], f[1], f[2], f[3], f[4], f[5], f[6], f[7]];\n\t\tcase 'base64': x = Base64_decode(f.slice(0,12)); break;\n\t\tcase 'binary': x = f; break;\n\t\tcase 'array': return [f[0], f[1], f[2], f[3], f[4], f[5], f[6], f[7]];\n\t\tdefault: throw new Error(\"Unrecognized type \" + (o && o.type || \"undefined\"));\n\t}\n\treturn [x.charCodeAt(0), x.charCodeAt(1), x.charCodeAt(2), x.charCodeAt(3), x.charCodeAt(4), x.charCodeAt(5), x.charCodeAt(6), x.charCodeAt(7)];\n}\n\nfunction read_cfb(cfb/*:CFBContainer*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tif(CFB.find(cfb, \"EncryptedPackage\")) return parse_xlsxcfb(cfb, opts);\n\treturn parse_xlscfb(cfb, opts);\n}\n\nfunction read_zip(data/*:RawData*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tvar zip, d = data;\n\tvar o = opts||{};\n\tif(!o.type) o.type = (has_buf && Buffer.isBuffer(data)) ? \"buffer\" : \"base64\";\n\tzip = zip_read(d, o);\n\treturn parse_zip(zip, o);\n}\n\nfunction read_plaintext(data/*:string*/, o/*:ParseOpts*/)/*:Workbook*/ {\n\tvar i = 0;\n\tmain: while(i < data.length) switch(data.charCodeAt(i)) {\n\t\tcase 0x0A: case 0x0D: case 0x20: ++i; break;\n\t\tcase 0x3C: return parse_xlml(data.slice(i),o);\n\t\tdefault: break main;\n\t}\n\treturn PRN.to_workbook(data, o);\n}\n\nfunction read_plaintext_raw(data/*:RawData*/, o/*:ParseOpts*/)/*:Workbook*/ {\n\tvar str = \"\", bytes = firstbyte(data, o);\n\tswitch(o.type) {\n\t\tcase 'base64': str = Base64_decode(data); break;\n\t\tcase 'binary': str = data; break;\n\t\tcase 'buffer': str = data.toString('binary'); break;\n\t\tcase 'array': str = cc2str(data); break;\n\t\tdefault: throw new Error(\"Unrecognized type \" + o.type);\n\t}\n\tif(bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) str = utf8read(str);\n\to.type = \"binary\";\n\treturn read_plaintext(str, o);\n}\n\nfunction read_utf16(data/*:RawData*/, o/*:ParseOpts*/)/*:Workbook*/ {\n\tvar d = data;\n\tif(o.type == 'base64') d = Base64_decode(d);\n\td = $cptable.utils.decode(1200, d.slice(2), 'str');\n\to.type = \"binary\";\n\treturn read_plaintext(d, o);\n}\n\nfunction bstrify(data/*:string*/)/*:string*/ {\n\treturn !data.match(/[^\\x00-\\x7F]/) ? data : utf8write(data);\n}\n\nfunction read_prn(data, d, o, str) {\n\tif(str) { o.type = \"string\"; return PRN.to_workbook(data, o); }\n\treturn PRN.to_workbook(d, o);\n}\n\nfunction readSync(data/*:RawData*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\treset_cp();\n\tvar o = opts||{};\n\tif(typeof ArrayBuffer !== 'undefined' && data instanceof ArrayBuffer) return readSync(new Uint8Array(data), (o = dup(o), o.type = \"array\", o));\n\tif(typeof Uint8Array !== 'undefined' && data instanceof Uint8Array && !o.type) o.type = typeof Deno !== \"undefined\" ? \"buffer\" : \"array\";\n\tvar d = data, n = [0,0,0,0], str = false;\n\tif(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; }\n\t_ssfopts = {};\n\tif(o.dateNF) _ssfopts.dateNF = o.dateNF;\n\tif(!o.type) o.type = (has_buf && Buffer.isBuffer(data)) ? \"buffer\" : \"base64\";\n\tif(o.type == \"file\") { o.type = has_buf ? \"buffer\" : \"binary\"; d = read_binary(data); if(typeof Uint8Array !== 'undefined' && !has_buf) o.type = \"array\"; }\n\tif(o.type == \"string\") { str = true; o.type = \"binary\"; o.codepage = 65001; d = bstrify(data); }\n\tif(o.type == 'array' && typeof Uint8Array !== 'undefined' && data instanceof Uint8Array && typeof ArrayBuffer !== 'undefined') {\n\t\t// $FlowIgnore\n\t\tvar ab=new ArrayBuffer(3), vu=new Uint8Array(ab); vu.foo=\"bar\";\n\t\t// $FlowIgnore\n\t\tif(!vu.foo) {o=dup(o); o.type='array'; return readSync(ab2a(d), o);}\n\t}\n\tswitch((n = firstbyte(d, o))[0]) {\n\t\tcase 0xD0: if(n[1] === 0xCF && n[2] === 0x11 && n[3] === 0xE0 && n[4] === 0xA1 && n[5] === 0xB1 && n[6] === 0x1A && n[7] === 0xE1) return read_cfb(CFB.read(d, o), o); break;\n\t\tcase 0x09: if(n[1] <= 0x08) return parse_xlscfb(d, o); break;\n\t\tcase 0x3C: return parse_xlml(d, o);\n\t\tcase 0x49:\n\t\t\tif(n[1] === 0x49 && n[2] === 0x2a && n[3] === 0x00) throw new Error(\"TIFF Image File is not a spreadsheet\");\n\t\t\tif(n[1] === 0x44) return read_wb_ID(d, o);\n\t\t\tbreak;\n\t\tcase 0x54: if(n[1] === 0x41 && n[2] === 0x42 && n[3] === 0x4C) return DIF.to_workbook(d, o); break;\n\t\tcase 0x50: return (n[1] === 0x4B && n[2] < 0x09 && n[3] < 0x09) ? read_zip(d, o) : read_prn(data, d, o, str);\n\t\tcase 0xEF: return n[3] === 0x3C ? parse_xlml(d, o) : read_prn(data, d, o, str);\n\t\tcase 0xFF:\n\t\t\tif(n[1] === 0xFE) { return read_utf16(d, o); }\n\t\t\telse if(n[1] === 0x00 && n[2] === 0x02 && n[3] === 0x00) return WK_.to_workbook(d, o);\n\t\t\tbreak;\n\t\tcase 0x00:\n\t\t\tif(n[1] === 0x00) {\n\t\t\t\tif(n[2] >= 0x02 && n[3] === 0x00) return WK_.to_workbook(d, o);\n\t\t\t\tif(n[2] === 0x00 && (n[3] === 0x08 || n[3] === 0x09)) return WK_.to_workbook(d, o);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase 0x03: case 0x83: case 0x8B: case 0x8C: return DBF.to_workbook(d, o);\n\t\tcase 0x7B: if(n[1] === 0x5C && n[2] === 0x72 && n[3] === 0x74) return RTF.to_workbook(d, o); break;\n\t\tcase 0x0A: case 0x0D: case 0x20: return read_plaintext_raw(d, o);\n\t\tcase 0x89: if(n[1] === 0x50 && n[2] === 0x4E && n[3] === 0x47) throw new Error(\"PNG Image File is not a spreadsheet\"); break;\n\t}\n\tif(DBF_SUPPORTED_VERSIONS.indexOf(n[0]) > -1 && n[2] <= 12 && n[3] <= 31) return DBF.to_workbook(d, o);\n\treturn read_prn(data, d, o, str);\n}\n\nfunction readFileSync(filename/*:string*/, opts/*:?ParseOpts*/)/*:Workbook*/ {\n\tvar o = opts||{}; o.type = 'file';\n\treturn readSync(filename, o);\n}\nfunction write_cfb_ctr(cfb/*:CFBContainer*/, o/*:WriteOpts*/)/*:any*/ {\n\tswitch(o.type) {\n\t\tcase \"base64\": case \"binary\": break;\n\t\tcase \"buffer\": case \"array\": o.type = \"\"; break;\n\t\tcase \"file\": return write_dl(o.file, CFB.write(cfb, {type:has_buf ? 'buffer' : \"\"}));\n\t\tcase \"string\": throw new Error(\"'string' output type invalid for '\" + o.bookType + \"' files\");\n\t\tdefault: throw new Error(\"Unrecognized type \" + o.type);\n\t}\n\treturn CFB.write(cfb, o);\n}\n\n/*:: declare var encrypt_agile:any; */\nfunction write_zip_type(wb/*:Workbook*/, opts/*:?WriteOpts*/)/*:any*/ {\n\tvar o = dup(opts||{});\n\tvar z = write_zip(wb, o);\n\treturn write_zip_denouement(z, o);\n}\nfunction write_zip_typeXLSX(wb/*:Workbook*/, opts/*:?WriteOpts*/)/*:any*/ {\n\tvar o = dup(opts||{});\n\tvar z = write_zip_xlsx(wb, o);\n\treturn write_zip_denouement(z, o);\n}\nfunction write_zip_denouement(z/*:any*/, o/*:?WriteOpts*/)/*:any*/ {\n\tvar oopts = {};\n\tvar ftype = has_buf ? \"nodebuffer\" : (typeof Uint8Array !== \"undefined\" ? \"array\" : \"string\");\n\tif(o.compression) oopts.compression = 'DEFLATE';\n\tif(o.password) oopts.type = ftype;\n\telse switch(o.type) {\n\t\tcase \"base64\": oopts.type = \"base64\"; break;\n\t\tcase \"binary\": oopts.type = \"string\"; break;\n\t\tcase \"string\": throw new Error(\"'string' output type invalid for '\" + o.bookType + \"' files\");\n\t\tcase \"buffer\":\n\t\tcase \"file\": oopts.type = ftype; break;\n\t\tdefault: throw new Error(\"Unrecognized type \" + o.type);\n\t}\n\tvar out = z.FullPaths ? CFB.write(z, {fileType:\"zip\", type: /*::(*/{\"nodebuffer\": \"buffer\", \"string\": \"binary\"}/*:: :any)*/[oopts.type] || oopts.type, compression: !!o.compression}) : z.generate(oopts);\n\tif(typeof Deno !== \"undefined\") {\n\t\tif(typeof out == \"string\") {\n\t\t\tif(o.type == \"binary\" || o.type == \"base64\") return out;\n\t\t\tout = new Uint8Array(s2ab(out));\n\t\t}\n\t}\n/*jshint -W083 */\n\tif(o.password && typeof encrypt_agile !== 'undefined') return write_cfb_ctr(encrypt_agile(out, o.password), o); // eslint-disable-line no-undef\n/*jshint +W083 */\n\tif(o.type === \"file\") return write_dl(o.file, out);\n\treturn o.type == \"string\" ? utf8read(/*::(*/out/*:: :any)*/) : out;\n}\n\nfunction write_cfb_type(wb/*:Workbook*/, opts/*:?WriteOpts*/)/*:any*/ {\n\tvar o = opts||{};\n\tvar cfb/*:CFBContainer*/ = write_xlscfb(wb, o);\n\treturn write_cfb_ctr(cfb, o);\n}\n\nfunction write_string_type(out/*:string*/, opts/*:WriteOpts*/, bom/*:?string*/)/*:any*/ {\n\tif(!bom) bom = \"\";\n\tvar o = bom + out;\n\tswitch(opts.type) {\n\t\tcase \"base64\": return Base64_encode(utf8write(o));\n\t\tcase \"binary\": return utf8write(o);\n\t\tcase \"string\": return out;\n\t\tcase \"file\": return write_dl(opts.file, o, 'utf8');\n\t\tcase \"buffer\": {\n\t\t\tif(has_buf) return Buffer_from(o, 'utf8');\n\t\t\telse if(typeof TextEncoder !== \"undefined\") return new TextEncoder().encode(o);\n\t\t\telse return write_string_type(o, {type:'binary'}).split(\"\").map(function(c) { return c.charCodeAt(0); });\n\t\t}\n\t}\n\tthrow new Error(\"Unrecognized type \" + opts.type);\n}\n\nfunction write_stxt_type(out/*:string*/, opts/*:WriteOpts*/)/*:any*/ {\n\tswitch(opts.type) {\n\t\tcase \"base64\": return Base64_encode(out);\n\t\tcase \"binary\": return out;\n\t\tcase \"string\": return out; /* override in sheet_to_txt */\n\t\tcase \"file\": return write_dl(opts.file, out, 'binary');\n\t\tcase \"buffer\": {\n\t\t\tif(has_buf) return Buffer_from(out, 'binary');\n\t\t\telse return out.split(\"\").map(function(c) { return c.charCodeAt(0); });\n\t\t}\n\t}\n\tthrow new Error(\"Unrecognized type \" + opts.type);\n}\n\n/* TODO: test consistency */\nfunction write_binary_type(out, opts/*:WriteOpts*/)/*:any*/ {\n\tswitch(opts.type) {\n\t\tcase \"string\":\n\t\tcase \"base64\":\n\t\tcase \"binary\":\n\t\t\tvar bstr = \"\";\n\t\t\t// $FlowIgnore\n\t\t\tfor(var i = 0; i < out.length; ++i) bstr += String.fromCharCode(out[i]);\n\t\t\treturn opts.type == 'base64' ? Base64_encode(bstr) : opts.type == 'string' ? utf8read(bstr) : bstr;\n\t\tcase \"file\": return write_dl(opts.file, out);\n\t\tcase \"buffer\": return out;\n\t\tdefault: throw new Error(\"Unrecognized type \" + opts.type);\n\t}\n}\n\nfunction writeSyncXLSX(wb/*:Workbook*/, opts/*:?WriteOpts*/) {\n\treset_cp();\n\tcheck_wb(wb);\n\tvar o = dup(opts||{});\n\tif(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; }\n\tif(o.type == \"array\") { o.type = \"binary\"; var out/*:string*/ = (writeSyncXLSX(wb, o)/*:any*/); o.type = \"array\"; return s2ab(out); }\n\treturn write_zip_typeXLSX(wb, o);\n}\n\nfunction writeSync(wb/*:Workbook*/, opts/*:?WriteOpts*/) {\n\treset_cp();\n\tcheck_wb(wb);\n\tvar o = dup(opts||{});\n\tif(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; }\n\tif(o.type == \"array\") { o.type = \"binary\"; var out/*:string*/ = (writeSync(wb, o)/*:any*/); o.type = \"array\"; return s2ab(out); }\n\tvar idx = 0;\n\tif(o.sheet) {\n\t\tif(typeof o.sheet == \"number\") idx = o.sheet;\n\t\telse idx = wb.SheetNames.indexOf(o.sheet);\n\t\tif(!wb.SheetNames[idx]) throw new Error(\"Sheet not found: \" + o.sheet + \" : \" + (typeof o.sheet));\n\t}\n\tswitch(o.bookType || 'xlsb') {\n\t\tcase 'xml':\n\t\tcase 'xlml': return write_string_type(write_xlml(wb, o), o);\n\t\tcase 'slk':\n\t\tcase 'sylk': return write_string_type(SYLK.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'htm':\n\t\tcase 'html': return write_string_type(sheet_to_html(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'txt': return write_stxt_type(sheet_to_txt(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'csv': return write_string_type(sheet_to_csv(wb.Sheets[wb.SheetNames[idx]], o), o, \"\\ufeff\");\n\t\tcase 'dif': return write_string_type(DIF.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'dbf': return write_binary_type(DBF.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'prn': return write_string_type(PRN.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'rtf': return write_string_type(RTF.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'eth': return write_string_type(ETH.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'fods': return write_string_type(write_ods(wb, o), o);\n\t\tcase 'wk1': return write_binary_type(WK_.sheet_to_wk1(wb.Sheets[wb.SheetNames[idx]], o), o);\n\t\tcase 'wk3': return write_binary_type(WK_.book_to_wk3(wb, o), o);\n\t\tcase 'biff2': if(!o.biff) o.biff = 2; /* falls through */\n\t\tcase 'biff3': if(!o.biff) o.biff = 3; /* falls through */\n\t\tcase 'biff4': if(!o.biff) o.biff = 4; return write_binary_type(write_biff_buf(wb, o), o);\n\t\tcase 'biff5': if(!o.biff) o.biff = 5; /* falls through */\n\t\tcase 'biff8':\n\t\tcase 'xla':\n\t\tcase 'xls': if(!o.biff) o.biff = 8; return write_cfb_type(wb, o);\n\t\tcase 'xlsx':\n\t\tcase 'xlsm':\n\t\tcase 'xlam':\n\t\tcase 'xlsb':\n\t\tcase 'numbers':\n\t\tcase 'ods': return write_zip_type(wb, o);\n\t\tdefault: throw new Error (\"Unrecognized bookType |\" + o.bookType + \"|\");\n\t}\n}\n\nfunction resolve_book_type(o/*:WriteFileOpts*/) {\n\tif(o.bookType) return;\n\tvar _BT = {\n\t\t\"xls\": \"biff8\",\n\t\t\"htm\": \"html\",\n\t\t\"slk\": \"sylk\",\n\t\t\"socialcalc\": \"eth\",\n\t\t\"Sh33tJS\": \"WTF\"\n\t};\n\tvar ext = o.file.slice(o.file.lastIndexOf(\".\")).toLowerCase();\n\tif(ext.match(/^\\.[a-z]+$/)) o.bookType = ext.slice(1);\n\to.bookType = _BT[o.bookType] || o.bookType;\n}\n\nfunction writeFileSync(wb/*:Workbook*/, filename/*:string*/, opts/*:?WriteFileOpts*/) {\n\tvar o = opts||{}; o.type = 'file';\n\to.file = filename;\n\tresolve_book_type(o);\n\treturn writeSync(wb, o);\n}\n\nfunction writeFileSyncXLSX(wb/*:Workbook*/, filename/*:string*/, opts/*:?WriteFileOpts*/) {\n\tvar o = opts||{}; o.type = 'file';\n\to.file = filename;\n\tresolve_book_type(o);\n\treturn writeSyncXLSX(wb, o);\n}\n\n\nfunction writeFileAsync(filename/*:string*/, wb/*:Workbook*/, opts/*:?WriteFileOpts*/, cb/*:?(e?:ErrnoError)=>void*/) {\n\tvar o = opts||{}; o.type = 'file';\n\to.file = filename;\n\tresolve_book_type(o);\n\to.type = 'buffer';\n\tvar _cb = cb; if(!(_cb instanceof Function)) _cb = (opts/*:any*/);\n\treturn _fs.writeFile(filename, writeSync(wb, o), _cb);\n}\n/*::\ntype MJRObject = {\n\trow: any;\n\tisempty: boolean;\n};\n*/\nfunction make_json_row(sheet/*:Worksheet*/, r/*:Range*/, R/*:number*/, cols/*:Array*/, header/*:number*/, hdr/*:Array*/, dense/*:boolean*/, o/*:Sheet2JSONOpts*/)/*:MJRObject*/ {\n\tvar rr = encode_row(R);\n\tvar defval = o.defval, raw = o.raw || !Object.prototype.hasOwnProperty.call(o, \"raw\");\n\tvar isempty = true;\n\tvar row/*:any*/ = (header === 1) ? [] : {};\n\tif(header !== 1) {\n\t\tif(Object.defineProperty) try { Object.defineProperty(row, '__rowNum__', {value:R, enumerable:false}); } catch(e) { row.__rowNum__ = R; }\n\t\telse row.__rowNum__ = R;\n\t}\n\tif(!dense || sheet[R]) for (var C = r.s.c; C <= r.e.c; ++C) {\n\t\tvar val = dense ? sheet[R][C] : sheet[cols[C] + rr];\n\t\tif(val === undefined || val.t === undefined) {\n\t\t\tif(defval === undefined) continue;\n\t\t\tif(hdr[C] != null) { row[hdr[C]] = defval; }\n\t\t\tcontinue;\n\t\t}\n\t\tvar v = val.v;\n\t\tswitch(val.t){\n\t\t\tcase 'z': if(v == null) break; continue;\n\t\t\tcase 'e': v = (v == 0 ? null : void 0); break;\n\t\t\tcase 's': case 'd': case 'b': case 'n': break;\n\t\t\tdefault: throw new Error('unrecognized type ' + val.t);\n\t\t}\n\t\tif(hdr[C] != null) {\n\t\t\tif(v == null) {\n\t\t\t\tif(val.t == \"e\" && v === null) row[hdr[C]] = null;\n\t\t\t\telse if(defval !== undefined) row[hdr[C]] = defval;\n\t\t\t\telse if(raw && v === null) row[hdr[C]] = null;\n\t\t\t\telse continue;\n\t\t\t} else {\n\t\t\t\trow[hdr[C]] = raw && (val.t !== \"n\" || (val.t === \"n\" && o.rawNumbers !== false)) ? v : format_cell(val,v,o);\n\t\t\t}\n\t\t\tif(v != null) isempty = false;\n\t\t}\n\t}\n\treturn { row: row, isempty: isempty };\n}\n\n\nfunction sheet_to_json(sheet/*:Worksheet*/, opts/*:?Sheet2JSONOpts*/) {\n\tif(sheet == null || sheet[\"!ref\"] == null) return [];\n\tvar val = {t:'n',v:0}, header = 0, offset = 1, hdr/*:Array*/ = [], v=0, vv=\"\";\n\tvar r = {s:{r:0,c:0},e:{r:0,c:0}};\n\tvar o = opts || {};\n\tvar range = o.range != null ? o.range : sheet[\"!ref\"];\n\tif(o.header === 1) header = 1;\n\telse if(o.header === \"A\") header = 2;\n\telse if(Array.isArray(o.header)) header = 3;\n\telse if(o.header == null) header = 0;\n\tswitch(typeof range) {\n\t\tcase 'string': r = safe_decode_range(range); break;\n\t\tcase 'number': r = safe_decode_range(sheet[\"!ref\"]); r.s.r = range; break;\n\t\tdefault: r = range;\n\t}\n\tif(header > 0) offset = 0;\n\tvar rr = encode_row(r.s.r);\n\tvar cols/*:Array*/ = [];\n\tvar out/*:Array*/ = [];\n\tvar outi = 0, counter = 0;\n\tvar dense = Array.isArray(sheet);\n\tvar R = r.s.r, C = 0;\n\tvar header_cnt = {};\n\tif(dense && !sheet[R]) sheet[R] = [];\n\tvar colinfo/*:Array*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array*/ = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\tif(((colinfo[C]||{}).hidden)) continue;\n\t\tcols[C] = encode_col(C);\n\t\tval = dense ? sheet[R][C] : sheet[cols[C] + rr];\n\t\tswitch(header) {\n\t\t\tcase 1: hdr[C] = C - r.s.c; break;\n\t\t\tcase 2: hdr[C] = cols[C]; break;\n\t\t\tcase 3: hdr[C] = o.header[C - r.s.c]; break;\n\t\t\tdefault:\n\t\t\t\tif(val == null) val = {w: \"__EMPTY\", t: \"s\"};\n\t\t\t\tvv = v = format_cell(val, null, o);\n\t\t\t\tcounter = header_cnt[v] || 0;\n\t\t\t\tif(!counter) header_cnt[v] = 1;\n\t\t\t\telse {\n\t\t\t\t\tdo { vv = v + \"_\" + (counter++); } while(header_cnt[vv]); header_cnt[v] = counter;\n\t\t\t\t\theader_cnt[vv] = 1;\n\t\t\t\t}\n\t\t\t\thdr[C] = vv;\n\t\t}\n\t}\n\tfor (R = r.s.r + offset; R <= r.e.r; ++R) {\n\t\tif ((rowinfo[R]||{}).hidden) continue;\n\t\tvar row = make_json_row(sheet, r, R, cols, header, hdr, dense, o);\n\t\tif((row.isempty === false) || (header === 1 ? o.blankrows !== false : !!o.blankrows)) out[outi++] = row.row;\n\t}\n\tout.length = outi;\n\treturn out;\n}\n\nvar qreg = /\"/g;\nfunction make_csv_row(sheet/*:Worksheet*/, r/*:Range*/, R/*:number*/, cols/*:Array*/, fs/*:number*/, rs/*:number*/, FS/*:string*/, o/*:Sheet2CSVOpts*/)/*:?string*/ {\n\tvar isempty = true;\n\tvar row/*:Array*/ = [], txt = \"\", rr = encode_row(R);\n\tfor(var C = r.s.c; C <= r.e.c; ++C) {\n\t\tif (!cols[C]) continue;\n\t\tvar val = o.dense ? (sheet[R]||[])[C]: sheet[cols[C] + rr];\n\t\tif(val == null) txt = \"\";\n\t\telse if(val.v != null) {\n\t\t\tisempty = false;\n\t\t\ttxt = ''+(o.rawNumbers && val.t == \"n\" ? val.v : format_cell(val, null, o));\n\t\t\tfor(var i = 0, cc = 0; i !== txt.length; ++i) if((cc = txt.charCodeAt(i)) === fs || cc === rs || cc === 34 || o.forceQuotes) {txt = \"\\\"\" + txt.replace(qreg, '\"\"') + \"\\\"\"; break; }\n\t\t\tif(txt == \"ID\") txt = '\"ID\"';\n\t\t} else if(val.f != null && !val.F) {\n\t\t\tisempty = false;\n\t\t\ttxt = '=' + val.f; if(txt.indexOf(\",\") >= 0) txt = '\"' + txt.replace(qreg, '\"\"') + '\"';\n\t\t} else txt = \"\";\n\t\t/* NOTE: Excel CSV does not support array formulae */\n\t\trow.push(txt);\n\t}\n\tif(o.blankrows === false && isempty) return null;\n\treturn row.join(FS);\n}\n\nfunction sheet_to_csv(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/)/*:string*/ {\n\tvar out/*:Array*/ = [];\n\tvar o = opts == null ? {} : opts;\n\tif(sheet == null || sheet[\"!ref\"] == null) return \"\";\n\tvar r = safe_decode_range(sheet[\"!ref\"]);\n\tvar FS = o.FS !== undefined ? o.FS : \",\", fs = FS.charCodeAt(0);\n\tvar RS = o.RS !== undefined ? o.RS : \"\\n\", rs = RS.charCodeAt(0);\n\tvar endregex = new RegExp((FS==\"|\" ? \"\\\\|\" : FS)+\"+$\");\n\tvar row = \"\", cols/*:Array*/ = [];\n\to.dense = Array.isArray(sheet);\n\tvar colinfo/*:Array*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array*/ = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(var C = r.s.c; C <= r.e.c; ++C) if (!((colinfo[C]||{}).hidden)) cols[C] = encode_col(C);\n\tvar w = 0;\n\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\tif ((rowinfo[R]||{}).hidden) continue;\n\t\trow = make_csv_row(sheet, r, R, cols, fs, rs, FS, o);\n\t\tif(row == null) { continue; }\n\t\tif(o.strip) row = row.replace(endregex,\"\");\n\t\tif(row || (o.blankrows !== false)) out.push((w++ ? RS : \"\") + row);\n\t}\n\tdelete o.dense;\n\treturn out.join(\"\");\n}\n\nfunction sheet_to_txt(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/) {\n\tif(!opts) opts = {}; opts.FS = \"\\t\"; opts.RS = \"\\n\";\n\tvar s = sheet_to_csv(sheet, opts);\n\tif(typeof $cptable == 'undefined' || opts.type == 'string') return s;\n\tvar o = $cptable.utils.encode(1200, s, 'str');\n\treturn String.fromCharCode(255) + String.fromCharCode(254) + o;\n}\n\nfunction sheet_to_formulae(sheet/*:Worksheet*/)/*:Array*/ {\n\tvar y = \"\", x, val=\"\";\n\tif(sheet == null || sheet[\"!ref\"] == null) return [];\n\tvar r = safe_decode_range(sheet['!ref']), rr = \"\", cols/*:Array*/ = [], C;\n\tvar cmds/*:Array*/ = [];\n\tvar dense = Array.isArray(sheet);\n\tfor(C = r.s.c; C <= r.e.c; ++C) cols[C] = encode_col(C);\n\tfor(var R = r.s.r; R <= r.e.r; ++R) {\n\t\trr = encode_row(R);\n\t\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\t\ty = cols[C] + rr;\n\t\t\tx = dense ? (sheet[R]||[])[C] : sheet[y];\n\t\t\tval = \"\";\n\t\t\tif(x === undefined) continue;\n\t\t\telse if(x.F != null) {\n\t\t\t\ty = x.F;\n\t\t\t\tif(!x.f) continue;\n\t\t\t\tval = x.f;\n\t\t\t\tif(y.indexOf(\":\") == -1) y = y + \":\" + y;\n\t\t\t}\n\t\t\tif(x.f != null) val = x.f;\n\t\t\telse if(x.t == 'z') continue;\n\t\t\telse if(x.t == 'n' && x.v != null) val = \"\" + x.v;\n\t\t\telse if(x.t == 'b') val = x.v ? \"TRUE\" : \"FALSE\";\n\t\t\telse if(x.w !== undefined) val = \"'\" + x.w;\n\t\t\telse if(x.v === undefined) continue;\n\t\t\telse if(x.t == 's') val = \"'\" + x.v;\n\t\t\telse val = \"\"+x.v;\n\t\t\tcmds[cmds.length] = y + \"=\" + val;\n\t\t}\n\t}\n\treturn cmds;\n}\n\nfunction sheet_add_json(_ws/*:?Worksheet*/, js/*:Array*/, opts)/*:Worksheet*/ {\n\tvar o = opts || {};\n\tvar offset = +!o.skipHeader;\n\tvar ws/*:Worksheet*/ = _ws || ({}/*:any*/);\n\tvar _R = 0, _C = 0;\n\tif(ws && o.origin != null) {\n\t\tif(typeof o.origin == 'number') _R = o.origin;\n\t\telse {\n\t\t\tvar _origin/*:CellAddress*/ = typeof o.origin == \"string\" ? decode_cell(o.origin) : o.origin;\n\t\t\t_R = _origin.r; _C = _origin.c;\n\t\t}\n\t}\n\tvar cell/*:Cell*/;\n\tvar range/*:Range*/ = ({s: {c:0, r:0}, e: {c:_C, r:_R + js.length - 1 + offset}}/*:any*/);\n\tif(ws['!ref']) {\n\t\tvar _range = safe_decode_range(ws['!ref']);\n\t\trange.e.c = Math.max(range.e.c, _range.e.c);\n\t\trange.e.r = Math.max(range.e.r, _range.e.r);\n\t\tif(_R == -1) { _R = _range.e.r + 1; range.e.r = _R + js.length - 1 + offset; }\n\t} else {\n\t\tif(_R == -1) { _R = 0; range.e.r = js.length - 1 + offset; }\n\t}\n\tvar hdr/*:Array*/ = o.header || [], C = 0;\n\n\tjs.forEach(function (JS, R/*:number*/) {\n\t\tkeys(JS).forEach(function(k) {\n\t\t\tif((C=hdr.indexOf(k)) == -1) hdr[C=hdr.length] = k;\n\t\t\tvar v = JS[k];\n\t\t\tvar t = 'z';\n\t\t\tvar z = \"\";\n\t\t\tvar ref = encode_cell({c:_C + C,r:_R + R + offset});\n\t\t\tcell = ws_get_cell_stub(ws, ref);\n\t\t\tif(v && typeof v === 'object' && !(v instanceof Date)){\n\t\t\t\tws[ref] = v;\n\t\t\t} else {\n\t\t\t\tif(typeof v == 'number') t = 'n';\n\t\t\t\telse if(typeof v == 'boolean') t = 'b';\n\t\t\t\telse if(typeof v == 'string') t = 's';\n\t\t\t\telse if(v instanceof Date) {\n\t\t\t\t\tt = 'd';\n\t\t\t\t\tif(!o.cellDates) { t = 'n'; v = datenum(v); }\n\t\t\t\t\tz = (o.dateNF || table_fmt[14]);\n\t\t\t\t}\n\t\t\t\telse if(v === null && o.nullError) { t = 'e'; v = 0; }\n\t\t\t\tif(!cell) ws[ref] = cell = ({t:t, v:v}/*:any*/);\n\t\t\t\telse {\n\t\t\t\t\tcell.t = t; cell.v = v;\n\t\t\t\t\tdelete cell.w; delete cell.R;\n\t\t\t\t\tif(z) cell.z = z;\n\t\t\t\t}\n\t\t\t\tif(z) cell.z = z;\n\t\t\t}\n\t\t});\n\t});\n\trange.e.c = Math.max(range.e.c, _C + hdr.length - 1);\n\tvar __R = encode_row(_R);\n\tif(offset) for(C = 0; C < hdr.length; ++C) ws[encode_col(C + _C) + __R] = {t:'s', v:hdr[C]};\n\tws['!ref'] = encode_range(range);\n\treturn ws;\n}\nfunction json_to_sheet(js/*:Array*/, opts)/*:Worksheet*/ { return sheet_add_json(null, js, opts); }\n\n/* get cell, creating a stub if necessary */\nfunction ws_get_cell_stub(ws/*:Worksheet*/, R, C/*:?number*/)/*:Cell*/ {\n\t/* A1 cell address */\n\tif(typeof R == \"string\") {\n\t\t/* dense */\n\t\tif(Array.isArray(ws)) {\n\t\t\tvar RC = decode_cell(R);\n\t\t\tif(!ws[RC.r]) ws[RC.r] = [];\n\t\t\treturn ws[RC.r][RC.c] || (ws[RC.r][RC.c] = {t:'z'});\n\t\t}\n\t\treturn ws[R] || (ws[R] = {t:'z'});\n\t}\n\t/* cell address object */\n\tif(typeof R != \"number\") return ws_get_cell_stub(ws, encode_cell(R));\n\t/* R and C are 0-based indices */\n\treturn ws_get_cell_stub(ws, encode_cell({r:R,c:C||0}));\n}\n\n/* find sheet index for given name / validate index */\nfunction wb_sheet_idx(wb/*:Workbook*/, sh/*:number|string*/) {\n\tif(typeof sh == \"number\") {\n\t\tif(sh >= 0 && wb.SheetNames.length > sh) return sh;\n\t\tthrow new Error(\"Cannot find sheet # \" + sh);\n\t} else if(typeof sh == \"string\") {\n\t\tvar idx = wb.SheetNames.indexOf(sh);\n\t\tif(idx > -1) return idx;\n\t\tthrow new Error(\"Cannot find sheet name |\" + sh + \"|\");\n\t} else throw new Error(\"Cannot find sheet |\" + sh + \"|\");\n}\n\n/* simple blank workbook object */\nfunction book_new()/*:Workbook*/ {\n\treturn { SheetNames: [], Sheets: {} };\n}\n\n/* add a worksheet to the end of a given workbook */\nfunction book_append_sheet(wb/*:Workbook*/, ws/*:Worksheet*/, name/*:?string*/, roll/*:?boolean*/)/*:string*/ {\n\tvar i = 1;\n\tif(!name) for(; i <= 0xFFFF; ++i, name = undefined) if(wb.SheetNames.indexOf(name = \"Sheet\" + i) == -1) break;\n\tif(!name || wb.SheetNames.length >= 0xFFFF) throw new Error(\"Too many worksheets\");\n\tif(roll && wb.SheetNames.indexOf(name) >= 0) {\n\t\tvar m = name.match(/(^.*?)(\\d+)$/);\n\t\ti = m && +m[2] || 0;\n\t\tvar root = m && m[1] || name;\n\t\tfor(++i; i <= 0xFFFF; ++i) if(wb.SheetNames.indexOf(name = root + i) == -1) break;\n\t}\n\tcheck_ws_name(name);\n\tif(wb.SheetNames.indexOf(name) >= 0) throw new Error(\"Worksheet with name |\" + name + \"| already exists!\");\n\n\twb.SheetNames.push(name);\n\twb.Sheets[name] = ws;\n\treturn name;\n}\n\n/* set sheet visibility (visible/hidden/very hidden) */\nfunction book_set_sheet_visibility(wb/*:Workbook*/, sh/*:number|string*/, vis/*:number*/) {\n\tif(!wb.Workbook) wb.Workbook = {};\n\tif(!wb.Workbook.Sheets) wb.Workbook.Sheets = [];\n\n\tvar idx = wb_sheet_idx(wb, sh);\n\t// $FlowIgnore\n\tif(!wb.Workbook.Sheets[idx]) wb.Workbook.Sheets[idx] = {};\n\n\tswitch(vis) {\n\t\tcase 0: case 1: case 2: break;\n\t\tdefault: throw new Error(\"Bad sheet visibility setting \" + vis);\n\t}\n\t// $FlowIgnore\n\twb.Workbook.Sheets[idx].Hidden = vis;\n}\n\n/* set number format */\nfunction cell_set_number_format(cell/*:Cell*/, fmt/*:string|number*/) {\n\tcell.z = fmt;\n\treturn cell;\n}\n\n/* set cell hyperlink */\nfunction cell_set_hyperlink(cell/*:Cell*/, target/*:string*/, tooltip/*:?string*/) {\n\tif(!target) {\n\t\tdelete cell.l;\n\t} else {\n\t\tcell.l = ({ Target: target }/*:Hyperlink*/);\n\t\tif(tooltip) cell.l.Tooltip = tooltip;\n\t}\n\treturn cell;\n}\nfunction cell_set_internal_link(cell/*:Cell*/, range/*:string*/, tooltip/*:?string*/) { return cell_set_hyperlink(cell, \"#\" + range, tooltip); }\n\n/* add to cell comments */\nfunction cell_add_comment(cell/*:Cell*/, text/*:string*/, author/*:?string*/) {\n\tif(!cell.c) cell.c = [];\n\tcell.c.push({t:text, a:author||\"SheetJS\"});\n}\n\n/* set array formula and flush related cells */\nfunction sheet_set_array_formula(ws/*:Worksheet*/, range, formula/*:string*/, dynamic/*:boolean*/) {\n\tvar rng = typeof range != \"string\" ? range : safe_decode_range(range);\n\tvar rngstr = typeof range == \"string\" ? range : encode_range(range);\n\tfor(var R = rng.s.r; R <= rng.e.r; ++R) for(var C = rng.s.c; C <= rng.e.c; ++C) {\n\t\tvar cell = ws_get_cell_stub(ws, R, C);\n\t\tcell.t = 'n';\n\t\tcell.F = rngstr;\n\t\tdelete cell.v;\n\t\tif(R == rng.s.r && C == rng.s.c) {\n\t\t\tcell.f = formula;\n\t\t\tif(dynamic) cell.D = true;\n\t\t}\n\t}\n\treturn ws;\n}\n\nvar utils/*:any*/ = {\n\tencode_col: encode_col,\n\tencode_row: encode_row,\n\tencode_cell: encode_cell,\n\tencode_range: encode_range,\n\tdecode_col: decode_col,\n\tdecode_row: decode_row,\n\tsplit_cell: split_cell,\n\tdecode_cell: decode_cell,\n\tdecode_range: decode_range,\n\tformat_cell: format_cell,\n\tsheet_add_aoa: sheet_add_aoa,\n\tsheet_add_json: sheet_add_json,\n\tsheet_add_dom: sheet_add_dom,\n\taoa_to_sheet: aoa_to_sheet,\n\tjson_to_sheet: json_to_sheet,\n\ttable_to_sheet: parse_dom_table,\n\ttable_to_book: table_to_book,\n\tsheet_to_csv: sheet_to_csv,\n\tsheet_to_txt: sheet_to_txt,\n\tsheet_to_json: sheet_to_json,\n\tsheet_to_html: sheet_to_html,\n\tsheet_to_formulae: sheet_to_formulae,\n\tsheet_to_row_object_array: sheet_to_json,\n\tsheet_get_cell: ws_get_cell_stub,\n\tbook_new: book_new,\n\tbook_append_sheet: book_append_sheet,\n\tbook_set_sheet_visibility: book_set_sheet_visibility,\n\tcell_set_number_format: cell_set_number_format,\n\tcell_set_hyperlink: cell_set_hyperlink,\n\tcell_set_internal_link: cell_set_internal_link,\n\tcell_add_comment: cell_add_comment,\n\tsheet_set_array_formula: sheet_set_array_formula,\n\tconsts: {\n\t\tSHEET_VISIBLE: 0,\n\t\tSHEET_HIDDEN: 1,\n\t\tSHEET_VERY_HIDDEN: 2\n\t}\n};\n\nvar _Readable;\nfunction set_readable(R) { _Readable = R; }\n\nfunction write_csv_stream(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/) {\n\tvar stream = _Readable();\n\tvar o = opts == null ? {} : opts;\n\tif(sheet == null || sheet[\"!ref\"] == null) { stream.push(null); return stream; }\n\tvar r = safe_decode_range(sheet[\"!ref\"]);\n\tvar FS = o.FS !== undefined ? o.FS : \",\", fs = FS.charCodeAt(0);\n\tvar RS = o.RS !== undefined ? o.RS : \"\\n\", rs = RS.charCodeAt(0);\n\tvar endregex = new RegExp((FS==\"|\" ? \"\\\\|\" : FS)+\"+$\");\n\tvar row/*:?string*/ = \"\", cols/*:Array*/ = [];\n\to.dense = Array.isArray(sheet);\n\tvar colinfo/*:Array*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array*/ = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(var C = r.s.c; C <= r.e.c; ++C) if (!((colinfo[C]||{}).hidden)) cols[C] = encode_col(C);\n\tvar R = r.s.r;\n\tvar BOM = false, w = 0;\n\tstream._read = function() {\n\t\tif(!BOM) { BOM = true; return stream.push(\"\\uFEFF\"); }\n\t\twhile(R <= r.e.r) {\n\t\t\t++R;\n\t\t\tif ((rowinfo[R-1]||{}).hidden) continue;\n\t\t\trow = make_csv_row(sheet, r, R-1, cols, fs, rs, FS, o);\n\t\t\tif(row != null) {\n\t\t\t\tif(o.strip) row = row.replace(endregex,\"\");\n\t\t\t\tif(row || (o.blankrows !== false)) return stream.push((w++ ? RS : \"\") + row);\n\t\t\t}\n\t\t}\n\t\treturn stream.push(null);\n\t};\n\treturn stream;\n}\n\nfunction write_html_stream(ws/*:Worksheet*/, opts/*:?Sheet2HTMLOpts*/) {\n\tvar stream = _Readable();\n\n\tvar o = opts || {};\n\tvar header = o.header != null ? o.header : HTML_BEGIN;\n\tvar footer = o.footer != null ? o.footer : HTML_END;\n\tstream.push(header);\n\tvar r = decode_range(ws['!ref']);\n\to.dense = Array.isArray(ws);\n\tstream.push(make_html_preamble(ws, r, o));\n\tvar R = r.s.r;\n\tvar end = false;\n\tstream._read = function() {\n\t\tif(R > r.e.r) {\n\t\t\tif(!end) { end = true; stream.push(\"\" + footer); }\n\t\t\treturn stream.push(null);\n\t\t}\n\t\twhile(R <= r.e.r) {\n\t\t\tstream.push(make_html_row(ws, r, R, o));\n\t\t\t++R;\n\t\t\tbreak;\n\t\t}\n\t};\n\treturn stream;\n}\n\nfunction write_json_stream(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/) {\n\tvar stream = _Readable({objectMode:true});\n\n\tif(sheet == null || sheet[\"!ref\"] == null) { stream.push(null); return stream; }\n\tvar val = {t:'n',v:0}, header = 0, offset = 1, hdr/*:Array*/ = [], v=0, vv=\"\";\n\tvar r = {s:{r:0,c:0},e:{r:0,c:0}};\n\tvar o = opts || {};\n\tvar range = o.range != null ? o.range : sheet[\"!ref\"];\n\tif(o.header === 1) header = 1;\n\telse if(o.header === \"A\") header = 2;\n\telse if(Array.isArray(o.header)) header = 3;\n\tswitch(typeof range) {\n\t\tcase 'string': r = safe_decode_range(range); break;\n\t\tcase 'number': r = safe_decode_range(sheet[\"!ref\"]); r.s.r = range; break;\n\t\tdefault: r = range;\n\t}\n\tif(header > 0) offset = 0;\n\tvar rr = encode_row(r.s.r);\n\tvar cols/*:Array*/ = [];\n\tvar counter = 0;\n\tvar dense = Array.isArray(sheet);\n\tvar R = r.s.r, C = 0;\n\tvar header_cnt = {};\n\tif(dense && !sheet[R]) sheet[R] = [];\n\tvar colinfo/*:Array*/ = o.skipHidden && sheet[\"!cols\"] || [];\n\tvar rowinfo/*:Array*/ = o.skipHidden && sheet[\"!rows\"] || [];\n\tfor(C = r.s.c; C <= r.e.c; ++C) {\n\t\tif(((colinfo[C]||{}).hidden)) continue;\n\t\tcols[C] = encode_col(C);\n\t\tval = dense ? sheet[R][C] : sheet[cols[C] + rr];\n\t\tswitch(header) {\n\t\t\tcase 1: hdr[C] = C - r.s.c; break;\n\t\t\tcase 2: hdr[C] = cols[C]; break;\n\t\t\tcase 3: hdr[C] = o.header[C - r.s.c]; break;\n\t\t\tdefault:\n\t\t\t\tif(val == null) val = {w: \"__EMPTY\", t: \"s\"};\n\t\t\t\tvv = v = format_cell(val, null, o);\n\t\t\t\tcounter = header_cnt[v] || 0;\n\t\t\t\tif(!counter) header_cnt[v] = 1;\n\t\t\t\telse {\n\t\t\t\t\tdo { vv = v + \"_\" + (counter++); } while(header_cnt[vv]); header_cnt[v] = counter;\n\t\t\t\t\theader_cnt[vv] = 1;\n\t\t\t\t}\n\t\t\t\thdr[C] = vv;\n\t\t}\n\t}\n\tR = r.s.r + offset;\n\tstream._read = function() {\n\t\twhile(R <= r.e.r) {\n\t\t\tif ((rowinfo[R-1]||{}).hidden) continue;\n\t\t\tvar row = make_json_row(sheet, r, R, cols, header, hdr, dense, o);\n\t\t\t++R;\n\t\t\tif((row.isempty === false) || (header === 1 ? o.blankrows !== false : !!o.blankrows)) {\n\t\t\t\tstream.push(row.row);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\treturn stream.push(null);\n\t};\n\treturn stream;\n}\n\nvar __stream = {\n\tto_json: write_json_stream,\n\tto_html: write_html_stream,\n\tto_csv: write_csv_stream,\n set_readable: set_readable\n};\nexport const version = XLSX.version;\nexport {\n\tparse_xlscfb,\n\tparse_zip,\n\treadSync as read,\n\treadFileSync as readFile,\n\treadFileSync,\n\twriteSync as write,\n\twriteFileSync as writeFile,\n\twriteFileSync,\n\twriteFileAsync,\n\twriteSyncXLSX as writeXLSX,\n\twriteFileSyncXLSX as writeFileXLSX,\n\tutils,\n\t__stream as stream,\n\tSSF,\n\tCFB\n};\n","import React, { useState, useEffect, useCallback, useMemo } from \"react\";\nimport { SiMicrosoftexcel } from \"react-icons/si\";\nimport { FaFilePdf } from \"react-icons/fa\";\nimport { VscJson } from \"react-icons/vsc\";\nimport {\n exportAsPdfFile,\n formatDataForExport,\n formatDate,\n generatePreliminaryHeaders,\n sortObjectKeys,\n titleCase,\n} from \"../../utils/util.ts\";\nimport * as XLSX from \"xlsx\";\nimport \"./exports.scss\";\n\nconst Exports = (props) => {\n const { info } = props;\n const [exportData, setExportData] = useState([]);\n const [excelHeader, setExcelHeader] = useState([]);\n const title = useMemo(() => {\n let tit = `${info?.title} Count`;\n return tit;\n }, [info]);\n\n useEffect(() => {\n if (info?.data?.length > 0) {\n let headers = [\"Date\"];\n const rest = info.data;\n const sortedData = sortObjectKeys(rest[0]?.data);\n sortedData.forEach((row) => {\n const title = titleCase(row[0]);\n headers.push(title);\n });\n\n setExcelHeader([headers]);\n\n let tempExportData = [];\n\n rest.forEach((prev) => {\n let holder = {};\n sortedData.forEach((row) => {\n holder[row[0]] = prev.data[row[0]];\n });\n tempExportData.push({ date: formatDate(prev.date), ...holder });\n });\n setExportData(tempExportData);\n }\n }, [info]);\n\n const exportToExcelOrCsv = useCallback(\n (exportAsCsv = false) => {\n if (exportData && exportData.length) {\n const workbook = XLSX.utils.book_new();\n const worksheet = XLSX.utils.json_to_sheet(exportData);\n XLSX.utils.book_append_sheet(workbook, worksheet, \"Products\");\n\n // customize header names\n XLSX.utils.sheet_add_aoa(worksheet, excelHeader);\n\n XLSX.writeFile(\n workbook,\n title + (exportAsCsv ? \".csv\" : \".xlsx\"),\n {\n compression: true,\n bookType: exportAsCsv ? \"csv\" : \"xlsx\",\n }\n );\n }\n },\n [exportData, excelHeader, title]\n );\n\n const exportToPdf = useCallback(() => {\n if (info?.data) {\n exportAsPdfFile(\n formatDataForExport(info?.data),\n title,\n generatePreliminaryHeaders(info?.data),\n \"landscape\"\n );\n }\n }, [info, title]);\n\n return (\n
    \n
    \n
    exportToExcelOrCsv()}>\n \n
    \n
    \n \n
    \n
    exportToExcelOrCsv(true)}>\n \n
    \n
    \n
    \n );\n};\n\nexport default Exports;\n","// extracted by mini-css-extract-plugin\nexport default {\"table\":\"table_table__whMCp\"};","import React from \"react\";\nimport styles from \"./table.module.scss\";\n\nconst Table = ({ data }) => {\n return (\n <>\n
    \n \n \n \n \n \n \n \n \n \n \n \n {data.map((softwareCount) => (\n \n \n \n \n \n \n \n ))}\n \n
    \n #\n \n Resource\n \n Current Count\n \n Previous Count\n \n % Diff.\n
    {+softwareCount.id + 1}{softwareCount.title}{softwareCount.currentCount}{softwareCount.previousCount}{softwareCount.percentageDiff}
    \n
    \n \n );\n};\n\nexport default Table;\n","// extracted by mini-css-extract-plugin\nexport default {\"historyCover\":\"previous-counts_historyCover__B73Ms\",\"container\":\"previous-counts_container__nZgJP\",\"data\":\"previous-counts_data__gmpoE\",\"activeData\":\"previous-counts_activeData__sjmr4\",\"history\":\"previous-counts_history__g+fYY\"};","import React, { useEffect, useState } from \"react\";\nimport { FaCircle } from \"react-icons/fa\";\nimport moment from \"moment\";\nimport styles from \"./previous-counts.module.scss\";\n\nconst PreviousCounts = ({ history, setCurrentViewId, currentViewId }) => {\n const [historyData, setHistoryData] = useState([]);\n\n useEffect(() => {\n if (history?.length > 0) {\n const data = history.map((item) => {\n let day = moment(item.date).format(\"LL\");\n let time = moment(item.date).format(\"LT\");\n return { date: item.date, day, time, id: item?.id };\n });\n setHistoryData(data);\n }\n }, [history]);\n\n return (\n <>\n
    \n

    Previous count

    \n
    \n
    \n {historyData?.map((item) => (\n setCurrentViewId(item?.id)}\n className={`${styles.container} ${\n item?.id === currentViewId\n ? styles.activeData\n : styles.data\n }`}\n >\n \n \n \n {item?.day}\n \n
    \n

    \n {item?.time}\n

    \n
    \n ))}\n \n \n \n );\n};\n\nexport default PreviousCounts;\n","/*!\n * @kurkle/color v0.3.2\n * https://github.com/kurkle/color#readme\n * (c) 2023 Jukka Kurkela\n * Released under the MIT License\n */\nfunction round(v) {\n return v + 0.5 | 0;\n}\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n return lim(round(v * 2.55), 0, 255);\n}\nfunction b2p(v) {\n return lim(round(v / 2.55), 0, 100);\n}\nfunction n2b(v) {\n return lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n return lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n return lim(round(v * 100), 0, 100);\n}\n\nconst map$1 = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15};\nconst hex = [...'0123456789ABCDEF'];\nconst h1 = b => hex[b & 0xF];\nconst h2 = b => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\nconst eq = b => ((b & 0xF0) >> 4) === (b & 0xF);\nconst isShort = v => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\nfunction hexParse(str) {\n var len = str.length;\n var ret;\n if (str[0] === '#') {\n if (len === 4 || len === 5) {\n ret = {\n r: 255 & map$1[str[1]] * 17,\n g: 255 & map$1[str[2]] * 17,\n b: 255 & map$1[str[3]] * 17,\n a: len === 5 ? map$1[str[4]] * 17 : 255\n };\n } else if (len === 7 || len === 9) {\n ret = {\n r: map$1[str[1]] << 4 | map$1[str[2]],\n g: map$1[str[3]] << 4 | map$1[str[4]],\n b: map$1[str[5]] << 4 | map$1[str[6]],\n a: len === 9 ? (map$1[str[7]] << 4 | map$1[str[8]]) : 255\n };\n }\n }\n return ret;\n}\nconst alpha = (a, f) => a < 255 ? f(a) : '';\nfunction hexString(v) {\n var f = isShort(v) ? h1 : h2;\n return v\n ? '#' + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f)\n : undefined;\n}\n\nconst HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n return [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n const f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n return [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n const rgb = hsl2rgbn(h, 1, 0.5);\n let i;\n if (w + b > 1) {\n i = 1 / (w + b);\n w *= i;\n b *= i;\n }\n for (i = 0; i < 3; i++) {\n rgb[i] *= 1 - w - b;\n rgb[i] += w;\n }\n return rgb;\n}\nfunction hueValue(r, g, b, d, max) {\n if (r === max) {\n return ((g - b) / d) + (g < b ? 6 : 0);\n }\n if (g === max) {\n return (b - r) / d + 2;\n }\n return (r - g) / d + 4;\n}\nfunction rgb2hsl(v) {\n const range = 255;\n const r = v.r / range;\n const g = v.g / range;\n const b = v.b / range;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n let h, s, d;\n if (max !== min) {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = hueValue(r, g, b, d, max);\n h = h * 60 + 0.5;\n }\n return [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n return (\n Array.isArray(a)\n ? f(a[0], a[1], a[2])\n : f(a, b, c)\n ).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n return calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n return calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n return calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n return (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n const m = HUE_RE.exec(str);\n let a = 255;\n let v;\n if (!m) {\n return;\n }\n if (m[5] !== v) {\n a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n }\n const h = hue(+m[2]);\n const p1 = +m[3] / 100;\n const p2 = +m[4] / 100;\n if (m[1] === 'hwb') {\n v = hwb2rgb(h, p1, p2);\n } else if (m[1] === 'hsv') {\n v = hsv2rgb(h, p1, p2);\n } else {\n v = hsl2rgb(h, p1, p2);\n }\n return {\n r: v[0],\n g: v[1],\n b: v[2],\n a: a\n };\n}\nfunction rotate(v, deg) {\n var h = rgb2hsl(v);\n h[0] = hue(h[0] + deg);\n h = hsl2rgb(h);\n v.r = h[0];\n v.g = h[1];\n v.b = h[2];\n}\nfunction hslString(v) {\n if (!v) {\n return;\n }\n const a = rgb2hsl(v);\n const h = a[0];\n const s = n2p(a[1]);\n const l = n2p(a[2]);\n return v.a < 255\n ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\n : `hsl(${h}, ${s}%, ${l}%)`;\n}\n\nconst map = {\n x: 'dark',\n Z: 'light',\n Y: 're',\n X: 'blu',\n W: 'gr',\n V: 'medium',\n U: 'slate',\n A: 'ee',\n T: 'ol',\n S: 'or',\n B: 'ra',\n C: 'lateg',\n D: 'ights',\n R: 'in',\n Q: 'turquois',\n E: 'hi',\n P: 'ro',\n O: 'al',\n N: 'le',\n M: 'de',\n L: 'yello',\n F: 'en',\n K: 'ch',\n G: 'arks',\n H: 'ea',\n I: 'ightg',\n J: 'wh'\n};\nconst names$1 = {\n OiceXe: 'f0f8ff',\n antiquewEte: 'faebd7',\n aqua: 'ffff',\n aquamarRe: '7fffd4',\n azuY: 'f0ffff',\n beige: 'f5f5dc',\n bisque: 'ffe4c4',\n black: '0',\n blanKedOmond: 'ffebcd',\n Xe: 'ff',\n XeviTet: '8a2be2',\n bPwn: 'a52a2a',\n burlywood: 'deb887',\n caMtXe: '5f9ea0',\n KartYuse: '7fff00',\n KocTate: 'd2691e',\n cSO: 'ff7f50',\n cSnflowerXe: '6495ed',\n cSnsilk: 'fff8dc',\n crimson: 'dc143c',\n cyan: 'ffff',\n xXe: '8b',\n xcyan: '8b8b',\n xgTMnPd: 'b8860b',\n xWay: 'a9a9a9',\n xgYF: '6400',\n xgYy: 'a9a9a9',\n xkhaki: 'bdb76b',\n xmagFta: '8b008b',\n xTivegYF: '556b2f',\n xSange: 'ff8c00',\n xScEd: '9932cc',\n xYd: '8b0000',\n xsOmon: 'e9967a',\n xsHgYF: '8fbc8f',\n xUXe: '483d8b',\n xUWay: '2f4f4f',\n xUgYy: '2f4f4f',\n xQe: 'ced1',\n xviTet: '9400d3',\n dAppRk: 'ff1493',\n dApskyXe: 'bfff',\n dimWay: '696969',\n dimgYy: '696969',\n dodgerXe: '1e90ff',\n fiYbrick: 'b22222',\n flSOwEte: 'fffaf0',\n foYstWAn: '228b22',\n fuKsia: 'ff00ff',\n gaRsbSo: 'dcdcdc',\n ghostwEte: 'f8f8ff',\n gTd: 'ffd700',\n gTMnPd: 'daa520',\n Way: '808080',\n gYF: '8000',\n gYFLw: 'adff2f',\n gYy: '808080',\n honeyMw: 'f0fff0',\n hotpRk: 'ff69b4',\n RdianYd: 'cd5c5c',\n Rdigo: '4b0082',\n ivSy: 'fffff0',\n khaki: 'f0e68c',\n lavFMr: 'e6e6fa',\n lavFMrXsh: 'fff0f5',\n lawngYF: '7cfc00',\n NmoncEffon: 'fffacd',\n ZXe: 'add8e6',\n ZcSO: 'f08080',\n Zcyan: 'e0ffff',\n ZgTMnPdLw: 'fafad2',\n ZWay: 'd3d3d3',\n ZgYF: '90ee90',\n ZgYy: 'd3d3d3',\n ZpRk: 'ffb6c1',\n ZsOmon: 'ffa07a',\n ZsHgYF: '20b2aa',\n ZskyXe: '87cefa',\n ZUWay: '778899',\n ZUgYy: '778899',\n ZstAlXe: 'b0c4de',\n ZLw: 'ffffe0',\n lime: 'ff00',\n limegYF: '32cd32',\n lRF: 'faf0e6',\n magFta: 'ff00ff',\n maPon: '800000',\n VaquamarRe: '66cdaa',\n VXe: 'cd',\n VScEd: 'ba55d3',\n VpurpN: '9370db',\n VsHgYF: '3cb371',\n VUXe: '7b68ee',\n VsprRggYF: 'fa9a',\n VQe: '48d1cc',\n VviTetYd: 'c71585',\n midnightXe: '191970',\n mRtcYam: 'f5fffa',\n mistyPse: 'ffe4e1',\n moccasR: 'ffe4b5',\n navajowEte: 'ffdead',\n navy: '80',\n Tdlace: 'fdf5e6',\n Tive: '808000',\n TivedBb: '6b8e23',\n Sange: 'ffa500',\n SangeYd: 'ff4500',\n ScEd: 'da70d6',\n pOegTMnPd: 'eee8aa',\n pOegYF: '98fb98',\n pOeQe: 'afeeee',\n pOeviTetYd: 'db7093',\n papayawEp: 'ffefd5',\n pHKpuff: 'ffdab9',\n peru: 'cd853f',\n pRk: 'ffc0cb',\n plum: 'dda0dd',\n powMrXe: 'b0e0e6',\n purpN: '800080',\n YbeccapurpN: '663399',\n Yd: 'ff0000',\n Psybrown: 'bc8f8f',\n PyOXe: '4169e1',\n saddNbPwn: '8b4513',\n sOmon: 'fa8072',\n sandybPwn: 'f4a460',\n sHgYF: '2e8b57',\n sHshell: 'fff5ee',\n siFna: 'a0522d',\n silver: 'c0c0c0',\n skyXe: '87ceeb',\n UXe: '6a5acd',\n UWay: '708090',\n UgYy: '708090',\n snow: 'fffafa',\n sprRggYF: 'ff7f',\n stAlXe: '4682b4',\n tan: 'd2b48c',\n teO: '8080',\n tEstN: 'd8bfd8',\n tomato: 'ff6347',\n Qe: '40e0d0',\n viTet: 'ee82ee',\n JHt: 'f5deb3',\n wEte: 'ffffff',\n wEtesmoke: 'f5f5f5',\n Lw: 'ffff00',\n LwgYF: '9acd32'\n};\nfunction unpack() {\n const unpacked = {};\n const keys = Object.keys(names$1);\n const tkeys = Object.keys(map);\n let i, j, k, ok, nk;\n for (i = 0; i < keys.length; i++) {\n ok = nk = keys[i];\n for (j = 0; j < tkeys.length; j++) {\n k = tkeys[j];\n nk = nk.replace(k, map[k]);\n }\n k = parseInt(names$1[ok], 16);\n unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n }\n return unpacked;\n}\n\nlet names;\nfunction nameParse(str) {\n if (!names) {\n names = unpack();\n names.transparent = [0, 0, 0, 0];\n }\n const a = names[str.toLowerCase()];\n return a && {\n r: a[0],\n g: a[1],\n b: a[2],\n a: a.length === 4 ? a[3] : 255\n };\n}\n\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n const m = RGB_RE.exec(str);\n let a = 255;\n let r, g, b;\n if (!m) {\n return;\n }\n if (m[7] !== r) {\n const v = +m[7];\n a = m[8] ? p2b(v) : lim(v * 255, 0, 255);\n }\n r = +m[1];\n g = +m[3];\n b = +m[5];\n r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255));\n g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255));\n b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255));\n return {\n r: r,\n g: g,\n b: b,\n a: a\n };\n}\nfunction rgbString(v) {\n return v && (\n v.a < 255\n ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\n : `rgb(${v.r}, ${v.g}, ${v.b})`\n );\n}\n\nconst to = v => v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;\nconst from = v => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\nfunction interpolate(rgb1, rgb2, t) {\n const r = from(b2n(rgb1.r));\n const g = from(b2n(rgb1.g));\n const b = from(b2n(rgb1.b));\n return {\n r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))),\n g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n a: rgb1.a + t * (rgb2.a - rgb1.a)\n };\n}\n\nfunction modHSL(v, i, ratio) {\n if (v) {\n let tmp = rgb2hsl(v);\n tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n tmp = hsl2rgb(tmp);\n v.r = tmp[0];\n v.g = tmp[1];\n v.b = tmp[2];\n }\n}\nfunction clone(v, proto) {\n return v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n var v = {r: 0, g: 0, b: 0, a: 255};\n if (Array.isArray(input)) {\n if (input.length >= 3) {\n v = {r: input[0], g: input[1], b: input[2], a: 255};\n if (input.length > 3) {\n v.a = n2b(input[3]);\n }\n }\n } else {\n v = clone(input, {r: 0, g: 0, b: 0, a: 1});\n v.a = n2b(v.a);\n }\n return v;\n}\nfunction functionParse(str) {\n if (str.charAt(0) === 'r') {\n return rgbParse(str);\n }\n return hueParse(str);\n}\nclass Color {\n constructor(input) {\n if (input instanceof Color) {\n return input;\n }\n const type = typeof input;\n let v;\n if (type === 'object') {\n v = fromObject(input);\n } else if (type === 'string') {\n v = hexParse(input) || nameParse(input) || functionParse(input);\n }\n this._rgb = v;\n this._valid = !!v;\n }\n get valid() {\n return this._valid;\n }\n get rgb() {\n var v = clone(this._rgb);\n if (v) {\n v.a = b2n(v.a);\n }\n return v;\n }\n set rgb(obj) {\n this._rgb = fromObject(obj);\n }\n rgbString() {\n return this._valid ? rgbString(this._rgb) : undefined;\n }\n hexString() {\n return this._valid ? hexString(this._rgb) : undefined;\n }\n hslString() {\n return this._valid ? hslString(this._rgb) : undefined;\n }\n mix(color, weight) {\n if (color) {\n const c1 = this.rgb;\n const c2 = color.rgb;\n let w2;\n const p = weight === w2 ? 0.5 : weight;\n const w = 2 * p - 1;\n const a = c1.a - c2.a;\n const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n w2 = 1 - w1;\n c1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n c1.a = p * c1.a + (1 - p) * c2.a;\n this.rgb = c1;\n }\n return this;\n }\n interpolate(color, t) {\n if (color) {\n this._rgb = interpolate(this._rgb, color._rgb, t);\n }\n return this;\n }\n clone() {\n return new Color(this.rgb);\n }\n alpha(a) {\n this._rgb.a = n2b(a);\n return this;\n }\n clearer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 - ratio;\n return this;\n }\n greyscale() {\n const rgb = this._rgb;\n const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n rgb.r = rgb.g = rgb.b = val;\n return this;\n }\n opaquer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 + ratio;\n return this;\n }\n negate() {\n const v = this._rgb;\n v.r = 255 - v.r;\n v.g = 255 - v.g;\n v.b = 255 - v.b;\n return this;\n }\n lighten(ratio) {\n modHSL(this._rgb, 2, ratio);\n return this;\n }\n darken(ratio) {\n modHSL(this._rgb, 2, -ratio);\n return this;\n }\n saturate(ratio) {\n modHSL(this._rgb, 1, ratio);\n return this;\n }\n desaturate(ratio) {\n modHSL(this._rgb, 1, -ratio);\n return this;\n }\n rotate(deg) {\n rotate(this._rgb, deg);\n return this;\n }\n}\n\nfunction index_esm(input) {\n return new Color(input);\n}\n\nexport { Color, b2n, b2p, index_esm as default, hexParse, hexString, hsl2rgb, hslString, hsv2rgb, hueParse, hwb2rgb, lim, n2b, n2p, nameParse, p2b, rgb2hsl, rgbParse, rgbString, rotate, round };\n","/**\n * @namespace Chart.helpers\n */\n\nimport type {AnyObject} from '../types/basic.js';\nimport type {ActiveDataPoint, ChartEvent} from '../types/index.js';\n\n/**\n * An empty function that can be used, for example, for optional callback.\n */\nexport function noop() {\n /* noop */\n}\n\n/**\n * Returns a unique id, sequentially generated from a global variable.\n */\nexport const uid = (() => {\n let id = 0;\n return () => id++;\n})();\n\n/**\n * Returns true if `value` is neither null nor undefined, else returns false.\n * @param value - The value to test.\n * @since 2.7.0\n */\nexport function isNullOrUndef(value: unknown): value is null | undefined {\n return value === null || typeof value === 'undefined';\n}\n\n/**\n * Returns true if `value` is an array (including typed arrays), else returns false.\n * @param value - The value to test.\n * @function\n */\nexport function isArray(value: unknown): value is T[] {\n if (Array.isArray && Array.isArray(value)) {\n return true;\n }\n const type = Object.prototype.toString.call(value);\n if (type.slice(0, 7) === '[object' && type.slice(-6) === 'Array]') {\n return true;\n }\n return false;\n}\n\n/**\n * Returns true if `value` is an object (excluding null), else returns false.\n * @param value - The value to test.\n * @since 2.7.0\n */\nexport function isObject(value: unknown): value is AnyObject {\n return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\n\n/**\n * Returns true if `value` is a finite number, else returns false\n * @param value - The value to test.\n */\nfunction isNumberFinite(value: unknown): value is number {\n return (typeof value === 'number' || value instanceof Number) && isFinite(+value);\n}\nexport {\n isNumberFinite as isFinite,\n};\n\n/**\n * Returns `value` if finite, else returns `defaultValue`.\n * @param value - The value to return if defined.\n * @param defaultValue - The value to return if `value` is not finite.\n */\nexport function finiteOrDefault(value: unknown, defaultValue: number) {\n return isNumberFinite(value) ? value : defaultValue;\n}\n\n/**\n * Returns `value` if defined, else returns `defaultValue`.\n * @param value - The value to return if defined.\n * @param defaultValue - The value to return if `value` is undefined.\n */\nexport function valueOrDefault(value: T | undefined, defaultValue: T) {\n return typeof value === 'undefined' ? defaultValue : value;\n}\n\nexport const toPercentage = (value: number | string, dimension: number) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100\n : +value / dimension;\n\nexport const toDimension = (value: number | string, dimension: number) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100 * dimension\n : +value;\n\n/**\n * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\n * value returned by `fn`. If `fn` is not a function, this method returns undefined.\n * @param fn - The function to call.\n * @param args - The arguments with which `fn` should be called.\n * @param [thisArg] - The value of `this` provided for the call to `fn`.\n */\nexport function callback R, TA, R>(\n fn: T | undefined,\n args: unknown[],\n thisArg?: TA\n): R | undefined {\n if (fn && typeof fn.call === 'function') {\n return fn.apply(thisArg, args);\n }\n}\n\n/**\n * Note(SB) for performance sake, this method should only be used when loopable type\n * is unknown or in none intensive code (not called often and small loopable). Else\n * it's preferable to use a regular for() loop and save extra function calls.\n * @param loopable - The object or array to be iterated.\n * @param fn - The function to call for each item.\n * @param [thisArg] - The value of `this` provided for the call to `fn`.\n * @param [reverse] - If true, iterates backward on the loopable.\n */\nexport function each(\n loopable: Record,\n fn: (this: TA, v: T, i: string) => void,\n thisArg?: TA,\n reverse?: boolean\n): void;\nexport function each(\n loopable: T[],\n fn: (this: TA, v: T, i: number) => void,\n thisArg?: TA,\n reverse?: boolean\n): void;\nexport function each(\n loopable: T[] | Record,\n fn: (this: TA, v: T, i: any) => void,\n thisArg?: TA,\n reverse?: boolean\n) {\n let i: number, len: number, keys: string[];\n if (isArray(loopable)) {\n len = loopable.length;\n if (reverse) {\n for (i = len - 1; i >= 0; i--) {\n fn.call(thisArg, loopable[i], i);\n }\n } else {\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[i], i);\n }\n }\n } else if (isObject(loopable)) {\n keys = Object.keys(loopable);\n len = keys.length;\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[keys[i]], keys[i]);\n }\n }\n}\n\n/**\n * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\n * @param a0 - The array to compare\n * @param a1 - The array to compare\n * @private\n */\nexport function _elementsEqual(a0: ActiveDataPoint[], a1: ActiveDataPoint[]) {\n let i: number, ilen: number, v0: ActiveDataPoint, v1: ActiveDataPoint;\n\n if (!a0 || !a1 || a0.length !== a1.length) {\n return false;\n }\n\n for (i = 0, ilen = a0.length; i < ilen; ++i) {\n v0 = a0[i];\n v1 = a1[i];\n\n if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Returns a deep copy of `source` without keeping references on objects and arrays.\n * @param source - The value to clone.\n */\nexport function clone(source: T): T {\n if (isArray(source)) {\n return source.map(clone) as unknown as T;\n }\n\n if (isObject(source)) {\n const target = Object.create(null);\n const keys = Object.keys(source);\n const klen = keys.length;\n let k = 0;\n\n for (; k < klen; ++k) {\n target[keys[k]] = clone(source[keys[k]]);\n }\n\n return target;\n }\n\n return source;\n}\n\nfunction isValidKey(key: string) {\n return ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\n}\n\n/**\n * The default merger when Chart.helpers.merge is called without merger option.\n * Note(SB): also used by mergeConfig and mergeScaleConfig as fallback.\n * @private\n */\nexport function _merger(key: string, target: AnyObject, source: AnyObject, options: AnyObject) {\n if (!isValidKey(key)) {\n return;\n }\n\n const tval = target[key];\n const sval = source[key];\n\n if (isObject(tval) && isObject(sval)) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n merge(tval, sval, options);\n } else {\n target[key] = clone(sval);\n }\n}\n\nexport interface MergeOptions {\n merger?: (key: string, target: AnyObject, source: AnyObject, options?: AnyObject) => void;\n}\n\n/**\n * Recursively deep copies `source` properties into `target` with the given `options`.\n * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n * @param target - The target object in which all sources are merged into.\n * @param source - Object(s) to merge into `target`.\n * @param [options] - Merging options:\n * @param [options.merger] - The merge method (key, target, source, options)\n * @returns The `target` object.\n */\nexport function merge(target: T, source: [], options?: MergeOptions): T;\nexport function merge(target: T, source: S1, options?: MergeOptions): T & S1;\nexport function merge(target: T, source: [S1], options?: MergeOptions): T & S1;\nexport function merge(target: T, source: [S1, S2], options?: MergeOptions): T & S1 & S2;\nexport function merge(target: T, source: [S1, S2, S3], options?: MergeOptions): T & S1 & S2 & S3;\nexport function merge(\n target: T,\n source: [S1, S2, S3, S4],\n options?: MergeOptions\n): T & S1 & S2 & S3 & S4;\nexport function merge(target: T, source: AnyObject[], options?: MergeOptions): AnyObject;\nexport function merge(target: T, source: AnyObject[], options?: MergeOptions): AnyObject {\n const sources = isArray(source) ? source : [source];\n const ilen = sources.length;\n\n if (!isObject(target)) {\n return target as AnyObject;\n }\n\n options = options || {};\n const merger = options.merger || _merger;\n let current: AnyObject;\n\n for (let i = 0; i < ilen; ++i) {\n current = sources[i];\n if (!isObject(current)) {\n continue;\n }\n\n const keys = Object.keys(current);\n for (let k = 0, klen = keys.length; k < klen; ++k) {\n merger(keys[k], target, current, options as AnyObject);\n }\n }\n\n return target;\n}\n\n/**\n * Recursively deep copies `source` properties into `target` *only* if not defined in target.\n * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n * @param target - The target object in which all sources are merged into.\n * @param source - Object(s) to merge into `target`.\n * @returns The `target` object.\n */\nexport function mergeIf(target: T, source: []): T;\nexport function mergeIf(target: T, source: S1): T & S1;\nexport function mergeIf(target: T, source: [S1]): T & S1;\nexport function mergeIf(target: T, source: [S1, S2]): T & S1 & S2;\nexport function mergeIf(target: T, source: [S1, S2, S3]): T & S1 & S2 & S3;\nexport function mergeIf(target: T, source: [S1, S2, S3, S4]): T & S1 & S2 & S3 & S4;\nexport function mergeIf(target: T, source: AnyObject[]): AnyObject;\nexport function mergeIf(target: T, source: AnyObject[]): AnyObject {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return merge(target, source, {merger: _mergerIf});\n}\n\n/**\n * Merges source[key] in target[key] only if target[key] is undefined.\n * @private\n */\nexport function _mergerIf(key: string, target: AnyObject, source: AnyObject) {\n if (!isValidKey(key)) {\n return;\n }\n\n const tval = target[key];\n const sval = source[key];\n\n if (isObject(tval) && isObject(sval)) {\n mergeIf(tval, sval);\n } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n target[key] = clone(sval);\n }\n}\n\n/**\n * @private\n */\nexport function _deprecated(scope: string, value: unknown, previous: string, current: string) {\n if (value !== undefined) {\n console.warn(scope + ': \"' + previous +\n '\" is deprecated. Please use \"' + current + '\" instead');\n }\n}\n\n// resolveObjectKey resolver cache\nconst keyResolvers = {\n // Chart.helpers.core resolveObjectKey should resolve empty key to root object\n '': v => v,\n // default resolvers\n x: o => o.x,\n y: o => o.y\n};\n\n/**\n * @private\n */\nexport function _splitKey(key: string) {\n const parts = key.split('.');\n const keys: string[] = [];\n let tmp = '';\n for (const part of parts) {\n tmp += part;\n if (tmp.endsWith('\\\\')) {\n tmp = tmp.slice(0, -1) + '.';\n } else {\n keys.push(tmp);\n tmp = '';\n }\n }\n return keys;\n}\n\nfunction _getKeyResolver(key: string) {\n const keys = _splitKey(key);\n return obj => {\n for (const k of keys) {\n if (k === '') {\n // For backward compatibility:\n // Chart.helpers.core resolveObjectKey should break at empty key\n break;\n }\n obj = obj && obj[k];\n }\n return obj;\n };\n}\n\nexport function resolveObjectKey(obj: AnyObject, key: string): any {\n const resolver = keyResolvers[key] || (keyResolvers[key] = _getKeyResolver(key));\n return resolver(obj);\n}\n\n/**\n * @private\n */\nexport function _capitalize(str: string) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\n\nexport const defined = (value: unknown) => typeof value !== 'undefined';\n\nexport const isFunction = (value: unknown): value is (...args: any[]) => any => typeof value === 'function';\n\n// Adapted from https://stackoverflow.com/questions/31128855/comparing-ecma6-sets-for-equality#31129384\nexport const setsEqual = (a: Set, b: Set) => {\n if (a.size !== b.size) {\n return false;\n }\n\n for (const item of a) {\n if (!b.has(item)) {\n return false;\n }\n }\n\n return true;\n};\n\n/**\n * @param e - The event\n * @private\n */\nexport function _isClickEvent(e: ChartEvent) {\n return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\n","import type {Point} from '../types/geometric.js';\nimport {isFinite as isFiniteNumber} from './helpers.core.js';\n\n/**\n * @alias Chart.helpers.math\n * @namespace\n */\n\nexport const PI = Math.PI;\nexport const TAU = 2 * PI;\nexport const PITAU = TAU + PI;\nexport const INFINITY = Number.POSITIVE_INFINITY;\nexport const RAD_PER_DEG = PI / 180;\nexport const HALF_PI = PI / 2;\nexport const QUARTER_PI = PI / 4;\nexport const TWO_THIRDS_PI = PI * 2 / 3;\n\nexport const log10 = Math.log10;\nexport const sign = Math.sign;\n\nexport function almostEquals(x: number, y: number, epsilon: number) {\n return Math.abs(x - y) < epsilon;\n}\n\n/**\n * Implementation of the nice number algorithm used in determining where axis labels will go\n */\nexport function niceNum(range: number) {\n const roundedRange = Math.round(range);\n range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range;\n const niceRange = Math.pow(10, Math.floor(log10(range)));\n const fraction = range / niceRange;\n const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n return niceFraction * niceRange;\n}\n\n/**\n * Returns an array of factors sorted from 1 to sqrt(value)\n * @private\n */\nexport function _factorize(value: number) {\n const result: number[] = [];\n const sqrt = Math.sqrt(value);\n let i: number;\n\n for (i = 1; i < sqrt; i++) {\n if (value % i === 0) {\n result.push(i);\n result.push(value / i);\n }\n }\n if (sqrt === (sqrt | 0)) { // if value is a square number\n result.push(sqrt);\n }\n\n result.sort((a, b) => a - b).pop();\n return result;\n}\n\nexport function isNumber(n: unknown): n is number {\n return !isNaN(parseFloat(n as string)) && isFinite(n as number);\n}\n\nexport function almostWhole(x: number, epsilon: number) {\n const rounded = Math.round(x);\n return ((rounded - epsilon) <= x) && ((rounded + epsilon) >= x);\n}\n\n/**\n * @private\n */\nexport function _setMinAndMaxByKey(\n array: Record[],\n target: { min: number, max: number },\n property: string\n) {\n let i: number, ilen: number, value: number;\n\n for (i = 0, ilen = array.length; i < ilen; i++) {\n value = array[i][property];\n if (!isNaN(value)) {\n target.min = Math.min(target.min, value);\n target.max = Math.max(target.max, value);\n }\n }\n}\n\nexport function toRadians(degrees: number) {\n return degrees * (PI / 180);\n}\n\nexport function toDegrees(radians: number) {\n return radians * (180 / PI);\n}\n\n/**\n * Returns the number of decimal places\n * i.e. the number of digits after the decimal point, of the value of this Number.\n * @param x - A number.\n * @returns The number of decimal places.\n * @private\n */\nexport function _decimalPlaces(x: number) {\n if (!isFiniteNumber(x)) {\n return;\n }\n let e = 1;\n let p = 0;\n while (Math.round(x * e) / e !== x) {\n e *= 10;\n p++;\n }\n return p;\n}\n\n// Gets the angle from vertical upright to the point about a centre.\nexport function getAngleFromPoint(\n centrePoint: Point,\n anglePoint: Point\n) {\n const distanceFromXCenter = anglePoint.x - centrePoint.x;\n const distanceFromYCenter = anglePoint.y - centrePoint.y;\n const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n\n let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n\n if (angle < (-0.5 * PI)) {\n angle += TAU; // make sure the returned angle is in the range of (-PI/2, 3PI/2]\n }\n\n return {\n angle,\n distance: radialDistanceFromCenter\n };\n}\n\nexport function distanceBetweenPoints(pt1: Point, pt2: Point) {\n return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n}\n\n/**\n * Shortest distance between angles, in either direction.\n * @private\n */\nexport function _angleDiff(a: number, b: number) {\n return (a - b + PITAU) % TAU - PI;\n}\n\n/**\n * Normalize angle to be between 0 and 2*PI\n * @private\n */\nexport function _normalizeAngle(a: number) {\n return (a % TAU + TAU) % TAU;\n}\n\n/**\n * @private\n */\nexport function _angleBetween(angle: number, start: number, end: number, sameAngleIsFullCircle?: boolean) {\n const a = _normalizeAngle(angle);\n const s = _normalizeAngle(start);\n const e = _normalizeAngle(end);\n const angleToStart = _normalizeAngle(s - a);\n const angleToEnd = _normalizeAngle(e - a);\n const startToAngle = _normalizeAngle(a - s);\n const endToAngle = _normalizeAngle(a - e);\n return a === s || a === e || (sameAngleIsFullCircle && s === e)\n || (angleToStart > angleToEnd && startToAngle < endToAngle);\n}\n\n/**\n * Limit `value` between `min` and `max`\n * @param value\n * @param min\n * @param max\n * @private\n */\nexport function _limitValue(value: number, min: number, max: number) {\n return Math.max(min, Math.min(max, value));\n}\n\n/**\n * @param {number} value\n * @private\n */\nexport function _int16Range(value: number) {\n return _limitValue(value, -32768, 32767);\n}\n\n/**\n * @param value\n * @param start\n * @param end\n * @param [epsilon]\n * @private\n */\nexport function _isBetween(value: number, start: number, end: number, epsilon = 1e-6) {\n return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;\n}\n","import {_capitalize} from './helpers.core.js';\n\n/**\n * Binary search\n * @param table - the table search. must be sorted!\n * @param value - value to find\n * @param cmp\n * @private\n */\nexport function _lookup(\n table: number[],\n value: number,\n cmp?: (value: number) => boolean\n): {lo: number, hi: number};\nexport function _lookup(\n table: T[],\n value: number,\n cmp: (value: number) => boolean\n): {lo: number, hi: number};\nexport function _lookup(\n table: unknown[],\n value: number,\n cmp?: (value: number) => boolean\n) {\n cmp = cmp || ((index) => table[index] < value);\n let hi = table.length - 1;\n let lo = 0;\n let mid: number;\n\n while (hi - lo > 1) {\n mid = (lo + hi) >> 1;\n if (cmp(mid)) {\n lo = mid;\n } else {\n hi = mid;\n }\n }\n\n return {lo, hi};\n}\n\n/**\n * Binary search\n * @param table - the table search. must be sorted!\n * @param key - property name for the value in each entry\n * @param value - value to find\n * @param last - lookup last index\n * @private\n */\nexport const _lookupByKey = (\n table: Record[],\n key: string,\n value: number,\n last?: boolean\n) =>\n _lookup(table, value, last\n ? index => {\n const ti = table[index][key];\n return ti < value || ti === value && table[index + 1][key] === value;\n }\n : index => table[index][key] < value);\n\n/**\n * Reverse binary search\n * @param table - the table search. must be sorted!\n * @param key - property name for the value in each entry\n * @param value - value to find\n * @private\n */\nexport const _rlookupByKey = (\n table: Record[],\n key: string,\n value: number\n) =>\n _lookup(table, value, index => table[index][key] >= value);\n\n/**\n * Return subset of `values` between `min` and `max` inclusive.\n * Values are assumed to be in sorted order.\n * @param values - sorted array of values\n * @param min - min value\n * @param max - max value\n */\nexport function _filterBetween(values: number[], min: number, max: number) {\n let start = 0;\n let end = values.length;\n\n while (start < end && values[start] < min) {\n start++;\n }\n while (end > start && values[end - 1] > max) {\n end--;\n }\n\n return start > 0 || end < values.length\n ? values.slice(start, end)\n : values;\n}\n\nconst arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'] as const;\n\nexport interface ArrayListener {\n _onDataPush?(...item: T[]): void;\n _onDataPop?(): void;\n _onDataShift?(): void;\n _onDataSplice?(index: number, deleteCount: number, ...items: T[]): void;\n _onDataUnshift?(...item: T[]): void;\n}\n\n/**\n * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice',\n * 'unshift') and notify the listener AFTER the array has been altered. Listeners are\n * called on the '_onData*' callbacks (e.g. _onDataPush, etc.) with same arguments.\n */\nexport function listenArrayEvents(array: T[], listener: ArrayListener): void;\nexport function listenArrayEvents(array, listener) {\n if (array._chartjs) {\n array._chartjs.listeners.push(listener);\n return;\n }\n\n Object.defineProperty(array, '_chartjs', {\n configurable: true,\n enumerable: false,\n value: {\n listeners: [listener]\n }\n });\n\n arrayEvents.forEach((key) => {\n const method = '_onData' + _capitalize(key);\n const base = array[key];\n\n Object.defineProperty(array, key, {\n configurable: true,\n enumerable: false,\n value(...args) {\n const res = base.apply(this, args);\n\n array._chartjs.listeners.forEach((object) => {\n if (typeof object[method] === 'function') {\n object[method](...args);\n }\n });\n\n return res;\n }\n });\n });\n}\n\n\n/**\n * Removes the given array event listener and cleanup extra attached properties (such as\n * the _chartjs stub and overridden methods) if array doesn't have any more listeners.\n */\nexport function unlistenArrayEvents(array: T[], listener: ArrayListener): void;\nexport function unlistenArrayEvents(array, listener) {\n const stub = array._chartjs;\n if (!stub) {\n return;\n }\n\n const listeners = stub.listeners;\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n\n if (listeners.length > 0) {\n return;\n }\n\n arrayEvents.forEach((key) => {\n delete array[key];\n });\n\n delete array._chartjs;\n}\n\n/**\n * @param items\n */\nexport function _arrayUnique(items: T[]) {\n const set = new Set(items);\n\n if (set.size === items.length) {\n return items;\n }\n\n return Array.from(set);\n}\n","import type {ChartMeta, PointElement} from '../types/index.js';\n\nimport {_limitValue} from './helpers.math.js';\nimport {_lookupByKey} from './helpers.collection.js';\n\nexport function fontString(pixelSize: number, fontStyle: string, fontFamily: string) {\n return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\n\n/**\n* Request animation polyfill\n*/\nexport const requestAnimFrame = (function() {\n if (typeof window === 'undefined') {\n return function(callback) {\n return callback();\n };\n }\n return window.requestAnimationFrame;\n}());\n\n/**\n * Throttles calling `fn` once per animation frame\n * Latest arguments are used on the actual call\n */\nexport function throttled>(\n fn: (...args: TArgs) => void,\n thisArg: any,\n) {\n let argsToUse = [] as TArgs;\n let ticking = false;\n\n return function(...args: TArgs) {\n // Save the args for use later\n argsToUse = args;\n if (!ticking) {\n ticking = true;\n requestAnimFrame.call(window, () => {\n ticking = false;\n fn.apply(thisArg, argsToUse);\n });\n }\n };\n}\n\n/**\n * Debounces calling `fn` for `delay` ms\n */\nexport function debounce>(fn: (...args: TArgs) => void, delay: number) {\n let timeout;\n return function(...args: TArgs) {\n if (delay) {\n clearTimeout(timeout);\n timeout = setTimeout(fn, delay, args);\n } else {\n fn.apply(this, args);\n }\n return delay;\n };\n}\n\n/**\n * Converts 'start' to 'left', 'end' to 'right' and others to 'center'\n * @private\n */\nexport const _toLeftRightCenter = (align: 'start' | 'end' | 'center') => align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\n\n/**\n * Returns `start`, `end` or `(start + end) / 2` depending on `align`. Defaults to `center`\n * @private\n */\nexport const _alignStartEnd = (align: 'start' | 'end' | 'center', start: number, end: number) => align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\n\n/**\n * Returns `left`, `right` or `(left + right) / 2` depending on `align`. Defaults to `left`\n * @private\n */\nexport const _textX = (align: 'left' | 'right' | 'center', left: number, right: number, rtl: boolean) => {\n const check = rtl ? 'left' : 'right';\n return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\n\n/**\n * Return start and count of visible points.\n * @private\n */\nexport function _getStartAndCountOfVisiblePoints(meta: ChartMeta<'line' | 'scatter'>, points: PointElement[], animationsDisabled: boolean) {\n const pointCount = points.length;\n\n let start = 0;\n let count = pointCount;\n\n if (meta._sorted) {\n const {iScale, _parsed} = meta;\n const axis = iScale.axis;\n const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n\n if (minDefined) {\n start = _limitValue(Math.min(\n // @ts-expect-error Need to type _parsed\n _lookupByKey(_parsed, axis, min).lo,\n // @ts-expect-error Need to fix types on _lookupByKey\n animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo),\n 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(Math.max(\n // @ts-expect-error Need to type _parsed\n _lookupByKey(_parsed, iScale.axis, max, true).hi + 1,\n // @ts-expect-error Need to fix types on _lookupByKey\n animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max), true).hi + 1),\n start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n }\n\n return {start, count};\n}\n\n/**\n * Checks if the scale ranges have changed.\n * @param {object} meta - dataset meta.\n * @returns {boolean}\n * @private\n */\nexport function _scaleRangesChanged(meta) {\n const {xScale, yScale, _scaleRanges} = meta;\n const newRanges = {\n xmin: xScale.min,\n xmax: xScale.max,\n ymin: yScale.min,\n ymax: yScale.max\n };\n if (!_scaleRanges) {\n meta._scaleRanges = newRanges;\n return true;\n }\n const changed = _scaleRanges.xmin !== xScale.min\n\t\t|| _scaleRanges.xmax !== xScale.max\n\t\t|| _scaleRanges.ymin !== yScale.min\n\t\t|| _scaleRanges.ymax !== yScale.max;\n\n Object.assign(_scaleRanges, newRanges);\n return changed;\n}\n","import {PI, TAU, HALF_PI} from './helpers.math.js';\n\nconst atEdge = (t: number) => t === 0 || t === 1;\nconst elasticIn = (t: number, s: number, p: number) => -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\nconst elasticOut = (t: number, s: number, p: number) => Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\n\n/**\n * Easing functions adapted from Robert Penner's easing equations.\n * @namespace Chart.helpers.easing.effects\n * @see http://www.robertpenner.com/easing/\n */\nconst effects = {\n linear: (t: number) => t,\n\n easeInQuad: (t: number) => t * t,\n\n easeOutQuad: (t: number) => -t * (t - 2),\n\n easeInOutQuad: (t: number) => ((t /= 0.5) < 1)\n ? 0.5 * t * t\n : -0.5 * ((--t) * (t - 2) - 1),\n\n easeInCubic: (t: number) => t * t * t,\n\n easeOutCubic: (t: number) => (t -= 1) * t * t + 1,\n\n easeInOutCubic: (t: number) => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t\n : 0.5 * ((t -= 2) * t * t + 2),\n\n easeInQuart: (t: number) => t * t * t * t,\n\n easeOutQuart: (t: number) => -((t -= 1) * t * t * t - 1),\n\n easeInOutQuart: (t: number) => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t\n : -0.5 * ((t -= 2) * t * t * t - 2),\n\n easeInQuint: (t: number) => t * t * t * t * t,\n\n easeOutQuint: (t: number) => (t -= 1) * t * t * t * t + 1,\n\n easeInOutQuint: (t: number) => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t * t\n : 0.5 * ((t -= 2) * t * t * t * t + 2),\n\n easeInSine: (t: number) => -Math.cos(t * HALF_PI) + 1,\n\n easeOutSine: (t: number) => Math.sin(t * HALF_PI),\n\n easeInOutSine: (t: number) => -0.5 * (Math.cos(PI * t) - 1),\n\n easeInExpo: (t: number) => (t === 0) ? 0 : Math.pow(2, 10 * (t - 1)),\n\n easeOutExpo: (t: number) => (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1,\n\n easeInOutExpo: (t: number) => atEdge(t) ? t : t < 0.5\n ? 0.5 * Math.pow(2, 10 * (t * 2 - 1))\n : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2),\n\n easeInCirc: (t: number) => (t >= 1) ? t : -(Math.sqrt(1 - t * t) - 1),\n\n easeOutCirc: (t: number) => Math.sqrt(1 - (t -= 1) * t),\n\n easeInOutCirc: (t: number) => ((t /= 0.5) < 1)\n ? -0.5 * (Math.sqrt(1 - t * t) - 1)\n : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),\n\n easeInElastic: (t: number) => atEdge(t) ? t : elasticIn(t, 0.075, 0.3),\n\n easeOutElastic: (t: number) => atEdge(t) ? t : elasticOut(t, 0.075, 0.3),\n\n easeInOutElastic(t: number) {\n const s = 0.1125;\n const p = 0.45;\n return atEdge(t) ? t :\n t < 0.5\n ? 0.5 * elasticIn(t * 2, s, p)\n : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p);\n },\n\n easeInBack(t: number) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n },\n\n easeOutBack(t: number) {\n const s = 1.70158;\n return (t -= 1) * t * ((s + 1) * t + s) + 1;\n },\n\n easeInOutBack(t: number) {\n let s = 1.70158;\n if ((t /= 0.5) < 1) {\n return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\n }\n return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\n },\n\n easeInBounce: (t: number) => 1 - effects.easeOutBounce(1 - t),\n\n easeOutBounce(t: number) {\n const m = 7.5625;\n const d = 2.75;\n if (t < (1 / d)) {\n return m * t * t;\n }\n if (t < (2 / d)) {\n return m * (t -= (1.5 / d)) * t + 0.75;\n }\n if (t < (2.5 / d)) {\n return m * (t -= (2.25 / d)) * t + 0.9375;\n }\n return m * (t -= (2.625 / d)) * t + 0.984375;\n },\n\n easeInOutBounce: (t: number) => (t < 0.5)\n ? effects.easeInBounce(t * 2) * 0.5\n : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5,\n} as const;\n\nexport type EasingFunction = keyof typeof effects\n\nexport default effects;\n","import {Color} from '@kurkle/color';\n\nexport function isPatternOrGradient(value: unknown): value is CanvasPattern | CanvasGradient {\n if (value && typeof value === 'object') {\n const type = value.toString();\n return type === '[object CanvasPattern]' || type === '[object CanvasGradient]';\n }\n\n return false;\n}\n\nexport function color(value: CanvasGradient): CanvasGradient;\nexport function color(value: CanvasPattern): CanvasPattern;\nexport function color(\n value:\n | string\n | { r: number; g: number; b: number; a: number }\n | [number, number, number]\n | [number, number, number, number]\n): Color;\nexport function color(value) {\n return isPatternOrGradient(value) ? value : new Color(value);\n}\n\nexport function getHoverColor(value: CanvasGradient): CanvasGradient;\nexport function getHoverColor(value: CanvasPattern): CanvasPattern;\nexport function getHoverColor(value: string): string;\nexport function getHoverColor(value) {\n return isPatternOrGradient(value)\n ? value\n : new Color(value).saturate(0.5).darken(0.1).hexString();\n}\n","const numbers = ['x', 'y', 'borderWidth', 'radius', 'tension'];\nconst colors = ['color', 'borderColor', 'backgroundColor'];\n\nexport function applyAnimationsDefaults(defaults) {\n defaults.set('animation', {\n delay: undefined,\n duration: 1000,\n easing: 'easeOutQuart',\n fn: undefined,\n from: undefined,\n loop: undefined,\n to: undefined,\n type: undefined,\n });\n\n defaults.describe('animation', {\n _fallback: false,\n _indexable: false,\n _scriptable: (name) => name !== 'onProgress' && name !== 'onComplete' && name !== 'fn',\n });\n\n defaults.set('animations', {\n colors: {\n type: 'color',\n properties: colors\n },\n numbers: {\n type: 'number',\n properties: numbers\n },\n });\n\n defaults.describe('animations', {\n _fallback: 'animation',\n });\n\n defaults.set('transitions', {\n active: {\n animation: {\n duration: 400\n }\n },\n resize: {\n animation: {\n duration: 0\n }\n },\n show: {\n animations: {\n colors: {\n from: 'transparent'\n },\n visible: {\n type: 'boolean',\n duration: 0 // show immediately\n },\n }\n },\n hide: {\n animations: {\n colors: {\n to: 'transparent'\n },\n visible: {\n type: 'boolean',\n easing: 'linear',\n fn: v => v | 0 // for keeping the dataset visible all the way through the animation\n },\n }\n }\n });\n}\n","\nconst intlCache = new Map();\n\nfunction getNumberFormat(locale: string, options?: Intl.NumberFormatOptions) {\n options = options || {};\n const cacheKey = locale + JSON.stringify(options);\n let formatter = intlCache.get(cacheKey);\n if (!formatter) {\n formatter = new Intl.NumberFormat(locale, options);\n intlCache.set(cacheKey, formatter);\n }\n return formatter;\n}\n\nexport function formatNumber(num: number, locale: string, options?: Intl.NumberFormatOptions) {\n return getNumberFormat(locale, options).format(num);\n}\n","import {isArray} from '../helpers/helpers.core.js';\nimport {formatNumber} from '../helpers/helpers.intl.js';\nimport {log10} from '../helpers/helpers.math.js';\n\n/**\n * Namespace to hold formatters for different types of ticks\n * @namespace Chart.Ticks.formatters\n */\nconst formatters = {\n /**\n * Formatter for value labels\n * @method Chart.Ticks.formatters.values\n * @param value the value to display\n * @return {string|string[]} the label to display\n */\n values(value) {\n return isArray(value) ? /** @type {string[]} */ (value) : '' + value;\n },\n\n /**\n * Formatter for numeric ticks\n * @method Chart.Ticks.formatters.numeric\n * @param tickValue {number} the value to be formatted\n * @param index {number} the position of the tickValue parameter in the ticks array\n * @param ticks {object[]} the list of ticks being converted\n * @return {string} string representation of the tickValue parameter\n */\n numeric(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0'; // never show decimal places for 0\n }\n\n const locale = this.chart.options.locale;\n let notation;\n let delta = tickValue; // This is used when there are less than 2 ticks as the tick interval.\n\n if (ticks.length > 1) {\n // all ticks are small or there huge numbers; use scientific notation\n const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value));\n if (maxTick < 1e-4 || maxTick > 1e+15) {\n notation = 'scientific';\n }\n\n delta = calculateDelta(tickValue, ticks);\n }\n\n const logDelta = log10(Math.abs(delta));\n\n // When datasets have values approaching Number.MAX_VALUE, the tick calculations might result in\n // infinity and eventually NaN. Passing NaN for minimumFractionDigits or maximumFractionDigits\n // will make the number formatter throw. So instead we check for isNaN and use a fallback value.\n //\n // toFixed has a max of 20 decimal places\n const numDecimal = isNaN(logDelta) ? 1 : Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n\n const options = {notation, minimumFractionDigits: numDecimal, maximumFractionDigits: numDecimal};\n Object.assign(options, this.options.ticks.format);\n\n return formatNumber(tickValue, locale, options);\n },\n\n\n /**\n * Formatter for logarithmic ticks\n * @method Chart.Ticks.formatters.logarithmic\n * @param tickValue {number} the value to be formatted\n * @param index {number} the position of the tickValue parameter in the ticks array\n * @param ticks {object[]} the list of ticks being converted\n * @return {string} string representation of the tickValue parameter\n */\n logarithmic(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const remain = ticks[index].significand || (tickValue / (Math.pow(10, Math.floor(log10(tickValue)))));\n if ([1, 2, 3, 5, 10, 15].includes(remain) || index > 0.8 * ticks.length) {\n return formatters.numeric.call(this, tickValue, index, ticks);\n }\n return '';\n }\n\n};\n\n\nfunction calculateDelta(tickValue, ticks) {\n // Figure out how many digits to show\n // The space between the first two ticks might be smaller than normal spacing\n let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value;\n\n // If we have a number like 2.5 as the delta, figure out how many decimal places we need\n if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n // not an integer\n delta = tickValue - Math.floor(tickValue);\n }\n return delta;\n}\n\n/**\n * Namespace to hold static tick generation functions\n * @namespace Chart.Ticks\n */\nexport default {formatters};\n","import {getHoverColor} from '../helpers/helpers.color.js';\nimport {isObject, merge, valueOrDefault} from '../helpers/helpers.core.js';\nimport {applyAnimationsDefaults} from './core.animations.defaults.js';\nimport {applyLayoutsDefaults} from './core.layouts.defaults.js';\nimport {applyScaleDefaults} from './core.scale.defaults.js';\n\nexport const overrides = Object.create(null);\nexport const descriptors = Object.create(null);\n\n/**\n * @param {object} node\n * @param {string} key\n * @return {object}\n */\nfunction getScope(node, key) {\n if (!key) {\n return node;\n }\n const keys = key.split('.');\n for (let i = 0, n = keys.length; i < n; ++i) {\n const k = keys[i];\n node = node[k] || (node[k] = Object.create(null));\n }\n return node;\n}\n\nfunction set(root, scope, values) {\n if (typeof scope === 'string') {\n return merge(getScope(root, scope), values);\n }\n return merge(getScope(root, ''), scope);\n}\n\n/**\n * Please use the module's default export which provides a singleton instance\n * Note: class is exported for typedoc\n */\nexport class Defaults {\n constructor(_descriptors, _appliers) {\n this.animation = undefined;\n this.backgroundColor = 'rgba(0,0,0,0.1)';\n this.borderColor = 'rgba(0,0,0,0.1)';\n this.color = '#666';\n this.datasets = {};\n this.devicePixelRatio = (context) => context.chart.platform.getDevicePixelRatio();\n this.elements = {};\n this.events = [\n 'mousemove',\n 'mouseout',\n 'click',\n 'touchstart',\n 'touchmove'\n ];\n this.font = {\n family: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n size: 12,\n style: 'normal',\n lineHeight: 1.2,\n weight: null\n };\n this.hover = {};\n this.hoverBackgroundColor = (ctx, options) => getHoverColor(options.backgroundColor);\n this.hoverBorderColor = (ctx, options) => getHoverColor(options.borderColor);\n this.hoverColor = (ctx, options) => getHoverColor(options.color);\n this.indexAxis = 'x';\n this.interaction = {\n mode: 'nearest',\n intersect: true,\n includeInvisible: false\n };\n this.maintainAspectRatio = true;\n this.onHover = null;\n this.onClick = null;\n this.parsing = true;\n this.plugins = {};\n this.responsive = true;\n this.scale = undefined;\n this.scales = {};\n this.showLine = true;\n this.drawActiveElementsOnTop = true;\n\n this.describe(_descriptors);\n this.apply(_appliers);\n }\n\n /**\n\t * @param {string|object} scope\n\t * @param {object} [values]\n\t */\n set(scope, values) {\n return set(this, scope, values);\n }\n\n /**\n\t * @param {string} scope\n\t */\n get(scope) {\n return getScope(this, scope);\n }\n\n /**\n\t * @param {string|object} scope\n\t * @param {object} [values]\n\t */\n describe(scope, values) {\n return set(descriptors, scope, values);\n }\n\n override(scope, values) {\n return set(overrides, scope, values);\n }\n\n /**\n\t * Routes the named defaults to fallback to another scope/name.\n\t * This routing is useful when those target values, like defaults.color, are changed runtime.\n\t * If the values would be copied, the runtime change would not take effect. By routing, the\n\t * fallback is evaluated at each access, so its always up to date.\n\t *\n\t * Example:\n\t *\n\t * \tdefaults.route('elements.arc', 'backgroundColor', '', 'color')\n\t * - reads the backgroundColor from defaults.color when undefined locally\n\t *\n\t * @param {string} scope Scope this route applies to.\n\t * @param {string} name Property name that should be routed to different namespace when not defined here.\n\t * @param {string} targetScope The namespace where those properties should be routed to.\n\t * Empty string ('') is the root of defaults.\n\t * @param {string} targetName The target name in the target scope the property should be routed to.\n\t */\n route(scope, name, targetScope, targetName) {\n const scopeObject = getScope(this, scope);\n const targetScopeObject = getScope(this, targetScope);\n const privateName = '_' + name;\n\n Object.defineProperties(scopeObject, {\n // A private property is defined to hold the actual value, when this property is set in its scope (set in the setter)\n [privateName]: {\n value: scopeObject[name],\n writable: true\n },\n // The actual property is defined as getter/setter so we can do the routing when value is not locally set.\n [name]: {\n enumerable: true,\n get() {\n const local = this[privateName];\n const target = targetScopeObject[targetName];\n if (isObject(local)) {\n return Object.assign({}, target, local);\n }\n return valueOrDefault(local, target);\n },\n set(value) {\n this[privateName] = value;\n }\n }\n });\n }\n\n apply(appliers) {\n appliers.forEach((apply) => apply(this));\n }\n}\n\n// singleton instance\nexport default /* #__PURE__ */ new Defaults({\n _scriptable: (name) => !name.startsWith('on'),\n _indexable: (name) => name !== 'events',\n hover: {\n _fallback: 'interaction'\n },\n interaction: {\n _scriptable: false,\n _indexable: false,\n }\n}, [applyAnimationsDefaults, applyLayoutsDefaults, applyScaleDefaults]);\n","export function applyLayoutsDefaults(defaults) {\n defaults.set('layout', {\n autoPadding: true,\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n });\n}\n","import Ticks from './core.ticks.js';\n\nexport function applyScaleDefaults(defaults) {\n defaults.set('scale', {\n display: true,\n offset: false,\n reverse: false,\n beginAtZero: false,\n\n /**\n * Scale boundary strategy (bypassed by min/max time options)\n * - `data`: make sure data are fully visible, ticks outside are removed\n * - `ticks`: make sure ticks are fully visible, data outside are truncated\n * @see https://github.com/chartjs/Chart.js/pull/4556\n * @since 3.0.0\n */\n bounds: 'ticks',\n\n clip: true,\n\n /**\n * Addition grace added to max and reduced from min data value.\n * @since 3.0.0\n */\n grace: 0,\n\n // grid line settings\n grid: {\n display: true,\n lineWidth: 1,\n drawOnChartArea: true,\n drawTicks: true,\n tickLength: 8,\n tickWidth: (_ctx, options) => options.lineWidth,\n tickColor: (_ctx, options) => options.color,\n offset: false,\n },\n\n border: {\n display: true,\n dash: [],\n dashOffset: 0.0,\n width: 1\n },\n\n // scale title\n title: {\n // display property\n display: false,\n\n // actual label\n text: '',\n\n // top/bottom padding\n padding: {\n top: 4,\n bottom: 4\n }\n },\n\n // label settings\n ticks: {\n minRotation: 0,\n maxRotation: 50,\n mirror: false,\n textStrokeWidth: 0,\n textStrokeColor: '',\n padding: 3,\n display: true,\n autoSkip: true,\n autoSkipPadding: 3,\n labelOffset: 0,\n // We pass through arrays to be rendered as multiline labels, we convert Others to strings here.\n callback: Ticks.formatters.values,\n minor: {},\n major: {},\n align: 'center',\n crossAlign: 'near',\n\n showLabelBackdrop: false,\n backdropColor: 'rgba(255, 255, 255, 0.75)',\n backdropPadding: 2,\n }\n });\n\n defaults.route('scale.ticks', 'color', '', 'color');\n defaults.route('scale.grid', 'color', '', 'borderColor');\n defaults.route('scale.border', 'color', '', 'borderColor');\n defaults.route('scale.title', 'color', '', 'color');\n\n defaults.describe('scale', {\n _fallback: false,\n _scriptable: (name) => !name.startsWith('before') && !name.startsWith('after') && name !== 'callback' && name !== 'parser',\n _indexable: (name) => name !== 'borderDash' && name !== 'tickBorderDash' && name !== 'dash',\n });\n\n defaults.describe('scales', {\n _fallback: 'scale',\n });\n\n defaults.describe('scale.ticks', {\n _scriptable: (name) => name !== 'backdropPadding' && name !== 'callback',\n _indexable: (name) => name !== 'backdropPadding',\n });\n}\n","import type {\n Chart,\n Point,\n FontSpec,\n CanvasFontSpec,\n PointStyle,\n RenderTextOpts,\n BackdropOptions\n} from '../types/index.js';\nimport type {\n TRBL,\n SplinePoint,\n RoundedRect,\n TRBLCorners\n} from '../types/geometric.js';\nimport {isArray, isNullOrUndef} from './helpers.core.js';\nimport {PI, TAU, HALF_PI, QUARTER_PI, TWO_THIRDS_PI, RAD_PER_DEG} from './helpers.math.js';\n\n/**\n * Converts the given font object into a CSS font string.\n * @param font - A font object.\n * @return The CSS font string. See https://developer.mozilla.org/en-US/docs/Web/CSS/font\n * @private\n */\nexport function toFontString(font: FontSpec) {\n if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n return null;\n }\n\n return (font.style ? font.style + ' ' : '')\n\t\t+ (font.weight ? font.weight + ' ' : '')\n\t\t+ font.size + 'px '\n\t\t+ font.family;\n}\n\n/**\n * @private\n */\nexport function _measureText(\n ctx: CanvasRenderingContext2D,\n data: Record,\n gc: string[],\n longest: number,\n string: string\n) {\n let textWidth = data[string];\n if (!textWidth) {\n textWidth = data[string] = ctx.measureText(string).width;\n gc.push(string);\n }\n if (textWidth > longest) {\n longest = textWidth;\n }\n return longest;\n}\n\ntype Thing = string | undefined | null\ntype Things = (Thing | Thing[])[]\n\n/**\n * @private\n */\n// eslint-disable-next-line complexity\nexport function _longestText(\n ctx: CanvasRenderingContext2D,\n font: string,\n arrayOfThings: Things,\n cache?: {data?: Record, garbageCollect?: string[], font?: string}\n) {\n cache = cache || {};\n let data = cache.data = cache.data || {};\n let gc = cache.garbageCollect = cache.garbageCollect || [];\n\n if (cache.font !== font) {\n data = cache.data = {};\n gc = cache.garbageCollect = [];\n cache.font = font;\n }\n\n ctx.save();\n\n ctx.font = font;\n let longest = 0;\n const ilen = arrayOfThings.length;\n let i: number, j: number, jlen: number, thing: Thing | Thing[], nestedThing: Thing | Thing[];\n for (i = 0; i < ilen; i++) {\n thing = arrayOfThings[i];\n\n // Undefined strings and arrays should not be measured\n if (thing !== undefined && thing !== null && !isArray(thing)) {\n longest = _measureText(ctx, data, gc, longest, thing);\n } else if (isArray(thing)) {\n // if it is an array lets measure each element\n // to do maybe simplify this function a bit so we can do this more recursively?\n for (j = 0, jlen = thing.length; j < jlen; j++) {\n nestedThing = thing[j];\n // Undefined strings and arrays should not be measured\n if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n longest = _measureText(ctx, data, gc, longest, nestedThing);\n }\n }\n }\n }\n\n ctx.restore();\n\n const gcLen = gc.length / 2;\n if (gcLen > arrayOfThings.length) {\n for (i = 0; i < gcLen; i++) {\n delete data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n return longest;\n}\n\n/**\n * Returns the aligned pixel value to avoid anti-aliasing blur\n * @param chart - The chart instance.\n * @param pixel - A pixel value.\n * @param width - The width of the element.\n * @returns The aligned pixel value.\n * @private\n */\nexport function _alignPixel(chart: Chart, pixel: number, width: number) {\n const devicePixelRatio = chart.currentDevicePixelRatio;\n const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0;\n return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n}\n\n/**\n * Clears the entire canvas.\n */\nexport function clearCanvas(canvas?: HTMLCanvasElement, ctx?: CanvasRenderingContext2D) {\n if (!ctx && !canvas) {\n return;\n }\n\n ctx = ctx || canvas.getContext('2d');\n\n ctx.save();\n // canvas.width and canvas.height do not consider the canvas transform,\n // while clearRect does\n ctx.resetTransform();\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.restore();\n}\n\nexport interface DrawPointOptions {\n pointStyle: PointStyle;\n rotation?: number;\n radius: number;\n borderWidth: number;\n}\n\nexport function drawPoint(\n ctx: CanvasRenderingContext2D,\n options: DrawPointOptions,\n x: number,\n y: number\n) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n drawPointLegend(ctx, options, x, y, null);\n}\n\n// eslint-disable-next-line complexity\nexport function drawPointLegend(\n ctx: CanvasRenderingContext2D,\n options: DrawPointOptions,\n x: number,\n y: number,\n w: number\n) {\n let type: string, xOffset: number, yOffset: number, size: number, cornerRadius: number, width: number, xOffsetW: number, yOffsetW: number;\n const style = options.pointStyle;\n const rotation = options.rotation;\n const radius = options.radius;\n let rad = (rotation || 0) * RAD_PER_DEG;\n\n if (style && typeof style === 'object') {\n type = style.toString();\n if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n ctx.save();\n ctx.translate(x, y);\n ctx.rotate(rad);\n ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n ctx.restore();\n return;\n }\n }\n\n if (isNaN(radius) || radius <= 0) {\n return;\n }\n\n ctx.beginPath();\n\n switch (style) {\n // Default includes circle\n default:\n if (w) {\n ctx.ellipse(x, y, w / 2, radius, 0, 0, TAU);\n } else {\n ctx.arc(x, y, radius, 0, TAU);\n }\n ctx.closePath();\n break;\n case 'triangle':\n width = w ? w / 2 : radius;\n ctx.moveTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n ctx.closePath();\n break;\n case 'rectRounded':\n // NOTE: the rounded rect implementation changed to use `arc` instead of\n // `quadraticCurveTo` since it generates better results when rect is\n // almost a circle. 0.516 (instead of 0.5) produces results with visually\n // closer proportion to the previous impl and it is inscribed in the\n // circle with `radius`. For more details, see the following PRs:\n // https://github.com/chartjs/Chart.js/issues/5597\n // https://github.com/chartjs/Chart.js/issues/5858\n cornerRadius = radius * 0.516;\n size = radius - cornerRadius;\n xOffset = Math.cos(rad + QUARTER_PI) * size;\n xOffsetW = Math.cos(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size);\n yOffset = Math.sin(rad + QUARTER_PI) * size;\n yOffsetW = Math.sin(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size);\n ctx.arc(x - xOffsetW, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n ctx.arc(x + yOffsetW, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n ctx.arc(x + xOffsetW, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n ctx.arc(x - yOffsetW, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n ctx.closePath();\n break;\n case 'rect':\n if (!rotation) {\n size = Math.SQRT1_2 * radius;\n width = w ? w / 2 : size;\n ctx.rect(x - width, y - size, 2 * width, 2 * size);\n break;\n }\n rad += QUARTER_PI;\n /* falls through */\n case 'rectRot':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n ctx.closePath();\n break;\n case 'crossRot':\n rad += QUARTER_PI;\n /* falls through */\n case 'cross':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n break;\n case 'star':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n rad += QUARTER_PI;\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n break;\n case 'line':\n xOffset = w ? w / 2 : Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n break;\n case 'dash':\n ctx.moveTo(x, y);\n ctx.lineTo(x + Math.cos(rad) * (w ? w / 2 : radius), y + Math.sin(rad) * radius);\n break;\n case false:\n ctx.closePath();\n break;\n }\n\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n}\n\n/**\n * Returns true if the point is inside the rectangle\n * @param point - The point to test\n * @param area - The rectangle\n * @param margin - allowed margin\n * @private\n */\nexport function _isPointInArea(\n point: Point,\n area: TRBL,\n margin?: number\n) {\n margin = margin || 0.5; // margin - default is to match rounded decimals\n\n return !area || (point && point.x > area.left - margin && point.x < area.right + margin &&\n\t\tpoint.y > area.top - margin && point.y < area.bottom + margin);\n}\n\nexport function clipArea(ctx: CanvasRenderingContext2D, area: TRBL) {\n ctx.save();\n ctx.beginPath();\n ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n ctx.clip();\n}\n\nexport function unclipArea(ctx: CanvasRenderingContext2D) {\n ctx.restore();\n}\n\n/**\n * @private\n */\nexport function _steppedLineTo(\n ctx: CanvasRenderingContext2D,\n previous: Point,\n target: Point,\n flip?: boolean,\n mode?: string\n) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n if (mode === 'middle') {\n const midpoint = (previous.x + target.x) / 2.0;\n ctx.lineTo(midpoint, previous.y);\n ctx.lineTo(midpoint, target.y);\n } else if (mode === 'after' !== !!flip) {\n ctx.lineTo(previous.x, target.y);\n } else {\n ctx.lineTo(target.x, previous.y);\n }\n ctx.lineTo(target.x, target.y);\n}\n\n/**\n * @private\n */\nexport function _bezierCurveTo(\n ctx: CanvasRenderingContext2D,\n previous: SplinePoint,\n target: SplinePoint,\n flip?: boolean\n) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n ctx.bezierCurveTo(\n flip ? previous.cp1x : previous.cp2x,\n flip ? previous.cp1y : previous.cp2y,\n flip ? target.cp2x : target.cp1x,\n flip ? target.cp2y : target.cp1y,\n target.x,\n target.y);\n}\n\nfunction setRenderOpts(ctx: CanvasRenderingContext2D, opts: RenderTextOpts) {\n if (opts.translation) {\n ctx.translate(opts.translation[0], opts.translation[1]);\n }\n\n if (!isNullOrUndef(opts.rotation)) {\n ctx.rotate(opts.rotation);\n }\n\n if (opts.color) {\n ctx.fillStyle = opts.color;\n }\n\n if (opts.textAlign) {\n ctx.textAlign = opts.textAlign;\n }\n\n if (opts.textBaseline) {\n ctx.textBaseline = opts.textBaseline;\n }\n}\n\nfunction decorateText(\n ctx: CanvasRenderingContext2D,\n x: number,\n y: number,\n line: string,\n opts: RenderTextOpts\n) {\n if (opts.strikethrough || opts.underline) {\n /**\n * Now that IE11 support has been dropped, we can use more\n * of the TextMetrics object. The actual bounding boxes\n * are unflagged in Chrome, Firefox, Edge, and Safari so they\n * can be safely used.\n * See https://developer.mozilla.org/en-US/docs/Web/API/TextMetrics#Browser_compatibility\n */\n const metrics = ctx.measureText(line);\n const left = x - metrics.actualBoundingBoxLeft;\n const right = x + metrics.actualBoundingBoxRight;\n const top = y - metrics.actualBoundingBoxAscent;\n const bottom = y + metrics.actualBoundingBoxDescent;\n const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom;\n\n ctx.strokeStyle = ctx.fillStyle;\n ctx.beginPath();\n ctx.lineWidth = opts.decorationWidth || 2;\n ctx.moveTo(left, yDecoration);\n ctx.lineTo(right, yDecoration);\n ctx.stroke();\n }\n}\n\nfunction drawBackdrop(ctx: CanvasRenderingContext2D, opts: BackdropOptions) {\n const oldColor = ctx.fillStyle;\n\n ctx.fillStyle = opts.color as string;\n ctx.fillRect(opts.left, opts.top, opts.width, opts.height);\n ctx.fillStyle = oldColor;\n}\n\n/**\n * Render text onto the canvas\n */\nexport function renderText(\n ctx: CanvasRenderingContext2D,\n text: string | string[],\n x: number,\n y: number,\n font: CanvasFontSpec,\n opts: RenderTextOpts = {}\n) {\n const lines = isArray(text) ? text : [text];\n const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n let i: number, line: string;\n\n ctx.save();\n ctx.font = font.string;\n setRenderOpts(ctx, opts);\n\n for (i = 0; i < lines.length; ++i) {\n line = lines[i];\n\n if (opts.backdrop) {\n drawBackdrop(ctx, opts.backdrop);\n }\n\n if (stroke) {\n if (opts.strokeColor) {\n ctx.strokeStyle = opts.strokeColor;\n }\n\n if (!isNullOrUndef(opts.strokeWidth)) {\n ctx.lineWidth = opts.strokeWidth;\n }\n\n ctx.strokeText(line, x, y, opts.maxWidth);\n }\n\n ctx.fillText(line, x, y, opts.maxWidth);\n decorateText(ctx, x, y, line, opts);\n\n y += Number(font.lineHeight);\n }\n\n ctx.restore();\n}\n\n/**\n * Add a path of a rectangle with rounded corners to the current sub-path\n * @param ctx - Context\n * @param rect - Bounding rect\n */\nexport function addRoundedRectPath(\n ctx: CanvasRenderingContext2D,\n rect: RoundedRect & { radius: TRBLCorners }\n) {\n const {x, y, w, h, radius} = rect;\n\n // top left arc\n ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, 1.5 * PI, PI, true);\n\n // line from top left to bottom left\n ctx.lineTo(x, y + h - radius.bottomLeft);\n\n // bottom left arc\n ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true);\n\n // line from bottom left to bottom right\n ctx.lineTo(x + w - radius.bottomRight, y + h);\n\n // bottom right arc\n ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true);\n\n // line from bottom right to top right\n ctx.lineTo(x + w, y + radius.topRight);\n\n // top right arc\n ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true);\n\n // line from top right to top left\n ctx.lineTo(x + radius.topLeft, y);\n}\n","import defaults from '../core/core.defaults.js';\nimport {isArray, isObject, toDimension, valueOrDefault} from './helpers.core.js';\nimport {toFontString} from './helpers.canvas.js';\nimport type {ChartArea, FontSpec, Point} from '../types/index.js';\nimport type {TRBL, TRBLCorners} from '../types/geometric.js';\n\nconst LINE_HEIGHT = /^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/;\nconst FONT_STYLE = /^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/;\n\n/**\n * @alias Chart.helpers.options\n * @namespace\n */\n/**\n * Converts the given line height `value` in pixels for a specific font `size`.\n * @param value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\n * @param size - The font size (in pixels) used to resolve relative `value`.\n * @returns The effective line height in pixels (size * 1.2 if value is invalid).\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\n * @since 2.7.0\n */\nexport function toLineHeight(value: number | string, size: number): number {\n const matches = ('' + value).match(LINE_HEIGHT);\n if (!matches || matches[1] === 'normal') {\n return size * 1.2;\n }\n\n value = +matches[2];\n\n switch (matches[3]) {\n case 'px':\n return value;\n case '%':\n value /= 100;\n break;\n default:\n break;\n }\n\n return size * value;\n}\n\nconst numberOrZero = (v: unknown) => +v || 0;\n\n/**\n * @param value\n * @param props\n */\nexport function _readValueToProps(value: number | Record, props: K[]): Record;\nexport function _readValueToProps(value: number | Record, props: Record): Record;\nexport function _readValueToProps(value: number | Record, props: string[] | Record) {\n const ret = {};\n const objProps = isObject(props);\n const keys = objProps ? Object.keys(props) : props;\n const read = isObject(value)\n ? objProps\n ? prop => valueOrDefault(value[prop], value[props[prop]])\n : prop => value[prop]\n : () => value;\n\n for (const prop of keys) {\n ret[prop] = numberOrZero(read(prop));\n }\n return ret;\n}\n\n/**\n * Converts the given value into a TRBL object.\n * @param value - If a number, set the value to all TRBL component,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * x / y are shorthands for same value for left/right and top/bottom.\n * @returns The padding values (top, right, bottom, left)\n * @since 3.0.0\n */\nexport function toTRBL(value: number | TRBL | Point) {\n return _readValueToProps(value, {top: 'y', right: 'x', bottom: 'y', left: 'x'});\n}\n\n/**\n * Converts the given value into a TRBL corners object (similar with css border-radius).\n * @param value - If a number, set the value to all TRBL corner components,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * @returns The TRBL corner values (topLeft, topRight, bottomLeft, bottomRight)\n * @since 3.0.0\n */\nexport function toTRBLCorners(value: number | TRBLCorners) {\n return _readValueToProps(value, ['topLeft', 'topRight', 'bottomLeft', 'bottomRight']);\n}\n\n/**\n * Converts the given value into a padding object with pre-computed width/height.\n * @param value - If a number, set the value to all TRBL component,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * x / y are shorthands for same value for left/right and top/bottom.\n * @returns The padding values (top, right, bottom, left, width, height)\n * @since 2.7.0\n */\nexport function toPadding(value?: number | TRBL): ChartArea {\n const obj = toTRBL(value) as ChartArea;\n\n obj.width = obj.left + obj.right;\n obj.height = obj.top + obj.bottom;\n\n return obj;\n}\n\n/**\n * Parses font options and returns the font object.\n * @param options - A object that contains font options to be parsed.\n * @param fallback - A object that contains fallback font options.\n * @return The font object.\n * @private\n */\n\nexport function toFont(options: Partial, fallback?: Partial) {\n options = options || {};\n fallback = fallback || defaults.font as FontSpec;\n\n let size = valueOrDefault(options.size, fallback.size);\n\n if (typeof size === 'string') {\n size = parseInt(size, 10);\n }\n let style = valueOrDefault(options.style, fallback.style);\n if (style && !('' + style).match(FONT_STYLE)) {\n console.warn('Invalid font style specified: \"' + style + '\"');\n style = undefined;\n }\n\n const font = {\n family: valueOrDefault(options.family, fallback.family),\n lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size),\n size,\n style,\n weight: valueOrDefault(options.weight, fallback.weight),\n string: ''\n };\n\n font.string = toFontString(font);\n return font;\n}\n\n/**\n * Evaluates the given `inputs` sequentially and returns the first defined value.\n * @param inputs - An array of values, falling back to the last value.\n * @param context - If defined and the current value is a function, the value\n * is called with `context` as first argument and the result becomes the new input.\n * @param index - If defined and the current value is an array, the value\n * at `index` become the new input.\n * @param info - object to return information about resolution in\n * @param info.cacheable - Will be set to `false` if option is not cacheable.\n * @since 2.7.0\n */\nexport function resolve(inputs: Array, context?: object, index?: number, info?: { cacheable: boolean }) {\n let cacheable = true;\n let i: number, ilen: number, value: unknown;\n\n for (i = 0, ilen = inputs.length; i < ilen; ++i) {\n value = inputs[i];\n if (value === undefined) {\n continue;\n }\n if (context !== undefined && typeof value === 'function') {\n value = value(context);\n cacheable = false;\n }\n if (index !== undefined && isArray(value)) {\n value = value[index % value.length];\n cacheable = false;\n }\n if (value !== undefined) {\n if (info && !cacheable) {\n info.cacheable = false;\n }\n return value;\n }\n }\n}\n\n/**\n * @param minmax\n * @param grace\n * @param beginAtZero\n * @private\n */\nexport function _addGrace(minmax: { min: number; max: number; }, grace: number | string, beginAtZero: boolean) {\n const {min, max} = minmax;\n const change = toDimension(grace, (max - min) / 2);\n const keepZero = (value: number, add: number) => beginAtZero && value === 0 ? 0 : value + add;\n return {\n min: keepZero(min, -Math.abs(change)),\n max: keepZero(max, change)\n };\n}\n\n/**\n * Create a context inheriting parentContext\n * @param parentContext\n * @param context\n * @returns\n */\nexport function createContext(parentContext: null, context: T): T;\nexport function createContext(parentContext: P, context: T): P & T;\nexport function createContext(parentContext: object, context: object) {\n return Object.assign(Object.create(parentContext), context);\n}\n","/* eslint-disable @typescript-eslint/no-use-before-define */\nimport type {AnyObject} from '../types/basic.js';\nimport type {ChartMeta} from '../types/index.js';\nimport type {\n ResolverObjectKey,\n ResolverCache,\n ResolverProxy,\n DescriptorDefaults,\n Descriptor,\n ContextCache,\n ContextProxy\n} from './helpers.config.types.js';\nimport {isArray, isFunction, isObject, resolveObjectKey, _capitalize} from './helpers.core.js';\n\nexport * from './helpers.config.types.js';\n\n/**\n * Creates a Proxy for resolving raw values for options.\n * @param scopes - The option scopes to look for values, in resolution order\n * @param prefixes - The prefixes for values, in resolution order.\n * @param rootScopes - The root option scopes\n * @param fallback - Parent scopes fallback\n * @param getTarget - callback for getting the target for changed values\n * @returns Proxy\n * @private\n */\nexport function _createResolver<\n T extends AnyObject[] = AnyObject[],\n R extends AnyObject[] = T\n>(\n scopes: T,\n prefixes = [''],\n rootScopes?: R,\n fallback?: ResolverObjectKey,\n getTarget = () => scopes[0]\n) {\n const finalRootScopes = rootScopes || scopes;\n if (typeof fallback === 'undefined') {\n fallback = _resolve('_fallback', scopes);\n }\n const cache: ResolverCache = {\n [Symbol.toStringTag]: 'Object',\n _cacheable: true,\n _scopes: scopes,\n _rootScopes: finalRootScopes,\n _fallback: fallback,\n _getTarget: getTarget,\n override: (scope: AnyObject) => _createResolver([scope, ...scopes], prefixes, finalRootScopes, fallback),\n };\n return new Proxy(cache, {\n /**\n * A trap for the delete operator.\n */\n deleteProperty(target, prop: string) {\n delete target[prop]; // remove from cache\n delete target._keys; // remove cached keys\n delete scopes[0][prop]; // remove from top level scope\n return true;\n },\n\n /**\n * A trap for getting property values.\n */\n get(target, prop: string) {\n return _cached(target, prop,\n () => _resolveWithPrefixes(prop, prefixes, scopes, target));\n },\n\n /**\n * A trap for Object.getOwnPropertyDescriptor.\n * Also used by Object.hasOwnProperty.\n */\n getOwnPropertyDescriptor(target, prop) {\n return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n },\n\n /**\n * A trap for Object.getPrototypeOf.\n */\n getPrototypeOf() {\n return Reflect.getPrototypeOf(scopes[0]);\n },\n\n /**\n * A trap for the in operator.\n */\n has(target, prop: string) {\n return getKeysFromAllScopes(target).includes(prop);\n },\n\n /**\n * A trap for Object.getOwnPropertyNames and Object.getOwnPropertySymbols.\n */\n ownKeys(target) {\n return getKeysFromAllScopes(target);\n },\n\n /**\n * A trap for setting property values.\n */\n set(target, prop: string, value) {\n const storage = target._storage || (target._storage = getTarget());\n target[prop] = storage[prop] = value; // set to top level scope + cache\n delete target._keys; // remove cached keys\n return true;\n }\n }) as ResolverProxy;\n}\n\n/**\n * Returns an Proxy for resolving option values with context.\n * @param proxy - The Proxy returned by `_createResolver`\n * @param context - Context object for scriptable/indexable options\n * @param subProxy - The proxy provided for scriptable options\n * @param descriptorDefaults - Defaults for descriptors\n * @private\n */\nexport function _attachContext<\n T extends AnyObject[] = AnyObject[],\n R extends AnyObject[] = T\n>(\n proxy: ResolverProxy,\n context: AnyObject,\n subProxy?: ResolverProxy,\n descriptorDefaults?: DescriptorDefaults\n) {\n const cache: ContextCache = {\n _cacheable: false,\n _proxy: proxy,\n _context: context,\n _subProxy: subProxy,\n _stack: new Set(),\n _descriptors: _descriptors(proxy, descriptorDefaults),\n setContext: (ctx: AnyObject) => _attachContext(proxy, ctx, subProxy, descriptorDefaults),\n override: (scope: AnyObject) => _attachContext(proxy.override(scope), context, subProxy, descriptorDefaults)\n };\n return new Proxy(cache, {\n /**\n * A trap for the delete operator.\n */\n deleteProperty(target, prop) {\n delete target[prop]; // remove from cache\n delete proxy[prop]; // remove from proxy\n return true;\n },\n\n /**\n * A trap for getting property values.\n */\n get(target, prop: string, receiver) {\n return _cached(target, prop,\n () => _resolveWithContext(target, prop, receiver));\n },\n\n /**\n * A trap for Object.getOwnPropertyDescriptor.\n * Also used by Object.hasOwnProperty.\n */\n getOwnPropertyDescriptor(target, prop) {\n return target._descriptors.allKeys\n ? Reflect.has(proxy, prop) ? {enumerable: true, configurable: true} : undefined\n : Reflect.getOwnPropertyDescriptor(proxy, prop);\n },\n\n /**\n * A trap for Object.getPrototypeOf.\n */\n getPrototypeOf() {\n return Reflect.getPrototypeOf(proxy);\n },\n\n /**\n * A trap for the in operator.\n */\n has(target, prop) {\n return Reflect.has(proxy, prop);\n },\n\n /**\n * A trap for Object.getOwnPropertyNames and Object.getOwnPropertySymbols.\n */\n ownKeys() {\n return Reflect.ownKeys(proxy);\n },\n\n /**\n * A trap for setting property values.\n */\n set(target, prop, value) {\n proxy[prop] = value; // set to proxy\n delete target[prop]; // remove from cache\n return true;\n }\n }) as ContextProxy;\n}\n\n/**\n * @private\n */\nexport function _descriptors(\n proxy: ResolverCache,\n defaults: DescriptorDefaults = {scriptable: true, indexable: true}\n): Descriptor {\n const {_scriptable = defaults.scriptable, _indexable = defaults.indexable, _allKeys = defaults.allKeys} = proxy;\n return {\n allKeys: _allKeys,\n scriptable: _scriptable,\n indexable: _indexable,\n isScriptable: isFunction(_scriptable) ? _scriptable : () => _scriptable,\n isIndexable: isFunction(_indexable) ? _indexable : () => _indexable\n };\n}\n\nconst readKey = (prefix: string, name: string) => prefix ? prefix + _capitalize(name) : name;\nconst needsSubResolver = (prop: string, value: unknown) => isObject(value) && prop !== 'adapters' &&\n (Object.getPrototypeOf(value) === null || value.constructor === Object);\n\nfunction _cached(\n target: AnyObject,\n prop: string,\n resolve: () => unknown\n) {\n if (Object.prototype.hasOwnProperty.call(target, prop) || prop === 'constructor') {\n return target[prop];\n }\n\n const value = resolve();\n // cache the resolved value\n target[prop] = value;\n return value;\n}\n\nfunction _resolveWithContext(\n target: ContextCache,\n prop: string,\n receiver: AnyObject\n) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n let value = _proxy[prop]; // resolve from proxy\n\n // resolve with context\n if (isFunction(value) && descriptors.isScriptable(prop)) {\n value = _resolveScriptable(prop, value, target, receiver);\n }\n if (isArray(value) && value.length) {\n value = _resolveArray(prop, value, target, descriptors.isIndexable);\n }\n if (needsSubResolver(prop, value)) {\n // if the resolved value is an object, create a sub resolver for it\n value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n }\n return value;\n}\n\nfunction _resolveScriptable(\n prop: string,\n getValue: (ctx: AnyObject, sub: AnyObject) => unknown,\n target: ContextCache,\n receiver: AnyObject\n) {\n const {_proxy, _context, _subProxy, _stack} = target;\n if (_stack.has(prop)) {\n throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n }\n _stack.add(prop);\n let value = getValue(_context, _subProxy || receiver);\n _stack.delete(prop);\n if (needsSubResolver(prop, value)) {\n // When scriptable option returns an object, create a resolver on that.\n value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n }\n return value;\n}\n\nfunction _resolveArray(\n prop: string,\n value: unknown[],\n target: ContextCache,\n isIndexable: (key: string) => boolean\n) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n\n if (typeof _context.index !== 'undefined' && isIndexable(prop)) {\n return value[_context.index % value.length];\n } else if (isObject(value[0])) {\n // Array of objects, return array or resolvers\n const arr = value;\n const scopes = _proxy._scopes.filter(s => s !== arr);\n value = [];\n for (const item of arr) {\n const resolver = createSubResolver(scopes, _proxy, prop, item);\n value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n }\n }\n return value;\n}\n\nfunction resolveFallback(\n fallback: ResolverObjectKey | ((prop: ResolverObjectKey, value: unknown) => ResolverObjectKey),\n prop: ResolverObjectKey,\n value: unknown\n) {\n return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\n\nconst getScope = (key: ResolverObjectKey, parent: AnyObject) => key === true ? parent\n : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\n\nfunction addScopes(\n set: Set,\n parentScopes: AnyObject[],\n key: ResolverObjectKey,\n parentFallback: ResolverObjectKey,\n value: unknown\n) {\n for (const parent of parentScopes) {\n const scope = getScope(key, parent);\n if (scope) {\n set.add(scope);\n const fallback = resolveFallback(scope._fallback, key, value);\n if (typeof fallback !== 'undefined' && fallback !== key && fallback !== parentFallback) {\n // When we reach the descriptor that defines a new _fallback, return that.\n // The fallback will resume to that new scope.\n return fallback;\n }\n } else if (scope === false && typeof parentFallback !== 'undefined' && key !== parentFallback) {\n // Fallback to `false` results to `false`, when falling back to different key.\n // For example `interaction` from `hover` or `plugins.tooltip` and `animation` from `animations`\n return null;\n }\n }\n return false;\n}\n\nfunction createSubResolver(\n parentScopes: AnyObject[],\n resolver: ResolverCache,\n prop: ResolverObjectKey,\n value: unknown\n) {\n const rootScopes = resolver._rootScopes;\n const fallback = resolveFallback(resolver._fallback, prop, value);\n const allScopes = [...parentScopes, ...rootScopes];\n const set = new Set();\n set.add(value);\n let key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);\n if (key === null) {\n return false;\n }\n if (typeof fallback !== 'undefined' && fallback !== prop) {\n key = addScopesFromKey(set, allScopes, fallback, key, value);\n if (key === null) {\n return false;\n }\n }\n return _createResolver(Array.from(set), [''], rootScopes, fallback,\n () => subGetTarget(resolver, prop as string, value));\n}\n\nfunction addScopesFromKey(\n set: Set,\n allScopes: AnyObject[],\n key: ResolverObjectKey,\n fallback: ResolverObjectKey,\n item: unknown\n) {\n while (key) {\n key = addScopes(set, allScopes, key, fallback, item);\n }\n return key;\n}\n\nfunction subGetTarget(\n resolver: ResolverCache,\n prop: string,\n value: unknown\n) {\n const parent = resolver._getTarget();\n if (!(prop in parent)) {\n parent[prop] = {};\n }\n const target = parent[prop];\n if (isArray(target) && isObject(value)) {\n // For array of objects, the object is used to store updated values\n return value;\n }\n return target || {};\n}\n\nfunction _resolveWithPrefixes(\n prop: string,\n prefixes: string[],\n scopes: AnyObject[],\n proxy: ResolverProxy\n) {\n let value: unknown;\n for (const prefix of prefixes) {\n value = _resolve(readKey(prefix, prop), scopes);\n if (typeof value !== 'undefined') {\n return needsSubResolver(prop, value)\n ? createSubResolver(scopes, proxy, prop, value)\n : value;\n }\n }\n}\n\nfunction _resolve(key: string, scopes: AnyObject[]) {\n for (const scope of scopes) {\n if (!scope) {\n continue;\n }\n const value = scope[key];\n if (typeof value !== 'undefined') {\n return value;\n }\n }\n}\n\nfunction getKeysFromAllScopes(target: ResolverCache) {\n let keys = target._keys;\n if (!keys) {\n keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n }\n return keys;\n}\n\nfunction resolveKeysFromAllScopes(scopes: AnyObject[]) {\n const set = new Set();\n for (const scope of scopes) {\n for (const key of Object.keys(scope).filter(k => !k.startsWith('_'))) {\n set.add(key);\n }\n }\n return Array.from(set);\n}\n\nexport function _parseObjectDataRadialScale(\n meta: ChartMeta<'line' | 'scatter'>,\n data: AnyObject[],\n start: number,\n count: number\n) {\n const {iScale} = meta;\n const {key = 'r'} = this._parsing;\n const parsed = new Array<{r: unknown}>(count);\n let i: number, ilen: number, index: number, item: AnyObject;\n\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n r: iScale.parse(resolveObjectKey(item, key), index)\n };\n }\n return parsed;\n}\n","import {almostEquals, distanceBetweenPoints, sign} from './helpers.math.js';\nimport {_isPointInArea} from './helpers.canvas.js';\nimport type {ChartArea} from '../types/index.js';\nimport type {SplinePoint} from '../types/geometric.js';\n\nconst EPSILON = Number.EPSILON || 1e-14;\n\ntype OptionalSplinePoint = SplinePoint | false\nconst getPoint = (points: SplinePoint[], i: number): OptionalSplinePoint => i < points.length && !points[i].skip && points[i];\nconst getValueAxis = (indexAxis: 'x' | 'y') => indexAxis === 'x' ? 'y' : 'x';\n\nexport function splineCurve(\n firstPoint: SplinePoint,\n middlePoint: SplinePoint,\n afterPoint: SplinePoint,\n t: number\n): {\n previous: SplinePoint\n next: SplinePoint\n } {\n // Props to Rob Spencer at scaled innovation for his post on splining between points\n // http://scaledinnovation.com/analytics/splines/aboutSplines.html\n\n // This function must also respect \"skipped\" points\n\n const previous = firstPoint.skip ? middlePoint : firstPoint;\n const current = middlePoint;\n const next = afterPoint.skip ? middlePoint : afterPoint;\n const d01 = distanceBetweenPoints(current, previous);\n const d12 = distanceBetweenPoints(next, current);\n\n let s01 = d01 / (d01 + d12);\n let s12 = d12 / (d01 + d12);\n\n // If all points are the same, s01 & s02 will be inf\n s01 = isNaN(s01) ? 0 : s01;\n s12 = isNaN(s12) ? 0 : s12;\n\n const fa = t * s01; // scaling factor for triangle Ta\n const fb = t * s12;\n\n return {\n previous: {\n x: current.x - fa * (next.x - previous.x),\n y: current.y - fa * (next.y - previous.y)\n },\n next: {\n x: current.x + fb * (next.x - previous.x),\n y: current.y + fb * (next.y - previous.y)\n }\n };\n}\n\n/**\n * Adjust tangents to ensure monotonic properties\n */\nfunction monotoneAdjust(points: SplinePoint[], deltaK: number[], mK: number[]) {\n const pointsLen = points.length;\n\n let alphaK: number, betaK: number, tauK: number, squaredMagnitude: number, pointCurrent: OptionalSplinePoint;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen - 1; ++i) {\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent || !pointAfter) {\n continue;\n }\n\n if (almostEquals(deltaK[i], 0, EPSILON)) {\n mK[i] = mK[i + 1] = 0;\n continue;\n }\n\n alphaK = mK[i] / deltaK[i];\n betaK = mK[i + 1] / deltaK[i];\n squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n if (squaredMagnitude <= 9) {\n continue;\n }\n\n tauK = 3 / Math.sqrt(squaredMagnitude);\n mK[i] = alphaK * tauK * deltaK[i];\n mK[i + 1] = betaK * tauK * deltaK[i];\n }\n}\n\nfunction monotoneCompute(points: SplinePoint[], mK: number[], indexAxis: 'x' | 'y' = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n let delta: number, pointBefore: OptionalSplinePoint, pointCurrent: OptionalSplinePoint;\n let pointAfter = getPoint(points, 0);\n\n for (let i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n\n const iPixel = pointCurrent[indexAxis];\n const vPixel = pointCurrent[valueAxis];\n if (pointBefore) {\n delta = (iPixel - pointBefore[indexAxis]) / 3;\n pointCurrent[`cp1${indexAxis}`] = iPixel - delta;\n pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i];\n }\n if (pointAfter) {\n delta = (pointAfter[indexAxis] - iPixel) / 3;\n pointCurrent[`cp2${indexAxis}`] = iPixel + delta;\n pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i];\n }\n }\n}\n\n/**\n * This function calculates Bézier control points in a similar way than |splineCurve|,\n * but preserves monotonicity of the provided data and ensures no local extremums are added\n * between the dataset discrete points due to the interpolation.\n * See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation\n */\nexport function splineCurveMonotone(points: SplinePoint[], indexAxis: 'x' | 'y' = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n const deltaK: number[] = Array(pointsLen).fill(0);\n const mK: number[] = Array(pointsLen);\n\n // Calculate slopes (deltaK) and initialize tangents (mK)\n let i, pointBefore: OptionalSplinePoint, pointCurrent: OptionalSplinePoint;\n let pointAfter = getPoint(points, 0);\n\n for (i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n\n if (pointAfter) {\n const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n\n // In the case of two points that appear at the same x pixel, slopeDeltaX is 0\n deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n }\n mK[i] = !pointBefore ? deltaK[i]\n : !pointAfter ? deltaK[i - 1]\n : (sign(deltaK[i - 1]) !== sign(deltaK[i])) ? 0\n : (deltaK[i - 1] + deltaK[i]) / 2;\n }\n\n monotoneAdjust(points, deltaK, mK);\n\n monotoneCompute(points, mK, indexAxis);\n}\n\nfunction capControlPoint(pt: number, min: number, max: number) {\n return Math.max(Math.min(pt, max), min);\n}\n\nfunction capBezierPoints(points: SplinePoint[], area: ChartArea) {\n let i, ilen, point, inArea, inAreaPrev;\n let inAreaNext = _isPointInArea(points[0], area);\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n inAreaPrev = inArea;\n inArea = inAreaNext;\n inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area);\n if (!inArea) {\n continue;\n }\n point = points[i];\n if (inAreaPrev) {\n point.cp1x = capControlPoint(point.cp1x, area.left, area.right);\n point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom);\n }\n if (inAreaNext) {\n point.cp2x = capControlPoint(point.cp2x, area.left, area.right);\n point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom);\n }\n }\n}\n\n/**\n * @private\n */\nexport function _updateBezierControlPoints(\n points: SplinePoint[],\n options,\n area: ChartArea,\n loop: boolean,\n indexAxis: 'x' | 'y'\n) {\n let i: number, ilen: number, point: SplinePoint, controlPoints: ReturnType;\n\n // Only consider points that are drawn in case the spanGaps option is used\n if (options.spanGaps) {\n points = points.filter((pt) => !pt.skip);\n }\n\n if (options.cubicInterpolationMode === 'monotone') {\n splineCurveMonotone(points, indexAxis);\n } else {\n let prev = loop ? points[points.length - 1] : points[0];\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n point = points[i];\n controlPoints = splineCurve(\n prev,\n point,\n points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen],\n options.tension\n );\n point.cp1x = controlPoints.previous.x;\n point.cp1y = controlPoints.previous.y;\n point.cp2x = controlPoints.next.x;\n point.cp2y = controlPoints.next.y;\n prev = point;\n }\n }\n\n if (options.capBezierPoints) {\n capBezierPoints(points, area);\n }\n}\n","import type {ChartArea, Scale} from '../types/index.js';\nimport type Chart from '../core/core.controller.js';\nimport type {ChartEvent} from '../types.js';\nimport {INFINITY} from './helpers.math.js';\n\n/**\n * Note: typedefs are auto-exported, so use a made-up `dom` namespace where\n * necessary to avoid duplicates with `export * from './helpers`; see\n * https://github.com/microsoft/TypeScript/issues/46011\n * @typedef { import('../core/core.controller.js').default } dom.Chart\n * @typedef { import('../../types').ChartEvent } ChartEvent\n */\n\n/**\n * @private\n */\nexport function _isDomSupported(): boolean {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n\n/**\n * @private\n */\nexport function _getParentNode(domNode: HTMLCanvasElement): HTMLCanvasElement {\n let parent = domNode.parentNode;\n if (parent && parent.toString() === '[object ShadowRoot]') {\n parent = (parent as ShadowRoot).host;\n }\n return parent as HTMLCanvasElement;\n}\n\n/**\n * convert max-width/max-height values that may be percentages into a number\n * @private\n */\n\nfunction parseMaxStyle(styleValue: string | number, node: HTMLElement, parentProperty: string) {\n let valueInPixels: number;\n if (typeof styleValue === 'string') {\n valueInPixels = parseInt(styleValue, 10);\n\n if (styleValue.indexOf('%') !== -1) {\n // percentage * size in dimension\n valueInPixels = (valueInPixels / 100) * node.parentNode[parentProperty];\n }\n } else {\n valueInPixels = styleValue;\n }\n\n return valueInPixels;\n}\n\nconst getComputedStyle = (element: HTMLElement): CSSStyleDeclaration =>\n element.ownerDocument.defaultView.getComputedStyle(element, null);\n\nexport function getStyle(el: HTMLElement, property: string): string {\n return getComputedStyle(el).getPropertyValue(property);\n}\n\nconst positions = ['top', 'right', 'bottom', 'left'];\nfunction getPositionedStyle(styles: CSSStyleDeclaration, style: string, suffix?: string): ChartArea {\n const result = {} as ChartArea;\n suffix = suffix ? '-' + suffix : '';\n for (let i = 0; i < 4; i++) {\n const pos = positions[i];\n result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n }\n result.width = result.left + result.right;\n result.height = result.top + result.bottom;\n return result;\n}\n\nconst useOffsetPos = (x: number, y: number, target: HTMLElement | EventTarget) =>\n (x > 0 || y > 0) && (!target || !(target as HTMLElement).shadowRoot);\n\n/**\n * @param e\n * @param canvas\n * @returns Canvas position\n */\nfunction getCanvasPosition(\n e: Event | TouchEvent | MouseEvent,\n canvas: HTMLCanvasElement\n): {\n x: number;\n y: number;\n box: boolean;\n } {\n const touches = (e as TouchEvent).touches;\n const source = (touches && touches.length ? touches[0] : e) as MouseEvent;\n const {offsetX, offsetY} = source as MouseEvent;\n let box = false;\n let x, y;\n if (useOffsetPos(offsetX, offsetY, e.target)) {\n x = offsetX;\n y = offsetY;\n } else {\n const rect = canvas.getBoundingClientRect();\n x = source.clientX - rect.left;\n y = source.clientY - rect.top;\n box = true;\n }\n return {x, y, box};\n}\n\n/**\n * Gets an event's x, y coordinates, relative to the chart area\n * @param event\n * @param chart\n * @returns x and y coordinates of the event\n */\n\nexport function getRelativePosition(\n event: Event | ChartEvent | TouchEvent | MouseEvent,\n chart: Chart\n): { x: number; y: number } {\n if ('native' in event) {\n return event;\n }\n\n const {canvas, currentDevicePixelRatio} = chart;\n const style = getComputedStyle(canvas);\n const borderBox = style.boxSizing === 'border-box';\n const paddings = getPositionedStyle(style, 'padding');\n const borders = getPositionedStyle(style, 'border', 'width');\n const {x, y, box} = getCanvasPosition(event, canvas);\n const xOffset = paddings.left + (box && borders.left);\n const yOffset = paddings.top + (box && borders.top);\n\n let {width, height} = chart;\n if (borderBox) {\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n return {\n x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n };\n}\n\nfunction getContainerSize(canvas: HTMLCanvasElement, width: number, height: number): Partial {\n let maxWidth: number, maxHeight: number;\n\n if (width === undefined || height === undefined) {\n const container = canvas && _getParentNode(canvas);\n if (!container) {\n width = canvas.clientWidth;\n height = canvas.clientHeight;\n } else {\n const rect = container.getBoundingClientRect(); // this is the border box of the container\n const containerStyle = getComputedStyle(container);\n const containerBorder = getPositionedStyle(containerStyle, 'border', 'width');\n const containerPadding = getPositionedStyle(containerStyle, 'padding');\n width = rect.width - containerPadding.width - containerBorder.width;\n height = rect.height - containerPadding.height - containerBorder.height;\n maxWidth = parseMaxStyle(containerStyle.maxWidth, container, 'clientWidth');\n maxHeight = parseMaxStyle(containerStyle.maxHeight, container, 'clientHeight');\n }\n }\n return {\n width,\n height,\n maxWidth: maxWidth || INFINITY,\n maxHeight: maxHeight || INFINITY\n };\n}\n\nconst round1 = (v: number) => Math.round(v * 10) / 10;\n\n// eslint-disable-next-line complexity\nexport function getMaximumSize(\n canvas: HTMLCanvasElement,\n bbWidth?: number,\n bbHeight?: number,\n aspectRatio?: number\n): { width: number; height: number } {\n const style = getComputedStyle(canvas);\n const margins = getPositionedStyle(style, 'margin');\n const maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY;\n const maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY;\n const containerSize = getContainerSize(canvas, bbWidth, bbHeight);\n let {width, height} = containerSize;\n\n if (style.boxSizing === 'content-box') {\n const borders = getPositionedStyle(style, 'border', 'width');\n const paddings = getPositionedStyle(style, 'padding');\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n width = Math.max(0, width - margins.width);\n height = Math.max(0, aspectRatio ? width / aspectRatio : height - margins.height);\n width = round1(Math.min(width, maxWidth, containerSize.maxWidth));\n height = round1(Math.min(height, maxHeight, containerSize.maxHeight));\n if (width && !height) {\n // https://github.com/chartjs/Chart.js/issues/4659\n // If the canvas has width, but no height, default to aspectRatio of 2 (canvas default)\n height = round1(width / 2);\n }\n\n const maintainHeight = bbWidth !== undefined || bbHeight !== undefined;\n\n if (maintainHeight && aspectRatio && containerSize.height && height > containerSize.height) {\n height = containerSize.height;\n width = round1(Math.floor(height * aspectRatio));\n }\n\n return {width, height};\n}\n\n/**\n * @param chart\n * @param forceRatio\n * @param forceStyle\n * @returns True if the canvas context size or transformation has changed.\n */\nexport function retinaScale(\n chart: Chart,\n forceRatio: number,\n forceStyle?: boolean\n): boolean | void {\n const pixelRatio = forceRatio || 1;\n const deviceHeight = Math.floor(chart.height * pixelRatio);\n const deviceWidth = Math.floor(chart.width * pixelRatio);\n\n chart.height = Math.floor(chart.height);\n chart.width = Math.floor(chart.width);\n\n const canvas = chart.canvas;\n\n // If no style has been set on the canvas, the render size is used as display size,\n // making the chart visually bigger, so let's enforce it to the \"correct\" values.\n // See https://github.com/chartjs/Chart.js/issues/3575\n if (canvas.style && (forceStyle || (!canvas.style.height && !canvas.style.width))) {\n canvas.style.height = `${chart.height}px`;\n canvas.style.width = `${chart.width}px`;\n }\n\n if (chart.currentDevicePixelRatio !== pixelRatio\n || canvas.height !== deviceHeight\n || canvas.width !== deviceWidth) {\n chart.currentDevicePixelRatio = pixelRatio;\n canvas.height = deviceHeight;\n canvas.width = deviceWidth;\n chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n return true;\n }\n return false;\n}\n\n/**\n * Detects support for options object argument in addEventListener.\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\n * @private\n */\nexport const supportsEventListenerOptions = (function() {\n let passiveSupported = false;\n try {\n const options = {\n get passive() { // This function will be called when the browser attempts to access the passive property.\n passiveSupported = true;\n return false;\n }\n } as EventListenerOptions;\n\n if (_isDomSupported()) {\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n }\n } catch (e) {\n // continue regardless of error\n }\n return passiveSupported;\n}());\n\n/**\n * The \"used\" size is the final value of a dimension property after all calculations have\n * been performed. This method uses the computed style of `element` but returns undefined\n * if the computed style is not expressed in pixels. That can happen in some cases where\n * `element` has a size relative to its parent and this last one is not yet displayed,\n * for example because of `display: none` on a parent node.\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value\n * @returns Size in pixels or undefined if unknown.\n */\n\nexport function readUsedSize(\n element: HTMLElement,\n property: 'width' | 'height'\n): number | undefined {\n const value = getStyle(element, property);\n const matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n return matches ? +matches[1] : undefined;\n}\n","export interface RTLAdapter {\n x(x: number): number;\n setWidth(w: number): void;\n textAlign(align: 'center' | 'left' | 'right'): 'center' | 'left' | 'right';\n xPlus(x: number, value: number): number;\n leftForLtr(x: number, itemWidth: number): number;\n}\n\nconst getRightToLeftAdapter = function(rectX: number, width: number): RTLAdapter {\n return {\n x(x) {\n return rectX + rectX + width - x;\n },\n setWidth(w) {\n width = w;\n },\n textAlign(align) {\n if (align === 'center') {\n return align;\n }\n return align === 'right' ? 'left' : 'right';\n },\n xPlus(x, value) {\n return x - value;\n },\n leftForLtr(x, itemWidth) {\n return x - itemWidth;\n },\n };\n};\n\nconst getLeftToRightAdapter = function(): RTLAdapter {\n return {\n x(x) {\n return x;\n },\n setWidth(w) { // eslint-disable-line no-unused-vars\n },\n textAlign(align) {\n return align;\n },\n xPlus(x, value) {\n return x + value;\n },\n leftForLtr(x, _itemWidth) { // eslint-disable-line @typescript-eslint/no-unused-vars\n return x;\n },\n };\n};\n\nexport function getRtlAdapter(rtl: boolean, rectX: number, width: number) {\n return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\n\nexport function overrideTextDirection(ctx: CanvasRenderingContext2D, direction: 'ltr' | 'rtl') {\n let style: CSSStyleDeclaration, original: [string, string];\n if (direction === 'ltr' || direction === 'rtl') {\n style = ctx.canvas.style;\n original = [\n style.getPropertyValue('direction'),\n style.getPropertyPriority('direction'),\n ];\n\n style.setProperty('direction', direction, 'important');\n (ctx as { prevTextDirection?: [string, string] }).prevTextDirection = original;\n }\n}\n\nexport function restoreTextDirection(ctx: CanvasRenderingContext2D, original?: [string, string]) {\n if (original !== undefined) {\n delete (ctx as { prevTextDirection?: [string, string] }).prevTextDirection;\n ctx.canvas.style.setProperty('direction', original[0], original[1]);\n }\n}\n","import {requestAnimFrame} from '../helpers/helpers.extras.js';\n\n/**\n * @typedef { import('./core.animation.js').default } Animation\n * @typedef { import('./core.controller.js').default } Chart\n */\n\n/**\n * Please use the module's default export which provides a singleton instance\n * Note: class is export for typedoc\n */\nexport class Animator {\n constructor() {\n this._request = null;\n this._charts = new Map();\n this._running = false;\n this._lastDate = undefined;\n }\n\n /**\n\t * @private\n\t */\n _notify(chart, anims, date, type) {\n const callbacks = anims.listeners[type];\n const numSteps = anims.duration;\n\n callbacks.forEach(fn => fn({\n chart,\n initial: anims.initial,\n numSteps,\n currentStep: Math.min(date - anims.start, numSteps)\n }));\n }\n\n /**\n\t * @private\n\t */\n _refresh() {\n if (this._request) {\n return;\n }\n this._running = true;\n\n this._request = requestAnimFrame.call(window, () => {\n this._update();\n this._request = null;\n\n if (this._running) {\n this._refresh();\n }\n });\n }\n\n /**\n\t * @private\n\t */\n _update(date = Date.now()) {\n let remaining = 0;\n\n this._charts.forEach((anims, chart) => {\n if (!anims.running || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n let draw = false;\n let item;\n\n for (; i >= 0; --i) {\n item = items[i];\n\n if (item._active) {\n if (item._total > anims.duration) {\n // if the animation has been updated and its duration prolonged,\n // update to total duration of current animations run (for progress event)\n anims.duration = item._total;\n }\n item.tick(date);\n draw = true;\n } else {\n // Remove the item by replacing it with last item and removing the last\n // A lot faster than splice.\n items[i] = items[items.length - 1];\n items.pop();\n }\n }\n\n if (draw) {\n chart.draw();\n this._notify(chart, anims, date, 'progress');\n }\n\n if (!items.length) {\n anims.running = false;\n this._notify(chart, anims, date, 'complete');\n anims.initial = false;\n }\n\n remaining += items.length;\n });\n\n this._lastDate = date;\n\n if (remaining === 0) {\n this._running = false;\n }\n }\n\n /**\n\t * @private\n\t */\n _getAnims(chart) {\n const charts = this._charts;\n let anims = charts.get(chart);\n if (!anims) {\n anims = {\n running: false,\n initial: true,\n items: [],\n listeners: {\n complete: [],\n progress: []\n }\n };\n charts.set(chart, anims);\n }\n return anims;\n }\n\n /**\n\t * @param {Chart} chart\n\t * @param {string} event - event name\n\t * @param {Function} cb - callback\n\t */\n listen(chart, event, cb) {\n this._getAnims(chart).listeners[event].push(cb);\n }\n\n /**\n\t * Add animations\n\t * @param {Chart} chart\n\t * @param {Animation[]} items - animations\n\t */\n add(chart, items) {\n if (!items || !items.length) {\n return;\n }\n this._getAnims(chart).items.push(...items);\n }\n\n /**\n\t * Counts number of active animations for the chart\n\t * @param {Chart} chart\n\t */\n has(chart) {\n return this._getAnims(chart).items.length > 0;\n }\n\n /**\n\t * Start animating (all charts)\n\t * @param {Chart} chart\n\t */\n start(chart) {\n const anims = this._charts.get(chart);\n if (!anims) {\n return;\n }\n anims.running = true;\n anims.start = Date.now();\n anims.duration = anims.items.reduce((acc, cur) => Math.max(acc, cur._duration), 0);\n this._refresh();\n }\n\n running(chart) {\n if (!this._running) {\n return false;\n }\n const anims = this._charts.get(chart);\n if (!anims || !anims.running || !anims.items.length) {\n return false;\n }\n return true;\n }\n\n /**\n\t * Stop all animations for the chart\n\t * @param {Chart} chart\n\t */\n stop(chart) {\n const anims = this._charts.get(chart);\n if (!anims || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n\n for (; i >= 0; --i) {\n items[i].cancel();\n }\n anims.items = [];\n this._notify(chart, anims, Date.now(), 'complete');\n }\n\n /**\n\t * Remove chart from Animator\n\t * @param {Chart} chart\n\t */\n remove(chart) {\n return this._charts.delete(chart);\n }\n}\n\n// singleton instance\nexport default /* #__PURE__ */ new Animator();\n","import effects from '../helpers/helpers.easing.js';\nimport {resolve} from '../helpers/helpers.options.js';\nimport {color as helpersColor} from '../helpers/helpers.color.js';\n\nconst transparent = 'transparent';\nconst interpolators = {\n boolean(from, to, factor) {\n return factor > 0.5 ? to : from;\n },\n /**\n * @param {string} from\n * @param {string} to\n * @param {number} factor\n */\n color(from, to, factor) {\n const c0 = helpersColor(from || transparent);\n const c1 = c0.valid && helpersColor(to || transparent);\n return c1 && c1.valid\n ? c1.mix(c0, factor).hexString()\n : to;\n },\n number(from, to, factor) {\n return from + (to - from) * factor;\n }\n};\n\nexport default class Animation {\n constructor(cfg, target, prop, to) {\n const currentValue = target[prop];\n\n to = resolve([cfg.to, to, currentValue, cfg.from]);\n const from = resolve([cfg.from, currentValue, to]);\n\n this._active = true;\n this._fn = cfg.fn || interpolators[cfg.type || typeof from];\n this._easing = effects[cfg.easing] || effects.linear;\n this._start = Math.floor(Date.now() + (cfg.delay || 0));\n this._duration = this._total = Math.floor(cfg.duration);\n this._loop = !!cfg.loop;\n this._target = target;\n this._prop = prop;\n this._from = from;\n this._to = to;\n this._promises = undefined;\n }\n\n active() {\n return this._active;\n }\n\n update(cfg, to, date) {\n if (this._active) {\n this._notify(false);\n\n const currentValue = this._target[this._prop];\n const elapsed = date - this._start;\n const remain = this._duration - elapsed;\n this._start = date;\n this._duration = Math.floor(Math.max(remain, cfg.duration));\n this._total += elapsed;\n this._loop = !!cfg.loop;\n this._to = resolve([cfg.to, to, currentValue, cfg.from]);\n this._from = resolve([cfg.from, currentValue, to]);\n }\n }\n\n cancel() {\n if (this._active) {\n // update current evaluated value, for smoother animations\n this.tick(Date.now());\n this._active = false;\n this._notify(false);\n }\n }\n\n tick(date) {\n const elapsed = date - this._start;\n const duration = this._duration;\n const prop = this._prop;\n const from = this._from;\n const loop = this._loop;\n const to = this._to;\n let factor;\n\n this._active = from !== to && (loop || (elapsed < duration));\n\n if (!this._active) {\n this._target[prop] = to;\n this._notify(true);\n return;\n }\n\n if (elapsed < 0) {\n this._target[prop] = from;\n return;\n }\n\n factor = (elapsed / duration) % 2;\n factor = loop && factor > 1 ? 2 - factor : factor;\n factor = this._easing(Math.min(1, Math.max(0, factor)));\n\n this._target[prop] = this._fn(from, to, factor);\n }\n\n wait() {\n const promises = this._promises || (this._promises = []);\n return new Promise((res, rej) => {\n promises.push({res, rej});\n });\n }\n\n _notify(resolved) {\n const method = resolved ? 'res' : 'rej';\n const promises = this._promises || [];\n for (let i = 0; i < promises.length; i++) {\n promises[i][method]();\n }\n }\n}\n","import animator from './core.animator.js';\nimport Animation from './core.animation.js';\nimport defaults from './core.defaults.js';\nimport {isArray, isObject} from '../helpers/helpers.core.js';\n\nexport default class Animations {\n constructor(chart, config) {\n this._chart = chart;\n this._properties = new Map();\n this.configure(config);\n }\n\n configure(config) {\n if (!isObject(config)) {\n return;\n }\n\n const animationOptions = Object.keys(defaults.animation);\n const animatedProps = this._properties;\n\n Object.getOwnPropertyNames(config).forEach(key => {\n const cfg = config[key];\n if (!isObject(cfg)) {\n return;\n }\n const resolved = {};\n for (const option of animationOptions) {\n resolved[option] = cfg[option];\n }\n\n (isArray(cfg.properties) && cfg.properties || [key]).forEach((prop) => {\n if (prop === key || !animatedProps.has(prop)) {\n animatedProps.set(prop, resolved);\n }\n });\n });\n }\n\n /**\n\t * Utility to handle animation of `options`.\n\t * @private\n\t */\n _animateOptions(target, values) {\n const newOptions = values.options;\n const options = resolveTargetOptions(target, newOptions);\n if (!options) {\n return [];\n }\n\n const animations = this._createAnimations(options, newOptions);\n if (newOptions.$shared) {\n // Going to shared options:\n // After all animations are done, assign the shared options object to the element\n // So any new updates to the shared options are observed\n awaitAll(target.options.$animations, newOptions).then(() => {\n target.options = newOptions;\n }, () => {\n // rejected, noop\n });\n }\n\n return animations;\n }\n\n /**\n\t * @private\n\t */\n _createAnimations(target, values) {\n const animatedProps = this._properties;\n const animations = [];\n const running = target.$animations || (target.$animations = {});\n const props = Object.keys(values);\n const date = Date.now();\n let i;\n\n for (i = props.length - 1; i >= 0; --i) {\n const prop = props[i];\n if (prop.charAt(0) === '$') {\n continue;\n }\n\n if (prop === 'options') {\n animations.push(...this._animateOptions(target, values));\n continue;\n }\n const value = values[prop];\n let animation = running[prop];\n const cfg = animatedProps.get(prop);\n\n if (animation) {\n if (cfg && animation.active()) {\n // There is an existing active animation, let's update that\n animation.update(cfg, value, date);\n continue;\n } else {\n animation.cancel();\n }\n }\n if (!cfg || !cfg.duration) {\n // not animated, set directly to new value\n target[prop] = value;\n continue;\n }\n\n running[prop] = animation = new Animation(cfg, target, prop, value);\n animations.push(animation);\n }\n return animations;\n }\n\n\n /**\n\t * Update `target` properties to new values, using configured animations\n\t * @param {object} target - object to update\n\t * @param {object} values - new target properties\n\t * @returns {boolean|undefined} - `true` if animations were started\n\t **/\n update(target, values) {\n if (this._properties.size === 0) {\n // Nothing is animated, just apply the new values.\n Object.assign(target, values);\n return;\n }\n\n const animations = this._createAnimations(target, values);\n\n if (animations.length) {\n animator.add(this._chart, animations);\n return true;\n }\n }\n}\n\nfunction awaitAll(animations, properties) {\n const running = [];\n const keys = Object.keys(properties);\n for (let i = 0; i < keys.length; i++) {\n const anim = animations[keys[i]];\n if (anim && anim.active()) {\n running.push(anim.wait());\n }\n }\n // @ts-ignore\n return Promise.all(running);\n}\n\nfunction resolveTargetOptions(target, newOptions) {\n if (!newOptions) {\n return;\n }\n let options = target.options;\n if (!options) {\n target.options = newOptions;\n return;\n }\n if (options.$shared) {\n // Going from shared options to distinct one:\n // Create new options object containing the old shared values and start updating that.\n target.options = options = Object.assign({}, options, {$shared: false, $animations: {}});\n }\n return options;\n}\n","import Animations from './core.animations.js';\nimport defaults from './core.defaults.js';\nimport {isArray, isFinite, isObject, valueOrDefault, resolveObjectKey, defined} from '../helpers/helpers.core.js';\nimport {listenArrayEvents, unlistenArrayEvents} from '../helpers/helpers.collection.js';\nimport {createContext, sign} from '../helpers/index.js';\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n * @typedef { import('./core.scale.js').default } Scale\n */\n\nfunction scaleClip(scale, allowedOverflow) {\n const opts = scale && scale.options || {};\n const reverse = opts.reverse;\n const min = opts.min === undefined ? allowedOverflow : 0;\n const max = opts.max === undefined ? allowedOverflow : 0;\n return {\n start: reverse ? max : min,\n end: reverse ? min : max\n };\n}\n\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n if (allowedOverflow === false) {\n return false;\n }\n const x = scaleClip(xScale, allowedOverflow);\n const y = scaleClip(yScale, allowedOverflow);\n\n return {\n top: y.end,\n right: x.end,\n bottom: y.start,\n left: x.start\n };\n}\n\nfunction toClip(value) {\n let t, r, b, l;\n\n if (isObject(value)) {\n t = value.top;\n r = value.right;\n b = value.bottom;\n l = value.left;\n } else {\n t = r = b = l = value;\n }\n\n return {\n top: t,\n right: r,\n bottom: b,\n left: l,\n disabled: value === false\n };\n}\n\nfunction getSortedDatasetIndices(chart, filterVisible) {\n const keys = [];\n const metasets = chart._getSortedDatasetMetas(filterVisible);\n let i, ilen;\n\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n keys.push(metasets[i].index);\n }\n return keys;\n}\n\nfunction applyStack(stack, value, dsIndex, options = {}) {\n const keys = stack.keys;\n const singleMode = options.mode === 'single';\n let i, ilen, datasetIndex, otherValue;\n\n if (value === null) {\n return;\n }\n\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n datasetIndex = +keys[i];\n if (datasetIndex === dsIndex) {\n if (options.all) {\n continue;\n }\n break;\n }\n otherValue = stack.values[datasetIndex];\n if (isFinite(otherValue) && (singleMode || (value === 0 || sign(value) === sign(otherValue)))) {\n value += otherValue;\n }\n }\n return value;\n}\n\nfunction convertObjectDataToArray(data, meta) {\n const {iScale, vScale} = meta;\n const iAxisKey = iScale.axis === 'x' ? 'x' : 'y';\n const vAxisKey = vScale.axis === 'x' ? 'x' : 'y';\n const keys = Object.keys(data);\n const adata = new Array(keys.length);\n let i, ilen, key;\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n key = keys[i];\n adata[i] = {\n [iAxisKey]: key,\n [vAxisKey]: data[key]\n };\n }\n return adata;\n}\n\nfunction isStacked(scale, meta) {\n const stacked = scale && scale.options.stacked;\n return stacked || (stacked === undefined && meta.stack !== undefined);\n}\n\nfunction getStackKey(indexScale, valueScale, meta) {\n return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\n\nfunction getUserBounds(scale) {\n const {min, max, minDefined, maxDefined} = scale.getUserBounds();\n return {\n min: minDefined ? min : Number.NEGATIVE_INFINITY,\n max: maxDefined ? max : Number.POSITIVE_INFINITY\n };\n}\n\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n return subStack[indexValue] || (subStack[indexValue] = {});\n}\n\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n for (const meta of vScale.getMatchingVisibleMetas(type).reverse()) {\n const value = stack[meta.index];\n if ((positive && value > 0) || (!positive && value < 0)) {\n return meta.index;\n }\n }\n\n return null;\n}\n\nfunction updateStacks(controller, parsed) {\n const {chart, _cachedMeta: meta} = controller;\n const stacks = chart._stacks || (chart._stacks = {}); // map structure is {stackKey: {datasetIndex: value}}\n const {iScale, vScale, index: datasetIndex} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const key = getStackKey(iScale, vScale, meta);\n const ilen = parsed.length;\n let stack;\n\n for (let i = 0; i < ilen; ++i) {\n const item = parsed[i];\n const {[iAxis]: index, [vAxis]: value} = item;\n const itemStacks = item._stacks || (item._stacks = {});\n stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index);\n stack[datasetIndex] = value;\n\n stack._top = getLastIndexInStack(stack, vScale, true, meta.type);\n stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);\n\n const visualValues = stack._visualValues || (stack._visualValues = {});\n visualValues[datasetIndex] = value;\n }\n}\n\nfunction getFirstScaleId(chart, axis) {\n const scales = chart.scales;\n return Object.keys(scales).filter(key => scales[key].axis === axis).shift();\n}\n\nfunction createDatasetContext(parent, index) {\n return createContext(parent,\n {\n active: false,\n dataset: undefined,\n datasetIndex: index,\n index,\n mode: 'default',\n type: 'dataset'\n }\n );\n}\n\nfunction createDataContext(parent, index, element) {\n return createContext(parent, {\n active: false,\n dataIndex: index,\n parsed: undefined,\n raw: undefined,\n element,\n index,\n mode: 'default',\n type: 'data'\n });\n}\n\nfunction clearStacks(meta, items) {\n // Not using meta.index here, because it might be already updated if the dataset changed location\n const datasetIndex = meta.controller.index;\n const axis = meta.vScale && meta.vScale.axis;\n if (!axis) {\n return;\n }\n\n items = items || meta._parsed;\n for (const parsed of items) {\n const stacks = parsed._stacks;\n if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) {\n return;\n }\n delete stacks[axis][datasetIndex];\n if (stacks[axis]._visualValues !== undefined && stacks[axis]._visualValues[datasetIndex] !== undefined) {\n delete stacks[axis]._visualValues[datasetIndex];\n }\n }\n}\n\nconst isDirectUpdateMode = (mode) => mode === 'reset' || mode === 'none';\nconst cloneIfNotShared = (cached, shared) => shared ? cached : Object.assign({}, cached);\nconst createStack = (canStack, meta, chart) => canStack && !meta.hidden && meta._stacked\n && {keys: getSortedDatasetIndices(chart, true), values: null};\n\nexport default class DatasetController {\n\n /**\n * @type {any}\n */\n static defaults = {};\n\n /**\n * Element type used to generate a meta dataset (e.g. Chart.element.LineElement).\n */\n static datasetElementType = null;\n\n /**\n * Element type used to generate a meta data (e.g. Chart.element.PointElement).\n */\n static dataElementType = null;\n\n /**\n\t * @param {Chart} chart\n\t * @param {number} datasetIndex\n\t */\n constructor(chart, datasetIndex) {\n this.chart = chart;\n this._ctx = chart.ctx;\n this.index = datasetIndex;\n this._cachedDataOpts = {};\n this._cachedMeta = this.getMeta();\n this._type = this._cachedMeta.type;\n this.options = undefined;\n /** @type {boolean | object} */\n this._parsing = false;\n this._data = undefined;\n this._objectData = undefined;\n this._sharedOptions = undefined;\n this._drawStart = undefined;\n this._drawCount = undefined;\n this.enableOptionSharing = false;\n this.supportsDecimation = false;\n this.$context = undefined;\n this._syncList = [];\n this.datasetElementType = new.target.datasetElementType;\n this.dataElementType = new.target.dataElementType;\n\n this.initialize();\n }\n\n initialize() {\n const meta = this._cachedMeta;\n this.configure();\n this.linkScales();\n meta._stacked = isStacked(meta.vScale, meta);\n this.addElements();\n\n if (this.options.fill && !this.chart.isPluginEnabled('filler')) {\n console.warn(\"Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options\");\n }\n }\n\n updateIndex(datasetIndex) {\n if (this.index !== datasetIndex) {\n clearStacks(this._cachedMeta);\n }\n this.index = datasetIndex;\n }\n\n linkScales() {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n\n const chooseId = (axis, x, y, r) => axis === 'x' ? x : axis === 'r' ? r : y;\n\n const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, 'x'));\n const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, 'y'));\n const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, 'r'));\n const indexAxis = meta.indexAxis;\n const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid);\n const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid);\n meta.xScale = this.getScaleForId(xid);\n meta.yScale = this.getScaleForId(yid);\n meta.rScale = this.getScaleForId(rid);\n meta.iScale = this.getScaleForId(iid);\n meta.vScale = this.getScaleForId(vid);\n }\n\n getDataset() {\n return this.chart.data.datasets[this.index];\n }\n\n getMeta() {\n return this.chart.getDatasetMeta(this.index);\n }\n\n /**\n\t * @param {string} scaleID\n\t * @return {Scale}\n\t */\n getScaleForId(scaleID) {\n return this.chart.scales[scaleID];\n }\n\n /**\n\t * @private\n\t */\n _getOtherScale(scale) {\n const meta = this._cachedMeta;\n return scale === meta.iScale\n ? meta.vScale\n : meta.iScale;\n }\n\n reset() {\n this._update('reset');\n }\n\n /**\n\t * @private\n\t */\n _destroy() {\n const meta = this._cachedMeta;\n if (this._data) {\n unlistenArrayEvents(this._data, this);\n }\n if (meta._stacked) {\n clearStacks(meta);\n }\n }\n\n /**\n\t * @private\n\t */\n _dataCheck() {\n const dataset = this.getDataset();\n const data = dataset.data || (dataset.data = []);\n const _data = this._data;\n\n // In order to correctly handle data addition/deletion animation (and thus simulate\n // real-time charts), we need to monitor these data modifications and synchronize\n // the internal metadata accordingly.\n\n if (isObject(data)) {\n const meta = this._cachedMeta;\n this._data = convertObjectDataToArray(data, meta);\n } else if (_data !== data) {\n if (_data) {\n // This case happens when the user replaced the data array instance.\n unlistenArrayEvents(_data, this);\n // Discard old parsed data and stacks\n const meta = this._cachedMeta;\n clearStacks(meta);\n meta._parsed = [];\n }\n if (data && Object.isExtensible(data)) {\n listenArrayEvents(data, this);\n }\n this._syncList = [];\n this._data = data;\n }\n }\n\n addElements() {\n const meta = this._cachedMeta;\n\n this._dataCheck();\n\n if (this.datasetElementType) {\n meta.dataset = new this.datasetElementType();\n }\n }\n\n buildOrUpdateElements(resetNewElements) {\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n let stackChanged = false;\n\n this._dataCheck();\n\n // make sure cached _stacked status is current\n const oldStacked = meta._stacked;\n meta._stacked = isStacked(meta.vScale, meta);\n\n // detect change in stack option\n if (meta.stack !== dataset.stack) {\n stackChanged = true;\n // remove values from old stack\n clearStacks(meta);\n meta.stack = dataset.stack;\n }\n\n // Re-sync meta data in case the user replaced the data array or if we missed\n // any updates and so make sure that we handle number of datapoints changing.\n this._resyncElements(resetNewElements);\n\n // if stack changed, update stack values for the whole dataset\n if (stackChanged || oldStacked !== meta._stacked) {\n updateStacks(this, meta._parsed);\n }\n }\n\n /**\n\t * Merges user-supplied and default dataset-level options\n\t * @private\n\t */\n configure() {\n const config = this.chart.config;\n const scopeKeys = config.datasetScopeKeys(this._type);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true);\n this.options = config.createResolver(scopes, this.getContext());\n this._parsing = this.options.parsing;\n this._cachedDataOpts = {};\n }\n\n /**\n\t * @param {number} start\n\t * @param {number} count\n\t */\n parse(start, count) {\n const {_cachedMeta: meta, _data: data} = this;\n const {iScale, _stacked} = meta;\n const iAxis = iScale.axis;\n\n let sorted = start === 0 && count === data.length ? true : meta._sorted;\n let prev = start > 0 && meta._parsed[start - 1];\n let i, cur, parsed;\n\n if (this._parsing === false) {\n meta._parsed = data;\n meta._sorted = true;\n parsed = data;\n } else {\n if (isArray(data[start])) {\n parsed = this.parseArrayData(meta, data, start, count);\n } else if (isObject(data[start])) {\n parsed = this.parseObjectData(meta, data, start, count);\n } else {\n parsed = this.parsePrimitiveData(meta, data, start, count);\n }\n\n const isNotInOrderComparedToPrev = () => cur[iAxis] === null || (prev && cur[iAxis] < prev[iAxis]);\n for (i = 0; i < count; ++i) {\n meta._parsed[i + start] = cur = parsed[i];\n if (sorted) {\n if (isNotInOrderComparedToPrev()) {\n sorted = false;\n }\n prev = cur;\n }\n }\n meta._sorted = sorted;\n }\n\n if (_stacked) {\n updateStacks(this, parsed);\n }\n }\n\n /**\n\t * Parse array of primitive values\n\t * @param {object} meta - dataset meta\n\t * @param {array} data - data array. Example [1,3,4]\n\t * @param {number} start - start index\n\t * @param {number} count - number of items to parse\n\t * @returns {object} parsed item - item containing index and a parsed value\n\t * for each scale id.\n\t * Example: {xScale0: 0, yScale0: 1}\n\t * @protected\n\t */\n parsePrimitiveData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = new Array(count);\n let i, ilen, index;\n\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n parsed[i] = {\n [iAxis]: singleScale || iScale.parse(labels[index], index),\n [vAxis]: vScale.parse(data[index], index)\n };\n }\n return parsed;\n }\n\n /**\n\t * Parse array of arrays\n\t * @param {object} meta - dataset meta\n\t * @param {array} data - data array. Example [[1,2],[3,4]]\n\t * @param {number} start - start index\n\t * @param {number} count - number of items to parse\n\t * @returns {object} parsed item - item containing index and a parsed value\n\t * for each scale id.\n\t * Example: {x: 0, y: 1}\n\t * @protected\n\t */\n parseArrayData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const parsed = new Array(count);\n let i, ilen, index, item;\n\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(item[0], index),\n y: yScale.parse(item[1], index)\n };\n }\n return parsed;\n }\n\n /**\n\t * Parse array of objects\n\t * @param {object} meta - dataset meta\n\t * @param {array} data - data array. Example [{x:1, y:5}, {x:2, y:10}]\n\t * @param {number} start - start index\n\t * @param {number} count - number of items to parse\n\t * @returns {object} parsed item - item containing index and a parsed value\n\t * for each scale id. _custom is optional\n\t * Example: {xScale0: 0, yScale0: 1, _custom: {r: 10, foo: 'bar'}}\n\t * @protected\n\t */\n parseObjectData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(resolveObjectKey(item, xAxisKey), index),\n y: yScale.parse(resolveObjectKey(item, yAxisKey), index)\n };\n }\n return parsed;\n }\n\n /**\n\t * @protected\n\t */\n getParsed(index) {\n return this._cachedMeta._parsed[index];\n }\n\n /**\n\t * @protected\n\t */\n getDataElement(index) {\n return this._cachedMeta.data[index];\n }\n\n /**\n\t * @protected\n\t */\n applyStack(scale, parsed, mode) {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const value = parsed[scale.axis];\n const stack = {\n keys: getSortedDatasetIndices(chart, true),\n values: parsed._stacks[scale.axis]._visualValues\n };\n return applyStack(stack, value, meta.index, {mode});\n }\n\n /**\n\t * @protected\n\t */\n updateRangeFromParsed(range, scale, parsed, stack) {\n const parsedValue = parsed[scale.axis];\n let value = parsedValue === null ? NaN : parsedValue;\n const values = stack && parsed._stacks[scale.axis];\n if (stack && values) {\n stack.values = values;\n value = applyStack(stack, parsedValue, this._cachedMeta.index);\n }\n range.min = Math.min(range.min, value);\n range.max = Math.max(range.max, value);\n }\n\n /**\n\t * @protected\n\t */\n getMinMax(scale, canStack) {\n const meta = this._cachedMeta;\n const _parsed = meta._parsed;\n const sorted = meta._sorted && scale === meta.iScale;\n const ilen = _parsed.length;\n const otherScale = this._getOtherScale(scale);\n const stack = createStack(canStack, meta, this.chart);\n const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n const {min: otherMin, max: otherMax} = getUserBounds(otherScale);\n let i, parsed;\n\n function _skip() {\n parsed = _parsed[i];\n const otherValue = parsed[otherScale.axis];\n return !isFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue;\n }\n\n for (i = 0; i < ilen; ++i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n if (sorted) {\n // if the data is sorted, we don't need to check further from this end of array\n break;\n }\n }\n if (sorted) {\n // in the sorted case, find first non-skipped value from other end of array\n for (i = ilen - 1; i >= 0; --i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n break;\n }\n }\n return range;\n }\n\n getAllParsedValues(scale) {\n const parsed = this._cachedMeta._parsed;\n const values = [];\n let i, ilen, value;\n\n for (i = 0, ilen = parsed.length; i < ilen; ++i) {\n value = parsed[i][scale.axis];\n if (isFinite(value)) {\n values.push(value);\n }\n }\n return values;\n }\n\n /**\n\t * @return {number|boolean}\n\t * @protected\n\t */\n getMaxOverflow() {\n return false;\n }\n\n /**\n\t * @protected\n\t */\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '',\n value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : ''\n };\n }\n\n /**\n\t * @private\n\t */\n _update(mode) {\n const meta = this._cachedMeta;\n this.update(mode || 'default');\n meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow())));\n }\n\n /**\n\t * @param {string} mode\n\t */\n update(mode) {} // eslint-disable-line no-unused-vars\n\n draw() {\n const ctx = this._ctx;\n const chart = this.chart;\n const meta = this._cachedMeta;\n const elements = meta.data || [];\n const area = chart.chartArea;\n const active = [];\n const start = this._drawStart || 0;\n const count = this._drawCount || (elements.length - start);\n const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop;\n let i;\n\n if (meta.dataset) {\n meta.dataset.draw(ctx, area, start, count);\n }\n\n for (i = start; i < start + count; ++i) {\n const element = elements[i];\n if (element.hidden) {\n continue;\n }\n if (element.active && drawActiveElementsOnTop) {\n active.push(element);\n } else {\n element.draw(ctx, area);\n }\n }\n\n for (i = 0; i < active.length; ++i) {\n active[i].draw(ctx, area);\n }\n }\n\n /**\n\t * Returns a set of predefined style properties that should be used to represent the dataset\n\t * or the data if the index is specified\n\t * @param {number} index - data index\n\t * @param {boolean} [active] - true if hover\n\t * @return {object} style object\n\t */\n getStyle(index, active) {\n const mode = active ? 'active' : 'default';\n return index === undefined && this._cachedMeta.dataset\n ? this.resolveDatasetElementOptions(mode)\n : this.resolveDataElementOptions(index || 0, mode);\n }\n\n /**\n\t * @protected\n\t */\n getContext(index, active, mode) {\n const dataset = this.getDataset();\n let context;\n if (index >= 0 && index < this._cachedMeta.data.length) {\n const element = this._cachedMeta.data[index];\n context = element.$context ||\n (element.$context = createDataContext(this.getContext(), index, element));\n context.parsed = this.getParsed(index);\n context.raw = dataset.data[index];\n context.index = context.dataIndex = index;\n } else {\n context = this.$context ||\n (this.$context = createDatasetContext(this.chart.getContext(), this.index));\n context.dataset = dataset;\n context.index = context.datasetIndex = this.index;\n }\n\n context.active = !!active;\n context.mode = mode;\n return context;\n }\n\n /**\n\t * @param {string} [mode]\n\t * @protected\n\t */\n resolveDatasetElementOptions(mode) {\n return this._resolveElementOptions(this.datasetElementType.id, mode);\n }\n\n /**\n\t * @param {number} index\n\t * @param {string} [mode]\n\t * @protected\n\t */\n resolveDataElementOptions(index, mode) {\n return this._resolveElementOptions(this.dataElementType.id, mode, index);\n }\n\n /**\n\t * @private\n\t */\n _resolveElementOptions(elementType, mode = 'default', index) {\n const active = mode === 'active';\n const cache = this._cachedDataOpts;\n const cacheKey = elementType + '-' + mode;\n const cached = cache[cacheKey];\n const sharing = this.enableOptionSharing && defined(index);\n if (cached) {\n return cloneIfNotShared(cached, sharing);\n }\n const config = this.chart.config;\n const scopeKeys = config.datasetElementScopeKeys(this._type, elementType);\n const prefixes = active ? [`${elementType}Hover`, 'hover', elementType, ''] : [elementType, ''];\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n const names = Object.keys(defaults.elements[elementType]);\n // context is provided as a function, and is called only if needed,\n // so we don't create a context for each element if not needed.\n const context = () => this.getContext(index, active, mode);\n const values = config.resolveNamedOptions(scopes, names, context, prefixes);\n\n if (values.$shared) {\n // `$shared` indicates this set of options can be shared between multiple elements.\n // Sharing is used to reduce number of properties to change during animation.\n values.$shared = sharing;\n\n // We cache options by `mode`, which can be 'active' for example. This enables us\n // to have the 'active' element options and 'default' options to switch between\n // when interacting.\n cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\n }\n\n return values;\n }\n\n\n /**\n\t * @private\n\t */\n _resolveAnimations(index, transition, active) {\n const chart = this.chart;\n const cache = this._cachedDataOpts;\n const cacheKey = `animation-${transition}`;\n const cached = cache[cacheKey];\n if (cached) {\n return cached;\n }\n let options;\n if (chart.options.animation !== false) {\n const config = this.chart.config;\n const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n options = config.createResolver(scopes, this.getContext(index, active, transition));\n }\n const animations = new Animations(chart, options && options.animations);\n if (options && options._cacheable) {\n cache[cacheKey] = Object.freeze(animations);\n }\n return animations;\n }\n\n /**\n\t * Utility for getting the options object shared between elements\n\t * @protected\n\t */\n getSharedOptions(options) {\n if (!options.$shared) {\n return;\n }\n return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n }\n\n /**\n\t * Utility for determining if `options` should be included in the updated properties\n\t * @protected\n\t */\n includeOptions(mode, sharedOptions) {\n return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\n }\n\n /**\n * @todo v4, rename to getSharedOptions and remove excess functions\n */\n _getSharedOptions(start, mode) {\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const previouslySharedOptions = this._sharedOptions;\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions) || (sharedOptions !== previouslySharedOptions);\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n return {sharedOptions, includeOptions};\n }\n\n /**\n\t * Utility for updating an element with new properties, using animations when appropriate.\n\t * @protected\n\t */\n updateElement(element, index, properties, mode) {\n if (isDirectUpdateMode(mode)) {\n Object.assign(element, properties);\n } else {\n this._resolveAnimations(index, mode).update(element, properties);\n }\n }\n\n /**\n\t * Utility to animate the shared options, that are potentially affecting multiple elements.\n\t * @protected\n\t */\n updateSharedOptions(sharedOptions, mode, newOptions) {\n if (sharedOptions && !isDirectUpdateMode(mode)) {\n this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n }\n }\n\n /**\n\t * @private\n\t */\n _setStyle(element, index, mode, active) {\n element.active = active;\n const options = this.getStyle(index, active);\n this._resolveAnimations(index, mode, active).update(element, {\n // When going from active to inactive, we need to update to the shared options.\n // This way the once hovered element will end up with the same original shared options instance, after animation.\n options: (!active && this.getSharedOptions(options)) || options\n });\n }\n\n removeHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', false);\n }\n\n setHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', true);\n }\n\n /**\n\t * @private\n\t */\n _removeDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n\n if (element) {\n this._setStyle(element, undefined, 'active', false);\n }\n }\n\n /**\n\t * @private\n\t */\n _setDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n\n if (element) {\n this._setStyle(element, undefined, 'active', true);\n }\n }\n\n /**\n\t * @private\n\t */\n _resyncElements(resetNewElements) {\n const data = this._data;\n const elements = this._cachedMeta.data;\n\n // Apply changes detected through array listeners\n for (const [method, arg1, arg2] of this._syncList) {\n this[method](arg1, arg2);\n }\n this._syncList = [];\n\n const numMeta = elements.length;\n const numData = data.length;\n const count = Math.min(numData, numMeta);\n\n if (count) {\n // TODO: It is not optimal to always parse the old data\n // This is done because we are not detecting direct assignments:\n // chart.data.datasets[0].data[5] = 10;\n // chart.data.datasets[0].data[5].y = 10;\n this.parse(0, count);\n }\n\n if (numData > numMeta) {\n this._insertElements(numMeta, numData - numMeta, resetNewElements);\n } else if (numData < numMeta) {\n this._removeElements(numData, numMeta - numData);\n }\n }\n\n /**\n\t * @private\n\t */\n _insertElements(start, count, resetNewElements = true) {\n const meta = this._cachedMeta;\n const data = meta.data;\n const end = start + count;\n let i;\n\n const move = (arr) => {\n arr.length += count;\n for (i = arr.length - 1; i >= end; i--) {\n arr[i] = arr[i - count];\n }\n };\n move(data);\n\n for (i = start; i < end; ++i) {\n data[i] = new this.dataElementType();\n }\n\n if (this._parsing) {\n move(meta._parsed);\n }\n this.parse(start, count);\n\n if (resetNewElements) {\n this.updateElements(data, start, count, 'reset');\n }\n }\n\n updateElements(element, start, count, mode) {} // eslint-disable-line no-unused-vars\n\n /**\n\t * @private\n\t */\n _removeElements(start, count) {\n const meta = this._cachedMeta;\n if (this._parsing) {\n const removed = meta._parsed.splice(start, count);\n if (meta._stacked) {\n clearStacks(meta, removed);\n }\n }\n meta.data.splice(start, count);\n }\n\n /**\n\t * @private\n */\n _sync(args) {\n if (this._parsing) {\n this._syncList.push(args);\n } else {\n const [method, arg1, arg2] = args;\n this[method](arg1, arg2);\n }\n this.chart._dataChanges.push([this.index, ...args]);\n }\n\n _onDataPush() {\n const count = arguments.length;\n this._sync(['_insertElements', this.getDataset().data.length - count, count]);\n }\n\n _onDataPop() {\n this._sync(['_removeElements', this._cachedMeta.data.length - 1, 1]);\n }\n\n _onDataShift() {\n this._sync(['_removeElements', 0, 1]);\n }\n\n _onDataSplice(start, count) {\n if (count) {\n this._sync(['_removeElements', start, count]);\n }\n const newCount = arguments.length - 2;\n if (newCount) {\n this._sync(['_insertElements', start, newCount]);\n }\n }\n\n _onDataUnshift() {\n this._sync(['_insertElements', 0, arguments.length]);\n }\n}\n","import DatasetController from '../core/core.datasetController.js';\nimport {\n _arrayUnique, isArray, isNullOrUndef,\n valueOrDefault, resolveObjectKey, sign, defined\n} from '../helpers/index.js';\n\nfunction getAllScaleValues(scale, type) {\n if (!scale._cache.$bar) {\n const visibleMetas = scale.getMatchingVisibleMetas(type);\n let values = [];\n\n for (let i = 0, ilen = visibleMetas.length; i < ilen; i++) {\n values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale));\n }\n scale._cache.$bar = _arrayUnique(values.sort((a, b) => a - b));\n }\n return scale._cache.$bar;\n}\n\n/**\n * Computes the \"optimal\" sample size to maintain bars equally sized while preventing overlap.\n * @private\n */\nfunction computeMinSampleSize(meta) {\n const scale = meta.iScale;\n const values = getAllScaleValues(scale, meta.type);\n let min = scale._length;\n let i, ilen, curr, prev;\n const updateMinAndPrev = () => {\n if (curr === 32767 || curr === -32768) {\n // Ignore truncated pixels\n return;\n }\n if (defined(prev)) {\n // curr - prev === 0 is ignored\n min = Math.min(min, Math.abs(curr - prev) || min);\n }\n prev = curr;\n };\n\n for (i = 0, ilen = values.length; i < ilen; ++i) {\n curr = scale.getPixelForValue(values[i]);\n updateMinAndPrev();\n }\n\n prev = undefined;\n for (i = 0, ilen = scale.ticks.length; i < ilen; ++i) {\n curr = scale.getPixelForTick(i);\n updateMinAndPrev();\n }\n\n return min;\n}\n\n/**\n * Computes an \"ideal\" category based on the absolute bar thickness or, if undefined or null,\n * uses the smallest interval (see computeMinSampleSize) that prevents bar overlapping. This\n * mode currently always generates bars equally sized (until we introduce scriptable options?).\n * @private\n */\nfunction computeFitCategoryTraits(index, ruler, options, stackCount) {\n const thickness = options.barThickness;\n let size, ratio;\n\n if (isNullOrUndef(thickness)) {\n size = ruler.min * options.categoryPercentage;\n ratio = options.barPercentage;\n } else {\n // When bar thickness is enforced, category and bar percentages are ignored.\n // Note(SB): we could add support for relative bar thickness (e.g. barThickness: '50%')\n // and deprecate barPercentage since this value is ignored when thickness is absolute.\n size = thickness * stackCount;\n ratio = 1;\n }\n\n return {\n chunk: size / stackCount,\n ratio,\n start: ruler.pixels[index] - (size / 2)\n };\n}\n\n/**\n * Computes an \"optimal\" category that globally arranges bars side by side (no gap when\n * percentage options are 1), based on the previous and following categories. This mode\n * generates bars with different widths when data are not evenly spaced.\n * @private\n */\nfunction computeFlexCategoryTraits(index, ruler, options, stackCount) {\n const pixels = ruler.pixels;\n const curr = pixels[index];\n let prev = index > 0 ? pixels[index - 1] : null;\n let next = index < pixels.length - 1 ? pixels[index + 1] : null;\n const percent = options.categoryPercentage;\n\n if (prev === null) {\n // first data: its size is double based on the next point or,\n // if it's also the last data, we use the scale size.\n prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n }\n\n if (next === null) {\n // last data: its size is also double based on the previous point.\n next = curr + curr - prev;\n }\n\n const start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n const size = Math.abs(next - prev) / 2 * percent;\n\n return {\n chunk: size / stackCount,\n ratio: options.barPercentage,\n start\n };\n}\n\nfunction parseFloatBar(entry, item, vScale, i) {\n const startValue = vScale.parse(entry[0], i);\n const endValue = vScale.parse(entry[1], i);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n let barStart = min;\n let barEnd = max;\n\n if (Math.abs(min) > Math.abs(max)) {\n barStart = max;\n barEnd = min;\n }\n\n // Store `barEnd` (furthest away from origin) as parsed value,\n // to make stacking straight forward\n item[vScale.axis] = barEnd;\n\n item._custom = {\n barStart,\n barEnd,\n start: startValue,\n end: endValue,\n min,\n max\n };\n}\n\nfunction parseValue(entry, item, vScale, i) {\n if (isArray(entry)) {\n parseFloatBar(entry, item, vScale, i);\n } else {\n item[vScale.axis] = vScale.parse(entry, i);\n }\n return item;\n}\n\nfunction parseArrayOrPrimitive(meta, data, start, count) {\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = [];\n let i, ilen, item, entry;\n\n for (i = start, ilen = start + count; i < ilen; ++i) {\n entry = data[i];\n item = {};\n item[iScale.axis] = singleScale || iScale.parse(labels[i], i);\n parsed.push(parseValue(entry, item, vScale, i));\n }\n return parsed;\n}\n\nfunction isFloatBar(custom) {\n return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\n}\n\nfunction barSign(size, vScale, actualBase) {\n if (size !== 0) {\n return sign(size);\n }\n return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1);\n}\n\nfunction borderProps(properties) {\n let reverse, start, end, top, bottom;\n if (properties.horizontal) {\n reverse = properties.base > properties.x;\n start = 'left';\n end = 'right';\n } else {\n reverse = properties.base < properties.y;\n start = 'bottom';\n end = 'top';\n }\n if (reverse) {\n top = 'end';\n bottom = 'start';\n } else {\n top = 'start';\n bottom = 'end';\n }\n return {start, end, reverse, top, bottom};\n}\n\nfunction setBorderSkipped(properties, options, stack, index) {\n let edge = options.borderSkipped;\n const res = {};\n\n if (!edge) {\n properties.borderSkipped = res;\n return;\n }\n\n if (edge === true) {\n properties.borderSkipped = {top: true, right: true, bottom: true, left: true};\n return;\n }\n\n const {start, end, reverse, top, bottom} = borderProps(properties);\n\n if (edge === 'middle' && stack) {\n properties.enableBorderRadius = true;\n if ((stack._top || 0) === index) {\n edge = top;\n } else if ((stack._bottom || 0) === index) {\n edge = bottom;\n } else {\n res[parseEdge(bottom, start, end, reverse)] = true;\n edge = top;\n }\n }\n\n res[parseEdge(edge, start, end, reverse)] = true;\n properties.borderSkipped = res;\n}\n\nfunction parseEdge(edge, a, b, reverse) {\n if (reverse) {\n edge = swap(edge, a, b);\n edge = startEnd(edge, b, a);\n } else {\n edge = startEnd(edge, a, b);\n }\n return edge;\n}\n\nfunction swap(orig, v1, v2) {\n return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\n\nfunction startEnd(v, start, end) {\n return v === 'start' ? start : v === 'end' ? end : v;\n}\n\nfunction setInflateAmount(properties, {inflateAmount}, ratio) {\n properties.inflateAmount = inflateAmount === 'auto'\n ? ratio === 1 ? 0.33 : 0\n : inflateAmount;\n}\n\nexport default class BarController extends DatasetController {\n\n static id = 'bar';\n\n /**\n * @type {any}\n */\n static defaults = {\n datasetElementType: false,\n dataElementType: 'bar',\n\n categoryPercentage: 0.8,\n barPercentage: 0.9,\n grouped: true,\n\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'base', 'width', 'height']\n }\n }\n };\n\n /**\n * @type {any}\n */\n static overrides = {\n scales: {\n _index_: {\n type: 'category',\n offset: true,\n grid: {\n offset: true\n }\n },\n _value_: {\n type: 'linear',\n beginAtZero: true,\n }\n }\n };\n\n\n /**\n\t * Overriding primitive data parsing since we support mixed primitive/array\n\t * data for float bars\n\t * @protected\n\t */\n parsePrimitiveData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n\n /**\n\t * Overriding array data parsing since we support mixed primitive/array\n\t * data for float bars\n\t * @protected\n\t */\n parseArrayData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n\n /**\n\t * Overriding object data parsing since we support mixed primitive/array\n\t * value-scale data for float bars\n\t * @protected\n\t */\n parseObjectData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey;\n const vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey;\n const parsed = [];\n let i, ilen, item, obj;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n obj = data[i];\n item = {};\n item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i);\n parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i));\n }\n return parsed;\n }\n\n /**\n\t * @protected\n\t */\n updateRangeFromParsed(range, scale, parsed, stack) {\n super.updateRangeFromParsed(range, scale, parsed, stack);\n const custom = parsed._custom;\n if (custom && scale === this._cachedMeta.vScale) {\n // float bar: only one end of the bar is considered by `super`\n range.min = Math.min(range.min, custom.min);\n range.max = Math.max(range.max, custom.max);\n }\n }\n\n /**\n\t * @return {number|boolean}\n\t * @protected\n\t */\n getMaxOverflow() {\n return 0;\n }\n\n /**\n\t * @protected\n\t */\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const {iScale, vScale} = meta;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const value = isFloatBar(custom)\n ? '[' + custom.start + ', ' + custom.end + ']'\n : '' + vScale.getLabelForValue(parsed[vScale.axis]);\n\n return {\n label: '' + iScale.getLabelForValue(parsed[iScale.axis]),\n value\n };\n }\n\n initialize() {\n this.enableOptionSharing = true;\n\n super.initialize();\n\n const meta = this._cachedMeta;\n meta.stack = this.getDataset().stack;\n }\n\n update(mode) {\n const meta = this._cachedMeta;\n this.updateElements(meta.data, 0, meta.data.length, mode);\n }\n\n updateElements(bars, start, count, mode) {\n const reset = mode === 'reset';\n const {index, _cachedMeta: {vScale}} = this;\n const base = vScale.getBasePixel();\n const horizontal = vScale.isHorizontal();\n const ruler = this._getRuler();\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n\n for (let i = start; i < start + count; i++) {\n const parsed = this.getParsed(i);\n const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? {base, head: base} : this._calculateBarValuePixels(i);\n const ipixels = this._calculateBarIndexPixels(i, ruler);\n const stack = (parsed._stacks || {})[vScale.axis];\n\n const properties = {\n horizontal,\n base: vpixels.base,\n enableBorderRadius: !stack || isFloatBar(parsed._custom) || (index === stack._top || index === stack._bottom),\n x: horizontal ? vpixels.head : ipixels.center,\n y: horizontal ? ipixels.center : vpixels.head,\n height: horizontal ? ipixels.size : Math.abs(vpixels.size),\n width: horizontal ? Math.abs(vpixels.size) : ipixels.size\n };\n\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? 'active' : mode);\n }\n const options = properties.options || bars[i].options;\n setBorderSkipped(properties, options, stack, index);\n setInflateAmount(properties, options, ruler.ratio);\n this.updateElement(bars[i], i, properties, mode);\n }\n }\n\n /**\n\t * Returns the stacks based on groups and bar visibility.\n\t * @param {number} [last] - The dataset index\n\t * @param {number} [dataIndex] - The data index of the ruler\n\t * @returns {string[]} The list of stack IDs\n\t * @private\n\t */\n _getStacks(last, dataIndex) {\n const {iScale} = this._cachedMeta;\n const metasets = iScale.getMatchingVisibleMetas(this._type)\n .filter(meta => meta.controller.options.grouped);\n const stacked = iScale.options.stacked;\n const stacks = [];\n const currentParsed = this._cachedMeta.controller.getParsed(dataIndex);\n const iScaleValue = currentParsed && currentParsed[iScale.axis];\n\n const skipNull = (meta) => {\n const parsed = meta._parsed.find(item => item[iScale.axis] === iScaleValue);\n const val = parsed && parsed[meta.vScale.axis];\n\n if (isNullOrUndef(val) || isNaN(val)) {\n return true;\n }\n };\n\n for (const meta of metasets) {\n if (dataIndex !== undefined && skipNull(meta)) {\n continue;\n }\n\n // stacked | meta.stack\n // | found | not found | undefined\n // false | x | x | x\n // true | | x |\n // undefined | | x | x\n if (stacked === false || stacks.indexOf(meta.stack) === -1 ||\n\t\t\t\t(stacked === undefined && meta.stack === undefined)) {\n stacks.push(meta.stack);\n }\n if (meta.index === last) {\n break;\n }\n }\n\n // No stacks? that means there is no visible data. Let's still initialize an `undefined`\n // stack where possible invisible bars will be located.\n // https://github.com/chartjs/Chart.js/issues/6368\n if (!stacks.length) {\n stacks.push(undefined);\n }\n\n return stacks;\n }\n\n /**\n\t * Returns the effective number of stacks based on groups and bar visibility.\n\t * @private\n\t */\n _getStackCount(index) {\n return this._getStacks(undefined, index).length;\n }\n\n /**\n\t * Returns the stack index for the given dataset based on groups and bar visibility.\n\t * @param {number} [datasetIndex] - The dataset index\n\t * @param {string} [name] - The stack name to find\n * @param {number} [dataIndex]\n\t * @returns {number} The stack index\n\t * @private\n\t */\n _getStackIndex(datasetIndex, name, dataIndex) {\n const stacks = this._getStacks(datasetIndex, dataIndex);\n const index = (name !== undefined)\n ? stacks.indexOf(name)\n : -1; // indexOf returns -1 if element is not present\n\n return (index === -1)\n ? stacks.length - 1\n : index;\n }\n\n /**\n\t * @private\n\t */\n _getRuler() {\n const opts = this.options;\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const pixels = [];\n let i, ilen;\n\n for (i = 0, ilen = meta.data.length; i < ilen; ++i) {\n pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i));\n }\n\n const barThickness = opts.barThickness;\n const min = barThickness || computeMinSampleSize(meta);\n\n return {\n min,\n pixels,\n start: iScale._startPixel,\n end: iScale._endPixel,\n stackCount: this._getStackCount(),\n scale: iScale,\n grouped: opts.grouped,\n // bar thickness ratio used for non-grouped bars\n ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage\n };\n }\n\n /**\n\t * Note: pixel values are not clamped to the scale area.\n\t * @private\n\t */\n _calculateBarValuePixels(index) {\n const {_cachedMeta: {vScale, _stacked, index: datasetIndex}, options: {base: baseValue, minBarLength}} = this;\n const actualBase = baseValue || 0;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const floating = isFloatBar(custom);\n let value = parsed[vScale.axis];\n let start = 0;\n let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value;\n let head, size;\n\n if (length !== value) {\n start = length - value;\n length = value;\n }\n\n if (floating) {\n value = custom.barStart;\n length = custom.barEnd - custom.barStart;\n // bars crossing origin are not stacked\n if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n start = 0;\n }\n start += value;\n }\n\n const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n let base = vScale.getPixelForValue(startValue);\n\n if (this.chart.getDataVisibility(index)) {\n head = vScale.getPixelForValue(start + length);\n } else {\n // When not visible, no height\n head = base;\n }\n\n size = head - base;\n\n if (Math.abs(size) < minBarLength) {\n size = barSign(size, vScale, actualBase) * minBarLength;\n if (value === actualBase) {\n base -= size / 2;\n }\n const startPixel = vScale.getPixelForDecimal(0);\n const endPixel = vScale.getPixelForDecimal(1);\n const min = Math.min(startPixel, endPixel);\n const max = Math.max(startPixel, endPixel);\n base = Math.max(Math.min(base, max), min);\n head = base + size;\n\n if (_stacked && !floating) {\n // visual data coordinates after applying minBarLength\n parsed._stacks[vScale.axis]._visualValues[datasetIndex] = vScale.getValueForPixel(head) - vScale.getValueForPixel(base);\n }\n }\n\n if (base === vScale.getPixelForValue(actualBase)) {\n const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2;\n base += halfGrid;\n size -= halfGrid;\n }\n\n return {\n size,\n base,\n head,\n center: head + size / 2\n };\n }\n\n /**\n\t * @private\n\t */\n _calculateBarIndexPixels(index, ruler) {\n const scale = ruler.scale;\n const options = this.options;\n const skipNull = options.skipNull;\n const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);\n let center, size;\n if (ruler.grouped) {\n const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount;\n const range = options.barThickness === 'flex'\n ? computeFlexCategoryTraits(index, ruler, options, stackCount)\n : computeFitCategoryTraits(index, ruler, options, stackCount);\n\n const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined);\n center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\n size = Math.min(maxBarThickness, range.chunk * range.ratio);\n } else {\n // For non-grouped bar charts, exact pixel values are used\n center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index);\n size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n }\n\n return {\n base: center - size / 2,\n head: center + size / 2,\n center,\n size\n };\n }\n\n draw() {\n const meta = this._cachedMeta;\n const vScale = meta.vScale;\n const rects = meta.data;\n const ilen = rects.length;\n let i = 0;\n\n for (; i < ilen; ++i) {\n if (this.getParsed(i)[vScale.axis] !== null && !rects[i].hidden) {\n rects[i].draw(this._ctx);\n }\n }\n }\n\n}\n","/**\n * @namespace Chart._adapters\n * @since 2.8.0\n * @private\n */\n\nimport type {AnyObject} from '../types/basic.js';\nimport type {ChartOptions} from '../types/index.js';\n\nexport type TimeUnit = 'millisecond' | 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'year';\n\nexport interface DateAdapter {\n readonly options: T;\n /**\n * Will called with chart options after adapter creation.\n */\n init(this: DateAdapter, chartOptions: ChartOptions): void;\n /**\n * Returns a map of time formats for the supported formatting units defined\n * in Unit as well as 'datetime' representing a detailed date/time string.\n */\n formats(this: DateAdapter): Record;\n /**\n * Parses the given `value` and return the associated timestamp.\n * @param value - the value to parse (usually comes from the data)\n * @param [format] - the expected data format\n */\n parse(this: DateAdapter, value: unknown, format?: TimeUnit): number | null;\n /**\n * Returns the formatted date in the specified `format` for a given `timestamp`.\n * @param timestamp - the timestamp to format\n * @param format - the date/time token\n */\n format(this: DateAdapter, timestamp: number, format: TimeUnit): string;\n /**\n * Adds the specified `amount` of `unit` to the given `timestamp`.\n * @param timestamp - the input timestamp\n * @param amount - the amount to add\n * @param unit - the unit as string\n */\n add(this: DateAdapter, timestamp: number, amount: number, unit: TimeUnit): number;\n /**\n * Returns the number of `unit` between the given timestamps.\n * @param a - the input timestamp (reference)\n * @param b - the timestamp to subtract\n * @param unit - the unit as string\n */\n diff(this: DateAdapter, a: number, b: number, unit: TimeUnit): number;\n /**\n * Returns start of `unit` for the given `timestamp`.\n * @param timestamp - the input timestamp\n * @param unit - the unit as string\n * @param [weekday] - the ISO day of the week with 1 being Monday\n * and 7 being Sunday (only needed if param *unit* is `isoWeek`).\n */\n startOf(this: DateAdapter, timestamp: number, unit: TimeUnit | 'isoWeek', weekday?: number): number;\n /**\n * Returns end of `unit` for the given `timestamp`.\n * @param timestamp - the input timestamp\n * @param unit - the unit as string\n */\n endOf(this: DateAdapter, timestamp: number, unit: TimeUnit | 'isoWeek'): number;\n}\n\nfunction abstract(): T {\n throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\n\n/**\n * Date adapter (current used by the time scale)\n * @namespace Chart._adapters._date\n * @memberof Chart._adapters\n * @private\n */\nclass DateAdapterBase implements DateAdapter {\n\n /**\n * Override default date adapter methods.\n * Accepts type parameter to define options type.\n * @example\n * Chart._adapters._date.override<{myAdapterOption: string}>({\n * init() {\n * console.log(this.options.myAdapterOption);\n * }\n * })\n */\n static override(\n members: Partial, 'options'>>\n ) {\n Object.assign(DateAdapterBase.prototype, members);\n }\n\n readonly options: AnyObject;\n\n constructor(options: AnyObject) {\n this.options = options || {};\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n init() {}\n\n formats(): Record {\n return abstract();\n }\n\n parse(): number | null {\n return abstract();\n }\n\n format(): string {\n return abstract();\n }\n\n add(): number {\n return abstract();\n }\n\n diff(): number {\n return abstract();\n }\n\n startOf(): number {\n return abstract();\n }\n\n endOf(): number {\n return abstract();\n }\n}\n\nexport default {\n _date: DateAdapterBase\n};\n","import {_lookupByKey, _rlookupByKey} from '../helpers/helpers.collection.js';\nimport {getRelativePosition} from '../helpers/helpers.dom.js';\nimport {_angleBetween, getAngleFromPoint} from '../helpers/helpers.math.js';\nimport {_isPointInArea} from '../helpers/index.js';\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n * @typedef {{axis?: string, intersect?: boolean, includeInvisible?: boolean}} InteractionOptions\n * @typedef {{datasetIndex: number, index: number, element: import('./core.element.js').default}} InteractionItem\n * @typedef { import('../types/index.js').Point } Point\n */\n\n/**\n * Helper function to do binary search when possible\n * @param {object} metaset - the dataset meta\n * @param {string} axis - the axis mode. x|y|xy|r\n * @param {number} value - the value to find\n * @param {boolean} [intersect] - should the element intersect\n * @returns {{lo:number, hi:number}} indices to search data array between\n */\nfunction binarySearch(metaset, axis, value, intersect) {\n const {controller, data, _sorted} = metaset;\n const iScale = controller._cachedMeta.iScale;\n if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n if (!intersect) {\n return lookupMethod(data, axis, value);\n } else if (controller._sharedOptions) {\n // _sharedOptions indicates that each element has equal options -> equal proportions\n // So we can do a ranged binary search based on the range of first element and\n // be confident to get the full range of indices that can intersect with the value.\n const el = data[0];\n const range = typeof el.getRange === 'function' && el.getRange(axis);\n if (range) {\n const start = lookupMethod(data, axis, value - range);\n const end = lookupMethod(data, axis, value + range);\n return {lo: start.lo, hi: end.hi};\n }\n }\n }\n // Default to all elements, when binary search can not be used.\n return {lo: 0, hi: data.length - 1};\n}\n\n/**\n * Helper function to select candidate elements for interaction\n * @param {Chart} chart - the chart\n * @param {string} axis - the axis mode. x|y|xy|r\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {function} handler - the callback to execute for each visible item\n * @param {boolean} [intersect] - consider intersecting items\n */\nfunction evaluateInteractionItems(chart, axis, position, handler, intersect) {\n const metasets = chart.getSortedVisibleDatasetMetas();\n const value = position[axis];\n for (let i = 0, ilen = metasets.length; i < ilen; ++i) {\n const {index, data} = metasets[i];\n const {lo, hi} = binarySearch(metasets[i], axis, value, intersect);\n for (let j = lo; j <= hi; ++j) {\n const element = data[j];\n if (!element.skip) {\n handler(element, index, j);\n }\n }\n }\n}\n\n/**\n * Get a distance metric function for two points based on the\n * axis mode setting\n * @param {string} axis - the axis mode. x|y|xy|r\n */\nfunction getDistanceMetricForAxis(axis) {\n const useX = axis.indexOf('x') !== -1;\n const useY = axis.indexOf('y') !== -1;\n\n return function(pt1, pt2) {\n const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n };\n}\n\n/**\n * Helper function to get the items that intersect the event position\n * @param {Chart} chart - the chart\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axis mode. x|y|xy|r\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @param {boolean} [includeInvisible] - include invisible points that are outside of the chart area\n * @return {InteractionItem[]} the nearest items\n */\nfunction getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) {\n const items = [];\n\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return items;\n }\n\n const evaluationFunc = function(element, datasetIndex, index) {\n if (!includeInvisible && !_isPointInArea(element, chart.chartArea, 0)) {\n return;\n }\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n items.push({element, datasetIndex, index});\n }\n };\n\n evaluateInteractionItems(chart, axis, position, evaluationFunc, true);\n return items;\n}\n\n/**\n * Helper function to get the items nearest to the event position for a radial chart\n * @param {Chart} chart - the chart to look at elements from\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axes along which to measure distance\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @return {InteractionItem[]} the nearest items\n */\nfunction getNearestRadialItems(chart, position, axis, useFinalPosition) {\n let items = [];\n\n function evaluationFunc(element, datasetIndex, index) {\n const {startAngle, endAngle} = element.getProps(['startAngle', 'endAngle'], useFinalPosition);\n const {angle} = getAngleFromPoint(element, {x: position.x, y: position.y});\n\n if (_angleBetween(angle, startAngle, endAngle)) {\n items.push({element, datasetIndex, index});\n }\n }\n\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\n\n/**\n * Helper function to get the items nearest to the event position for a cartesian chart\n * @param {Chart} chart - the chart to look at elements from\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axes along which to measure distance\n * @param {boolean} [intersect] - if true, only consider items that intersect the position\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @param {boolean} [includeInvisible] - include invisible points that are outside of the chart area\n * @return {InteractionItem[]} the nearest items\n */\nfunction getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n let items = [];\n const distanceMetric = getDistanceMetricForAxis(axis);\n let minDistance = Number.POSITIVE_INFINITY;\n\n function evaluationFunc(element, datasetIndex, index) {\n const inRange = element.inRange(position.x, position.y, useFinalPosition);\n if (intersect && !inRange) {\n return;\n }\n\n const center = element.getCenterPoint(useFinalPosition);\n const pointInArea = !!includeInvisible || chart.isPointInArea(center);\n if (!pointInArea && !inRange) {\n return;\n }\n\n const distance = distanceMetric(position, center);\n if (distance < minDistance) {\n items = [{element, datasetIndex, index}];\n minDistance = distance;\n } else if (distance === minDistance) {\n // Can have multiple items at the same distance in which case we sort by size\n items.push({element, datasetIndex, index});\n }\n }\n\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\n\n/**\n * Helper function to get the items nearest to the event position considering all visible items in the chart\n * @param {Chart} chart - the chart to look at elements from\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axes along which to measure distance\n * @param {boolean} [intersect] - if true, only consider items that intersect the position\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @param {boolean} [includeInvisible] - include invisible points that are outside of the chart area\n * @return {InteractionItem[]} the nearest items\n */\nfunction getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return [];\n }\n\n return axis === 'r' && !intersect\n ? getNearestRadialItems(chart, position, axis, useFinalPosition)\n : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible);\n}\n\n/**\n * Helper function to get the items matching along the given X or Y axis\n * @param {Chart} chart - the chart to look at elements from\n * @param {Point} position - the point to be nearest to, in relative coordinates\n * @param {string} axis - the axis to match\n * @param {boolean} [intersect] - if true, only consider items that intersect the position\n * @param {boolean} [useFinalPosition] - use the element's animation target instead of current position\n * @return {InteractionItem[]} the nearest items\n */\nfunction getAxisItems(chart, position, axis, intersect, useFinalPosition) {\n const items = [];\n const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n let intersectsItem = false;\n\n evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index) => {\n if (element[rangeMethod] && element[rangeMethod](position[axis], useFinalPosition)) {\n items.push({element, datasetIndex, index});\n intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition);\n }\n });\n\n // If we want to trigger on an intersect and we don't have any items\n // that intersect the position, return nothing\n if (intersect && !intersectsItem) {\n return [];\n }\n return items;\n}\n\n/**\n * Contains interaction related functions\n * @namespace Chart.Interaction\n */\nexport default {\n // Part of the public API to facilitate developers creating their own modes\n evaluateInteractionItems,\n\n // Helper function for different modes\n modes: {\n /**\n\t\t * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something\n\t\t * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item\n\t\t * @function Chart.Interaction.modes.index\n\t\t * @since v2.4.0\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n index(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n // Default axis for index mode is 'x' to match old behaviour\n const axis = options.axis || 'x';\n const includeInvisible = options.includeInvisible || false;\n const items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible)\n : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n const elements = [];\n\n if (!items.length) {\n return [];\n }\n\n chart.getSortedVisibleDatasetMetas().forEach((meta) => {\n const index = items[0].index;\n const element = meta.data[index];\n\n // don't count items that are skipped (null data)\n if (element && !element.skip) {\n elements.push({element, datasetIndex: meta.index, index});\n }\n });\n\n return elements;\n },\n\n /**\n\t\t * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something\n\t\t * If the options.intersect is false, we find the nearest item and return the items in that dataset\n\t\t * @function Chart.Interaction.modes.dataset\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n dataset(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n let items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) :\n getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n\n if (items.length > 0) {\n const datasetIndex = items[0].datasetIndex;\n const data = chart.getDatasetMeta(datasetIndex).data;\n items = [];\n for (let i = 0; i < data.length; ++i) {\n items.push({element: data[i], datasetIndex, index: i});\n }\n }\n\n return items;\n },\n\n /**\n\t\t * Point mode returns all elements that hit test based on the event position\n\t\t * of the event\n\t\t * @function Chart.Interaction.modes.intersect\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n point(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible);\n },\n\n /**\n\t\t * nearest mode returns the element closest to the point\n\t\t * @function Chart.Interaction.modes.intersect\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n nearest(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getNearestItems(chart, position, axis, options.intersect, useFinalPosition, includeInvisible);\n },\n\n /**\n\t\t * x mode returns the elements that hit-test at the current x coordinate\n\t\t * @function Chart.Interaction.modes.x\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n x(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'x', options.intersect, useFinalPosition);\n },\n\n /**\n\t\t * y mode returns the elements that hit-test at the current y coordinate\n\t\t * @function Chart.Interaction.modes.y\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {InteractionOptions} options - options to use\n\t\t * @param {boolean} [useFinalPosition] - use final element position (animation target)\n\t\t * @return {InteractionItem[]} - items that are found\n\t\t */\n y(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'y', options.intersect, useFinalPosition);\n }\n }\n};\n","import {defined, each, isObject} from '../helpers/helpers.core.js';\nimport {toPadding} from '../helpers/helpers.options.js';\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n */\n\nconst STATIC_POSITIONS = ['left', 'top', 'right', 'bottom'];\n\nfunction filterByPosition(array, position) {\n return array.filter(v => v.pos === position);\n}\n\nfunction filterDynamicPositionByAxis(array, axis) {\n return array.filter(v => STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\n}\n\nfunction sortByWeight(array, reverse) {\n return array.sort((a, b) => {\n const v0 = reverse ? b : a;\n const v1 = reverse ? a : b;\n return v0.weight === v1.weight ?\n v0.index - v1.index :\n v0.weight - v1.weight;\n });\n}\n\nfunction wrapBoxes(boxes) {\n const layoutBoxes = [];\n let i, ilen, box, pos, stack, stackWeight;\n\n for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\n box = boxes[i];\n ({position: pos, options: {stack, stackWeight = 1}} = box);\n layoutBoxes.push({\n index: i,\n box,\n pos,\n horizontal: box.isHorizontal(),\n weight: box.weight,\n stack: stack && (pos + stack),\n stackWeight\n });\n }\n return layoutBoxes;\n}\n\nfunction buildStacks(layouts) {\n const stacks = {};\n for (const wrap of layouts) {\n const {stack, pos, stackWeight} = wrap;\n if (!stack || !STATIC_POSITIONS.includes(pos)) {\n continue;\n }\n const _stack = stacks[stack] || (stacks[stack] = {count: 0, placed: 0, weight: 0, size: 0});\n _stack.count++;\n _stack.weight += stackWeight;\n }\n return stacks;\n}\n\n/**\n * store dimensions used instead of available chartArea in fitBoxes\n **/\nfunction setLayoutDims(layouts, params) {\n const stacks = buildStacks(layouts);\n const {vBoxMaxWidth, hBoxMaxHeight} = params;\n let i, ilen, layout;\n for (i = 0, ilen = layouts.length; i < ilen; ++i) {\n layout = layouts[i];\n const {fullSize} = layout.box;\n const stack = stacks[layout.stack];\n const factor = stack && layout.stackWeight / stack.weight;\n if (layout.horizontal) {\n layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth;\n layout.height = hBoxMaxHeight;\n } else {\n layout.width = vBoxMaxWidth;\n layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight;\n }\n }\n return stacks;\n}\n\nfunction buildLayoutBoxes(boxes) {\n const layoutBoxes = wrapBoxes(boxes);\n const fullSize = sortByWeight(layoutBoxes.filter(wrap => wrap.box.fullSize), true);\n const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n const right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');\n const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');\n\n return {\n fullSize,\n leftAndTop: left.concat(top),\n rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal),\n chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n vertical: left.concat(right).concat(centerVertical),\n horizontal: top.concat(bottom).concat(centerHorizontal)\n };\n}\n\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\n\nfunction updateMaxPadding(maxPadding, boxPadding) {\n maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n}\n\nfunction updateDims(chartArea, params, layout, stacks) {\n const {pos, box} = layout;\n const maxPadding = chartArea.maxPadding;\n\n // dynamically placed boxes size is not considered\n if (!isObject(pos)) {\n if (layout.size) {\n // this layout was already counted for, lets first reduce old size\n chartArea[pos] -= layout.size;\n }\n const stack = stacks[layout.stack] || {size: 0, count: 1};\n stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width);\n layout.size = stack.size / stack.count;\n chartArea[pos] += layout.size;\n }\n\n if (box.getPadding) {\n updateMaxPadding(maxPadding, box.getPadding());\n }\n\n const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'));\n const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'));\n const widthChanged = newWidth !== chartArea.w;\n const heightChanged = newHeight !== chartArea.h;\n chartArea.w = newWidth;\n chartArea.h = newHeight;\n\n // return booleans on the changes per direction\n return layout.horizontal\n ? {same: widthChanged, other: heightChanged}\n : {same: heightChanged, other: widthChanged};\n}\n\nfunction handleMaxPadding(chartArea) {\n const maxPadding = chartArea.maxPadding;\n\n function updatePos(pos) {\n const change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n chartArea[pos] += change;\n return change;\n }\n chartArea.y += updatePos('top');\n chartArea.x += updatePos('left');\n updatePos('right');\n updatePos('bottom');\n}\n\nfunction getMargins(horizontal, chartArea) {\n const maxPadding = chartArea.maxPadding;\n\n function marginForPositions(positions) {\n const margin = {left: 0, top: 0, right: 0, bottom: 0};\n positions.forEach((pos) => {\n margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n });\n return margin;\n }\n\n return horizontal\n ? marginForPositions(['left', 'right'])\n : marginForPositions(['top', 'bottom']);\n}\n\nfunction fitBoxes(boxes, chartArea, params, stacks) {\n const refitBoxes = [];\n let i, ilen, layout, box, refit, changed;\n\n for (i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i) {\n layout = boxes[i];\n box = layout.box;\n\n box.update(\n layout.width || chartArea.w,\n layout.height || chartArea.h,\n getMargins(layout.horizontal, chartArea)\n );\n const {same, other} = updateDims(chartArea, params, layout, stacks);\n\n // Dimensions changed and there were non full width boxes before this\n // -> we have to refit those\n refit |= same && refitBoxes.length;\n\n // Chart area changed in the opposite direction\n changed = changed || other;\n\n if (!box.fullSize) { // fullSize boxes don't need to be re-fitted in any case\n refitBoxes.push(layout);\n }\n }\n\n return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed;\n}\n\nfunction setBoxDims(box, left, top, width, height) {\n box.top = top;\n box.left = left;\n box.right = left + width;\n box.bottom = top + height;\n box.width = width;\n box.height = height;\n}\n\nfunction placeBoxes(boxes, chartArea, params, stacks) {\n const userPadding = params.padding;\n let {x, y} = chartArea;\n\n for (const layout of boxes) {\n const box = layout.box;\n const stack = stacks[layout.stack] || {count: 1, placed: 0, weight: 1};\n const weight = (layout.stackWeight / stack.weight) || 1;\n if (layout.horizontal) {\n const width = chartArea.w * weight;\n const height = stack.size || box.height;\n if (defined(stack.start)) {\n y = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height);\n } else {\n setBoxDims(box, chartArea.left + stack.placed, y, width, height);\n }\n stack.start = y;\n stack.placed += width;\n y = box.bottom;\n } else {\n const height = chartArea.h * weight;\n const width = stack.size || box.width;\n if (defined(stack.start)) {\n x = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, x, userPadding.top, width, params.outerHeight - userPadding.bottom - userPadding.top);\n } else {\n setBoxDims(box, x, chartArea.top + stack.placed, width, height);\n }\n stack.start = x;\n stack.placed += height;\n x = box.right;\n }\n }\n\n chartArea.x = x;\n chartArea.y = y;\n}\n\n/**\n * @interface LayoutItem\n * @typedef {object} LayoutItem\n * @prop {string} position - The position of the item in the chart layout. Possible values are\n * 'left', 'top', 'right', 'bottom', and 'chartArea'\n * @prop {number} weight - The weight used to sort the item. Higher weights are further away from the chart area\n * @prop {boolean} fullSize - if true, and the item is horizontal, then push vertical boxes down\n * @prop {function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom)\n * @prop {function} update - Takes two parameters: width and height. Returns size of item\n * @prop {function} draw - Draws the element\n * @prop {function} [getPadding] - Returns an object with padding on the edges\n * @prop {number} width - Width of item. Must be valid after update()\n * @prop {number} height - Height of item. Must be valid after update()\n * @prop {number} left - Left edge of the item. Set by layout system and cannot be used in update\n * @prop {number} top - Top edge of the item. Set by layout system and cannot be used in update\n * @prop {number} right - Right edge of the item. Set by layout system and cannot be used in update\n * @prop {number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update\n */\n\n// The layout service is very self explanatory. It's responsible for the layout within a chart.\n// Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need\n// It is this service's responsibility of carrying out that layout.\nexport default {\n\n /**\n\t * Register a box to a chart.\n\t * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title.\n\t * @param {Chart} chart - the chart to use\n\t * @param {LayoutItem} item - the item to add to be laid out\n\t */\n addBox(chart, item) {\n if (!chart.boxes) {\n chart.boxes = [];\n }\n\n // initialize item with default values\n item.fullSize = item.fullSize || false;\n item.position = item.position || 'top';\n item.weight = item.weight || 0;\n // @ts-ignore\n item._layers = item._layers || function() {\n return [{\n z: 0,\n draw(chartArea) {\n item.draw(chartArea);\n }\n }];\n };\n\n chart.boxes.push(item);\n },\n\n /**\n\t * Remove a layoutItem from a chart\n\t * @param {Chart} chart - the chart to remove the box from\n\t * @param {LayoutItem} layoutItem - the item to remove from the layout\n\t */\n removeBox(chart, layoutItem) {\n const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n if (index !== -1) {\n chart.boxes.splice(index, 1);\n }\n },\n\n /**\n\t * Sets (or updates) options on the given `item`.\n\t * @param {Chart} chart - the chart in which the item lives (or will be added to)\n\t * @param {LayoutItem} item - the item to configure with the given options\n\t * @param {object} options - the new item options.\n\t */\n configure(chart, item, options) {\n item.fullSize = options.fullSize;\n item.position = options.position;\n item.weight = options.weight;\n },\n\n /**\n\t * Fits boxes of the given chart into the given size by having each box measure itself\n\t * then running a fitting algorithm\n\t * @param {Chart} chart - the chart\n\t * @param {number} width - the width to fit into\n\t * @param {number} height - the height to fit into\n * @param {number} minPadding - minimum padding required for each side of chart area\n\t */\n update(chart, width, height, minPadding) {\n if (!chart) {\n return;\n }\n\n const padding = toPadding(chart.options.layout.padding);\n const availableWidth = Math.max(width - padding.width, 0);\n const availableHeight = Math.max(height - padding.height, 0);\n const boxes = buildLayoutBoxes(chart.boxes);\n const verticalBoxes = boxes.vertical;\n const horizontalBoxes = boxes.horizontal;\n\n // Before any changes are made, notify boxes that an update is about to being\n // This is used to clear any cached data (e.g. scale limits)\n each(chart.boxes, box => {\n if (typeof box.beforeLayout === 'function') {\n box.beforeLayout();\n }\n });\n\n // Essentially we now have any number of boxes on each of the 4 sides.\n // Our canvas looks like the following.\n // The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and\n // B1 is the bottom axis\n // There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays\n // These locations are single-box locations only, when trying to register a chartArea location that is already taken,\n // an error will be thrown.\n //\n // |----------------------------------------------------|\n // | T1 (Full Width) |\n // |----------------------------------------------------|\n // | | | T2 | |\n // | |----|-------------------------------------|----|\n // | | | C1 | | C2 | |\n // | | |----| |----| |\n // | | | | |\n // | L1 | L2 | ChartArea (C0) | R1 |\n // | | | | |\n // | | |----| |----| |\n // | | | C3 | | C4 | |\n // | |----|-------------------------------------|----|\n // | | | B1 | |\n // |----------------------------------------------------|\n // | B2 (Full Width) |\n // |----------------------------------------------------|\n //\n\n const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap) =>\n wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1;\n\n const params = Object.freeze({\n outerWidth: width,\n outerHeight: height,\n padding,\n availableWidth,\n availableHeight,\n vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount,\n hBoxMaxHeight: availableHeight / 2\n });\n const maxPadding = Object.assign({}, padding);\n updateMaxPadding(maxPadding, toPadding(minPadding));\n const chartArea = Object.assign({\n maxPadding,\n w: availableWidth,\n h: availableHeight,\n x: padding.left,\n y: padding.top\n }, padding);\n\n const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n\n // First fit the fullSize boxes, to reduce probability of re-fitting.\n fitBoxes(boxes.fullSize, chartArea, params, stacks);\n\n // Then fit vertical boxes\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n\n // Then fit horizontal boxes\n if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) {\n // if the area changed, re-fit vertical boxes\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n }\n\n handleMaxPadding(chartArea);\n\n // Finally place the boxes to correct coordinates\n placeBoxes(boxes.leftAndTop, chartArea, params, stacks);\n\n // Move to opposite side of chart\n chartArea.x += chartArea.w;\n chartArea.y += chartArea.h;\n\n placeBoxes(boxes.rightAndBottom, chartArea, params, stacks);\n\n chart.chartArea = {\n left: chartArea.left,\n top: chartArea.top,\n right: chartArea.left + chartArea.w,\n bottom: chartArea.top + chartArea.h,\n height: chartArea.h,\n width: chartArea.w,\n };\n\n // Finally update boxes in chartArea (radial scale for example)\n each(boxes.chartArea, (layout) => {\n const box = layout.box;\n Object.assign(box, chart.chartArea);\n box.update(chartArea.w, chartArea.h, {left: 0, top: 0, right: 0, bottom: 0});\n });\n }\n};\n","\n/**\n * @typedef { import('../core/core.controller.js').default } Chart\n */\n\n/**\n * Abstract class that allows abstracting platform dependencies away from the chart.\n */\nexport default class BasePlatform {\n /**\n\t * Called at chart construction time, returns a context2d instance implementing\n\t * the [W3C Canvas 2D Context API standard]{@link https://www.w3.org/TR/2dcontext/}.\n\t * @param {HTMLCanvasElement} canvas - The canvas from which to acquire context (platform specific)\n\t * @param {number} [aspectRatio] - The chart options\n\t */\n acquireContext(canvas, aspectRatio) {} // eslint-disable-line no-unused-vars\n\n /**\n\t * Called at chart destruction time, releases any resources associated to the context\n\t * previously returned by the acquireContext() method.\n\t * @param {CanvasRenderingContext2D} context - The context2d instance\n\t * @returns {boolean} true if the method succeeded, else false\n\t */\n releaseContext(context) { // eslint-disable-line no-unused-vars\n return false;\n }\n\n /**\n\t * Registers the specified listener on the given chart.\n\t * @param {Chart} chart - Chart from which to listen for event\n\t * @param {string} type - The ({@link ChartEvent}) type to listen for\n\t * @param {function} listener - Receives a notification (an object that implements\n\t * the {@link ChartEvent} interface) when an event of the specified type occurs.\n\t */\n addEventListener(chart, type, listener) {} // eslint-disable-line no-unused-vars\n\n /**\n\t * Removes the specified listener previously registered with addEventListener.\n\t * @param {Chart} chart - Chart from which to remove the listener\n\t * @param {string} type - The ({@link ChartEvent}) type to remove\n\t * @param {function} listener - The listener function to remove from the event target.\n\t */\n removeEventListener(chart, type, listener) {} // eslint-disable-line no-unused-vars\n\n /**\n\t * @returns {number} the current devicePixelRatio of the device this platform is connected to.\n\t */\n getDevicePixelRatio() {\n return 1;\n }\n\n /**\n\t * Returns the maximum size in pixels of given canvas element.\n\t * @param {HTMLCanvasElement} element\n\t * @param {number} [width] - content width of parent element\n\t * @param {number} [height] - content height of parent element\n\t * @param {number} [aspectRatio] - aspect ratio to maintain\n\t */\n getMaximumSize(element, width, height, aspectRatio) {\n width = Math.max(0, width || element.width);\n height = height || element.height;\n return {\n width,\n height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height)\n };\n }\n\n /**\n\t * @param {HTMLCanvasElement} canvas\n\t * @returns {boolean} true if the canvas is attached to the platform, false if not.\n\t */\n isAttached(canvas) { // eslint-disable-line no-unused-vars\n return true;\n }\n\n /**\n * Updates config with platform specific requirements\n * @param {import('../core/core.config.js').default} config\n */\n updateConfig(config) { // eslint-disable-line no-unused-vars\n // no-op\n }\n}\n","/**\n * Platform fallback implementation (minimal).\n * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939\n */\n\nimport BasePlatform from './platform.base.js';\n\n/**\n * Platform class for charts without access to the DOM or to many element properties\n * This platform is used by default for any chart passed an OffscreenCanvas.\n * @extends BasePlatform\n */\nexport default class BasicPlatform extends BasePlatform {\n acquireContext(item) {\n // To prevent canvas fingerprinting, some add-ons undefine the getContext\n // method, for example: https://github.com/kkapsner/CanvasBlocker\n // https://github.com/chartjs/Chart.js/issues/2807\n return item && item.getContext && item.getContext('2d') || null;\n }\n updateConfig(config) {\n config.options.animation = false;\n }\n}\n","/**\n * Chart.Platform implementation for targeting a web browser\n */\n\nimport BasePlatform from './platform.base.js';\nimport {_getParentNode, getRelativePosition, supportsEventListenerOptions, readUsedSize, getMaximumSize} from '../helpers/helpers.dom.js';\nimport {throttled} from '../helpers/helpers.extras.js';\nimport {isNullOrUndef} from '../helpers/helpers.core.js';\n\n/**\n * @typedef { import('../core/core.controller.js').default } Chart\n */\n\nconst EXPANDO_KEY = '$chartjs';\n\n/**\n * DOM event types -> Chart.js event types.\n * Note: only events with different types are mapped.\n * @see https://developer.mozilla.org/en-US/docs/Web/Events\n */\nconst EVENT_TYPES = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup',\n pointerenter: 'mouseenter',\n pointerdown: 'mousedown',\n pointermove: 'mousemove',\n pointerup: 'mouseup',\n pointerleave: 'mouseout',\n pointerout: 'mouseout'\n};\n\nconst isNullOrEmpty = value => value === null || value === '';\n/**\n * Initializes the canvas style and render size without modifying the canvas display size,\n * since responsiveness is handled by the controller.resize() method. The config is used\n * to determine the aspect ratio to apply in case no explicit height has been specified.\n * @param {HTMLCanvasElement} canvas\n * @param {number} [aspectRatio]\n */\nfunction initCanvas(canvas, aspectRatio) {\n const style = canvas.style;\n\n // NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it\n // returns null or '' if no explicit value has been set to the canvas attribute.\n const renderHeight = canvas.getAttribute('height');\n const renderWidth = canvas.getAttribute('width');\n\n // Chart.js modifies some canvas values that we want to restore on destroy\n canvas[EXPANDO_KEY] = {\n initial: {\n height: renderHeight,\n width: renderWidth,\n style: {\n display: style.display,\n height: style.height,\n width: style.width\n }\n }\n };\n\n // Force canvas to display as block to avoid extra space caused by inline\n // elements, which would interfere with the responsive resize process.\n // https://github.com/chartjs/Chart.js/issues/2538\n style.display = style.display || 'block';\n // Include possible borders in the size\n style.boxSizing = style.boxSizing || 'border-box';\n\n if (isNullOrEmpty(renderWidth)) {\n const displayWidth = readUsedSize(canvas, 'width');\n if (displayWidth !== undefined) {\n canvas.width = displayWidth;\n }\n }\n\n if (isNullOrEmpty(renderHeight)) {\n if (canvas.style.height === '') {\n // If no explicit render height and style height, let's apply the aspect ratio,\n // which one can be specified by the user but also by charts as default option\n // (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2.\n canvas.height = canvas.width / (aspectRatio || 2);\n } else {\n const displayHeight = readUsedSize(canvas, 'height');\n if (displayHeight !== undefined) {\n canvas.height = displayHeight;\n }\n }\n }\n\n return canvas;\n}\n\n// Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events.\n// https://github.com/chartjs/Chart.js/issues/4287\nconst eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\n\nfunction addListener(node, type, listener) {\n if (node) {\n node.addEventListener(type, listener, eventListenerOptions);\n }\n}\n\nfunction removeListener(chart, type, listener) {\n if (chart && chart.canvas) {\n chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n }\n}\n\nfunction fromNativeEvent(event, chart) {\n const type = EVENT_TYPES[event.type] || event.type;\n const {x, y} = getRelativePosition(event, chart);\n return {\n type,\n chart,\n native: event,\n x: x !== undefined ? x : null,\n y: y !== undefined ? y : null,\n };\n}\n\nfunction nodeListContains(nodeList, canvas) {\n for (const node of nodeList) {\n if (node === canvas || node.contains(canvas)) {\n return true;\n }\n }\n}\n\nfunction createAttachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.addedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.removedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\n\nfunction createDetachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.removedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.addedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\n\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\n\nfunction onWindowResize() {\n const dpr = window.devicePixelRatio;\n if (dpr === oldDevicePixelRatio) {\n return;\n }\n oldDevicePixelRatio = dpr;\n drpListeningCharts.forEach((resize, chart) => {\n if (chart.currentDevicePixelRatio !== dpr) {\n resize();\n }\n });\n}\n\nfunction listenDevicePixelRatioChanges(chart, resize) {\n if (!drpListeningCharts.size) {\n window.addEventListener('resize', onWindowResize);\n }\n drpListeningCharts.set(chart, resize);\n}\n\nfunction unlistenDevicePixelRatioChanges(chart) {\n drpListeningCharts.delete(chart);\n if (!drpListeningCharts.size) {\n window.removeEventListener('resize', onWindowResize);\n }\n}\n\nfunction createResizeObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const container = canvas && _getParentNode(canvas);\n if (!container) {\n return;\n }\n const resize = throttled((width, height) => {\n const w = container.clientWidth;\n listener(width, height);\n if (w < container.clientWidth) {\n // If the container size shrank during chart resize, let's assume\n // scrollbar appeared. So we resize again with the scrollbar visible -\n // effectively making chart smaller and the scrollbar hidden again.\n // Because we are inside `throttled`, and currently `ticking`, scroll\n // events are ignored during this whole 2 resize process.\n // If we assumed wrong and something else happened, we are resizing\n // twice in a frame (potential performance issue)\n listener();\n }\n }, window);\n\n // @ts-ignore until https://github.com/microsoft/TypeScript/issues/37861 implemented\n const observer = new ResizeObserver(entries => {\n const entry = entries[0];\n const width = entry.contentRect.width;\n const height = entry.contentRect.height;\n // When its container's display is set to 'none' the callback will be called with a\n // size of (0, 0), which will cause the chart to lose its original height, so skip\n // resizing in such case.\n if (width === 0 && height === 0) {\n return;\n }\n resize(width, height);\n });\n observer.observe(container);\n listenDevicePixelRatioChanges(chart, resize);\n\n return observer;\n}\n\nfunction releaseObserver(chart, type, observer) {\n if (observer) {\n observer.disconnect();\n }\n if (type === 'resize') {\n unlistenDevicePixelRatioChanges(chart);\n }\n}\n\nfunction createProxyAndListen(chart, type, listener) {\n const canvas = chart.canvas;\n const proxy = throttled((event) => {\n // This case can occur if the chart is destroyed while waiting\n // for the throttled function to occur. We prevent crashes by checking\n // for a destroyed chart\n if (chart.ctx !== null) {\n listener(fromNativeEvent(event, chart));\n }\n }, chart);\n\n addListener(canvas, type, proxy);\n\n return proxy;\n}\n\n/**\n * Platform class for charts that can access the DOM and global window/document properties\n * @extends BasePlatform\n */\nexport default class DomPlatform extends BasePlatform {\n\n /**\n\t * @param {HTMLCanvasElement} canvas\n\t * @param {number} [aspectRatio]\n\t * @return {CanvasRenderingContext2D|null}\n\t */\n acquireContext(canvas, aspectRatio) {\n // To prevent canvas fingerprinting, some add-ons undefine the getContext\n // method, for example: https://github.com/kkapsner/CanvasBlocker\n // https://github.com/chartjs/Chart.js/issues/2807\n const context = canvas && canvas.getContext && canvas.getContext('2d');\n\n // `instanceof HTMLCanvasElement/CanvasRenderingContext2D` fails when the canvas is\n // inside an iframe or when running in a protected environment. We could guess the\n // types from their toString() value but let's keep things flexible and assume it's\n // a sufficient condition if the canvas has a context2D which has canvas as `canvas`.\n // https://github.com/chartjs/Chart.js/issues/3887\n // https://github.com/chartjs/Chart.js/issues/4102\n // https://github.com/chartjs/Chart.js/issues/4152\n if (context && context.canvas === canvas) {\n // Load platform resources on first chart creation, to make it possible to\n // import the library before setting platform options.\n initCanvas(canvas, aspectRatio);\n return context;\n }\n\n return null;\n }\n\n /**\n\t * @param {CanvasRenderingContext2D} context\n\t */\n releaseContext(context) {\n const canvas = context.canvas;\n if (!canvas[EXPANDO_KEY]) {\n return false;\n }\n\n const initial = canvas[EXPANDO_KEY].initial;\n ['height', 'width'].forEach((prop) => {\n const value = initial[prop];\n if (isNullOrUndef(value)) {\n canvas.removeAttribute(prop);\n } else {\n canvas.setAttribute(prop, value);\n }\n });\n\n const style = initial.style || {};\n Object.keys(style).forEach((key) => {\n canvas.style[key] = style[key];\n });\n\n // The canvas render size might have been changed (and thus the state stack discarded),\n // we can't use save() and restore() to restore the initial state. So make sure that at\n // least the canvas context is reset to the default state by setting the canvas width.\n // https://www.w3.org/TR/2011/WD-html5-20110525/the-canvas-element.html\n // eslint-disable-next-line no-self-assign\n canvas.width = canvas.width;\n\n delete canvas[EXPANDO_KEY];\n return true;\n }\n\n /**\n\t *\n\t * @param {Chart} chart\n\t * @param {string} type\n\t * @param {function} listener\n\t */\n addEventListener(chart, type, listener) {\n // Can have only one listener per type, so make sure previous is removed\n this.removeEventListener(chart, type);\n\n const proxies = chart.$proxies || (chart.$proxies = {});\n const handlers = {\n attach: createAttachObserver,\n detach: createDetachObserver,\n resize: createResizeObserver\n };\n const handler = handlers[type] || createProxyAndListen;\n proxies[type] = handler(chart, type, listener);\n }\n\n\n /**\n\t * @param {Chart} chart\n\t * @param {string} type\n\t */\n removeEventListener(chart, type) {\n const proxies = chart.$proxies || (chart.$proxies = {});\n const proxy = proxies[type];\n\n if (!proxy) {\n return;\n }\n\n const handlers = {\n attach: releaseObserver,\n detach: releaseObserver,\n resize: releaseObserver\n };\n const handler = handlers[type] || removeListener;\n handler(chart, type, proxy);\n proxies[type] = undefined;\n }\n\n getDevicePixelRatio() {\n return window.devicePixelRatio;\n }\n\n /**\n\t * @param {HTMLCanvasElement} canvas\n\t * @param {number} [width] - content width of parent element\n\t * @param {number} [height] - content height of parent element\n\t * @param {number} [aspectRatio] - aspect ratio to maintain\n\t */\n getMaximumSize(canvas, width, height, aspectRatio) {\n return getMaximumSize(canvas, width, height, aspectRatio);\n }\n\n /**\n\t * @param {HTMLCanvasElement} canvas\n\t */\n isAttached(canvas) {\n const container = canvas && _getParentNode(canvas);\n return !!(container && container.isConnected);\n }\n}\n","import type {AnyObject} from '../types/basic.js';\nimport type {Point} from '../types/geometric.js';\nimport type {Animation} from '../types/animation.js';\nimport {isNumber} from '../helpers/helpers.math.js';\n\nexport default class Element {\n\n static defaults = {};\n static defaultRoutes = undefined;\n\n x: number;\n y: number;\n active = false;\n options: O;\n $animations: Record;\n\n tooltipPosition(useFinalPosition: boolean): Point {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y} as Point;\n }\n\n hasValue() {\n return isNumber(this.x) && isNumber(this.y);\n }\n\n /**\n * Gets the current or final value of each prop. Can return extra properties (whole object).\n * @param props - properties to get\n * @param [final] - get the final value (animation target)\n */\n getProps

    (props: P, final?: boolean): Pick;\n getProps

    (props: P[], final?: boolean): Partial>;\n getProps(props: string[], final?: boolean): Partial> {\n const anims = this.$animations;\n if (!final || !anims) {\n // let's not create an object, if not needed\n return this as Record;\n }\n const ret: Record = {};\n props.forEach((prop) => {\n ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop as string];\n });\n return ret;\n }\n}\n","import {isNullOrUndef, valueOrDefault} from '../helpers/helpers.core.js';\nimport {_factorize} from '../helpers/helpers.math.js';\n\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n * @typedef {{value:number | string, label?:string, major?:boolean, $context?:any}} Tick\n */\n\n/**\n * Returns a subset of ticks to be plotted to avoid overlapping labels.\n * @param {import('./core.scale.js').default} scale\n * @param {Tick[]} ticks\n * @return {Tick[]}\n * @private\n */\nexport function autoSkip(scale, ticks) {\n const tickOpts = scale.options.ticks;\n const determinedMaxTicks = determineMaxTicks(scale);\n const ticksLimit = Math.min(tickOpts.maxTicksLimit || determinedMaxTicks, determinedMaxTicks);\n const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n const numMajorIndices = majorIndices.length;\n const first = majorIndices[0];\n const last = majorIndices[numMajorIndices - 1];\n const newTicks = [];\n\n // If there are too many major ticks to display them all\n if (numMajorIndices > ticksLimit) {\n skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n return newTicks;\n }\n\n const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n\n if (numMajorIndices > 0) {\n let i, ilen;\n const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null;\n skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n for (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) {\n skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n }\n skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n return newTicks;\n }\n skip(ticks, newTicks, spacing);\n return newTicks;\n}\n\nfunction determineMaxTicks(scale) {\n const offset = scale.options.offset;\n const tickLength = scale._tickSize();\n const maxScale = scale._length / tickLength + (offset ? 0 : 1);\n const maxChart = scale._maxLength / tickLength;\n return Math.floor(Math.min(maxScale, maxChart));\n}\n\n/**\n * @param {number[]} majorIndices\n * @param {Tick[]} ticks\n * @param {number} ticksLimit\n */\nfunction calculateSpacing(majorIndices, ticks, ticksLimit) {\n const evenMajorSpacing = getEvenSpacing(majorIndices);\n const spacing = ticks.length / ticksLimit;\n\n // If the major ticks are evenly spaced apart, place the minor ticks\n // so that they divide the major ticks into even chunks\n if (!evenMajorSpacing) {\n return Math.max(spacing, 1);\n }\n\n const factors = _factorize(evenMajorSpacing);\n for (let i = 0, ilen = factors.length - 1; i < ilen; i++) {\n const factor = factors[i];\n if (factor > spacing) {\n return factor;\n }\n }\n return Math.max(spacing, 1);\n}\n\n/**\n * @param {Tick[]} ticks\n */\nfunction getMajorIndices(ticks) {\n const result = [];\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (ticks[i].major) {\n result.push(i);\n }\n }\n return result;\n}\n\n/**\n * @param {Tick[]} ticks\n * @param {Tick[]} newTicks\n * @param {number[]} majorIndices\n * @param {number} spacing\n */\nfunction skipMajors(ticks, newTicks, majorIndices, spacing) {\n let count = 0;\n let next = majorIndices[0];\n let i;\n\n spacing = Math.ceil(spacing);\n for (i = 0; i < ticks.length; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = majorIndices[count * spacing];\n }\n }\n}\n\n/**\n * @param {Tick[]} ticks\n * @param {Tick[]} newTicks\n * @param {number} spacing\n * @param {number} [majorStart]\n * @param {number} [majorEnd]\n */\nfunction skip(ticks, newTicks, spacing, majorStart, majorEnd) {\n const start = valueOrDefault(majorStart, 0);\n const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length);\n let count = 0;\n let length, i, next;\n\n spacing = Math.ceil(spacing);\n if (majorEnd) {\n length = majorEnd - majorStart;\n spacing = length / Math.floor(length / spacing);\n }\n\n next = start;\n\n while (next < 0) {\n count++;\n next = Math.round(start + count * spacing);\n }\n\n for (i = Math.max(start, 0); i < end; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = Math.round(start + count * spacing);\n }\n }\n}\n\n\n/**\n * @param {number[]} arr\n */\nfunction getEvenSpacing(arr) {\n const len = arr.length;\n let i, diff;\n\n if (len < 2) {\n return false;\n }\n\n for (diff = arr[0], i = 1; i < len; ++i) {\n if (arr[i] - arr[i - 1] !== diff) {\n return false;\n }\n }\n return diff;\n}\n","import Element from './core.element.js';\nimport {_alignPixel, _measureText, renderText, clipArea, unclipArea} from '../helpers/helpers.canvas.js';\nimport {callback as call, each, finiteOrDefault, isArray, isFinite, isNullOrUndef, isObject, valueOrDefault} from '../helpers/helpers.core.js';\nimport {toDegrees, toRadians, _int16Range, _limitValue, HALF_PI} from '../helpers/helpers.math.js';\nimport {_alignStartEnd, _toLeftRightCenter} from '../helpers/helpers.extras.js';\nimport {createContext, toFont, toPadding, _addGrace} from '../helpers/helpers.options.js';\nimport {autoSkip} from './core.scale.autoskip.js';\n\nconst reverseAlign = (align) => align === 'left' ? 'right' : align === 'right' ? 'left' : align;\nconst offsetFromEdge = (scale, edge, offset) => edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\nconst getTicksLimit = (ticksLength, maxTicksLimit) => Math.min(maxTicksLimit || ticksLength, ticksLength);\n\n/**\n * @typedef { import('../types/index.js').Chart } Chart\n * @typedef {{value:number | string, label?:string, major?:boolean, $context?:any}} Tick\n */\n\n/**\n * Returns a new array containing numItems from arr\n * @param {any[]} arr\n * @param {number} numItems\n */\nfunction sample(arr, numItems) {\n const result = [];\n const increment = arr.length / numItems;\n const len = arr.length;\n let i = 0;\n\n for (; i < len; i += increment) {\n result.push(arr[Math.floor(i)]);\n }\n return result;\n}\n\n/**\n * @param {Scale} scale\n * @param {number} index\n * @param {boolean} offsetGridLines\n */\nfunction getPixelForGridLine(scale, index, offsetGridLines) {\n const length = scale.ticks.length;\n const validIndex = Math.min(index, length - 1);\n const start = scale._startPixel;\n const end = scale._endPixel;\n const epsilon = 1e-6; // 1e-6 is margin in pixels for accumulated error.\n let lineValue = scale.getPixelForTick(validIndex);\n let offset;\n\n if (offsetGridLines) {\n if (length === 1) {\n offset = Math.max(lineValue - start, end - lineValue);\n } else if (index === 0) {\n offset = (scale.getPixelForTick(1) - lineValue) / 2;\n } else {\n offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n }\n lineValue += validIndex < index ? offset : -offset;\n\n // Return undefined if the pixel is out of the range\n if (lineValue < start - epsilon || lineValue > end + epsilon) {\n return;\n }\n }\n return lineValue;\n}\n\n/**\n * @param {object} caches\n * @param {number} length\n */\nfunction garbageCollect(caches, length) {\n each(caches, (cache) => {\n const gc = cache.gc;\n const gcLen = gc.length / 2;\n let i;\n if (gcLen > length) {\n for (i = 0; i < gcLen; ++i) {\n delete cache.data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n });\n}\n\n/**\n * @param {object} options\n */\nfunction getTickMarkLength(options) {\n return options.drawTicks ? options.tickLength : 0;\n}\n\n/**\n * @param {object} options\n */\nfunction getTitleHeight(options, fallback) {\n if (!options.display) {\n return 0;\n }\n\n const font = toFont(options.font, fallback);\n const padding = toPadding(options.padding);\n const lines = isArray(options.text) ? options.text.length : 1;\n\n return (lines * font.lineHeight) + padding.height;\n}\n\nfunction createScaleContext(parent, scale) {\n return createContext(parent, {\n scale,\n type: 'scale'\n });\n}\n\nfunction createTickContext(parent, index, tick) {\n return createContext(parent, {\n tick,\n index,\n type: 'tick'\n });\n}\n\nfunction titleAlign(align, position, reverse) {\n /** @type {CanvasTextAlign} */\n let ret = _toLeftRightCenter(align);\n if ((reverse && position !== 'right') || (!reverse && position === 'right')) {\n ret = reverseAlign(ret);\n }\n return ret;\n}\n\nfunction titleArgs(scale, offset, position, align) {\n const {top, left, bottom, right, chart} = scale;\n const {chartArea, scales} = chart;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n const height = bottom - top;\n const width = right - left;\n\n if (scale.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleY = scales[positionAxisID].getPixelForValue(value) + height - offset;\n } else if (position === 'center') {\n titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset;\n } else {\n titleY = offsetFromEdge(scale, position, offset);\n }\n maxWidth = right - left;\n } else {\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleX = scales[positionAxisID].getPixelForValue(value) - width + offset;\n } else if (position === 'center') {\n titleX = (chartArea.left + chartArea.right) / 2 - width + offset;\n } else {\n titleX = offsetFromEdge(scale, position, offset);\n }\n titleY = _alignStartEnd(align, bottom, top);\n rotation = position === 'left' ? -HALF_PI : HALF_PI;\n }\n return {titleX, titleY, maxWidth, rotation};\n}\n\nexport default class Scale extends Element {\n\n // eslint-disable-next-line max-statements\n constructor(cfg) {\n super();\n\n /** @type {string} */\n this.id = cfg.id;\n /** @type {string} */\n this.type = cfg.type;\n /** @type {any} */\n this.options = undefined;\n /** @type {CanvasRenderingContext2D} */\n this.ctx = cfg.ctx;\n /** @type {Chart} */\n this.chart = cfg.chart;\n\n // implements box\n /** @type {number} */\n this.top = undefined;\n /** @type {number} */\n this.bottom = undefined;\n /** @type {number} */\n this.left = undefined;\n /** @type {number} */\n this.right = undefined;\n /** @type {number} */\n this.width = undefined;\n /** @type {number} */\n this.height = undefined;\n this._margins = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n /** @type {number} */\n this.maxWidth = undefined;\n /** @type {number} */\n this.maxHeight = undefined;\n /** @type {number} */\n this.paddingTop = undefined;\n /** @type {number} */\n this.paddingBottom = undefined;\n /** @type {number} */\n this.paddingLeft = undefined;\n /** @type {number} */\n this.paddingRight = undefined;\n\n // scale-specific properties\n /** @type {string=} */\n this.axis = undefined;\n /** @type {number=} */\n this.labelRotation = undefined;\n this.min = undefined;\n this.max = undefined;\n this._range = undefined;\n /** @type {Tick[]} */\n this.ticks = [];\n /** @type {object[]|null} */\n this._gridLineItems = null;\n /** @type {object[]|null} */\n this._labelItems = null;\n /** @type {object|null} */\n this._labelSizes = null;\n this._length = 0;\n this._maxLength = 0;\n this._longestTextCache = {};\n /** @type {number} */\n this._startPixel = undefined;\n /** @type {number} */\n this._endPixel = undefined;\n this._reversePixels = false;\n this._userMax = undefined;\n this._userMin = undefined;\n this._suggestedMax = undefined;\n this._suggestedMin = undefined;\n this._ticksLength = 0;\n this._borderValue = 0;\n this._cache = {};\n this._dataLimitsCached = false;\n this.$context = undefined;\n }\n\n /**\n\t * @param {any} options\n\t * @since 3.0\n\t */\n init(options) {\n this.options = options.setContext(this.getContext());\n\n this.axis = options.axis;\n\n // parse min/max value, so we can properly determine min/max for other scales\n this._userMin = this.parse(options.min);\n this._userMax = this.parse(options.max);\n this._suggestedMin = this.parse(options.suggestedMin);\n this._suggestedMax = this.parse(options.suggestedMax);\n }\n\n /**\n\t * Parse a supported input value to internal representation.\n\t * @param {*} raw\n\t * @param {number} [index]\n\t * @since 3.0\n\t */\n parse(raw, index) { // eslint-disable-line no-unused-vars\n return raw;\n }\n\n /**\n\t * @return {{min: number, max: number, minDefined: boolean, maxDefined: boolean}}\n\t * @protected\n\t * @since 3.0\n\t */\n getUserBounds() {\n let {_userMin, _userMax, _suggestedMin, _suggestedMax} = this;\n _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY);\n _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY);\n _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY);\n _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY);\n return {\n min: finiteOrDefault(_userMin, _suggestedMin),\n max: finiteOrDefault(_userMax, _suggestedMax),\n minDefined: isFinite(_userMin),\n maxDefined: isFinite(_userMax)\n };\n }\n\n /**\n\t * @param {boolean} canStack\n\t * @return {{min: number, max: number}}\n\t * @protected\n\t * @since 3.0\n\t */\n getMinMax(canStack) {\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n let range;\n\n if (minDefined && maxDefined) {\n return {min, max};\n }\n\n const metas = this.getMatchingVisibleMetas();\n for (let i = 0, ilen = metas.length; i < ilen; ++i) {\n range = metas[i].controller.getMinMax(this, canStack);\n if (!minDefined) {\n min = Math.min(min, range.min);\n }\n if (!maxDefined) {\n max = Math.max(max, range.max);\n }\n }\n\n // Make sure min <= max when only min or max is defined by user and the data is outside that range\n min = maxDefined && min > max ? max : min;\n max = minDefined && min > max ? min : max;\n\n return {\n min: finiteOrDefault(min, finiteOrDefault(max, min)),\n max: finiteOrDefault(max, finiteOrDefault(min, max))\n };\n }\n\n /**\n\t * Get the padding needed for the scale\n\t * @return {{top: number, left: number, bottom: number, right: number}} the necessary padding\n\t * @private\n\t */\n getPadding() {\n return {\n left: this.paddingLeft || 0,\n top: this.paddingTop || 0,\n right: this.paddingRight || 0,\n bottom: this.paddingBottom || 0\n };\n }\n\n /**\n\t * Returns the scale tick objects\n\t * @return {Tick[]}\n\t * @since 2.7\n\t */\n getTicks() {\n return this.ticks;\n }\n\n /**\n\t * @return {string[]}\n\t */\n getLabels() {\n const data = this.chart.data;\n return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n }\n\n /**\n * @return {import('../types.js').LabelItem[]}\n */\n getLabelItems(chartArea = this.chart.chartArea) {\n const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n return items;\n }\n\n // When a new layout is created, reset the data limits cache\n beforeLayout() {\n this._cache = {};\n this._dataLimitsCached = false;\n }\n\n // These methods are ordered by lifecycle. Utilities then follow.\n // Any function defined here is inherited by all scale types.\n // Any function can be extended by the scale type\n\n beforeUpdate() {\n call(this.options.beforeUpdate, [this]);\n }\n\n /**\n\t * @param {number} maxWidth - the max width in pixels\n\t * @param {number} maxHeight - the max height in pixels\n\t * @param {{top: number, left: number, bottom: number, right: number}} margins - the space between the edge of the other scales and edge of the chart\n\t * This space comes from two sources:\n\t * - padding - space that's required to show the labels at the edges of the scale\n\t * - thickness of scales or legends in another orientation\n\t */\n update(maxWidth, maxHeight, margins) {\n const {beginAtZero, grace, ticks: tickOpts} = this.options;\n const sampleSize = tickOpts.sampleSize;\n\n // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n this.beforeUpdate();\n\n // Absorb the master measurements\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins = Object.assign({\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }, margins);\n\n this.ticks = null;\n this._labelSizes = null;\n this._gridLineItems = null;\n this._labelItems = null;\n\n // Dimensions\n this.beforeSetDimensions();\n this.setDimensions();\n this.afterSetDimensions();\n\n this._maxLength = this.isHorizontal()\n ? this.width + margins.left + margins.right\n : this.height + margins.top + margins.bottom;\n\n // Data min/max\n if (!this._dataLimitsCached) {\n this.beforeDataLimits();\n this.determineDataLimits();\n this.afterDataLimits();\n this._range = _addGrace(this, grace, beginAtZero);\n this._dataLimitsCached = true;\n }\n\n this.beforeBuildTicks();\n\n this.ticks = this.buildTicks() || [];\n\n // Allow modification of ticks in callback.\n this.afterBuildTicks();\n\n // Compute tick rotation and fit using a sampled subset of labels\n // We generally don't need to compute the size of every single label for determining scale size\n const samplingEnabled = sampleSize < this.ticks.length;\n this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks);\n\n // configure is called twice, once here, once from core.controller.updateLayout.\n // Here we haven't been positioned yet, but dimensions are correct.\n // Variables set in configure are needed for calculateLabelRotation, and\n // it's ok that coordinates are not correct there, only dimensions matter.\n this.configure();\n\n // Tick Rotation\n this.beforeCalculateLabelRotation();\n this.calculateLabelRotation(); // Preconditions: number of ticks and sizes of largest labels must be calculated beforehand\n this.afterCalculateLabelRotation();\n\n // Auto-skip\n if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {\n this.ticks = autoSkip(this, this.ticks);\n this._labelSizes = null;\n this.afterAutoSkip();\n }\n\n if (samplingEnabled) {\n // Generate labels using all non-skipped ticks\n this._convertTicksToLabels(this.ticks);\n }\n\n this.beforeFit();\n this.fit(); // Preconditions: label rotation and label sizes must be calculated beforehand\n this.afterFit();\n\n // IMPORTANT: after this point, we consider that `this.ticks` will NEVER change!\n\n this.afterUpdate();\n }\n\n /**\n\t * @protected\n\t */\n configure() {\n let reversePixels = this.options.reverse;\n let startPixel, endPixel;\n\n if (this.isHorizontal()) {\n startPixel = this.left;\n endPixel = this.right;\n } else {\n startPixel = this.top;\n endPixel = this.bottom;\n // by default vertical scales are from bottom to top, so pixels are reversed\n reversePixels = !reversePixels;\n }\n this._startPixel = startPixel;\n this._endPixel = endPixel;\n this._reversePixels = reversePixels;\n this._length = endPixel - startPixel;\n this._alignToPixels = this.options.alignToPixels;\n }\n\n afterUpdate() {\n call(this.options.afterUpdate, [this]);\n }\n\n //\n\n beforeSetDimensions() {\n call(this.options.beforeSetDimensions, [this]);\n }\n setDimensions() {\n // Set the unconstrained dimension before label rotation\n if (this.isHorizontal()) {\n // Reset position before calculating rotation\n this.width = this.maxWidth;\n this.left = 0;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n\n // Reset position before calculating rotation\n this.top = 0;\n this.bottom = this.height;\n }\n\n // Reset padding\n this.paddingLeft = 0;\n this.paddingTop = 0;\n this.paddingRight = 0;\n this.paddingBottom = 0;\n }\n afterSetDimensions() {\n call(this.options.afterSetDimensions, [this]);\n }\n\n _callHooks(name) {\n this.chart.notifyPlugins(name, this.getContext());\n call(this.options[name], [this]);\n }\n\n // Data limits\n beforeDataLimits() {\n this._callHooks('beforeDataLimits');\n }\n determineDataLimits() {}\n afterDataLimits() {\n this._callHooks('afterDataLimits');\n }\n\n //\n beforeBuildTicks() {\n this._callHooks('beforeBuildTicks');\n }\n /**\n\t * @return {object[]} the ticks\n\t */\n buildTicks() {\n return [];\n }\n afterBuildTicks() {\n this._callHooks('afterBuildTicks');\n }\n\n beforeTickToLabelConversion() {\n call(this.options.beforeTickToLabelConversion, [this]);\n }\n /**\n\t * Convert ticks to label strings\n\t * @param {Tick[]} ticks\n\t */\n generateTickLabels(ticks) {\n const tickOpts = this.options.ticks;\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n tick = ticks[i];\n tick.label = call(tickOpts.callback, [tick.value, i, ticks], this);\n }\n }\n afterTickToLabelConversion() {\n call(this.options.afterTickToLabelConversion, [this]);\n }\n\n //\n\n beforeCalculateLabelRotation() {\n call(this.options.beforeCalculateLabelRotation, [this]);\n }\n calculateLabelRotation() {\n const options = this.options;\n const tickOpts = options.ticks;\n const numTicks = getTicksLimit(this.ticks.length, options.ticks.maxTicksLimit);\n const minRotation = tickOpts.minRotation || 0;\n const maxRotation = tickOpts.maxRotation;\n let labelRotation = minRotation;\n let tickWidth, maxHeight, maxLabelDiagonal;\n\n if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n this.labelRotation = minRotation;\n return;\n }\n\n const labelSizes = this._getLabelSizes();\n const maxLabelWidth = labelSizes.widest.width;\n const maxLabelHeight = labelSizes.highest.height;\n\n // Estimate the width of each grid based on the canvas width, the maximum\n // label width and the number of tick intervals\n const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth);\n tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1);\n\n // Allow 3 pixels x2 padding either side for label readability\n if (maxLabelWidth + 6 > tickWidth) {\n tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n maxHeight = this.maxHeight - getTickMarkLength(options.grid)\n\t\t\t\t- tickOpts.padding - getTitleHeight(options.title, this.chart.options.font);\n maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n labelRotation = toDegrees(Math.min(\n Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)),\n Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1))\n ));\n labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n }\n\n this.labelRotation = labelRotation;\n }\n afterCalculateLabelRotation() {\n call(this.options.afterCalculateLabelRotation, [this]);\n }\n afterAutoSkip() {}\n\n //\n\n beforeFit() {\n call(this.options.beforeFit, [this]);\n }\n fit() {\n // Reset\n const minSize = {\n width: 0,\n height: 0\n };\n\n const {chart, options: {ticks: tickOpts, title: titleOpts, grid: gridOpts}} = this;\n const display = this._isVisible();\n const isHorizontal = this.isHorizontal();\n\n if (display) {\n const titleHeight = getTitleHeight(titleOpts, chart.options.font);\n if (isHorizontal) {\n minSize.width = this.maxWidth;\n minSize.height = getTickMarkLength(gridOpts) + titleHeight;\n } else {\n minSize.height = this.maxHeight; // fill all the height\n minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n }\n\n // Don't bother fitting the ticks if we are not showing the labels\n if (tickOpts.display && this.ticks.length) {\n const {first, last, widest, highest} = this._getLabelSizes();\n const tickPadding = tickOpts.padding * 2;\n const angleRadians = toRadians(this.labelRotation);\n const cos = Math.cos(angleRadians);\n const sin = Math.sin(angleRadians);\n\n if (isHorizontal) {\n // A horizontal axis is more constrained by the height.\n const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding);\n } else {\n // A vertical axis is more constrained by the width. Labels are the\n // dominant factor here, so get that length first and account for padding\n const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n\n minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding);\n }\n this._calculatePadding(first, last, sin, cos);\n }\n }\n\n this._handleMargins();\n\n if (isHorizontal) {\n this.width = this._length = chart.width - this._margins.left - this._margins.right;\n this.height = minSize.height;\n } else {\n this.width = minSize.width;\n this.height = this._length = chart.height - this._margins.top - this._margins.bottom;\n }\n }\n\n _calculatePadding(first, last, sin, cos) {\n const {ticks: {align, padding}, position} = this.options;\n const isRotated = this.labelRotation !== 0;\n const labelsBelowTicks = position !== 'top' && this.axis === 'x';\n\n if (this.isHorizontal()) {\n const offsetLeft = this.getPixelForTick(0) - this.left;\n const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1);\n let paddingLeft = 0;\n let paddingRight = 0;\n\n // Ensure that our ticks are always inside the canvas. When rotated, ticks are right aligned\n // which means that the right padding is dominated by the font height\n if (isRotated) {\n if (labelsBelowTicks) {\n paddingLeft = cos * first.width;\n paddingRight = sin * last.height;\n } else {\n paddingLeft = sin * first.height;\n paddingRight = cos * last.width;\n }\n } else if (align === 'start') {\n paddingRight = last.width;\n } else if (align === 'end') {\n paddingLeft = first.width;\n } else if (align !== 'inner') {\n paddingLeft = first.width / 2;\n paddingRight = last.width / 2;\n }\n\n // Adjust padding taking into account changes in offsets\n this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0);\n this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0);\n } else {\n let paddingTop = last.height / 2;\n let paddingBottom = first.height / 2;\n\n if (align === 'start') {\n paddingTop = 0;\n paddingBottom = first.height;\n } else if (align === 'end') {\n paddingTop = last.height;\n paddingBottom = 0;\n }\n\n this.paddingTop = paddingTop + padding;\n this.paddingBottom = paddingBottom + padding;\n }\n }\n\n /**\n\t * Handle margins and padding interactions\n\t * @private\n\t */\n _handleMargins() {\n if (this._margins) {\n this._margins.left = Math.max(this.paddingLeft, this._margins.left);\n this._margins.top = Math.max(this.paddingTop, this._margins.top);\n this._margins.right = Math.max(this.paddingRight, this._margins.right);\n this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom);\n }\n }\n\n afterFit() {\n call(this.options.afterFit, [this]);\n }\n\n // Shared Methods\n /**\n\t * @return {boolean}\n\t */\n isHorizontal() {\n const {axis, position} = this.options;\n return position === 'top' || position === 'bottom' || axis === 'x';\n }\n /**\n\t * @return {boolean}\n\t */\n isFullSize() {\n return this.options.fullSize;\n }\n\n /**\n\t * @param {Tick[]} ticks\n\t * @private\n\t */\n _convertTicksToLabels(ticks) {\n this.beforeTickToLabelConversion();\n\n this.generateTickLabels(ticks);\n\n // Ticks should be skipped when callback returns null or undef, so lets remove those.\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (isNullOrUndef(ticks[i].label)) {\n ticks.splice(i, 1);\n ilen--;\n i--;\n }\n }\n\n this.afterTickToLabelConversion();\n }\n\n /**\n\t * @return {{ first: object, last: object, widest: object, highest: object, widths: Array, heights: array }}\n\t * @private\n\t */\n _getLabelSizes() {\n let labelSizes = this._labelSizes;\n\n if (!labelSizes) {\n const sampleSize = this.options.ticks.sampleSize;\n let ticks = this.ticks;\n if (sampleSize < ticks.length) {\n ticks = sample(ticks, sampleSize);\n }\n\n this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length, this.options.ticks.maxTicksLimit);\n }\n\n return labelSizes;\n }\n\n /**\n\t * Returns {width, height, offset} objects for the first, last, widest, highest tick\n\t * labels where offset indicates the anchor point offset from the top in pixels.\n\t * @return {{ first: object, last: object, widest: object, highest: object, widths: Array, heights: array }}\n\t * @private\n\t */\n _computeLabelSizes(ticks, length, maxTicksLimit) {\n const {ctx, _longestTextCache: caches} = this;\n const widths = [];\n const heights = [];\n const increment = Math.floor(length / getTicksLimit(length, maxTicksLimit));\n let widestLabelSize = 0;\n let highestLabelSize = 0;\n let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;\n\n for (i = 0; i < length; i += increment) {\n label = ticks[i].label;\n tickFont = this._resolveTickFontOptions(i);\n ctx.font = fontString = tickFont.string;\n cache = caches[fontString] = caches[fontString] || {data: {}, gc: []};\n lineHeight = tickFont.lineHeight;\n width = height = 0;\n // Undefined labels and arrays should not be measured\n if (!isNullOrUndef(label) && !isArray(label)) {\n width = _measureText(ctx, cache.data, cache.gc, width, label);\n height = lineHeight;\n } else if (isArray(label)) {\n // if it is an array let's measure each element\n for (j = 0, jlen = label.length; j < jlen; ++j) {\n nestedLabel = /** @type {string} */ (label[j]);\n // Undefined labels and arrays should not be measured\n if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n height += lineHeight;\n }\n }\n }\n widths.push(width);\n heights.push(height);\n widestLabelSize = Math.max(width, widestLabelSize);\n highestLabelSize = Math.max(height, highestLabelSize);\n }\n garbageCollect(caches, length);\n\n const widest = widths.indexOf(widestLabelSize);\n const highest = heights.indexOf(highestLabelSize);\n\n const valueAt = (idx) => ({width: widths[idx] || 0, height: heights[idx] || 0});\n\n return {\n first: valueAt(0),\n last: valueAt(length - 1),\n widest: valueAt(widest),\n highest: valueAt(highest),\n widths,\n heights,\n };\n }\n\n /**\n\t * Used to get the label to display in the tooltip for the given value\n\t * @param {*} value\n\t * @return {string}\n\t */\n getLabelForValue(value) {\n return value;\n }\n\n /**\n\t * Returns the location of the given data point. Value can either be an index or a numerical value\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param {*} value\n\t * @param {number} [index]\n\t * @return {number}\n\t */\n getPixelForValue(value, index) { // eslint-disable-line no-unused-vars\n return NaN;\n }\n\n /**\n\t * Used to get the data value from a given pixel. This is the inverse of getPixelForValue\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param {number} pixel\n\t * @return {*}\n\t */\n getValueForPixel(pixel) {} // eslint-disable-line no-unused-vars\n\n /**\n\t * Returns the location of the tick at the given index\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param {number} index\n\t * @return {number}\n\t */\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n\n /**\n\t * Utility for getting the pixel location of a percentage of scale\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param {number} decimal\n\t * @return {number}\n\t */\n getPixelForDecimal(decimal) {\n if (this._reversePixels) {\n decimal = 1 - decimal;\n }\n\n const pixel = this._startPixel + decimal * this._length;\n return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel);\n }\n\n /**\n\t * @param {number} pixel\n\t * @return {number}\n\t */\n getDecimalForPixel(pixel) {\n const decimal = (pixel - this._startPixel) / this._length;\n return this._reversePixels ? 1 - decimal : decimal;\n }\n\n /**\n\t * Returns the pixel for the minimum chart value\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @return {number}\n\t */\n getBasePixel() {\n return this.getPixelForValue(this.getBaseValue());\n }\n\n /**\n\t * @return {number}\n\t */\n getBaseValue() {\n const {min, max} = this;\n\n return min < 0 && max < 0 ? max :\n min > 0 && max > 0 ? min :\n 0;\n }\n\n /**\n\t * @protected\n\t */\n getContext(index) {\n const ticks = this.ticks || [];\n\n if (index >= 0 && index < ticks.length) {\n const tick = ticks[index];\n return tick.$context ||\n\t\t\t\t(tick.$context = createTickContext(this.getContext(), index, tick));\n }\n return this.$context ||\n\t\t\t(this.$context = createScaleContext(this.chart.getContext(), this));\n }\n\n /**\n\t * @return {number}\n\t * @private\n\t */\n _tickSize() {\n const optionTicks = this.options.ticks;\n\n // Calculate space needed by label in axis direction.\n const rot = toRadians(this.labelRotation);\n const cos = Math.abs(Math.cos(rot));\n const sin = Math.abs(Math.sin(rot));\n\n const labelSizes = this._getLabelSizes();\n const padding = optionTicks.autoSkipPadding || 0;\n const w = labelSizes ? labelSizes.widest.width + padding : 0;\n const h = labelSizes ? labelSizes.highest.height + padding : 0;\n\n // Calculate space needed for 1 tick in axis direction.\n return this.isHorizontal()\n ? h * cos > w * sin ? w / cos : h / sin\n : h * sin < w * cos ? h / cos : w / sin;\n }\n\n /**\n\t * @return {boolean}\n\t * @private\n\t */\n _isVisible() {\n const display = this.options.display;\n\n if (display !== 'auto') {\n return !!display;\n }\n\n return this.getMatchingVisibleMetas().length > 0;\n }\n\n /**\n\t * @private\n\t */\n _computeGridLineItems(chartArea) {\n const axis = this.axis;\n const chart = this.chart;\n const options = this.options;\n const {grid, position, border} = options;\n const offset = grid.offset;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const ticksLength = ticks.length + (offset ? 1 : 0);\n const tl = getTickMarkLength(grid);\n const items = [];\n\n const borderOpts = border.setContext(this.getContext());\n const axisWidth = borderOpts.display ? borderOpts.width : 0;\n const axisHalfWidth = axisWidth / 2;\n const alignBorderValue = function(pixel) {\n return _alignPixel(chart, pixel, axisWidth);\n };\n let borderValue, i, lineValue, alignedLineValue;\n let tx1, ty1, tx2, ty2, x1, y1, x2, y2;\n\n if (position === 'top') {\n borderValue = alignBorderValue(this.bottom);\n ty1 = this.bottom - tl;\n ty2 = borderValue - axisHalfWidth;\n y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n y2 = chartArea.bottom;\n } else if (position === 'bottom') {\n borderValue = alignBorderValue(this.top);\n y1 = chartArea.top;\n y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n ty1 = borderValue + axisHalfWidth;\n ty2 = this.top + tl;\n } else if (position === 'left') {\n borderValue = alignBorderValue(this.right);\n tx1 = this.right - tl;\n tx2 = borderValue - axisHalfWidth;\n x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n x2 = chartArea.right;\n } else if (position === 'right') {\n borderValue = alignBorderValue(this.left);\n x1 = chartArea.left;\n x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n tx1 = borderValue + axisHalfWidth;\n tx2 = this.left + tl;\n } else if (axis === 'x') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n\n y1 = chartArea.top;\n y2 = chartArea.bottom;\n ty1 = borderValue + axisHalfWidth;\n ty2 = ty1 + tl;\n } else if (axis === 'y') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n\n tx1 = borderValue - axisHalfWidth;\n tx2 = tx1 - tl;\n x1 = chartArea.left;\n x2 = chartArea.right;\n }\n\n const limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength);\n const step = Math.max(1, Math.ceil(ticksLength / limit));\n for (i = 0; i < ticksLength; i += step) {\n const context = this.getContext(i);\n const optsAtIndex = grid.setContext(context);\n const optsAtIndexBorder = border.setContext(context);\n\n const lineWidth = optsAtIndex.lineWidth;\n const lineColor = optsAtIndex.color;\n const borderDash = optsAtIndexBorder.dash || [];\n const borderDashOffset = optsAtIndexBorder.dashOffset;\n\n const tickWidth = optsAtIndex.tickWidth;\n const tickColor = optsAtIndex.tickColor;\n const tickBorderDash = optsAtIndex.tickBorderDash || [];\n const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset;\n\n lineValue = getPixelForGridLine(this, i, offset);\n\n // Skip if the pixel is out of the range\n if (lineValue === undefined) {\n continue;\n }\n\n alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n\n if (isHorizontal) {\n tx1 = tx2 = x1 = x2 = alignedLineValue;\n } else {\n ty1 = ty2 = y1 = y2 = alignedLineValue;\n }\n\n items.push({\n tx1,\n ty1,\n tx2,\n ty2,\n x1,\n y1,\n x2,\n y2,\n width: lineWidth,\n color: lineColor,\n borderDash,\n borderDashOffset,\n tickWidth,\n tickColor,\n tickBorderDash,\n tickBorderDashOffset,\n });\n }\n\n this._ticksLength = ticksLength;\n this._borderValue = borderValue;\n\n return items;\n }\n\n /**\n\t * @private\n\t */\n _computeLabelItems(chartArea) {\n const axis = this.axis;\n const options = this.options;\n const {position, ticks: optionTicks} = options;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const {align, crossAlign, padding, mirror} = optionTicks;\n const tl = getTickMarkLength(options.grid);\n const tickAndPadding = tl + padding;\n const hTickAndPadding = mirror ? -padding : tickAndPadding;\n const rotation = -toRadians(this.labelRotation);\n const items = [];\n let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n let textBaseline = 'middle';\n\n if (position === 'top') {\n y = this.bottom - hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'bottom') {\n y = this.top + hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'left') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (position === 'right') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (axis === 'x') {\n if (position === 'center') {\n y = ((chartArea.top + chartArea.bottom) / 2) + tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;\n }\n textAlign = this._getXAxisLabelAlignment();\n } else if (axis === 'y') {\n if (position === 'center') {\n x = ((chartArea.left + chartArea.right) / 2) - tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n x = this.chart.scales[positionAxisID].getPixelForValue(value);\n }\n textAlign = this._getYAxisLabelAlignment(tl).textAlign;\n }\n\n if (axis === 'y') {\n if (align === 'start') {\n textBaseline = 'top';\n } else if (align === 'end') {\n textBaseline = 'bottom';\n }\n }\n\n const labelSizes = this._getLabelSizes();\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n label = tick.label;\n\n const optsAtIndex = optionTicks.setContext(this.getContext(i));\n pixel = this.getPixelForTick(i) + optionTicks.labelOffset;\n font = this._resolveTickFontOptions(i);\n lineHeight = font.lineHeight;\n lineCount = isArray(label) ? label.length : 1;\n const halfCount = lineCount / 2;\n const color = optsAtIndex.color;\n const strokeColor = optsAtIndex.textStrokeColor;\n const strokeWidth = optsAtIndex.textStrokeWidth;\n let tickTextAlign = textAlign;\n\n if (isHorizontal) {\n x = pixel;\n\n if (textAlign === 'inner') {\n if (i === ilen - 1) {\n tickTextAlign = !this.options.reverse ? 'right' : 'left';\n } else if (i === 0) {\n tickTextAlign = !this.options.reverse ? 'left' : 'right';\n } else {\n tickTextAlign = 'center';\n }\n }\n\n if (position === 'top') {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = -lineCount * lineHeight + lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight;\n } else {\n textOffset = -labelSizes.highest.height + lineHeight / 2;\n }\n } else {\n // eslint-disable-next-line no-lonely-if\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight;\n } else {\n textOffset = labelSizes.highest.height - lineCount * lineHeight;\n }\n }\n if (mirror) {\n textOffset *= -1;\n }\n if (rotation !== 0 && !optsAtIndex.showLabelBackdrop) {\n x += (lineHeight / 2) * Math.sin(rotation);\n }\n } else {\n y = pixel;\n textOffset = (1 - lineCount) * lineHeight / 2;\n }\n\n let backdrop;\n\n if (optsAtIndex.showLabelBackdrop) {\n const labelPadding = toPadding(optsAtIndex.backdropPadding);\n const height = labelSizes.heights[i];\n const width = labelSizes.widths[i];\n\n let top = textOffset - labelPadding.top;\n let left = 0 - labelPadding.left;\n\n switch (textBaseline) {\n case 'middle':\n top -= height / 2;\n break;\n case 'bottom':\n top -= height;\n break;\n default:\n break;\n }\n\n switch (textAlign) {\n case 'center':\n left -= width / 2;\n break;\n case 'right':\n left -= width;\n break;\n case 'inner':\n if (i === ilen - 1) {\n left -= width;\n } else if (i > 0) {\n left -= width / 2;\n }\n break;\n default:\n break;\n }\n\n backdrop = {\n left,\n top,\n width: width + labelPadding.width,\n height: height + labelPadding.height,\n\n color: optsAtIndex.backdropColor,\n };\n }\n\n items.push({\n label,\n font,\n textOffset,\n options: {\n rotation,\n color,\n strokeColor,\n strokeWidth,\n textAlign: tickTextAlign,\n textBaseline,\n translation: [x, y],\n backdrop,\n }\n });\n }\n\n return items;\n }\n\n _getXAxisLabelAlignment() {\n const {position, ticks} = this.options;\n const rotation = -toRadians(this.labelRotation);\n\n if (rotation) {\n return position === 'top' ? 'left' : 'right';\n }\n\n let align = 'center';\n\n if (ticks.align === 'start') {\n align = 'left';\n } else if (ticks.align === 'end') {\n align = 'right';\n } else if (ticks.align === 'inner') {\n align = 'inner';\n }\n\n return align;\n }\n\n _getYAxisLabelAlignment(tl) {\n const {position, ticks: {crossAlign, mirror, padding}} = this.options;\n const labelSizes = this._getLabelSizes();\n const tickAndPadding = tl + padding;\n const widest = labelSizes.widest.width;\n\n let textAlign;\n let x;\n\n if (position === 'left') {\n if (mirror) {\n x = this.right + padding;\n\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += (widest / 2);\n } else {\n textAlign = 'right';\n x += widest;\n }\n } else {\n x = this.right - tickAndPadding;\n\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x = this.left;\n }\n }\n } else if (position === 'right') {\n if (mirror) {\n x = this.left + padding;\n\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x -= widest;\n }\n } else {\n x = this.left + tickAndPadding;\n\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x = this.right;\n }\n }\n } else {\n textAlign = 'right';\n }\n\n return {textAlign, x};\n }\n\n /**\n\t * @private\n\t */\n _computeLabelArea() {\n if (this.options.ticks.mirror) {\n return;\n }\n\n const chart = this.chart;\n const position = this.options.position;\n\n if (position === 'left' || position === 'right') {\n return {top: 0, left: this.left, bottom: chart.height, right: this.right};\n } if (position === 'top' || position === 'bottom') {\n return {top: this.top, left: 0, bottom: this.bottom, right: chart.width};\n }\n }\n\n /**\n * @protected\n */\n drawBackground() {\n const {ctx, options: {backgroundColor}, left, top, width, height} = this;\n if (backgroundColor) {\n ctx.save();\n ctx.fillStyle = backgroundColor;\n ctx.fillRect(left, top, width, height);\n ctx.restore();\n }\n }\n\n getLineWidthForValue(value) {\n const grid = this.options.grid;\n if (!this._isVisible() || !grid.display) {\n return 0;\n }\n const ticks = this.ticks;\n const index = ticks.findIndex(t => t.value === value);\n if (index >= 0) {\n const opts = grid.setContext(this.getContext(index));\n return opts.lineWidth;\n }\n return 0;\n }\n\n /**\n\t * @protected\n\t */\n drawGrid(chartArea) {\n const grid = this.options.grid;\n const ctx = this.ctx;\n const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea));\n let i, ilen;\n\n const drawLine = (p1, p2, style) => {\n if (!style.width || !style.color) {\n return;\n }\n ctx.save();\n ctx.lineWidth = style.width;\n ctx.strokeStyle = style.color;\n ctx.setLineDash(style.borderDash || []);\n ctx.lineDashOffset = style.borderDashOffset;\n\n ctx.beginPath();\n ctx.moveTo(p1.x, p1.y);\n ctx.lineTo(p2.x, p2.y);\n ctx.stroke();\n ctx.restore();\n };\n\n if (grid.display) {\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n\n if (grid.drawOnChartArea) {\n drawLine(\n {x: item.x1, y: item.y1},\n {x: item.x2, y: item.y2},\n item\n );\n }\n\n if (grid.drawTicks) {\n drawLine(\n {x: item.tx1, y: item.ty1},\n {x: item.tx2, y: item.ty2},\n {\n color: item.tickColor,\n width: item.tickWidth,\n borderDash: item.tickBorderDash,\n borderDashOffset: item.tickBorderDashOffset\n }\n );\n }\n }\n }\n }\n\n /**\n\t * @protected\n\t */\n drawBorder() {\n const {chart, ctx, options: {border, grid}} = this;\n const borderOpts = border.setContext(this.getContext());\n const axisWidth = border.display ? borderOpts.width : 0;\n if (!axisWidth) {\n return;\n }\n const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth;\n const borderValue = this._borderValue;\n let x1, x2, y1, y2;\n\n if (this.isHorizontal()) {\n x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2;\n x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2;\n y1 = y2 = borderValue;\n } else {\n y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2;\n y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2;\n x1 = x2 = borderValue;\n }\n ctx.save();\n ctx.lineWidth = borderOpts.width;\n ctx.strokeStyle = borderOpts.color;\n\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.stroke();\n\n ctx.restore();\n }\n\n /**\n\t * @protected\n\t */\n drawLabels(chartArea) {\n const optionTicks = this.options.ticks;\n\n if (!optionTicks.display) {\n return;\n }\n\n const ctx = this.ctx;\n\n const area = this._computeLabelArea();\n if (area) {\n clipArea(ctx, area);\n }\n\n const items = this.getLabelItems(chartArea);\n for (const item of items) {\n const renderTextOptions = item.options;\n const tickFont = item.font;\n const label = item.label;\n const y = item.textOffset;\n renderText(ctx, label, 0, y, tickFont, renderTextOptions);\n }\n\n if (area) {\n unclipArea(ctx);\n }\n }\n\n /**\n\t * @protected\n\t */\n drawTitle() {\n const {ctx, options: {position, title, reverse}} = this;\n\n if (!title.display) {\n return;\n }\n\n const font = toFont(title.font);\n const padding = toPadding(title.padding);\n const align = title.align;\n let offset = font.lineHeight / 2;\n\n if (position === 'bottom' || position === 'center' || isObject(position)) {\n offset += padding.bottom;\n if (isArray(title.text)) {\n offset += font.lineHeight * (title.text.length - 1);\n }\n } else {\n offset += padding.top;\n }\n\n const {titleX, titleY, maxWidth, rotation} = titleArgs(this, offset, position, align);\n\n renderText(ctx, title.text, 0, 0, font, {\n color: title.color,\n maxWidth,\n rotation,\n textAlign: titleAlign(align, position, reverse),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n\n draw(chartArea) {\n if (!this._isVisible()) {\n return;\n }\n\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawBorder();\n this.drawTitle();\n this.drawLabels(chartArea);\n }\n\n /**\n\t * @return {object[]}\n\t * @private\n\t */\n _layers() {\n const opts = this.options;\n const tz = opts.ticks && opts.ticks.z || 0;\n const gz = valueOrDefault(opts.grid && opts.grid.z, -1);\n const bz = valueOrDefault(opts.border && opts.border.z, 0);\n\n if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n // backward compatibility: draw has been overridden by custom scale\n return [{\n z: tz,\n draw: (chartArea) => {\n this.draw(chartArea);\n }\n }];\n }\n\n return [{\n z: gz,\n draw: (chartArea) => {\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawTitle();\n }\n }, {\n z: bz,\n draw: () => {\n this.drawBorder();\n }\n }, {\n z: tz,\n draw: (chartArea) => {\n this.drawLabels(chartArea);\n }\n }];\n }\n\n /**\n\t * Returns visible dataset metas that are attached to this scale\n\t * @param {string} [type] - if specified, also filter by dataset type\n\t * @return {object[]}\n\t */\n getMatchingVisibleMetas(type) {\n const metas = this.chart.getSortedVisibleDatasetMetas();\n const axisID = this.axis + 'AxisID';\n const result = [];\n let i, ilen;\n\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n const meta = metas[i];\n if (meta[axisID] === this.id && (!type || meta.type === type)) {\n result.push(meta);\n }\n }\n return result;\n }\n\n /**\n\t * @param {number} index\n\t * @return {object}\n\t * @protected\n \t */\n _resolveTickFontOptions(index) {\n const opts = this.options.ticks.setContext(this.getContext(index));\n return toFont(opts.font);\n }\n\n /**\n * @protected\n */\n _maxDigits() {\n const fontSize = this._resolveTickFontOptions(0).lineHeight;\n return (this.isHorizontal() ? this.width : this.height) / fontSize;\n }\n}\n","import {merge} from '../helpers/index.js';\nimport defaults, {overrides} from './core.defaults.js';\n\n/**\n * @typedef {{id: string, defaults: any, overrides?: any, defaultRoutes: any}} IChartComponent\n */\n\nexport default class TypedRegistry {\n constructor(type, scope, override) {\n this.type = type;\n this.scope = scope;\n this.override = override;\n this.items = Object.create(null);\n }\n\n isForType(type) {\n return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n }\n\n /**\n\t * @param {IChartComponent} item\n\t * @returns {string} The scope where items defaults were registered to.\n\t */\n register(item) {\n const proto = Object.getPrototypeOf(item);\n let parentScope;\n\n if (isIChartComponent(proto)) {\n // Make sure the parent is registered and note the scope where its defaults are.\n parentScope = this.register(proto);\n }\n\n const items = this.items;\n const id = item.id;\n const scope = this.scope + '.' + id;\n\n if (!id) {\n throw new Error('class does not have id: ' + item);\n }\n\n if (id in items) {\n // already registered\n return scope;\n }\n\n items[id] = item;\n registerDefaults(item, scope, parentScope);\n if (this.override) {\n defaults.override(item.id, item.overrides);\n }\n\n return scope;\n }\n\n /**\n\t * @param {string} id\n\t * @returns {object?}\n\t */\n get(id) {\n return this.items[id];\n }\n\n /**\n\t * @param {IChartComponent} item\n\t */\n unregister(item) {\n const items = this.items;\n const id = item.id;\n const scope = this.scope;\n\n if (id in items) {\n delete items[id];\n }\n\n if (scope && id in defaults[scope]) {\n delete defaults[scope][id];\n if (this.override) {\n delete overrides[id];\n }\n }\n }\n}\n\nfunction registerDefaults(item, scope, parentScope) {\n // Inherit the parent's defaults and keep existing defaults\n const itemDefaults = merge(Object.create(null), [\n parentScope ? defaults.get(parentScope) : {},\n defaults.get(scope),\n item.defaults\n ]);\n\n defaults.set(scope, itemDefaults);\n\n if (item.defaultRoutes) {\n routeDefaults(scope, item.defaultRoutes);\n }\n\n if (item.descriptors) {\n defaults.describe(scope, item.descriptors);\n }\n}\n\nfunction routeDefaults(scope, routes) {\n Object.keys(routes).forEach(property => {\n const propertyParts = property.split('.');\n const sourceName = propertyParts.pop();\n const sourceScope = [scope].concat(propertyParts).join('.');\n const parts = routes[property].split('.');\n const targetName = parts.pop();\n const targetScope = parts.join('.');\n defaults.route(sourceScope, sourceName, targetScope, targetName);\n });\n}\n\nfunction isIChartComponent(proto) {\n return 'id' in proto && 'defaults' in proto;\n}\n","import DatasetController from './core.datasetController.js';\nimport Element from './core.element.js';\nimport Scale from './core.scale.js';\nimport TypedRegistry from './core.typedRegistry.js';\nimport {each, callback as call, _capitalize} from '../helpers/helpers.core.js';\n\n/**\n * Please use the module's default export which provides a singleton instance\n * Note: class is exported for typedoc\n */\nexport class Registry {\n constructor() {\n this.controllers = new TypedRegistry(DatasetController, 'datasets', true);\n this.elements = new TypedRegistry(Element, 'elements');\n this.plugins = new TypedRegistry(Object, 'plugins');\n this.scales = new TypedRegistry(Scale, 'scales');\n // Order is important, Scale has Element in prototype chain,\n // so Scales must be before Elements. Plugins are a fallback, so not listed here.\n this._typedRegistries = [this.controllers, this.scales, this.elements];\n }\n\n /**\n\t * @param {...any} args\n\t */\n add(...args) {\n this._each('register', args);\n }\n\n remove(...args) {\n this._each('unregister', args);\n }\n\n /**\n\t * @param {...typeof DatasetController} args\n\t */\n addControllers(...args) {\n this._each('register', args, this.controllers);\n }\n\n /**\n\t * @param {...typeof Element} args\n\t */\n addElements(...args) {\n this._each('register', args, this.elements);\n }\n\n /**\n\t * @param {...any} args\n\t */\n addPlugins(...args) {\n this._each('register', args, this.plugins);\n }\n\n /**\n\t * @param {...typeof Scale} args\n\t */\n addScales(...args) {\n this._each('register', args, this.scales);\n }\n\n /**\n\t * @param {string} id\n\t * @returns {typeof DatasetController}\n\t */\n getController(id) {\n return this._get(id, this.controllers, 'controller');\n }\n\n /**\n\t * @param {string} id\n\t * @returns {typeof Element}\n\t */\n getElement(id) {\n return this._get(id, this.elements, 'element');\n }\n\n /**\n\t * @param {string} id\n\t * @returns {object}\n\t */\n getPlugin(id) {\n return this._get(id, this.plugins, 'plugin');\n }\n\n /**\n\t * @param {string} id\n\t * @returns {typeof Scale}\n\t */\n getScale(id) {\n return this._get(id, this.scales, 'scale');\n }\n\n /**\n\t * @param {...typeof DatasetController} args\n\t */\n removeControllers(...args) {\n this._each('unregister', args, this.controllers);\n }\n\n /**\n\t * @param {...typeof Element} args\n\t */\n removeElements(...args) {\n this._each('unregister', args, this.elements);\n }\n\n /**\n\t * @param {...any} args\n\t */\n removePlugins(...args) {\n this._each('unregister', args, this.plugins);\n }\n\n /**\n\t * @param {...typeof Scale} args\n\t */\n removeScales(...args) {\n this._each('unregister', args, this.scales);\n }\n\n /**\n\t * @private\n\t */\n _each(method, args, typedRegistry) {\n [...args].forEach(arg => {\n const reg = typedRegistry || this._getRegistryForType(arg);\n if (typedRegistry || reg.isForType(arg) || (reg === this.plugins && arg.id)) {\n this._exec(method, reg, arg);\n } else {\n // Handle loopable args\n // Use case:\n // import * as plugins from './plugins.js';\n // Chart.register(plugins);\n each(arg, item => {\n // If there are mixed types in the loopable, make sure those are\n // registered in correct registry\n // Use case: (treemap exporting controller, elements etc)\n // import * as treemap from 'chartjs-chart-treemap.js';\n // Chart.register(treemap);\n\n const itemReg = typedRegistry || this._getRegistryForType(item);\n this._exec(method, itemReg, item);\n });\n }\n });\n }\n\n /**\n\t * @private\n\t */\n _exec(method, registry, component) {\n const camelMethod = _capitalize(method);\n call(component['before' + camelMethod], [], component); // beforeRegister / beforeUnregister\n registry[method](component);\n call(component['after' + camelMethod], [], component); // afterRegister / afterUnregister\n }\n\n /**\n\t * @private\n\t */\n _getRegistryForType(type) {\n for (let i = 0; i < this._typedRegistries.length; i++) {\n const reg = this._typedRegistries[i];\n if (reg.isForType(type)) {\n return reg;\n }\n }\n // plugins is the fallback registry\n return this.plugins;\n }\n\n /**\n\t * @private\n\t */\n _get(id, typedRegistry, type) {\n const item = typedRegistry.get(id);\n if (item === undefined) {\n throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n }\n return item;\n }\n\n}\n\n// singleton instance\nexport default /* #__PURE__ */ new Registry();\n","import registry from './core.registry.js';\nimport {callback as callCallback, isNullOrUndef, valueOrDefault} from '../helpers/helpers.core.js';\n\n/**\n * @typedef { import('./core.controller.js').default } Chart\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n * @typedef { import('../plugins/plugin.tooltip.js').default } Tooltip\n */\n\n/**\n * @callback filterCallback\n * @param {{plugin: object, options: object}} value\n * @param {number} [index]\n * @param {array} [array]\n * @param {object} [thisArg]\n * @return {boolean}\n */\n\n\nexport default class PluginService {\n constructor() {\n this._init = [];\n }\n\n /**\n\t * Calls enabled plugins for `chart` on the specified hook and with the given args.\n\t * This method immediately returns as soon as a plugin explicitly returns false. The\n\t * returned value can be used, for instance, to interrupt the current action.\n\t * @param {Chart} chart - The chart instance for which plugins should be called.\n\t * @param {string} hook - The name of the plugin method to call (e.g. 'beforeUpdate').\n\t * @param {object} [args] - Extra arguments to apply to the hook call.\n * @param {filterCallback} [filter] - Filtering function for limiting which plugins are notified\n\t * @returns {boolean} false if any of the plugins return false, else returns true.\n\t */\n notify(chart, hook, args, filter) {\n if (hook === 'beforeInit') {\n this._init = this._createDescriptors(chart, true);\n this._notify(this._init, chart, 'install');\n }\n\n const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n const result = this._notify(descriptors, chart, hook, args);\n\n if (hook === 'afterDestroy') {\n this._notify(descriptors, chart, 'stop');\n this._notify(this._init, chart, 'uninstall');\n }\n return result;\n }\n\n /**\n\t * @private\n\t */\n _notify(descriptors, chart, hook, args) {\n args = args || {};\n for (const descriptor of descriptors) {\n const plugin = descriptor.plugin;\n const method = plugin[hook];\n const params = [chart, args, descriptor.options];\n if (callCallback(method, params, plugin) === false && args.cancelable) {\n return false;\n }\n }\n\n return true;\n }\n\n invalidate() {\n // When plugins are registered, there is the possibility of a double\n // invalidate situation. In this case, we only want to invalidate once.\n // If we invalidate multiple times, the `_oldCache` is lost and all of the\n // plugins are restarted without being correctly stopped.\n // See https://github.com/chartjs/Chart.js/issues/8147\n if (!isNullOrUndef(this._cache)) {\n this._oldCache = this._cache;\n this._cache = undefined;\n }\n }\n\n /**\n\t * @param {Chart} chart\n\t * @private\n\t */\n _descriptors(chart) {\n if (this._cache) {\n return this._cache;\n }\n\n const descriptors = this._cache = this._createDescriptors(chart);\n\n this._notifyStateChanges(chart);\n\n return descriptors;\n }\n\n _createDescriptors(chart, all) {\n const config = chart && chart.config;\n const options = valueOrDefault(config.options && config.options.plugins, {});\n const plugins = allPlugins(config);\n // options === false => all plugins are disabled\n return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n }\n\n /**\n\t * @param {Chart} chart\n\t * @private\n\t */\n _notifyStateChanges(chart) {\n const previousDescriptors = this._oldCache || [];\n const descriptors = this._cache;\n const diff = (a, b) => a.filter(x => !b.some(y => x.plugin.id === y.plugin.id));\n this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n }\n}\n\n/**\n * @param {import('./core.config.js').default} config\n */\nfunction allPlugins(config) {\n const localIds = {};\n const plugins = [];\n const keys = Object.keys(registry.plugins.items);\n for (let i = 0; i < keys.length; i++) {\n plugins.push(registry.getPlugin(keys[i]));\n }\n\n const local = config.plugins || [];\n for (let i = 0; i < local.length; i++) {\n const plugin = local[i];\n\n if (plugins.indexOf(plugin) === -1) {\n plugins.push(plugin);\n localIds[plugin.id] = true;\n }\n }\n\n return {plugins, localIds};\n}\n\nfunction getOpts(options, all) {\n if (!all && options === false) {\n return null;\n }\n if (options === true) {\n return {};\n }\n return options;\n}\n\nfunction createDescriptors(chart, {plugins, localIds}, options, all) {\n const result = [];\n const context = chart.getContext();\n\n for (const plugin of plugins) {\n const id = plugin.id;\n const opts = getOpts(options[id], all);\n if (opts === null) {\n continue;\n }\n result.push({\n plugin,\n options: pluginOpts(chart.config, {plugin, local: localIds[id]}, opts, context)\n });\n }\n\n return result;\n}\n\nfunction pluginOpts(config, {plugin, local}, opts, context) {\n const keys = config.pluginScopeKeys(plugin);\n const scopes = config.getOptionScopes(opts, keys);\n if (local && plugin.defaults) {\n // make sure plugin defaults are in scopes for local (not registered) plugins\n scopes.push(plugin.defaults);\n }\n return config.createResolver(scopes, context, [''], {\n // These are just defaults that plugins can override\n scriptable: false,\n indexable: false,\n allKeys: true\n });\n}\n","import defaults, {overrides, descriptors} from './core.defaults.js';\nimport {mergeIf, resolveObjectKey, isArray, isFunction, valueOrDefault, isObject} from '../helpers/helpers.core.js';\nimport {_attachContext, _createResolver, _descriptors} from '../helpers/helpers.config.js';\n\nexport function getIndexAxis(type, options) {\n const datasetDefaults = defaults.datasets[type] || {};\n const datasetOptions = (options.datasets || {})[type] || {};\n return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x';\n}\n\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n let axis = id;\n if (id === '_index_') {\n axis = indexAxis;\n } else if (id === '_value_') {\n axis = indexAxis === 'x' ? 'y' : 'x';\n }\n return axis;\n}\n\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n return axis === indexAxis ? '_index_' : '_value_';\n}\n\nfunction idMatchesAxis(id) {\n if (id === 'x' || id === 'y' || id === 'r') {\n return id;\n }\n}\n\nfunction axisFromPosition(position) {\n if (position === 'top' || position === 'bottom') {\n return 'x';\n }\n if (position === 'left' || position === 'right') {\n return 'y';\n }\n}\n\nexport function determineAxis(id, ...scaleOptions) {\n if (idMatchesAxis(id)) {\n return id;\n }\n for (const opts of scaleOptions) {\n const axis = opts.axis\n || axisFromPosition(opts.position)\n || id.length > 1 && idMatchesAxis(id[0].toLowerCase());\n if (axis) {\n return axis;\n }\n }\n throw new Error(`Cannot determine type of '${id}' axis. Please provide 'axis' or 'position' option.`);\n}\n\nfunction getAxisFromDataset(id, axis, dataset) {\n if (dataset[axis + 'AxisID'] === id) {\n return {axis};\n }\n}\n\nfunction retrieveAxisFromDatasets(id, config) {\n if (config.data && config.data.datasets) {\n const boundDs = config.data.datasets.filter((d) => d.xAxisID === id || d.yAxisID === id);\n if (boundDs.length) {\n return getAxisFromDataset(id, 'x', boundDs[0]) || getAxisFromDataset(id, 'y', boundDs[0]);\n }\n }\n return {};\n}\n\nfunction mergeScaleConfig(config, options) {\n const chartDefaults = overrides[config.type] || {scales: {}};\n const configScales = options.scales || {};\n const chartIndexAxis = getIndexAxis(config.type, options);\n const scales = Object.create(null);\n\n // First figure out first scale id's per axis.\n Object.keys(configScales).forEach(id => {\n const scaleConf = configScales[id];\n if (!isObject(scaleConf)) {\n return console.error(`Invalid scale configuration for scale: ${id}`);\n }\n if (scaleConf._proxy) {\n return console.warn(`Ignoring resolver passed as options for scale: ${id}`);\n }\n const axis = determineAxis(id, scaleConf, retrieveAxisFromDatasets(id, config), defaults.scales[scaleConf.type]);\n const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n const defaultScaleOptions = chartDefaults.scales || {};\n scales[id] = mergeIf(Object.create(null), [{axis}, scaleConf, defaultScaleOptions[axis], defaultScaleOptions[defaultId]]);\n });\n\n // Then merge dataset defaults to scale configs\n config.data.datasets.forEach(dataset => {\n const type = dataset.type || config.type;\n const indexAxis = dataset.indexAxis || getIndexAxis(type, options);\n const datasetDefaults = overrides[type] || {};\n const defaultScaleOptions = datasetDefaults.scales || {};\n Object.keys(defaultScaleOptions).forEach(defaultID => {\n const axis = getAxisFromDefaultScaleID(defaultID, indexAxis);\n const id = dataset[axis + 'AxisID'] || axis;\n scales[id] = scales[id] || Object.create(null);\n mergeIf(scales[id], [{axis}, configScales[id], defaultScaleOptions[defaultID]]);\n });\n });\n\n // apply scale defaults, if not overridden by dataset defaults\n Object.keys(scales).forEach(key => {\n const scale = scales[key];\n mergeIf(scale, [defaults.scales[scale.type], defaults.scale]);\n });\n\n return scales;\n}\n\nfunction initOptions(config) {\n const options = config.options || (config.options = {});\n\n options.plugins = valueOrDefault(options.plugins, {});\n options.scales = mergeScaleConfig(config, options);\n}\n\nfunction initData(data) {\n data = data || {};\n data.datasets = data.datasets || [];\n data.labels = data.labels || [];\n return data;\n}\n\nfunction initConfig(config) {\n config = config || {};\n config.data = initData(config.data);\n\n initOptions(config);\n\n return config;\n}\n\nconst keyCache = new Map();\nconst keysCached = new Set();\n\nfunction cachedKeys(cacheKey, generate) {\n let keys = keyCache.get(cacheKey);\n if (!keys) {\n keys = generate();\n keyCache.set(cacheKey, keys);\n keysCached.add(keys);\n }\n return keys;\n}\n\nconst addIfFound = (set, obj, key) => {\n const opts = resolveObjectKey(obj, key);\n if (opts !== undefined) {\n set.add(opts);\n }\n};\n\nexport default class Config {\n constructor(config) {\n this._config = initConfig(config);\n this._scopeCache = new Map();\n this._resolverCache = new Map();\n }\n\n get platform() {\n return this._config.platform;\n }\n\n get type() {\n return this._config.type;\n }\n\n set type(type) {\n this._config.type = type;\n }\n\n get data() {\n return this._config.data;\n }\n\n set data(data) {\n this._config.data = initData(data);\n }\n\n get options() {\n return this._config.options;\n }\n\n set options(options) {\n this._config.options = options;\n }\n\n get plugins() {\n return this._config.plugins;\n }\n\n update() {\n const config = this._config;\n this.clearCache();\n initOptions(config);\n }\n\n clearCache() {\n this._scopeCache.clear();\n this._resolverCache.clear();\n }\n\n /**\n * Returns the option scope keys for resolving dataset options.\n * These keys do not include the dataset itself, because it is not under options.\n * @param {string} datasetType\n * @return {string[][]}\n */\n datasetScopeKeys(datasetType) {\n return cachedKeys(datasetType,\n () => [[\n `datasets.${datasetType}`,\n ''\n ]]);\n }\n\n /**\n * Returns the option scope keys for resolving dataset animation options.\n * These keys do not include the dataset itself, because it is not under options.\n * @param {string} datasetType\n * @param {string} transition\n * @return {string[][]}\n */\n datasetAnimationScopeKeys(datasetType, transition) {\n return cachedKeys(`${datasetType}.transition.${transition}`,\n () => [\n [\n `datasets.${datasetType}.transitions.${transition}`,\n `transitions.${transition}`,\n ],\n // The following are used for looking up the `animations` and `animation` keys\n [\n `datasets.${datasetType}`,\n ''\n ]\n ]);\n }\n\n /**\n * Returns the options scope keys for resolving element options that belong\n * to an dataset. These keys do not include the dataset itself, because it\n * is not under options.\n * @param {string} datasetType\n * @param {string} elementType\n * @return {string[][]}\n */\n datasetElementScopeKeys(datasetType, elementType) {\n return cachedKeys(`${datasetType}-${elementType}`,\n () => [[\n `datasets.${datasetType}.elements.${elementType}`,\n `datasets.${datasetType}`,\n `elements.${elementType}`,\n ''\n ]]);\n }\n\n /**\n * Returns the options scope keys for resolving plugin options.\n * @param {{id: string, additionalOptionScopes?: string[]}} plugin\n * @return {string[][]}\n */\n pluginScopeKeys(plugin) {\n const id = plugin.id;\n const type = this.type;\n return cachedKeys(`${type}-plugin-${id}`,\n () => [[\n `plugins.${id}`,\n ...plugin.additionalOptionScopes || [],\n ]]);\n }\n\n /**\n * @private\n */\n _cachedScopes(mainScope, resetCache) {\n const _scopeCache = this._scopeCache;\n let cache = _scopeCache.get(mainScope);\n if (!cache || resetCache) {\n cache = new Map();\n _scopeCache.set(mainScope, cache);\n }\n return cache;\n }\n\n /**\n * Resolves the objects from options and defaults for option value resolution.\n * @param {object} mainScope - The main scope object for options\n * @param {string[][]} keyLists - The arrays of keys in resolution order\n * @param {boolean} [resetCache] - reset the cache for this mainScope\n */\n getOptionScopes(mainScope, keyLists, resetCache) {\n const {options, type} = this;\n const cache = this._cachedScopes(mainScope, resetCache);\n const cached = cache.get(keyLists);\n if (cached) {\n return cached;\n }\n\n const scopes = new Set();\n\n keyLists.forEach(keys => {\n if (mainScope) {\n scopes.add(mainScope);\n keys.forEach(key => addIfFound(scopes, mainScope, key));\n }\n keys.forEach(key => addIfFound(scopes, options, key));\n keys.forEach(key => addIfFound(scopes, overrides[type] || {}, key));\n keys.forEach(key => addIfFound(scopes, defaults, key));\n keys.forEach(key => addIfFound(scopes, descriptors, key));\n });\n\n const array = Array.from(scopes);\n if (array.length === 0) {\n array.push(Object.create(null));\n }\n if (keysCached.has(keyLists)) {\n cache.set(keyLists, array);\n }\n return array;\n }\n\n /**\n * Returns the option scopes for resolving chart options\n * @return {object[]}\n */\n chartOptionScopes() {\n const {options, type} = this;\n\n return [\n options,\n overrides[type] || {},\n defaults.datasets[type] || {}, // https://github.com/chartjs/Chart.js/issues/8531\n {type},\n defaults,\n descriptors\n ];\n }\n\n /**\n * @param {object[]} scopes\n * @param {string[]} names\n * @param {function|object} context\n * @param {string[]} [prefixes]\n * @return {object}\n */\n resolveNamedOptions(scopes, names, context, prefixes = ['']) {\n const result = {$shared: true};\n const {resolver, subPrefixes} = getResolver(this._resolverCache, scopes, prefixes);\n let options = resolver;\n if (needContext(resolver, names)) {\n result.$shared = false;\n context = isFunction(context) ? context() : context;\n // subResolver is passed to scriptable options. It should not resolve to hover options.\n const subResolver = this.createResolver(scopes, context, subPrefixes);\n options = _attachContext(resolver, context, subResolver);\n }\n\n for (const prop of names) {\n result[prop] = options[prop];\n }\n return result;\n }\n\n /**\n * @param {object[]} scopes\n * @param {object} [context]\n * @param {string[]} [prefixes]\n * @param {{scriptable: boolean, indexable: boolean, allKeys?: boolean}} [descriptorDefaults]\n */\n createResolver(scopes, context, prefixes = [''], descriptorDefaults) {\n const {resolver} = getResolver(this._resolverCache, scopes, prefixes);\n return isObject(context)\n ? _attachContext(resolver, context, undefined, descriptorDefaults)\n : resolver;\n }\n}\n\nfunction getResolver(resolverCache, scopes, prefixes) {\n let cache = resolverCache.get(scopes);\n if (!cache) {\n cache = new Map();\n resolverCache.set(scopes, cache);\n }\n const cacheKey = prefixes.join();\n let cached = cache.get(cacheKey);\n if (!cached) {\n const resolver = _createResolver(scopes, prefixes);\n cached = {\n resolver,\n subPrefixes: prefixes.filter(p => !p.toLowerCase().includes('hover'))\n };\n cache.set(cacheKey, cached);\n }\n return cached;\n}\n\nconst hasFunction = value => isObject(value)\n && Object.getOwnPropertyNames(value).some((key) => isFunction(value[key]));\n\nfunction needContext(proxy, names) {\n const {isScriptable, isIndexable} = _descriptors(proxy);\n\n for (const prop of names) {\n const scriptable = isScriptable(prop);\n const indexable = isIndexable(prop);\n const value = (indexable || scriptable) && proxy[prop];\n if ((scriptable && (isFunction(value) || hasFunction(value)))\n || (indexable && isArray(value))) {\n return true;\n }\n }\n return false;\n}\n","import animator from './core.animator.js';\nimport defaults, {overrides} from './core.defaults.js';\nimport Interaction from './core.interaction.js';\nimport layouts from './core.layouts.js';\nimport {_detectPlatform} from '../platform/index.js';\nimport PluginService from './core.plugins.js';\nimport registry from './core.registry.js';\nimport Config, {determineAxis, getIndexAxis} from './core.config.js';\nimport {retinaScale, _isDomSupported} from '../helpers/helpers.dom.js';\nimport {each, callback as callCallback, uid, valueOrDefault, _elementsEqual, isNullOrUndef, setsEqual, defined, isFunction, _isClickEvent} from '../helpers/helpers.core.js';\nimport {clearCanvas, clipArea, createContext, unclipArea, _isPointInArea} from '../helpers/index.js';\n// @ts-ignore\nimport {version} from '../../package.json';\nimport {debounce} from '../helpers/helpers.extras.js';\n\n/**\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n * @typedef { import('../types/index.js').Point } Point\n */\n\nconst KNOWN_POSITIONS = ['top', 'bottom', 'left', 'right', 'chartArea'];\nfunction positionIsHorizontal(position, axis) {\n return position === 'top' || position === 'bottom' || (KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x');\n}\n\nfunction compare2Level(l1, l2) {\n return function(a, b) {\n return a[l1] === b[l1]\n ? a[l2] - b[l2]\n : a[l1] - b[l1];\n };\n}\n\nfunction onAnimationsComplete(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n\n chart.notifyPlugins('afterRender');\n callCallback(animationOptions && animationOptions.onComplete, [context], chart);\n}\n\nfunction onAnimationProgress(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n callCallback(animationOptions && animationOptions.onProgress, [context], chart);\n}\n\n/**\n * Chart.js can take a string id of a canvas element, a 2d context, or a canvas element itself.\n * Attempt to unwrap the item passed into the chart constructor so that it is a canvas element (if possible).\n */\nfunction getCanvas(item) {\n if (_isDomSupported() && typeof item === 'string') {\n item = document.getElementById(item);\n } else if (item && item.length) {\n // Support for array based queries (such as jQuery)\n item = item[0];\n }\n\n if (item && item.canvas) {\n // Support for any object associated to a canvas (including a context2d)\n item = item.canvas;\n }\n return item;\n}\n\nconst instances = {};\nconst getChart = (key) => {\n const canvas = getCanvas(key);\n return Object.values(instances).filter((c) => c.canvas === canvas).pop();\n};\n\nfunction moveNumericKeys(obj, start, move) {\n const keys = Object.keys(obj);\n for (const key of keys) {\n const intKey = +key;\n if (intKey >= start) {\n const value = obj[key];\n delete obj[key];\n if (move > 0 || intKey > start) {\n obj[intKey + move] = value;\n }\n }\n }\n}\n\n/**\n * @param {ChartEvent} e\n * @param {ChartEvent|null} lastEvent\n * @param {boolean} inChartArea\n * @param {boolean} isClick\n * @returns {ChartEvent|null}\n */\nfunction determineLastEvent(e, lastEvent, inChartArea, isClick) {\n if (!inChartArea || e.type === 'mouseout') {\n return null;\n }\n if (isClick) {\n return lastEvent;\n }\n return e;\n}\n\nfunction getSizeForArea(scale, chartArea, field) {\n return scale.options.clip ? scale[field] : chartArea[field];\n}\n\nfunction getDatasetArea(meta, chartArea) {\n const {xScale, yScale} = meta;\n if (xScale && yScale) {\n return {\n left: getSizeForArea(xScale, chartArea, 'left'),\n right: getSizeForArea(xScale, chartArea, 'right'),\n top: getSizeForArea(yScale, chartArea, 'top'),\n bottom: getSizeForArea(yScale, chartArea, 'bottom')\n };\n }\n return chartArea;\n}\n\nclass Chart {\n\n static defaults = defaults;\n static instances = instances;\n static overrides = overrides;\n static registry = registry;\n static version = version;\n static getChart = getChart;\n\n static register(...items) {\n registry.add(...items);\n invalidatePlugins();\n }\n\n static unregister(...items) {\n registry.remove(...items);\n invalidatePlugins();\n }\n\n // eslint-disable-next-line max-statements\n constructor(item, userConfig) {\n const config = this.config = new Config(userConfig);\n const initialCanvas = getCanvas(item);\n const existingChart = getChart(initialCanvas);\n if (existingChart) {\n throw new Error(\n 'Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' +\n\t\t\t\t' must be destroyed before the canvas with ID \\'' + existingChart.canvas.id + '\\' can be reused.'\n );\n }\n\n const options = config.createResolver(config.chartOptionScopes(), this.getContext());\n\n this.platform = new (config.platform || _detectPlatform(initialCanvas))();\n this.platform.updateConfig(config);\n\n const context = this.platform.acquireContext(initialCanvas, options.aspectRatio);\n const canvas = context && context.canvas;\n const height = canvas && canvas.height;\n const width = canvas && canvas.width;\n\n this.id = uid();\n this.ctx = context;\n this.canvas = canvas;\n this.width = width;\n this.height = height;\n this._options = options;\n // Store the previously used aspect ratio to determine if a resize\n // is needed during updates. Do this after _options is set since\n // aspectRatio uses a getter\n this._aspectRatio = this.aspectRatio;\n this._layers = [];\n this._metasets = [];\n this._stacks = undefined;\n this.boxes = [];\n this.currentDevicePixelRatio = undefined;\n this.chartArea = undefined;\n this._active = [];\n this._lastEvent = undefined;\n this._listeners = {};\n /** @type {?{attach?: function, detach?: function, resize?: function}} */\n this._responsiveListeners = undefined;\n this._sortedMetasets = [];\n this.scales = {};\n this._plugins = new PluginService();\n this.$proxies = {};\n this._hiddenIndices = {};\n this.attached = false;\n this._animationsDisabled = undefined;\n this.$context = undefined;\n this._doResize = debounce(mode => this.update(mode), options.resizeDelay || 0);\n this._dataChanges = [];\n\n // Add the chart instance to the global namespace\n instances[this.id] = this;\n\n if (!context || !canvas) {\n // The given item is not a compatible context2d element, let's return before finalizing\n // the chart initialization but after setting basic chart / controller properties that\n // can help to figure out that the chart is not valid (e.g chart.canvas !== null);\n // https://github.com/chartjs/Chart.js/issues/2807\n console.error(\"Failed to create chart: can't acquire context from the given item\");\n return;\n }\n\n animator.listen(this, 'complete', onAnimationsComplete);\n animator.listen(this, 'progress', onAnimationProgress);\n\n this._initialize();\n if (this.attached) {\n this.update();\n }\n }\n\n get aspectRatio() {\n const {options: {aspectRatio, maintainAspectRatio}, width, height, _aspectRatio} = this;\n if (!isNullOrUndef(aspectRatio)) {\n // If aspectRatio is defined in options, use that.\n return aspectRatio;\n }\n\n if (maintainAspectRatio && _aspectRatio) {\n // If maintainAspectRatio is truthly and we had previously determined _aspectRatio, use that\n return _aspectRatio;\n }\n\n // Calculate\n return height ? width / height : null;\n }\n\n get data() {\n return this.config.data;\n }\n\n set data(data) {\n this.config.data = data;\n }\n\n get options() {\n return this._options;\n }\n\n set options(options) {\n this.config.options = options;\n }\n\n get registry() {\n return registry;\n }\n\n /**\n\t * @private\n\t */\n _initialize() {\n // Before init plugin notification\n this.notifyPlugins('beforeInit');\n\n if (this.options.responsive) {\n this.resize();\n } else {\n retinaScale(this, this.options.devicePixelRatio);\n }\n\n this.bindEvents();\n\n // After init plugin notification\n this.notifyPlugins('afterInit');\n\n return this;\n }\n\n clear() {\n clearCanvas(this.canvas, this.ctx);\n return this;\n }\n\n stop() {\n animator.stop(this);\n return this;\n }\n\n /**\n\t * Resize the chart to its container or to explicit dimensions.\n\t * @param {number} [width]\n\t * @param {number} [height]\n\t */\n resize(width, height) {\n if (!animator.running(this)) {\n this._resize(width, height);\n } else {\n this._resizeBeforeDraw = {width, height};\n }\n }\n\n _resize(width, height) {\n const options = this.options;\n const canvas = this.canvas;\n const aspectRatio = options.maintainAspectRatio && this.aspectRatio;\n const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio);\n const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio();\n const mode = this.width ? 'resize' : 'attach';\n\n this.width = newSize.width;\n this.height = newSize.height;\n this._aspectRatio = this.aspectRatio;\n if (!retinaScale(this, newRatio, true)) {\n return;\n }\n\n this.notifyPlugins('resize', {size: newSize});\n\n callCallback(options.onResize, [this, newSize], this);\n\n if (this.attached) {\n if (this._doResize(mode)) {\n // The resize update is delayed, only draw without updating.\n this.render();\n }\n }\n }\n\n ensureScalesHaveIDs() {\n const options = this.options;\n const scalesOptions = options.scales || {};\n\n each(scalesOptions, (axisOptions, axisID) => {\n axisOptions.id = axisID;\n });\n }\n\n /**\n\t * Builds a map of scale ID to scale object for future lookup.\n\t */\n buildOrUpdateScales() {\n const options = this.options;\n const scaleOpts = options.scales;\n const scales = this.scales;\n const updated = Object.keys(scales).reduce((obj, id) => {\n obj[id] = false;\n return obj;\n }, {});\n let items = [];\n\n if (scaleOpts) {\n items = items.concat(\n Object.keys(scaleOpts).map((id) => {\n const scaleOptions = scaleOpts[id];\n const axis = determineAxis(id, scaleOptions);\n const isRadial = axis === 'r';\n const isHorizontal = axis === 'x';\n return {\n options: scaleOptions,\n dposition: isRadial ? 'chartArea' : isHorizontal ? 'bottom' : 'left',\n dtype: isRadial ? 'radialLinear' : isHorizontal ? 'category' : 'linear'\n };\n })\n );\n }\n\n each(items, (item) => {\n const scaleOptions = item.options;\n const id = scaleOptions.id;\n const axis = determineAxis(id, scaleOptions);\n const scaleType = valueOrDefault(scaleOptions.type, item.dtype);\n\n if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n scaleOptions.position = item.dposition;\n }\n\n updated[id] = true;\n let scale = null;\n if (id in scales && scales[id].type === scaleType) {\n scale = scales[id];\n } else {\n const scaleClass = registry.getScale(scaleType);\n scale = new scaleClass({\n id,\n type: scaleType,\n ctx: this.ctx,\n chart: this\n });\n scales[scale.id] = scale;\n }\n\n scale.init(scaleOptions, options);\n });\n // clear up discarded scales\n each(updated, (hasUpdated, id) => {\n if (!hasUpdated) {\n delete scales[id];\n }\n });\n\n each(scales, (scale) => {\n layouts.configure(this, scale, scale.options);\n layouts.addBox(this, scale);\n });\n }\n\n /**\n\t * @private\n\t */\n _updateMetasets() {\n const metasets = this._metasets;\n const numData = this.data.datasets.length;\n const numMeta = metasets.length;\n\n metasets.sort((a, b) => a.index - b.index);\n if (numMeta > numData) {\n for (let i = numData; i < numMeta; ++i) {\n this._destroyDatasetMeta(i);\n }\n metasets.splice(numData, numMeta - numData);\n }\n this._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index'));\n }\n\n /**\n\t * @private\n\t */\n _removeUnreferencedMetasets() {\n const {_metasets: metasets, data: {datasets}} = this;\n if (metasets.length > datasets.length) {\n delete this._stacks;\n }\n metasets.forEach((meta, index) => {\n if (datasets.filter(x => x === meta._dataset).length === 0) {\n this._destroyDatasetMeta(index);\n }\n });\n }\n\n buildOrUpdateControllers() {\n const newControllers = [];\n const datasets = this.data.datasets;\n let i, ilen;\n\n this._removeUnreferencedMetasets();\n\n for (i = 0, ilen = datasets.length; i < ilen; i++) {\n const dataset = datasets[i];\n let meta = this.getDatasetMeta(i);\n const type = dataset.type || this.config.type;\n\n if (meta.type && meta.type !== type) {\n this._destroyDatasetMeta(i);\n meta = this.getDatasetMeta(i);\n }\n meta.type = type;\n meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options);\n meta.order = dataset.order || 0;\n meta.index = i;\n meta.label = '' + dataset.label;\n meta.visible = this.isDatasetVisible(i);\n\n if (meta.controller) {\n meta.controller.updateIndex(i);\n meta.controller.linkScales();\n } else {\n const ControllerClass = registry.getController(type);\n const {datasetElementType, dataElementType} = defaults.datasets[type];\n Object.assign(ControllerClass, {\n dataElementType: registry.getElement(dataElementType),\n datasetElementType: datasetElementType && registry.getElement(datasetElementType)\n });\n meta.controller = new ControllerClass(this, i);\n newControllers.push(meta.controller);\n }\n }\n\n this._updateMetasets();\n return newControllers;\n }\n\n /**\n\t * Reset the elements of all datasets\n\t * @private\n\t */\n _resetElements() {\n each(this.data.datasets, (dataset, datasetIndex) => {\n this.getDatasetMeta(datasetIndex).controller.reset();\n }, this);\n }\n\n /**\n\t* Resets the chart back to its state before the initial animation\n\t*/\n reset() {\n this._resetElements();\n this.notifyPlugins('reset');\n }\n\n update(mode) {\n const config = this.config;\n\n config.update();\n const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext());\n const animsDisabled = this._animationsDisabled = !options.animation;\n\n this._updateScales();\n this._checkEventBindings();\n this._updateHiddenIndices();\n\n // plugins options references might have change, let's invalidate the cache\n // https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\n this._plugins.invalidate();\n\n if (this.notifyPlugins('beforeUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n\n // Make sure dataset controllers are updated and new controllers are reset\n const newControllers = this.buildOrUpdateControllers();\n\n this.notifyPlugins('beforeElementsUpdate');\n\n // Make sure all dataset controllers have correct meta data counts\n let minPadding = 0;\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; i++) {\n const {controller} = this.getDatasetMeta(i);\n const reset = !animsDisabled && newControllers.indexOf(controller) === -1;\n // New controllers will be reset after the layout pass, so we only want to modify\n // elements added to new datasets\n controller.buildOrUpdateElements(reset);\n minPadding = Math.max(+controller.getMaxOverflow(), minPadding);\n }\n minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0;\n this._updateLayout(minPadding);\n\n // Only reset the controllers if we have animations\n if (!animsDisabled) {\n // Can only reset the new controllers after the scales have been updated\n // Reset is done to get the starting point for the initial animation\n each(newControllers, (controller) => {\n controller.reset();\n });\n }\n\n this._updateDatasets(mode);\n\n // Do this before render so that any plugins that need final scale updates can use it\n this.notifyPlugins('afterUpdate', {mode});\n\n this._layers.sort(compare2Level('z', '_idx'));\n\n // Replay last event from before update, or set hover styles on active elements\n const {_active, _lastEvent} = this;\n if (_lastEvent) {\n this._eventHandler(_lastEvent, true);\n } else if (_active.length) {\n this._updateHoverStyles(_active, _active, true);\n }\n\n this.render();\n }\n\n /**\n * @private\n */\n _updateScales() {\n each(this.scales, (scale) => {\n layouts.removeBox(this, scale);\n });\n\n this.ensureScalesHaveIDs();\n this.buildOrUpdateScales();\n }\n\n /**\n * @private\n */\n _checkEventBindings() {\n const options = this.options;\n const existingEvents = new Set(Object.keys(this._listeners));\n const newEvents = new Set(options.events);\n\n if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) {\n // The configured events have changed. Rebind.\n this.unbindEvents();\n this.bindEvents();\n }\n }\n\n /**\n * @private\n */\n _updateHiddenIndices() {\n const {_hiddenIndices} = this;\n const changes = this._getUniformDataChanges() || [];\n for (const {method, start, count} of changes) {\n const move = method === '_removeElements' ? -count : count;\n moveNumericKeys(_hiddenIndices, start, move);\n }\n }\n\n /**\n * @private\n */\n _getUniformDataChanges() {\n const _dataChanges = this._dataChanges;\n if (!_dataChanges || !_dataChanges.length) {\n return;\n }\n\n this._dataChanges = [];\n const datasetCount = this.data.datasets.length;\n const makeSet = (idx) => new Set(\n _dataChanges\n .filter(c => c[0] === idx)\n .map((c, i) => i + ',' + c.splice(1).join(','))\n );\n\n const changeSet = makeSet(0);\n for (let i = 1; i < datasetCount; i++) {\n if (!setsEqual(changeSet, makeSet(i))) {\n return;\n }\n }\n return Array.from(changeSet)\n .map(c => c.split(','))\n .map(a => ({method: a[1], start: +a[2], count: +a[3]}));\n }\n\n /**\n\t * Updates the chart layout unless a plugin returns `false` to the `beforeLayout`\n\t * hook, in which case, plugins will not be called on `afterLayout`.\n\t * @private\n\t */\n _updateLayout(minPadding) {\n if (this.notifyPlugins('beforeLayout', {cancelable: true}) === false) {\n return;\n }\n\n layouts.update(this, this.width, this.height, minPadding);\n\n const area = this.chartArea;\n const noArea = area.width <= 0 || area.height <= 0;\n\n this._layers = [];\n each(this.boxes, (box) => {\n if (noArea && box.position === 'chartArea') {\n // Skip drawing and configuring chartArea boxes when chartArea is zero or negative\n return;\n }\n\n // configure is called twice, once in core.scale.update and once here.\n // Here the boxes are fully updated and at their final positions.\n if (box.configure) {\n box.configure();\n }\n this._layers.push(...box._layers());\n }, this);\n\n this._layers.forEach((item, index) => {\n item._idx = index;\n });\n\n this.notifyPlugins('afterLayout');\n }\n\n /**\n\t * Updates all datasets unless a plugin returns `false` to the `beforeDatasetsUpdate`\n\t * hook, in which case, plugins will not be called on `afterDatasetsUpdate`.\n\t * @private\n\t */\n _updateDatasets(mode) {\n if (this.notifyPlugins('beforeDatasetsUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this.getDatasetMeta(i).controller.configure();\n }\n\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._updateDataset(i, isFunction(mode) ? mode({datasetIndex: i}) : mode);\n }\n\n this.notifyPlugins('afterDatasetsUpdate', {mode});\n }\n\n /**\n\t * Updates dataset at index unless a plugin returns `false` to the `beforeDatasetUpdate`\n\t * hook, in which case, plugins will not be called on `afterDatasetUpdate`.\n\t * @private\n\t */\n _updateDataset(index, mode) {\n const meta = this.getDatasetMeta(index);\n const args = {meta, index, mode, cancelable: true};\n\n if (this.notifyPlugins('beforeDatasetUpdate', args) === false) {\n return;\n }\n\n meta.controller._update(mode);\n\n args.cancelable = false;\n this.notifyPlugins('afterDatasetUpdate', args);\n }\n\n render() {\n if (this.notifyPlugins('beforeRender', {cancelable: true}) === false) {\n return;\n }\n\n if (animator.has(this)) {\n if (this.attached && !animator.running(this)) {\n animator.start(this);\n }\n } else {\n this.draw();\n onAnimationsComplete({chart: this});\n }\n }\n\n draw() {\n let i;\n if (this._resizeBeforeDraw) {\n const {width, height} = this._resizeBeforeDraw;\n // Unset pending resize request now to avoid possible recursion within _resize\n this._resizeBeforeDraw = null;\n this._resize(width, height);\n }\n this.clear();\n\n if (this.width <= 0 || this.height <= 0) {\n return;\n }\n\n if (this.notifyPlugins('beforeDraw', {cancelable: true}) === false) {\n return;\n }\n\n // Because of plugin hooks (before/afterDatasetsDraw), datasets can't\n // currently be part of layers. Instead, we draw\n // layers <= 0 before(default, backward compat), and the rest after\n const layers = this._layers;\n for (i = 0; i < layers.length && layers[i].z <= 0; ++i) {\n layers[i].draw(this.chartArea);\n }\n\n this._drawDatasets();\n\n // Rest of layers\n for (; i < layers.length; ++i) {\n layers[i].draw(this.chartArea);\n }\n\n this.notifyPlugins('afterDraw');\n }\n\n /**\n\t * @private\n\t */\n _getSortedDatasetMetas(filterVisible) {\n const metasets = this._sortedMetasets;\n const result = [];\n let i, ilen;\n\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n const meta = metasets[i];\n if (!filterVisible || meta.visible) {\n result.push(meta);\n }\n }\n\n return result;\n }\n\n /**\n\t * Gets the visible dataset metas in drawing order\n\t * @return {object[]}\n\t */\n getSortedVisibleDatasetMetas() {\n return this._getSortedDatasetMetas(true);\n }\n\n /**\n\t * Draws all datasets unless a plugin returns `false` to the `beforeDatasetsDraw`\n\t * hook, in which case, plugins will not be called on `afterDatasetsDraw`.\n\t * @private\n\t */\n _drawDatasets() {\n if (this.notifyPlugins('beforeDatasetsDraw', {cancelable: true}) === false) {\n return;\n }\n\n const metasets = this.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n this._drawDataset(metasets[i]);\n }\n\n this.notifyPlugins('afterDatasetsDraw');\n }\n\n /**\n\t * Draws dataset at index unless a plugin returns `false` to the `beforeDatasetDraw`\n\t * hook, in which case, plugins will not be called on `afterDatasetDraw`.\n\t * @private\n\t */\n _drawDataset(meta) {\n const ctx = this.ctx;\n const clip = meta._clip;\n const useClip = !clip.disabled;\n const area = getDatasetArea(meta, this.chartArea);\n const args = {\n meta,\n index: meta.index,\n cancelable: true\n };\n\n if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n return;\n }\n\n if (useClip) {\n clipArea(ctx, {\n left: clip.left === false ? 0 : area.left - clip.left,\n right: clip.right === false ? this.width : area.right + clip.right,\n top: clip.top === false ? 0 : area.top - clip.top,\n bottom: clip.bottom === false ? this.height : area.bottom + clip.bottom\n });\n }\n\n meta.controller.draw();\n\n if (useClip) {\n unclipArea(ctx);\n }\n\n args.cancelable = false;\n this.notifyPlugins('afterDatasetDraw', args);\n }\n\n /**\n * Checks whether the given point is in the chart area.\n * @param {Point} point - in relative coordinates (see, e.g., getRelativePosition)\n * @returns {boolean}\n */\n isPointInArea(point) {\n return _isPointInArea(point, this.chartArea, this._minPadding);\n }\n\n getElementsAtEventForMode(e, mode, options, useFinalPosition) {\n const method = Interaction.modes[mode];\n if (typeof method === 'function') {\n return method(this, e, options, useFinalPosition);\n }\n\n return [];\n }\n\n getDatasetMeta(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n const metasets = this._metasets;\n let meta = metasets.filter(x => x && x._dataset === dataset).pop();\n\n if (!meta) {\n meta = {\n type: null,\n data: [],\n dataset: null,\n controller: null,\n hidden: null,\t\t\t// See isDatasetVisible() comment\n xAxisID: null,\n yAxisID: null,\n order: dataset && dataset.order || 0,\n index: datasetIndex,\n _dataset: dataset,\n _parsed: [],\n _sorted: false\n };\n metasets.push(meta);\n }\n\n return meta;\n }\n\n getContext() {\n return this.$context || (this.$context = createContext(null, {chart: this, type: 'chart'}));\n }\n\n getVisibleDatasetCount() {\n return this.getSortedVisibleDatasetMetas().length;\n }\n\n isDatasetVisible(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n if (!dataset) {\n return false;\n }\n\n const meta = this.getDatasetMeta(datasetIndex);\n\n // meta.hidden is a per chart dataset hidden flag override with 3 states: if true or false,\n // the dataset.hidden value is ignored, else if null, the dataset hidden state is returned.\n return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n }\n\n setDatasetVisibility(datasetIndex, visible) {\n const meta = this.getDatasetMeta(datasetIndex);\n meta.hidden = !visible;\n }\n\n toggleDataVisibility(index) {\n this._hiddenIndices[index] = !this._hiddenIndices[index];\n }\n\n getDataVisibility(index) {\n return !this._hiddenIndices[index];\n }\n\n /**\n\t * @private\n\t */\n _updateVisibility(datasetIndex, dataIndex, visible) {\n const mode = visible ? 'show' : 'hide';\n const meta = this.getDatasetMeta(datasetIndex);\n const anims = meta.controller._resolveAnimations(undefined, mode);\n\n if (defined(dataIndex)) {\n meta.data[dataIndex].hidden = !visible;\n this.update();\n } else {\n this.setDatasetVisibility(datasetIndex, visible);\n // Animate visible state, so hide animation can be seen. This could be handled better if update / updateDataset returned a Promise.\n anims.update(meta, {visible});\n this.update((ctx) => ctx.datasetIndex === datasetIndex ? mode : undefined);\n }\n }\n\n hide(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, false);\n }\n\n show(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, true);\n }\n\n /**\n\t * @private\n\t */\n _destroyDatasetMeta(datasetIndex) {\n const meta = this._metasets[datasetIndex];\n if (meta && meta.controller) {\n meta.controller._destroy();\n }\n delete this._metasets[datasetIndex];\n }\n\n _stop() {\n let i, ilen;\n this.stop();\n animator.remove(this);\n\n for (i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._destroyDatasetMeta(i);\n }\n }\n\n destroy() {\n this.notifyPlugins('beforeDestroy');\n const {canvas, ctx} = this;\n\n this._stop();\n this.config.clearCache();\n\n if (canvas) {\n this.unbindEvents();\n clearCanvas(canvas, ctx);\n this.platform.releaseContext(ctx);\n this.canvas = null;\n this.ctx = null;\n }\n\n delete instances[this.id];\n\n this.notifyPlugins('afterDestroy');\n }\n\n toBase64Image(...args) {\n return this.canvas.toDataURL(...args);\n }\n\n /**\n\t * @private\n\t */\n bindEvents() {\n this.bindUserEvents();\n if (this.options.responsive) {\n this.bindResponsiveEvents();\n } else {\n this.attached = true;\n }\n }\n\n /**\n * @private\n */\n bindUserEvents() {\n const listeners = this._listeners;\n const platform = this.platform;\n\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n\n const listener = (e, x, y) => {\n e.offsetX = x;\n e.offsetY = y;\n this._eventHandler(e);\n };\n\n each(this.options.events, (type) => _add(type, listener));\n }\n\n /**\n * @private\n */\n bindResponsiveEvents() {\n if (!this._responsiveListeners) {\n this._responsiveListeners = {};\n }\n const listeners = this._responsiveListeners;\n const platform = this.platform;\n\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const _remove = (type, listener) => {\n if (listeners[type]) {\n platform.removeEventListener(this, type, listener);\n delete listeners[type];\n }\n };\n\n const listener = (width, height) => {\n if (this.canvas) {\n this.resize(width, height);\n }\n };\n\n let detached; // eslint-disable-line prefer-const\n const attached = () => {\n _remove('attach', attached);\n\n this.attached = true;\n this.resize();\n\n _add('resize', listener);\n _add('detach', detached);\n };\n\n detached = () => {\n this.attached = false;\n\n _remove('resize', listener);\n\n // Stop animating and remove metasets, so when re-attached, the animations start from beginning.\n this._stop();\n this._resize(0, 0);\n\n _add('attach', attached);\n };\n\n if (platform.isAttached(this.canvas)) {\n attached();\n } else {\n detached();\n }\n }\n\n /**\n\t * @private\n\t */\n unbindEvents() {\n each(this._listeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._listeners = {};\n\n each(this._responsiveListeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._responsiveListeners = undefined;\n }\n\n updateHoverStyle(items, mode, enabled) {\n const prefix = enabled ? 'set' : 'remove';\n let meta, item, i, ilen;\n\n if (mode === 'dataset') {\n meta = this.getDatasetMeta(items[0].datasetIndex);\n meta.controller['_' + prefix + 'DatasetHoverStyle']();\n }\n\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n item = items[i];\n const controller = item && this.getDatasetMeta(item.datasetIndex).controller;\n if (controller) {\n controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index);\n }\n }\n }\n\n /**\n\t * Get active (hovered) elements\n\t * @returns array\n\t */\n getActiveElements() {\n return this._active || [];\n }\n\n /**\n\t * Set active (hovered) elements\n\t * @param {array} activeElements New active data points\n\t */\n setActiveElements(activeElements) {\n const lastActive = this._active || [];\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('No dataset found at index ' + datasetIndex);\n }\n\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(active, lastActive);\n\n if (changed) {\n this._active = active;\n // Make sure we don't use the previous mouse event to override the active elements in update.\n this._lastEvent = null;\n this._updateHoverStyles(active, lastActive);\n }\n }\n\n /**\n\t * Calls enabled plugins on the specified hook and with the given args.\n\t * This method immediately returns as soon as a plugin explicitly returns false. The\n\t * returned value can be used, for instance, to interrupt the current action.\n\t * @param {string} hook - The name of the plugin method to call (e.g. 'beforeUpdate').\n\t * @param {Object} [args] - Extra arguments to apply to the hook call.\n * @param {import('./core.plugins.js').filterCallback} [filter] - Filtering function for limiting which plugins are notified\n\t * @returns {boolean} false if any of the plugins return false, else returns true.\n\t */\n notifyPlugins(hook, args, filter) {\n return this._plugins.notify(this, hook, args, filter);\n }\n\n /**\n * Check if a plugin with the specific ID is registered and enabled\n * @param {string} pluginId - The ID of the plugin of which to check if it is enabled\n * @returns {boolean}\n */\n isPluginEnabled(pluginId) {\n return this._plugins._cache.filter(p => p.plugin.id === pluginId).length === 1;\n }\n\n /**\n\t * @private\n\t */\n _updateHoverStyles(active, lastActive, replay) {\n const hoverOptions = this.options.hover;\n const diff = (a, b) => a.filter(x => !b.some(y => x.datasetIndex === y.datasetIndex && x.index === y.index));\n const deactivated = diff(lastActive, active);\n const activated = replay ? active : diff(active, lastActive);\n\n if (deactivated.length) {\n this.updateHoverStyle(deactivated, hoverOptions.mode, false);\n }\n\n if (activated.length && hoverOptions.mode) {\n this.updateHoverStyle(activated, hoverOptions.mode, true);\n }\n }\n\n /**\n\t * @private\n\t */\n _eventHandler(e, replay) {\n const args = {\n event: e,\n replay,\n cancelable: true,\n inChartArea: this.isPointInArea(e)\n };\n const eventFilter = (plugin) => (plugin.options.events || this.options.events).includes(e.native.type);\n\n if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n return;\n }\n\n const changed = this._handleEvent(e, replay, args.inChartArea);\n\n args.cancelable = false;\n this.notifyPlugins('afterEvent', args, eventFilter);\n\n if (changed || args.changed) {\n this.render();\n }\n\n return this;\n }\n\n /**\n\t * Handle an event\n\t * @param {ChartEvent} e the event to handle\n\t * @param {boolean} [replay] - true if the event was replayed by `update`\n * @param {boolean} [inChartArea] - true if the event is inside chartArea\n\t * @return {boolean} true if the chart needs to re-render\n\t * @private\n\t */\n _handleEvent(e, replay, inChartArea) {\n const {_active: lastActive = [], options} = this;\n\n // If the event is replayed from `update`, we should evaluate with the final positions.\n //\n // The `replay`:\n // It's the last event (excluding click) that has occurred before `update`.\n // So mouse has not moved. It's also over the chart, because there is a `replay`.\n //\n // The why:\n // If animations are active, the elements haven't moved yet compared to state before update.\n // But if they will, we are activating the elements that would be active, if this check\n // was done after the animations have completed. => \"final positions\".\n // If there is no animations, the \"final\" and \"current\" positions are equal.\n // This is done so we do not have to evaluate the active elements each animation frame\n // - it would be expensive.\n const useFinalPosition = replay;\n const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition);\n const isClick = _isClickEvent(e);\n const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick);\n\n if (inChartArea) {\n // Set _lastEvent to null while we are processing the event handlers.\n // This prevents recursion if the handler calls chart.update()\n this._lastEvent = null;\n\n // Invoke onHover hook\n callCallback(options.onHover, [e, active, this], this);\n\n if (isClick) {\n callCallback(options.onClick, [e, active, this], this);\n }\n }\n\n const changed = !_elementsEqual(active, lastActive);\n if (changed || replay) {\n this._active = active;\n this._updateHoverStyles(active, lastActive, replay);\n }\n\n this._lastEvent = lastEvent;\n\n return changed;\n }\n\n /**\n * @param {ChartEvent} e - The event\n * @param {import('../types/index.js').ActiveElement[]} lastActive - Previously active elements\n * @param {boolean} inChartArea - Is the event inside chartArea\n * @param {boolean} useFinalPosition - Should the evaluation be done with current or final (after animation) element positions\n * @returns {import('../types/index.js').ActiveElement[]} - The active elements\n * @pravate\n */\n _getActiveElements(e, lastActive, inChartArea, useFinalPosition) {\n if (e.type === 'mouseout') {\n return [];\n }\n\n if (!inChartArea) {\n // Let user control the active elements outside chartArea. Eg. using Legend.\n return lastActive;\n }\n\n const hoverOptions = this.options.hover;\n return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n }\n}\n\n// @ts-ignore\nfunction invalidatePlugins() {\n return each(Chart.instances, (chart) => chart._plugins.invalidate());\n}\n\nexport default Chart;\n","import {_isDomSupported} from '../helpers/index.js';\nimport BasePlatform from './platform.base.js';\nimport BasicPlatform from './platform.basic.js';\nimport DomPlatform from './platform.dom.js';\n\nexport function _detectPlatform(canvas) {\n if (!_isDomSupported() || (typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas)) {\n return BasicPlatform;\n }\n return DomPlatform;\n}\n\nexport {BasePlatform, BasicPlatform, DomPlatform};\n","import Element from '../core/core.element.js';\nimport {isObject, _isBetween, _limitValue} from '../helpers/index.js';\nimport {addRoundedRectPath} from '../helpers/helpers.canvas.js';\nimport {toTRBL, toTRBLCorners} from '../helpers/helpers.options.js';\n\n/** @typedef {{ x: number, y: number, base: number, horizontal: boolean, width: number, height: number }} BarProps */\n\n/**\n * Helper function to get the bounds of the bar regardless of the orientation\n * @param {BarElement} bar the bar\n * @param {boolean} [useFinalPosition]\n * @return {object} bounds of the bar\n * @private\n */\nfunction getBarBounds(bar, useFinalPosition) {\n const {x, y, base, width, height} = /** @type {BarProps} */ (bar.getProps(['x', 'y', 'base', 'width', 'height'], useFinalPosition));\n\n let left, right, top, bottom, half;\n\n if (bar.horizontal) {\n half = height / 2;\n left = Math.min(x, base);\n right = Math.max(x, base);\n top = y - half;\n bottom = y + half;\n } else {\n half = width / 2;\n left = x - half;\n right = x + half;\n top = Math.min(y, base);\n bottom = Math.max(y, base);\n }\n\n return {left, top, right, bottom};\n}\n\nfunction skipOrLimit(skip, value, min, max) {\n return skip ? 0 : _limitValue(value, min, max);\n}\n\nfunction parseBorderWidth(bar, maxW, maxH) {\n const value = bar.options.borderWidth;\n const skip = bar.borderSkipped;\n const o = toTRBL(value);\n\n return {\n t: skipOrLimit(skip.top, o.top, 0, maxH),\n r: skipOrLimit(skip.right, o.right, 0, maxW),\n b: skipOrLimit(skip.bottom, o.bottom, 0, maxH),\n l: skipOrLimit(skip.left, o.left, 0, maxW)\n };\n}\n\nfunction parseBorderRadius(bar, maxW, maxH) {\n const {enableBorderRadius} = bar.getProps(['enableBorderRadius']);\n const value = bar.options.borderRadius;\n const o = toTRBLCorners(value);\n const maxR = Math.min(maxW, maxH);\n const skip = bar.borderSkipped;\n\n // If the value is an object, assume the user knows what they are doing\n // and apply as directed.\n const enableBorder = enableBorderRadius || isObject(value);\n\n return {\n topLeft: skipOrLimit(!enableBorder || skip.top || skip.left, o.topLeft, 0, maxR),\n topRight: skipOrLimit(!enableBorder || skip.top || skip.right, o.topRight, 0, maxR),\n bottomLeft: skipOrLimit(!enableBorder || skip.bottom || skip.left, o.bottomLeft, 0, maxR),\n bottomRight: skipOrLimit(!enableBorder || skip.bottom || skip.right, o.bottomRight, 0, maxR)\n };\n}\n\nfunction boundingRects(bar) {\n const bounds = getBarBounds(bar);\n const width = bounds.right - bounds.left;\n const height = bounds.bottom - bounds.top;\n const border = parseBorderWidth(bar, width / 2, height / 2);\n const radius = parseBorderRadius(bar, width / 2, height / 2);\n\n return {\n outer: {\n x: bounds.left,\n y: bounds.top,\n w: width,\n h: height,\n radius\n },\n inner: {\n x: bounds.left + border.l,\n y: bounds.top + border.t,\n w: width - border.l - border.r,\n h: height - border.t - border.b,\n radius: {\n topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)),\n topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)),\n bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)),\n bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r)),\n }\n }\n };\n}\n\nfunction inRange(bar, x, y, useFinalPosition) {\n const skipX = x === null;\n const skipY = y === null;\n const skipBoth = skipX && skipY;\n const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition);\n\n return bounds\n\t\t&& (skipX || _isBetween(x, bounds.left, bounds.right))\n\t\t&& (skipY || _isBetween(y, bounds.top, bounds.bottom));\n}\n\nfunction hasRadius(radius) {\n return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\n\n/**\n * Add a path of a rectangle to the current sub-path\n * @param {CanvasRenderingContext2D} ctx Context\n * @param {*} rect Bounding rect\n */\nfunction addNormalRectPath(ctx, rect) {\n ctx.rect(rect.x, rect.y, rect.w, rect.h);\n}\n\nfunction inflateRect(rect, amount, refRect = {}) {\n const x = rect.x !== refRect.x ? -amount : 0;\n const y = rect.y !== refRect.y ? -amount : 0;\n const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x;\n const h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y;\n return {\n x: rect.x + x,\n y: rect.y + y,\n w: rect.w + w,\n h: rect.h + h,\n radius: rect.radius\n };\n}\n\nexport default class BarElement extends Element {\n\n static id = 'bar';\n\n /**\n * @type {any}\n */\n static defaults = {\n borderSkipped: 'start',\n borderWidth: 0,\n borderRadius: 0,\n inflateAmount: 'auto',\n pointStyle: undefined\n };\n\n /**\n * @type {any}\n */\n static defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n };\n\n constructor(cfg) {\n super();\n\n this.options = undefined;\n this.horizontal = undefined;\n this.base = undefined;\n this.width = undefined;\n this.height = undefined;\n this.inflateAmount = undefined;\n\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n\n draw(ctx) {\n const {inflateAmount, options: {borderColor, backgroundColor}} = this;\n const {inner, outer} = boundingRects(this);\n const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath;\n\n ctx.save();\n\n if (outer.w !== inner.w || outer.h !== inner.h) {\n ctx.beginPath();\n addRectPath(ctx, inflateRect(outer, inflateAmount, inner));\n ctx.clip();\n addRectPath(ctx, inflateRect(inner, -inflateAmount, outer));\n ctx.fillStyle = borderColor;\n ctx.fill('evenodd');\n }\n\n ctx.beginPath();\n addRectPath(ctx, inflateRect(inner, inflateAmount));\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n\n ctx.restore();\n }\n\n inRange(mouseX, mouseY, useFinalPosition) {\n return inRange(this, mouseX, mouseY, useFinalPosition);\n }\n\n inXRange(mouseX, useFinalPosition) {\n return inRange(this, mouseX, null, useFinalPosition);\n }\n\n inYRange(mouseY, useFinalPosition) {\n return inRange(this, null, mouseY, useFinalPosition);\n }\n\n getCenterPoint(useFinalPosition) {\n const {x, y, base, horizontal} = /** @type {BarProps} */ (this.getProps(['x', 'y', 'base', 'horizontal'], useFinalPosition));\n return {\n x: horizontal ? (x + base) / 2 : x,\n y: horizontal ? y : (y + base) / 2\n };\n }\n\n getRange(axis) {\n return axis === 'x' ? this.width / 2 : this.height / 2;\n }\n}\n","import defaults from '../core/core.defaults.js';\nimport Element from '../core/core.element.js';\nimport layouts from '../core/core.layouts.js';\nimport {addRoundedRectPath, drawPointLegend, renderText} from '../helpers/helpers.canvas.js';\nimport {\n _isBetween,\n callback as call,\n clipArea,\n getRtlAdapter,\n overrideTextDirection,\n restoreTextDirection,\n toFont,\n toPadding,\n unclipArea,\n valueOrDefault,\n} from '../helpers/index.js';\nimport {_alignStartEnd, _textX, _toLeftRightCenter} from '../helpers/helpers.extras.js';\nimport {toTRBLCorners} from '../helpers/helpers.options.js';\n\n/**\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n */\n\nconst getBoxSize = (labelOpts, fontSize) => {\n let {boxHeight = fontSize, boxWidth = fontSize} = labelOpts;\n\n if (labelOpts.usePointStyle) {\n boxHeight = Math.min(boxHeight, fontSize);\n boxWidth = labelOpts.pointStyleWidth || Math.min(boxWidth, fontSize);\n }\n\n return {\n boxWidth,\n boxHeight,\n itemHeight: Math.max(fontSize, boxHeight)\n };\n};\n\nconst itemsEqual = (a, b) => a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\n\nexport class Legend extends Element {\n\n /**\n\t * @param {{ ctx: any; options: any; chart: any; }} config\n\t */\n constructor(config) {\n super();\n\n this._added = false;\n\n // Contains hit boxes for each dataset (in dataset order)\n this.legendHitBoxes = [];\n\n /**\n \t\t * @private\n \t\t */\n this._hoveredItem = null;\n\n // Are we in doughnut mode which has a different data type\n this.doughnutMode = false;\n\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this.legendItems = undefined;\n this.columnSizes = undefined;\n this.lineWidths = undefined;\n this.maxHeight = undefined;\n this.maxWidth = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.height = undefined;\n this.width = undefined;\n this._margins = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n\n update(maxWidth, maxHeight, margins) {\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins;\n\n this.setDimensions();\n this.buildLabels();\n this.fit();\n }\n\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = this._margins.left;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = this._margins.top;\n this.bottom = this.height;\n }\n }\n\n buildLabels() {\n const labelOpts = this.options.labels || {};\n let legendItems = call(labelOpts.generateLabels, [this.chart], this) || [];\n\n if (labelOpts.filter) {\n legendItems = legendItems.filter((item) => labelOpts.filter(item, this.chart.data));\n }\n\n if (labelOpts.sort) {\n legendItems = legendItems.sort((a, b) => labelOpts.sort(a, b, this.chart.data));\n }\n\n if (this.options.reverse) {\n legendItems.reverse();\n }\n\n this.legendItems = legendItems;\n }\n\n fit() {\n const {options, ctx} = this;\n\n // The legend may not be displayed for a variety of reasons including\n // the fact that the defaults got set to `false`.\n // When the legend is not displayed, there are no guarantees that the options\n // are correctly formatted so we need to bail out as early as possible.\n if (!options.display) {\n this.width = this.height = 0;\n return;\n }\n\n const labelOpts = options.labels;\n const labelFont = toFont(labelOpts.font);\n const fontSize = labelFont.size;\n const titleHeight = this._computeTitleHeight();\n const {boxWidth, itemHeight} = getBoxSize(labelOpts, fontSize);\n\n let width, height;\n\n ctx.font = labelFont.string;\n\n if (this.isHorizontal()) {\n width = this.maxWidth; // fill all the width\n height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n } else {\n height = this.maxHeight; // fill all the height\n width = this._fitCols(titleHeight, labelFont, boxWidth, itemHeight) + 10;\n }\n\n this.width = Math.min(width, options.maxWidth || this.maxWidth);\n this.height = Math.min(height, options.maxHeight || this.maxHeight);\n }\n\n /**\n\t * @private\n\t */\n _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n const {ctx, maxWidth, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n // Width of each line of legend boxes. Labels wrap onto multiple lines when there are too many to fit on one\n const lineWidths = this.lineWidths = [0];\n const lineHeight = itemHeight + padding;\n let totalHeight = titleHeight;\n\n ctx.textAlign = 'left';\n ctx.textBaseline = 'middle';\n\n let row = -1;\n let top = -lineHeight;\n this.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n\n if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) {\n totalHeight += lineHeight;\n lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n top += lineHeight;\n row++;\n }\n\n hitboxes[i] = {left: 0, top, row, width: itemWidth, height: itemHeight};\n\n lineWidths[lineWidths.length - 1] += itemWidth + padding;\n });\n\n return totalHeight;\n }\n\n _fitCols(titleHeight, labelFont, boxWidth, _itemHeight) {\n const {ctx, maxHeight, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n const columnSizes = this.columnSizes = [];\n const heightLimit = maxHeight - titleHeight;\n\n let totalWidth = padding;\n let currentColWidth = 0;\n let currentColHeight = 0;\n\n let left = 0;\n let col = 0;\n\n this.legendItems.forEach((legendItem, i) => {\n const {itemWidth, itemHeight} = calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight);\n\n // If too tall, go to new column\n if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) {\n totalWidth += currentColWidth + padding;\n columnSizes.push({width: currentColWidth, height: currentColHeight}); // previous column size\n left += currentColWidth + padding;\n col++;\n currentColWidth = currentColHeight = 0;\n }\n\n // Store the hitbox width and height here. Final position will be updated in `draw`\n hitboxes[i] = {left, top: currentColHeight, col, width: itemWidth, height: itemHeight};\n\n // Get max width\n currentColWidth = Math.max(currentColWidth, itemWidth);\n currentColHeight += itemHeight + padding;\n });\n\n totalWidth += currentColWidth;\n columnSizes.push({width: currentColWidth, height: currentColHeight}); // previous column size\n\n return totalWidth;\n }\n\n adjustHitBoxes() {\n if (!this.options.display) {\n return;\n }\n const titleHeight = this._computeTitleHeight();\n const {legendHitBoxes: hitboxes, options: {align, labels: {padding}, rtl}} = this;\n const rtlHelper = getRtlAdapter(rtl, this.left, this.width);\n if (this.isHorizontal()) {\n let row = 0;\n let left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n for (const hitbox of hitboxes) {\n if (row !== hitbox.row) {\n row = hitbox.row;\n left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n }\n hitbox.top += this.top + titleHeight + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width);\n left += hitbox.width + padding;\n }\n } else {\n let col = 0;\n let top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n for (const hitbox of hitboxes) {\n if (hitbox.col !== col) {\n col = hitbox.col;\n top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n }\n hitbox.top = top;\n hitbox.left += this.left + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox.left), hitbox.width);\n top += hitbox.height + padding;\n }\n }\n }\n\n isHorizontal() {\n return this.options.position === 'top' || this.options.position === 'bottom';\n }\n\n draw() {\n if (this.options.display) {\n const ctx = this.ctx;\n clipArea(ctx, this);\n\n this._draw();\n\n unclipArea(ctx);\n }\n }\n\n /**\n\t * @private\n\t */\n _draw() {\n const {options: opts, columnSizes, lineWidths, ctx} = this;\n const {align, labels: labelOpts} = opts;\n const defaultColor = defaults.color;\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const labelFont = toFont(labelOpts.font);\n const {padding} = labelOpts;\n const fontSize = labelFont.size;\n const halfFontSize = fontSize / 2;\n let cursor;\n\n this.drawTitle();\n\n // Canvas setup\n ctx.textAlign = rtlHelper.textAlign('left');\n ctx.textBaseline = 'middle';\n ctx.lineWidth = 0.5;\n ctx.font = labelFont.string;\n\n const {boxWidth, boxHeight, itemHeight} = getBoxSize(labelOpts, fontSize);\n\n // current position\n const drawLegendBox = function(x, y, legendItem) {\n if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n return;\n }\n\n // Set the ctx for the box\n ctx.save();\n\n const lineWidth = valueOrDefault(legendItem.lineWidth, 1);\n ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor);\n ctx.lineCap = valueOrDefault(legendItem.lineCap, 'butt');\n ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0);\n ctx.lineJoin = valueOrDefault(legendItem.lineJoin, 'miter');\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor);\n\n ctx.setLineDash(valueOrDefault(legendItem.lineDash, []));\n\n if (labelOpts.usePointStyle) {\n // Recalculate x and y for drawPoint() because its expecting\n // x and y to be center of figure (instead of top left)\n const drawOptions = {\n radius: boxHeight * Math.SQRT2 / 2,\n pointStyle: legendItem.pointStyle,\n rotation: legendItem.rotation,\n borderWidth: lineWidth\n };\n const centerX = rtlHelper.xPlus(x, boxWidth / 2);\n const centerY = y + halfFontSize;\n\n // Draw pointStyle as legend symbol\n drawPointLegend(ctx, drawOptions, centerX, centerY, labelOpts.pointStyleWidth && boxWidth);\n } else {\n // Draw box as legend symbol\n // Adjust position when boxHeight < fontSize (want it centered)\n const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0);\n const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth);\n const borderRadius = toTRBLCorners(legendItem.borderRadius);\n\n ctx.beginPath();\n\n if (Object.values(borderRadius).some(v => v !== 0)) {\n addRoundedRectPath(ctx, {\n x: xBoxLeft,\n y: yBoxTop,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n } else {\n ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight);\n }\n\n ctx.fill();\n if (lineWidth !== 0) {\n ctx.stroke();\n }\n }\n\n ctx.restore();\n };\n\n const fillText = function(x, y, legendItem) {\n renderText(ctx, legendItem.text, x, y + (itemHeight / 2), labelFont, {\n strikethrough: legendItem.hidden,\n textAlign: rtlHelper.textAlign(legendItem.textAlign)\n });\n };\n\n // Horizontal\n const isHorizontal = this.isHorizontal();\n const titleHeight = this._computeTitleHeight();\n if (isHorizontal) {\n cursor = {\n x: _alignStartEnd(align, this.left + padding, this.right - lineWidths[0]),\n y: this.top + padding + titleHeight,\n line: 0\n };\n } else {\n cursor = {\n x: this.left + padding,\n y: _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height),\n line: 0\n };\n }\n\n overrideTextDirection(this.ctx, opts.textDirection);\n\n const lineHeight = itemHeight + padding;\n this.legendItems.forEach((legendItem, i) => {\n ctx.strokeStyle = legendItem.fontColor; // for strikethrough effect\n ctx.fillStyle = legendItem.fontColor; // render in correct colour\n\n const textWidth = ctx.measureText(legendItem.text).width;\n const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign));\n const width = boxWidth + halfFontSize + textWidth;\n let x = cursor.x;\n let y = cursor.y;\n\n rtlHelper.setWidth(this.width);\n\n if (isHorizontal) {\n if (i > 0 && x + width + padding > this.right) {\n y = cursor.y += lineHeight;\n cursor.line++;\n x = cursor.x = _alignStartEnd(align, this.left + padding, this.right - lineWidths[cursor.line]);\n }\n } else if (i > 0 && y + lineHeight > this.bottom) {\n x = cursor.x = x + columnSizes[cursor.line].width + padding;\n cursor.line++;\n y = cursor.y = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height);\n }\n\n const realX = rtlHelper.x(x);\n\n drawLegendBox(realX, y, legendItem);\n\n x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl);\n\n // Fill the actual label\n fillText(rtlHelper.x(x), y, legendItem);\n\n if (isHorizontal) {\n cursor.x += width + padding;\n } else if (typeof legendItem.text !== 'string') {\n const fontLineHeight = labelFont.lineHeight;\n cursor.y += calculateLegendItemHeight(legendItem, fontLineHeight) + padding;\n } else {\n cursor.y += lineHeight;\n }\n });\n\n restoreTextDirection(this.ctx, opts.textDirection);\n }\n\n /**\n\t * @protected\n\t */\n drawTitle() {\n const opts = this.options;\n const titleOpts = opts.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n\n if (!titleOpts.display) {\n return;\n }\n\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const ctx = this.ctx;\n const position = titleOpts.position;\n const halfFontSize = titleFont.size / 2;\n const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize;\n let y;\n\n // These defaults are used when the legend is vertical.\n // When horizontal, they are computed below.\n let left = this.left;\n let maxWidth = this.width;\n\n if (this.isHorizontal()) {\n // Move left / right so that the title is above the legend lines\n maxWidth = Math.max(...this.lineWidths);\n y = this.top + topPaddingPlusHalfFontSize;\n left = _alignStartEnd(opts.align, left, this.right - maxWidth);\n } else {\n // Move down so that the title is above the legend stack in every alignment\n const maxHeight = this.columnSizes.reduce((acc, size) => Math.max(acc, size.height), 0);\n y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight());\n }\n\n // Now that we know the left edge of the inner legend box, compute the correct\n // X coordinate from the title alignment\n const x = _alignStartEnd(position, left, left + maxWidth);\n\n // Canvas setup\n ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position));\n ctx.textBaseline = 'middle';\n ctx.strokeStyle = titleOpts.color;\n ctx.fillStyle = titleOpts.color;\n ctx.font = titleFont.string;\n\n renderText(ctx, titleOpts.text, x, y, titleFont);\n }\n\n /**\n\t * @private\n\t */\n _computeTitleHeight() {\n const titleOpts = this.options.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0;\n }\n\n /**\n\t * @private\n\t */\n _getLegendItemAt(x, y) {\n let i, hitBox, lh;\n\n if (_isBetween(x, this.left, this.right)\n && _isBetween(y, this.top, this.bottom)) {\n // See if we are touching one of the dataset boxes\n lh = this.legendHitBoxes;\n for (i = 0; i < lh.length; ++i) {\n hitBox = lh[i];\n\n if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width)\n && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) {\n // Touching an element\n return this.legendItems[i];\n }\n }\n }\n\n return null;\n }\n\n /**\n\t * Handle an event\n\t * @param {ChartEvent} e - The event to handle\n\t */\n handleEvent(e) {\n const opts = this.options;\n if (!isListened(e.type, opts)) {\n return;\n }\n\n // Chart event already has relative position in it\n const hoveredItem = this._getLegendItemAt(e.x, e.y);\n\n if (e.type === 'mousemove' || e.type === 'mouseout') {\n const previous = this._hoveredItem;\n const sameItem = itemsEqual(previous, hoveredItem);\n if (previous && !sameItem) {\n call(opts.onLeave, [e, previous, this], this);\n }\n\n this._hoveredItem = hoveredItem;\n\n if (hoveredItem && !sameItem) {\n call(opts.onHover, [e, hoveredItem, this], this);\n }\n } else if (hoveredItem) {\n call(opts.onClick, [e, hoveredItem, this], this);\n }\n }\n}\n\nfunction calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight) {\n const itemWidth = calculateItemWidth(legendItem, boxWidth, labelFont, ctx);\n const itemHeight = calculateItemHeight(_itemHeight, legendItem, labelFont.lineHeight);\n return {itemWidth, itemHeight};\n}\n\nfunction calculateItemWidth(legendItem, boxWidth, labelFont, ctx) {\n let legendItemText = legendItem.text;\n if (legendItemText && typeof legendItemText !== 'string') {\n legendItemText = legendItemText.reduce((a, b) => a.length > b.length ? a : b);\n }\n return boxWidth + (labelFont.size / 2) + ctx.measureText(legendItemText).width;\n}\n\nfunction calculateItemHeight(_itemHeight, legendItem, fontLineHeight) {\n let itemHeight = _itemHeight;\n if (typeof legendItem.text !== 'string') {\n itemHeight = calculateLegendItemHeight(legendItem, fontLineHeight);\n }\n return itemHeight;\n}\n\nfunction calculateLegendItemHeight(legendItem, fontLineHeight) {\n const labelHeight = legendItem.text ? legendItem.text.length : 0;\n return fontLineHeight * labelHeight;\n}\n\nfunction isListened(type, opts) {\n if ((type === 'mousemove' || type === 'mouseout') && (opts.onHover || opts.onLeave)) {\n return true;\n }\n if (opts.onClick && (type === 'click' || type === 'mouseup')) {\n return true;\n }\n return false;\n}\n\nexport default {\n id: 'legend',\n\n /**\n\t * For tests\n\t * @private\n\t */\n _element: Legend,\n\n start(chart, _args, options) {\n const legend = chart.legend = new Legend({ctx: chart.ctx, options, chart});\n layouts.configure(chart, legend, options);\n layouts.addBox(chart, legend);\n },\n\n stop(chart) {\n layouts.removeBox(chart, chart.legend);\n delete chart.legend;\n },\n\n // During the beforeUpdate step, the layout configuration needs to run\n // This ensures that if the legend position changes (via an option update)\n // the layout system respects the change. See https://github.com/chartjs/Chart.js/issues/7527\n beforeUpdate(chart, _args, options) {\n const legend = chart.legend;\n layouts.configure(chart, legend, options);\n legend.options = options;\n },\n\n // The labels need to be built after datasets are updated to ensure that colors\n // and other styling are correct. See https://github.com/chartjs/Chart.js/issues/6968\n afterUpdate(chart) {\n const legend = chart.legend;\n legend.buildLabels();\n legend.adjustHitBoxes();\n },\n\n\n afterEvent(chart, args) {\n if (!args.replay) {\n chart.legend.handleEvent(args.event);\n }\n },\n\n defaults: {\n display: true,\n position: 'top',\n align: 'center',\n fullSize: true,\n reverse: false,\n weight: 1000,\n\n // a callback that will handle\n onClick(e, legendItem, legend) {\n const index = legendItem.datasetIndex;\n const ci = legend.chart;\n if (ci.isDatasetVisible(index)) {\n ci.hide(index);\n legendItem.hidden = true;\n } else {\n ci.show(index);\n legendItem.hidden = false;\n }\n },\n\n onHover: null,\n onLeave: null,\n\n labels: {\n color: (ctx) => ctx.chart.options.color,\n boxWidth: 40,\n padding: 10,\n // Generates labels shown in the legend\n // Valid properties to return:\n // text : text to display\n // fillStyle : fill of coloured box\n // strokeStyle: stroke of coloured box\n // hidden : if this legend item refers to a hidden item\n // lineCap : cap style for line\n // lineDash\n // lineDashOffset :\n // lineJoin :\n // lineWidth :\n generateLabels(chart) {\n const datasets = chart.data.datasets;\n const {labels: {usePointStyle, pointStyle, textAlign, color, useBorderRadius, borderRadius}} = chart.legend.options;\n\n return chart._getSortedDatasetMetas().map((meta) => {\n const style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n const borderWidth = toPadding(style.borderWidth);\n\n return {\n text: datasets[meta.index].label,\n fillStyle: style.backgroundColor,\n fontColor: color,\n hidden: !meta.visible,\n lineCap: style.borderCapStyle,\n lineDash: style.borderDash,\n lineDashOffset: style.borderDashOffset,\n lineJoin: style.borderJoinStyle,\n lineWidth: (borderWidth.width + borderWidth.height) / 4,\n strokeStyle: style.borderColor,\n pointStyle: pointStyle || style.pointStyle,\n rotation: style.rotation,\n textAlign: textAlign || style.textAlign,\n borderRadius: useBorderRadius && (borderRadius || style.borderRadius),\n\n // Below is extra data used for toggling the datasets\n datasetIndex: meta.index\n };\n }, this);\n }\n },\n\n title: {\n color: (ctx) => ctx.chart.options.color,\n display: false,\n position: 'center',\n text: '',\n }\n },\n\n descriptors: {\n _scriptable: (name) => !name.startsWith('on'),\n labels: {\n _scriptable: (name) => !['generateLabels', 'filter', 'sort'].includes(name),\n }\n },\n};\n","import Element from '../core/core.element.js';\nimport layouts from '../core/core.layouts.js';\nimport {PI, isArray, toPadding, toFont} from '../helpers/index.js';\nimport {_toLeftRightCenter, _alignStartEnd} from '../helpers/helpers.extras.js';\nimport {renderText} from '../helpers/helpers.canvas.js';\n\nexport class Title extends Element {\n /**\n\t * @param {{ ctx: any; options: any; chart: any; }} config\n\t */\n constructor(config) {\n super();\n\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this._padding = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n\n update(maxWidth, maxHeight) {\n const opts = this.options;\n\n this.left = 0;\n this.top = 0;\n\n if (!opts.display) {\n this.width = this.height = this.right = this.bottom = 0;\n return;\n }\n\n this.width = this.right = maxWidth;\n this.height = this.bottom = maxHeight;\n\n const lineCount = isArray(opts.text) ? opts.text.length : 1;\n this._padding = toPadding(opts.padding);\n const textSize = lineCount * toFont(opts.font).lineHeight + this._padding.height;\n\n if (this.isHorizontal()) {\n this.height = textSize;\n } else {\n this.width = textSize;\n }\n }\n\n isHorizontal() {\n const pos = this.options.position;\n return pos === 'top' || pos === 'bottom';\n }\n\n _drawArgs(offset) {\n const {top, left, bottom, right, options} = this;\n const align = options.align;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n\n if (this.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n titleY = top + offset;\n maxWidth = right - left;\n } else {\n if (options.position === 'left') {\n titleX = left + offset;\n titleY = _alignStartEnd(align, bottom, top);\n rotation = PI * -0.5;\n } else {\n titleX = right - offset;\n titleY = _alignStartEnd(align, top, bottom);\n rotation = PI * 0.5;\n }\n maxWidth = bottom - top;\n }\n return {titleX, titleY, maxWidth, rotation};\n }\n\n draw() {\n const ctx = this.ctx;\n const opts = this.options;\n\n if (!opts.display) {\n return;\n }\n\n const fontOpts = toFont(opts.font);\n const lineHeight = fontOpts.lineHeight;\n const offset = lineHeight / 2 + this._padding.top;\n const {titleX, titleY, maxWidth, rotation} = this._drawArgs(offset);\n\n renderText(ctx, opts.text, 0, 0, fontOpts, {\n color: opts.color,\n maxWidth,\n rotation,\n textAlign: _toLeftRightCenter(opts.align),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n}\n\nfunction createTitle(chart, titleOpts) {\n const title = new Title({\n ctx: chart.ctx,\n options: titleOpts,\n chart\n });\n\n layouts.configure(chart, title, titleOpts);\n layouts.addBox(chart, title);\n chart.titleBlock = title;\n}\n\nexport default {\n id: 'title',\n\n /**\n\t * For tests\n\t * @private\n\t */\n _element: Title,\n\n start(chart, _args, options) {\n createTitle(chart, options);\n },\n\n stop(chart) {\n const titleBlock = chart.titleBlock;\n layouts.removeBox(chart, titleBlock);\n delete chart.titleBlock;\n },\n\n beforeUpdate(chart, _args, options) {\n const title = chart.titleBlock;\n layouts.configure(chart, title, options);\n title.options = options;\n },\n\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'bold',\n },\n fullSize: true,\n padding: 10,\n position: 'top',\n text: '',\n weight: 2000 // by default greater than legend (1000) to be above\n },\n\n defaultRoutes: {\n color: 'color'\n },\n\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n","import {Title} from './plugin.title.js';\nimport layouts from '../core/core.layouts.js';\n\nconst map = new WeakMap();\n\nexport default {\n id: 'subtitle',\n\n start(chart, _args, options) {\n const title = new Title({\n ctx: chart.ctx,\n options,\n chart\n });\n\n layouts.configure(chart, title, options);\n layouts.addBox(chart, title);\n map.set(chart, title);\n },\n\n stop(chart) {\n layouts.removeBox(chart, map.get(chart));\n map.delete(chart);\n },\n\n beforeUpdate(chart, _args, options) {\n const title = map.get(chart);\n layouts.configure(chart, title, options);\n title.options = options;\n },\n\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'normal',\n },\n fullSize: true,\n padding: 0,\n position: 'top',\n text: '',\n weight: 1500 // by default greater than legend (1000) and smaller than title (2000)\n },\n\n defaultRoutes: {\n color: 'color'\n },\n\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n","import Animations from '../core/core.animations.js';\nimport Element from '../core/core.element.js';\nimport {addRoundedRectPath} from '../helpers/helpers.canvas.js';\nimport {each, noop, isNullOrUndef, isArray, _elementsEqual, isObject} from '../helpers/helpers.core.js';\nimport {toFont, toPadding, toTRBLCorners} from '../helpers/helpers.options.js';\nimport {getRtlAdapter, overrideTextDirection, restoreTextDirection} from '../helpers/helpers.rtl.js';\nimport {distanceBetweenPoints, _limitValue} from '../helpers/helpers.math.js';\nimport {createContext, drawPoint} from '../helpers/index.js';\n\n/**\n * @typedef { import('../platform/platform.base.js').Chart } Chart\n * @typedef { import('../types/index.js').ChartEvent } ChartEvent\n * @typedef { import('../types/index.js').ActiveElement } ActiveElement\n * @typedef { import('../core/core.interaction.js').InteractionItem } InteractionItem\n */\n\nconst positioners = {\n /**\n\t * Average mode places the tooltip at the average position of the elements shown\n\t */\n average(items) {\n if (!items.length) {\n return false;\n }\n\n let i, len;\n let xSet = new Set();\n let y = 0;\n let count = 0;\n\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const pos = el.tooltipPosition();\n xSet.add(pos.x);\n y += pos.y;\n ++count;\n }\n }\n\n // No visible items where found, return false so we don't have to divide by 0 which reduces in NaN\n if (count === 0 || xSet.size === 0) {\n return false;\n }\n\n const xAverage = [...xSet].reduce((a, b) => a + b) / xSet.size;\n\n return {\n x: xAverage,\n y: y / count\n };\n },\n\n /**\n\t * Gets the tooltip position nearest of the item nearest to the event position\n\t */\n nearest(items, eventPosition) {\n if (!items.length) {\n return false;\n }\n\n let x = eventPosition.x;\n let y = eventPosition.y;\n let minDistance = Number.POSITIVE_INFINITY;\n let i, len, nearestElement;\n\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const center = el.getCenterPoint();\n const d = distanceBetweenPoints(eventPosition, center);\n\n if (d < minDistance) {\n minDistance = d;\n nearestElement = el;\n }\n }\n }\n\n if (nearestElement) {\n const tp = nearestElement.tooltipPosition();\n x = tp.x;\n y = tp.y;\n }\n\n return {\n x,\n y\n };\n }\n};\n\n// Helper to push or concat based on if the 2nd parameter is an array or not\nfunction pushOrConcat(base, toPush) {\n if (toPush) {\n if (isArray(toPush)) {\n // base = base.concat(toPush);\n Array.prototype.push.apply(base, toPush);\n } else {\n base.push(toPush);\n }\n }\n\n return base;\n}\n\n/**\n * Returns array of strings split by newline\n * @param {*} str - The value to split by newline.\n * @returns {string|string[]} value if newline present - Returned from String split() method\n * @function\n */\nfunction splitNewlines(str) {\n if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n return str.split('\\n');\n }\n return str;\n}\n\n\n/**\n * Private helper to create a tooltip item model\n * @param {Chart} chart\n * @param {ActiveElement} item - {element, index, datasetIndex} to create the tooltip item for\n * @return new tooltip item\n */\nfunction createTooltipItem(chart, item) {\n const {element, datasetIndex, index} = item;\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n const {label, value} = controller.getLabelAndValue(index);\n\n return {\n chart,\n label,\n parsed: controller.getParsed(index),\n raw: chart.data.datasets[datasetIndex].data[index],\n formattedValue: value,\n dataset: controller.getDataset(),\n dataIndex: index,\n datasetIndex,\n element\n };\n}\n\n/**\n * Get the size of the tooltip\n */\nfunction getTooltipSize(tooltip, options) {\n const ctx = tooltip.chart.ctx;\n const {body, footer, title} = tooltip;\n const {boxWidth, boxHeight} = options;\n const bodyFont = toFont(options.bodyFont);\n const titleFont = toFont(options.titleFont);\n const footerFont = toFont(options.footerFont);\n const titleLineCount = title.length;\n const footerLineCount = footer.length;\n const bodyLineItemCount = body.length;\n\n const padding = toPadding(options.padding);\n let height = padding.height;\n let width = 0;\n\n // Count of all lines in the body\n let combinedBodyLength = body.reduce((count, bodyItem) => count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0);\n combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length;\n\n if (titleLineCount) {\n height += titleLineCount * titleFont.lineHeight\n\t\t\t+ (titleLineCount - 1) * options.titleSpacing\n\t\t\t+ options.titleMarginBottom;\n }\n if (combinedBodyLength) {\n // Body lines may include some extra height depending on boxHeight\n const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n height += bodyLineItemCount * bodyLineHeight\n\t\t\t+ (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight\n\t\t\t+ (combinedBodyLength - 1) * options.bodySpacing;\n }\n if (footerLineCount) {\n height += options.footerMarginTop\n\t\t\t+ footerLineCount * footerFont.lineHeight\n\t\t\t+ (footerLineCount - 1) * options.footerSpacing;\n }\n\n // Title width\n let widthPadding = 0;\n const maxLineWidth = function(line) {\n width = Math.max(width, ctx.measureText(line).width + widthPadding);\n };\n\n ctx.save();\n\n ctx.font = titleFont.string;\n each(tooltip.title, maxLineWidth);\n\n // Body width\n ctx.font = bodyFont.string;\n each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\n\n // Body lines may include some extra width due to the color box\n widthPadding = options.displayColors ? (boxWidth + 2 + options.boxPadding) : 0;\n each(body, (bodyItem) => {\n each(bodyItem.before, maxLineWidth);\n each(bodyItem.lines, maxLineWidth);\n each(bodyItem.after, maxLineWidth);\n });\n\n // Reset back to 0\n widthPadding = 0;\n\n // Footer width\n ctx.font = footerFont.string;\n each(tooltip.footer, maxLineWidth);\n\n ctx.restore();\n\n // Add padding\n width += padding.width;\n\n return {width, height};\n}\n\nfunction determineYAlign(chart, size) {\n const {y, height} = size;\n\n if (y < height / 2) {\n return 'top';\n } else if (y > (chart.height - height / 2)) {\n return 'bottom';\n }\n return 'center';\n}\n\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n const {x, width} = size;\n const caret = options.caretSize + options.caretPadding;\n if (xAlign === 'left' && x + width + caret > chart.width) {\n return true;\n }\n\n if (xAlign === 'right' && x - width - caret < 0) {\n return true;\n }\n}\n\nfunction determineXAlign(chart, options, size, yAlign) {\n const {x, width} = size;\n const {width: chartWidth, chartArea: {left, right}} = chart;\n let xAlign = 'center';\n\n if (yAlign === 'center') {\n xAlign = x <= (left + right) / 2 ? 'left' : 'right';\n } else if (x <= width / 2) {\n xAlign = 'left';\n } else if (x >= chartWidth - width / 2) {\n xAlign = 'right';\n }\n\n if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n xAlign = 'center';\n }\n\n return xAlign;\n}\n\n/**\n * Helper to get the alignment of a tooltip given the size\n */\nfunction determineAlignment(chart, options, size) {\n const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);\n\n return {\n xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),\n yAlign\n };\n}\n\nfunction alignX(size, xAlign) {\n let {x, width} = size;\n if (xAlign === 'right') {\n x -= width;\n } else if (xAlign === 'center') {\n x -= (width / 2);\n }\n return x;\n}\n\nfunction alignY(size, yAlign, paddingAndSize) {\n // eslint-disable-next-line prefer-const\n let {y, height} = size;\n if (yAlign === 'top') {\n y += paddingAndSize;\n } else if (yAlign === 'bottom') {\n y -= height + paddingAndSize;\n } else {\n y -= (height / 2);\n }\n return y;\n}\n\n/**\n * Helper to get the location a tooltip needs to be placed at given the initial position (via the vm) and the size and alignment\n */\nfunction getBackgroundPoint(options, size, alignment, chart) {\n const {caretSize, caretPadding, cornerRadius} = options;\n const {xAlign, yAlign} = alignment;\n const paddingAndSize = caretSize + caretPadding;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n\n let x = alignX(size, xAlign);\n const y = alignY(size, yAlign, paddingAndSize);\n\n if (yAlign === 'center') {\n if (xAlign === 'left') {\n x += paddingAndSize;\n } else if (xAlign === 'right') {\n x -= paddingAndSize;\n }\n } else if (xAlign === 'left') {\n x -= Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x += Math.max(topRight, bottomRight) + caretSize;\n }\n\n return {\n x: _limitValue(x, 0, chart.width - size.width),\n y: _limitValue(y, 0, chart.height - size.height)\n };\n}\n\nfunction getAlignedX(tooltip, align, options) {\n const padding = toPadding(options.padding);\n\n return align === 'center'\n ? tooltip.x + tooltip.width / 2\n : align === 'right'\n ? tooltip.x + tooltip.width - padding.right\n : tooltip.x + padding.left;\n}\n\n/**\n * Helper to build before and after body lines\n */\nfunction getBeforeAfterBodyLines(callback) {\n return pushOrConcat([], splitNewlines(callback));\n}\n\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n return createContext(parent, {\n tooltip,\n tooltipItems,\n type: 'tooltip'\n });\n}\n\nfunction overrideCallbacks(callbacks, context) {\n const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks;\n return override ? callbacks.override(override) : callbacks;\n}\n\nconst defaultCallbacks = {\n // Args are: (tooltipItems, data)\n beforeTitle: noop,\n title(tooltipItems) {\n if (tooltipItems.length > 0) {\n const item = tooltipItems[0];\n const labels = item.chart.data.labels;\n const labelCount = labels ? labels.length : 0;\n\n if (this && this.options && this.options.mode === 'dataset') {\n return item.dataset.label || '';\n } else if (item.label) {\n return item.label;\n } else if (labelCount > 0 && item.dataIndex < labelCount) {\n return labels[item.dataIndex];\n }\n }\n\n return '';\n },\n afterTitle: noop,\n\n // Args are: (tooltipItems, data)\n beforeBody: noop,\n\n // Args are: (tooltipItem, data)\n beforeLabel: noop,\n label(tooltipItem) {\n if (this && this.options && this.options.mode === 'dataset') {\n return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n }\n\n let label = tooltipItem.dataset.label || '';\n\n if (label) {\n label += ': ';\n }\n const value = tooltipItem.formattedValue;\n if (!isNullOrUndef(value)) {\n label += value;\n }\n return label;\n },\n labelColor(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n borderColor: options.borderColor,\n backgroundColor: options.backgroundColor,\n borderWidth: options.borderWidth,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderRadius: 0,\n };\n },\n labelTextColor() {\n return this.options.bodyColor;\n },\n labelPointStyle(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n pointStyle: options.pointStyle,\n rotation: options.rotation,\n };\n },\n afterLabel: noop,\n\n // Args are: (tooltipItems, data)\n afterBody: noop,\n\n // Args are: (tooltipItems, data)\n beforeFooter: noop,\n footer: noop,\n afterFooter: noop\n};\n\n/**\n * Invoke callback from object with context and arguments.\n * If callback returns `undefined`, then will be invoked default callback.\n * @param {Record} callbacks\n * @param {keyof typeof defaultCallbacks} name\n * @param {*} ctx\n * @param {*} arg\n * @returns {any}\n */\nfunction invokeCallbackWithFallback(callbacks, name, ctx, arg) {\n const result = callbacks[name].call(ctx, arg);\n\n if (typeof result === 'undefined') {\n return defaultCallbacks[name].call(ctx, arg);\n }\n\n return result;\n}\n\nexport class Tooltip extends Element {\n\n /**\n * @namespace Chart.Tooltip.positioners\n */\n static positioners = positioners;\n\n constructor(config) {\n super();\n\n this.opacity = 0;\n this._active = [];\n this._eventPosition = undefined;\n this._size = undefined;\n this._cachedAnimations = undefined;\n this._tooltipItems = [];\n this.$animations = undefined;\n this.$context = undefined;\n this.chart = config.chart;\n this.options = config.options;\n this.dataPoints = undefined;\n this.title = undefined;\n this.beforeBody = undefined;\n this.body = undefined;\n this.afterBody = undefined;\n this.footer = undefined;\n this.xAlign = undefined;\n this.yAlign = undefined;\n this.x = undefined;\n this.y = undefined;\n this.height = undefined;\n this.width = undefined;\n this.caretX = undefined;\n this.caretY = undefined;\n // TODO: V4, make this private, rename to `_labelStyles`, and combine with `labelPointStyles`\n // and `labelTextColors` to create a single variable\n this.labelColors = undefined;\n this.labelPointStyles = undefined;\n this.labelTextColors = undefined;\n }\n\n initialize(options) {\n this.options = options;\n this._cachedAnimations = undefined;\n this.$context = undefined;\n }\n\n /**\n\t * @private\n\t */\n _resolveAnimations() {\n const cached = this._cachedAnimations;\n\n if (cached) {\n return cached;\n }\n\n const chart = this.chart;\n const options = this.options.setContext(this.getContext());\n const opts = options.enabled && chart.options.animation && options.animations;\n const animations = new Animations(this.chart, opts);\n if (opts._cacheable) {\n this._cachedAnimations = Object.freeze(animations);\n }\n\n return animations;\n }\n\n /**\n\t * @protected\n\t */\n getContext() {\n return this.$context ||\n\t\t\t(this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n }\n\n getTitle(context, options) {\n const {callbacks} = options;\n\n const beforeTitle = invokeCallbackWithFallback(callbacks, 'beforeTitle', this, context);\n const title = invokeCallbackWithFallback(callbacks, 'title', this, context);\n const afterTitle = invokeCallbackWithFallback(callbacks, 'afterTitle', this, context);\n\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n lines = pushOrConcat(lines, splitNewlines(title));\n lines = pushOrConcat(lines, splitNewlines(afterTitle));\n\n return lines;\n }\n\n getBeforeBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(\n invokeCallbackWithFallback(options.callbacks, 'beforeBody', this, tooltipItems)\n );\n }\n\n getBody(tooltipItems, options) {\n const {callbacks} = options;\n const bodyItems = [];\n\n each(tooltipItems, (context) => {\n const bodyItem = {\n before: [],\n lines: [],\n after: []\n };\n const scoped = overrideCallbacks(callbacks, context);\n pushOrConcat(bodyItem.before, splitNewlines(invokeCallbackWithFallback(scoped, 'beforeLabel', this, context)));\n pushOrConcat(bodyItem.lines, invokeCallbackWithFallback(scoped, 'label', this, context));\n pushOrConcat(bodyItem.after, splitNewlines(invokeCallbackWithFallback(scoped, 'afterLabel', this, context)));\n\n bodyItems.push(bodyItem);\n });\n\n return bodyItems;\n }\n\n getAfterBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(\n invokeCallbackWithFallback(options.callbacks, 'afterBody', this, tooltipItems)\n );\n }\n\n // Get the footer and beforeFooter and afterFooter lines\n getFooter(tooltipItems, options) {\n const {callbacks} = options;\n\n const beforeFooter = invokeCallbackWithFallback(callbacks, 'beforeFooter', this, tooltipItems);\n const footer = invokeCallbackWithFallback(callbacks, 'footer', this, tooltipItems);\n const afterFooter = invokeCallbackWithFallback(callbacks, 'afterFooter', this, tooltipItems);\n\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n lines = pushOrConcat(lines, splitNewlines(footer));\n lines = pushOrConcat(lines, splitNewlines(afterFooter));\n\n return lines;\n }\n\n /**\n\t * @private\n\t */\n _createItems(options) {\n const active = this._active;\n const data = this.chart.data;\n const labelColors = [];\n const labelPointStyles = [];\n const labelTextColors = [];\n let tooltipItems = [];\n let i, len;\n\n for (i = 0, len = active.length; i < len; ++i) {\n tooltipItems.push(createTooltipItem(this.chart, active[i]));\n }\n\n // If the user provided a filter function, use it to modify the tooltip items\n if (options.filter) {\n tooltipItems = tooltipItems.filter((element, index, array) => options.filter(element, index, array, data));\n }\n\n // If the user provided a sorting function, use it to modify the tooltip items\n if (options.itemSort) {\n tooltipItems = tooltipItems.sort((a, b) => options.itemSort(a, b, data));\n }\n\n // Determine colors for boxes\n each(tooltipItems, (context) => {\n const scoped = overrideCallbacks(options.callbacks, context);\n labelColors.push(invokeCallbackWithFallback(scoped, 'labelColor', this, context));\n labelPointStyles.push(invokeCallbackWithFallback(scoped, 'labelPointStyle', this, context));\n labelTextColors.push(invokeCallbackWithFallback(scoped, 'labelTextColor', this, context));\n });\n\n this.labelColors = labelColors;\n this.labelPointStyles = labelPointStyles;\n this.labelTextColors = labelTextColors;\n this.dataPoints = tooltipItems;\n return tooltipItems;\n }\n\n update(changed, replay) {\n const options = this.options.setContext(this.getContext());\n const active = this._active;\n let properties;\n let tooltipItems = [];\n\n if (!active.length) {\n if (this.opacity !== 0) {\n properties = {\n opacity: 0\n };\n }\n } else {\n const position = positioners[options.position].call(this, active, this._eventPosition);\n tooltipItems = this._createItems(options);\n\n this.title = this.getTitle(tooltipItems, options);\n this.beforeBody = this.getBeforeBody(tooltipItems, options);\n this.body = this.getBody(tooltipItems, options);\n this.afterBody = this.getAfterBody(tooltipItems, options);\n this.footer = this.getFooter(tooltipItems, options);\n\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, size);\n const alignment = determineAlignment(this.chart, options, positionAndSize);\n const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart);\n\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n\n properties = {\n opacity: 1,\n x: backgroundPoint.x,\n y: backgroundPoint.y,\n width: size.width,\n height: size.height,\n caretX: position.x,\n caretY: position.y\n };\n }\n\n this._tooltipItems = tooltipItems;\n this.$context = undefined;\n\n if (properties) {\n this._resolveAnimations().update(this, properties);\n }\n\n if (changed && options.external) {\n options.external.call(this, {chart: this.chart, tooltip: this, replay});\n }\n }\n\n drawCaret(tooltipPoint, ctx, size, options) {\n const caretPosition = this.getCaretPosition(tooltipPoint, size, options);\n\n ctx.lineTo(caretPosition.x1, caretPosition.y1);\n ctx.lineTo(caretPosition.x2, caretPosition.y2);\n ctx.lineTo(caretPosition.x3, caretPosition.y3);\n }\n\n getCaretPosition(tooltipPoint, size, options) {\n const {xAlign, yAlign} = this;\n const {caretSize, cornerRadius} = options;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n const {x: ptX, y: ptY} = tooltipPoint;\n const {width, height} = size;\n let x1, x2, x3, y1, y2, y3;\n\n if (yAlign === 'center') {\n y2 = ptY + (height / 2);\n\n if (xAlign === 'left') {\n x1 = ptX;\n x2 = x1 - caretSize;\n\n // Left draws bottom -> top, this y1 is on the bottom\n y1 = y2 + caretSize;\n y3 = y2 - caretSize;\n } else {\n x1 = ptX + width;\n x2 = x1 + caretSize;\n\n // Right draws top -> bottom, thus y1 is on the top\n y1 = y2 - caretSize;\n y3 = y2 + caretSize;\n }\n\n x3 = x1;\n } else {\n if (xAlign === 'left') {\n x2 = ptX + Math.max(topLeft, bottomLeft) + (caretSize);\n } else if (xAlign === 'right') {\n x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize;\n } else {\n x2 = this.caretX;\n }\n\n if (yAlign === 'top') {\n y1 = ptY;\n y2 = y1 - caretSize;\n\n // Top draws left -> right, thus x1 is on the left\n x1 = x2 - caretSize;\n x3 = x2 + caretSize;\n } else {\n y1 = ptY + height;\n y2 = y1 + caretSize;\n\n // Bottom draws right -> left, thus x1 is on the right\n x1 = x2 + caretSize;\n x3 = x2 - caretSize;\n }\n y3 = y1;\n }\n return {x1, x2, x3, y1, y2, y3};\n }\n\n drawTitle(pt, ctx, options) {\n const title = this.title;\n const length = title.length;\n let titleFont, titleSpacing, i;\n\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n\n pt.x = getAlignedX(this, options.titleAlign, options);\n\n ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n ctx.textBaseline = 'middle';\n\n titleFont = toFont(options.titleFont);\n titleSpacing = options.titleSpacing;\n\n ctx.fillStyle = options.titleColor;\n ctx.font = titleFont.string;\n\n for (i = 0; i < length; ++i) {\n ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2);\n pt.y += titleFont.lineHeight + titleSpacing; // Line Height and spacing\n\n if (i + 1 === length) {\n pt.y += options.titleMarginBottom - titleSpacing; // If Last, add margin, remove spacing\n }\n }\n }\n }\n\n /**\n\t * @private\n\t */\n _drawColorBox(ctx, pt, i, rtlHelper, options) {\n const labelColor = this.labelColors[i];\n const labelPointStyle = this.labelPointStyles[i];\n const {boxHeight, boxWidth} = options;\n const bodyFont = toFont(options.bodyFont);\n const colorX = getAlignedX(this, 'left', options);\n const rtlColorX = rtlHelper.x(colorX);\n const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0;\n const colorY = pt.y + yOffSet;\n\n if (options.usePointStyle) {\n const drawOptions = {\n radius: Math.min(boxWidth, boxHeight) / 2, // fit the circle in the box\n pointStyle: labelPointStyle.pointStyle,\n rotation: labelPointStyle.rotation,\n borderWidth: 1\n };\n // Recalculate x and y for drawPoint() because its expecting\n // x and y to be center of figure (instead of top left)\n const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n const centerY = colorY + boxHeight / 2;\n\n // Fill the point with white so that colours merge nicely if the opacity is < 1\n ctx.strokeStyle = options.multiKeyBackground;\n ctx.fillStyle = options.multiKeyBackground;\n drawPoint(ctx, drawOptions, centerX, centerY);\n\n // Draw the point\n ctx.strokeStyle = labelColor.borderColor;\n ctx.fillStyle = labelColor.backgroundColor;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n // Border\n ctx.lineWidth = isObject(labelColor.borderWidth) ? Math.max(...Object.values(labelColor.borderWidth)) : (labelColor.borderWidth || 1); // TODO, v4 remove fallback\n ctx.strokeStyle = labelColor.borderColor;\n ctx.setLineDash(labelColor.borderDash || []);\n ctx.lineDashOffset = labelColor.borderDashOffset || 0;\n\n // Fill a white rect so that colours merge nicely if the opacity is < 1\n const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth);\n const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - 2);\n const borderRadius = toTRBLCorners(labelColor.borderRadius);\n\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n ctx.fillStyle = options.multiKeyBackground;\n addRoundedRectPath(ctx, {\n x: outerX,\n y: colorY,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n ctx.fill();\n ctx.stroke();\n\n // Inner square\n ctx.fillStyle = labelColor.backgroundColor;\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: innerX,\n y: colorY + 1,\n w: boxWidth - 2,\n h: boxHeight - 2,\n radius: borderRadius,\n });\n ctx.fill();\n } else {\n // Normal rect\n ctx.fillStyle = options.multiKeyBackground;\n ctx.fillRect(outerX, colorY, boxWidth, boxHeight);\n ctx.strokeRect(outerX, colorY, boxWidth, boxHeight);\n // Inner square\n ctx.fillStyle = labelColor.backgroundColor;\n ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2);\n }\n }\n\n // restore fillStyle\n ctx.fillStyle = this.labelTextColors[i];\n }\n\n drawBody(pt, ctx, options) {\n const {body} = this;\n const {bodySpacing, bodyAlign, displayColors, boxHeight, boxWidth, boxPadding} = options;\n const bodyFont = toFont(options.bodyFont);\n let bodyLineHeight = bodyFont.lineHeight;\n let xLinePadding = 0;\n\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n\n const fillLineOfText = function(line) {\n ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2);\n pt.y += bodyLineHeight + bodySpacing;\n };\n\n const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n let bodyItem, textColor, lines, i, j, ilen, jlen;\n\n ctx.textAlign = bodyAlign;\n ctx.textBaseline = 'middle';\n ctx.font = bodyFont.string;\n\n pt.x = getAlignedX(this, bodyAlignForCalculation, options);\n\n // Before body lines\n ctx.fillStyle = options.bodyColor;\n each(this.beforeBody, fillLineOfText);\n\n xLinePadding = displayColors && bodyAlignForCalculation !== 'right'\n ? bodyAlign === 'center' ? (boxWidth / 2 + boxPadding) : (boxWidth + 2 + boxPadding)\n : 0;\n\n // Draw body lines now\n for (i = 0, ilen = body.length; i < ilen; ++i) {\n bodyItem = body[i];\n textColor = this.labelTextColors[i];\n\n ctx.fillStyle = textColor;\n each(bodyItem.before, fillLineOfText);\n\n lines = bodyItem.lines;\n // Draw Legend-like boxes if needed\n if (displayColors && lines.length) {\n this._drawColorBox(ctx, pt, i, rtlHelper, options);\n bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n }\n\n for (j = 0, jlen = lines.length; j < jlen; ++j) {\n fillLineOfText(lines[j]);\n // Reset for any lines that don't include colorbox\n bodyLineHeight = bodyFont.lineHeight;\n }\n\n each(bodyItem.after, fillLineOfText);\n }\n\n // Reset back to 0 for after body\n xLinePadding = 0;\n bodyLineHeight = bodyFont.lineHeight;\n\n // After body lines\n each(this.afterBody, fillLineOfText);\n pt.y -= bodySpacing; // Remove last body spacing\n }\n\n drawFooter(pt, ctx, options) {\n const footer = this.footer;\n const length = footer.length;\n let footerFont, i;\n\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n\n pt.x = getAlignedX(this, options.footerAlign, options);\n pt.y += options.footerMarginTop;\n\n ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n ctx.textBaseline = 'middle';\n\n footerFont = toFont(options.footerFont);\n\n ctx.fillStyle = options.footerColor;\n ctx.font = footerFont.string;\n\n for (i = 0; i < length; ++i) {\n ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2);\n pt.y += footerFont.lineHeight + options.footerSpacing;\n }\n }\n }\n\n drawBackground(pt, ctx, tooltipSize, options) {\n const {xAlign, yAlign} = this;\n const {x, y} = pt;\n const {width, height} = tooltipSize;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(options.cornerRadius);\n\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n\n ctx.beginPath();\n ctx.moveTo(x + topLeft, y);\n if (yAlign === 'top') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width - topRight, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + topRight);\n if (yAlign === 'center' && xAlign === 'right') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width, y + height - bottomRight);\n ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height);\n if (yAlign === 'bottom') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + bottomLeft, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft);\n if (yAlign === 'center' && xAlign === 'left') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x, y + topLeft);\n ctx.quadraticCurveTo(x, y, x + topLeft, y);\n ctx.closePath();\n\n ctx.fill();\n\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n }\n\n /**\n\t * Update x/y animation targets when _active elements are animating too\n\t * @private\n\t */\n _updateAnimationTarget(options) {\n const chart = this.chart;\n const anims = this.$animations;\n const animX = anims && anims.x;\n const animY = anims && anims.y;\n if (animX || animY) {\n const position = positioners[options.position].call(this, this._active, this._eventPosition);\n if (!position) {\n return;\n }\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, this._size);\n const alignment = determineAlignment(chart, options, positionAndSize);\n const point = getBackgroundPoint(options, positionAndSize, alignment, chart);\n if (animX._to !== point.x || animY._to !== point.y) {\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n this.width = size.width;\n this.height = size.height;\n this.caretX = position.x;\n this.caretY = position.y;\n this._resolveAnimations().update(this, point);\n }\n }\n }\n\n /**\n * Determine if the tooltip will draw anything\n * @returns {boolean} True if the tooltip will render\n */\n _willRender() {\n return !!this.opacity;\n }\n\n draw(ctx) {\n const options = this.options.setContext(this.getContext());\n let opacity = this.opacity;\n\n if (!opacity) {\n return;\n }\n\n this._updateAnimationTarget(options);\n\n const tooltipSize = {\n width: this.width,\n height: this.height\n };\n const pt = {\n x: this.x,\n y: this.y\n };\n\n // IE11/Edge does not like very small opacities, so snap to 0\n opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n\n const padding = toPadding(options.padding);\n\n // Truthy/falsey value for empty tooltip\n const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length;\n\n if (options.enabled && hasTooltipContent) {\n ctx.save();\n ctx.globalAlpha = opacity;\n\n // Draw Background\n this.drawBackground(pt, ctx, tooltipSize, options);\n\n overrideTextDirection(ctx, options.textDirection);\n\n pt.y += padding.top;\n\n // Titles\n this.drawTitle(pt, ctx, options);\n\n // Body\n this.drawBody(pt, ctx, options);\n\n // Footer\n this.drawFooter(pt, ctx, options);\n\n restoreTextDirection(ctx, options.textDirection);\n\n ctx.restore();\n }\n }\n\n /**\n\t * Get active elements in the tooltip\n\t * @returns {Array} Array of elements that are active in the tooltip\n\t */\n getActiveElements() {\n return this._active || [];\n }\n\n /**\n\t * Set active elements in the tooltip\n\t * @param {array} activeElements Array of active datasetIndex/index pairs.\n\t * @param {object} eventPosition Synthetic event position used in positioning\n\t */\n setActiveElements(activeElements, eventPosition) {\n const lastActive = this._active;\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.chart.getDatasetMeta(datasetIndex);\n\n if (!meta) {\n throw new Error('Cannot find a dataset at index ' + datasetIndex);\n }\n\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(lastActive, active);\n const positionChanged = this._positionChanged(active, eventPosition);\n\n if (changed || positionChanged) {\n this._active = active;\n this._eventPosition = eventPosition;\n this._ignoreReplayEvents = true;\n this.update(true);\n }\n }\n\n /**\n\t * Handle an event\n\t * @param {ChartEvent} e - The event to handle\n\t * @param {boolean} [replay] - This is a replayed event (from update)\n\t * @param {boolean} [inChartArea] - The event is inside chartArea\n\t * @returns {boolean} true if the tooltip changed\n\t */\n handleEvent(e, replay, inChartArea = true) {\n if (replay && this._ignoreReplayEvents) {\n return false;\n }\n this._ignoreReplayEvents = false;\n\n const options = this.options;\n const lastActive = this._active || [];\n const active = this._getActiveElements(e, lastActive, replay, inChartArea);\n\n // When there are multiple items shown, but the tooltip position is nearest mode\n // an update may need to be made because our position may have changed even though\n // the items are the same as before.\n const positionChanged = this._positionChanged(active, e);\n\n // Remember Last Actives\n const changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n\n // Only handle target event on tooltip change\n if (changed) {\n this._active = active;\n\n if (options.enabled || options.external) {\n this._eventPosition = {\n x: e.x,\n y: e.y\n };\n\n this.update(true, replay);\n }\n }\n\n return changed;\n }\n\n /**\n\t * Helper for determining the active elements for event\n\t * @param {ChartEvent} e - The event to handle\n\t * @param {InteractionItem[]} lastActive - Previously active elements\n\t * @param {boolean} [replay] - This is a replayed event (from update)\n\t * @param {boolean} [inChartArea] - The event is inside chartArea\n\t * @returns {InteractionItem[]} - Active elements\n\t * @private\n\t */\n _getActiveElements(e, lastActive, replay, inChartArea) {\n const options = this.options;\n\n if (e.type === 'mouseout') {\n return [];\n }\n\n if (!inChartArea) {\n // Let user control the active elements outside chartArea. Eg. using Legend.\n // But make sure that active elements are still valid.\n return lastActive.filter(i =>\n this.chart.data.datasets[i.datasetIndex] &&\n this.chart.getDatasetMeta(i.datasetIndex).controller.getParsed(i.index) !== undefined\n );\n }\n\n // Find Active Elements for tooltips\n const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n\n if (options.reverse) {\n active.reverse();\n }\n\n return active;\n }\n\n /**\n\t * Determine if the active elements + event combination changes the\n\t * tooltip position\n\t * @param {array} active - Active elements\n\t * @param {ChartEvent} e - Event that triggered the position change\n\t * @returns {boolean} True if the position has changed\n\t */\n _positionChanged(active, e) {\n const {caretX, caretY, options} = this;\n const position = positioners[options.position].call(this, active, e);\n return position !== false && (caretX !== position.x || caretY !== position.y);\n }\n}\n\nexport default {\n id: 'tooltip',\n _element: Tooltip,\n positioners,\n\n afterInit(chart, _args, options) {\n if (options) {\n chart.tooltip = new Tooltip({chart, options});\n }\n },\n\n beforeUpdate(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n\n reset(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n\n afterDraw(chart) {\n const tooltip = chart.tooltip;\n\n if (tooltip && tooltip._willRender()) {\n const args = {\n tooltip\n };\n\n if (chart.notifyPlugins('beforeTooltipDraw', {...args, cancelable: true}) === false) {\n return;\n }\n\n tooltip.draw(chart.ctx);\n\n chart.notifyPlugins('afterTooltipDraw', args);\n }\n },\n\n afterEvent(chart, args) {\n if (chart.tooltip) {\n // If the event is replayed from `update`, we should evaluate with the final positions.\n const useFinalPosition = args.replay;\n if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) {\n // notify chart about the change, so it will render\n args.changed = true;\n }\n }\n },\n\n defaults: {\n enabled: true,\n external: null,\n position: 'average',\n backgroundColor: 'rgba(0,0,0,0.8)',\n titleColor: '#fff',\n titleFont: {\n weight: 'bold',\n },\n titleSpacing: 2,\n titleMarginBottom: 6,\n titleAlign: 'left',\n bodyColor: '#fff',\n bodySpacing: 2,\n bodyFont: {\n },\n bodyAlign: 'left',\n footerColor: '#fff',\n footerSpacing: 2,\n footerMarginTop: 6,\n footerFont: {\n weight: 'bold',\n },\n footerAlign: 'left',\n padding: 6,\n caretPadding: 2,\n caretSize: 5,\n cornerRadius: 6,\n boxHeight: (ctx, opts) => opts.bodyFont.size,\n boxWidth: (ctx, opts) => opts.bodyFont.size,\n multiKeyBackground: '#fff',\n displayColors: true,\n boxPadding: 0,\n borderColor: 'rgba(0,0,0,0)',\n borderWidth: 0,\n animation: {\n duration: 400,\n easing: 'easeOutQuart',\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'width', 'height', 'caretX', 'caretY'],\n },\n opacity: {\n easing: 'linear',\n duration: 200\n }\n },\n callbacks: defaultCallbacks\n },\n\n defaultRoutes: {\n bodyFont: 'font',\n footerFont: 'font',\n titleFont: 'font'\n },\n\n descriptors: {\n _scriptable: (name) => name !== 'filter' && name !== 'itemSort' && name !== 'external',\n _indexable: false,\n callbacks: {\n _scriptable: false,\n _indexable: false,\n },\n animation: {\n _fallback: false\n },\n animations: {\n _fallback: 'animation'\n }\n },\n\n // Resolve additionally from `interaction` options and defaults.\n additionalOptionScopes: ['interaction']\n};\n","import Scale from '../core/core.scale.js';\nimport {isNullOrUndef, valueOrDefault, _limitValue} from '../helpers/index.js';\n\nconst addIfString = (labels, raw, index, addedLabels) => {\n if (typeof raw === 'string') {\n index = labels.push(raw) - 1;\n addedLabels.unshift({index, label: raw});\n } else if (isNaN(raw)) {\n index = null;\n }\n return index;\n};\n\nfunction findOrAddLabel(labels, raw, index, addedLabels) {\n const first = labels.indexOf(raw);\n if (first === -1) {\n return addIfString(labels, raw, index, addedLabels);\n }\n const last = labels.lastIndexOf(raw);\n return first !== last ? index : first;\n}\n\nconst validIndex = (index, max) => index === null ? null : _limitValue(Math.round(index), 0, max);\n\nfunction _getLabelForValue(value) {\n const labels = this.getLabels();\n\n if (value >= 0 && value < labels.length) {\n return labels[value];\n }\n return value;\n}\n\nexport default class CategoryScale extends Scale {\n\n static id = 'category';\n\n /**\n * @type {any}\n */\n static defaults = {\n ticks: {\n callback: _getLabelForValue\n }\n };\n\n constructor(cfg) {\n super(cfg);\n\n /** @type {number} */\n this._startValue = undefined;\n this._valueRange = 0;\n this._addedLabels = [];\n }\n\n init(scaleOptions) {\n const added = this._addedLabels;\n if (added.length) {\n const labels = this.getLabels();\n for (const {index, label} of added) {\n if (labels[index] === label) {\n labels.splice(index, 1);\n }\n }\n this._addedLabels = [];\n }\n super.init(scaleOptions);\n }\n\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n const labels = this.getLabels();\n index = isFinite(index) && labels[index] === raw ? index\n : findOrAddLabel(labels, raw, valueOrDefault(index, raw), this._addedLabels);\n return validIndex(index, labels.length - 1);\n }\n\n determineDataLimits() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this.getMinMax(true);\n\n if (this.options.bounds === 'ticks') {\n if (!minDefined) {\n min = 0;\n }\n if (!maxDefined) {\n max = this.getLabels().length - 1;\n }\n }\n\n this.min = min;\n this.max = max;\n }\n\n buildTicks() {\n const min = this.min;\n const max = this.max;\n const offset = this.options.offset;\n const ticks = [];\n let labels = this.getLabels();\n\n // If we are viewing some subset of labels, slice the original array\n labels = (min === 0 && max === labels.length - 1) ? labels : labels.slice(min, max + 1);\n\n this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n this._startValue = this.min - (offset ? 0.5 : 0);\n\n for (let value = min; value <= max; value++) {\n ticks.push({value});\n }\n return ticks;\n }\n\n getLabelForValue(value) {\n return _getLabelForValue.call(this, value);\n }\n\n /**\n\t * @protected\n\t */\n configure() {\n super.configure();\n\n if (!this.isHorizontal()) {\n // For backward compatibility, vertical category scale reverse is inverted.\n this._reversePixels = !this._reversePixels;\n }\n }\n\n // Used to get data value locations. Value can either be an index or a numerical value\n getPixelForValue(value) {\n if (typeof value !== 'number') {\n value = this.parse(value);\n }\n\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n\n // Must override base implementation because it calls getPixelForValue\n // and category scale can have duplicate values\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n\n getValueForPixel(pixel) {\n return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange);\n }\n\n getBasePixel() {\n return this.bottom;\n }\n}\n","import {isNullOrUndef} from '../helpers/helpers.core.js';\nimport {almostEquals, almostWhole, niceNum, _decimalPlaces, _setMinAndMaxByKey, sign, toRadians} from '../helpers/helpers.math.js';\nimport Scale from '../core/core.scale.js';\nimport {formatNumber} from '../helpers/helpers.intl.js';\n\n/**\n * Generate a set of linear ticks for an axis\n * 1. If generationOptions.min, generationOptions.max, and generationOptions.step are defined:\n * if (max - min) / step is an integer, ticks are generated as [min, min + step, ..., max]\n * Note that the generationOptions.maxCount setting is respected in this scenario\n *\n * 2. If generationOptions.min, generationOptions.max, and generationOptions.count is defined\n * spacing = (max - min) / count\n * Ticks are generated as [min, min + spacing, ..., max]\n *\n * 3. If generationOptions.count is defined\n * spacing = (niceMax - niceMin) / count\n *\n * 4. Compute optimal spacing of ticks using niceNum algorithm\n *\n * @param generationOptions the options used to generate the ticks\n * @param dataRange the range of the data\n * @returns {object[]} array of tick objects\n */\nfunction generateTicks(generationOptions, dataRange) {\n const ticks = [];\n // To get a \"nice\" value for the tick spacing, we will use the appropriately named\n // \"nice number\" algorithm. See https://stackoverflow.com/questions/8506881/nice-label-algorithm-for-charts-with-minimum-ticks\n // for details.\n\n const MIN_SPACING = 1e-14;\n const {bounds, step, min, max, precision, count, maxTicks, maxDigits, includeBounds} = generationOptions;\n const unit = step || 1;\n const maxSpaces = maxTicks - 1;\n const {min: rmin, max: rmax} = dataRange;\n const minDefined = !isNullOrUndef(min);\n const maxDefined = !isNullOrUndef(max);\n const countDefined = !isNullOrUndef(count);\n const minSpacing = (rmax - rmin) / (maxDigits + 1);\n let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit;\n let factor, niceMin, niceMax, numSpaces;\n\n // Beyond MIN_SPACING floating point numbers being to lose precision\n // such that we can't do the math necessary to generate ticks\n if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n return [{value: rmin}, {value: rmax}];\n }\n\n numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n if (numSpaces > maxSpaces) {\n // If the calculated num of spaces exceeds maxNumSpaces, recalculate it\n spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n }\n\n if (!isNullOrUndef(precision)) {\n // If the user specified a precision, round to that number of decimal places\n factor = Math.pow(10, precision);\n spacing = Math.ceil(spacing * factor) / factor;\n }\n\n if (bounds === 'ticks') {\n niceMin = Math.floor(rmin / spacing) * spacing;\n niceMax = Math.ceil(rmax / spacing) * spacing;\n } else {\n niceMin = rmin;\n niceMax = rmax;\n }\n\n if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\n // Case 1: If min, max and stepSize are set and they make an evenly spaced scale use it.\n // spacing = step;\n // numSpaces = (max - min) / spacing;\n // Note that we round here to handle the case where almostWhole translated an FP error\n numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks));\n spacing = (max - min) / numSpaces;\n niceMin = min;\n niceMax = max;\n } else if (countDefined) {\n // Cases 2 & 3, we have a count specified. Handle optional user defined edges to the range.\n // Sometimes these are no-ops, but it makes the code a lot clearer\n // and when a user defined range is specified, we want the correct ticks\n niceMin = minDefined ? min : niceMin;\n niceMax = maxDefined ? max : niceMax;\n numSpaces = count - 1;\n spacing = (niceMax - niceMin) / numSpaces;\n } else {\n // Case 4\n numSpaces = (niceMax - niceMin) / spacing;\n\n // If very close to our rounded value, use it.\n if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n numSpaces = Math.round(numSpaces);\n } else {\n numSpaces = Math.ceil(numSpaces);\n }\n }\n\n // The spacing will have changed in cases 1, 2, and 3 so the factor cannot be computed\n // until this point\n const decimalPlaces = Math.max(\n _decimalPlaces(spacing),\n _decimalPlaces(niceMin)\n );\n factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision);\n niceMin = Math.round(niceMin * factor) / factor;\n niceMax = Math.round(niceMax * factor) / factor;\n\n let j = 0;\n if (minDefined) {\n if (includeBounds && niceMin !== min) {\n ticks.push({value: min});\n\n if (niceMin < min) {\n j++; // Skip niceMin\n }\n // If the next nice tick is close to min, skip it\n if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) {\n j++;\n }\n } else if (niceMin < min) {\n j++;\n }\n }\n\n for (; j < numSpaces; ++j) {\n const tickValue = Math.round((niceMin + j * spacing) * factor) / factor;\n if (maxDefined && tickValue > max) {\n break;\n }\n ticks.push({value: tickValue});\n }\n\n if (maxDefined && includeBounds && niceMax !== max) {\n // If the previous tick is too close to max, replace it with max, else add max\n if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) {\n ticks[ticks.length - 1].value = max;\n } else {\n ticks.push({value: max});\n }\n } else if (!maxDefined || niceMax === max) {\n ticks.push({value: niceMax});\n }\n\n return ticks;\n}\n\nfunction relativeLabelSize(value, minSpacing, {horizontal, minRotation}) {\n const rad = toRadians(minRotation);\n const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001;\n const length = 0.75 * minSpacing * ('' + value).length;\n return Math.min(minSpacing / ratio, length);\n}\n\nexport default class LinearScaleBase extends Scale {\n\n constructor(cfg) {\n super(cfg);\n\n /** @type {number} */\n this.start = undefined;\n /** @type {number} */\n this.end = undefined;\n /** @type {number} */\n this._startValue = undefined;\n /** @type {number} */\n this._endValue = undefined;\n this._valueRange = 0;\n }\n\n parse(raw, index) { // eslint-disable-line no-unused-vars\n if (isNullOrUndef(raw)) {\n return null;\n }\n if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n return null;\n }\n\n return +raw;\n }\n\n handleTickRangeOptions() {\n const {beginAtZero} = this.options;\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this;\n\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n\n if (beginAtZero) {\n const minSign = sign(min);\n const maxSign = sign(max);\n\n if (minSign < 0 && maxSign < 0) {\n setMax(0);\n } else if (minSign > 0 && maxSign > 0) {\n setMin(0);\n }\n }\n\n if (min === max) {\n let offset = max === 0 ? 1 : Math.abs(max * 0.05);\n\n setMax(max + offset);\n\n if (!beginAtZero) {\n setMin(min - offset);\n }\n }\n this.min = min;\n this.max = max;\n }\n\n getTickLimit() {\n const tickOpts = this.options.ticks;\n // eslint-disable-next-line prefer-const\n let {maxTicksLimit, stepSize} = tickOpts;\n let maxTicks;\n\n if (stepSize) {\n maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1;\n if (maxTicks > 1000) {\n console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`);\n maxTicks = 1000;\n }\n } else {\n maxTicks = this.computeTickLimit();\n maxTicksLimit = maxTicksLimit || 11;\n }\n\n if (maxTicksLimit) {\n maxTicks = Math.min(maxTicksLimit, maxTicks);\n }\n\n return maxTicks;\n }\n\n /**\n\t * @protected\n\t */\n computeTickLimit() {\n return Number.POSITIVE_INFINITY;\n }\n\n buildTicks() {\n const opts = this.options;\n const tickOpts = opts.ticks;\n\n // Figure out what the max number of ticks we can support it is based on the size of\n // the axis area. For now, we say that the minimum tick spacing in pixels must be 40\n // We also limit the maximum number of ticks to 11 which gives a nice 10 squares on\n // the graph. Make sure we always have at least 2 ticks\n let maxTicks = this.getTickLimit();\n maxTicks = Math.max(2, maxTicks);\n\n const numericGeneratorOptions = {\n maxTicks,\n bounds: opts.bounds,\n min: opts.min,\n max: opts.max,\n precision: tickOpts.precision,\n step: tickOpts.stepSize,\n count: tickOpts.count,\n maxDigits: this._maxDigits(),\n horizontal: this.isHorizontal(),\n minRotation: tickOpts.minRotation || 0,\n includeBounds: tickOpts.includeBounds !== false\n };\n const dataRange = this._range || this;\n const ticks = generateTicks(numericGeneratorOptions, dataRange);\n\n // At this point, we need to update our max and min given the tick values,\n // since we probably have expanded the range of the scale\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n\n if (opts.reverse) {\n ticks.reverse();\n\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n\n return ticks;\n }\n\n /**\n\t * @protected\n\t */\n configure() {\n const ticks = this.ticks;\n let start = this.min;\n let end = this.max;\n\n super.configure();\n\n if (this.options.offset && ticks.length) {\n const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n start -= offset;\n end += offset;\n }\n this._startValue = start;\n this._endValue = end;\n this._valueRange = end - start;\n }\n\n getLabelForValue(value) {\n return formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n}\n","import {isFinite} from '../helpers/helpers.core.js';\nimport LinearScaleBase from './scale.linearbase.js';\nimport Ticks from '../core/core.ticks.js';\nimport {toRadians} from '../helpers/index.js';\n\nexport default class LinearScale extends LinearScaleBase {\n\n static id = 'linear';\n\n /**\n * @type {any}\n */\n static defaults = {\n ticks: {\n callback: Ticks.formatters.numeric\n }\n };\n\n\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n\n this.min = isFinite(min) ? min : 0;\n this.max = isFinite(max) ? max : 1;\n\n // Common base implementation to handle min, max, beginAtZero\n this.handleTickRangeOptions();\n }\n\n /**\n\t * Returns the maximum number of ticks based on the scale dimension\n\t * @protected\n \t */\n computeTickLimit() {\n const horizontal = this.isHorizontal();\n const length = horizontal ? this.width : this.height;\n const minRotation = toRadians(this.options.ticks.minRotation);\n const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n const tickFont = this._resolveTickFontOptions(0);\n return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n }\n\n // Utils\n getPixelForValue(value) {\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n\n getValueForPixel(pixel) {\n return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n }\n}\n","import {finiteOrDefault, isFinite} from '../helpers/helpers.core.js';\nimport {formatNumber} from '../helpers/helpers.intl.js';\nimport {_setMinAndMaxByKey, log10} from '../helpers/helpers.math.js';\nimport Scale from '../core/core.scale.js';\nimport LinearScaleBase from './scale.linearbase.js';\nimport Ticks from '../core/core.ticks.js';\n\nconst log10Floor = v => Math.floor(log10(v));\nconst changeExponent = (v, m) => Math.pow(10, log10Floor(v) + m);\n\nfunction isMajor(tickVal) {\n const remain = tickVal / (Math.pow(10, log10Floor(tickVal)));\n return remain === 1;\n}\n\nfunction steps(min, max, rangeExp) {\n const rangeStep = Math.pow(10, rangeExp);\n const start = Math.floor(min / rangeStep);\n const end = Math.ceil(max / rangeStep);\n return end - start;\n}\n\nfunction startExp(min, max) {\n const range = max - min;\n let rangeExp = log10Floor(range);\n while (steps(min, max, rangeExp) > 10) {\n rangeExp++;\n }\n while (steps(min, max, rangeExp) < 10) {\n rangeExp--;\n }\n return Math.min(rangeExp, log10Floor(min));\n}\n\n\n/**\n * Generate a set of logarithmic ticks\n * @param generationOptions the options used to generate the ticks\n * @param dataRange the range of the data\n * @returns {object[]} array of tick objects\n */\nfunction generateTicks(generationOptions, {min, max}) {\n min = finiteOrDefault(generationOptions.min, min);\n const ticks = [];\n const minExp = log10Floor(min);\n let exp = startExp(min, max);\n let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n const stepSize = Math.pow(10, exp);\n const base = minExp > exp ? Math.pow(10, minExp) : 0;\n const start = Math.round((min - base) * precision) / precision;\n const offset = Math.floor((min - base) / stepSize / 10) * stepSize * 10;\n let significand = Math.floor((start - offset) / Math.pow(10, exp));\n let value = finiteOrDefault(generationOptions.min, Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision);\n while (value < max) {\n ticks.push({value, major: isMajor(value), significand});\n if (significand >= 10) {\n significand = significand < 15 ? 15 : 20;\n } else {\n significand++;\n }\n if (significand >= 20) {\n exp++;\n significand = 2;\n precision = exp >= 0 ? 1 : precision;\n }\n value = Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision;\n }\n const lastTick = finiteOrDefault(generationOptions.max, value);\n ticks.push({value: lastTick, major: isMajor(lastTick), significand});\n\n return ticks;\n}\n\nexport default class LogarithmicScale extends Scale {\n\n static id = 'logarithmic';\n\n /**\n * @type {any}\n */\n static defaults = {\n ticks: {\n callback: Ticks.formatters.logarithmic,\n major: {\n enabled: true\n }\n }\n };\n\n\n constructor(cfg) {\n super(cfg);\n\n /** @type {number} */\n this.start = undefined;\n /** @type {number} */\n this.end = undefined;\n /** @type {number} */\n this._startValue = undefined;\n this._valueRange = 0;\n }\n\n parse(raw, index) {\n const value = LinearScaleBase.prototype.parse.apply(this, [raw, index]);\n if (value === 0) {\n this._zero = true;\n return undefined;\n }\n return isFinite(value) && value > 0 ? value : null;\n }\n\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n\n this.min = isFinite(min) ? Math.max(0, min) : null;\n this.max = isFinite(max) ? Math.max(0, max) : null;\n\n if (this.options.beginAtZero) {\n this._zero = true;\n }\n\n // if data has `0` in it or `beginAtZero` is true, min (non zero) value is at bottom\n // of scale, and it does not equal suggestedMin, lower the min bound by one exp.\n if (this._zero && this.min !== this._suggestedMin && !isFinite(this._userMin)) {\n this.min = min === changeExponent(this.min, 0) ? changeExponent(this.min, -1) : changeExponent(this.min, 0);\n }\n\n this.handleTickRangeOptions();\n }\n\n handleTickRangeOptions() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let min = this.min;\n let max = this.max;\n\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n\n if (min === max) {\n if (min <= 0) { // includes null\n setMin(1);\n setMax(10);\n } else {\n setMin(changeExponent(min, -1));\n setMax(changeExponent(max, +1));\n }\n }\n if (min <= 0) {\n setMin(changeExponent(max, -1));\n }\n if (max <= 0) {\n\n setMax(changeExponent(min, +1));\n }\n\n this.min = min;\n this.max = max;\n }\n\n buildTicks() {\n const opts = this.options;\n\n const generationOptions = {\n min: this._userMin,\n max: this._userMax\n };\n const ticks = generateTicks(generationOptions, this);\n\n // At this point, we need to update our max and min given the tick values,\n // since we probably have expanded the range of the scale\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n\n if (opts.reverse) {\n ticks.reverse();\n\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n\n return ticks;\n }\n\n /**\n\t * @param {number} value\n\t * @return {string}\n\t */\n getLabelForValue(value) {\n return value === undefined\n ? '0'\n : formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n\n /**\n\t * @protected\n\t */\n configure() {\n const start = this.min;\n\n super.configure();\n\n this._startValue = log10(start);\n this._valueRange = log10(this.max) - log10(start);\n }\n\n getPixelForValue(value) {\n if (value === undefined || value === 0) {\n value = this.min;\n }\n if (value === null || isNaN(value)) {\n return NaN;\n }\n return this.getPixelForDecimal(value === this.min\n ? 0\n : (log10(value) - this._startValue) / this._valueRange);\n }\n\n getValueForPixel(pixel) {\n const decimal = this.getDecimalForPixel(pixel);\n return Math.pow(10, this._startValue + decimal * this._valueRange);\n }\n}\n","import defaults from '../core/core.defaults.js';\nimport {_longestText, addRoundedRectPath, renderText, _isPointInArea} from '../helpers/helpers.canvas.js';\nimport {HALF_PI, TAU, toDegrees, toRadians, _normalizeAngle, PI} from '../helpers/helpers.math.js';\nimport LinearScaleBase from './scale.linearbase.js';\nimport Ticks from '../core/core.ticks.js';\nimport {valueOrDefault, isArray, isFinite, callback as callCallback, isNullOrUndef} from '../helpers/helpers.core.js';\nimport {createContext, toFont, toPadding, toTRBLCorners} from '../helpers/helpers.options.js';\n\nfunction getTickBackdropHeight(opts) {\n const tickOpts = opts.ticks;\n\n if (tickOpts.display && opts.display) {\n const padding = toPadding(tickOpts.backdropPadding);\n return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height;\n }\n return 0;\n}\n\nfunction measureLabelSize(ctx, font, label) {\n label = isArray(label) ? label : [label];\n return {\n w: _longestText(ctx, font.string, label),\n h: label.length * font.lineHeight\n };\n}\n\nfunction determineLimits(angle, pos, size, min, max) {\n if (angle === min || angle === max) {\n return {\n start: pos - (size / 2),\n end: pos + (size / 2)\n };\n } else if (angle < min || angle > max) {\n return {\n start: pos - size,\n end: pos\n };\n }\n\n return {\n start: pos,\n end: pos + size\n };\n}\n\n/**\n * Helper function to fit a radial linear scale with point labels\n */\nfunction fitWithPointLabels(scale) {\n\n // Right, this is really confusing and there is a lot of maths going on here\n // The gist of the problem is here: https://gist.github.com/nnnick/696cc9c55f4b0beb8fe9\n //\n // Reaction: https://dl.dropboxusercontent.com/u/34601363/toomuchscience.gif\n //\n // Solution:\n //\n // We assume the radius of the polygon is half the size of the canvas at first\n // at each index we check if the text overlaps.\n //\n // Where it does, we store that angle and that index.\n //\n // After finding the largest index and angle we calculate how much we need to remove\n // from the shape radius to move the point inwards by that x.\n //\n // We average the left and right distances to get the maximum shape radius that can fit in the box\n // along with labels.\n //\n // Once we have that, we can find the centre point for the chart, by taking the x text protrusion\n // on each side, removing that from the size, halving it and adding the left x protrusion width.\n //\n // This will mean we have a shape fitted to the canvas, as large as it can be with the labels\n // and position it in the most space efficient manner\n //\n // https://dl.dropboxusercontent.com/u/34601363/yeahscience.gif\n\n // Get maximum radius of the polygon. Either half the height (minus the text width) or half the width.\n // Use this to calculate the offset + change. - Make sure L/R protrusion is at least 0 to stop issues with centre points\n const orig = {\n l: scale.left + scale._padding.left,\n r: scale.right - scale._padding.right,\n t: scale.top + scale._padding.top,\n b: scale.bottom - scale._padding.bottom\n };\n const limits = Object.assign({}, orig);\n const labelSizes = [];\n const padding = [];\n const valueCount = scale._pointLabels.length;\n const pointLabelOpts = scale.options.pointLabels;\n const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0;\n\n for (let i = 0; i < valueCount; i++) {\n const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i));\n padding[i] = opts.padding;\n const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle);\n const plFont = toFont(opts.font);\n const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]);\n labelSizes[i] = textSize;\n\n const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);\n const angle = Math.round(toDegrees(angleRadians));\n const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n updateLimits(limits, orig, angleRadians, hLimits, vLimits);\n }\n\n scale.setCenterPoint(\n orig.l - limits.l,\n limits.r - orig.r,\n orig.t - limits.t,\n limits.b - orig.b\n );\n\n // Now that text size is determined, compute the full positions\n scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding);\n}\n\nfunction updateLimits(limits, orig, angle, hLimits, vLimits) {\n const sin = Math.abs(Math.sin(angle));\n const cos = Math.abs(Math.cos(angle));\n let x = 0;\n let y = 0;\n if (hLimits.start < orig.l) {\n x = (orig.l - hLimits.start) / sin;\n limits.l = Math.min(limits.l, orig.l - x);\n } else if (hLimits.end > orig.r) {\n x = (hLimits.end - orig.r) / sin;\n limits.r = Math.max(limits.r, orig.r + x);\n }\n if (vLimits.start < orig.t) {\n y = (orig.t - vLimits.start) / cos;\n limits.t = Math.min(limits.t, orig.t - y);\n } else if (vLimits.end > orig.b) {\n y = (vLimits.end - orig.b) / cos;\n limits.b = Math.max(limits.b, orig.b + y);\n }\n}\n\nfunction createPointLabelItem(scale, index, itemOpts) {\n const outerDistance = scale.drawingArea;\n const {extra, additionalAngle, padding, size} = itemOpts;\n const pointLabelPosition = scale.getPointPosition(index, outerDistance + extra + padding, additionalAngle);\n const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n const y = yForAngle(pointLabelPosition.y, size.h, angle);\n const textAlign = getTextAlignForAngle(angle);\n const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n return {\n // if to draw or overlapped\n visible: true,\n\n // Text position\n x: pointLabelPosition.x,\n y,\n\n // Text rendering data\n textAlign,\n\n // Bounding box\n left,\n top: y,\n right: left + size.w,\n bottom: y + size.h\n };\n}\n\nfunction isNotOverlapped(item, area) {\n if (!area) {\n return true;\n }\n const {left, top, right, bottom} = item;\n const apexesInArea = _isPointInArea({x: left, y: top}, area) || _isPointInArea({x: left, y: bottom}, area) ||\n _isPointInArea({x: right, y: top}, area) || _isPointInArea({x: right, y: bottom}, area);\n return !apexesInArea;\n}\n\nfunction buildPointLabelItems(scale, labelSizes, padding) {\n const items = [];\n const valueCount = scale._pointLabels.length;\n const opts = scale.options;\n const {centerPointLabels, display} = opts.pointLabels;\n const itemOpts = {\n extra: getTickBackdropHeight(opts) / 2,\n additionalAngle: centerPointLabels ? PI / valueCount : 0\n };\n let area;\n\n for (let i = 0; i < valueCount; i++) {\n itemOpts.padding = padding[i];\n itemOpts.size = labelSizes[i];\n\n const item = createPointLabelItem(scale, i, itemOpts);\n items.push(item);\n if (display === 'auto') {\n item.visible = isNotOverlapped(item, area);\n if (item.visible) {\n area = item;\n }\n }\n }\n return items;\n}\n\nfunction getTextAlignForAngle(angle) {\n if (angle === 0 || angle === 180) {\n return 'center';\n } else if (angle < 180) {\n return 'left';\n }\n\n return 'right';\n}\n\nfunction leftForTextAlign(x, w, align) {\n if (align === 'right') {\n x -= w;\n } else if (align === 'center') {\n x -= (w / 2);\n }\n return x;\n}\n\nfunction yForAngle(y, h, angle) {\n if (angle === 90 || angle === 270) {\n y -= (h / 2);\n } else if (angle > 270 || angle < 90) {\n y -= h;\n }\n return y;\n}\n\nfunction drawPointLabelBox(ctx, opts, item) {\n const {left, top, right, bottom} = item;\n const {backdropColor} = opts;\n\n if (!isNullOrUndef(backdropColor)) {\n const borderRadius = toTRBLCorners(opts.borderRadius);\n const padding = toPadding(opts.backdropPadding);\n ctx.fillStyle = backdropColor;\n\n const backdropLeft = left - padding.left;\n const backdropTop = top - padding.top;\n const backdropWidth = right - left + padding.width;\n const backdropHeight = bottom - top + padding.height;\n\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: backdropLeft,\n y: backdropTop,\n w: backdropWidth,\n h: backdropHeight,\n radius: borderRadius,\n });\n ctx.fill();\n } else {\n ctx.fillRect(backdropLeft, backdropTop, backdropWidth, backdropHeight);\n }\n }\n}\n\nfunction drawPointLabels(scale, labelCount) {\n const {ctx, options: {pointLabels}} = scale;\n\n for (let i = labelCount - 1; i >= 0; i--) {\n const item = scale._pointLabelItems[i];\n if (!item.visible) {\n // overlapping\n continue;\n }\n const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n drawPointLabelBox(ctx, optsAtIndex, item);\n const plFont = toFont(optsAtIndex.font);\n const {x, y, textAlign} = item;\n\n renderText(\n ctx,\n scale._pointLabels[i],\n x,\n y + (plFont.lineHeight / 2),\n plFont,\n {\n color: optsAtIndex.color,\n textAlign: textAlign,\n textBaseline: 'middle'\n }\n );\n }\n}\n\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n const {ctx} = scale;\n if (circular) {\n // Draw circular arcs between the points\n ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n } else {\n // Draw straight lines connecting each index\n let pointPosition = scale.getPointPosition(0, radius);\n ctx.moveTo(pointPosition.x, pointPosition.y);\n\n for (let i = 1; i < labelCount; i++) {\n pointPosition = scale.getPointPosition(i, radius);\n ctx.lineTo(pointPosition.x, pointPosition.y);\n }\n }\n}\n\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount, borderOpts) {\n const ctx = scale.ctx;\n const circular = gridLineOpts.circular;\n\n const {color, lineWidth} = gridLineOpts;\n\n if ((!circular && !labelCount) || !color || !lineWidth || radius < 0) {\n return;\n }\n\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash(borderOpts.dash);\n ctx.lineDashOffset = borderOpts.dashOffset;\n\n ctx.beginPath();\n pathRadiusLine(scale, radius, circular, labelCount);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n}\n\nfunction createPointLabelContext(parent, index, label) {\n return createContext(parent, {\n label,\n index,\n type: 'pointLabel'\n });\n}\n\nexport default class RadialLinearScale extends LinearScaleBase {\n\n static id = 'radialLinear';\n\n /**\n * @type {any}\n */\n static defaults = {\n display: true,\n\n // Boolean - Whether to animate scaling the chart from the centre\n animate: true,\n position: 'chartArea',\n\n angleLines: {\n display: true,\n lineWidth: 1,\n borderDash: [],\n borderDashOffset: 0.0\n },\n\n grid: {\n circular: false\n },\n\n startAngle: 0,\n\n // label settings\n ticks: {\n // Boolean - Show a backdrop to the scale label\n showLabelBackdrop: true,\n\n callback: Ticks.formatters.numeric\n },\n\n pointLabels: {\n backdropColor: undefined,\n\n // Number - The backdrop padding above & below the label in pixels\n backdropPadding: 2,\n\n // Boolean - if true, show point labels\n display: true,\n\n // Number - Point label font size in pixels\n font: {\n size: 10\n },\n\n // Function - Used to convert point labels\n callback(label) {\n return label;\n },\n\n // Number - Additionl padding between scale and pointLabel\n padding: 5,\n\n // Boolean - if true, center point labels to slices in polar chart\n centerPointLabels: false\n }\n };\n\n static defaultRoutes = {\n 'angleLines.color': 'borderColor',\n 'pointLabels.color': 'color',\n 'ticks.color': 'color'\n };\n\n static descriptors = {\n angleLines: {\n _fallback: 'grid'\n }\n };\n\n constructor(cfg) {\n super(cfg);\n\n /** @type {number} */\n this.xCenter = undefined;\n /** @type {number} */\n this.yCenter = undefined;\n /** @type {number} */\n this.drawingArea = undefined;\n /** @type {string[]} */\n this._pointLabels = [];\n this._pointLabelItems = [];\n }\n\n setDimensions() {\n // Set the unconstrained dimension before label rotation\n const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2);\n const w = this.width = this.maxWidth - padding.width;\n const h = this.height = this.maxHeight - padding.height;\n this.xCenter = Math.floor(this.left + w / 2 + padding.left);\n this.yCenter = Math.floor(this.top + h / 2 + padding.top);\n this.drawingArea = Math.floor(Math.min(w, h) / 2);\n }\n\n determineDataLimits() {\n const {min, max} = this.getMinMax(false);\n\n this.min = isFinite(min) && !isNaN(min) ? min : 0;\n this.max = isFinite(max) && !isNaN(max) ? max : 0;\n\n // Common base implementation to handle min, max, beginAtZero\n this.handleTickRangeOptions();\n }\n\n /**\n\t * Returns the maximum number of ticks based on the scale dimension\n\t * @protected\n\t */\n computeTickLimit() {\n return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n }\n\n generateTickLabels(ticks) {\n LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n\n // Point labels\n this._pointLabels = this.getLabels()\n .map((value, index) => {\n const label = callCallback(this.options.pointLabels.callback, [value, index], this);\n return label || label === 0 ? label : '';\n })\n .filter((v, i) => this.chart.getDataVisibility(i));\n }\n\n fit() {\n const opts = this.options;\n\n if (opts.display && opts.pointLabels.display) {\n fitWithPointLabels(this);\n } else {\n this.setCenterPoint(0, 0, 0, 0);\n }\n }\n\n setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n this.xCenter += Math.floor((leftMovement - rightMovement) / 2);\n this.yCenter += Math.floor((topMovement - bottomMovement) / 2);\n this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement));\n }\n\n getIndexAngle(index) {\n const angleMultiplier = TAU / (this._pointLabels.length || 1);\n const startAngle = this.options.startAngle || 0;\n\n return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n }\n\n getDistanceFromCenterForValue(value) {\n if (isNullOrUndef(value)) {\n return NaN;\n }\n\n // Take into account half font size + the yPadding of the top value\n const scalingFactor = this.drawingArea / (this.max - this.min);\n if (this.options.reverse) {\n return (this.max - value) * scalingFactor;\n }\n return (value - this.min) * scalingFactor;\n }\n\n getValueForDistanceFromCenter(distance) {\n if (isNullOrUndef(distance)) {\n return NaN;\n }\n\n const scaledDistance = distance / (this.drawingArea / (this.max - this.min));\n return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance;\n }\n\n getPointLabelContext(index) {\n const pointLabels = this._pointLabels || [];\n\n if (index >= 0 && index < pointLabels.length) {\n const pointLabel = pointLabels[index];\n return createPointLabelContext(this.getContext(), index, pointLabel);\n }\n }\n\n getPointPosition(index, distanceFromCenter, additionalAngle = 0) {\n const angle = this.getIndexAngle(index) - HALF_PI + additionalAngle;\n return {\n x: Math.cos(angle) * distanceFromCenter + this.xCenter,\n y: Math.sin(angle) * distanceFromCenter + this.yCenter,\n angle\n };\n }\n\n getPointPositionForValue(index, value) {\n return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n }\n\n getBasePosition(index) {\n return this.getPointPositionForValue(index || 0, this.getBaseValue());\n }\n\n getPointLabelPosition(index) {\n const {left, top, right, bottom} = this._pointLabelItems[index];\n return {\n left,\n top,\n right,\n bottom,\n };\n }\n\n /**\n\t * @protected\n\t */\n drawBackground() {\n const {backgroundColor, grid: {circular}} = this.options;\n if (backgroundColor) {\n const ctx = this.ctx;\n ctx.save();\n ctx.beginPath();\n pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length);\n ctx.closePath();\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n }\n\n /**\n\t * @protected\n\t */\n drawGrid() {\n const ctx = this.ctx;\n const opts = this.options;\n const {angleLines, grid, border} = opts;\n const labelCount = this._pointLabels.length;\n\n let i, offset, position;\n\n if (opts.pointLabels.display) {\n drawPointLabels(this, labelCount);\n }\n\n if (grid.display) {\n this.ticks.forEach((tick, index) => {\n if (index !== 0 || (index === 0 && this.min < 0)) {\n offset = this.getDistanceFromCenterForValue(tick.value);\n const context = this.getContext(index);\n const optsAtIndex = grid.setContext(context);\n const optsAtIndexBorder = border.setContext(context);\n\n drawRadiusLine(this, optsAtIndex, offset, labelCount, optsAtIndexBorder);\n }\n });\n }\n\n if (angleLines.display) {\n ctx.save();\n\n for (i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n const {color, lineWidth} = optsAtIndex;\n\n if (!lineWidth || !color) {\n continue;\n }\n\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n\n ctx.setLineDash(optsAtIndex.borderDash);\n ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n\n offset = this.getDistanceFromCenterForValue(opts.reverse ? this.min : this.max);\n position = this.getPointPosition(i, offset);\n ctx.beginPath();\n ctx.moveTo(this.xCenter, this.yCenter);\n ctx.lineTo(position.x, position.y);\n ctx.stroke();\n }\n\n ctx.restore();\n }\n }\n\n /**\n\t * @protected\n\t */\n drawBorder() {}\n\n /**\n\t * @protected\n\t */\n drawLabels() {\n const ctx = this.ctx;\n const opts = this.options;\n const tickOpts = opts.ticks;\n\n if (!tickOpts.display) {\n return;\n }\n\n const startAngle = this.getIndexAngle(0);\n let offset, width;\n\n ctx.save();\n ctx.translate(this.xCenter, this.yCenter);\n ctx.rotate(startAngle);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n\n this.ticks.forEach((tick, index) => {\n if ((index === 0 && this.min >= 0) && !opts.reverse) {\n return;\n }\n\n const optsAtIndex = tickOpts.setContext(this.getContext(index));\n const tickFont = toFont(optsAtIndex.font);\n offset = this.getDistanceFromCenterForValue(this.ticks[index].value);\n\n if (optsAtIndex.showLabelBackdrop) {\n ctx.font = tickFont.string;\n width = ctx.measureText(tick.label).width;\n ctx.fillStyle = optsAtIndex.backdropColor;\n\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillRect(\n -width / 2 - padding.left,\n -offset - tickFont.size / 2 - padding.top,\n width + padding.width,\n tickFont.size + padding.height\n );\n }\n\n renderText(ctx, tick.label, 0, -offset, tickFont, {\n color: optsAtIndex.color,\n strokeColor: optsAtIndex.textStrokeColor,\n strokeWidth: optsAtIndex.textStrokeWidth,\n });\n });\n\n ctx.restore();\n }\n\n /**\n\t * @protected\n\t */\n drawTitle() {}\n}\n","import adapters from '../core/core.adapters.js';\nimport {callback as call, isFinite, isNullOrUndef, mergeIf, valueOrDefault} from '../helpers/helpers.core.js';\nimport {toRadians, isNumber, _limitValue} from '../helpers/helpers.math.js';\nimport Scale from '../core/core.scale.js';\nimport {_arrayUnique, _filterBetween, _lookup} from '../helpers/helpers.collection.js';\n\n/**\n * @typedef { import('../core/core.adapters.js').TimeUnit } Unit\n * @typedef {{common: boolean, size: number, steps?: number}} Interval\n * @typedef { import('../core/core.adapters.js').DateAdapter } DateAdapter\n */\n\n/**\n * @type {Object}\n */\nconst INTERVALS = {\n millisecond: {common: true, size: 1, steps: 1000},\n second: {common: true, size: 1000, steps: 60},\n minute: {common: true, size: 60000, steps: 60},\n hour: {common: true, size: 3600000, steps: 24},\n day: {common: true, size: 86400000, steps: 30},\n week: {common: false, size: 604800000, steps: 4},\n month: {common: true, size: 2.628e9, steps: 12},\n quarter: {common: false, size: 7.884e9, steps: 4},\n year: {common: true, size: 3.154e10}\n};\n\n/**\n * @type {Unit[]}\n */\nconst UNITS = /** @type Unit[] */ /* #__PURE__ */ (Object.keys(INTERVALS));\n\n/**\n * @param {number} a\n * @param {number} b\n */\nfunction sorter(a, b) {\n return a - b;\n}\n\n/**\n * @param {TimeScale} scale\n * @param {*} input\n * @return {number}\n */\nfunction parse(scale, input) {\n if (isNullOrUndef(input)) {\n return null;\n }\n\n const adapter = scale._adapter;\n const {parser, round, isoWeekday} = scale._parseOpts;\n let value = input;\n\n if (typeof parser === 'function') {\n value = parser(value);\n }\n\n // Only parse if it's not a timestamp already\n if (!isFinite(value)) {\n value = typeof parser === 'string'\n ? adapter.parse(value, /** @type {Unit} */ (parser))\n : adapter.parse(value);\n }\n\n if (value === null) {\n return null;\n }\n\n if (round) {\n value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true)\n ? adapter.startOf(value, 'isoWeek', isoWeekday)\n : adapter.startOf(value, round);\n }\n\n return +value;\n}\n\n/**\n * Figures out what unit results in an appropriate number of auto-generated ticks\n * @param {Unit} minUnit\n * @param {number} min\n * @param {number} max\n * @param {number} capacity\n * @return {object}\n */\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n const ilen = UNITS.length;\n\n for (let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n const interval = INTERVALS[UNITS[i]];\n const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER;\n\n if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n return UNITS[i];\n }\n }\n\n return UNITS[ilen - 1];\n}\n\n/**\n * Figures out what unit to format a set of ticks with\n * @param {TimeScale} scale\n * @param {number} numTicks\n * @param {Unit} minUnit\n * @param {number} min\n * @param {number} max\n * @return {Unit}\n */\nfunction determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n for (let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) {\n const unit = UNITS[i];\n if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n return unit;\n }\n }\n\n return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\n\n/**\n * @param {Unit} unit\n * @return {object}\n */\nfunction determineMajorUnit(unit) {\n for (let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n if (INTERVALS[UNITS[i]].common) {\n return UNITS[i];\n }\n }\n}\n\n/**\n * @param {object} ticks\n * @param {number} time\n * @param {number[]} [timestamps] - if defined, snap to these timestamps\n */\nfunction addTick(ticks, time, timestamps) {\n if (!timestamps) {\n ticks[time] = true;\n } else if (timestamps.length) {\n const {lo, hi} = _lookup(timestamps, time);\n const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n ticks[timestamp] = true;\n }\n}\n\n/**\n * @param {TimeScale} scale\n * @param {object[]} ticks\n * @param {object} map\n * @param {Unit} majorUnit\n * @return {object[]}\n */\nfunction setMajorTicks(scale, ticks, map, majorUnit) {\n const adapter = scale._adapter;\n const first = +adapter.startOf(ticks[0].value, majorUnit);\n const last = ticks[ticks.length - 1].value;\n let major, index;\n\n for (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) {\n index = map[major];\n if (index >= 0) {\n ticks[index].major = true;\n }\n }\n return ticks;\n}\n\n/**\n * @param {TimeScale} scale\n * @param {number[]} values\n * @param {Unit|undefined} [majorUnit]\n * @return {object[]}\n */\nfunction ticksFromTimestamps(scale, values, majorUnit) {\n const ticks = [];\n /** @type {Object} */\n const map = {};\n const ilen = values.length;\n let i, value;\n\n for (i = 0; i < ilen; ++i) {\n value = values[i];\n map[value] = i;\n\n ticks.push({\n value,\n major: false\n });\n }\n\n // We set the major ticks separately from the above loop because calling startOf for every tick\n // is expensive when there is a large number of ticks\n return (ilen === 0 || !majorUnit) ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\n\nexport default class TimeScale extends Scale {\n\n static id = 'time';\n\n /**\n * @type {any}\n */\n static defaults = {\n /**\n * Scale boundary strategy (bypassed by min/max time options)\n * - `data`: make sure data are fully visible, ticks outside are removed\n * - `ticks`: make sure ticks are fully visible, data outside are truncated\n * @see https://github.com/chartjs/Chart.js/pull/4556\n * @since 2.7.0\n */\n bounds: 'data',\n\n adapters: {},\n time: {\n parser: false, // false == a pattern string from or a custom callback that converts its argument to a timestamp\n unit: false, // false == automatic or override with week, month, year, etc.\n round: false, // none, or override with week, month, year, etc.\n isoWeekday: false, // override week start day\n minUnit: 'millisecond',\n displayFormats: {}\n },\n ticks: {\n /**\n * Ticks generation input values:\n * - 'auto': generates \"optimal\" ticks based on scale size and time options.\n * - 'data': generates ticks from data (including labels from data {t|x|y} objects).\n * - 'labels': generates ticks from user given `data.labels` values ONLY.\n * @see https://github.com/chartjs/Chart.js/pull/4507\n * @since 2.7.0\n */\n source: 'auto',\n\n callback: false,\n\n major: {\n enabled: false\n }\n }\n };\n\n /**\n\t * @param {object} props\n\t */\n constructor(props) {\n super(props);\n\n /** @type {{data: number[], labels: number[], all: number[]}} */\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n\n /** @type {Unit} */\n this._unit = 'day';\n /** @type {Unit=} */\n this._majorUnit = undefined;\n this._offsets = {};\n this._normalized = false;\n this._parseOpts = undefined;\n }\n\n init(scaleOpts, opts = {}) {\n const time = scaleOpts.time || (scaleOpts.time = {});\n /** @type {DateAdapter} */\n const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\n\n adapter.init(opts);\n\n // Backward compatibility: before introducing adapter, `displayFormats` was\n // supposed to contain *all* unit/string pairs but this can't be resolved\n // when loading the scale (adapters are loaded afterward), so let's populate\n // missing formats on update\n mergeIf(time.displayFormats, adapter.formats());\n\n this._parseOpts = {\n parser: time.parser,\n round: time.round,\n isoWeekday: time.isoWeekday\n };\n\n super.init(scaleOpts);\n\n this._normalized = opts.normalized;\n }\n\n /**\n\t * @param {*} raw\n\t * @param {number?} [index]\n\t * @return {number}\n\t */\n parse(raw, index) { // eslint-disable-line no-unused-vars\n if (raw === undefined) {\n return null;\n }\n return parse(this, raw);\n }\n\n beforeLayout() {\n super.beforeLayout();\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n }\n\n determineDataLimits() {\n const options = this.options;\n const adapter = this._adapter;\n const unit = options.time.unit || 'day';\n // eslint-disable-next-line prefer-const\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n\n /**\n\t\t * @param {object} bounds\n\t\t */\n function _applyBounds(bounds) {\n if (!minDefined && !isNaN(bounds.min)) {\n min = Math.min(min, bounds.min);\n }\n if (!maxDefined && !isNaN(bounds.max)) {\n max = Math.max(max, bounds.max);\n }\n }\n\n // If we have user provided `min` and `max` labels / data bounds can be ignored\n if (!minDefined || !maxDefined) {\n // Labels are always considered, when user did not force bounds\n _applyBounds(this._getLabelBounds());\n\n // If `bounds` is `'ticks'` and `ticks.source` is `'labels'`,\n // data bounds are ignored (and don't need to be determined)\n if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n _applyBounds(this.getMinMax(false));\n }\n }\n\n min = isFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n max = isFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n\n // Make sure that max is strictly higher than min (required by the timeseries lookup table)\n this.min = Math.min(min, max - 1);\n this.max = Math.max(min + 1, max);\n }\n\n /**\n\t * @private\n\t */\n _getLabelBounds() {\n const arr = this.getLabelTimestamps();\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n\n if (arr.length) {\n min = arr[0];\n max = arr[arr.length - 1];\n }\n return {min, max};\n }\n\n /**\n\t * @return {object[]}\n\t */\n buildTicks() {\n const options = this.options;\n const timeOpts = options.time;\n const tickOpts = options.ticks;\n const timestamps = tickOpts.source === 'labels' ? this.getLabelTimestamps() : this._generate();\n\n if (options.bounds === 'ticks' && timestamps.length) {\n this.min = this._userMin || timestamps[0];\n this.max = this._userMax || timestamps[timestamps.length - 1];\n }\n\n const min = this.min;\n const max = this.max;\n\n const ticks = _filterBetween(timestamps, min, max);\n\n // PRIVATE\n // determineUnitForFormatting relies on the number of ticks so we don't use it when\n // autoSkip is enabled because we don't yet know what the final number of ticks will be\n this._unit = timeOpts.unit || (tickOpts.autoSkip\n ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min))\n : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max));\n this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined\n : determineMajorUnit(this._unit);\n this.initOffsets(timestamps);\n\n if (options.reverse) {\n ticks.reverse();\n }\n\n return ticksFromTimestamps(this, ticks, this._majorUnit);\n }\n\n afterAutoSkip() {\n // Offsets for bar charts need to be handled with the auto skipped\n // ticks. Once ticks have been skipped, we re-compute the offsets.\n if (this.options.offsetAfterAutoskip) {\n this.initOffsets(this.ticks.map(tick => +tick.value));\n }\n }\n\n /**\n\t * Returns the start and end offsets from edges in the form of {start, end}\n\t * where each value is a relative width to the scale and ranges between 0 and 1.\n\t * They add extra margins on the both sides by scaling down the original scale.\n\t * Offsets are added when the `offset` option is true.\n\t * @param {number[]} timestamps\n\t * @protected\n\t */\n initOffsets(timestamps = []) {\n let start = 0;\n let end = 0;\n let first, last;\n\n if (this.options.offset && timestamps.length) {\n first = this.getDecimalForValue(timestamps[0]);\n if (timestamps.length === 1) {\n start = 1 - first;\n } else {\n start = (this.getDecimalForValue(timestamps[1]) - first) / 2;\n }\n last = this.getDecimalForValue(timestamps[timestamps.length - 1]);\n if (timestamps.length === 1) {\n end = last;\n } else {\n end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\n }\n }\n const limit = timestamps.length < 3 ? 0.5 : 0.25;\n start = _limitValue(start, 0, limit);\n end = _limitValue(end, 0, limit);\n\n this._offsets = {start, end, factor: 1 / (start + 1 + end)};\n }\n\n /**\n\t * Generates a maximum of `capacity` timestamps between min and max, rounded to the\n\t * `minor` unit using the given scale time `options`.\n\t * Important: this method can return ticks outside the min and max range, it's the\n\t * responsibility of the calling code to clamp values if needed.\n\t * @protected\n\t */\n _generate() {\n const adapter = this._adapter;\n const min = this.min;\n const max = this.max;\n const options = this.options;\n const timeOpts = options.time;\n // @ts-ignore\n const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min));\n const stepSize = valueOrDefault(options.ticks.stepSize, 1);\n const weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n const hasWeekday = isNumber(weekday) || weekday === true;\n const ticks = {};\n let first = min;\n let time, count;\n\n // For 'week' unit, handle the first day of week option\n if (hasWeekday) {\n first = +adapter.startOf(first, 'isoWeek', weekday);\n }\n\n // Align first ticks on unit\n first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\n\n // Prevent browser from freezing in case user options request millions of milliseconds\n if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);\n }\n\n const timestamps = options.ticks.source === 'data' && this.getDataTimestamps();\n for (time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++) {\n addTick(ticks, time, timestamps);\n }\n\n if (time === max || options.bounds === 'ticks' || count === 1) {\n addTick(ticks, time, timestamps);\n }\n\n // @ts-ignore\n return Object.keys(ticks).sort(sorter).map(x => +x);\n }\n\n /**\n\t * @param {number} value\n\t * @return {string}\n\t */\n getLabelForValue(value) {\n const adapter = this._adapter;\n const timeOpts = this.options.time;\n\n if (timeOpts.tooltipFormat) {\n return adapter.format(value, timeOpts.tooltipFormat);\n }\n return adapter.format(value, timeOpts.displayFormats.datetime);\n }\n\n /**\n\t * @param {number} value\n\t * @param {string|undefined} format\n\t * @return {string}\n\t */\n format(value, format) {\n const options = this.options;\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const fmt = format || formats[unit];\n return this._adapter.format(value, fmt);\n }\n\n /**\n\t * Function to format an individual tick mark\n\t * @param {number} time\n\t * @param {number} index\n\t * @param {object[]} ticks\n\t * @param {string|undefined} [format]\n\t * @return {string}\n\t * @private\n\t */\n _tickFormatFunction(time, index, ticks, format) {\n const options = this.options;\n const formatter = options.ticks.callback;\n\n if (formatter) {\n return call(formatter, [time, index, ticks], this);\n }\n\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const majorUnit = this._majorUnit;\n const minorFormat = unit && formats[unit];\n const majorFormat = majorUnit && formats[majorUnit];\n const tick = ticks[index];\n const major = majorUnit && majorFormat && tick && tick.major;\n\n return this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n }\n\n /**\n\t * @param {object[]} ticks\n\t */\n generateTickLabels(ticks) {\n let i, ilen, tick;\n\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n tick.label = this._tickFormatFunction(tick.value, i, ticks);\n }\n }\n\n /**\n\t * @param {number} value - Milliseconds since epoch (1 January 1970 00:00:00 UTC)\n\t * @return {number}\n\t */\n getDecimalForValue(value) {\n return value === null ? NaN : (value - this.min) / (this.max - this.min);\n }\n\n /**\n\t * @param {number} value - Milliseconds since epoch (1 January 1970 00:00:00 UTC)\n\t * @return {number}\n\t */\n getPixelForValue(value) {\n const offsets = this._offsets;\n const pos = this.getDecimalForValue(value);\n return this.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n }\n\n /**\n\t * @param {number} pixel\n\t * @return {number}\n\t */\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return this.min + pos * (this.max - this.min);\n }\n\n /**\n\t * @param {string} label\n\t * @return {{w:number, h:number}}\n\t * @private\n\t */\n _getLabelSize(label) {\n const ticksOpts = this.options.ticks;\n const tickLabelWidth = this.ctx.measureText(label).width;\n const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n const cosRotation = Math.cos(angle);\n const sinRotation = Math.sin(angle);\n const tickFontSize = this._resolveTickFontOptions(0).size;\n\n return {\n w: (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation),\n h: (tickLabelWidth * sinRotation) + (tickFontSize * cosRotation)\n };\n }\n\n /**\n\t * @param {number} exampleTime\n\t * @return {number}\n\t * @private\n\t */\n _getLabelCapacity(exampleTime) {\n const timeOpts = this.options.time;\n const displayFormats = timeOpts.displayFormats;\n\n // pick the longest format (milliseconds) for guesstimation\n const format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [exampleTime], this._majorUnit), format);\n const size = this._getLabelSize(exampleLabel);\n // subtract 1 - if offset then there's one less label than tick\n // if not offset then one half label padding is added to each end leaving room for one less label\n const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1;\n return capacity > 0 ? capacity : 1;\n }\n\n /**\n\t * @protected\n\t */\n getDataTimestamps() {\n let timestamps = this._cache.data || [];\n let i, ilen;\n\n if (timestamps.length) {\n return timestamps;\n }\n\n const metas = this.getMatchingVisibleMetas();\n\n if (this._normalized && metas.length) {\n return (this._cache.data = metas[0].controller.getAllParsedValues(this));\n }\n\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this));\n }\n\n return (this._cache.data = this.normalize(timestamps));\n }\n\n /**\n\t * @protected\n\t */\n getLabelTimestamps() {\n const timestamps = this._cache.labels || [];\n let i, ilen;\n\n if (timestamps.length) {\n return timestamps;\n }\n\n const labels = this.getLabels();\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n timestamps.push(parse(this, labels[i]));\n }\n\n return (this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps));\n }\n\n /**\n\t * @param {number[]} values\n\t * @protected\n\t */\n normalize(values) {\n // It seems to be somewhat faster to do sorting first\n return _arrayUnique(values.sort(sorter));\n }\n}\n","import type { MouseEvent } from 'react';\nimport type {\n ChartType,\n ChartData,\n DefaultDataPoint,\n ChartDataset,\n ChartOptions,\n Chart,\n} from 'chart.js';\n\nimport type { ForwardedRef } from './types.js';\n\nconst defaultDatasetIdKey = 'label';\n\nexport function reforwardRef(ref: ForwardedRef, value: T) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}\n\nexport function setOptions<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint,\n TLabel = unknown\n>(chart: Chart, nextOptions: ChartOptions) {\n const options = chart.options;\n\n if (options && nextOptions) {\n Object.assign(options, nextOptions);\n }\n}\n\nexport function setLabels<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint,\n TLabel = unknown\n>(\n currentData: ChartData,\n nextLabels: TLabel[] | undefined\n) {\n currentData.labels = nextLabels;\n}\n\nexport function setDatasets<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint,\n TLabel = unknown\n>(\n currentData: ChartData,\n nextDatasets: ChartDataset[],\n datasetIdKey = defaultDatasetIdKey\n) {\n const addedDatasets: ChartDataset[] = [];\n\n currentData.datasets = nextDatasets.map(\n (nextDataset: Record) => {\n // given the new set, find it's current match\n const currentDataset = currentData.datasets.find(\n (dataset: Record) =>\n dataset[datasetIdKey] === nextDataset[datasetIdKey]\n );\n\n // There is no original to update, so simply add new one\n if (\n !currentDataset ||\n !nextDataset.data ||\n addedDatasets.includes(currentDataset)\n ) {\n return { ...nextDataset } as ChartDataset;\n }\n\n addedDatasets.push(currentDataset);\n\n Object.assign(currentDataset, nextDataset);\n\n return currentDataset;\n }\n );\n}\n\nexport function cloneData<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint,\n TLabel = unknown\n>(data: ChartData, datasetIdKey = defaultDatasetIdKey) {\n const nextData: ChartData = {\n labels: [],\n datasets: [],\n };\n\n setLabels(nextData, data.labels);\n setDatasets(nextData, data.datasets, datasetIdKey);\n\n return nextData;\n}\n\n/**\n * Get dataset from mouse click event\n * @param chart - Chart.js instance\n * @param event - Mouse click event\n * @returns Dataset\n */\nexport function getDatasetAtEvent(\n chart: Chart,\n event: MouseEvent\n) {\n return chart.getElementsAtEventForMode(\n event.nativeEvent,\n 'dataset',\n { intersect: true },\n false\n );\n}\n\n/**\n * Get single dataset element from mouse click event\n * @param chart - Chart.js instance\n * @param event - Mouse click event\n * @returns Dataset\n */\nexport function getElementAtEvent(\n chart: Chart,\n event: MouseEvent\n) {\n return chart.getElementsAtEventForMode(\n event.nativeEvent,\n 'nearest',\n { intersect: true },\n false\n );\n}\n\n/**\n * Get all dataset elements from mouse click event\n * @param chart - Chart.js instance\n * @param event - Mouse click event\n * @returns Dataset\n */\nexport function getElementsAtEvent(\n chart: Chart,\n event: MouseEvent\n) {\n return chart.getElementsAtEventForMode(\n event.nativeEvent,\n 'index',\n { intersect: true },\n false\n );\n}\n","import React, { useEffect, useRef, forwardRef } from 'react';\nimport { Chart as ChartJS } from 'chart.js';\nimport type { ChartType, DefaultDataPoint } from 'chart.js';\n\nimport type { ForwardedRef, ChartProps, BaseChartComponent } from './types.js';\nimport {\n reforwardRef,\n cloneData,\n setOptions,\n setLabels,\n setDatasets,\n} from './utils.js';\n\nfunction ChartComponent<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint,\n TLabel = unknown\n>(\n props: ChartProps,\n ref: ForwardedRef>\n) {\n const {\n height = 150,\n width = 300,\n redraw = false,\n datasetIdKey,\n type,\n data,\n options,\n plugins = [],\n fallbackContent,\n updateMode,\n ...canvasProps\n } = props as ChartProps;\n const canvasRef = useRef(null);\n const chartRef = useRef();\n\n const renderChart = () => {\n if (!canvasRef.current) return;\n\n chartRef.current = new ChartJS(canvasRef.current, {\n type,\n data: cloneData(data, datasetIdKey),\n options: options && { ...options },\n plugins,\n });\n\n reforwardRef(ref, chartRef.current);\n };\n\n const destroyChart = () => {\n reforwardRef(ref, null);\n\n if (chartRef.current) {\n chartRef.current.destroy();\n chartRef.current = null;\n }\n };\n\n useEffect(() => {\n if (!redraw && chartRef.current && options) {\n setOptions(chartRef.current, options);\n }\n }, [redraw, options]);\n\n useEffect(() => {\n if (!redraw && chartRef.current) {\n setLabels(chartRef.current.config.data, data.labels);\n }\n }, [redraw, data.labels]);\n\n useEffect(() => {\n if (!redraw && chartRef.current && data.datasets) {\n setDatasets(chartRef.current.config.data, data.datasets, datasetIdKey);\n }\n }, [redraw, data.datasets]);\n\n useEffect(() => {\n if (!chartRef.current) return;\n\n if (redraw) {\n destroyChart();\n setTimeout(renderChart);\n } else {\n chartRef.current.update(updateMode);\n }\n }, [redraw, options, data.labels, data.datasets, updateMode]);\n\n useEffect(() => {\n if (!chartRef.current) return;\n\n destroyChart();\n setTimeout(renderChart);\n }, [type]);\n\n useEffect(() => {\n renderChart();\n\n return () => destroyChart();\n }, []);\n\n return (\n \n {fallbackContent}\n \n );\n}\n\nexport const Chart = forwardRef(ChartComponent) as BaseChartComponent;\n","import React, { forwardRef } from 'react';\nimport {\n Chart as ChartJS,\n LineController,\n BarController,\n RadarController,\n DoughnutController,\n PolarAreaController,\n BubbleController,\n PieController,\n ScatterController,\n} from 'chart.js';\nimport type { ChartType, ChartComponentLike } from 'chart.js';\n\nimport type {\n ChartProps,\n ChartJSOrUndefined,\n TypedChartComponent,\n} from './types.js';\nimport { Chart } from './chart.js';\n\nfunction createTypedChart(\n type: T,\n registerables: ChartComponentLike\n) {\n ChartJS.register(registerables);\n\n return forwardRef, Omit, 'type'>>(\n (props, ref) => \n ) as TypedChartComponent;\n}\n\nexport const Line = /* #__PURE__ */ createTypedChart('line', LineController);\n\nexport const Bar = /* #__PURE__ */ createTypedChart('bar', BarController);\n\nexport const Radar = /* #__PURE__ */ createTypedChart('radar', RadarController);\n\nexport const Doughnut = /* #__PURE__ */ createTypedChart(\n 'doughnut',\n DoughnutController\n);\n\nexport const PolarArea = /* #__PURE__ */ createTypedChart(\n 'polarArea',\n PolarAreaController\n);\n\nexport const Bubble = /* #__PURE__ */ createTypedChart(\n 'bubble',\n BubbleController\n);\n\nexport const Pie = /* #__PURE__ */ createTypedChart('pie', PieController);\n\nexport const Scatter = /* #__PURE__ */ createTypedChart(\n 'scatter',\n ScatterController\n);\n","import React from \"react\";\nimport {\n Chart as ChartJS,\n CategoryScale,\n LinearScale,\n BarElement,\n Title,\n Tooltip,\n Legend,\n} from \"chart.js\";\nimport { Bar } from \"react-chartjs-2\";\n\nChartJS.register(\n CategoryScale,\n LinearScale,\n BarElement,\n Title,\n Tooltip,\n Legend\n);\n\nexport const options = {\n responsive: false,\n plugins: {\n legend: {\n position: \"top\",\n },\n },\n\n scales: {\n x: {\n ticks: {\n color: \"white\",\n },\n grid: {\n color: \"white\", // Set grid lines color to white\n },\n },\n y: {\n ticks: {\n color: \"white\", // Set label color to white\n },\n grid: {\n color: \"white\", // Set grid lines color to white\n },\n },\n },\n};\n\nconst BarChartView = ({ data }) => {\n console.log(data);\n return (\n <>\n

    \n \n
    \n \n );\n};\n\nexport default BarChartView;\n","import React, { useState, useEffect, useMemo, useCallback } from \"react\";\nimport {\n titleCase,\n sortObjectKeys,\n formatDate,\n extractChartData,\n} from \"../../utils/util.ts\";\nimport \"./jira-service-desk-counts.scss\";\nimport Table from \"../Table/table\";\nimport PreviousCounts from \"../previous-counts/previous-counts\";\nimport BarChartView from \"../bar-chart/bar-chart.jsx\";\nimport { useSelector } from \"react-redux\";\n\nconst JiraServiceDeskCounts = (props) => {\n const [serviceDeskCountsItems, setServiceDeskCountsItems] = useState([]);\n const [currentViewId, setCurrentViewId] = useState(1);\n\n const service_desk_counts = useSelector(\n (state) => state.cloudCounter.service_desk_counts\n );\n\n const { chartData } = useMemo(\n () => extractChartData(service_desk_counts),\n [service_desk_counts]\n );\n\n const sortedList = useMemo(\n () => sortObjectKeys(service_desk_counts[0]?.data),\n [service_desk_counts]\n );\n\n const currentCount = service_desk_counts[0]?.data;\n const previousCount = useMemo(\n () =>\n service_desk_counts.find((info) => info.id === currentViewId)\n ?.data || {},\n [currentViewId, service_desk_counts]\n );\n\n const date = useMemo(() => {\n const selectedDate = service_desk_counts.find(\n (info) => info.id === currentViewId\n )?.date;\n return formatDate(selectedDate, \"LL\");\n }, [currentViewId, service_desk_counts]);\n\n const updateDataTable = useCallback(() => {\n const items = sortedList.map((row, id) => {\n const title = titleCase(row[0]);\n const currentValue = currentCount[row[0]];\n const previousValue = previousCount[row[0]] ?? 0;\n const percentageDiff = previousValue\n ? (\n ((currentValue - previousValue) / previousValue) *\n 100\n ).toFixed(2)\n : \"N/A\";\n\n return {\n id,\n title,\n currentCount: currentValue,\n previousCount: previousValue,\n percentageDiff: percentageDiff + \"%\",\n };\n });\n setServiceDeskCountsItems(items);\n }, [currentCount, previousCount, sortedList]);\n\n const previousData = useMemo(\n () => service_desk_counts.slice(2),\n [service_desk_counts]\n );\n\n useEffect(() => {\n updateDataTable();\n }, [currentViewId, updateDataTable]);\n\n return (\n
    \n
    \n

    Jira Service Management

    \n

    {date}

    \n
    \n
    \n \n
    \n
    \n \n {currentViewId > 1 && (\n
    \n setCurrentViewId(1)}\n >\n Reset Table Data\n \n
    \n )}\n \n
    \n \n
    \n \n );\n};\n\nexport default JiraServiceDeskCounts;\n","import React, { useState, useEffect, useMemo, useCallback } from \"react\";\nimport {\n titleCase,\n sortObjectKeys,\n formatDate,\n extractChartData,\n} from \"../../utils/util.ts\";\nimport \"./jira-software-counts.scss\";\nimport Table from \"../Table/table\";\nimport PreviousCounts from \"../previous-counts/previous-counts\";\nimport BarChartView from \"../bar-chart/bar-chart.jsx\";\nimport { useSelector } from \"react-redux\";\n\nconst JiraSoftwareCounts = (props) => {\n const [softwareCountItems, setSoftwareCountItems] = useState([]);\n const [currentViewId, setCurrentViewId] = useState(1);\n\n const software_counts = useSelector(\n (state) => state.cloudCounter.software_counts\n );\n\n const { chartData } = useMemo(\n () => extractChartData(software_counts),\n [software_counts]\n );\n\n const sortedList = useMemo(\n () =>\n software_counts.length > 0\n ? sortObjectKeys(software_counts[0]?.data)\n : [],\n [software_counts]\n );\n\n const currentCount = software_counts[0]?.data;\n const previousCount = useMemo(\n () =>\n software_counts.find((info) => info.id === currentViewId)?.data ||\n {},\n [currentViewId, software_counts]\n );\n\n const date = useMemo(() => {\n const selectedDate = software_counts.find(\n (info) => info.id === currentViewId\n )?.date;\n return formatDate(selectedDate, \"LL\");\n }, [currentViewId, software_counts]);\n\n const updateDataTable = useCallback(() => {\n const items = sortedList.map((row, id) => {\n const title = titleCase(row[0]);\n const currentValue = currentCount[row[0]];\n const previousValue = previousCount[row[0]] ?? 0;\n const percentageDiff = previousValue\n ? (\n ((currentValue - previousValue) / previousValue) *\n 100\n ).toFixed(2)\n : \"N/A\";\n\n return {\n id,\n title,\n currentCount: currentValue,\n previousCount: previousValue,\n percentageDiff: percentageDiff + \"%\",\n };\n });\n setSoftwareCountItems(items);\n }, [currentCount, previousCount, sortedList]);\n\n const previousData = useMemo(\n () => software_counts.slice(2),\n [software_counts]\n );\n\n useEffect(() => {\n updateDataTable();\n }, [currentViewId, updateDataTable]);\n\n return (\n
    \n
    \n

    Jira Software

    \n

    {date}

    \n
    \n
    \n {Object.keys(chartData).length && (\n \n )}\n
    \n
    \n
    \n {currentViewId > 1 && (\n
    \n setCurrentViewId(1)}\n >\n Reset Table Data\n \n
    \n )}\n \n
    \n \n
    \n \n );\n};\n\nexport default JiraSoftwareCounts;\n","import React, { useEffect, useState, useMemo, useCallback } from \"react\";\n\nimport {\n titleCase,\n sortObjectKeys,\n formatDate,\n extractChartData,\n} from \"../../utils/util.ts\";\nimport \"./scheme-counts.scss\";\nimport Table from \"../Table/table\";\nimport PreviousCounts from \"../previous-counts/previous-counts\";\nimport BarChartView from \"../bar-chart/bar-chart.jsx\";\nimport { useSelector } from \"react-redux\";\n\nconst SchemeCounts = (props) => {\n const [schemeCountItems, setSchemeCountItems] = useState([]);\n const [currentViewId, setCurrentViewId] = useState(1);\n\n const scheme_counts = useSelector(\n (state) => state.cloudCounter.scheme_counts\n );\n const { chartData } = useMemo(\n () => extractChartData(scheme_counts),\n [scheme_counts]\n );\n\n const sortedList = useMemo(\n () =>\n scheme_counts.length > 0\n ? sortObjectKeys(scheme_counts[0]?.data)\n : [],\n [scheme_counts]\n );\n\n const currentCount = scheme_counts[0]?.data;\n const previousCount = useMemo(\n () =>\n scheme_counts.find((info) => info.id === currentViewId)?.data || {},\n [currentViewId, scheme_counts]\n );\n\n const date = useMemo(() => {\n const selectedDate = scheme_counts.find(\n (info) => info.id === currentViewId\n )?.date;\n return formatDate(selectedDate, \"LL\");\n }, [currentViewId, scheme_counts]);\n\n const updateDataTable = useCallback(() => {\n const items = sortedList.map((row, id) => {\n const title = titleCase(row[0]);\n const currentValue = currentCount[row[0]];\n const previousValue = previousCount[row[0]] ?? 0;\n const percentageDiff = previousValue\n ? (\n ((currentValue - previousValue) / previousValue) *\n 100\n ).toFixed(2)\n : \"N/A\";\n\n return {\n id,\n title,\n currentCount: currentValue,\n previousCount: previousValue,\n percentageDiff: percentageDiff + \"%\",\n };\n });\n setSchemeCountItems(items);\n }, [currentCount, previousCount, sortedList]);\n\n const previousData = useMemo(() => scheme_counts.slice(2), [scheme_counts]);\n\n useEffect(() => {\n updateDataTable();\n }, [currentViewId, updateDataTable]);\n\n return (\n
    \n
    \n

    Jira Scheme Counts

    \n

    {date}

    \n
    \n
    \n \n
    \n
    \n
    \n {currentViewId > 1 && (\n
    \n setCurrentViewId(1)}\n >\n Reset Table Data\n \n
    \n )}\n \n
    \n \n
    \n \n );\n};\n\nexport default SchemeCounts;\n","import React, { useState } from \"react\";\nimport Axios from \"axios\";\nimport \"./attachments.scss\";\nimport { useSelector } from \"react-redux\";\n\nconst Attachments = () => {\n const jwt = useSelector((state) => state.cloudCounter.jwt);\n const [responseData, setResponseData] = useState({});\n const [loading, isLoading] = useState(false);\n const [viewBtn, showViewBtn] = useState(true);\n const [output, showOutput] = useState(false);\n\n const attachmentRequest = () => {\n showViewBtn(false);\n isLoading(true);\n Axios.post(\"/jira/attachment/\", { token: jwt }).then((res) => {\n const taskId = res.data.task_id;\n const attSocket = new WebSocket(\n `wss://${process.env.REACT_APP_API_URL}/jira/attachment/` +\n taskId +\n \"/\"\n );\n attSocket.onmessage = (e) => {\n const data = JSON.parse(e.data);\n const attachmentData = JSON.parse(data.message);\n setResponseData(attachmentData.attachments);\n isLoading(false);\n showOutput(true);\n };\n });\n };\n\n return (\n
    \n \n View Attachments\n \n
    \n \n
    \n \n
    \n

    Attachments

    \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n
    CountSize
    {responseData.count}{responseData.total_size}
    \n
    \n
    \n \n );\n};\n\nexport default Attachments;\n","import { createSlice } from \"@reduxjs/toolkit\";\n\nconst initialState = {\n jwt: \"\",\n software_counts: [{}],\n service_desk_counts: [{}],\n scheme_counts: [{}],\n confluence_counts: [{}],\n};\n\nconst cloudCounterSlice = createSlice({\n name: \"cloudCounter\",\n initialState,\n reducers: {\n updateJWT: (state, action) => {\n state.jwt = action.payload;\n },\n updateSoftwareData: (state, action) => {\n state.software_counts = action.payload;\n },\n updateServiceDeskData: (state, action) => {\n state.service_desk_counts = action.payload;\n },\n updateSchemeData: (state, action) => {\n state.scheme_counts = action.payload;\n },\n updateResourceData: (state, action) => {\n state.confluence_counts = action.payload;\n },\n },\n});\n\nexport const {\n updateJWT,\n updateSoftwareData,\n updateServiceDeskData,\n updateSchemeData,\n updateResourceData,\n} = cloudCounterSlice.actions;\n\nexport default cloudCounterSlice.reducer;\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t {\n const [isVisible, setIsVisible] = useState(true);\n\n useEffect(() => {\n const handleScroll = () => {\n const scrollPosition =\n (window.scrollY || document.documentElement.scrollTop) +\n window.innerHeight;\n const pageHeight = document.documentElement.scrollHeight;\n\n setIsVisible(scrollPosition < pageHeight - 100);\n };\n\n window.addEventListener(\"scroll\", handleScroll);\n return () => window.removeEventListener(\"scroll\", handleScroll);\n }, []);\n\n const scrollMore = () => {\n window.scrollBy({ top: 300 });\n };\n\n return (\n \n \n \n );\n};\n\nexport default ScrollIndicatorButton;\n","import React, { useCallback, useEffect, useState } from \"react\";\nimport { useLocation } from \"react-router-dom\";\nimport { animated, useTransition } from \"react-spring\";\nimport { MainContentStyled } from \"./cloud-content\";\nimport Banner from \"@atlaskit/banner\";\nimport WarningIcon from \"@atlaskit/icon/glyph/warning\";\nimport Exports from \"components/exports/exports\";\nimport JiraServiceDeskCounts from \"components/jira-service-desk-counts/jira-service-desk-counts\";\nimport JiraSoftwareCounts from \"components/jira-software-counts/jira-software-counts\";\nimport SchemeCounts from \"components/scheme-counts/scheme-counts\";\nimport Attachments from \"components/attachments/attachments\";\nimport Axios from \"axios\";\nimport \"./content.scss\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport {\n updateJWT,\n updateSchemeData,\n updateServiceDeskData,\n updateSoftwareData,\n} from \"store/cloud-counter/CloudCounterSlice\";\nimport { toast } from \"react-toastify\";\nimport \"react-toastify/dist/ReactToastify.css\";\nimport ScrollIndicatorButton from \"components/ScrollIndicatorButton/ScrollIndicatorButton\";\n\nconst CloudContent = ({ collapsible, selectedOption, expandedView, mode }) => {\n const dispatch = useDispatch();\n const { software_counts, service_desk_counts, scheme_counts, jwt } =\n useSelector((state) => state.cloudCounter);\n const [optionsMenu, showOptionsMenu] = useState(false);\n\n const [theme, setTheme] = useState(\"software-theme\");\n const tokenVal = useSelector((state) => state.project.bodyToken);\n\n const location = useLocation();\n const transitions = useTransition(location.pathname, {\n from: { opacity: 0, transform: \"translate3d(100%,0,0)\" },\n enter: { opacity: 1, transform: \"translate3d(0%,0,0)\" },\n leave: { opacity: 0, transform: \"translate3d(-50%,0,0)\" },\n config: { duration: 250 },\n });\n\n const isVisualize = location.pathname === \"/visualize\";\n\n const requestResources = (token) => {\n const resources = [\"scheme\", \"software\", \"servicedesk\"];\n const requests = resources.map((resource) => {\n return Axios.post(`/jira/${resource}/`, { token: token })\n .then((res) => {\n const resourceData = res.data;\n return {\n response: resourceData,\n resource,\n };\n })\n .catch((err) => {\n toast.error(\n `Unable to get ${resource} data at the moment. Kindly try again by refreshing the page`,\n { appearance: \"error\" }\n );\n });\n });\n Promise.all(requests).then((results) => {\n results.forEach((result) => {\n if (result === undefined) return;\n const { previous, ...data } = result.response;\n let id = 0;\n\n const payload = [\n { data, date: new Date().toISOString(), id: id++ },\n ...previous.map((data) => ({\n ...data,\n id: id++,\n })),\n ];\n console.log(result);\n\n switch (result.resource) {\n case \"software\":\n dispatch(updateSoftwareData(payload));\n break;\n case \"servicedesk\":\n dispatch(updateServiceDeskData(payload));\n break;\n case \"scheme\":\n dispatch(updateSchemeData(payload));\n break;\n default:\n break;\n }\n });\n });\n };\n\n useEffect(() => {\n const location = window.location;\n const searchObj = new URLSearchParams(location.search.substr(1));\n const jwt = tokenVal.token;\n const lic = searchObj.get(\"lic\");\n console.log(`APP_MODE is ${process.env.MODE} `);\n if (\n process.env.REACT_APP_MODE === \"development\" ||\n process.env.REACT_APP_NODE_ENV === \"dev\"\n ) {\n dispatch(updateJWT(jwt));\n requestResources(jwt);\n } else {\n if (!lic || lic.toLowerCase() !== \"active\") {\n toast.error(\n `Unable to verify your license. Kindly reach out to your site admin`,\n { appearance: \"error\" }\n );\n } else {\n dispatch(updateJWT(jwt));\n requestResources(jwt);\n }\n }\n }, []);\n\n const getViewData = useCallback(() => {\n switch (selectedOption) {\n case \"software\":\n return {\n data: software_counts || [],\n title: \"Jira Software\",\n };\n case \"servicedesk\":\n return {\n data: service_desk_counts || [],\n title: \"Jira Service Management\",\n };\n case \"scheme\":\n return { data: scheme_counts || [], title: \"Scheme\" };\n case \"attachments\":\n return { data: [], title: \"Attachments\" };\n default:\n return { data: [], title: \"\" };\n }\n }, [selectedOption]);\n\n return (\n \n \n {transitions((style, pathname) => (\n \n
    \n
    \n
    \n
    \n
    \n \n \n }\n >\n JWT is missing\n \n
    \n
    \n
    \n {selectedOption === \"management\" ? (\n \n ) : null}\n\n {selectedOption === \"software\" ? (\n \n ) : null}\n\n {selectedOption === \"scheme\" ? (\n \n ) : null}\n\n {selectedOption ===\n \"attachments\" ? (\n \n ) : null}\n
    \n
    \n
    \n \n {optionsMenu && (\n \n showOptionsMenu(false)\n }\n >\n
    \n
    \n
    \n )}\n
    \n

    Export Report

    \n \n
    \n
    \n \n \n \n \n ))}\n \n );\n};\n\nexport default CloudContent;\n","import styled from \"styled-components\";\n\nconst CloudCounterStyled = styled.div`\n color: #fff;\n width: 100%;\n height: 79vh;\n grid-area: content;\n display: grid;\n grid-template-columns: 1fr 4fr;\n grid-template-rows: 1.1fr 3fr;\n grid-column-gap: 30px;\n grid-template-areas: \"selected-project operation-area\" \"selected-project operation-area\";\n\n &.cloud {\n }\n`;\n\nexport { CloudCounterStyled };\n","import React, { useState } from \"react\";\nimport CounterSideBarViewType from \"components/cloud-counter/SelectedProject\";\nimport CloudContent from \"components/cloud-counter/CloudContent\";\nimport { CloudCounterStyled } from \"./cloudCounter.style\";\n\nconst MainCloudCounter = ({ mode, expandedView, handleExpandedView }) => {\n const [selectedOption, setSelectedOption] = useState(\"software\");\n\n return (\n \n \n \n \n );\n};\n\nexport default MainCloudCounter;\n","import React, { useState } from \"react\";\nimport Header from \"components/Header\";\nimport LeftSideBar from \"components/SideBar/LeftSideBar\";\nimport RightSideBar from \"components/SideBar/RightSideBar\";\nimport { ContentStyled } from \"./content.style\";\nimport { DashboardStyled } from \"./dashboard.style\";\nimport MainHeader from \"containers/MainHeader\";\nimport MainContent from \"containers/MainContent\";\nimport OnBoarding from \"containers/onBoarding\";\nimport { useLocation } from \"react-router-dom\";\nimport SideBarViewType from \"components/SelectedProject\";\nimport MainCloudCounter from \"pages/cloud-counter\";\n\nfunction Dashboard({\n projectsLoading,\n handleToggle,\n expandedView,\n handleExpandedView,\n toggle,\n}) {\n const [collapsible, setCollapsible] = useState(false);\n const location = useLocation();\n function handleCollapsible() {\n setCollapsible((prevState) => !prevState);\n }\n\n return (\n <>\n \n \n
    \n\n {location.pathname === \"/cloud-counter\" ? (\n \n ) : (\n <>\n \n \n \n \n \n \n \n )}\n \n \n \n );\n}\n\nexport default Dashboard;\n","import React from \"react\";\nimport AOS from \"aos\";\nimport \"aos/dist/aos.css\";\nimport { Link } from \"react-router-dom\";\nimport \"../Landing Page/style.css\";\n\nclass LandingPage extends React.Component{\n constructor(props){\n super(props)\n this.state={ \n featureOneOpen:false,\n featureTwoOpen:false,\n featureThreeOpen:false \n }\n\n this.openFeatureOne = this.openFeatureOne.bind(this);\n this.openFeatureTwo = this.openFeatureTwo.bind(this);\n this.openFeatureThree = this.openFeatureThree.bind(this);\n }\n\n componentDidMount(){\n AOS.init();\n }\n\n openFeatureOne(){\n this.setState(state=>({\n featureOneOpen: !state.featureOneOpen\n }));\n }\n\n openFeatureTwo(){\n this.setState(state=>({\n featureTwoOpen: !state.featureTwoOpen\n }));\n }\n\n openFeatureThree(){\n this.setState(state=>({\n featureThreeOpen: !state.featureThreeOpen\n }));\n }\n\n render(){\n return(\n
    \n
    \n \n
    \n
    \n

    Scrum Companion software

    \n

    Elevate team independence and ownership

    \n

    \n A collaborative platform allowing teams to seamlessly \n view and manage raw data all in one click.\n

    \n \n Sign up Free\n \n
    \n
    \n \"jumbotron\n
    \n \n
    \n
    \n

    Scrum Companion's principles have worked for

    \n
    \n \"company\"/\n \"company\"/\n \"company\"/\n \"company\"/\n \"company\"/\n \"company\"/\n \"company\"/\n \"company\"/\n \"company\"/\n \"company\"/\n \"company\"/\n \"company\"/\n \"company\"/\n \"company\"/\n
    \n
    \n
    \n \"header\"\n
    \n \n
    \n
    \n

    Get unrivalled results in 60 seconds

    \n
    \n
    \n
    \n

    Visualise your workflow

    \n

    \n Bring projects to life anytime, anywhere, with offline data \n availability for uninterrupted continuous workflow. \n

    \n
    \n
    \n \"visualise\"/\n
    \n
    \n \"feature\"/\n
    \n \n
    \n
    \n
    \n

    Extract and export projects to CSV format

    \n

    \n Extract data from any Jira project to CSV, allowing \n external access to data from team projects outside Jira.\n

    \n \n
    \n
    \n \"visualise\"/\n
    \n
    \n \"feature\"/\n
    \n
    \n
    \n
    \n

    Clone data for projects

    \n

    \n Effortless clone data from any team project \n all in one SingleProject with ease and no complication. \n

    \n \n
    \n
    \n \"visualise\"/\n
    \n
    \n \"feature\"/\n
    \n
    \n
    \n
    \n

    Migrate Project in Jira

    \n

    \n Move data seamlessly from one team project to the \n other with simple migration of any Jira data. \n

    \n \n
    \n
    \n \"visualise\"/\n
    \n
    \n \"feature\"/\n
    \n
    \n
    \n Get Started\n
    \n
    \n
    \n
    \n
    \n \"feature\"\n

    Cross Project Release Management

    \n \"arrow\"\n
    \n \n

    \n Release management, visualize release at once, release extract\n

    \n
    \n
    \n
    \n \"feature\"\n

    Project Data Management

    \n \"arrow\"\n
    \n

    \n Extract, Visualize, Clone the project, Migrate\n

    \n
    \n
    \n
    \n \"feature\"\n

    Filter Data Management

    \n \"arrow\"\n
    \n

    \n Unlimited extract (greater than 1000 issues, comments, issue hierachy, attachments), visualize status summary, database summary table.\n

    \n
    \n
    \n
    \n \"Feature\"/\n
    \n
    \n
    \n \n
    \n
    \n \"pricing-icon\"/\n

    Pricing

    \n
    \n
    \n
    \n

    $15

    \n
    \n
    Up to 10 users
    \n

    monthly flat feature
    \n Free 30 day trial\n

    \n
    \n
    \n
    \n

    $1.5

    \n
    \n
    11 - 100 users
    \n

    monthly flat feature
    \n Free 30 day trial\n

    \n
    \n
    \n
    \n

    101+ users? View pricing examples on Jira

    \n
    \n
    \n \n
    \n
    \n
    \n \"contact-icon\"/\n

    Contact us

    \n
    \n
    \n
    \n

    Any Queries

    \n

    \n Our dedicated team of experts are available for any \n support regarding our product. Please get in touch for any enquries.\n

    \n

    +44 (20) 3492 4679

    \n
    \n
    \n

    Prefer email? Click here to write to us

    \n
    \n
    \n
    \n
    \n
    \n
    \n

    Transfrom your workflow with Scrum Companion today

    \n

    start for free and upgrade anytime

    \n Get started\n \"particle\"/\n \"particle\"/\n \"particle\"/\n \"particle\"/\n \"particle\"/\n \"particle\"/\n \"particle\"/\n \"particle\"/\n
    \n \n
    \n
    \n
    \n \n )\n\n }\n \n}\nexport default LandingPage;","import React, { useState } from \"react\";\nimport Axios from \"axios\";\nimport \"./ReportForm.css\";\n\nconst ReportForm = ({ setReportForm, reportForm, token }) => {\n const [reportTitle, setReportTitle] = useState(\"\");\n const [reportDescription, setReportDescription] = useState(\"\");\n const [attachmentLink, setAttachmentLink] = useState(\"\");\n const [disableSubmit, setDisableSubmit] = useState(true);\n\n // const [newReport, setNewReport] = useState({title:\"\", description:\"\",imageUrls:\"\"});\n\n const handleSubmit = (e) => {\n e.preventDefault();\n const newReport = {\n token: token,\n topic: reportTitle,\n description: reportDescription,\n image_urls: [attachmentLink],\n };\n\n Axios.post(\"https://api.scrumcompanion.net/api/v1/reports\", newReport)\n .then((res) => console.log(res.data))\n .catch((e) => console.log(e));\n\n resetForm();\n setReportForm(false);\n console.log(newReport);\n };\n\n const resetForm = () => {\n setAttachmentLink(\"\");\n setReportTitle(\"\");\n setReportDescription(\"\");\n setDisableSubmit(true);\n document.getElementById(\"report-form\").reset();\n };\n\n const uploadImages = async (e) => {\n const files = e.target.files;\n const attachmentData = new FormData();\n attachmentData.append(\"file\", files[0]);\n attachmentData.append(\"upload_preset\", \"attachment\");\n attachmentData.append(\"api_key\", \"845428747732564\");\n\n try {\n const res = await Axios.post(\n \"https://api.cloudinary.com/v1_1/geniesys/image/upload\",\n attachmentData\n );\n if (res.data && res.data.secure_url) {\n setAttachmentLink(res.data.secure_url);\n setDisableSubmit(false);\n } else {\n setDisableSubmit(true);\n throw new Error(\n \"Upload successful, but no secure URL returned.\"\n );\n }\n } catch (error) {\n if (error.response) {\n setDisableSubmit(true);\n throw new Error(\n \"Server responded with an error:\",\n error.response.data\n );\n } else if (error.request) {\n setDisableSubmit(true);\n throw new Error(\n \"No response received from server:\",\n error.request\n );\n } else {\n setDisableSubmit(true);\n throw new Error(\n \"Error in setting up the request:\",\n error.message\n );\n }\n }\n };\n\n return (\n \n
    setReportForm(false)}>\n
    \n
    \n
    \n
    \n

    Add Report

    \n \n
    \n \n setReportTitle(e.target.value)}\n />\n
    \n
    \n \n \n setReportDescription(e.target.value)\n }\n />\n
    \n
    \n \n handleSubmit ? \"\" : e.target.value }\n required\n className=\"report-attachment-input\"\n onChange={uploadImages}\n />\n
    \n \n \n
    \n\n
    \n \n );\n};\n\nexport default ReportForm;\n","import React from \"react\";\n// import data from '../../data';\nimport \"./view-report.css\";\n\nconst ReportView = ({ selectedReportNumber, setViewSelectedReport, data }) => {\n let index = data.findIndex((report) => report.id === selectedReportNumber);\n console.log(data[index]);\n\n const upvote = () => {\n let votes = data[index].votes;\n votes = votes + 1;\n };\n\n return (\n
    \n setViewSelectedReport(false)}\n >\n \n

    Go Back

    \n \n
    \n
    \n
    \n \n
    \n
    \n

    {data[index].topic}

    \n

    \n By {data[index].author}{\" \"}\n

    \n

    \n {data[index].description}\n

    \n
    \n
    \n \n

    \n {data[index].votes}\n

    \n
    \n
    \n \n

    \n {data[index].comments.length}\n

    \n
    \n
    \n
    \n
    \n
    \n
    \n upvote()}\n />\n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n

    Comments

    \n {data[index].comments.length}\n
    \n
    \n {data[index].comments.map((comment, idx) => {\n return (\n
    \n

    \n {comment.text}\n

    \n

    \n {comment.author}\n

    \n
    \n );\n })}\n
    \n
    \n \n \n
    \n
    \n
    \n );\n};\n\nexport default ReportView;\n","import React from 'react';\nimport './report.css';\n\n\nconst Report = ({report,idx,handleClick}) =>{\n const { topic,author,votes,comments,status,image_urls,id }=report;\n // const id = reportNumber;\n return(\n
    handleClick(id) }>\n
    \n
    \n \"report\n
    \n
    \n

    {topic}

    \n

    by {author}

    \n
    \n
    \n
    \n
    \n \"votes\n

    {votes}

    \n
    \n
    \n \"comment\n

    {comments.length}

    \n
    \n
    \n

    {status}

    \n
    \n )\n}\n\nexport default Report;","import React, { useState, useEffect, useMemo } from \"react\";\nimport \"./SearchBar.css\";\n\nconst SearchBar = ({\n viewSelectedReport,\n handleClick,\n data,\n searchValue,\n setSearchValue,\n}) => {\n const [searchView, setSearchView] = useState(false);\n const handleSearchInput = (e) => {\n setSearchValue(e.target.value);\n };\n\n const searchResults = useMemo(() => {\n if (searchValue.length > 0) {\n return data.filter((i) => {\n let searchMatch = [];\n try {\n searchMatch = i.topic\n .toLowerCase()\n .match(searchValue.toLowerCase());\n } catch (error) {\n console.log(error);\n }\n return searchMatch;\n });\n } else {\n return [];\n }\n }, [searchValue, data]);\n\n useEffect(() => {\n if (searchResults.length > 0) {\n setSearchView(true);\n } else {\n setSearchView(false);\n }\n }, [searchResults]);\n\n return (\n \n \n \n
    \n \n
    \n \n
      \n {searchResults.map((report, idx) => {\n return (\n
    • handleClick(report.id)}>\n {report.topic}\n
    • \n );\n })}\n
    \n \n );\n};\n\nexport default SearchBar;\n","import React from 'react';\nimport './placeholder.css'\n\nconst Placeholder = ({height, width}) =>{\n\n return(\n <>\n
    \n \n \n )\n\n}\n\nexport default Placeholder;\n\n","import React, { useState, useEffect } from \"react\";\nimport ReportForm from \"../../components/ReportForm/ReportForm\";\nimport ReportView from \"./view-report\";\nimport Report from \"../../components/Report/Report\";\nimport SearchBar from \"../../components/SearchBar/SearchBar\";\nimport Placeholder from \"../../components/placeholder/placeholder\";\nimport Axios from \"axios\";\n// import data from '../../data';\nimport \"./style.css\";\nimport { useSelector } from \"react-redux\";\n\nconst VisualizeCommunity = () => {\n const [reportForm, setReportForm] = useState(false);\n const [selectedReportNumber, setSelectedReportNumber] = useState(null);\n const [viewSelectedReport, setViewSelectedReport] = useState(false);\n const [sortingMenu, setSortingMenu] = useState(false);\n const [searchValue, setSearchValue] = useState(\"\");\n const [data, setData] = useState([]);\n const [displayedData, setDisplayedData] = useState([]);\n const token = useSelector((state) => state.project.bodyToken);\n\n // Click handler for view reports\n const handleClick = (index) => {\n setSelectedReportNumber(index);\n setViewSelectedReport(true);\n setSearchValue(\"\");\n };\n\n // const requestReports = () =>{\n // Axios.get(\"https://api.scrumcompanion.net/api/v1/reports\")\n // .then(\n // res=>{\n // setData(res.data)\n // if(res.status === 200){\n // setTimeout(()=>{\n // setDisplayedData(res.data)\n // },2000)\n // }\n // }\n\n // )\n // }\n\n useEffect(() => {\n Axios.get(\"https://api.scrumcompanion.net/api/v1/reports\").then(\n (res) => {\n setData(res.data);\n if (res.status === 200) {\n setTimeout(() => {\n setDisplayedData(res.data);\n }, 2000);\n }\n }\n );\n }, []);\n\n // Test loading\n // setTimeout(()=>{\n // setDisplayedData(data)\n // },5000)\n\n // Sorting function\n const sorting = (criteria) => {\n if (criteria === \"votes\") {\n setDisplayedData(\n data.sort((a, b) => (b.upvotes > a.upvotes ? 1 : -1))\n );\n } else if (criteria === \"status\") {\n setDisplayedData(\n data.sort((a, b) => (b.status > a.status ? 1 : -1))\n );\n }\n setSortingMenu(false);\n };\n\n //Loading\n const loading = (pHeight, pWidth) => {\n let placeholders = [];\n for (let i = 0; i < 10; i++) {\n placeholders.push(\n \n );\n }\n return placeholders;\n };\n\n return (\n
    \n {/* { requestReports() } */}\n
    \n
    \n
    \n \n

    Community

    \n
    \n\n \n
    \n \n
    \n \n setSortingMenu(!sortingMenu)}\n >\n

    Filter

    \n \n
    \n\n \n sorting(\"votes\")}\n >\n By Ratings\n
  • \n sorting(\"status\")}\n >\n By Status\n \n \n \n\n \n\n {viewSelectedReport === false ? (\n
    \n
    \n {displayedData.length === 0\n ? loading(\"274.8px\", \"250px\")\n : displayedData.map((report, idx) => {\n return (\n \n );\n })}\n\n
    \n
    \n
    \n

    Top Reports

    \n
    \n {displayedData.length === 0\n ? loading(\"36px\", \"116px\")\n : displayedData.map((report, idx) => {\n return (\n \n handleClick(report.id)\n }\n key={idx}\n >\n

    {report.topic}

    \n
    \n );\n })}\n \n
    \n
    \n ) : (\n \n )}\n \n );\n};\n\nexport default VisualizeCommunity;\n","/* eslint-disable class-methods-use-this */\nimport React, { Component } from 'react';\n\n/**\n *@description A class that shows up when the app crashes\n *\n * @class ErrorBoundary\n * @extends {Component}\n */\nclass ErrorBoundary extends Component {\n /**\n *Creates an instance of ErrorBoundary.\n * @param {*} props\n * @memberof ErrorBoundary\n */\n constructor(props) {\n super(props);\n this.state = { hasError: false };\n }\n\n /**\n *\n *\n * @static\n * @param {*} error\n * @returns\n * @memberof ErrorBoundary\n */\n static getDerivedStateFromError() {\n // Update state so the next render will show the fallback UI.\n return { hasError: true };\n }\n\n /**\n *\n *\n * @param {*} error\n * @param {*} info\n * @memberof ErrorBoundary\n */\n\n componentDidCatch(error, info) {\n // You can also log the error to an error reporting service\n console.error(error, info);\n }\n\n /**\n *\n *\n * @returns\n * @memberof ErrorBoundary\n */\n render() {\n if (this.state.hasError) {\n // You can render any custom fallback UI\n return (\n
    \n
    \n

    An Unknown error occured!

    \n

    Kindly try again later

    \n
    \n
    \n );\n }\n\n return this.props.children;\n }\n}\n\nexport default ErrorBoundary;\n","import React from 'react';\n\nfunction StorageError() {\n return (\n
    \n

    An error occured!

    \n

    Kindly enable LocalStorage

    \n Click here to learn how to enable LocalStorage on your browser\n
    \n );\n}\n\nexport default StorageError;\n","// This icon file is generated automatically.\nvar ProjectFilled = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M880 112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V144c0-17.7-14.3-32-32-32zM368 744c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8V280c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v464zm192-280c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8V280c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v184zm192 72c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8V280c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v256z\" } }] }, \"name\": \"project\", \"theme\": \"filled\" };\nexport default ProjectFilled;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport ProjectFilledSvg from \"@ant-design/icons-svg/es/asn/ProjectFilled\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar ProjectFilled = function ProjectFilled(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: ProjectFilledSvg\n }));\n};\n\n/**![project](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTg4MCAxMTJIMTQ0Yy0xNy43IDAtMzIgMTQuMy0zMiAzMnY3MzZjMCAxNy43IDE0LjMgMzIgMzIgMzJoNzM2YzE3LjcgMCAzMi0xNC4zIDMyLTMyVjE0NGMwLTE3LjctMTQuMy0zMi0zMi0zMnpNMzY4IDc0NGMwIDQuNC0zLjYgOC04IDhoLTgwYy00LjQgMC04LTMuNi04LThWMjgwYzAtNC40IDMuNi04IDgtOGg4MGM0LjQgMCA4IDMuNiA4IDh2NDY0em0xOTItMjgwYzAgNC40LTMuNiA4LTggOGgtODBjLTQuNCAwLTgtMy42LTgtOFYyODBjMC00LjQgMy42LTggOC04aDgwYzQuNCAwIDggMy42IDggOHYxODR6bTE5MiA3MmMwIDQuNC0zLjYgOC04IDhoLTgwYy00LjQgMC04LTMuNi04LThWMjgwYzAtNC40IDMuNi04IDgtOGg4MGM0LjQgMCA4IDMuNiA4IDh2MjU2eiIgLz48L3N2Zz4=) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(ProjectFilled);\nif (process.env.NODE_ENV !== 'production') {\n RefIcon.displayName = 'ProjectFilled';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar PullRequestOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M788 705.9V192c0-8.8-7.2-16-16-16H602v-68.8c0-6-7-9.4-11.7-5.7L462.7 202.3a7.14 7.14 0 000 11.3l127.5 100.8c4.7 3.7 11.7.4 11.7-5.7V240h114v465.9c-44.2 15-76 56.9-76 106.1 0 61.8 50.2 112 112 112s112-50.2 112-112c.1-49.2-31.7-91-75.9-106.1zM752 860a48.01 48.01 0 010-96 48.01 48.01 0 010 96zM384 212c0-61.8-50.2-112-112-112s-112 50.2-112 112c0 49.2 31.8 91 76 106.1V706c-44.2 15-76 56.9-76 106.1 0 61.8 50.2 112 112 112s112-50.2 112-112c0-49.2-31.8-91-76-106.1V318.1c44.2-15.1 76-56.9 76-106.1zm-160 0a48.01 48.01 0 0196 0 48.01 48.01 0 01-96 0zm96 600a48.01 48.01 0 01-96 0 48.01 48.01 0 0196 0z\" } }] }, \"name\": \"pull-request\", \"theme\": \"outlined\" };\nexport default PullRequestOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport PullRequestOutlinedSvg from \"@ant-design/icons-svg/es/asn/PullRequestOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar PullRequestOutlined = function PullRequestOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: PullRequestOutlinedSvg\n }));\n};\n\n/**![pull-request](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTc4OCA3MDUuOVYxOTJjMC04LjgtNy4yLTE2LTE2LTE2SDYwMnYtNjguOGMwLTYtNy05LjQtMTEuNy01LjdMNDYyLjcgMjAyLjNhNy4xNCA3LjE0IDAgMDAwIDExLjNsMTI3LjUgMTAwLjhjNC43IDMuNyAxMS43LjQgMTEuNy01LjdWMjQwaDExNHY0NjUuOWMtNDQuMiAxNS03NiA1Ni45LTc2IDEwNi4xIDAgNjEuOCA1MC4yIDExMiAxMTIgMTEyczExMi01MC4yIDExMi0xMTJjLjEtNDkuMi0zMS43LTkxLTc1LjktMTA2LjF6TTc1MiA4NjBhNDguMDEgNDguMDEgMCAwMTAtOTYgNDguMDEgNDguMDEgMCAwMTAgOTZ6TTM4NCAyMTJjMC02MS44LTUwLjItMTEyLTExMi0xMTJzLTExMiA1MC4yLTExMiAxMTJjMCA0OS4yIDMxLjggOTEgNzYgMTA2LjFWNzA2Yy00NC4yIDE1LTc2IDU2LjktNzYgMTA2LjEgMCA2MS44IDUwLjIgMTEyIDExMiAxMTJzMTEyLTUwLjIgMTEyLTExMmMwLTQ5LjItMzEuOC05MS03Ni0xMDYuMVYzMTguMWM0NC4yLTE1LjEgNzYtNTYuOSA3Ni0xMDYuMXptLTE2MCAwYTQ4LjAxIDQ4LjAxIDAgMDE5NiAwIDQ4LjAxIDQ4LjAxIDAgMDEtOTYgMHptOTYgNjAwYTQ4LjAxIDQ4LjAxIDAgMDEtOTYgMCA0OC4wMSA0OC4wMSAwIDAxOTYgMHoiIC8+PC9zdmc+) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(PullRequestOutlined);\nif (process.env.NODE_ENV !== 'production') {\n RefIcon.displayName = 'PullRequestOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar FilterFilled = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M349 838c0 17.7 14.2 32 31.8 32h262.4c17.6 0 31.8-14.3 31.8-32V642H349v196zm531.1-684H143.9c-24.5 0-39.8 26.7-27.5 48l221.3 376h348.8l221.3-376c12.1-21.3-3.2-48-27.7-48z\" } }] }, \"name\": \"filter\", \"theme\": \"filled\" };\nexport default FilterFilled;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport FilterFilledSvg from \"@ant-design/icons-svg/es/asn/FilterFilled\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar FilterFilled = function FilterFilled(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: FilterFilledSvg\n }));\n};\n\n/**![filter](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTM0OSA4MzhjMCAxNy43IDE0LjIgMzIgMzEuOCAzMmgyNjIuNGMxNy42IDAgMzEuOC0xNC4zIDMxLjgtMzJWNjQySDM0OXYxOTZ6bTUzMS4xLTY4NEgxNDMuOWMtMjQuNSAwLTM5LjggMjYuNy0yNy41IDQ4bDIyMS4zIDM3NmgzNDguOGwyMjEuMy0zNzZjMTIuMS0yMS4zLTMuMi00OC0yNy43LTQ4eiIgLz48L3N2Zz4=) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(FilterFilled);\nif (process.env.NODE_ENV !== 'production') {\n RefIcon.displayName = 'FilterFilled';\n}\nexport default RefIcon;","import { useCallback, useState } from \"react\";\nimport { useSnackbar } from \"notistack\";\nimport Axios from \"axios\";\nimport useReponseErr from \"../reponseErr\";\nimport { useSelector } from \"react-redux\";\n\nfunction useVisualize() {\n const [loading, setLoading] = useState(false);\n const { enqueueSnackbar, closeSnackbar } = useSnackbar();\n const { responseErr } = useReponseErr();\n const [data, setData] = useState(\"\");\n const [visualizeReleaseData, setVisualizeReleaseData] = useState(\"\");\n const token = useSelector((state) => state.project.bodyToken);\n\n function visualize(values) {\n setLoading(true);\n Axios.post(\"/visualize\", { ...values, ...token })\n .then((res) => {\n setData(res.data);\n // saveVisualizeData(res.data.data);\n enqueueSnackbar(\"Successful\", { variant: \"success\" });\n setLoading(false);\n })\n .catch((err) => {\n setLoading(false);\n responseErr(err);\n });\n }\n\n const getVisualizeReleaseData = useCallback(\n (values) => {\n setLoading(true);\n Axios.post(\"/visualize/release\", { ...values, ...token })\n .then((res) => {\n setVisualizeReleaseData(res.data);\n enqueueSnackbar(\"Successful\", { variant: \"success\" });\n setLoading(false);\n })\n .catch((err) => {\n setLoading(false);\n responseErr(err);\n });\n },\n [token, enqueueSnackbar, responseErr]\n );\n\n if (!loading) {\n closeSnackbar(\"key\");\n } else {\n enqueueSnackbar(\"Getting visualization Data\", {\n persist: true,\n variant: \"default\",\n key: \"key\",\n });\n }\n\n return {\n loading,\n data,\n visualize,\n visualizeReleaseData,\n getVisualizeReleaseData,\n };\n}\n\nexport default useVisualize;\n","import useVisualize from \"helpers/custom-hooks/visualize\";\nimport React, { useEffect } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport localForage from \"localforage\";\nimport moment from \"moment\";\n\nexport default function ReleaseVisualize() {\n const current = useSelector((state) => state.project.currentRelease) || \"\";\n\n const { visualizeReleaseData, getVisualizeReleaseData } = useVisualize();\n\n const tableData_counter =\n visualizeReleaseData &&\n visualizeReleaseData.data &&\n Object.entries(\n visualizeReleaseData && visualizeReleaseData?.counter_data\n ).map((el) => {\n console.log(el);\n return {\n title: el[0],\n count: el[1],\n // inProgress: moment(el[1][\"In Progress\"]).format(\"DD/MM/YYYY\"),\n };\n });\n const tableData_main =\n visualizeReleaseData &&\n visualizeReleaseData.data &&\n Object.entries(visualizeReleaseData && visualizeReleaseData?.data).map(\n (el) => {\n console.log(el);\n return {\n title: el[0],\n properties: el[1],\n };\n }\n );\n const timelineData =\n visualizeReleaseData &&\n visualizeReleaseData.data &&\n Object.entries(\n visualizeReleaseData && visualizeReleaseData?.timeline_data\n ).map((el) => {\n return {\n title: el[0],\n created: el[1].Created,\n todo: el[1][\"To Do\"],\n inProgress: el[1][\"In Progress\"]\n ? moment(el[1][\"In Progress\"]).format(\"DD/MM/YYYY\")\n : \"-\",\n };\n });\n\n useEffect(() => {\n if (!current.name) return; // Prevent unnecessary execution\n localForage.getItem(\"single_project_credentials\").then((res) => {\n if (res) {\n getVisualizeReleaseData({ ...res, release_name: current.name });\n }\n });\n }, [current.name, getVisualizeReleaseData]);\n\n var config = {\n appendPadding: 30,\n data: timelineData,\n xField: \"xG conceded\",\n yField: \"Shot conceded\",\n colorField: \"Result\",\n color: [\"#c71e1d\", \"#ffca76\", \"#09bb9f\"],\n size: 5,\n shape: \"circle\",\n pointStyle: { fillOpacity: 1 },\n yAxis: {\n nice: true,\n line: { style: { stroke: \"#aaa\" } },\n },\n xAxis: {\n grid: { line: { style: { stroke: \"#eee\" } } },\n line: { style: { stroke: \"#aaa\" } },\n },\n label: {},\n };\n\n return (\n
    \n {visualizeReleaseData ? (\n
    \n
    \n \n \n \n \n \n \n \n \n {tableData_counter\n .sort((a, b) => b.title - a.title)\n .map((el, index) => {\n console.log(el);\n return (\n \n \n \n \n );\n })}\n \n
    TitleCount
    {el.title}{el.count}
    \n
    \n
    \n \n \n \n \n \n \n \n \n {tableData_main.map((el, index) => {\n console.log(el);\n return (\n \n \n \n {Object.keys(\n el.properties\n ).map((property_title) => {\n return (\n \n \n \n );\n })}\n \n \n \n \n {Object.values(\n el.properties\n ).map((property_value) => {\n return (\n \n \n \n );\n })}\n \n \n \n );\n })}\n \n
    TitleProperties
    \n {el.title}
    \n {\n property_title\n }\n
    \n Count
    \n {\n property_value\n }\n
    \n
    \n
    \n

    Story points

    \n \n \n \n \n \n \n \n \n \n \n {timelineData\n .sort((a, b) => b.title - a.title)\n .map((el, index) => {\n console.log(el);\n return (\n \n \n \n \n \n \n );\n })}\n \n
    StatusCreatedTo DoIn Progress
    {el.title}\n {moment(el.created).format(\n \"DD/MM/YYYY\"\n )}\n \n {moment(el.todo).format(\n \"DD/MM/YYYY\"\n )}\n {el.inProgress}
    \n
    \n
    \n ) : (\n
    \n {\" \"}\n No data available{\" \"}\n
    \n )}\n
    \n );\n}\n","import { useState } from \"react\";\nimport { useSnackbar } from \"notistack\";\nimport Axios from \"axios\";\nimport useReponseErr from \"../reponseErr\";\nimport { useSelector } from \"react-redux\";\n\nfunction useFilters() {\n const [loading, setLoading] = useState(false);\n const { enqueueSnackbar, closeSnackbar } = useSnackbar();\n const { responseErr } = useReponseErr();\n const [data, setData] = useState(\"\");\n const [filterData, setFilterData] = useState(\"\");\n const token = useSelector((state) => state.project.bodyToken);\n\n function filters(values) {\n setLoading(true);\n Axios.post(\"/visualize/filter\", { ...values, ...token })\n .then((res) => {\n setData(res.data);\n enqueueSnackbar(\"Successful\", { variant: \"success\" });\n setLoading(false);\n })\n .catch((err) => {\n setLoading(false);\n responseErr(err);\n });\n }\n\n function getFiltersData(values) {\n setLoading(true);\n Axios.post(\"/visualize/filter\", { ...values, ...token })\n .then((res) => {\n setFilterData(res.data);\n enqueueSnackbar(\"Successful\", { variant: \"success\" });\n setLoading(false);\n })\n .catch((err) => {\n setLoading(false);\n responseErr(err);\n });\n }\n\n if (!loading) {\n closeSnackbar(\"key\");\n } else {\n enqueueSnackbar(\"Getting visualization Data\", {\n persist: true,\n variant: \"default\",\n key: \"key\",\n });\n }\n\n return {\n loading,\n data,\n filters,\n filterData,\n getFiltersData,\n };\n}\n\nexport default useFilters;\n","import React, { useEffect } from \"react\";\nimport useFilters from \"helpers/custom-hooks/filters\";\nimport { useSelector } from \"react-redux\";\nimport localForage from \"localforage\";\n\nexport default function FiltersVisualize() {\n const current = useSelector((state) => state.project.currentFilter) || \"\";\n\n const { filterData, getFiltersData } = useFilters();\n\n const tableData_counter =\n filterData &&\n filterData.data &&\n Object.entries(filterData && filterData?.counter_data).map((el) => {\n return {\n title: el[0],\n count: el[1],\n };\n });\n\n const tableData_main =\n filterData &&\n filterData.data &&\n Object.entries(filterData && filterData?.data).map((el) => {\n return {\n title: el[0],\n properties: el[1],\n };\n });\n\n useEffect(() => {\n localForage.getItem(\"single_project_credentials\").then((res) => {\n getFiltersData({ ...res, filter_name: current.name });\n });\n }, [current]);\n\n return (\n
    \n {/* */}\n {filterData ? (\n
    \n
    \n \n \n \n \n \n \n \n \n {tableData_counter\n .sort((a, b) => b.title - a.title)\n .map((el, index) => {\n return (\n \n \n \n \n );\n })}\n \n
    TitleCount
    {el.title}{el.count}
    \n
    \n
    \n \n \n \n \n \n \n \n \n {tableData_main.map((el, index) => {\n return (\n \n \n \n {Object.keys(\n el.properties\n ).map((property_title) => {\n return (\n \n \n \n );\n })}\n \n \n \n \n {Object.values(\n el.properties\n ).map((property_value) => {\n return (\n \n \n \n );\n })}\n \n \n \n );\n })}\n \n
    TitleProperties
    \n {el.title}
    \n {\n property_title\n }\n
    \n Count
    \n {\n property_value\n }\n
    \n
    \n
    \n ) : (\n
    \n {\" \"}\n No data available{\" \"}\n
    \n )}\n
    \n );\n}\n","import styled from \"styled-components\";\n\nexport const OperationStyled = styled.div`\n padding: 30px;\n color: ${(props) => (props.mode ? \"#fff\" : \"#2a10e1\")};\n\n .heading {\n color: #009bc0;\n font-size: 24px;\n line-height: 32px;\n }\n .mini-cards {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n grid-row-gap: 50px;\n grid-column-gap: 50px;\n width: 50%;\n justify-items: center;\n align-content: center;\n }\n\n .leading-text {\n font-size: 30px;\n font-weight: 400;\n }\n\n .operation-content {\n display: flex;\n align-items: center;\n height: 100%;\n flex-direction: column;\n width: 100%;\n position: relative;\n\n .alert-box {\n position: absolute;\n top: 35%;\n padding: 5px 0px;\n box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5);\n transition: top 300ms ease;\n\n width: 300px;\n border-radius: 5px;\n background: #fff;\n border: 1px solid #4bb5434d;\n z-index: 9999999;\n border-radius: 5px;\n border-left: 5px solid #4bb543;\n\n .title {\n padding-left: 10px;\n color: black;\n font-weight: 300;\n color: #009bc0;\n }\n\n .close {\n position: absolute;\n right: 10px;\n color: #000;\n cursor: pointer;\n }\n\n h2 {\n font-size: 14px;\n margin: 0;\n font-weight: 600;\n padding: 5px 0;\n border-top: 1px solid #4bb5434d;\n\n span {\n font-weight: 300;\n\n &:nth-child(2) {\n margin-right: 20px;\n }\n }\n }\n\n .alert-content {\n background: #fff;\n padding: 10px;\n border-radius: 5px;\n }\n }\n\n .chart-operations {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n\n .dots {\n .dot {\n height: 7px;\n width: 7px;\n display: inline-block;\n border-radius: 50%;\n background: #fff;\n border: 1px solid #06edc2;\n cursor: pointer;\n margin-left: 10px;\n outline: 0;\n transition: background 600ms ease;\n }\n\n .empty-dot {\n background: #06edc2;\n }\n }\n\n .expand {\n cursor: pointer;\n background: #06edc2;\n border-radius: 20px;\n padding: 1.4px 15px;\n font-size: 14px;\n outline: 0;\n border: 0;\n\n &:focus {\n outline: 0;\n }\n }\n\n .handle-chart-position {\n button {\n cursor: pointer;\n border: 1px solid #06edc2;\n border-radius: 20px;\n padding: 1.4px 15px;\n transition: background 300ms ease;\n font-size: 14px;\n color: ${(props) => (props.mode ? \"#2a10e1\" : \"#2a10e1\")};\n\n &:focus {\n outline: 0;\n }\n\n &:hover {\n background: #06edc2;\n }\n\n &:nth-child(2) {\n margin-left: 10px;\n }\n }\n }\n }\n }\n\n .btn-holder {\n // position: absolute;\n bottom: 0;\n cursor: pointer;\n }\n\n .operation-btn {\n background: #e37915;\n padding: 12px 32px;\n line-height: 24px;\n color: #fff;\n outline: 0;\n border-radius: 12px;\n border: 0;\n font-size: 16px;\n cursor: pointer;\n font-weight: 600;\n margin-top: 16px;\n }\n\n .operation-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n\n .title {\n color: ${(props) => (props.mode ? \"#fff\" : \"#009bc0\")};\n font-size: 18px;\n }\n\n .other-info {\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n span {\n margin-left: 9px;\n }\n\n .project-id,\n .project-date,\n .project-time {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin: 0 20px;\n font-size: 14px;\n color: #009bc0;\n }\n }\n\n .project-icon,\n .calendar-icon,\n .time-icon {\n height: 30px;\n width: 30px;\n }\n\n .project-icon {\n border-radius: 50%;\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n border: 3px solid #374cd0;\n\n &::after {\n width: 50%;\n height: 50%;\n position: absolute;\n border-radius: 50%;\n content: \"\";\n border: 3px solid #374cd0;\n }\n }\n }\n\n .visualise-data-container {\n display: grid;\n grid-template-columns: 1fr 1fr;\n justify-content: space-between;\n align-items: center;\n }\n\n .clone-data-container {\n justify-content: space-between;\n }\n\n .clone-data {\n }\n\n .visualize-data {\n display: grid;\n grid-template-columns: 1fr 1fr;\n justify-content: space-between;\n color: #fff;\n height: 390px;\n overflow-y: scroll;\n margin-top: 20px;\n width: 100%;\n\n &.full-width-data {\n display: flex;\n }\n\n table {\n border: 1px solid #8080802b;\n width: 390px;\n min-width: 300px;\n border-radius: 10px;\n border-collapse: collapse;\n\n thead {\n background: #009bc0;\n color: #fff;\n border-radius: 5px;\n }\n\n th,\n td {\n padding: 9px 10px;\n }\n\n tr {\n border-radius: 5px;\n\n &:nth-child(2n) {\n background: #1e384f;\n }\n }\n\n tbody {\n height: 350px;\n overflow-y: scroll;\n }\n }\n\n table tr:last-child td:first-child {\n border-bottom-left-radius: 10px;\n }\n\n table tr:last-child td:last-child {\n border-bottom-right-radius: 10px;\n }\n }\n\n .operation-visualize {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n width: 100%;\n color: #000;\n }\n\n .operation-body {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n height: 100%;\n width: 100%;\n color: #000;\n\n &.operation-extract {\n flex-direction: column;\n }\n\n .swap-icon {\n font-size: 30px;\n color: #fdd700;\n margin: 0 30px;\n }\n\n .coming-soon-holder {\n text-align: center;\n\n .coming-soon-text {\n color: #f04f46;\n font-weight: 100px;\n font-size: 36px;\n border-radius: 10px;\n animation: pulse 2s infinite;\n }\n\n p {\n letter-spacing: 1.2px;\n font-size: 14px;\n }\n\n @keyframes pulse {\n 0% {\n transform: scale(0.95);\n /* box-shadow: 0 0 0 0 rgba(0, 0, 0, 0.7); */\n }\n\n 70% {\n transform: scale(1.05);\n /* box-shadow: 0 0 0 10px rgba(0, 0, 0, 0); */\n }\n\n 100% {\n transform: scale(0.95);\n /* box-shadow: 0 0 0 0 rgba(0, 0, 0, 0); */\n }\n }\n }\n\n .operation-box {\n width: 200px;\n height: 210px;\n\n display: flex;\n align-items: center;\n flex-direction: column;\n justify-content: center;\n border-radius: 30px;\n border: 1px dashed #009bc0;\n cursor: pointer;\n\n .add-icon {\n height: 50px;\n width: 1px;\n color: #000;\n background: #009bc0;\n position: relative;\n\n &::after {\n content: \"\";\n position: absolute;\n top: 0;\n transform: rotate(90deg);\n height: 50px;\n width: 1px;\n color: #000;\n background: #009bc0;\n }\n }\n }\n\n .operation-box {\n overflow: hidden;\n }\n\n .project-details {\n height: 230px;\n padding: 20px;\n background: ${(props) => (!props.mode ? \"#1e384f\" : \"#2a10e1\")};\n border-radius: 30px;\n box-shadow: 0 3px 10px rgba(0, 0, 0, 0.1);\n width: 200px;\n display: grid;\n cursor: move;\n color: ${(props) => (props.mode ? \"#fff\" : \"#009bc0\")};\n\n .project-name-id {\n margin-bottom: 10px;\n }\n\n .project-name {\n color: #2a10e1;\n margin-bottom: 5px;\n font-size: 16px;\n font-weight: 500;\n letter-spacing: 1px;\n text-transform: capitalize;\n color: ${(props) => (props.mode ? \"#fff\" : \"#009bc0\")};\n }\n }\n\n .mb-3 {\n position: relative;\n top: 40px;\n }\n\n .num {\n color: #2a10e1;\n font-size: 18px;\n font-weight: 600;\n color: ${(props) => (props.mode ? \"#fff\" : \"#009bc0\")};\n }\n\n .small {\n font-size: 14px;\n font-weight: 400;\n word-break: break-all;\n }\n\n .holder {\n display: flex;\n align-items: flex-end;\n justify-content: space-between;\n\n .download-icon {\n fill: #fff;\n width: 25px;\n height: 25px;\n align-self: flex-end;\n opacity: 0.2;\n }\n\n .clone-icon {\n fill: #ff7b38;\n width: 25px;\n height: 25px;\n align-self: flex-end;\n opacity: 0.2;\n }\n }\n\n .grey-primary-text {\n color: #d8d8d7;\n font-size: 14px;\n font-weight: 600;\n }\n\n .grey-secondary-text {\n color: #b6b6b6;\n font-size: 14px;\n }\n }\n`;\n\nexport const SelectProjectText = styled.div`\n font-size: 21px;\n margin: auto;\n color: #fff;\n`;\n","import styled from \"styled-components\";\n\nexport const MiniCardStyle = styled.div`\n height: 120px;\n width: 180px;\n border-radius: 4px;\n display: grid;\n justify-items: center;\n place-content: center;\n color: #fff;\n font-weight: 300;\n font-size: 17px;\n box-shadow: 0 5px 7px rgba(0, 0, 0, 0.015);\n cursor: pointer;\n transition: transform 400ms ease-in-out;\n position: relative;\n overflow: hidden;\n\n .coming-soon {\n font-size: 13px;\n position: absolute;\n bottom: 10px;\n display: block;\n }\n &.selected-type {\n transform: scale(1.1);\n transition: transform 500ms ease-in-out;\n }\n\n .check-icon {\n position: absolute;\n right: 12px;\n bottom: 10px;\n color: inherit;\n font-size: 22px;\n opacity: 0;\n transition: opacity 300ms ease-in-out;\n fill: #fff;\n\n &.selected-check-icon {\n opacity: 1;\n }\n }\n\n .icon-ab {\n position: absolute;\n left: -40px;\n top: -50px;\n opacity: 0.09;\n font-size: 110px;\n transition: transform 500ms ease-in-out;\n }\n\n .l-icon {\n font-size: 40px;\n color: #fff;\n height: auto;\n }\n\n &:hover {\n transform: scale(1.1);\n }\n\n &:hover .icon-ab {\n transform: scale(1.3);\n }\n`;\n","import React from \"react\";\nimport { CheckCircleFilled } from \"@ant-design/icons\";\nimport { useSelector } from \"react-redux\";\nimport { useDispatch } from \"react-redux\";\nimport { setSidebarType } from \"store/sc\";\nimport { MiniCardStyle } from \"./minicard.style\";\n\nexport default function MiniCard({ card, handleClick, currentCard }) {\n const type = useSelector((state) => state.project.type);\n const dispatch = useDispatch();\n\n const { icon: Icon } = card;\n\n function handleCardClick() {\n if (card.name === \"sprint\") {\n return;\n }\n\n dispatch(setSidebarType(card.name));\n handleClick();\n }\n\n return (\n \n \n \n \n \n {card.future && Coming Soon}\n \n \n \n {card.name}\n \n );\n}\n","import {\n FilterFilled,\n ProjectFilled,\n PullRequestOutlined,\n} from \"@ant-design/icons\";\nimport ReleaseVisualize from \"components/DashboardScreens/ReleaseVisualize\";\nimport FiltersVisualize from \"components/DashboardScreens/FiltersVisualize\";\nimport { OperationStyled } from \"pages/Clone/cone.style\";\nimport React, { useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport MiniCard from \"../../components/MiniCard/index\";\n\nexport default function Landing() {\n const [type, setType] = useState(\"\");\n\n const currentDashboardScreen = useSelector(\n (state) => state.project.currentDashboardScreen\n );\n\n useState(() => {\n console.log(currentDashboardScreen.name);\n }, []);\n\n const cards = [\n {\n id: 1,\n name: \"projects\",\n color: \"#e37915\",\n icon: ProjectFilled,\n },\n {\n id: 2,\n name: \"releases\",\n color: \"#009dc2\",\n icon: PullRequestOutlined,\n },\n {\n id: 3,\n name: \"filters\",\n color: \"#f04f45\",\n icon: FilterFilled,\n },\n ];\n\n let content;\n switch (currentDashboardScreen?.name) {\n case \"root\":\n content = (\n
    \n {cards.map((card) => (\n setType(card.name)}\n />\n ))}\n
    \n );\n break;\n case \"release\":\n content = ;\n break;\n\n case \"filters\":\n content = ;\n break;\n default:\n content = (\n
    \n {cards.map((card) => (\n setType(card.name)}\n />\n ))}\n
    \n );\n break;\n }\n\n return (\n \n
    Home
    \n
    {content}
    \n
    \n );\n}\n","var _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgDownload(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Capa_1\",\n enableBackground: \"new 0 0 482.239 482.239\",\n height: 512,\n viewBox: \"0 0 482.239 482.239\",\n width: 512,\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m0 447.793h482.239v34.446h-482.239z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m396.091 223.863-24.287-24.354-113.462 113.462v-312.971h-34.446v312.971l-113.495-113.496-24.22 24.354 154.938 155.073z\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgDownload);\nexport default __webpack_public_path__ + \"static/media/download.22b585a2bd8dbece34442051e62c01f9.svg\";\nexport { ForwardRef as ReactComponent };","import { useState } from 'react';\nimport { useSnackbar } from 'notistack';\nimport useReponseErr from '../reponseErr';\n// import FileSaver from 'file-saver';\n// import queryString from 'query-string';\n// import { useLocation } from 'react-router-dom';\nimport { useSelector } from 'react-redux';\n\nfunction useExtract() {\n const [isExtracting, setIsExtracting] = useState(false);\n const { enqueueSnackbar, closeSnackbar } = useSnackbar();\n const { responseErr } = useReponseErr();\n // const location = useLocation();\n // const query = location.search;\n // const value = queryString.parse(query);\n const tokenVal = useSelector((state) => state.project.bodyToken);\n\n // function b64toBlob(b64Data, contentType = '', sliceSize = 512) {\n // const byteCharacters = atob(b64Data);\n // const byteArrays = [];\n\n // for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {\n // const slice = byteCharacters.slice(offset, offset + sliceSize);\n\n // const byteNumbers = new Array(slice.length);\n // for (let i = 0; i < slice.length; i++) {\n // byteNumbers[i] = slice.charCodeAt(i);\n // }\n\n // const byteArray = new Uint8Array(byteNumbers);\n // byteArrays.push(byteArray);\n // }\n\n // const blob = new Blob(byteArrays, { type: contentType });\n // return blob;\n // }\n\n function downloadBlob(blob, filename) {\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = filename;\n\n const clickHandler = () => {\n setTimeout(() => {\n URL.revokeObjectURL(url);\n a.removeEventListener('click', clickHandler);\n }, 150);\n };\n\n a.addEventListener('click', clickHandler, false);\n a.click();\n }\n\n function extract(reqData, attachmentStatus) {\n const BASE_URL = `https://${process.env.REACT_APP_API_URL}/api/v1`;\n\n setIsExtracting(true);\n\n\n fetch(`${BASE_URL}/csv`, {\n method: 'POST',\n body: JSON.stringify({\n attachments: attachmentStatus,\n ...reqData,\n ...tokenVal,\n }),\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n .then((res) => {\n return res.blob();\n })\n .then((blob) => {\n downloadBlob(blob, reqData.project_key);\n setIsExtracting(false);\n enqueueSnackbar('Extract Successful', { variant: 'success' });\n })\n .catch((err) => {\n console.log(err);\n setIsExtracting(false);\n responseErr(err);\n console.error('error', err.response);\n });\n }\n\n if (!isExtracting) {\n closeSnackbar('key');\n } else {\n enqueueSnackbar('Kindly wait while we extract your project', { persist: true, variant: 'default', key: 'key' });\n }\n\n return {\n extract,\n isExtracting,\n };\n}\n\nexport default useExtract;\n","import React, { useState } from \"react\";\nimport { OperationStyled, SelectProjectText } from \"pages/Clone/cone.style\";\n// import { ReactComponent as DateIcon } from 'assets/Icons/calendar.svg';\n// import { ReactComponent as TimeIcon } from 'assets/Icons/time.svg';\nimport { ReactComponent as DownloadIcon } from \"assets/Icons/download.svg\";\nimport { useSelector } from \"react-redux\";\nimport localForage from \"localforage\";\nimport useExtract from \"helpers/custom-hooks/extract\";\nimport { Spinner } from \"components/Spinner/Spinner\";\n\nfunction Extract({ mode }) {\n const [attachmentStatus, setAttachmentStatus] = useState(false);\n const currentProject = useSelector((state) => state.project.currentProject);\n const { extract, isExtracting } = useExtract();\n\n function handleExtract() {\n localForage.getItem(\"single_project_credentials\").then((res) => {\n extract(\n { ...res, project_key: currentProject.key },\n attachmentStatus\n );\n });\n }\n\n function handleCheckbox() {\n setAttachmentStatus((prevState) => !prevState);\n }\n\n return (\n \n
    \n
    \n Export\n
    \n
    \n \n \n {currentProject &&\n currentProject.name &&\n currentProject.name}\n \n
    \n
    \n
    \n {currentProject && Object.keys(currentProject).length === 0 ? (\n \n Select a project to Export\n \n ) : (\n
    \n \n
    \n

    \n {currentProject && currentProject.name}\n

    \n \n {currentProject && currentProject.key}\n \n
    \n
    \n

    \n No of IssueTypes\n

    \n \n {currentProject &&\n currentProject.NoOfIssueTypes}\n \n
    \n
    \n
    \n

    \n No of Issues\n

    \n \n {currentProject &&\n currentProject.NoOfIssues}\n \n
    \n \n
    \n
    \n\n
    \n \n \n \n {\" \"}\n Attachments{\" \"}\n \n \n
    \n\n
    \n {isExtracting ? (\n \n ) : (\n <>\n \n Download\n \n \n )}\n
    \n
    \n )}\n \n
    \n );\n}\n\nexport default Extract;\n","import React from \"react\";\nimport { useSelector } from \"react-redux\";\n\nexport default function CloneSuccess() {\n const cloneData = useSelector((state) => state.project.cloneData);\n\n const data = Object.entries(cloneData && cloneData[\"compare_data\"]).map(\n (el) => {\n return el.map((element) => {\n return {\n name: el[0],\n source: element.source,\n clone: element.clone,\n };\n });\n }\n );\n\n return (\n
    \n
    \n
    \n \n \n \n \n \n \n \n \n \n {data &&\n data.sort((a, b) => b[1].source - a[1].source).map((el) => {\n return (\n \n \n \n \n \n );\n })}\n \n
    NameSourceClone
    {el[1].name}{el[1].clone}{el[1].source}
    \n
    \n
    \n
    \n );\n}\n","var _g, _g2, _g3, _g4, _g5, _g6, _g7, _g8, _g9, _g10, _g11, _g12, _g13, _g14, _g15, _g16;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgCopy(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Capa_1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n x: \"0px\",\n y: \"0px\",\n viewBox: \"0 0 469.333 469.333\",\n style: {\n enableBackground: \"new 0 0 469.333 469.333\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M330.667,0h-256C51.093,0,32,19.093,32,42.667v298.667h42.667V42.667h256V0z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M394.667,85.333H160c-23.573,0-42.667,19.093-42.667,42.667v298.667c0,23.573,19.093,42.667,42.667,42.667h234.667 c23.573,0,42.667-19.093,42.667-42.667V128C437.333,104.427,418.24,85.333,394.667,85.333z M394.667,426.667H160V128h234.667 V426.667z\"\n }))))), _g2 || (_g2 = /*#__PURE__*/React.createElement(\"g\", null)), _g3 || (_g3 = /*#__PURE__*/React.createElement(\"g\", null)), _g4 || (_g4 = /*#__PURE__*/React.createElement(\"g\", null)), _g5 || (_g5 = /*#__PURE__*/React.createElement(\"g\", null)), _g6 || (_g6 = /*#__PURE__*/React.createElement(\"g\", null)), _g7 || (_g7 = /*#__PURE__*/React.createElement(\"g\", null)), _g8 || (_g8 = /*#__PURE__*/React.createElement(\"g\", null)), _g9 || (_g9 = /*#__PURE__*/React.createElement(\"g\", null)), _g10 || (_g10 = /*#__PURE__*/React.createElement(\"g\", null)), _g11 || (_g11 = /*#__PURE__*/React.createElement(\"g\", null)), _g12 || (_g12 = /*#__PURE__*/React.createElement(\"g\", null)), _g13 || (_g13 = /*#__PURE__*/React.createElement(\"g\", null)), _g14 || (_g14 = /*#__PURE__*/React.createElement(\"g\", null)), _g15 || (_g15 = /*#__PURE__*/React.createElement(\"g\", null)), _g16 || (_g16 = /*#__PURE__*/React.createElement(\"g\", null)));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgCopy);\nexport default __webpack_public_path__ + \"static/media/copy.e9ca519f0c85fb12bfdf02adb3aab29d.svg\";\nexport { ForwardRef as ReactComponent };","import { useState } from \"react\";\nimport { useSnackbar } from \"notistack\";\nimport Axios from \"axios\";\nimport { cloneSuccess as cloneSuccessAction } from \"../../store/sc\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport useReponseErr from \"../reponseErr\";\n// import { useLocation } from 'react-router-dom';\n// import queryString from 'query-string';\n\nfunction useClone() {\n const [isCloning, setIsCloning] = useState(false);\n const [cloneSuccess, setCloneSuccess] = useState(false);\n\n const { enqueueSnackbar, closeSnackbar } = useSnackbar();\n const { responseErr } = useReponseErr();\n const dispatch = useDispatch();\n const tokenVal = useSelector((state) => state.project.bodyToken);\n\n function clone(values) {\n setIsCloning(true);\n Axios.post(\"/clone\", {\n ...values,\n ...tokenVal,\n })\n .then((res) => {\n dispatch(cloneSuccessAction(res.data));\n enqueueSnackbar(\"Clone Successful\", {\n variant: \"success\",\n });\n setCloneSuccess(true);\n setIsCloning(false);\n })\n .catch((err) => {\n setIsCloning(false);\n responseErr(err);\n });\n }\n\n if (!isCloning) {\n closeSnackbar(\"key\");\n } else {\n enqueueSnackbar(\"Kindly wait while we clone your project\", {\n persist: true,\n variant: \"default\",\n key: \"key\",\n });\n }\n\n return {\n clone,\n isCloning,\n cloneSuccess,\n };\n}\n\nexport default useClone;\n","import React, { useEffect } from \"react\";\nimport { SelectProjectText } from \"./cone.style\";\nimport localForage from \"localforage\";\nimport { ReactComponent as CloneIcon } from \"assets/Icons/copy.svg\";\nimport useClone from \"helpers/custom-hooks/clone\";\nimport { useSelector } from \"react-redux\";\nimport { Spinner } from \"components/Spinner/Spinner\";\n\nfunction CloneProject({ mode, setPage }) {\n const { clone, isCloning, cloneSuccess } = useClone();\n const currentProject = useSelector((state) => state.project.currentProject);\n\n function handleDragOver(e) {\n e.preventDefault();\n }\n\n function handleDropZone(e) {\n e.preventDefault();\n localForage.getItem(\"single_project_credentials\").then((res) => {\n clone({ ...res, project_key: currentProject.key });\n });\n }\n\n useEffect(() => {\n if (cloneSuccess) {\n setPage(2);\n }\n }, [cloneSuccess, setPage]);\n\n return (\n
    \n {currentProject && Object.keys(currentProject).length === 0 ? (\n Select a project to clone\n ) : (\n
    \n
    \n
    \n

    \n {currentProject && currentProject.name}\n

    \n \n {currentProject && currentProject.key}\n \n
    \n
    \n

    \n No of IssueTypes\n

    \n \n {currentProject &&\n currentProject.NoOfIssueTypes}\n \n
    \n
    \n
    \n

    \n No of Issues\n

    \n \n {currentProject &&\n currentProject.NoOfIssues}\n \n
    \n \n
    \n
    \n \n
    \n \n drag here to clone\n \n
    \n
    \n )}\n
    \n {isCloning ? (\n \n ) : (\n \n )}\n
    \n
    \n );\n}\n\nexport default CloneProject;\n","import React, { useState } from \"react\";\nimport { OperationStyled } from \"pages/Clone/cone.style\";\nimport { useSelector } from \"react-redux\";\nimport CloneSuccess from \"./CloneSuccess\";\nimport CloneProject from \"./CloneProject\";\n\nfunction Clone() {\n const currentProject = useSelector((state) => state.project.currentProject);\n const [page, setPage] = useState(1);\n\n let content = null;\n\n switch (page) {\n case 1:\n content = ;\n break;\n case 2:\n content = ;\n break;\n default:\n content = null;\n break;\n }\n\n return (\n \n
    \n
    \n Clone\n
    \n
    \n \n \n \n {currentProject && currentProject.name}\n \n \n
    \n
    \n
    \n
    {content}
    \n
    \n
    \n );\n}\n\nexport default Clone;\n","export default (function () {\n if (typeof navigator === 'undefined' || typeof window === 'undefined') {\n return false;\n }\n var agent = navigator.userAgent || navigator.vendor || window.opera;\n return /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(agent) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(agent === null || agent === void 0 ? void 0 : agent.substr(0, 4));\n});","import * as React from 'react';\nimport classNames from 'classnames';\nvar TransBtn = function TransBtn(props) {\n var className = props.className,\n customizeIcon = props.customizeIcon,\n customizeIconProps = props.customizeIconProps,\n children = props.children,\n _onMouseDown = props.onMouseDown,\n onClick = props.onClick;\n var icon = typeof customizeIcon === 'function' ? customizeIcon(customizeIconProps) : customizeIcon;\n return /*#__PURE__*/React.createElement(\"span\", {\n className: className,\n onMouseDown: function onMouseDown(event) {\n event.preventDefault();\n _onMouseDown === null || _onMouseDown === void 0 || _onMouseDown(event);\n },\n style: {\n userSelect: 'none',\n WebkitUserSelect: 'none'\n },\n unselectable: \"on\",\n onClick: onClick,\n \"aria-hidden\": true\n }, icon !== undefined ? icon : /*#__PURE__*/React.createElement(\"span\", {\n className: classNames(className.split(/\\s+/).map(function (cls) {\n return \"\".concat(cls, \"-icon\");\n }))\n }, children));\n};\nexport default TransBtn;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport TransBtn from \"../TransBtn\";\nimport React from 'react';\nexport var useAllowClear = function useAllowClear(prefixCls, onClearMouseDown, displayValues, allowClear, clearIcon) {\n var disabled = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;\n var mergedSearchValue = arguments.length > 6 ? arguments[6] : undefined;\n var mode = arguments.length > 7 ? arguments[7] : undefined;\n var mergedClearIcon = React.useMemo(function () {\n if (_typeof(allowClear) === 'object') {\n return allowClear.clearIcon;\n }\n if (clearIcon) {\n return clearIcon;\n }\n }, [allowClear, clearIcon]);\n var mergedAllowClear = React.useMemo(function () {\n if (!disabled && !!allowClear && (displayValues.length || mergedSearchValue) && !(mode === 'combobox' && mergedSearchValue === '')) {\n return true;\n }\n return false;\n }, [allowClear, disabled, displayValues.length, mergedSearchValue, mode]);\n return {\n allowClear: mergedAllowClear,\n clearIcon: /*#__PURE__*/React.createElement(TransBtn, {\n className: \"\".concat(prefixCls, \"-clear\"),\n onMouseDown: onClearMouseDown,\n customizeIcon: mergedClearIcon\n }, \"\\xD7\")\n };\n};","/**\n * BaseSelect provide some parsed data into context.\n * You can use this hooks to get them.\n */\n\nimport * as React from 'react';\nexport var BaseSelectContext = /*#__PURE__*/React.createContext(null);\nexport default function useBaseProps() {\n return React.useContext(BaseSelectContext);\n}","import * as React from 'react';\n\n/**\n * Locker return cached mark.\n * If set to `true`, will return `true` in a short time even if set `false`.\n * If set to `false` and then set to `true`, will change to `true`.\n * And after time duration, it will back to `null` automatically.\n */\nexport default function useLock() {\n var duration = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 250;\n var lockRef = React.useRef(null);\n var timeoutRef = React.useRef(null);\n\n // Clean up\n React.useEffect(function () {\n return function () {\n window.clearTimeout(timeoutRef.current);\n };\n }, []);\n function doLock(locked) {\n if (locked || lockRef.current === null) {\n lockRef.current = locked;\n }\n window.clearTimeout(timeoutRef.current);\n timeoutRef.current = window.setTimeout(function () {\n lockRef.current = null;\n }, duration);\n }\n return [function () {\n return lockRef.current;\n }, doLock];\n}","import * as React from 'react';\nexport var CollectionContext = /*#__PURE__*/React.createContext(null);\n/**\n * Collect all the resize event from children ResizeObserver\n */\nexport function Collection(_ref) {\n var children = _ref.children,\n onBatchResize = _ref.onBatchResize;\n var resizeIdRef = React.useRef(0);\n var resizeInfosRef = React.useRef([]);\n var onCollectionResize = React.useContext(CollectionContext);\n var onResize = React.useCallback(function (size, element, data) {\n resizeIdRef.current += 1;\n var currentId = resizeIdRef.current;\n resizeInfosRef.current.push({\n size: size,\n element: element,\n data: data\n });\n Promise.resolve().then(function () {\n if (currentId === resizeIdRef.current) {\n onBatchResize === null || onBatchResize === void 0 || onBatchResize(resizeInfosRef.current);\n resizeInfosRef.current = [];\n }\n });\n\n // Continue bubbling if parent exist\n onCollectionResize === null || onCollectionResize === void 0 || onCollectionResize(size, element, data);\n }, [onBatchResize, onCollectionResize]);\n return /*#__PURE__*/React.createElement(CollectionContext.Provider, {\n value: onResize\n }, children);\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} 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}\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 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 ().\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}\r\n */\r\n this.activeObservations_ = [];\r\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map}\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","import ResizeObserver from 'resize-observer-polyfill';\n// =============================== Const ===============================\nvar elementListeners = new Map();\nfunction onResize(entities) {\n entities.forEach(function (entity) {\n var _elementListeners$get;\n var target = entity.target;\n (_elementListeners$get = elementListeners.get(target)) === null || _elementListeners$get === void 0 || _elementListeners$get.forEach(function (listener) {\n return listener(target);\n });\n });\n}\n\n// Note: ResizeObserver polyfill not support option to measure border-box resize\nvar resizeObserver = new ResizeObserver(onResize);\n\n// Dev env only\nexport var _el = process.env.NODE_ENV !== 'production' ? elementListeners : null; // eslint-disable-line\nexport var _rs = process.env.NODE_ENV !== 'production' ? onResize : null; // eslint-disable-line\n\n// ============================== Observe ==============================\nexport function observe(element, callback) {\n if (!elementListeners.has(element)) {\n elementListeners.set(element, new Set());\n resizeObserver.observe(element);\n }\n elementListeners.get(element).add(callback);\n}\nexport function unobserve(element, callback) {\n if (elementListeners.has(element)) {\n elementListeners.get(element).delete(callback);\n if (!elementListeners.get(element).size) {\n resizeObserver.unobserve(element);\n elementListeners.delete(element);\n }\n }\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport * as React from 'react';\n/**\n * Fallback to findDOMNode if origin ref do not provide any dom element\n */\nvar DomWrapper = /*#__PURE__*/function (_React$Component) {\n _inherits(DomWrapper, _React$Component);\n var _super = _createSuper(DomWrapper);\n function DomWrapper() {\n _classCallCheck(this, DomWrapper);\n return _super.apply(this, arguments);\n }\n _createClass(DomWrapper, [{\n key: \"render\",\n value: function render() {\n return this.props.children;\n }\n }]);\n return DomWrapper;\n}(React.Component);\nexport { DomWrapper as default };","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport findDOMNode from \"rc-util/es/Dom/findDOMNode\";\nimport { supportRef, useComposeRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\nimport { CollectionContext } from \"../Collection\";\nimport { observe, unobserve } from \"../utils/observerUtil\";\nimport DomWrapper from \"./DomWrapper\";\nfunction SingleObserver(props, ref) {\n var children = props.children,\n disabled = props.disabled;\n var elementRef = React.useRef(null);\n var wrapperRef = React.useRef(null);\n var onCollectionResize = React.useContext(CollectionContext);\n\n // =========================== Children ===========================\n var isRenderProps = typeof children === 'function';\n var mergedChildren = isRenderProps ? children(elementRef) : children;\n\n // ============================= Size =============================\n var sizeRef = React.useRef({\n width: -1,\n height: -1,\n offsetWidth: -1,\n offsetHeight: -1\n });\n\n // ============================= Ref ==============================\n var canRef = !isRenderProps && /*#__PURE__*/React.isValidElement(mergedChildren) && supportRef(mergedChildren);\n var originRef = canRef ? mergedChildren.ref : null;\n var mergedRef = useComposeRef(originRef, elementRef);\n var getDom = function getDom() {\n var _elementRef$current;\n return findDOMNode(elementRef.current) || (\n // Support `nativeElement` format\n elementRef.current && _typeof(elementRef.current) === 'object' ? findDOMNode((_elementRef$current = elementRef.current) === null || _elementRef$current === void 0 ? void 0 : _elementRef$current.nativeElement) : null) || findDOMNode(wrapperRef.current);\n };\n React.useImperativeHandle(ref, function () {\n return getDom();\n });\n\n // =========================== Observe ============================\n var propsRef = React.useRef(props);\n propsRef.current = props;\n\n // Handler\n var onInternalResize = React.useCallback(function (target) {\n var _propsRef$current = propsRef.current,\n onResize = _propsRef$current.onResize,\n data = _propsRef$current.data;\n var _target$getBoundingCl = target.getBoundingClientRect(),\n width = _target$getBoundingCl.width,\n height = _target$getBoundingCl.height;\n var offsetWidth = target.offsetWidth,\n offsetHeight = target.offsetHeight;\n\n /**\n * Resize observer trigger when content size changed.\n * In most case we just care about element size,\n * let's use `boundary` instead of `contentRect` here to avoid shaking.\n */\n var fixedWidth = Math.floor(width);\n var fixedHeight = Math.floor(height);\n if (sizeRef.current.width !== fixedWidth || sizeRef.current.height !== fixedHeight || sizeRef.current.offsetWidth !== offsetWidth || sizeRef.current.offsetHeight !== offsetHeight) {\n var size = {\n width: fixedWidth,\n height: fixedHeight,\n offsetWidth: offsetWidth,\n offsetHeight: offsetHeight\n };\n sizeRef.current = size;\n\n // IE is strange, right?\n var mergedOffsetWidth = offsetWidth === Math.round(width) ? width : offsetWidth;\n var mergedOffsetHeight = offsetHeight === Math.round(height) ? height : offsetHeight;\n var sizeInfo = _objectSpread(_objectSpread({}, size), {}, {\n offsetWidth: mergedOffsetWidth,\n offsetHeight: mergedOffsetHeight\n });\n\n // Let collection know what happened\n onCollectionResize === null || onCollectionResize === void 0 || onCollectionResize(sizeInfo, target, data);\n if (onResize) {\n // defer the callback but not defer to next frame\n Promise.resolve().then(function () {\n onResize(sizeInfo, target);\n });\n }\n }\n }, []);\n\n // Dynamic observe\n React.useEffect(function () {\n var currentElement = getDom();\n if (currentElement && !disabled) {\n observe(currentElement, onInternalResize);\n }\n return function () {\n return unobserve(currentElement, onInternalResize);\n };\n }, [elementRef.current, disabled]);\n\n // ============================ Render ============================\n return /*#__PURE__*/React.createElement(DomWrapper, {\n ref: wrapperRef\n }, canRef ? /*#__PURE__*/React.cloneElement(mergedChildren, {\n ref: mergedRef\n }) : mergedChildren);\n}\nvar RefSingleObserver = /*#__PURE__*/React.forwardRef(SingleObserver);\nif (process.env.NODE_ENV !== 'production') {\n RefSingleObserver.displayName = 'SingleObserver';\n}\nexport default RefSingleObserver;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport toArray from \"rc-util/es/Children/toArray\";\nimport { warning } from \"rc-util/es/warning\";\nimport SingleObserver from \"./SingleObserver\";\nimport { Collection } from \"./Collection\";\nvar INTERNAL_PREFIX_KEY = 'rc-observer-key';\nimport { _rs } from \"./utils/observerUtil\";\nexport { /** @private Test only for mock trigger resize event */\n_rs };\nfunction ResizeObserver(props, ref) {\n var children = props.children;\n var childNodes = typeof children === 'function' ? [children] : toArray(children);\n if (process.env.NODE_ENV !== 'production') {\n if (childNodes.length > 1) {\n warning(false, 'Find more than one child node with `children` in ResizeObserver. Please use ResizeObserver.Collection instead.');\n } else if (childNodes.length === 0) {\n warning(false, '`children` of ResizeObserver is empty. Nothing is in observe.');\n }\n }\n return childNodes.map(function (child, index) {\n var key = (child === null || child === void 0 ? void 0 : child.key) || \"\".concat(INTERNAL_PREFIX_KEY, \"-\").concat(index);\n return /*#__PURE__*/React.createElement(SingleObserver, _extends({}, props, {\n key: key,\n ref: index === 0 ? ref : undefined\n }), child);\n });\n}\nvar RefResizeObserver = /*#__PURE__*/React.forwardRef(ResizeObserver);\nif (process.env.NODE_ENV !== 'production') {\n RefResizeObserver.displayName = 'ResizeObserver';\n}\nRefResizeObserver.Collection = Collection;\nexport default RefResizeObserver;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"invalidate\", \"item\", \"renderItem\", \"responsive\", \"responsiveDisabled\", \"registerSize\", \"itemKey\", \"className\", \"style\", \"children\", \"display\", \"order\", \"component\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport ResizeObserver from 'rc-resize-observer';\n// Use shared variable to save bundle size\nvar UNDEFINED = undefined;\nfunction InternalItem(props, ref) {\n var prefixCls = props.prefixCls,\n invalidate = props.invalidate,\n item = props.item,\n renderItem = props.renderItem,\n responsive = props.responsive,\n responsiveDisabled = props.responsiveDisabled,\n registerSize = props.registerSize,\n itemKey = props.itemKey,\n className = props.className,\n style = props.style,\n children = props.children,\n display = props.display,\n order = props.order,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'div' : _props$component,\n restProps = _objectWithoutProperties(props, _excluded);\n var mergedHidden = responsive && !display;\n // ================================ Effect ================================\n function internalRegisterSize(width) {\n registerSize(itemKey, width);\n }\n React.useEffect(function () {\n return function () {\n internalRegisterSize(null);\n };\n }, []);\n // ================================ Render ================================\n var childNode = renderItem && item !== UNDEFINED ? renderItem(item) : children;\n var overflowStyle;\n if (!invalidate) {\n overflowStyle = {\n opacity: mergedHidden ? 0 : 1,\n height: mergedHidden ? 0 : UNDEFINED,\n overflowY: mergedHidden ? 'hidden' : UNDEFINED,\n order: responsive ? order : UNDEFINED,\n pointerEvents: mergedHidden ? 'none' : UNDEFINED,\n position: mergedHidden ? 'absolute' : UNDEFINED\n };\n }\n var overflowProps = {};\n if (mergedHidden) {\n overflowProps['aria-hidden'] = true;\n }\n var itemNode = /*#__PURE__*/React.createElement(Component, _extends({\n className: classNames(!invalidate && prefixCls, className),\n style: _objectSpread(_objectSpread({}, overflowStyle), style)\n }, overflowProps, restProps, {\n ref: ref\n }), childNode);\n if (responsive) {\n itemNode = /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: function onResize(_ref) {\n var offsetWidth = _ref.offsetWidth;\n internalRegisterSize(offsetWidth);\n },\n disabled: responsiveDisabled\n }, itemNode);\n }\n return itemNode;\n}\nvar Item = /*#__PURE__*/React.forwardRef(InternalItem);\nItem.displayName = 'Item';\nexport default Item;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport useEvent from \"rc-util/es/hooks/useEvent\";\nimport * as React from 'react';\nimport { unstable_batchedUpdates } from 'react-dom';\nimport channelUpdate from './channelUpdate';\n/**\n * Batcher for record any `useEffectState` need update.\n */\nexport function useBatcher() {\n // Updater Trigger\n var updateFuncRef = React.useRef(null);\n // Notify update\n var notifyEffectUpdate = function notifyEffectUpdate(callback) {\n if (!updateFuncRef.current) {\n updateFuncRef.current = [];\n channelUpdate(function () {\n unstable_batchedUpdates(function () {\n updateFuncRef.current.forEach(function (fn) {\n fn();\n });\n updateFuncRef.current = null;\n });\n });\n }\n updateFuncRef.current.push(callback);\n };\n return notifyEffectUpdate;\n}\n/**\n * Trigger state update by `useLayoutEffect` to save perf.\n */\nexport default function useEffectState(notifyEffectUpdate, defaultValue) {\n // Value\n var _React$useState = React.useState(defaultValue),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n stateValue = _React$useState2[0],\n setStateValue = _React$useState2[1];\n // Set State\n var setEffectVal = useEvent(function (nextValue) {\n notifyEffectUpdate(function () {\n setStateValue(nextValue);\n });\n });\n return [stateValue, setEffectVal];\n}","import raf from \"rc-util/es/raf\";\nexport default function channelUpdate(callback) {\n if (typeof MessageChannel === 'undefined') {\n raf(callback);\n } else {\n var channel = new MessageChannel();\n channel.port1.onmessage = function () {\n return callback();\n };\n channel.port2.postMessage(undefined);\n }\n}","import React from 'react';\nexport var OverflowContext = /*#__PURE__*/React.createContext(null);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"component\"],\n _excluded2 = [\"className\"],\n _excluded3 = [\"className\"];\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport Item from './Item';\nimport { OverflowContext } from './context';\nvar InternalRawItem = function InternalRawItem(props, ref) {\n var context = React.useContext(OverflowContext);\n // Render directly when context not provided\n if (!context) {\n var _props$component = props.component,\n Component = _props$component === void 0 ? 'div' : _props$component,\n _restProps = _objectWithoutProperties(props, _excluded);\n return /*#__PURE__*/React.createElement(Component, _extends({}, _restProps, {\n ref: ref\n }));\n }\n var contextClassName = context.className,\n restContext = _objectWithoutProperties(context, _excluded2);\n var className = props.className,\n restProps = _objectWithoutProperties(props, _excluded3);\n // Do not pass context to sub item to avoid multiple measure\n return /*#__PURE__*/React.createElement(OverflowContext.Provider, {\n value: null\n }, /*#__PURE__*/React.createElement(Item, _extends({\n ref: ref,\n className: classNames(contextClassName, className)\n }, restContext, restProps)));\n};\nvar RawItem = /*#__PURE__*/React.forwardRef(InternalRawItem);\nRawItem.displayName = 'RawItem';\nexport default RawItem;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"data\", \"renderItem\", \"renderRawItem\", \"itemKey\", \"itemWidth\", \"ssr\", \"style\", \"className\", \"maxCount\", \"renderRest\", \"renderRawRest\", \"suffix\", \"component\", \"itemComponent\", \"onVisibleChange\"];\nimport * as React from 'react';\nimport { useState, useMemo, useCallback } from 'react';\nimport classNames from 'classnames';\nimport ResizeObserver from 'rc-resize-observer';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport Item from './Item';\nimport useEffectState, { useBatcher } from './hooks/useEffectState';\nimport RawItem from './RawItem';\nimport { OverflowContext } from './context';\nvar RESPONSIVE = 'responsive';\nvar INVALIDATE = 'invalidate';\nexport { OverflowContext } from './context';\nfunction defaultRenderRest(omittedItems) {\n return \"+ \".concat(omittedItems.length, \" ...\");\n}\nfunction Overflow(props, ref) {\n var _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-overflow' : _props$prefixCls,\n _props$data = props.data,\n data = _props$data === void 0 ? [] : _props$data,\n renderItem = props.renderItem,\n renderRawItem = props.renderRawItem,\n itemKey = props.itemKey,\n _props$itemWidth = props.itemWidth,\n itemWidth = _props$itemWidth === void 0 ? 10 : _props$itemWidth,\n ssr = props.ssr,\n style = props.style,\n className = props.className,\n maxCount = props.maxCount,\n renderRest = props.renderRest,\n renderRawRest = props.renderRawRest,\n suffix = props.suffix,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'div' : _props$component,\n itemComponent = props.itemComponent,\n onVisibleChange = props.onVisibleChange,\n restProps = _objectWithoutProperties(props, _excluded);\n var fullySSR = ssr === 'full';\n var notifyEffectUpdate = useBatcher();\n var _useEffectState = useEffectState(notifyEffectUpdate, null),\n _useEffectState2 = _slicedToArray(_useEffectState, 2),\n containerWidth = _useEffectState2[0],\n setContainerWidth = _useEffectState2[1];\n var mergedContainerWidth = containerWidth || 0;\n var _useEffectState3 = useEffectState(notifyEffectUpdate, new Map()),\n _useEffectState4 = _slicedToArray(_useEffectState3, 2),\n itemWidths = _useEffectState4[0],\n setItemWidths = _useEffectState4[1];\n var _useEffectState5 = useEffectState(notifyEffectUpdate, 0),\n _useEffectState6 = _slicedToArray(_useEffectState5, 2),\n prevRestWidth = _useEffectState6[0],\n setPrevRestWidth = _useEffectState6[1];\n var _useEffectState7 = useEffectState(notifyEffectUpdate, 0),\n _useEffectState8 = _slicedToArray(_useEffectState7, 2),\n restWidth = _useEffectState8[0],\n setRestWidth = _useEffectState8[1];\n var _useEffectState9 = useEffectState(notifyEffectUpdate, 0),\n _useEffectState10 = _slicedToArray(_useEffectState9, 2),\n suffixWidth = _useEffectState10[0],\n setSuffixWidth = _useEffectState10[1];\n var _useState = useState(null),\n _useState2 = _slicedToArray(_useState, 2),\n suffixFixedStart = _useState2[0],\n setSuffixFixedStart = _useState2[1];\n var _useState3 = useState(null),\n _useState4 = _slicedToArray(_useState3, 2),\n displayCount = _useState4[0],\n setDisplayCount = _useState4[1];\n var mergedDisplayCount = React.useMemo(function () {\n if (displayCount === null && fullySSR) {\n return Number.MAX_SAFE_INTEGER;\n }\n return displayCount || 0;\n }, [displayCount, containerWidth]);\n var _useState5 = useState(false),\n _useState6 = _slicedToArray(_useState5, 2),\n restReady = _useState6[0],\n setRestReady = _useState6[1];\n var itemPrefixCls = \"\".concat(prefixCls, \"-item\");\n // Always use the max width to avoid blink\n var mergedRestWidth = Math.max(prevRestWidth, restWidth);\n // ================================= Data =================================\n var isResponsive = maxCount === RESPONSIVE;\n var shouldResponsive = data.length && isResponsive;\n var invalidate = maxCount === INVALIDATE;\n /**\n * When is `responsive`, we will always render rest node to get the real width of it for calculation\n */\n var showRest = shouldResponsive || typeof maxCount === 'number' && data.length > maxCount;\n var mergedData = useMemo(function () {\n var items = data;\n if (shouldResponsive) {\n if (containerWidth === null && fullySSR) {\n items = data;\n } else {\n items = data.slice(0, Math.min(data.length, mergedContainerWidth / itemWidth));\n }\n } else if (typeof maxCount === 'number') {\n items = data.slice(0, maxCount);\n }\n return items;\n }, [data, itemWidth, containerWidth, maxCount, shouldResponsive]);\n var omittedItems = useMemo(function () {\n if (shouldResponsive) {\n return data.slice(mergedDisplayCount + 1);\n }\n return data.slice(mergedData.length);\n }, [data, mergedData, shouldResponsive, mergedDisplayCount]);\n // ================================= Item =================================\n var getKey = useCallback(function (item, index) {\n var _ref;\n if (typeof itemKey === 'function') {\n return itemKey(item);\n }\n return (_ref = itemKey && (item === null || item === void 0 ? void 0 : item[itemKey])) !== null && _ref !== void 0 ? _ref : index;\n }, [itemKey]);\n var mergedRenderItem = useCallback(renderItem || function (item) {\n return item;\n }, [renderItem]);\n function updateDisplayCount(count, suffixFixedStartVal, notReady) {\n // React 18 will sync render even when the value is same in some case.\n // We take `mergedData` as deps which may cause dead loop if it's dynamic generate.\n // ref: https://github.com/ant-design/ant-design/issues/36559\n if (displayCount === count && (suffixFixedStartVal === undefined || suffixFixedStartVal === suffixFixedStart)) {\n return;\n }\n setDisplayCount(count);\n if (!notReady) {\n setRestReady(count < data.length - 1);\n onVisibleChange === null || onVisibleChange === void 0 ? void 0 : onVisibleChange(count);\n }\n if (suffixFixedStartVal !== undefined) {\n setSuffixFixedStart(suffixFixedStartVal);\n }\n }\n // ================================= Size =================================\n function onOverflowResize(_, element) {\n setContainerWidth(element.clientWidth);\n }\n function registerSize(key, width) {\n setItemWidths(function (origin) {\n var clone = new Map(origin);\n if (width === null) {\n clone.delete(key);\n } else {\n clone.set(key, width);\n }\n return clone;\n });\n }\n function registerOverflowSize(_, width) {\n setRestWidth(width);\n setPrevRestWidth(restWidth);\n }\n function registerSuffixSize(_, width) {\n setSuffixWidth(width);\n }\n // ================================ Effect ================================\n function getItemWidth(index) {\n return itemWidths.get(getKey(mergedData[index], index));\n }\n useLayoutEffect(function () {\n if (mergedContainerWidth && typeof mergedRestWidth === 'number' && mergedData) {\n var totalWidth = suffixWidth;\n var len = mergedData.length;\n var lastIndex = len - 1;\n // When data count change to 0, reset this since not loop will reach\n if (!len) {\n updateDisplayCount(0, null);\n return;\n }\n for (var i = 0; i < len; i += 1) {\n var currentItemWidth = getItemWidth(i);\n // Fully will always render\n if (fullySSR) {\n currentItemWidth = currentItemWidth || 0;\n }\n // Break since data not ready\n if (currentItemWidth === undefined) {\n updateDisplayCount(i - 1, undefined, true);\n break;\n }\n // Find best match\n totalWidth += currentItemWidth;\n if (\n // Only one means `totalWidth` is the final width\n lastIndex === 0 && totalWidth <= mergedContainerWidth ||\n // Last two width will be the final width\n i === lastIndex - 1 && totalWidth + getItemWidth(lastIndex) <= mergedContainerWidth) {\n // Additional check if match the end\n updateDisplayCount(lastIndex, null);\n break;\n } else if (totalWidth + mergedRestWidth > mergedContainerWidth) {\n // Can not hold all the content to show rest\n updateDisplayCount(i - 1, totalWidth - currentItemWidth - suffixWidth + restWidth);\n break;\n }\n }\n if (suffix && getItemWidth(0) + suffixWidth > mergedContainerWidth) {\n setSuffixFixedStart(null);\n }\n }\n }, [mergedContainerWidth, itemWidths, restWidth, suffixWidth, getKey, mergedData]);\n // ================================ Render ================================\n var displayRest = restReady && !!omittedItems.length;\n var suffixStyle = {};\n if (suffixFixedStart !== null && shouldResponsive) {\n suffixStyle = {\n position: 'absolute',\n left: suffixFixedStart,\n top: 0\n };\n }\n var itemSharedProps = {\n prefixCls: itemPrefixCls,\n responsive: shouldResponsive,\n component: itemComponent,\n invalidate: invalidate\n };\n // >>>>> Choice render fun by `renderRawItem`\n var internalRenderItemNode = renderRawItem ? function (item, index) {\n var key = getKey(item, index);\n return /*#__PURE__*/React.createElement(OverflowContext.Provider, {\n key: key,\n value: _objectSpread(_objectSpread({}, itemSharedProps), {}, {\n order: index,\n item: item,\n itemKey: key,\n registerSize: registerSize,\n display: index <= mergedDisplayCount\n })\n }, renderRawItem(item, index));\n } : function (item, index) {\n var key = getKey(item, index);\n return /*#__PURE__*/React.createElement(Item, _extends({}, itemSharedProps, {\n order: index,\n key: key,\n item: item,\n renderItem: mergedRenderItem,\n itemKey: key,\n registerSize: registerSize,\n display: index <= mergedDisplayCount\n }));\n };\n // >>>>> Rest node\n var restNode;\n var restContextProps = {\n order: displayRest ? mergedDisplayCount : Number.MAX_SAFE_INTEGER,\n className: \"\".concat(itemPrefixCls, \"-rest\"),\n registerSize: registerOverflowSize,\n display: displayRest\n };\n if (!renderRawRest) {\n var mergedRenderRest = renderRest || defaultRenderRest;\n restNode = /*#__PURE__*/React.createElement(Item, _extends({}, itemSharedProps, restContextProps), typeof mergedRenderRest === 'function' ? mergedRenderRest(omittedItems) : mergedRenderRest);\n } else if (renderRawRest) {\n restNode = /*#__PURE__*/React.createElement(OverflowContext.Provider, {\n value: _objectSpread(_objectSpread({}, itemSharedProps), restContextProps)\n }, renderRawRest(omittedItems));\n }\n var overflowNode = /*#__PURE__*/React.createElement(Component, _extends({\n className: classNames(!invalidate && prefixCls, className),\n style: style,\n ref: ref\n }, restProps), mergedData.map(internalRenderItemNode), showRest ? restNode : null, suffix && /*#__PURE__*/React.createElement(Item, _extends({}, itemSharedProps, {\n responsive: isResponsive,\n responsiveDisabled: !shouldResponsive,\n order: mergedDisplayCount,\n className: \"\".concat(itemPrefixCls, \"-suffix\"),\n registerSize: registerSuffixSize,\n display: true,\n style: suffixStyle\n }), suffix));\n if (isResponsive) {\n overflowNode = /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: onOverflowResize,\n disabled: !shouldResponsive\n }, overflowNode);\n }\n return overflowNode;\n}\nvar ForwardOverflow = /*#__PURE__*/React.forwardRef(Overflow);\nForwardOverflow.displayName = 'Overflow';\nForwardOverflow.Item = RawItem;\nForwardOverflow.RESPONSIVE = RESPONSIVE;\nForwardOverflow.INVALIDATE = INVALIDATE;\n// Convert to generic type\nexport default ForwardOverflow;","import Overflow from './Overflow';\nexport default Overflow;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { composeRef } from \"rc-util/es/ref\";\nimport { warning } from \"rc-util/es/warning\";\nvar Input = function Input(props, ref) {\n var _inputNode2;\n var prefixCls = props.prefixCls,\n id = props.id,\n inputElement = props.inputElement,\n disabled = props.disabled,\n tabIndex = props.tabIndex,\n autoFocus = props.autoFocus,\n autoComplete = props.autoComplete,\n editable = props.editable,\n activeDescendantId = props.activeDescendantId,\n value = props.value,\n maxLength = props.maxLength,\n _onKeyDown = props.onKeyDown,\n _onMouseDown = props.onMouseDown,\n _onChange = props.onChange,\n onPaste = props.onPaste,\n _onCompositionStart = props.onCompositionStart,\n _onCompositionEnd = props.onCompositionEnd,\n open = props.open,\n attrs = props.attrs;\n var inputNode = inputElement || /*#__PURE__*/React.createElement(\"input\", null);\n var _inputNode = inputNode,\n originRef = _inputNode.ref,\n originProps = _inputNode.props;\n var onOriginKeyDown = originProps.onKeyDown,\n onOriginChange = originProps.onChange,\n onOriginMouseDown = originProps.onMouseDown,\n onOriginCompositionStart = originProps.onCompositionStart,\n onOriginCompositionEnd = originProps.onCompositionEnd,\n style = originProps.style;\n warning(!('maxLength' in inputNode.props), \"Passing 'maxLength' to input element directly may not work because input in BaseSelect is controlled.\");\n inputNode = /*#__PURE__*/React.cloneElement(inputNode, _objectSpread(_objectSpread(_objectSpread({\n type: 'search'\n }, originProps), {}, {\n // Override over origin props\n id: id,\n ref: composeRef(ref, originRef),\n disabled: disabled,\n tabIndex: tabIndex,\n autoComplete: autoComplete || 'off',\n autoFocus: autoFocus,\n className: classNames(\"\".concat(prefixCls, \"-selection-search-input\"), (_inputNode2 = inputNode) === null || _inputNode2 === void 0 || (_inputNode2 = _inputNode2.props) === null || _inputNode2 === void 0 ? void 0 : _inputNode2.className),\n role: 'combobox',\n 'aria-expanded': open || false,\n 'aria-haspopup': 'listbox',\n 'aria-owns': \"\".concat(id, \"_list\"),\n 'aria-autocomplete': 'list',\n 'aria-controls': \"\".concat(id, \"_list\"),\n 'aria-activedescendant': open ? activeDescendantId : undefined\n }, attrs), {}, {\n value: editable ? value : '',\n maxLength: maxLength,\n readOnly: !editable,\n unselectable: !editable ? 'on' : null,\n style: _objectSpread(_objectSpread({}, style), {}, {\n opacity: editable ? null : 0\n }),\n onKeyDown: function onKeyDown(event) {\n _onKeyDown(event);\n if (onOriginKeyDown) {\n onOriginKeyDown(event);\n }\n },\n onMouseDown: function onMouseDown(event) {\n _onMouseDown(event);\n if (onOriginMouseDown) {\n onOriginMouseDown(event);\n }\n },\n onChange: function onChange(event) {\n _onChange(event);\n if (onOriginChange) {\n onOriginChange(event);\n }\n },\n onCompositionStart: function onCompositionStart(event) {\n _onCompositionStart(event);\n if (onOriginCompositionStart) {\n onOriginCompositionStart(event);\n }\n },\n onCompositionEnd: function onCompositionEnd(event) {\n _onCompositionEnd(event);\n if (onOriginCompositionEnd) {\n onOriginCompositionEnd(event);\n }\n },\n onPaste: onPaste\n }));\n return inputNode;\n};\nvar RefInput = /*#__PURE__*/React.forwardRef(Input);\nif (process.env.NODE_ENV !== 'production') {\n RefInput.displayName = 'Input';\n}\nexport default RefInput;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nexport function toArray(value) {\n if (Array.isArray(value)) {\n return value;\n }\n return value !== undefined ? [value] : [];\n}\nexport var isClient = typeof window !== 'undefined' && window.document && window.document.documentElement;\n\n/** Is client side and not jsdom */\nexport var isBrowserClient = process.env.NODE_ENV !== 'test' && isClient;\nexport function hasValue(value) {\n return value !== undefined && value !== null;\n}\n\n/** combo mode no value judgment function */\nexport function isComboNoValue(value) {\n return !value && value !== 0;\n}\nfunction isTitleType(title) {\n return ['string', 'number'].includes(_typeof(title));\n}\nexport function getTitle(item) {\n var title = undefined;\n if (item) {\n if (isTitleType(item.title)) {\n title = item.title.toString();\n } else if (isTitleType(item.label)) {\n title = item.label.toString();\n }\n }\n return title;\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { useState } from 'react';\nimport classNames from 'classnames';\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nimport Overflow from 'rc-overflow';\nimport TransBtn from \"../TransBtn\";\nimport Input from \"./Input\";\nimport useLayoutEffect from \"../hooks/useLayoutEffect\";\nimport { getTitle } from \"../utils/commonUtil\";\nfunction itemKey(value) {\n var _value$key;\n return (_value$key = value.key) !== null && _value$key !== void 0 ? _value$key : value.value;\n}\nvar onPreventMouseDown = function onPreventMouseDown(event) {\n event.preventDefault();\n event.stopPropagation();\n};\nvar SelectSelector = function SelectSelector(props) {\n var id = props.id,\n prefixCls = props.prefixCls,\n values = props.values,\n open = props.open,\n searchValue = props.searchValue,\n autoClearSearchValue = props.autoClearSearchValue,\n inputRef = props.inputRef,\n placeholder = props.placeholder,\n disabled = props.disabled,\n mode = props.mode,\n showSearch = props.showSearch,\n autoFocus = props.autoFocus,\n autoComplete = props.autoComplete,\n activeDescendantId = props.activeDescendantId,\n tabIndex = props.tabIndex,\n removeIcon = props.removeIcon,\n maxTagCount = props.maxTagCount,\n maxTagTextLength = props.maxTagTextLength,\n _props$maxTagPlacehol = props.maxTagPlaceholder,\n maxTagPlaceholder = _props$maxTagPlacehol === void 0 ? function (omittedValues) {\n return \"+ \".concat(omittedValues.length, \" ...\");\n } : _props$maxTagPlacehol,\n tagRender = props.tagRender,\n onToggleOpen = props.onToggleOpen,\n onRemove = props.onRemove,\n onInputChange = props.onInputChange,\n onInputPaste = props.onInputPaste,\n onInputKeyDown = props.onInputKeyDown,\n onInputMouseDown = props.onInputMouseDown,\n onInputCompositionStart = props.onInputCompositionStart,\n onInputCompositionEnd = props.onInputCompositionEnd;\n var measureRef = React.useRef(null);\n var _useState = useState(0),\n _useState2 = _slicedToArray(_useState, 2),\n inputWidth = _useState2[0],\n setInputWidth = _useState2[1];\n var _useState3 = useState(false),\n _useState4 = _slicedToArray(_useState3, 2),\n focused = _useState4[0],\n setFocused = _useState4[1];\n var selectionPrefixCls = \"\".concat(prefixCls, \"-selection\");\n\n // ===================== Search ======================\n var inputValue = open || mode === 'multiple' && autoClearSearchValue === false || mode === 'tags' ? searchValue : '';\n var inputEditable = mode === 'tags' || mode === 'multiple' && autoClearSearchValue === false || showSearch && (open || focused);\n\n // We measure width and set to the input immediately\n useLayoutEffect(function () {\n setInputWidth(measureRef.current.scrollWidth);\n }, [inputValue]);\n\n // ===================== Render ======================\n // >>> Render Selector Node. Includes Item & Rest\n var defaultRenderSelector = function defaultRenderSelector(item, content, itemDisabled, closable, onClose) {\n return /*#__PURE__*/React.createElement(\"span\", {\n title: getTitle(item),\n className: classNames(\"\".concat(selectionPrefixCls, \"-item\"), _defineProperty({}, \"\".concat(selectionPrefixCls, \"-item-disabled\"), itemDisabled))\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(selectionPrefixCls, \"-item-content\")\n }, content), closable && /*#__PURE__*/React.createElement(TransBtn, {\n className: \"\".concat(selectionPrefixCls, \"-item-remove\"),\n onMouseDown: onPreventMouseDown,\n onClick: onClose,\n customizeIcon: removeIcon\n }, \"\\xD7\"));\n };\n var customizeRenderSelector = function customizeRenderSelector(value, content, itemDisabled, closable, onClose, isMaxTag) {\n var onMouseDown = function onMouseDown(e) {\n onPreventMouseDown(e);\n onToggleOpen(!open);\n };\n return /*#__PURE__*/React.createElement(\"span\", {\n onMouseDown: onMouseDown\n }, tagRender({\n label: content,\n value: value,\n disabled: itemDisabled,\n closable: closable,\n onClose: onClose,\n isMaxTag: !!isMaxTag\n }));\n };\n var renderItem = function renderItem(valueItem) {\n var itemDisabled = valueItem.disabled,\n label = valueItem.label,\n value = valueItem.value;\n var closable = !disabled && !itemDisabled;\n var displayLabel = label;\n if (typeof maxTagTextLength === 'number') {\n if (typeof label === 'string' || typeof label === 'number') {\n var strLabel = String(displayLabel);\n if (strLabel.length > maxTagTextLength) {\n displayLabel = \"\".concat(strLabel.slice(0, maxTagTextLength), \"...\");\n }\n }\n }\n var onClose = function onClose(event) {\n if (event) {\n event.stopPropagation();\n }\n onRemove(valueItem);\n };\n return typeof tagRender === 'function' ? customizeRenderSelector(value, displayLabel, itemDisabled, closable, onClose) : defaultRenderSelector(valueItem, displayLabel, itemDisabled, closable, onClose);\n };\n var renderRest = function renderRest(omittedValues) {\n var content = typeof maxTagPlaceholder === 'function' ? maxTagPlaceholder(omittedValues) : maxTagPlaceholder;\n return typeof tagRender === 'function' ? customizeRenderSelector(undefined, content, false, false, undefined, true) : defaultRenderSelector({\n title: content\n }, content, false);\n };\n\n // >>> Input Node\n var inputNode = /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(selectionPrefixCls, \"-search\"),\n style: {\n width: inputWidth\n },\n onFocus: function onFocus() {\n setFocused(true);\n },\n onBlur: function onBlur() {\n setFocused(false);\n }\n }, /*#__PURE__*/React.createElement(Input, {\n ref: inputRef,\n open: open,\n prefixCls: prefixCls,\n id: id,\n inputElement: null,\n disabled: disabled,\n autoFocus: autoFocus,\n autoComplete: autoComplete,\n editable: inputEditable,\n activeDescendantId: activeDescendantId,\n value: inputValue,\n onKeyDown: onInputKeyDown,\n onMouseDown: onInputMouseDown,\n onChange: onInputChange,\n onPaste: onInputPaste,\n onCompositionStart: onInputCompositionStart,\n onCompositionEnd: onInputCompositionEnd,\n tabIndex: tabIndex,\n attrs: pickAttrs(props, true)\n }), /*#__PURE__*/React.createElement(\"span\", {\n ref: measureRef,\n className: \"\".concat(selectionPrefixCls, \"-search-mirror\"),\n \"aria-hidden\": true\n }, inputValue, \"\\xA0\"));\n\n // >>> Selections\n var selectionNode = /*#__PURE__*/React.createElement(Overflow, {\n prefixCls: \"\".concat(selectionPrefixCls, \"-overflow\"),\n data: values,\n renderItem: renderItem,\n renderRest: renderRest,\n suffix: inputNode,\n itemKey: itemKey,\n maxCount: maxTagCount\n });\n return /*#__PURE__*/React.createElement(React.Fragment, null, selectionNode, !values.length && !inputValue && /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(selectionPrefixCls, \"-placeholder\")\n }, placeholder));\n};\nexport default SelectSelector;","/* eslint-disable react-hooks/rules-of-hooks */\nimport * as React from 'react';\nimport { isBrowserClient } from \"../utils/commonUtil\";\n\n/**\n * Wrap `React.useLayoutEffect` which will not throw warning message in test env\n */\nexport default function useLayoutEffect(effect, deps) {\n // Never happen in test env\n if (isBrowserClient) {\n /* istanbul ignore next */\n React.useLayoutEffect(effect, deps);\n } else {\n React.useEffect(effect, deps);\n }\n}\n/* eslint-enable */","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nimport Input from \"./Input\";\nimport { getTitle } from \"../utils/commonUtil\";\nvar SingleSelector = function SingleSelector(props) {\n var inputElement = props.inputElement,\n prefixCls = props.prefixCls,\n id = props.id,\n inputRef = props.inputRef,\n disabled = props.disabled,\n autoFocus = props.autoFocus,\n autoComplete = props.autoComplete,\n activeDescendantId = props.activeDescendantId,\n mode = props.mode,\n open = props.open,\n values = props.values,\n placeholder = props.placeholder,\n tabIndex = props.tabIndex,\n showSearch = props.showSearch,\n searchValue = props.searchValue,\n activeValue = props.activeValue,\n maxLength = props.maxLength,\n onInputKeyDown = props.onInputKeyDown,\n onInputMouseDown = props.onInputMouseDown,\n onInputChange = props.onInputChange,\n onInputPaste = props.onInputPaste,\n onInputCompositionStart = props.onInputCompositionStart,\n onInputCompositionEnd = props.onInputCompositionEnd,\n title = props.title;\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n inputChanged = _React$useState2[0],\n setInputChanged = _React$useState2[1];\n var combobox = mode === 'combobox';\n var inputEditable = combobox || showSearch;\n var item = values[0];\n var inputValue = searchValue || '';\n if (combobox && activeValue && !inputChanged) {\n inputValue = activeValue;\n }\n React.useEffect(function () {\n if (combobox) {\n setInputChanged(false);\n }\n }, [combobox, activeValue]);\n\n // Not show text when closed expect combobox mode\n var hasTextInput = mode !== 'combobox' && !open && !showSearch ? false : !!inputValue;\n\n // Get title of selection item\n var selectionTitle = title === undefined ? getTitle(item) : title;\n var placeholderNode = React.useMemo(function () {\n if (item) {\n return null;\n }\n return /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-selection-placeholder\"),\n style: hasTextInput ? {\n visibility: 'hidden'\n } : undefined\n }, placeholder);\n }, [item, hasTextInput, placeholder, prefixCls]);\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-selection-search\")\n }, /*#__PURE__*/React.createElement(Input, {\n ref: inputRef,\n prefixCls: prefixCls,\n id: id,\n open: open,\n inputElement: inputElement,\n disabled: disabled,\n autoFocus: autoFocus,\n autoComplete: autoComplete,\n editable: inputEditable,\n activeDescendantId: activeDescendantId,\n value: inputValue,\n onKeyDown: onInputKeyDown,\n onMouseDown: onInputMouseDown,\n onChange: function onChange(e) {\n setInputChanged(true);\n onInputChange(e);\n },\n onPaste: onInputPaste,\n onCompositionStart: onInputCompositionStart,\n onCompositionEnd: onInputCompositionEnd,\n tabIndex: tabIndex,\n attrs: pickAttrs(props, true),\n maxLength: combobox ? maxLength : undefined\n })), !combobox && item ? /*#__PURE__*/React.createElement(\"span\", {\n className: \"\".concat(prefixCls, \"-selection-item\"),\n title: selectionTitle\n // 当 Select 已经选中选项时,还需 selection 隐藏但留在原地占位\n // https://github.com/ant-design/ant-design/issues/27688\n // https://github.com/ant-design/ant-design/issues/41530\n ,\n style: hasTextInput ? {\n visibility: 'hidden'\n } : undefined\n }, item.label) : null, placeholderNode);\n};\nexport default SingleSelector;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\n/**\n * Cursor rule:\n * 1. Only `showSearch` enabled\n * 2. Only `open` is `true`\n * 3. When typing, set `open` to `true` which hit rule of 2\n *\n * Accessibility:\n * - https://www.w3.org/TR/wai-aria-practices/examples/combobox/aria1.1pattern/listbox-combo.html\n */\n\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport * as React from 'react';\nimport { useRef } from 'react';\nimport useLock from \"../hooks/useLock\";\nimport { isValidateOpenKey } from \"../utils/keyUtil\";\nimport MultipleSelector from \"./MultipleSelector\";\nimport SingleSelector from \"./SingleSelector\";\nvar Selector = function Selector(props, ref) {\n var inputRef = useRef(null);\n var compositionStatusRef = useRef(false);\n var prefixCls = props.prefixCls,\n open = props.open,\n mode = props.mode,\n showSearch = props.showSearch,\n tokenWithEnter = props.tokenWithEnter,\n disabled = props.disabled,\n autoClearSearchValue = props.autoClearSearchValue,\n onSearch = props.onSearch,\n onSearchSubmit = props.onSearchSubmit,\n onToggleOpen = props.onToggleOpen,\n onInputKeyDown = props.onInputKeyDown,\n domRef = props.domRef;\n\n // ======================= Ref =======================\n React.useImperativeHandle(ref, function () {\n return {\n focus: function focus(options) {\n inputRef.current.focus(options);\n },\n blur: function blur() {\n inputRef.current.blur();\n }\n };\n });\n\n // ====================== Input ======================\n var _useLock = useLock(0),\n _useLock2 = _slicedToArray(_useLock, 2),\n getInputMouseDown = _useLock2[0],\n setInputMouseDown = _useLock2[1];\n var onInternalInputKeyDown = function onInternalInputKeyDown(event) {\n var which = event.which;\n if (which === KeyCode.UP || which === KeyCode.DOWN) {\n event.preventDefault();\n }\n if (onInputKeyDown) {\n onInputKeyDown(event);\n }\n if (which === KeyCode.ENTER && mode === 'tags' && !compositionStatusRef.current && !open) {\n // When menu isn't open, OptionList won't trigger a value change\n // So when enter is pressed, the tag's input value should be emitted here to let selector know\n onSearchSubmit === null || onSearchSubmit === void 0 || onSearchSubmit(event.target.value);\n }\n if (isValidateOpenKey(which)) {\n onToggleOpen(true);\n }\n };\n\n /**\n * We can not use `findDOMNode` sine it will get warning,\n * have to use timer to check if is input element.\n */\n var onInternalInputMouseDown = function onInternalInputMouseDown() {\n setInputMouseDown(true);\n };\n\n // When paste come, ignore next onChange\n var pastedTextRef = useRef(null);\n var triggerOnSearch = function triggerOnSearch(value) {\n if (onSearch(value, true, compositionStatusRef.current) !== false) {\n onToggleOpen(true);\n }\n };\n var onInputCompositionStart = function onInputCompositionStart() {\n compositionStatusRef.current = true;\n };\n var onInputCompositionEnd = function onInputCompositionEnd(e) {\n compositionStatusRef.current = false;\n\n // Trigger search again to support `tokenSeparators` with typewriting\n if (mode !== 'combobox') {\n triggerOnSearch(e.target.value);\n }\n };\n var onInputChange = function onInputChange(event) {\n var value = event.target.value;\n\n // Pasted text should replace back to origin content\n if (tokenWithEnter && pastedTextRef.current && /[\\r\\n]/.test(pastedTextRef.current)) {\n // CRLF will be treated as a single space for input element\n var replacedText = pastedTextRef.current.replace(/[\\r\\n]+$/, '').replace(/\\r\\n/g, ' ').replace(/[\\r\\n]/g, ' ');\n value = value.replace(replacedText, pastedTextRef.current);\n }\n pastedTextRef.current = null;\n triggerOnSearch(value);\n };\n var onInputPaste = function onInputPaste(e) {\n var clipboardData = e.clipboardData;\n var value = clipboardData === null || clipboardData === void 0 ? void 0 : clipboardData.getData('text');\n pastedTextRef.current = value || '';\n };\n var onClick = function onClick(_ref) {\n var target = _ref.target;\n if (target !== inputRef.current) {\n // Should focus input if click the selector\n var isIE = document.body.style.msTouchAction !== undefined;\n if (isIE) {\n setTimeout(function () {\n inputRef.current.focus();\n });\n } else {\n inputRef.current.focus();\n }\n }\n };\n var onMouseDown = function onMouseDown(event) {\n var inputMouseDown = getInputMouseDown();\n\n // when mode is combobox and it is disabled, don't prevent default behavior\n // https://github.com/ant-design/ant-design/issues/37320\n // https://github.com/ant-design/ant-design/issues/48281\n if (event.target !== inputRef.current && !inputMouseDown && !(mode === 'combobox' && disabled)) {\n event.preventDefault();\n }\n if (mode !== 'combobox' && (!showSearch || !inputMouseDown) || !open) {\n if (open && autoClearSearchValue !== false) {\n onSearch('', true, false);\n }\n onToggleOpen();\n }\n };\n\n // ================= Inner Selector ==================\n var sharedProps = {\n inputRef: inputRef,\n onInputKeyDown: onInternalInputKeyDown,\n onInputMouseDown: onInternalInputMouseDown,\n onInputChange: onInputChange,\n onInputPaste: onInputPaste,\n onInputCompositionStart: onInputCompositionStart,\n onInputCompositionEnd: onInputCompositionEnd\n };\n var selectNode = mode === 'multiple' || mode === 'tags' ? /*#__PURE__*/React.createElement(MultipleSelector, _extends({}, props, sharedProps)) : /*#__PURE__*/React.createElement(SingleSelector, _extends({}, props, sharedProps));\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: domRef,\n className: \"\".concat(prefixCls, \"-selector\"),\n onClick: onClick,\n onMouseDown: onMouseDown\n }, selectNode);\n};\nvar ForwardSelector = /*#__PURE__*/React.forwardRef(Selector);\nif (process.env.NODE_ENV !== 'production') {\n ForwardSelector.displayName = 'Selector';\n}\nexport default ForwardSelector;","import KeyCode from \"rc-util/es/KeyCode\";\n\n/** keyCode Judgment function */\nexport function isValidateOpenKey(currentKeyCode) {\n return ![\n // System function button\n KeyCode.ESC, KeyCode.SHIFT, KeyCode.BACKSPACE, KeyCode.TAB, KeyCode.WIN_KEY, KeyCode.ALT, KeyCode.META, KeyCode.WIN_KEY_RIGHT, KeyCode.CTRL, KeyCode.SEMICOLON, KeyCode.EQUALS, KeyCode.CAPS_LOCK, KeyCode.CONTEXT_MENU,\n // F1-F12\n KeyCode.F1, KeyCode.F2, KeyCode.F3, KeyCode.F4, KeyCode.F5, KeyCode.F6, KeyCode.F7, KeyCode.F8, KeyCode.F9, KeyCode.F10, KeyCode.F11, KeyCode.F12].includes(currentKeyCode);\n}","import classNames from 'classnames';\nimport * as React from 'react';\nexport default function Arrow(props) {\n var prefixCls = props.prefixCls,\n align = props.align,\n arrow = props.arrow,\n arrowPos = props.arrowPos;\n var _ref = arrow || {},\n className = _ref.className,\n content = _ref.content;\n var _arrowPos$x = arrowPos.x,\n x = _arrowPos$x === void 0 ? 0 : _arrowPos$x,\n _arrowPos$y = arrowPos.y,\n y = _arrowPos$y === void 0 ? 0 : _arrowPos$y;\n var arrowRef = React.useRef();\n\n // Skip if no align\n if (!align || !align.points) {\n return null;\n }\n var alignStyle = {\n position: 'absolute'\n };\n\n // Skip if no need to align\n if (align.autoArrow !== false) {\n var popupPoints = align.points[0];\n var targetPoints = align.points[1];\n var popupTB = popupPoints[0];\n var popupLR = popupPoints[1];\n var targetTB = targetPoints[0];\n var targetLR = targetPoints[1];\n\n // Top & Bottom\n if (popupTB === targetTB || !['t', 'b'].includes(popupTB)) {\n alignStyle.top = y;\n } else if (popupTB === 't') {\n alignStyle.top = 0;\n } else {\n alignStyle.bottom = 0;\n }\n\n // Left & Right\n if (popupLR === targetLR || !['l', 'r'].includes(popupLR)) {\n alignStyle.left = x;\n } else if (popupLR === 'l') {\n alignStyle.left = 0;\n } else {\n alignStyle.right = 0;\n }\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: arrowRef,\n className: classNames(\"\".concat(prefixCls, \"-arrow\"), className),\n style: alignStyle\n }, content);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport * as React from 'react';\nexport default function Mask(props) {\n var prefixCls = props.prefixCls,\n open = props.open,\n zIndex = props.zIndex,\n mask = props.mask,\n motion = props.motion;\n if (!mask) {\n return null;\n }\n return /*#__PURE__*/React.createElement(CSSMotion, _extends({}, motion, {\n motionAppear: true,\n visible: open,\n removeOnLeave: true\n }), function (_ref) {\n var className = _ref.className;\n return /*#__PURE__*/React.createElement(\"div\", {\n style: {\n zIndex: zIndex\n },\n className: classNames(\"\".concat(prefixCls, \"-mask\"), className)\n });\n });\n}","import * as React from 'react';\nvar PopupContent = /*#__PURE__*/React.memo(function (_ref) {\n var children = _ref.children;\n return children;\n}, function (_, next) {\n return next.cache;\n});\nif (process.env.NODE_ENV !== 'production') {\n PopupContent.displayName = 'PopupContent';\n}\nexport default PopupContent;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport classNames from 'classnames';\nimport CSSMotion from 'rc-motion';\nimport ResizeObserver from 'rc-resize-observer';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport { composeRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\nimport Arrow from \"./Arrow\";\nimport Mask from \"./Mask\";\nimport PopupContent from \"./PopupContent\";\nvar Popup = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var popup = props.popup,\n className = props.className,\n prefixCls = props.prefixCls,\n style = props.style,\n target = props.target,\n _onVisibleChanged = props.onVisibleChanged,\n open = props.open,\n keepDom = props.keepDom,\n fresh = props.fresh,\n onClick = props.onClick,\n mask = props.mask,\n arrow = props.arrow,\n arrowPos = props.arrowPos,\n align = props.align,\n motion = props.motion,\n maskMotion = props.maskMotion,\n forceRender = props.forceRender,\n getPopupContainer = props.getPopupContainer,\n autoDestroy = props.autoDestroy,\n Portal = props.portal,\n zIndex = props.zIndex,\n onMouseEnter = props.onMouseEnter,\n onMouseLeave = props.onMouseLeave,\n onPointerEnter = props.onPointerEnter,\n ready = props.ready,\n offsetX = props.offsetX,\n offsetY = props.offsetY,\n offsetR = props.offsetR,\n offsetB = props.offsetB,\n onAlign = props.onAlign,\n onPrepare = props.onPrepare,\n stretch = props.stretch,\n targetWidth = props.targetWidth,\n targetHeight = props.targetHeight;\n var childNode = typeof popup === 'function' ? popup() : popup;\n\n // We can not remove holder only when motion finished.\n var isNodeVisible = open || keepDom;\n\n // ======================= Container ========================\n var getPopupContainerNeedParams = (getPopupContainer === null || getPopupContainer === void 0 ? void 0 : getPopupContainer.length) > 0;\n var _React$useState = React.useState(!getPopupContainer || !getPopupContainerNeedParams),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n show = _React$useState2[0],\n setShow = _React$useState2[1];\n\n // Delay to show since `getPopupContainer` need target element\n useLayoutEffect(function () {\n if (!show && getPopupContainerNeedParams && target) {\n setShow(true);\n }\n }, [show, getPopupContainerNeedParams, target]);\n\n // ========================= Render =========================\n if (!show) {\n return null;\n }\n\n // >>>>> Offset\n var AUTO = 'auto';\n var offsetStyle = {\n left: '-1000vw',\n top: '-1000vh',\n right: AUTO,\n bottom: AUTO\n };\n\n // Set align style\n if (ready || !open) {\n var _experimental;\n var points = align.points;\n var dynamicInset = align.dynamicInset || ((_experimental = align._experimental) === null || _experimental === void 0 ? void 0 : _experimental.dynamicInset);\n var alignRight = dynamicInset && points[0][1] === 'r';\n var alignBottom = dynamicInset && points[0][0] === 'b';\n if (alignRight) {\n offsetStyle.right = offsetR;\n offsetStyle.left = AUTO;\n } else {\n offsetStyle.left = offsetX;\n offsetStyle.right = AUTO;\n }\n if (alignBottom) {\n offsetStyle.bottom = offsetB;\n offsetStyle.top = AUTO;\n } else {\n offsetStyle.top = offsetY;\n offsetStyle.bottom = AUTO;\n }\n }\n\n // >>>>> Misc\n var miscStyle = {};\n if (stretch) {\n if (stretch.includes('height') && targetHeight) {\n miscStyle.height = targetHeight;\n } else if (stretch.includes('minHeight') && targetHeight) {\n miscStyle.minHeight = targetHeight;\n }\n if (stretch.includes('width') && targetWidth) {\n miscStyle.width = targetWidth;\n } else if (stretch.includes('minWidth') && targetWidth) {\n miscStyle.minWidth = targetWidth;\n }\n }\n if (!open) {\n miscStyle.pointerEvents = 'none';\n }\n return /*#__PURE__*/React.createElement(Portal, {\n open: forceRender || isNodeVisible,\n getContainer: getPopupContainer && function () {\n return getPopupContainer(target);\n },\n autoDestroy: autoDestroy\n }, /*#__PURE__*/React.createElement(Mask, {\n prefixCls: prefixCls,\n open: open,\n zIndex: zIndex,\n mask: mask,\n motion: maskMotion\n }), /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: onAlign,\n disabled: !open\n }, function (resizeObserverRef) {\n return /*#__PURE__*/React.createElement(CSSMotion, _extends({\n motionAppear: true,\n motionEnter: true,\n motionLeave: true,\n removeOnLeave: false,\n forceRender: forceRender,\n leavedClassName: \"\".concat(prefixCls, \"-hidden\")\n }, motion, {\n onAppearPrepare: onPrepare,\n onEnterPrepare: onPrepare,\n visible: open,\n onVisibleChanged: function onVisibleChanged(nextVisible) {\n var _motion$onVisibleChan;\n motion === null || motion === void 0 || (_motion$onVisibleChan = motion.onVisibleChanged) === null || _motion$onVisibleChan === void 0 || _motion$onVisibleChan.call(motion, nextVisible);\n _onVisibleChanged(nextVisible);\n }\n }), function (_ref, motionRef) {\n var motionClassName = _ref.className,\n motionStyle = _ref.style;\n var cls = classNames(prefixCls, motionClassName, className);\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: composeRef(resizeObserverRef, ref, motionRef),\n className: cls,\n style: _objectSpread(_objectSpread(_objectSpread(_objectSpread({\n '--arrow-x': \"\".concat(arrowPos.x || 0, \"px\"),\n '--arrow-y': \"\".concat(arrowPos.y || 0, \"px\")\n }, offsetStyle), miscStyle), motionStyle), {}, {\n boxSizing: 'border-box',\n zIndex: zIndex\n }, style),\n onMouseEnter: onMouseEnter,\n onMouseLeave: onMouseLeave,\n onPointerEnter: onPointerEnter,\n onClick: onClick\n }, arrow && /*#__PURE__*/React.createElement(Arrow, {\n prefixCls: prefixCls,\n arrow: arrow,\n arrowPos: arrowPos,\n align: align\n }), /*#__PURE__*/React.createElement(PopupContent, {\n cache: !open && !fresh\n }, childNode));\n });\n }));\n});\nif (process.env.NODE_ENV !== 'production') {\n Popup.displayName = 'Popup';\n}\nexport default Popup;","import { fillRef, supportRef, useComposeRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\nvar TriggerWrapper = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var children = props.children,\n getTriggerDOMNode = props.getTriggerDOMNode;\n var canUseRef = supportRef(children);\n\n // When use `getTriggerDOMNode`, we should do additional work to get the real dom\n var setRef = React.useCallback(function (node) {\n fillRef(ref, getTriggerDOMNode ? getTriggerDOMNode(node) : node);\n }, [getTriggerDOMNode]);\n var mergedRef = useComposeRef(setRef, children.ref);\n return canUseRef ? /*#__PURE__*/React.cloneElement(children, {\n ref: mergedRef\n }) : children;\n});\nif (process.env.NODE_ENV !== 'production') {\n TriggerWrapper.displayName = 'TriggerWrapper';\n}\nexport default TriggerWrapper;","import * as React from 'react';\nvar TriggerContext = /*#__PURE__*/React.createContext(null);\nexport default TriggerContext;","import * as React from 'react';\nfunction toArray(val) {\n return val ? Array.isArray(val) ? val : [val] : [];\n}\nexport default function useAction(mobile, action, showAction, hideAction) {\n return React.useMemo(function () {\n var mergedShowAction = toArray(showAction !== null && showAction !== void 0 ? showAction : action);\n var mergedHideAction = toArray(hideAction !== null && hideAction !== void 0 ? hideAction : action);\n var showActionSet = new Set(mergedShowAction);\n var hideActionSet = new Set(mergedHideAction);\n if (mobile) {\n if (showActionSet.has('hover')) {\n showActionSet.delete('hover');\n showActionSet.add('click');\n }\n if (hideActionSet.has('hover')) {\n hideActionSet.delete('hover');\n hideActionSet.add('click');\n }\n }\n return [showActionSet, hideActionSet];\n }, [mobile, action, showAction, hideAction]);\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nfunction isPointsEq() {\n var a1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var a2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var isAlignPoint = arguments.length > 2 ? arguments[2] : undefined;\n if (isAlignPoint) {\n return a1[0] === a2[0];\n }\n return a1[0] === a2[0] && a1[1] === a2[1];\n}\nexport function getAlignPopupClassName(builtinPlacements, prefixCls, align, isAlignPoint) {\n var points = align.points;\n var placements = Object.keys(builtinPlacements);\n for (var i = 0; i < placements.length; i += 1) {\n var _builtinPlacements$pl;\n var placement = placements[i];\n if (isPointsEq((_builtinPlacements$pl = builtinPlacements[placement]) === null || _builtinPlacements$pl === void 0 ? void 0 : _builtinPlacements$pl.points, points, isAlignPoint)) {\n return \"\".concat(prefixCls, \"-placement-\").concat(placement);\n }\n }\n return '';\n}\n\n/** @deprecated We should not use this if we can refactor all deps */\nexport function getMotion(prefixCls, motion, animation, transitionName) {\n if (motion) {\n return motion;\n }\n if (animation) {\n return {\n motionName: \"\".concat(prefixCls, \"-\").concat(animation)\n };\n }\n if (transitionName) {\n return {\n motionName: transitionName\n };\n }\n return null;\n}\nexport function getWin(ele) {\n return ele.ownerDocument.defaultView;\n}\n\n/**\n * Get all the scrollable parent elements of the element\n * @param ele The element to be detected\n * @param areaOnly Only return the parent which will cut visible area\n */\nexport function collectScroller(ele) {\n var scrollerList = [];\n var current = ele === null || ele === void 0 ? void 0 : ele.parentElement;\n var scrollStyle = ['hidden', 'scroll', 'clip', 'auto'];\n while (current) {\n var _getWin$getComputedSt = getWin(current).getComputedStyle(current),\n overflowX = _getWin$getComputedSt.overflowX,\n overflowY = _getWin$getComputedSt.overflowY,\n overflow = _getWin$getComputedSt.overflow;\n if ([overflowX, overflowY, overflow].some(function (o) {\n return scrollStyle.includes(o);\n })) {\n scrollerList.push(current);\n }\n current = current.parentElement;\n }\n return scrollerList;\n}\nexport function toNum(num) {\n var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n return Number.isNaN(num) ? defaultValue : num;\n}\nfunction getPxValue(val) {\n return toNum(parseFloat(val), 0);\n}\n/**\n *\n *\n * **************************************\n * * Border *\n * * ************************** *\n * * * * * *\n * * B * * S * B *\n * * o * * c * o *\n * * r * Content * r * r *\n * * d * * o * d *\n * * e * * l * e *\n * * r ******************** l * r *\n * * * Scroll * *\n * * ************************** *\n * * Border *\n * **************************************\n *\n */\n/**\n * Get visible area of element\n */\nexport function getVisibleArea(initArea, scrollerList) {\n var visibleArea = _objectSpread({}, initArea);\n (scrollerList || []).forEach(function (ele) {\n if (ele instanceof HTMLBodyElement || ele instanceof HTMLHtmlElement) {\n return;\n }\n\n // Skip if static position which will not affect visible area\n var _getWin$getComputedSt2 = getWin(ele).getComputedStyle(ele),\n overflow = _getWin$getComputedSt2.overflow,\n overflowClipMargin = _getWin$getComputedSt2.overflowClipMargin,\n borderTopWidth = _getWin$getComputedSt2.borderTopWidth,\n borderBottomWidth = _getWin$getComputedSt2.borderBottomWidth,\n borderLeftWidth = _getWin$getComputedSt2.borderLeftWidth,\n borderRightWidth = _getWin$getComputedSt2.borderRightWidth;\n var eleRect = ele.getBoundingClientRect();\n var eleOutHeight = ele.offsetHeight,\n eleInnerHeight = ele.clientHeight,\n eleOutWidth = ele.offsetWidth,\n eleInnerWidth = ele.clientWidth;\n var borderTopNum = getPxValue(borderTopWidth);\n var borderBottomNum = getPxValue(borderBottomWidth);\n var borderLeftNum = getPxValue(borderLeftWidth);\n var borderRightNum = getPxValue(borderRightWidth);\n var scaleX = toNum(Math.round(eleRect.width / eleOutWidth * 1000) / 1000);\n var scaleY = toNum(Math.round(eleRect.height / eleOutHeight * 1000) / 1000);\n\n // Original visible area\n var eleScrollWidth = (eleOutWidth - eleInnerWidth - borderLeftNum - borderRightNum) * scaleX;\n var eleScrollHeight = (eleOutHeight - eleInnerHeight - borderTopNum - borderBottomNum) * scaleY;\n\n // Cut border size\n var scaledBorderTopWidth = borderTopNum * scaleY;\n var scaledBorderBottomWidth = borderBottomNum * scaleY;\n var scaledBorderLeftWidth = borderLeftNum * scaleX;\n var scaledBorderRightWidth = borderRightNum * scaleX;\n\n // Clip margin\n var clipMarginWidth = 0;\n var clipMarginHeight = 0;\n if (overflow === 'clip') {\n var clipNum = getPxValue(overflowClipMargin);\n clipMarginWidth = clipNum * scaleX;\n clipMarginHeight = clipNum * scaleY;\n }\n\n // Region\n var eleLeft = eleRect.x + scaledBorderLeftWidth - clipMarginWidth;\n var eleTop = eleRect.y + scaledBorderTopWidth - clipMarginHeight;\n var eleRight = eleLeft + eleRect.width + 2 * clipMarginWidth - scaledBorderLeftWidth - scaledBorderRightWidth - eleScrollWidth;\n var eleBottom = eleTop + eleRect.height + 2 * clipMarginHeight - scaledBorderTopWidth - scaledBorderBottomWidth - eleScrollHeight;\n visibleArea.left = Math.max(visibleArea.left, eleLeft);\n visibleArea.top = Math.max(visibleArea.top, eleTop);\n visibleArea.right = Math.min(visibleArea.right, eleRight);\n visibleArea.bottom = Math.min(visibleArea.bottom, eleBottom);\n });\n return visibleArea;\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { isDOM } from \"rc-util/es/Dom/findDOMNode\";\nimport isVisible from \"rc-util/es/Dom/isVisible\";\nimport useEvent from \"rc-util/es/hooks/useEvent\";\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport * as React from 'react';\nimport { collectScroller, getVisibleArea, getWin, toNum } from \"../util\";\nfunction getUnitOffset(size) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var offsetStr = \"\".concat(offset);\n var cells = offsetStr.match(/^(.*)\\%$/);\n if (cells) {\n return size * (parseFloat(cells[1]) / 100);\n }\n return parseFloat(offsetStr);\n}\nfunction getNumberOffset(rect, offset) {\n var _ref = offset || [],\n _ref2 = _slicedToArray(_ref, 2),\n offsetX = _ref2[0],\n offsetY = _ref2[1];\n return [getUnitOffset(rect.width, offsetX), getUnitOffset(rect.height, offsetY)];\n}\nfunction splitPoints() {\n var points = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n return [points[0], points[1]];\n}\nfunction getAlignPoint(rect, points) {\n var topBottom = points[0];\n var leftRight = points[1];\n var x;\n var y;\n\n // Top & Bottom\n if (topBottom === 't') {\n y = rect.y;\n } else if (topBottom === 'b') {\n y = rect.y + rect.height;\n } else {\n y = rect.y + rect.height / 2;\n }\n\n // Left & Right\n if (leftRight === 'l') {\n x = rect.x;\n } else if (leftRight === 'r') {\n x = rect.x + rect.width;\n } else {\n x = rect.x + rect.width / 2;\n }\n return {\n x: x,\n y: y\n };\n}\nfunction reversePoints(points, index) {\n var reverseMap = {\n t: 'b',\n b: 't',\n l: 'r',\n r: 'l'\n };\n return points.map(function (point, i) {\n if (i === index) {\n return reverseMap[point] || 'c';\n }\n return point;\n }).join('');\n}\nexport default function useAlign(open, popupEle, target, placement, builtinPlacements, popupAlign, onPopupAlign) {\n var _React$useState = React.useState({\n ready: false,\n offsetX: 0,\n offsetY: 0,\n offsetR: 0,\n offsetB: 0,\n arrowX: 0,\n arrowY: 0,\n scaleX: 1,\n scaleY: 1,\n align: builtinPlacements[placement] || {}\n }),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n offsetInfo = _React$useState2[0],\n setOffsetInfo = _React$useState2[1];\n var alignCountRef = React.useRef(0);\n var scrollerList = React.useMemo(function () {\n if (!popupEle) {\n return [];\n }\n return collectScroller(popupEle);\n }, [popupEle]);\n\n // ========================= Flip ==========================\n // We will memo flip info.\n // If size change to make flip, it will memo the flip info and use it in next align.\n var prevFlipRef = React.useRef({});\n var resetFlipCache = function resetFlipCache() {\n prevFlipRef.current = {};\n };\n if (!open) {\n resetFlipCache();\n }\n\n // ========================= Align =========================\n var onAlign = useEvent(function () {\n if (popupEle && target && open) {\n var _popupElement$parentE, _popupRect$x, _popupRect$y, _popupElement$parentE2;\n var popupElement = popupEle;\n var doc = popupElement.ownerDocument;\n var win = getWin(popupElement);\n var _win$getComputedStyle = win.getComputedStyle(popupElement),\n width = _win$getComputedStyle.width,\n height = _win$getComputedStyle.height,\n popupPosition = _win$getComputedStyle.position;\n var originLeft = popupElement.style.left;\n var originTop = popupElement.style.top;\n var originRight = popupElement.style.right;\n var originBottom = popupElement.style.bottom;\n var originOverflow = popupElement.style.overflow;\n\n // Placement\n var placementInfo = _objectSpread(_objectSpread({}, builtinPlacements[placement]), popupAlign);\n\n // placeholder element\n var placeholderElement = doc.createElement('div');\n (_popupElement$parentE = popupElement.parentElement) === null || _popupElement$parentE === void 0 || _popupElement$parentE.appendChild(placeholderElement);\n placeholderElement.style.left = \"\".concat(popupElement.offsetLeft, \"px\");\n placeholderElement.style.top = \"\".concat(popupElement.offsetTop, \"px\");\n placeholderElement.style.position = popupPosition;\n placeholderElement.style.height = \"\".concat(popupElement.offsetHeight, \"px\");\n placeholderElement.style.width = \"\".concat(popupElement.offsetWidth, \"px\");\n\n // Reset first\n popupElement.style.left = '0';\n popupElement.style.top = '0';\n popupElement.style.right = 'auto';\n popupElement.style.bottom = 'auto';\n popupElement.style.overflow = 'hidden';\n\n // Calculate align style, we should consider `transform` case\n var targetRect;\n if (Array.isArray(target)) {\n targetRect = {\n x: target[0],\n y: target[1],\n width: 0,\n height: 0\n };\n } else {\n var _rect$x, _rect$y;\n var rect = target.getBoundingClientRect();\n rect.x = (_rect$x = rect.x) !== null && _rect$x !== void 0 ? _rect$x : rect.left;\n rect.y = (_rect$y = rect.y) !== null && _rect$y !== void 0 ? _rect$y : rect.top;\n targetRect = {\n x: rect.x,\n y: rect.y,\n width: rect.width,\n height: rect.height\n };\n }\n var popupRect = popupElement.getBoundingClientRect();\n popupRect.x = (_popupRect$x = popupRect.x) !== null && _popupRect$x !== void 0 ? _popupRect$x : popupRect.left;\n popupRect.y = (_popupRect$y = popupRect.y) !== null && _popupRect$y !== void 0 ? _popupRect$y : popupRect.top;\n var _doc$documentElement = doc.documentElement,\n clientWidth = _doc$documentElement.clientWidth,\n clientHeight = _doc$documentElement.clientHeight,\n scrollWidth = _doc$documentElement.scrollWidth,\n scrollHeight = _doc$documentElement.scrollHeight,\n scrollTop = _doc$documentElement.scrollTop,\n scrollLeft = _doc$documentElement.scrollLeft;\n var popupHeight = popupRect.height;\n var popupWidth = popupRect.width;\n var targetHeight = targetRect.height;\n var targetWidth = targetRect.width;\n\n // Get bounding of visible area\n var visibleRegion = {\n left: 0,\n top: 0,\n right: clientWidth,\n bottom: clientHeight\n };\n var scrollRegion = {\n left: -scrollLeft,\n top: -scrollTop,\n right: scrollWidth - scrollLeft,\n bottom: scrollHeight - scrollTop\n };\n var htmlRegion = placementInfo.htmlRegion;\n var VISIBLE = 'visible';\n var VISIBLE_FIRST = 'visibleFirst';\n if (htmlRegion !== 'scroll' && htmlRegion !== VISIBLE_FIRST) {\n htmlRegion = VISIBLE;\n }\n var isVisibleFirst = htmlRegion === VISIBLE_FIRST;\n var scrollRegionArea = getVisibleArea(scrollRegion, scrollerList);\n var visibleRegionArea = getVisibleArea(visibleRegion, scrollerList);\n var visibleArea = htmlRegion === VISIBLE ? visibleRegionArea : scrollRegionArea;\n\n // When set to `visibleFirst`,\n // the check `adjust` logic will use `visibleRegion` for check first.\n var adjustCheckVisibleArea = isVisibleFirst ? visibleRegionArea : visibleArea;\n\n // Record right & bottom align data\n popupElement.style.left = 'auto';\n popupElement.style.top = 'auto';\n popupElement.style.right = '0';\n popupElement.style.bottom = '0';\n var popupMirrorRect = popupElement.getBoundingClientRect();\n\n // Reset back\n popupElement.style.left = originLeft;\n popupElement.style.top = originTop;\n popupElement.style.right = originRight;\n popupElement.style.bottom = originBottom;\n popupElement.style.overflow = originOverflow;\n (_popupElement$parentE2 = popupElement.parentElement) === null || _popupElement$parentE2 === void 0 || _popupElement$parentE2.removeChild(placeholderElement);\n\n // Calculate scale\n var _scaleX = toNum(Math.round(popupWidth / parseFloat(width) * 1000) / 1000);\n var _scaleY = toNum(Math.round(popupHeight / parseFloat(height) * 1000) / 1000);\n\n // No need to align since it's not visible in view\n if (_scaleX === 0 || _scaleY === 0 || isDOM(target) && !isVisible(target)) {\n return;\n }\n\n // Offset\n var offset = placementInfo.offset,\n targetOffset = placementInfo.targetOffset;\n var _getNumberOffset = getNumberOffset(popupRect, offset),\n _getNumberOffset2 = _slicedToArray(_getNumberOffset, 2),\n popupOffsetX = _getNumberOffset2[0],\n popupOffsetY = _getNumberOffset2[1];\n var _getNumberOffset3 = getNumberOffset(targetRect, targetOffset),\n _getNumberOffset4 = _slicedToArray(_getNumberOffset3, 2),\n targetOffsetX = _getNumberOffset4[0],\n targetOffsetY = _getNumberOffset4[1];\n targetRect.x -= targetOffsetX;\n targetRect.y -= targetOffsetY;\n\n // Points\n var _ref3 = placementInfo.points || [],\n _ref4 = _slicedToArray(_ref3, 2),\n popupPoint = _ref4[0],\n targetPoint = _ref4[1];\n var targetPoints = splitPoints(targetPoint);\n var popupPoints = splitPoints(popupPoint);\n var targetAlignPoint = getAlignPoint(targetRect, targetPoints);\n var popupAlignPoint = getAlignPoint(popupRect, popupPoints);\n\n // Real align info may not same as origin one\n var nextAlignInfo = _objectSpread({}, placementInfo);\n\n // Next Offset\n var nextOffsetX = targetAlignPoint.x - popupAlignPoint.x + popupOffsetX;\n var nextOffsetY = targetAlignPoint.y - popupAlignPoint.y + popupOffsetY;\n\n // ============== Intersection ===============\n // Get area by position. Used for check if flip area is better\n function getIntersectionVisibleArea(offsetX, offsetY) {\n var area = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : visibleArea;\n var l = popupRect.x + offsetX;\n var t = popupRect.y + offsetY;\n var r = l + popupWidth;\n var b = t + popupHeight;\n var visibleL = Math.max(l, area.left);\n var visibleT = Math.max(t, area.top);\n var visibleR = Math.min(r, area.right);\n var visibleB = Math.min(b, area.bottom);\n return Math.max(0, (visibleR - visibleL) * (visibleB - visibleT));\n }\n var originIntersectionVisibleArea = getIntersectionVisibleArea(nextOffsetX, nextOffsetY);\n\n // As `visibleFirst`, we prepare this for check\n var originIntersectionRecommendArea = getIntersectionVisibleArea(nextOffsetX, nextOffsetY, visibleRegionArea);\n\n // ========================== Overflow ===========================\n var targetAlignPointTL = getAlignPoint(targetRect, ['t', 'l']);\n var popupAlignPointTL = getAlignPoint(popupRect, ['t', 'l']);\n var targetAlignPointBR = getAlignPoint(targetRect, ['b', 'r']);\n var popupAlignPointBR = getAlignPoint(popupRect, ['b', 'r']);\n var overflow = placementInfo.overflow || {};\n var adjustX = overflow.adjustX,\n adjustY = overflow.adjustY,\n shiftX = overflow.shiftX,\n shiftY = overflow.shiftY;\n var supportAdjust = function supportAdjust(val) {\n if (typeof val === 'boolean') {\n return val;\n }\n return val >= 0;\n };\n\n // Prepare position\n var nextPopupY;\n var nextPopupBottom;\n var nextPopupX;\n var nextPopupRight;\n function syncNextPopupPosition() {\n nextPopupY = popupRect.y + nextOffsetY;\n nextPopupBottom = nextPopupY + popupHeight;\n nextPopupX = popupRect.x + nextOffsetX;\n nextPopupRight = nextPopupX + popupWidth;\n }\n syncNextPopupPosition();\n\n // >>>>>>>>>> Top & Bottom\n var needAdjustY = supportAdjust(adjustY);\n var sameTB = popupPoints[0] === targetPoints[0];\n\n // Bottom to Top\n if (needAdjustY && popupPoints[0] === 't' && (nextPopupBottom > adjustCheckVisibleArea.bottom || prevFlipRef.current.bt)) {\n var tmpNextOffsetY = nextOffsetY;\n if (sameTB) {\n tmpNextOffsetY -= popupHeight - targetHeight;\n } else {\n tmpNextOffsetY = targetAlignPointTL.y - popupAlignPointBR.y - popupOffsetY;\n }\n var newVisibleArea = getIntersectionVisibleArea(nextOffsetX, tmpNextOffsetY);\n var newVisibleRecommendArea = getIntersectionVisibleArea(nextOffsetX, tmpNextOffsetY, visibleRegionArea);\n if (\n // Of course use larger one\n newVisibleArea > originIntersectionVisibleArea || newVisibleArea === originIntersectionVisibleArea && (!isVisibleFirst ||\n // Choose recommend one\n newVisibleRecommendArea >= originIntersectionRecommendArea)) {\n prevFlipRef.current.bt = true;\n nextOffsetY = tmpNextOffsetY;\n popupOffsetY = -popupOffsetY;\n nextAlignInfo.points = [reversePoints(popupPoints, 0), reversePoints(targetPoints, 0)];\n } else {\n prevFlipRef.current.bt = false;\n }\n }\n\n // Top to Bottom\n if (needAdjustY && popupPoints[0] === 'b' && (nextPopupY < adjustCheckVisibleArea.top || prevFlipRef.current.tb)) {\n var _tmpNextOffsetY = nextOffsetY;\n if (sameTB) {\n _tmpNextOffsetY += popupHeight - targetHeight;\n } else {\n _tmpNextOffsetY = targetAlignPointBR.y - popupAlignPointTL.y - popupOffsetY;\n }\n var _newVisibleArea = getIntersectionVisibleArea(nextOffsetX, _tmpNextOffsetY);\n var _newVisibleRecommendArea = getIntersectionVisibleArea(nextOffsetX, _tmpNextOffsetY, visibleRegionArea);\n if (\n // Of course use larger one\n _newVisibleArea > originIntersectionVisibleArea || _newVisibleArea === originIntersectionVisibleArea && (!isVisibleFirst ||\n // Choose recommend one\n _newVisibleRecommendArea >= originIntersectionRecommendArea)) {\n prevFlipRef.current.tb = true;\n nextOffsetY = _tmpNextOffsetY;\n popupOffsetY = -popupOffsetY;\n nextAlignInfo.points = [reversePoints(popupPoints, 0), reversePoints(targetPoints, 0)];\n } else {\n prevFlipRef.current.tb = false;\n }\n }\n\n // >>>>>>>>>> Left & Right\n var needAdjustX = supportAdjust(adjustX);\n\n // >>>>> Flip\n var sameLR = popupPoints[1] === targetPoints[1];\n\n // Right to Left\n if (needAdjustX && popupPoints[1] === 'l' && (nextPopupRight > adjustCheckVisibleArea.right || prevFlipRef.current.rl)) {\n var tmpNextOffsetX = nextOffsetX;\n if (sameLR) {\n tmpNextOffsetX -= popupWidth - targetWidth;\n } else {\n tmpNextOffsetX = targetAlignPointTL.x - popupAlignPointBR.x - popupOffsetX;\n }\n var _newVisibleArea2 = getIntersectionVisibleArea(tmpNextOffsetX, nextOffsetY);\n var _newVisibleRecommendArea2 = getIntersectionVisibleArea(tmpNextOffsetX, nextOffsetY, visibleRegionArea);\n if (\n // Of course use larger one\n _newVisibleArea2 > originIntersectionVisibleArea || _newVisibleArea2 === originIntersectionVisibleArea && (!isVisibleFirst ||\n // Choose recommend one\n _newVisibleRecommendArea2 >= originIntersectionRecommendArea)) {\n prevFlipRef.current.rl = true;\n nextOffsetX = tmpNextOffsetX;\n popupOffsetX = -popupOffsetX;\n nextAlignInfo.points = [reversePoints(popupPoints, 1), reversePoints(targetPoints, 1)];\n } else {\n prevFlipRef.current.rl = false;\n }\n }\n\n // Left to Right\n if (needAdjustX && popupPoints[1] === 'r' && (nextPopupX < adjustCheckVisibleArea.left || prevFlipRef.current.lr)) {\n var _tmpNextOffsetX = nextOffsetX;\n if (sameLR) {\n _tmpNextOffsetX += popupWidth - targetWidth;\n } else {\n _tmpNextOffsetX = targetAlignPointBR.x - popupAlignPointTL.x - popupOffsetX;\n }\n var _newVisibleArea3 = getIntersectionVisibleArea(_tmpNextOffsetX, nextOffsetY);\n var _newVisibleRecommendArea3 = getIntersectionVisibleArea(_tmpNextOffsetX, nextOffsetY, visibleRegionArea);\n if (\n // Of course use larger one\n _newVisibleArea3 > originIntersectionVisibleArea || _newVisibleArea3 === originIntersectionVisibleArea && (!isVisibleFirst ||\n // Choose recommend one\n _newVisibleRecommendArea3 >= originIntersectionRecommendArea)) {\n prevFlipRef.current.lr = true;\n nextOffsetX = _tmpNextOffsetX;\n popupOffsetX = -popupOffsetX;\n nextAlignInfo.points = [reversePoints(popupPoints, 1), reversePoints(targetPoints, 1)];\n } else {\n prevFlipRef.current.lr = false;\n }\n }\n\n // ============================ Shift ============================\n syncNextPopupPosition();\n var numShiftX = shiftX === true ? 0 : shiftX;\n if (typeof numShiftX === 'number') {\n // Left\n if (nextPopupX < visibleRegionArea.left) {\n nextOffsetX -= nextPopupX - visibleRegionArea.left - popupOffsetX;\n if (targetRect.x + targetWidth < visibleRegionArea.left + numShiftX) {\n nextOffsetX += targetRect.x - visibleRegionArea.left + targetWidth - numShiftX;\n }\n }\n\n // Right\n if (nextPopupRight > visibleRegionArea.right) {\n nextOffsetX -= nextPopupRight - visibleRegionArea.right - popupOffsetX;\n if (targetRect.x > visibleRegionArea.right - numShiftX) {\n nextOffsetX += targetRect.x - visibleRegionArea.right + numShiftX;\n }\n }\n }\n var numShiftY = shiftY === true ? 0 : shiftY;\n if (typeof numShiftY === 'number') {\n // Top\n if (nextPopupY < visibleRegionArea.top) {\n nextOffsetY -= nextPopupY - visibleRegionArea.top - popupOffsetY;\n\n // When target if far away from visible area\n // Stop shift\n if (targetRect.y + targetHeight < visibleRegionArea.top + numShiftY) {\n nextOffsetY += targetRect.y - visibleRegionArea.top + targetHeight - numShiftY;\n }\n }\n\n // Bottom\n if (nextPopupBottom > visibleRegionArea.bottom) {\n nextOffsetY -= nextPopupBottom - visibleRegionArea.bottom - popupOffsetY;\n if (targetRect.y > visibleRegionArea.bottom - numShiftY) {\n nextOffsetY += targetRect.y - visibleRegionArea.bottom + numShiftY;\n }\n }\n }\n\n // ============================ Arrow ============================\n // Arrow center align\n var popupLeft = popupRect.x + nextOffsetX;\n var popupRight = popupLeft + popupWidth;\n var popupTop = popupRect.y + nextOffsetY;\n var popupBottom = popupTop + popupHeight;\n var targetLeft = targetRect.x;\n var targetRight = targetLeft + targetWidth;\n var targetTop = targetRect.y;\n var targetBottom = targetTop + targetHeight;\n var maxLeft = Math.max(popupLeft, targetLeft);\n var minRight = Math.min(popupRight, targetRight);\n var xCenter = (maxLeft + minRight) / 2;\n var nextArrowX = xCenter - popupLeft;\n var maxTop = Math.max(popupTop, targetTop);\n var minBottom = Math.min(popupBottom, targetBottom);\n var yCenter = (maxTop + minBottom) / 2;\n var nextArrowY = yCenter - popupTop;\n onPopupAlign === null || onPopupAlign === void 0 || onPopupAlign(popupEle, nextAlignInfo);\n\n // Additional calculate right & bottom position\n var offsetX4Right = popupMirrorRect.right - popupRect.x - (nextOffsetX + popupRect.width);\n var offsetY4Bottom = popupMirrorRect.bottom - popupRect.y - (nextOffsetY + popupRect.height);\n if (_scaleX === 1) {\n nextOffsetX = Math.round(nextOffsetX);\n offsetX4Right = Math.round(offsetX4Right);\n }\n if (_scaleY === 1) {\n nextOffsetY = Math.round(nextOffsetY);\n offsetY4Bottom = Math.round(offsetY4Bottom);\n }\n var nextOffsetInfo = {\n ready: true,\n offsetX: nextOffsetX / _scaleX,\n offsetY: nextOffsetY / _scaleY,\n offsetR: offsetX4Right / _scaleX,\n offsetB: offsetY4Bottom / _scaleY,\n arrowX: nextArrowX / _scaleX,\n arrowY: nextArrowY / _scaleY,\n scaleX: _scaleX,\n scaleY: _scaleY,\n align: nextAlignInfo\n };\n setOffsetInfo(nextOffsetInfo);\n }\n });\n var triggerAlign = function triggerAlign() {\n alignCountRef.current += 1;\n var id = alignCountRef.current;\n\n // Merge all align requirement into one frame\n Promise.resolve().then(function () {\n if (alignCountRef.current === id) {\n onAlign();\n }\n });\n };\n\n // Reset ready status when placement & open changed\n var resetReady = function resetReady() {\n setOffsetInfo(function (ori) {\n return _objectSpread(_objectSpread({}, ori), {}, {\n ready: false\n });\n });\n };\n useLayoutEffect(resetReady, [placement]);\n useLayoutEffect(function () {\n if (!open) {\n resetReady();\n }\n }, [open]);\n return [offsetInfo.ready, offsetInfo.offsetX, offsetInfo.offsetY, offsetInfo.offsetR, offsetInfo.offsetB, offsetInfo.arrowX, offsetInfo.arrowY, offsetInfo.scaleX, offsetInfo.scaleY, offsetInfo.align, triggerAlign];\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"children\", \"action\", \"showAction\", \"hideAction\", \"popupVisible\", \"defaultPopupVisible\", \"onPopupVisibleChange\", \"afterPopupVisibleChange\", \"mouseEnterDelay\", \"mouseLeaveDelay\", \"focusDelay\", \"blurDelay\", \"mask\", \"maskClosable\", \"getPopupContainer\", \"forceRender\", \"autoDestroy\", \"destroyPopupOnHide\", \"popup\", \"popupClassName\", \"popupStyle\", \"popupPlacement\", \"builtinPlacements\", \"popupAlign\", \"zIndex\", \"stretch\", \"getPopupClassNameFromAlign\", \"fresh\", \"alignPoint\", \"onPopupClick\", \"onPopupAlign\", \"arrow\", \"popupMotion\", \"maskMotion\", \"popupTransitionName\", \"popupAnimation\", \"maskTransitionName\", \"maskAnimation\", \"className\", \"getTriggerDOMNode\"];\nimport Portal from '@rc-component/portal';\nimport classNames from 'classnames';\nimport ResizeObserver from 'rc-resize-observer';\nimport { isDOM } from \"rc-util/es/Dom/findDOMNode\";\nimport { getShadowRoot } from \"rc-util/es/Dom/shadow\";\nimport useEvent from \"rc-util/es/hooks/useEvent\";\nimport useId from \"rc-util/es/hooks/useId\";\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport isMobile from \"rc-util/es/isMobile\";\nimport * as React from 'react';\nimport Popup from \"./Popup\";\nimport TriggerWrapper from \"./TriggerWrapper\";\nimport TriggerContext from \"./context\";\nimport useAction from \"./hooks/useAction\";\nimport useAlign from \"./hooks/useAlign\";\nimport useWatch from \"./hooks/useWatch\";\nimport useWinClick from \"./hooks/useWinClick\";\nimport { getAlignPopupClassName, getMotion } from \"./util\";\n\n// Removed Props List\n// Seems this can be auto\n// getDocument?: (element?: HTMLElement) => Document;\n\n// New version will not wrap popup with `rc-trigger-popup-content` when multiple children\n\nexport function generateTrigger() {\n var PortalComponent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Portal;\n var Trigger = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-trigger-popup' : _props$prefixCls,\n children = props.children,\n _props$action = props.action,\n action = _props$action === void 0 ? 'hover' : _props$action,\n showAction = props.showAction,\n hideAction = props.hideAction,\n popupVisible = props.popupVisible,\n defaultPopupVisible = props.defaultPopupVisible,\n onPopupVisibleChange = props.onPopupVisibleChange,\n afterPopupVisibleChange = props.afterPopupVisibleChange,\n mouseEnterDelay = props.mouseEnterDelay,\n _props$mouseLeaveDela = props.mouseLeaveDelay,\n mouseLeaveDelay = _props$mouseLeaveDela === void 0 ? 0.1 : _props$mouseLeaveDela,\n focusDelay = props.focusDelay,\n blurDelay = props.blurDelay,\n mask = props.mask,\n _props$maskClosable = props.maskClosable,\n maskClosable = _props$maskClosable === void 0 ? true : _props$maskClosable,\n getPopupContainer = props.getPopupContainer,\n forceRender = props.forceRender,\n autoDestroy = props.autoDestroy,\n destroyPopupOnHide = props.destroyPopupOnHide,\n popup = props.popup,\n popupClassName = props.popupClassName,\n popupStyle = props.popupStyle,\n popupPlacement = props.popupPlacement,\n _props$builtinPlaceme = props.builtinPlacements,\n builtinPlacements = _props$builtinPlaceme === void 0 ? {} : _props$builtinPlaceme,\n popupAlign = props.popupAlign,\n zIndex = props.zIndex,\n stretch = props.stretch,\n getPopupClassNameFromAlign = props.getPopupClassNameFromAlign,\n fresh = props.fresh,\n alignPoint = props.alignPoint,\n onPopupClick = props.onPopupClick,\n onPopupAlign = props.onPopupAlign,\n arrow = props.arrow,\n popupMotion = props.popupMotion,\n maskMotion = props.maskMotion,\n popupTransitionName = props.popupTransitionName,\n popupAnimation = props.popupAnimation,\n maskTransitionName = props.maskTransitionName,\n maskAnimation = props.maskAnimation,\n className = props.className,\n getTriggerDOMNode = props.getTriggerDOMNode,\n restProps = _objectWithoutProperties(props, _excluded);\n var mergedAutoDestroy = autoDestroy || destroyPopupOnHide || false;\n\n // =========================== Mobile ===========================\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n mobile = _React$useState2[0],\n setMobile = _React$useState2[1];\n useLayoutEffect(function () {\n setMobile(isMobile());\n }, []);\n\n // ========================== Context ===========================\n var subPopupElements = React.useRef({});\n var parentContext = React.useContext(TriggerContext);\n var context = React.useMemo(function () {\n return {\n registerSubPopup: function registerSubPopup(id, subPopupEle) {\n subPopupElements.current[id] = subPopupEle;\n parentContext === null || parentContext === void 0 || parentContext.registerSubPopup(id, subPopupEle);\n }\n };\n }, [parentContext]);\n\n // =========================== Popup ============================\n var id = useId();\n var _React$useState3 = React.useState(null),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n popupEle = _React$useState4[0],\n setPopupEle = _React$useState4[1];\n\n // Used for forwardRef popup. Not use internal\n var externalPopupRef = React.useRef(null);\n var setPopupRef = useEvent(function (node) {\n externalPopupRef.current = node;\n if (isDOM(node) && popupEle !== node) {\n setPopupEle(node);\n }\n parentContext === null || parentContext === void 0 || parentContext.registerSubPopup(id, node);\n });\n\n // =========================== Target ===========================\n // Use state to control here since `useRef` update not trigger render\n var _React$useState5 = React.useState(null),\n _React$useState6 = _slicedToArray(_React$useState5, 2),\n targetEle = _React$useState6[0],\n setTargetEle = _React$useState6[1];\n\n // Used for forwardRef target. Not use internal\n var externalForwardRef = React.useRef(null);\n var setTargetRef = useEvent(function (node) {\n if (isDOM(node) && targetEle !== node) {\n setTargetEle(node);\n externalForwardRef.current = node;\n }\n });\n\n // ========================== Children ==========================\n var child = React.Children.only(children);\n var originChildProps = (child === null || child === void 0 ? void 0 : child.props) || {};\n var cloneProps = {};\n var inPopupOrChild = useEvent(function (ele) {\n var _getShadowRoot, _getShadowRoot2;\n var childDOM = targetEle;\n return (childDOM === null || childDOM === void 0 ? void 0 : childDOM.contains(ele)) || ((_getShadowRoot = getShadowRoot(childDOM)) === null || _getShadowRoot === void 0 ? void 0 : _getShadowRoot.host) === ele || ele === childDOM || (popupEle === null || popupEle === void 0 ? void 0 : popupEle.contains(ele)) || ((_getShadowRoot2 = getShadowRoot(popupEle)) === null || _getShadowRoot2 === void 0 ? void 0 : _getShadowRoot2.host) === ele || ele === popupEle || Object.values(subPopupElements.current).some(function (subPopupEle) {\n return (subPopupEle === null || subPopupEle === void 0 ? void 0 : subPopupEle.contains(ele)) || ele === subPopupEle;\n });\n });\n\n // =========================== Motion ===========================\n var mergePopupMotion = getMotion(prefixCls, popupMotion, popupAnimation, popupTransitionName);\n var mergeMaskMotion = getMotion(prefixCls, maskMotion, maskAnimation, maskTransitionName);\n\n // ============================ Open ============================\n var _React$useState7 = React.useState(defaultPopupVisible || false),\n _React$useState8 = _slicedToArray(_React$useState7, 2),\n internalOpen = _React$useState8[0],\n setInternalOpen = _React$useState8[1];\n\n // Render still use props as first priority\n var mergedOpen = popupVisible !== null && popupVisible !== void 0 ? popupVisible : internalOpen;\n\n // We use effect sync here in case `popupVisible` back to `undefined`\n var setMergedOpen = useEvent(function (nextOpen) {\n if (popupVisible === undefined) {\n setInternalOpen(nextOpen);\n }\n });\n useLayoutEffect(function () {\n setInternalOpen(popupVisible || false);\n }, [popupVisible]);\n var openRef = React.useRef(mergedOpen);\n openRef.current = mergedOpen;\n var lastTriggerRef = React.useRef([]);\n lastTriggerRef.current = [];\n var internalTriggerOpen = useEvent(function (nextOpen) {\n var _lastTriggerRef$curre;\n setMergedOpen(nextOpen);\n\n // Enter or Pointer will both trigger open state change\n // We only need take one to avoid duplicated change event trigger\n // Use `lastTriggerRef` to record last open type\n if (((_lastTriggerRef$curre = lastTriggerRef.current[lastTriggerRef.current.length - 1]) !== null && _lastTriggerRef$curre !== void 0 ? _lastTriggerRef$curre : mergedOpen) !== nextOpen) {\n lastTriggerRef.current.push(nextOpen);\n onPopupVisibleChange === null || onPopupVisibleChange === void 0 || onPopupVisibleChange(nextOpen);\n }\n });\n\n // Trigger for delay\n var delayRef = React.useRef();\n var clearDelay = function clearDelay() {\n clearTimeout(delayRef.current);\n };\n var triggerOpen = function triggerOpen(nextOpen) {\n var delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n clearDelay();\n if (delay === 0) {\n internalTriggerOpen(nextOpen);\n } else {\n delayRef.current = setTimeout(function () {\n internalTriggerOpen(nextOpen);\n }, delay * 1000);\n }\n };\n React.useEffect(function () {\n return clearDelay;\n }, []);\n\n // ========================== Motion ============================\n var _React$useState9 = React.useState(false),\n _React$useState10 = _slicedToArray(_React$useState9, 2),\n inMotion = _React$useState10[0],\n setInMotion = _React$useState10[1];\n useLayoutEffect(function (firstMount) {\n if (!firstMount || mergedOpen) {\n setInMotion(true);\n }\n }, [mergedOpen]);\n var _React$useState11 = React.useState(null),\n _React$useState12 = _slicedToArray(_React$useState11, 2),\n motionPrepareResolve = _React$useState12[0],\n setMotionPrepareResolve = _React$useState12[1];\n\n // =========================== Align ============================\n var _React$useState13 = React.useState(null),\n _React$useState14 = _slicedToArray(_React$useState13, 2),\n mousePos = _React$useState14[0],\n setMousePos = _React$useState14[1];\n var setMousePosByEvent = function setMousePosByEvent(event) {\n setMousePos([event.clientX, event.clientY]);\n };\n var _useAlign = useAlign(mergedOpen, popupEle, alignPoint && mousePos !== null ? mousePos : targetEle, popupPlacement, builtinPlacements, popupAlign, onPopupAlign),\n _useAlign2 = _slicedToArray(_useAlign, 11),\n ready = _useAlign2[0],\n offsetX = _useAlign2[1],\n offsetY = _useAlign2[2],\n offsetR = _useAlign2[3],\n offsetB = _useAlign2[4],\n arrowX = _useAlign2[5],\n arrowY = _useAlign2[6],\n scaleX = _useAlign2[7],\n scaleY = _useAlign2[8],\n alignInfo = _useAlign2[9],\n onAlign = _useAlign2[10];\n var _useAction = useAction(mobile, action, showAction, hideAction),\n _useAction2 = _slicedToArray(_useAction, 2),\n showActions = _useAction2[0],\n hideActions = _useAction2[1];\n var clickToShow = showActions.has('click');\n var clickToHide = hideActions.has('click') || hideActions.has('contextMenu');\n var triggerAlign = useEvent(function () {\n if (!inMotion) {\n onAlign();\n }\n });\n var onScroll = function onScroll() {\n if (openRef.current && alignPoint && clickToHide) {\n triggerOpen(false);\n }\n };\n useWatch(mergedOpen, targetEle, popupEle, triggerAlign, onScroll);\n useLayoutEffect(function () {\n triggerAlign();\n }, [mousePos, popupPlacement]);\n\n // When no builtinPlacements and popupAlign changed\n useLayoutEffect(function () {\n if (mergedOpen && !(builtinPlacements !== null && builtinPlacements !== void 0 && builtinPlacements[popupPlacement])) {\n triggerAlign();\n }\n }, [JSON.stringify(popupAlign)]);\n var alignedClassName = React.useMemo(function () {\n var baseClassName = getAlignPopupClassName(builtinPlacements, prefixCls, alignInfo, alignPoint);\n return classNames(baseClassName, getPopupClassNameFromAlign === null || getPopupClassNameFromAlign === void 0 ? void 0 : getPopupClassNameFromAlign(alignInfo));\n }, [alignInfo, getPopupClassNameFromAlign, builtinPlacements, prefixCls, alignPoint]);\n\n // ============================ Refs ============================\n React.useImperativeHandle(ref, function () {\n return {\n nativeElement: externalForwardRef.current,\n popupElement: externalPopupRef.current,\n forceAlign: triggerAlign\n };\n });\n\n // ========================== Stretch ===========================\n var _React$useState15 = React.useState(0),\n _React$useState16 = _slicedToArray(_React$useState15, 2),\n targetWidth = _React$useState16[0],\n setTargetWidth = _React$useState16[1];\n var _React$useState17 = React.useState(0),\n _React$useState18 = _slicedToArray(_React$useState17, 2),\n targetHeight = _React$useState18[0],\n setTargetHeight = _React$useState18[1];\n var syncTargetSize = function syncTargetSize() {\n if (stretch && targetEle) {\n var rect = targetEle.getBoundingClientRect();\n setTargetWidth(rect.width);\n setTargetHeight(rect.height);\n }\n };\n var onTargetResize = function onTargetResize() {\n syncTargetSize();\n triggerAlign();\n };\n\n // ========================== Motion ============================\n var onVisibleChanged = function onVisibleChanged(visible) {\n setInMotion(false);\n onAlign();\n afterPopupVisibleChange === null || afterPopupVisibleChange === void 0 || afterPopupVisibleChange(visible);\n };\n\n // We will trigger align when motion is in prepare\n var onPrepare = function onPrepare() {\n return new Promise(function (resolve) {\n syncTargetSize();\n setMotionPrepareResolve(function () {\n return resolve;\n });\n });\n };\n useLayoutEffect(function () {\n if (motionPrepareResolve) {\n onAlign();\n motionPrepareResolve();\n setMotionPrepareResolve(null);\n }\n }, [motionPrepareResolve]);\n\n // =========================== Action ===========================\n /**\n * Util wrapper for trigger action\n */\n function wrapperAction(eventName, nextOpen, delay, preEvent) {\n cloneProps[eventName] = function (event) {\n var _originChildProps$eve;\n preEvent === null || preEvent === void 0 || preEvent(event);\n triggerOpen(nextOpen, delay);\n\n // Pass to origin\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 (_originChildProps$eve = originChildProps[eventName]) === null || _originChildProps$eve === void 0 || _originChildProps$eve.call.apply(_originChildProps$eve, [originChildProps, event].concat(args));\n };\n }\n\n // ======================= Action: Click ========================\n if (clickToShow || clickToHide) {\n cloneProps.onClick = function (event) {\n var _originChildProps$onC;\n if (openRef.current && clickToHide) {\n triggerOpen(false);\n } else if (!openRef.current && clickToShow) {\n setMousePosByEvent(event);\n triggerOpen(true);\n }\n\n // Pass to origin\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n (_originChildProps$onC = originChildProps.onClick) === null || _originChildProps$onC === void 0 || _originChildProps$onC.call.apply(_originChildProps$onC, [originChildProps, event].concat(args));\n };\n }\n\n // Click to hide is special action since click popup element should not hide\n useWinClick(mergedOpen, clickToHide, targetEle, popupEle, mask, maskClosable, inPopupOrChild, triggerOpen);\n\n // ======================= Action: Hover ========================\n var hoverToShow = showActions.has('hover');\n var hoverToHide = hideActions.has('hover');\n var onPopupMouseEnter;\n var onPopupMouseLeave;\n if (hoverToShow) {\n // Compatible with old browser which not support pointer event\n wrapperAction('onMouseEnter', true, mouseEnterDelay, function (event) {\n setMousePosByEvent(event);\n });\n wrapperAction('onPointerEnter', true, mouseEnterDelay, function (event) {\n setMousePosByEvent(event);\n });\n onPopupMouseEnter = function onPopupMouseEnter(event) {\n // Only trigger re-open when popup is visible\n if ((mergedOpen || inMotion) && popupEle !== null && popupEle !== void 0 && popupEle.contains(event.target)) {\n triggerOpen(true, mouseEnterDelay);\n }\n };\n\n // Align Point\n if (alignPoint) {\n cloneProps.onMouseMove = function (event) {\n var _originChildProps$onM;\n // setMousePosByEvent(event);\n (_originChildProps$onM = originChildProps.onMouseMove) === null || _originChildProps$onM === void 0 || _originChildProps$onM.call(originChildProps, event);\n };\n }\n }\n if (hoverToHide) {\n wrapperAction('onMouseLeave', false, mouseLeaveDelay);\n wrapperAction('onPointerLeave', false, mouseLeaveDelay);\n onPopupMouseLeave = function onPopupMouseLeave() {\n triggerOpen(false, mouseLeaveDelay);\n };\n }\n\n // ======================= Action: Focus ========================\n if (showActions.has('focus')) {\n wrapperAction('onFocus', true, focusDelay);\n }\n if (hideActions.has('focus')) {\n wrapperAction('onBlur', false, blurDelay);\n }\n\n // ==================== Action: ContextMenu =====================\n if (showActions.has('contextMenu')) {\n cloneProps.onContextMenu = function (event) {\n var _originChildProps$onC2;\n if (openRef.current && hideActions.has('contextMenu')) {\n triggerOpen(false);\n } else {\n setMousePosByEvent(event);\n triggerOpen(true);\n }\n event.preventDefault();\n\n // Pass to origin\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n (_originChildProps$onC2 = originChildProps.onContextMenu) === null || _originChildProps$onC2 === void 0 || _originChildProps$onC2.call.apply(_originChildProps$onC2, [originChildProps, event].concat(args));\n };\n }\n\n // ========================= ClassName ==========================\n if (className) {\n cloneProps.className = classNames(originChildProps.className, className);\n }\n\n // =========================== Render ===========================\n var mergedChildrenProps = _objectSpread(_objectSpread({}, originChildProps), cloneProps);\n\n // Pass props into cloneProps for nest usage\n var passedProps = {};\n var passedEventList = ['onContextMenu', 'onClick', 'onMouseDown', 'onTouchStart', 'onMouseEnter', 'onMouseLeave', 'onFocus', 'onBlur'];\n passedEventList.forEach(function (eventName) {\n if (restProps[eventName]) {\n passedProps[eventName] = function () {\n var _mergedChildrenProps$;\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n (_mergedChildrenProps$ = mergedChildrenProps[eventName]) === null || _mergedChildrenProps$ === void 0 || _mergedChildrenProps$.call.apply(_mergedChildrenProps$, [mergedChildrenProps].concat(args));\n restProps[eventName].apply(restProps, args);\n };\n }\n });\n\n // Child Node\n var triggerNode = /*#__PURE__*/React.cloneElement(child, _objectSpread(_objectSpread({}, mergedChildrenProps), passedProps));\n var arrowPos = {\n x: arrowX,\n y: arrowY\n };\n var innerArrow = arrow ? _objectSpread({}, arrow !== true ? arrow : {}) : null;\n\n // Render\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ResizeObserver, {\n disabled: !mergedOpen,\n ref: setTargetRef,\n onResize: onTargetResize\n }, /*#__PURE__*/React.createElement(TriggerWrapper, {\n getTriggerDOMNode: getTriggerDOMNode\n }, triggerNode)), /*#__PURE__*/React.createElement(TriggerContext.Provider, {\n value: context\n }, /*#__PURE__*/React.createElement(Popup, {\n portal: PortalComponent,\n ref: setPopupRef,\n prefixCls: prefixCls,\n popup: popup,\n className: classNames(popupClassName, alignedClassName),\n style: popupStyle,\n target: targetEle,\n onMouseEnter: onPopupMouseEnter,\n onMouseLeave: onPopupMouseLeave\n // https://github.com/ant-design/ant-design/issues/43924\n ,\n onPointerEnter: onPopupMouseEnter,\n zIndex: zIndex\n // Open\n ,\n open: mergedOpen,\n keepDom: inMotion,\n fresh: fresh\n // Click\n ,\n onClick: onPopupClick\n // Mask\n ,\n mask: mask\n // Motion\n ,\n motion: mergePopupMotion,\n maskMotion: mergeMaskMotion,\n onVisibleChanged: onVisibleChanged,\n onPrepare: onPrepare\n // Portal\n ,\n forceRender: forceRender,\n autoDestroy: mergedAutoDestroy,\n getPopupContainer: getPopupContainer\n // Arrow\n ,\n align: alignInfo,\n arrow: innerArrow,\n arrowPos: arrowPos\n // Align\n ,\n ready: ready,\n offsetX: offsetX,\n offsetY: offsetY,\n offsetR: offsetR,\n offsetB: offsetB,\n onAlign: triggerAlign\n // Stretch\n ,\n stretch: stretch,\n targetWidth: targetWidth / scaleX,\n targetHeight: targetHeight / scaleY\n })));\n });\n if (process.env.NODE_ENV !== 'production') {\n Trigger.displayName = 'Trigger';\n }\n return Trigger;\n}\nexport default generateTrigger(Portal);","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport { collectScroller, getWin } from \"../util\";\nexport default function useWatch(open, target, popup, onAlign, onScroll) {\n useLayoutEffect(function () {\n if (open && target && popup) {\n var targetElement = target;\n var popupElement = popup;\n var targetScrollList = collectScroller(targetElement);\n var popupScrollList = collectScroller(popupElement);\n var win = getWin(popupElement);\n var mergedList = new Set([win].concat(_toConsumableArray(targetScrollList), _toConsumableArray(popupScrollList)));\n function notifyScroll() {\n onAlign();\n onScroll();\n }\n mergedList.forEach(function (scroller) {\n scroller.addEventListener('scroll', notifyScroll, {\n passive: true\n });\n });\n win.addEventListener('resize', notifyScroll, {\n passive: true\n });\n\n // First time always do align\n onAlign();\n return function () {\n mergedList.forEach(function (scroller) {\n scroller.removeEventListener('scroll', notifyScroll);\n win.removeEventListener('resize', notifyScroll);\n });\n };\n }\n }, [open, target, popup]);\n}","import { getShadowRoot } from \"rc-util/es/Dom/shadow\";\nimport { warning } from \"rc-util/es/warning\";\nimport * as React from 'react';\nimport { getWin } from \"../util\";\nexport default function useWinClick(open, clickToHide, targetEle, popupEle, mask, maskClosable, inPopupOrChild, triggerOpen) {\n var openRef = React.useRef(open);\n openRef.current = open;\n\n // Click to hide is special action since click popup element should not hide\n React.useEffect(function () {\n if (clickToHide && popupEle && (!mask || maskClosable)) {\n var onTriggerClose = function onTriggerClose(e) {\n var _e$composedPath;\n if (openRef.current && !inPopupOrChild(((_e$composedPath = e.composedPath) === null || _e$composedPath === void 0 || (_e$composedPath = _e$composedPath.call(e)) === null || _e$composedPath === void 0 ? void 0 : _e$composedPath[0]) || e.target)) {\n triggerOpen(false);\n }\n };\n var win = getWin(popupEle);\n win.addEventListener('mousedown', onTriggerClose, true);\n win.addEventListener('contextmenu', onTriggerClose, true);\n\n // shadow root\n var targetShadowRoot = getShadowRoot(targetEle);\n if (targetShadowRoot) {\n targetShadowRoot.addEventListener('mousedown', onTriggerClose, true);\n targetShadowRoot.addEventListener('contextmenu', onTriggerClose, true);\n }\n\n // Warning if target and popup not in same root\n if (process.env.NODE_ENV !== 'production') {\n var _targetEle$getRootNod, _popupEle$getRootNode;\n var targetRoot = targetEle === null || targetEle === void 0 || (_targetEle$getRootNod = targetEle.getRootNode) === null || _targetEle$getRootNod === void 0 ? void 0 : _targetEle$getRootNod.call(targetEle);\n var popupRoot = (_popupEle$getRootNode = popupEle.getRootNode) === null || _popupEle$getRootNode === void 0 ? void 0 : _popupEle$getRootNode.call(popupEle);\n warning(targetRoot === popupRoot, \"trigger element and popup element should in same shadow root.\");\n }\n return function () {\n win.removeEventListener('mousedown', onTriggerClose, true);\n win.removeEventListener('contextmenu', onTriggerClose, true);\n if (targetShadowRoot) {\n targetShadowRoot.removeEventListener('mousedown', onTriggerClose, true);\n targetShadowRoot.removeEventListener('contextmenu', onTriggerClose, true);\n }\n };\n }\n }, [clickToHide, targetEle, popupEle, mask, maskClosable]);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"disabled\", \"visible\", \"children\", \"popupElement\", \"animation\", \"transitionName\", \"dropdownStyle\", \"dropdownClassName\", \"direction\", \"placement\", \"builtinPlacements\", \"dropdownMatchSelectWidth\", \"dropdownRender\", \"dropdownAlign\", \"getPopupContainer\", \"empty\", \"getTriggerDOMNode\", \"onPopupVisibleChange\", \"onPopupMouseEnter\"];\nimport Trigger from '@rc-component/trigger';\nimport classNames from 'classnames';\nimport * as React from 'react';\nvar getBuiltInPlacements = function getBuiltInPlacements(dropdownMatchSelectWidth) {\n // Enable horizontal overflow auto-adjustment when a custom dropdown width is provided\n var adjustX = dropdownMatchSelectWidth === true ? 0 : 1;\n return {\n bottomLeft: {\n points: ['tl', 'bl'],\n offset: [0, 4],\n overflow: {\n adjustX: adjustX,\n adjustY: 1\n },\n htmlRegion: 'scroll'\n },\n bottomRight: {\n points: ['tr', 'br'],\n offset: [0, 4],\n overflow: {\n adjustX: adjustX,\n adjustY: 1\n },\n htmlRegion: 'scroll'\n },\n topLeft: {\n points: ['bl', 'tl'],\n offset: [0, -4],\n overflow: {\n adjustX: adjustX,\n adjustY: 1\n },\n htmlRegion: 'scroll'\n },\n topRight: {\n points: ['br', 'tr'],\n offset: [0, -4],\n overflow: {\n adjustX: adjustX,\n adjustY: 1\n },\n htmlRegion: 'scroll'\n }\n };\n};\nvar SelectTrigger = function SelectTrigger(props, ref) {\n var prefixCls = props.prefixCls,\n disabled = props.disabled,\n visible = props.visible,\n children = props.children,\n popupElement = props.popupElement,\n animation = props.animation,\n transitionName = props.transitionName,\n dropdownStyle = props.dropdownStyle,\n dropdownClassName = props.dropdownClassName,\n _props$direction = props.direction,\n direction = _props$direction === void 0 ? 'ltr' : _props$direction,\n placement = props.placement,\n builtinPlacements = props.builtinPlacements,\n dropdownMatchSelectWidth = props.dropdownMatchSelectWidth,\n dropdownRender = props.dropdownRender,\n dropdownAlign = props.dropdownAlign,\n getPopupContainer = props.getPopupContainer,\n empty = props.empty,\n getTriggerDOMNode = props.getTriggerDOMNode,\n onPopupVisibleChange = props.onPopupVisibleChange,\n onPopupMouseEnter = props.onPopupMouseEnter,\n restProps = _objectWithoutProperties(props, _excluded);\n var dropdownPrefixCls = \"\".concat(prefixCls, \"-dropdown\");\n var popupNode = popupElement;\n if (dropdownRender) {\n popupNode = dropdownRender(popupElement);\n }\n var mergedBuiltinPlacements = React.useMemo(function () {\n return builtinPlacements || getBuiltInPlacements(dropdownMatchSelectWidth);\n }, [builtinPlacements, dropdownMatchSelectWidth]);\n\n // ===================== Motion ======================\n var mergedTransitionName = animation ? \"\".concat(dropdownPrefixCls, \"-\").concat(animation) : transitionName;\n\n // =================== Popup Width ===================\n var isNumberPopupWidth = typeof dropdownMatchSelectWidth === 'number';\n var stretch = React.useMemo(function () {\n if (isNumberPopupWidth) {\n return null;\n }\n return dropdownMatchSelectWidth === false ? 'minWidth' : 'width';\n }, [dropdownMatchSelectWidth, isNumberPopupWidth]);\n var popupStyle = dropdownStyle;\n if (isNumberPopupWidth) {\n popupStyle = _objectSpread(_objectSpread({}, popupStyle), {}, {\n width: dropdownMatchSelectWidth\n });\n }\n\n // ======================= Ref =======================\n var triggerPopupRef = React.useRef(null);\n React.useImperativeHandle(ref, function () {\n return {\n getPopupElement: function getPopupElement() {\n var _triggerPopupRef$curr;\n return (_triggerPopupRef$curr = triggerPopupRef.current) === null || _triggerPopupRef$curr === void 0 ? void 0 : _triggerPopupRef$curr.popupElement;\n }\n };\n });\n return /*#__PURE__*/React.createElement(Trigger, _extends({}, restProps, {\n showAction: onPopupVisibleChange ? ['click'] : [],\n hideAction: onPopupVisibleChange ? ['click'] : [],\n popupPlacement: placement || (direction === 'rtl' ? 'bottomRight' : 'bottomLeft'),\n builtinPlacements: mergedBuiltinPlacements,\n prefixCls: dropdownPrefixCls,\n popupTransitionName: mergedTransitionName,\n popup: /*#__PURE__*/React.createElement(\"div\", {\n onMouseEnter: onPopupMouseEnter\n }, popupNode),\n ref: triggerPopupRef,\n stretch: stretch,\n popupAlign: dropdownAlign,\n popupVisible: visible,\n getPopupContainer: getPopupContainer,\n popupClassName: classNames(dropdownClassName, _defineProperty({}, \"\".concat(dropdownPrefixCls, \"-empty\"), empty)),\n popupStyle: popupStyle,\n getTriggerDOMNode: getTriggerDOMNode,\n onPopupVisibleChange: onPopupVisibleChange\n }), children);\n};\nvar RefSelectTrigger = /*#__PURE__*/React.forwardRef(SelectTrigger);\nif (process.env.NODE_ENV !== 'production') {\n RefSelectTrigger.displayName = 'SelectTrigger';\n}\nexport default RefSelectTrigger;","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _toArray from \"@babel/runtime/helpers/esm/toArray\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport warning from \"rc-util/es/warning\";\nfunction getKey(data, index) {\n var key = data.key;\n var value;\n if ('value' in data) {\n value = data.value;\n }\n if (key !== null && key !== undefined) {\n return key;\n }\n if (value !== undefined) {\n return value;\n }\n return \"rc-index-key-\".concat(index);\n}\nexport function isValidCount(value) {\n return typeof value !== 'undefined' && !Number.isNaN(value);\n}\nexport function fillFieldNames(fieldNames, childrenAsData) {\n var _ref = fieldNames || {},\n label = _ref.label,\n value = _ref.value,\n options = _ref.options,\n groupLabel = _ref.groupLabel;\n var mergedLabel = label || (childrenAsData ? 'children' : 'label');\n return {\n label: mergedLabel,\n value: value || 'value',\n options: options || 'options',\n groupLabel: groupLabel || mergedLabel\n };\n}\n\n/**\n * Flat options into flatten list.\n * We use `optionOnly` here is aim to avoid user use nested option group.\n * Here is simply set `key` to the index if not provided.\n */\nexport function flattenOptions(options) {\n var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n fieldNames = _ref2.fieldNames,\n childrenAsData = _ref2.childrenAsData;\n var flattenList = [];\n var _fillFieldNames = fillFieldNames(fieldNames, false),\n fieldLabel = _fillFieldNames.label,\n fieldValue = _fillFieldNames.value,\n fieldOptions = _fillFieldNames.options,\n groupLabel = _fillFieldNames.groupLabel;\n function dig(list, isGroupOption) {\n if (!Array.isArray(list)) {\n return;\n }\n list.forEach(function (data) {\n if (isGroupOption || !(fieldOptions in data)) {\n var value = data[fieldValue];\n\n // Option\n flattenList.push({\n key: getKey(data, flattenList.length),\n groupOption: isGroupOption,\n data: data,\n label: data[fieldLabel],\n value: value\n });\n } else {\n var grpLabel = data[groupLabel];\n if (grpLabel === undefined && childrenAsData) {\n grpLabel = data.label;\n }\n\n // Option Group\n flattenList.push({\n key: getKey(data, flattenList.length),\n group: true,\n data: data,\n label: grpLabel\n });\n dig(data[fieldOptions], true);\n }\n });\n }\n dig(options, false);\n return flattenList;\n}\n\n/**\n * Inject `props` into `option` for legacy usage\n */\nexport function injectPropsWithOption(option) {\n var newOption = _objectSpread({}, option);\n if (!('props' in newOption)) {\n Object.defineProperty(newOption, 'props', {\n get: function get() {\n warning(false, 'Return type is option instead of Option instance. Please read value directly instead of reading from `props`.');\n return newOption;\n }\n });\n }\n return newOption;\n}\nexport var getSeparatedContent = function getSeparatedContent(text, tokens, end) {\n if (!tokens || !tokens.length) {\n return null;\n }\n var match = false;\n var separate = function separate(str, _ref3) {\n var _ref4 = _toArray(_ref3),\n token = _ref4[0],\n restTokens = _ref4.slice(1);\n if (!token) {\n return [str];\n }\n var list = str.split(token);\n match = match || list.length > 1;\n return list.reduce(function (prevList, unitStr) {\n return [].concat(_toConsumableArray(prevList), _toConsumableArray(separate(unitStr, restTokens)));\n }, []).filter(Boolean);\n };\n var list = separate(text, tokens);\n if (match) {\n return typeof end !== 'undefined' ? list.slice(0, end) : list;\n } else {\n return null;\n }\n};","import * as React from 'react';\n\n// Use any here since we do not get the type during compilation\n\nvar SelectContext = /*#__PURE__*/React.createContext(null);\nexport default SelectContext;","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport * as React from 'react';\nexport default function Polite(props) {\n var visible = props.visible,\n values = props.values;\n if (!visible) {\n return null;\n }\n\n // Only cut part of values since it's a screen reader\n var MAX_COUNT = 50;\n return /*#__PURE__*/React.createElement(\"span\", {\n \"aria-live\": \"polite\",\n style: {\n width: 0,\n height: 0,\n position: 'absolute',\n overflow: 'hidden',\n opacity: 0\n }\n }, \"\".concat(values.slice(0, MAX_COUNT).map(function (_ref) {\n var label = _ref.label,\n value = _ref.value;\n return ['number', 'string'].includes(_typeof(label)) ? label : value;\n }).join(', ')), values.length > MAX_COUNT ? ', ...' : null);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"id\", \"prefixCls\", \"className\", \"showSearch\", \"tagRender\", \"direction\", \"omitDomProps\", \"displayValues\", \"onDisplayValuesChange\", \"emptyOptions\", \"notFoundContent\", \"onClear\", \"mode\", \"disabled\", \"loading\", \"getInputElement\", \"getRawInputElement\", \"open\", \"defaultOpen\", \"onDropdownVisibleChange\", \"activeValue\", \"onActiveValueChange\", \"activeDescendantId\", \"searchValue\", \"autoClearSearchValue\", \"onSearch\", \"onSearchSplit\", \"tokenSeparators\", \"allowClear\", \"suffixIcon\", \"clearIcon\", \"OptionList\", \"animation\", \"transitionName\", \"dropdownStyle\", \"dropdownClassName\", \"dropdownMatchSelectWidth\", \"dropdownRender\", \"dropdownAlign\", \"placement\", \"builtinPlacements\", \"getPopupContainer\", \"showAction\", \"onFocus\", \"onBlur\", \"onKeyUp\", \"onKeyDown\", \"onMouseDown\"];\nimport classNames from 'classnames';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport isMobile from \"rc-util/es/isMobile\";\nimport { useComposeRef } from \"rc-util/es/ref\";\nimport * as React from 'react';\nimport { useAllowClear } from \"../hooks/useAllowClear\";\nimport { BaseSelectContext } from \"../hooks/useBaseProps\";\nimport useDelayReset from \"../hooks/useDelayReset\";\nimport useLock from \"../hooks/useLock\";\nimport useSelectTriggerControl from \"../hooks/useSelectTriggerControl\";\nimport Selector from \"../Selector\";\nimport SelectTrigger from \"../SelectTrigger\";\nimport TransBtn from \"../TransBtn\";\nimport { getSeparatedContent, isValidCount } from \"../utils/valueUtil\";\nimport SelectContext from \"../SelectContext\";\nimport Polite from \"./Polite\";\nvar DEFAULT_OMIT_PROPS = ['value', 'onChange', 'removeIcon', 'placeholder', 'autoFocus', 'maxTagCount', 'maxTagTextLength', 'maxTagPlaceholder', 'choiceTransitionName', 'onInputKeyDown', 'onPopupScroll', 'tabIndex'];\nexport var isMultiple = function isMultiple(mode) {\n return mode === 'tags' || mode === 'multiple';\n};\nvar BaseSelect = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var _customizeRawInputEle;\n var id = props.id,\n prefixCls = props.prefixCls,\n className = props.className,\n showSearch = props.showSearch,\n tagRender = props.tagRender,\n direction = props.direction,\n omitDomProps = props.omitDomProps,\n displayValues = props.displayValues,\n onDisplayValuesChange = props.onDisplayValuesChange,\n emptyOptions = props.emptyOptions,\n _props$notFoundConten = props.notFoundContent,\n notFoundContent = _props$notFoundConten === void 0 ? 'Not Found' : _props$notFoundConten,\n onClear = props.onClear,\n mode = props.mode,\n disabled = props.disabled,\n loading = props.loading,\n getInputElement = props.getInputElement,\n getRawInputElement = props.getRawInputElement,\n open = props.open,\n defaultOpen = props.defaultOpen,\n onDropdownVisibleChange = props.onDropdownVisibleChange,\n activeValue = props.activeValue,\n onActiveValueChange = props.onActiveValueChange,\n activeDescendantId = props.activeDescendantId,\n searchValue = props.searchValue,\n autoClearSearchValue = props.autoClearSearchValue,\n onSearch = props.onSearch,\n onSearchSplit = props.onSearchSplit,\n tokenSeparators = props.tokenSeparators,\n allowClear = props.allowClear,\n suffixIcon = props.suffixIcon,\n clearIcon = props.clearIcon,\n OptionList = props.OptionList,\n animation = props.animation,\n transitionName = props.transitionName,\n dropdownStyle = props.dropdownStyle,\n dropdownClassName = props.dropdownClassName,\n dropdownMatchSelectWidth = props.dropdownMatchSelectWidth,\n dropdownRender = props.dropdownRender,\n dropdownAlign = props.dropdownAlign,\n placement = props.placement,\n builtinPlacements = props.builtinPlacements,\n getPopupContainer = props.getPopupContainer,\n _props$showAction = props.showAction,\n showAction = _props$showAction === void 0 ? [] : _props$showAction,\n onFocus = props.onFocus,\n onBlur = props.onBlur,\n onKeyUp = props.onKeyUp,\n onKeyDown = props.onKeyDown,\n onMouseDown = props.onMouseDown,\n restProps = _objectWithoutProperties(props, _excluded);\n\n // ============================== MISC ==============================\n var multiple = isMultiple(mode);\n var mergedShowSearch = (showSearch !== undefined ? showSearch : multiple) || mode === 'combobox';\n var domProps = _objectSpread({}, restProps);\n DEFAULT_OMIT_PROPS.forEach(function (propName) {\n delete domProps[propName];\n });\n omitDomProps === null || omitDomProps === void 0 || omitDomProps.forEach(function (propName) {\n delete domProps[propName];\n });\n\n // ============================= Mobile =============================\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n mobile = _React$useState2[0],\n setMobile = _React$useState2[1];\n React.useEffect(function () {\n // Only update on the client side\n setMobile(isMobile());\n }, []);\n\n // ============================== Refs ==============================\n var containerRef = React.useRef(null);\n var selectorDomRef = React.useRef(null);\n var triggerRef = React.useRef(null);\n var selectorRef = React.useRef(null);\n var listRef = React.useRef(null);\n var blurRef = React.useRef(false);\n\n /** Used for component focused management */\n var _useDelayReset = useDelayReset(),\n _useDelayReset2 = _slicedToArray(_useDelayReset, 3),\n mockFocused = _useDelayReset2[0],\n setMockFocused = _useDelayReset2[1],\n cancelSetMockFocused = _useDelayReset2[2];\n\n // =========================== Imperative ===========================\n React.useImperativeHandle(ref, function () {\n var _selectorRef$current, _selectorRef$current2;\n return {\n focus: (_selectorRef$current = selectorRef.current) === null || _selectorRef$current === void 0 ? void 0 : _selectorRef$current.focus,\n blur: (_selectorRef$current2 = selectorRef.current) === null || _selectorRef$current2 === void 0 ? void 0 : _selectorRef$current2.blur,\n scrollTo: function scrollTo(arg) {\n var _listRef$current;\n return (_listRef$current = listRef.current) === null || _listRef$current === void 0 ? void 0 : _listRef$current.scrollTo(arg);\n },\n nativeElement: containerRef.current || selectorDomRef.current\n };\n });\n\n // ========================== Search Value ==========================\n var mergedSearchValue = React.useMemo(function () {\n var _displayValues$;\n if (mode !== 'combobox') {\n return searchValue;\n }\n var val = (_displayValues$ = displayValues[0]) === null || _displayValues$ === void 0 ? void 0 : _displayValues$.value;\n return typeof val === 'string' || typeof val === 'number' ? String(val) : '';\n }, [searchValue, mode, displayValues]);\n\n // ========================== Custom Input ==========================\n // Only works in `combobox`\n var customizeInputElement = mode === 'combobox' && typeof getInputElement === 'function' && getInputElement() || null;\n\n // Used for customize replacement for `rc-cascader`\n var customizeRawInputElement = typeof getRawInputElement === 'function' && getRawInputElement();\n var customizeRawInputRef = useComposeRef(selectorDomRef, customizeRawInputElement === null || customizeRawInputElement === void 0 || (_customizeRawInputEle = customizeRawInputElement.props) === null || _customizeRawInputEle === void 0 ? void 0 : _customizeRawInputEle.ref);\n\n // ============================== Open ==============================\n // SSR not support Portal which means we need delay `open` for the first time render\n var _React$useState3 = React.useState(false),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n rendered = _React$useState4[0],\n setRendered = _React$useState4[1];\n useLayoutEffect(function () {\n setRendered(true);\n }, []);\n var _useMergedState = useMergedState(false, {\n defaultValue: defaultOpen,\n value: open\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n innerOpen = _useMergedState2[0],\n setInnerOpen = _useMergedState2[1];\n var mergedOpen = rendered ? innerOpen : false;\n\n // Not trigger `open` in `combobox` when `notFoundContent` is empty\n var emptyListContent = !notFoundContent && emptyOptions;\n if (disabled || emptyListContent && mergedOpen && mode === 'combobox') {\n mergedOpen = false;\n }\n var triggerOpen = emptyListContent ? false : mergedOpen;\n var onToggleOpen = React.useCallback(function (newOpen) {\n var nextOpen = newOpen !== undefined ? newOpen : !mergedOpen;\n if (!disabled) {\n setInnerOpen(nextOpen);\n if (mergedOpen !== nextOpen) {\n onDropdownVisibleChange === null || onDropdownVisibleChange === void 0 || onDropdownVisibleChange(nextOpen);\n }\n }\n }, [disabled, mergedOpen, setInnerOpen, onDropdownVisibleChange]);\n\n // ============================= Search =============================\n var tokenWithEnter = React.useMemo(function () {\n return (tokenSeparators || []).some(function (tokenSeparator) {\n return ['\\n', '\\r\\n'].includes(tokenSeparator);\n });\n }, [tokenSeparators]);\n var _ref = React.useContext(SelectContext) || {},\n maxCount = _ref.maxCount,\n rawValues = _ref.rawValues;\n var onInternalSearch = function onInternalSearch(searchText, fromTyping, isCompositing) {\n if (multiple && isValidCount(maxCount) && (rawValues === null || rawValues === void 0 ? void 0 : rawValues.size) >= maxCount) {\n return;\n }\n var ret = true;\n var newSearchText = searchText;\n onActiveValueChange === null || onActiveValueChange === void 0 || onActiveValueChange(null);\n var separatedList = getSeparatedContent(searchText, tokenSeparators, isValidCount(maxCount) ? maxCount - rawValues.size : undefined);\n\n // Check if match the `tokenSeparators`\n var patchLabels = isCompositing ? null : separatedList;\n\n // Ignore combobox since it's not split-able\n if (mode !== 'combobox' && patchLabels) {\n newSearchText = '';\n onSearchSplit === null || onSearchSplit === void 0 || onSearchSplit(patchLabels);\n\n // Should close when paste finish\n onToggleOpen(false);\n\n // Tell Selector that break next actions\n ret = false;\n }\n if (onSearch && mergedSearchValue !== newSearchText) {\n onSearch(newSearchText, {\n source: fromTyping ? 'typing' : 'effect'\n });\n }\n return ret;\n };\n\n // Only triggered when menu is closed & mode is tags\n // If menu is open, OptionList will take charge\n // If mode isn't tags, press enter is not meaningful when you can't see any option\n var onInternalSearchSubmit = function onInternalSearchSubmit(searchText) {\n // prevent empty tags from appearing when you click the Enter button\n if (!searchText || !searchText.trim()) {\n return;\n }\n onSearch(searchText, {\n source: 'submit'\n });\n };\n\n // Close will clean up single mode search text\n React.useEffect(function () {\n if (!mergedOpen && !multiple && mode !== 'combobox') {\n onInternalSearch('', false, false);\n }\n }, [mergedOpen]);\n\n // ============================ Disabled ============================\n // Close dropdown & remove focus state when disabled change\n React.useEffect(function () {\n if (innerOpen && disabled) {\n setInnerOpen(false);\n }\n\n // After onBlur is triggered, the focused does not need to be reset\n if (disabled && !blurRef.current) {\n setMockFocused(false);\n }\n }, [disabled]);\n\n // ============================ Keyboard ============================\n /**\n * We record input value here to check if can press to clean up by backspace\n * - null: Key is not down, this is reset by key up\n * - true: Search text is empty when first time backspace down\n * - false: Search text is not empty when first time backspace down\n */\n var _useLock = useLock(),\n _useLock2 = _slicedToArray(_useLock, 2),\n getClearLock = _useLock2[0],\n setClearLock = _useLock2[1];\n var keyLockRef = React.useRef(false);\n\n // KeyDown\n var onInternalKeyDown = function onInternalKeyDown(event) {\n var clearLock = getClearLock();\n var key = event.key;\n var isEnterKey = key === 'Enter';\n if (isEnterKey) {\n // Do not submit form when type in the input\n if (mode !== 'combobox') {\n event.preventDefault();\n }\n\n // We only manage open state here, close logic should handle by list component\n if (!mergedOpen) {\n onToggleOpen(true);\n }\n }\n setClearLock(!!mergedSearchValue);\n\n // Remove value by `backspace`\n if (key === 'Backspace' && !clearLock && multiple && !mergedSearchValue && displayValues.length) {\n var cloneDisplayValues = _toConsumableArray(displayValues);\n var removedDisplayValue = null;\n for (var i = cloneDisplayValues.length - 1; i >= 0; i -= 1) {\n var current = cloneDisplayValues[i];\n if (!current.disabled) {\n cloneDisplayValues.splice(i, 1);\n removedDisplayValue = current;\n break;\n }\n }\n if (removedDisplayValue) {\n onDisplayValuesChange(cloneDisplayValues, {\n type: 'remove',\n values: [removedDisplayValue]\n });\n }\n }\n for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n rest[_key - 1] = arguments[_key];\n }\n if (mergedOpen && (!isEnterKey || !keyLockRef.current)) {\n var _listRef$current2;\n (_listRef$current2 = listRef.current) === null || _listRef$current2 === void 0 || _listRef$current2.onKeyDown.apply(_listRef$current2, [event].concat(rest));\n }\n if (isEnterKey) {\n keyLockRef.current = true;\n }\n onKeyDown === null || onKeyDown === void 0 || onKeyDown.apply(void 0, [event].concat(rest));\n };\n\n // KeyUp\n var onInternalKeyUp = function onInternalKeyUp(event) {\n for (var _len2 = arguments.length, rest = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n rest[_key2 - 1] = arguments[_key2];\n }\n if (mergedOpen) {\n var _listRef$current3;\n (_listRef$current3 = listRef.current) === null || _listRef$current3 === void 0 || _listRef$current3.onKeyUp.apply(_listRef$current3, [event].concat(rest));\n }\n if (event.key === 'Enter') {\n keyLockRef.current = false;\n }\n onKeyUp === null || onKeyUp === void 0 || onKeyUp.apply(void 0, [event].concat(rest));\n };\n\n // ============================ Selector ============================\n var onSelectorRemove = function onSelectorRemove(val) {\n var newValues = displayValues.filter(function (i) {\n return i !== val;\n });\n onDisplayValuesChange(newValues, {\n type: 'remove',\n values: [val]\n });\n };\n\n // ========================== Focus / Blur ==========================\n /** Record real focus status */\n var focusRef = React.useRef(false);\n var onContainerFocus = function onContainerFocus() {\n setMockFocused(true);\n if (!disabled) {\n if (onFocus && !focusRef.current) {\n onFocus.apply(void 0, arguments);\n }\n\n // `showAction` should handle `focus` if set\n if (showAction.includes('focus')) {\n onToggleOpen(true);\n }\n }\n focusRef.current = true;\n };\n var onContainerBlur = function onContainerBlur() {\n blurRef.current = true;\n setMockFocused(false, function () {\n focusRef.current = false;\n blurRef.current = false;\n onToggleOpen(false);\n });\n if (disabled) {\n return;\n }\n if (mergedSearchValue) {\n // `tags` mode should move `searchValue` into values\n if (mode === 'tags') {\n onSearch(mergedSearchValue, {\n source: 'submit'\n });\n } else if (mode === 'multiple') {\n // `multiple` mode only clean the search value but not trigger event\n onSearch('', {\n source: 'blur'\n });\n }\n }\n if (onBlur) {\n onBlur.apply(void 0, arguments);\n }\n };\n\n // Give focus back of Select\n var activeTimeoutIds = [];\n React.useEffect(function () {\n return function () {\n activeTimeoutIds.forEach(function (timeoutId) {\n return clearTimeout(timeoutId);\n });\n activeTimeoutIds.splice(0, activeTimeoutIds.length);\n };\n }, []);\n var onInternalMouseDown = function onInternalMouseDown(event) {\n var _triggerRef$current;\n var target = event.target;\n var popupElement = (_triggerRef$current = triggerRef.current) === null || _triggerRef$current === void 0 ? void 0 : _triggerRef$current.getPopupElement();\n\n // We should give focus back to selector if clicked item is not focusable\n if (popupElement && popupElement.contains(target)) {\n var timeoutId = setTimeout(function () {\n var index = activeTimeoutIds.indexOf(timeoutId);\n if (index !== -1) {\n activeTimeoutIds.splice(index, 1);\n }\n cancelSetMockFocused();\n if (!mobile && !popupElement.contains(document.activeElement)) {\n var _selectorRef$current3;\n (_selectorRef$current3 = selectorRef.current) === null || _selectorRef$current3 === void 0 || _selectorRef$current3.focus();\n }\n });\n activeTimeoutIds.push(timeoutId);\n }\n for (var _len3 = arguments.length, restArgs = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n restArgs[_key3 - 1] = arguments[_key3];\n }\n onMouseDown === null || onMouseDown === void 0 || onMouseDown.apply(void 0, [event].concat(restArgs));\n };\n\n // ============================ Dropdown ============================\n var _React$useState5 = React.useState({}),\n _React$useState6 = _slicedToArray(_React$useState5, 2),\n forceUpdate = _React$useState6[1];\n // We need force update here since popup dom is render async\n function onPopupMouseEnter() {\n forceUpdate({});\n }\n\n // Used for raw custom input trigger\n var onTriggerVisibleChange;\n if (customizeRawInputElement) {\n onTriggerVisibleChange = function onTriggerVisibleChange(newOpen) {\n onToggleOpen(newOpen);\n };\n }\n\n // Close when click on non-select element\n useSelectTriggerControl(function () {\n var _triggerRef$current2;\n return [containerRef.current, (_triggerRef$current2 = triggerRef.current) === null || _triggerRef$current2 === void 0 ? void 0 : _triggerRef$current2.getPopupElement()];\n }, triggerOpen, onToggleOpen, !!customizeRawInputElement);\n\n // ============================ Context =============================\n var baseSelectContext = React.useMemo(function () {\n return _objectSpread(_objectSpread({}, props), {}, {\n notFoundContent: notFoundContent,\n open: mergedOpen,\n triggerOpen: triggerOpen,\n id: id,\n showSearch: mergedShowSearch,\n multiple: multiple,\n toggleOpen: onToggleOpen\n });\n }, [props, notFoundContent, triggerOpen, mergedOpen, id, mergedShowSearch, multiple, onToggleOpen]);\n\n // ==================================================================\n // == Render ==\n // ==================================================================\n\n // ============================= Arrow ==============================\n var showSuffixIcon = !!suffixIcon || loading;\n var arrowNode;\n if (showSuffixIcon) {\n arrowNode = /*#__PURE__*/React.createElement(TransBtn, {\n className: classNames(\"\".concat(prefixCls, \"-arrow\"), _defineProperty({}, \"\".concat(prefixCls, \"-arrow-loading\"), loading)),\n customizeIcon: suffixIcon,\n customizeIconProps: {\n loading: loading,\n searchValue: mergedSearchValue,\n open: mergedOpen,\n focused: mockFocused,\n showSearch: mergedShowSearch\n }\n });\n }\n\n // ============================= Clear ==============================\n var onClearMouseDown = function onClearMouseDown() {\n var _selectorRef$current4;\n onClear === null || onClear === void 0 || onClear();\n (_selectorRef$current4 = selectorRef.current) === null || _selectorRef$current4 === void 0 || _selectorRef$current4.focus();\n onDisplayValuesChange([], {\n type: 'clear',\n values: displayValues\n });\n onInternalSearch('', false, false);\n };\n var _useAllowClear = useAllowClear(prefixCls, onClearMouseDown, displayValues, allowClear, clearIcon, disabled, mergedSearchValue, mode),\n mergedAllowClear = _useAllowClear.allowClear,\n clearNode = _useAllowClear.clearIcon;\n\n // =========================== OptionList ===========================\n var optionList = /*#__PURE__*/React.createElement(OptionList, {\n ref: listRef\n });\n\n // ============================= Select =============================\n var mergedClassName = classNames(prefixCls, className, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, \"\".concat(prefixCls, \"-focused\"), mockFocused), \"\".concat(prefixCls, \"-multiple\"), multiple), \"\".concat(prefixCls, \"-single\"), !multiple), \"\".concat(prefixCls, \"-allow-clear\"), allowClear), \"\".concat(prefixCls, \"-show-arrow\"), showSuffixIcon), \"\".concat(prefixCls, \"-disabled\"), disabled), \"\".concat(prefixCls, \"-loading\"), loading), \"\".concat(prefixCls, \"-open\"), mergedOpen), \"\".concat(prefixCls, \"-customize-input\"), customizeInputElement), \"\".concat(prefixCls, \"-show-search\"), mergedShowSearch));\n\n // >>> Selector\n var selectorNode = /*#__PURE__*/React.createElement(SelectTrigger, {\n ref: triggerRef,\n disabled: disabled,\n prefixCls: prefixCls,\n visible: triggerOpen,\n popupElement: optionList,\n animation: animation,\n transitionName: transitionName,\n dropdownStyle: dropdownStyle,\n dropdownClassName: dropdownClassName,\n direction: direction,\n dropdownMatchSelectWidth: dropdownMatchSelectWidth,\n dropdownRender: dropdownRender,\n dropdownAlign: dropdownAlign,\n placement: placement,\n builtinPlacements: builtinPlacements,\n getPopupContainer: getPopupContainer,\n empty: emptyOptions,\n getTriggerDOMNode: function getTriggerDOMNode(node) {\n return (\n // TODO: This is workaround and should be removed in `rc-select`\n // And use new standard `nativeElement` for ref.\n // But we should update `rc-resize-observer` first.\n selectorDomRef.current || node\n );\n },\n onPopupVisibleChange: onTriggerVisibleChange,\n onPopupMouseEnter: onPopupMouseEnter\n }, customizeRawInputElement ? ( /*#__PURE__*/React.cloneElement(customizeRawInputElement, {\n ref: customizeRawInputRef\n })) : /*#__PURE__*/React.createElement(Selector, _extends({}, props, {\n domRef: selectorDomRef,\n prefixCls: prefixCls,\n inputElement: customizeInputElement,\n ref: selectorRef,\n id: id,\n showSearch: mergedShowSearch,\n autoClearSearchValue: autoClearSearchValue,\n mode: mode,\n activeDescendantId: activeDescendantId,\n tagRender: tagRender,\n values: displayValues,\n open: mergedOpen,\n onToggleOpen: onToggleOpen,\n activeValue: activeValue,\n searchValue: mergedSearchValue,\n onSearch: onInternalSearch,\n onSearchSubmit: onInternalSearchSubmit,\n onRemove: onSelectorRemove,\n tokenWithEnter: tokenWithEnter\n })));\n\n // >>> Render\n var renderNode;\n\n // Render raw\n if (customizeRawInputElement) {\n renderNode = selectorNode;\n } else {\n renderNode = /*#__PURE__*/React.createElement(\"div\", _extends({\n className: mergedClassName\n }, domProps, {\n ref: containerRef,\n onMouseDown: onInternalMouseDown,\n onKeyDown: onInternalKeyDown,\n onKeyUp: onInternalKeyUp,\n onFocus: onContainerFocus,\n onBlur: onContainerBlur\n }), /*#__PURE__*/React.createElement(Polite, {\n visible: mockFocused && !mergedOpen,\n values: displayValues\n }), selectorNode, arrowNode, mergedAllowClear && clearNode);\n }\n return /*#__PURE__*/React.createElement(BaseSelectContext.Provider, {\n value: baseSelectContext\n }, renderNode);\n});\n\n// Set display name for dev\nif (process.env.NODE_ENV !== 'production') {\n BaseSelect.displayName = 'BaseSelect';\n}\nexport default BaseSelect;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\n\n/**\n * Similar with `useLock`, but this hook will always execute last value.\n * When set to `true`, it will keep `true` for a short time even if `false` is set.\n */\nexport default function useDelayReset() {\n var timeout = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 10;\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n bool = _React$useState2[0],\n setBool = _React$useState2[1];\n var delayRef = React.useRef(null);\n var cancelLatest = function cancelLatest() {\n window.clearTimeout(delayRef.current);\n };\n React.useEffect(function () {\n return cancelLatest;\n }, []);\n var delaySetBool = function delaySetBool(value, callback) {\n cancelLatest();\n delayRef.current = window.setTimeout(function () {\n setBool(value);\n if (callback) {\n callback();\n }\n }, timeout);\n };\n return [bool, delaySetBool, cancelLatest];\n}","import * as React from 'react';\nexport default function useSelectTriggerControl(elements, open, triggerOpen, customizedTrigger) {\n var propsRef = React.useRef(null);\n propsRef.current = {\n open: open,\n triggerOpen: triggerOpen,\n customizedTrigger: customizedTrigger\n };\n React.useEffect(function () {\n function onGlobalMouseDown(event) {\n var _propsRef$current;\n // If trigger is customized, Trigger will take control of popupVisible\n if ((_propsRef$current = propsRef.current) !== null && _propsRef$current !== void 0 && _propsRef$current.customizedTrigger) {\n return;\n }\n var target = event.target;\n if (target.shadowRoot && event.composed) {\n target = event.composedPath()[0] || target;\n }\n if (propsRef.current.open && elements().filter(function (element) {\n return element;\n }).every(function (element) {\n return !element.contains(target) && element !== target;\n })) {\n // Should trigger close\n propsRef.current.triggerOpen(false);\n }\n }\n window.addEventListener('mousedown', onGlobalMouseDown);\n return function () {\n return window.removeEventListener('mousedown', onGlobalMouseDown);\n };\n }, []);\n}","/* istanbul ignore file */\n\n/** This is a placeholder, not real render in dom */\nvar OptGroup = function OptGroup() {\n return null;\n};\nOptGroup.isSelectOptGroup = true;\nexport default OptGroup;","/* istanbul ignore file */\n\n/** This is a placeholder, not real render in dom */\nvar Option = function Option() {\n return null;\n};\nOption.isSelectOption = true;\nexport default Option;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport ResizeObserver from 'rc-resize-observer';\nimport classNames from 'classnames';\n/**\n * Fill component to provided the scroll content real height.\n */\nvar Filler = /*#__PURE__*/React.forwardRef(function (_ref, ref) {\n var height = _ref.height,\n offsetY = _ref.offsetY,\n offsetX = _ref.offsetX,\n children = _ref.children,\n prefixCls = _ref.prefixCls,\n onInnerResize = _ref.onInnerResize,\n innerProps = _ref.innerProps,\n rtl = _ref.rtl,\n extra = _ref.extra;\n var outerStyle = {};\n var innerStyle = {\n display: 'flex',\n flexDirection: 'column'\n };\n if (offsetY !== undefined) {\n // Not set `width` since this will break `sticky: right`\n outerStyle = {\n height: height,\n position: 'relative',\n overflow: 'hidden'\n };\n innerStyle = _objectSpread(_objectSpread({}, innerStyle), {}, _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({\n transform: \"translateY(\".concat(offsetY, \"px)\")\n }, rtl ? 'marginRight' : 'marginLeft', -offsetX), \"position\", 'absolute'), \"left\", 0), \"right\", 0), \"top\", 0));\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n style: outerStyle\n }, /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: function onResize(_ref2) {\n var offsetHeight = _ref2.offsetHeight;\n if (offsetHeight && onInnerResize) {\n onInnerResize();\n }\n }\n }, /*#__PURE__*/React.createElement(\"div\", _extends({\n style: innerStyle,\n className: classNames(_defineProperty({}, \"\".concat(prefixCls, \"-holder-inner\"), prefixCls)),\n ref: ref\n }, innerProps), children, extra)));\n});\nFiller.displayName = 'Filler';\nexport default Filler;","import * as React from 'react';\nexport function Item(_ref) {\n var children = _ref.children,\n setRef = _ref.setRef;\n var refFunc = React.useCallback(function (node) {\n setRef(node);\n }, []);\n return /*#__PURE__*/React.cloneElement(children, {\n ref: refFunc\n });\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { findListDiffIndex } from \"../utils/algorithmUtil\";\nexport default function useDiffItem(data, getKey, onDiff) {\n var _React$useState = React.useState(data),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n prevData = _React$useState2[0],\n setPrevData = _React$useState2[1];\n var _React$useState3 = React.useState(null),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n diffItem = _React$useState4[0],\n setDiffItem = _React$useState4[1];\n React.useEffect(function () {\n var diff = findListDiffIndex(prevData || [], data || [], getKey);\n if ((diff === null || diff === void 0 ? void 0 : diff.index) !== undefined) {\n onDiff === null || onDiff === void 0 || onDiff(diff.index);\n setDiffItem(data[diff.index]);\n }\n setPrevData(data);\n }, [data]);\n return [diffItem];\n}","/**\n * Get index with specific start index one by one. e.g.\n * min: 3, max: 9, start: 6\n *\n * Return index is:\n * [0]: 6\n * [1]: 7\n * [2]: 5\n * [3]: 8\n * [4]: 4\n * [5]: 9\n * [6]: 3\n */\nexport function getIndexByStartLoc(min, max, start, index) {\n var beforeCount = start - min;\n var afterCount = max - start;\n var balanceCount = Math.min(beforeCount, afterCount) * 2;\n\n // Balance\n if (index <= balanceCount) {\n var stepIndex = Math.floor(index / 2);\n if (index % 2) {\n return start + stepIndex + 1;\n }\n return start - stepIndex;\n }\n\n // One is out of range\n if (beforeCount > afterCount) {\n return start - (index - afterCount);\n }\n return start + (index - beforeCount);\n}\n\n/**\n * We assume that 2 list has only 1 item diff and others keeping the order.\n * So we can use dichotomy algorithm to find changed one.\n */\nexport function findListDiffIndex(originList, targetList, getKey) {\n var originLen = originList.length;\n var targetLen = targetList.length;\n var shortList;\n var longList;\n if (originLen === 0 && targetLen === 0) {\n return null;\n }\n if (originLen < targetLen) {\n shortList = originList;\n longList = targetList;\n } else {\n shortList = targetList;\n longList = originList;\n }\n var notExistKey = {\n __EMPTY_ITEM__: true\n };\n function getItemKey(item) {\n if (item !== undefined) {\n return getKey(item);\n }\n return notExistKey;\n }\n\n // Loop to find diff one\n var diffIndex = null;\n var multiple = Math.abs(originLen - targetLen) !== 1;\n for (var i = 0; i < longList.length; i += 1) {\n var shortKey = getItemKey(shortList[i]);\n var longKey = getItemKey(longList[i]);\n if (shortKey !== longKey) {\n diffIndex = i;\n multiple = multiple || shortKey !== getItemKey(longList[i + 1]);\n break;\n }\n }\n return diffIndex === null ? null : {\n index: diffIndex,\n multiple: multiple\n };\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar isFF = (typeof navigator === \"undefined\" ? \"undefined\" : _typeof(navigator)) === 'object' && /Firefox/i.test(navigator.userAgent);\nexport default isFF;","import { useRef } from 'react';\nexport default (function (isScrollAtTop, isScrollAtBottom, isScrollAtLeft, isScrollAtRight) {\n // Do lock for a wheel when scrolling\n var lockRef = useRef(false);\n var lockTimeoutRef = useRef(null);\n function lockScroll() {\n clearTimeout(lockTimeoutRef.current);\n lockRef.current = true;\n lockTimeoutRef.current = setTimeout(function () {\n lockRef.current = false;\n }, 50);\n }\n\n // Pass to ref since global add is in closure\n var scrollPingRef = useRef({\n top: isScrollAtTop,\n bottom: isScrollAtBottom,\n left: isScrollAtLeft,\n right: isScrollAtRight\n });\n scrollPingRef.current.top = isScrollAtTop;\n scrollPingRef.current.bottom = isScrollAtBottom;\n scrollPingRef.current.left = isScrollAtLeft;\n scrollPingRef.current.right = isScrollAtRight;\n return function (isHorizontal, delta) {\n var smoothOffset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var originScroll = isHorizontal ?\n // Pass origin wheel when on the left\n delta < 0 && scrollPingRef.current.left ||\n // Pass origin wheel when on the right\n delta > 0 && scrollPingRef.current.right // Pass origin wheel when on the top\n : delta < 0 && scrollPingRef.current.top ||\n // Pass origin wheel when on the bottom\n delta > 0 && scrollPingRef.current.bottom;\n if (smoothOffset && originScroll) {\n // No need lock anymore when it's smooth offset from touchMove interval\n clearTimeout(lockTimeoutRef.current);\n lockRef.current = false;\n } else if (!originScroll || lockRef.current) {\n lockScroll();\n }\n return !lockRef.current && originScroll;\n };\n});","import raf from \"rc-util/es/raf\";\nimport { useRef } from 'react';\nimport isFF from \"../utils/isFirefox\";\nimport useOriginScroll from \"./useOriginScroll\";\nexport default function useFrameWheel(inVirtual, isScrollAtTop, isScrollAtBottom, isScrollAtLeft, isScrollAtRight, horizontalScroll,\n/***\n * Return `true` when you need to prevent default event\n */\nonWheelDelta) {\n var offsetRef = useRef(0);\n var nextFrameRef = useRef(null);\n\n // Firefox patch\n var wheelValueRef = useRef(null);\n var isMouseScrollRef = useRef(false);\n\n // Scroll status sync\n var originScroll = useOriginScroll(isScrollAtTop, isScrollAtBottom, isScrollAtLeft, isScrollAtRight);\n function onWheelY(event, deltaY) {\n raf.cancel(nextFrameRef.current);\n offsetRef.current += deltaY;\n wheelValueRef.current = deltaY;\n\n // Do nothing when scroll at the edge, Skip check when is in scroll\n if (originScroll(false, deltaY)) return;\n\n // Proxy of scroll events\n if (!isFF) {\n event.preventDefault();\n }\n nextFrameRef.current = raf(function () {\n // Patch a multiple for Firefox to fix wheel number too small\n // ref: https://github.com/ant-design/ant-design/issues/26372#issuecomment-679460266\n var patchMultiple = isMouseScrollRef.current ? 10 : 1;\n onWheelDelta(offsetRef.current * patchMultiple);\n offsetRef.current = 0;\n });\n }\n function onWheelX(event, deltaX) {\n onWheelDelta(deltaX, true);\n if (!isFF) {\n event.preventDefault();\n }\n }\n\n // Check for which direction does wheel do. `sx` means `shift + wheel`\n var wheelDirectionRef = useRef(null);\n var wheelDirectionCleanRef = useRef(null);\n function onWheel(event) {\n if (!inVirtual) return;\n\n // Wait for 2 frame to clean direction\n raf.cancel(wheelDirectionCleanRef.current);\n wheelDirectionCleanRef.current = raf(function () {\n wheelDirectionRef.current = null;\n }, 2);\n var deltaX = event.deltaX,\n deltaY = event.deltaY,\n shiftKey = event.shiftKey;\n var mergedDeltaX = deltaX;\n var mergedDeltaY = deltaY;\n if (wheelDirectionRef.current === 'sx' || !wheelDirectionRef.current && (shiftKey || false) && deltaY && !deltaX) {\n mergedDeltaX = deltaY;\n mergedDeltaY = 0;\n wheelDirectionRef.current = 'sx';\n }\n var absX = Math.abs(mergedDeltaX);\n var absY = Math.abs(mergedDeltaY);\n if (wheelDirectionRef.current === null) {\n wheelDirectionRef.current = horizontalScroll && absX > absY ? 'x' : 'y';\n }\n if (wheelDirectionRef.current === 'y') {\n onWheelY(event, mergedDeltaY);\n } else {\n onWheelX(event, mergedDeltaX);\n }\n }\n\n // A patch for firefox\n function onFireFoxScroll(event) {\n if (!inVirtual) return;\n isMouseScrollRef.current = event.detail === wheelValueRef.current;\n }\n return [onWheel, onFireFoxScroll];\n}","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n// Firefox has low performance of map.\nvar CacheMap = /*#__PURE__*/function () {\n function CacheMap() {\n _classCallCheck(this, CacheMap);\n _defineProperty(this, \"maps\", void 0);\n // Used for cache key\n // `useMemo` no need to update if `id` not change\n _defineProperty(this, \"id\", 0);\n this.maps = Object.create(null);\n }\n _createClass(CacheMap, [{\n key: \"set\",\n value: function set(key, value) {\n this.maps[key] = value;\n this.id += 1;\n }\n }, {\n key: \"get\",\n value: function get(key) {\n return this.maps[key];\n }\n }]);\n return CacheMap;\n}();\nexport default CacheMap;","import useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport { useRef } from 'react';\nvar SMOOTH_PTG = 14 / 15;\nexport default function useMobileTouchMove(inVirtual, listRef, callback) {\n var touchedRef = useRef(false);\n var touchXRef = useRef(0);\n var touchYRef = useRef(0);\n var elementRef = useRef(null);\n\n // Smooth scroll\n var intervalRef = useRef(null);\n\n /* eslint-disable prefer-const */\n var cleanUpEvents;\n var onTouchMove = function onTouchMove(e) {\n if (touchedRef.current) {\n var currentX = Math.ceil(e.touches[0].pageX);\n var currentY = Math.ceil(e.touches[0].pageY);\n var offsetX = touchXRef.current - currentX;\n var offsetY = touchYRef.current - currentY;\n var _isHorizontal = Math.abs(offsetX) > Math.abs(offsetY);\n if (_isHorizontal) {\n touchXRef.current = currentX;\n } else {\n touchYRef.current = currentY;\n }\n if (callback(_isHorizontal, _isHorizontal ? offsetX : offsetY)) {\n e.preventDefault();\n }\n // Smooth interval\n clearInterval(intervalRef.current);\n intervalRef.current = setInterval(function () {\n if (_isHorizontal) {\n offsetX *= SMOOTH_PTG;\n } else {\n offsetY *= SMOOTH_PTG;\n }\n var offset = Math.floor(_isHorizontal ? offsetX : offsetY);\n if (!callback(_isHorizontal, offset, true) || Math.abs(offset) <= 0.1) {\n clearInterval(intervalRef.current);\n }\n }, 16);\n }\n };\n var onTouchEnd = function onTouchEnd() {\n touchedRef.current = false;\n cleanUpEvents();\n };\n var onTouchStart = function onTouchStart(e) {\n cleanUpEvents();\n if (e.touches.length === 1 && !touchedRef.current) {\n touchedRef.current = true;\n touchXRef.current = Math.ceil(e.touches[0].pageX);\n touchYRef.current = Math.ceil(e.touches[0].pageY);\n elementRef.current = e.target;\n elementRef.current.addEventListener('touchmove', onTouchMove, {\n passive: false\n });\n elementRef.current.addEventListener('touchend', onTouchEnd, {\n passive: true\n });\n }\n };\n cleanUpEvents = function cleanUpEvents() {\n if (elementRef.current) {\n elementRef.current.removeEventListener('touchmove', onTouchMove);\n elementRef.current.removeEventListener('touchend', onTouchEnd);\n }\n };\n useLayoutEffect(function () {\n if (inVirtual) {\n listRef.current.addEventListener('touchstart', onTouchStart, {\n passive: true\n });\n }\n return function () {\n var _listRef$current;\n (_listRef$current = listRef.current) === null || _listRef$current === void 0 || _listRef$current.removeEventListener('touchstart', onTouchStart);\n cleanUpEvents();\n clearInterval(intervalRef.current);\n };\n }, [inVirtual]);\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport classNames from 'classnames';\nimport raf from \"rc-util/es/raf\";\nimport * as React from 'react';\nfunction getPageXY(e, horizontal) {\n var obj = 'touches' in e ? e.touches[0] : e;\n return obj[horizontal ? 'pageX' : 'pageY'];\n}\nvar ScrollBar = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var prefixCls = props.prefixCls,\n rtl = props.rtl,\n scrollOffset = props.scrollOffset,\n scrollRange = props.scrollRange,\n onStartMove = props.onStartMove,\n onStopMove = props.onStopMove,\n onScroll = props.onScroll,\n horizontal = props.horizontal,\n spinSize = props.spinSize,\n containerSize = props.containerSize,\n style = props.style,\n propsThumbStyle = props.thumbStyle;\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n dragging = _React$useState2[0],\n setDragging = _React$useState2[1];\n var _React$useState3 = React.useState(null),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n pageXY = _React$useState4[0],\n setPageXY = _React$useState4[1];\n var _React$useState5 = React.useState(null),\n _React$useState6 = _slicedToArray(_React$useState5, 2),\n startTop = _React$useState6[0],\n setStartTop = _React$useState6[1];\n var isLTR = !rtl;\n\n // ========================= Refs =========================\n var scrollbarRef = React.useRef();\n var thumbRef = React.useRef();\n\n // ======================= Visible ========================\n var _React$useState7 = React.useState(false),\n _React$useState8 = _slicedToArray(_React$useState7, 2),\n visible = _React$useState8[0],\n setVisible = _React$useState8[1];\n var visibleTimeoutRef = React.useRef();\n var delayHidden = function delayHidden() {\n clearTimeout(visibleTimeoutRef.current);\n setVisible(true);\n visibleTimeoutRef.current = setTimeout(function () {\n setVisible(false);\n }, 3000);\n };\n\n // ======================== Range =========================\n var enableScrollRange = scrollRange - containerSize || 0;\n var enableOffsetRange = containerSize - spinSize || 0;\n\n // ========================= Top ==========================\n var top = React.useMemo(function () {\n if (scrollOffset === 0 || enableScrollRange === 0) {\n return 0;\n }\n var ptg = scrollOffset / enableScrollRange;\n return ptg * enableOffsetRange;\n }, [scrollOffset, enableScrollRange, enableOffsetRange]);\n\n // ====================== Container =======================\n var onContainerMouseDown = function onContainerMouseDown(e) {\n e.stopPropagation();\n e.preventDefault();\n };\n\n // ======================== Thumb =========================\n var stateRef = React.useRef({\n top: top,\n dragging: dragging,\n pageY: pageXY,\n startTop: startTop\n });\n stateRef.current = {\n top: top,\n dragging: dragging,\n pageY: pageXY,\n startTop: startTop\n };\n var onThumbMouseDown = function onThumbMouseDown(e) {\n setDragging(true);\n setPageXY(getPageXY(e, horizontal));\n setStartTop(stateRef.current.top);\n onStartMove();\n e.stopPropagation();\n e.preventDefault();\n };\n\n // ======================== Effect ========================\n\n // React make event as passive, but we need to preventDefault\n // Add event on dom directly instead.\n // ref: https://github.com/facebook/react/issues/9809\n React.useEffect(function () {\n var onScrollbarTouchStart = function onScrollbarTouchStart(e) {\n e.preventDefault();\n };\n var scrollbarEle = scrollbarRef.current;\n var thumbEle = thumbRef.current;\n scrollbarEle.addEventListener('touchstart', onScrollbarTouchStart, {\n passive: false\n });\n thumbEle.addEventListener('touchstart', onThumbMouseDown, {\n passive: false\n });\n return function () {\n scrollbarEle.removeEventListener('touchstart', onScrollbarTouchStart);\n thumbEle.removeEventListener('touchstart', onThumbMouseDown);\n };\n }, []);\n\n // Pass to effect\n var enableScrollRangeRef = React.useRef();\n enableScrollRangeRef.current = enableScrollRange;\n var enableOffsetRangeRef = React.useRef();\n enableOffsetRangeRef.current = enableOffsetRange;\n React.useEffect(function () {\n if (dragging) {\n var moveRafId;\n var onMouseMove = function onMouseMove(e) {\n var _stateRef$current = stateRef.current,\n stateDragging = _stateRef$current.dragging,\n statePageY = _stateRef$current.pageY,\n stateStartTop = _stateRef$current.startTop;\n raf.cancel(moveRafId);\n var rect = scrollbarRef.current.getBoundingClientRect();\n var scale = containerSize / (horizontal ? rect.width : rect.height);\n if (stateDragging) {\n var offset = (getPageXY(e, horizontal) - statePageY) * scale;\n var newTop = stateStartTop;\n if (!isLTR && horizontal) {\n newTop -= offset;\n } else {\n newTop += offset;\n }\n var tmpEnableScrollRange = enableScrollRangeRef.current;\n var tmpEnableOffsetRange = enableOffsetRangeRef.current;\n var ptg = tmpEnableOffsetRange ? newTop / tmpEnableOffsetRange : 0;\n var newScrollTop = Math.ceil(ptg * tmpEnableScrollRange);\n newScrollTop = Math.max(newScrollTop, 0);\n newScrollTop = Math.min(newScrollTop, tmpEnableScrollRange);\n moveRafId = raf(function () {\n onScroll(newScrollTop, horizontal);\n });\n }\n };\n var onMouseUp = function onMouseUp() {\n setDragging(false);\n onStopMove();\n };\n window.addEventListener('mousemove', onMouseMove, {\n passive: true\n });\n window.addEventListener('touchmove', onMouseMove, {\n passive: true\n });\n window.addEventListener('mouseup', onMouseUp, {\n passive: true\n });\n window.addEventListener('touchend', onMouseUp, {\n passive: true\n });\n return function () {\n window.removeEventListener('mousemove', onMouseMove);\n window.removeEventListener('touchmove', onMouseMove);\n window.removeEventListener('mouseup', onMouseUp);\n window.removeEventListener('touchend', onMouseUp);\n raf.cancel(moveRafId);\n };\n }\n }, [dragging]);\n React.useEffect(function () {\n delayHidden();\n return function () {\n clearTimeout(visibleTimeoutRef.current);\n };\n }, [scrollOffset]);\n\n // ====================== Imperative ======================\n React.useImperativeHandle(ref, function () {\n return {\n delayHidden: delayHidden\n };\n });\n\n // ======================== Render ========================\n var scrollbarPrefixCls = \"\".concat(prefixCls, \"-scrollbar\");\n var containerStyle = {\n position: 'absolute',\n visibility: visible ? null : 'hidden'\n };\n var thumbStyle = {\n position: 'absolute',\n background: 'rgba(0, 0, 0, 0.5)',\n borderRadius: 99,\n cursor: 'pointer',\n userSelect: 'none'\n };\n if (horizontal) {\n // Container\n containerStyle.height = 8;\n containerStyle.left = 0;\n containerStyle.right = 0;\n containerStyle.bottom = 0;\n\n // Thumb\n thumbStyle.height = '100%';\n thumbStyle.width = spinSize;\n if (isLTR) {\n thumbStyle.left = top;\n } else {\n thumbStyle.right = top;\n }\n } else {\n // Container\n containerStyle.width = 8;\n containerStyle.top = 0;\n containerStyle.bottom = 0;\n if (isLTR) {\n containerStyle.right = 0;\n } else {\n containerStyle.left = 0;\n }\n\n // Thumb\n thumbStyle.width = '100%';\n thumbStyle.height = spinSize;\n thumbStyle.top = top;\n }\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: scrollbarRef,\n className: classNames(scrollbarPrefixCls, _defineProperty(_defineProperty(_defineProperty({}, \"\".concat(scrollbarPrefixCls, \"-horizontal\"), horizontal), \"\".concat(scrollbarPrefixCls, \"-vertical\"), !horizontal), \"\".concat(scrollbarPrefixCls, \"-visible\"), visible)),\n style: _objectSpread(_objectSpread({}, containerStyle), style),\n onMouseDown: onContainerMouseDown,\n onMouseMove: delayHidden\n }, /*#__PURE__*/React.createElement(\"div\", {\n ref: thumbRef,\n className: classNames(\"\".concat(scrollbarPrefixCls, \"-thumb\"), _defineProperty({}, \"\".concat(scrollbarPrefixCls, \"-thumb-moving\"), dragging)),\n style: _objectSpread(_objectSpread({}, thumbStyle), propsThumbStyle),\n onMouseDown: onThumbMouseDown\n }));\n});\nif (process.env.NODE_ENV !== 'production') {\n ScrollBar.displayName = 'ScrollBar';\n}\nexport default ScrollBar;","var MIN_SIZE = 20;\nexport function getSpinSize() {\n var containerSize = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var scrollRange = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var baseSize = containerSize / scrollRange * containerSize;\n if (isNaN(baseSize)) {\n baseSize = 0;\n }\n baseSize = Math.max(baseSize, MIN_SIZE);\n return Math.floor(baseSize);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"prefixCls\", \"className\", \"height\", \"itemHeight\", \"fullHeight\", \"style\", \"data\", \"children\", \"itemKey\", \"virtual\", \"direction\", \"scrollWidth\", \"component\", \"onScroll\", \"onVirtualScroll\", \"onVisibleChange\", \"innerProps\", \"extraRender\", \"styles\"];\nimport classNames from 'classnames';\nimport ResizeObserver from 'rc-resize-observer';\nimport { useEvent } from 'rc-util';\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport * as React from 'react';\nimport { useRef, useState } from 'react';\nimport { flushSync } from 'react-dom';\nimport Filler from \"./Filler\";\nimport useChildren from \"./hooks/useChildren\";\nimport useDiffItem from \"./hooks/useDiffItem\";\nimport useFrameWheel from \"./hooks/useFrameWheel\";\nimport { useGetSize } from \"./hooks/useGetSize\";\nimport useHeights from \"./hooks/useHeights\";\nimport useMobileTouchMove from \"./hooks/useMobileTouchMove\";\nimport useOriginScroll from \"./hooks/useOriginScroll\";\nimport useScrollTo from \"./hooks/useScrollTo\";\nimport ScrollBar from \"./ScrollBar\";\nimport { getSpinSize } from \"./utils/scrollbarUtil\";\nvar EMPTY_DATA = [];\nvar ScrollStyle = {\n overflowY: 'auto',\n overflowAnchor: 'none'\n};\nexport function RawList(props, ref) {\n var _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-virtual-list' : _props$prefixCls,\n className = props.className,\n height = props.height,\n itemHeight = props.itemHeight,\n _props$fullHeight = props.fullHeight,\n fullHeight = _props$fullHeight === void 0 ? true : _props$fullHeight,\n style = props.style,\n data = props.data,\n children = props.children,\n itemKey = props.itemKey,\n virtual = props.virtual,\n direction = props.direction,\n scrollWidth = props.scrollWidth,\n _props$component = props.component,\n Component = _props$component === void 0 ? 'div' : _props$component,\n onScroll = props.onScroll,\n onVirtualScroll = props.onVirtualScroll,\n onVisibleChange = props.onVisibleChange,\n innerProps = props.innerProps,\n extraRender = props.extraRender,\n styles = props.styles,\n restProps = _objectWithoutProperties(props, _excluded);\n\n // =============================== Item Key ===============================\n var getKey = React.useCallback(function (item) {\n if (typeof itemKey === 'function') {\n return itemKey(item);\n }\n return item === null || item === void 0 ? void 0 : item[itemKey];\n }, [itemKey]);\n\n // ================================ Height ================================\n var _useHeights = useHeights(getKey, null, null),\n _useHeights2 = _slicedToArray(_useHeights, 4),\n setInstanceRef = _useHeights2[0],\n collectHeight = _useHeights2[1],\n heights = _useHeights2[2],\n heightUpdatedMark = _useHeights2[3];\n\n // ================================= MISC =================================\n var useVirtual = !!(virtual !== false && height && itemHeight);\n var containerHeight = React.useMemo(function () {\n return Object.values(heights.maps).reduce(function (total, curr) {\n return total + curr;\n }, 0);\n }, [heights.id, heights.maps]);\n var inVirtual = useVirtual && data && (Math.max(itemHeight * data.length, containerHeight) > height || !!scrollWidth);\n var isRTL = direction === 'rtl';\n var mergedClassName = classNames(prefixCls, _defineProperty({}, \"\".concat(prefixCls, \"-rtl\"), isRTL), className);\n var mergedData = data || EMPTY_DATA;\n var componentRef = useRef();\n var fillerInnerRef = useRef();\n var containerRef = useRef();\n\n // =============================== Item Key ===============================\n\n var _useState = useState(0),\n _useState2 = _slicedToArray(_useState, 2),\n offsetTop = _useState2[0],\n setOffsetTop = _useState2[1];\n var _useState3 = useState(0),\n _useState4 = _slicedToArray(_useState3, 2),\n offsetLeft = _useState4[0],\n setOffsetLeft = _useState4[1];\n var _useState5 = useState(false),\n _useState6 = _slicedToArray(_useState5, 2),\n scrollMoving = _useState6[0],\n setScrollMoving = _useState6[1];\n var onScrollbarStartMove = function onScrollbarStartMove() {\n setScrollMoving(true);\n };\n var onScrollbarStopMove = function onScrollbarStopMove() {\n setScrollMoving(false);\n };\n var sharedConfig = {\n getKey: getKey\n };\n\n // ================================ Scroll ================================\n function syncScrollTop(newTop) {\n setOffsetTop(function (origin) {\n var value;\n if (typeof newTop === 'function') {\n value = newTop(origin);\n } else {\n value = newTop;\n }\n var alignedTop = keepInRange(value);\n componentRef.current.scrollTop = alignedTop;\n return alignedTop;\n });\n }\n\n // ================================ Legacy ================================\n // Put ref here since the range is generate by follow\n var rangeRef = useRef({\n start: 0,\n end: mergedData.length\n });\n var diffItemRef = useRef();\n var _useDiffItem = useDiffItem(mergedData, getKey),\n _useDiffItem2 = _slicedToArray(_useDiffItem, 1),\n diffItem = _useDiffItem2[0];\n diffItemRef.current = diffItem;\n\n // ========================== Visible Calculation =========================\n var _React$useMemo = React.useMemo(function () {\n if (!useVirtual) {\n return {\n scrollHeight: undefined,\n start: 0,\n end: mergedData.length - 1,\n offset: undefined\n };\n }\n\n // Always use virtual scroll bar in avoid shaking\n if (!inVirtual) {\n var _fillerInnerRef$curre;\n return {\n scrollHeight: ((_fillerInnerRef$curre = fillerInnerRef.current) === null || _fillerInnerRef$curre === void 0 ? void 0 : _fillerInnerRef$curre.offsetHeight) || 0,\n start: 0,\n end: mergedData.length - 1,\n offset: undefined\n };\n }\n var itemTop = 0;\n var startIndex;\n var startOffset;\n var endIndex;\n var dataLen = mergedData.length;\n for (var i = 0; i < dataLen; i += 1) {\n var _item = mergedData[i];\n var key = getKey(_item);\n var cacheHeight = heights.get(key);\n var currentItemBottom = itemTop + (cacheHeight === undefined ? itemHeight : cacheHeight);\n\n // Check item top in the range\n if (currentItemBottom >= offsetTop && startIndex === undefined) {\n startIndex = i;\n startOffset = itemTop;\n }\n\n // Check item bottom in the range. We will render additional one item for motion usage\n if (currentItemBottom > offsetTop + height && endIndex === undefined) {\n endIndex = i;\n }\n itemTop = currentItemBottom;\n }\n\n // When scrollTop at the end but data cut to small count will reach this\n if (startIndex === undefined) {\n startIndex = 0;\n startOffset = 0;\n endIndex = Math.ceil(height / itemHeight);\n }\n if (endIndex === undefined) {\n endIndex = mergedData.length - 1;\n }\n\n // Give cache to improve scroll experience\n endIndex = Math.min(endIndex + 1, mergedData.length - 1);\n return {\n scrollHeight: itemTop,\n start: startIndex,\n end: endIndex,\n offset: startOffset\n };\n }, [inVirtual, useVirtual, offsetTop, mergedData, heightUpdatedMark, height]),\n scrollHeight = _React$useMemo.scrollHeight,\n start = _React$useMemo.start,\n end = _React$useMemo.end,\n fillerOffset = _React$useMemo.offset;\n rangeRef.current.start = start;\n rangeRef.current.end = end;\n\n // ================================= Size =================================\n var _React$useState = React.useState({\n width: 0,\n height: height\n }),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n size = _React$useState2[0],\n setSize = _React$useState2[1];\n var onHolderResize = function onHolderResize(sizeInfo) {\n setSize({\n width: sizeInfo.offsetWidth,\n height: sizeInfo.offsetHeight\n });\n };\n\n // Hack on scrollbar to enable flash call\n var verticalScrollBarRef = useRef();\n var horizontalScrollBarRef = useRef();\n var horizontalScrollBarSpinSize = React.useMemo(function () {\n return getSpinSize(size.width, scrollWidth);\n }, [size.width, scrollWidth]);\n var verticalScrollBarSpinSize = React.useMemo(function () {\n return getSpinSize(size.height, scrollHeight);\n }, [size.height, scrollHeight]);\n\n // =============================== In Range ===============================\n var maxScrollHeight = scrollHeight - height;\n var maxScrollHeightRef = useRef(maxScrollHeight);\n maxScrollHeightRef.current = maxScrollHeight;\n function keepInRange(newScrollTop) {\n var newTop = newScrollTop;\n if (!Number.isNaN(maxScrollHeightRef.current)) {\n newTop = Math.min(newTop, maxScrollHeightRef.current);\n }\n newTop = Math.max(newTop, 0);\n return newTop;\n }\n var isScrollAtTop = offsetTop <= 0;\n var isScrollAtBottom = offsetTop >= maxScrollHeight;\n var isScrollAtLeft = offsetLeft <= 0;\n var isScrollAtRight = offsetLeft >= scrollWidth;\n var originScroll = useOriginScroll(isScrollAtTop, isScrollAtBottom, isScrollAtLeft, isScrollAtRight);\n\n // ================================ Scroll ================================\n var getVirtualScrollInfo = function getVirtualScrollInfo() {\n return {\n x: isRTL ? -offsetLeft : offsetLeft,\n y: offsetTop\n };\n };\n var lastVirtualScrollInfoRef = useRef(getVirtualScrollInfo());\n var triggerScroll = useEvent(function (params) {\n if (onVirtualScroll) {\n var nextInfo = _objectSpread(_objectSpread({}, getVirtualScrollInfo()), params);\n\n // Trigger when offset changed\n if (lastVirtualScrollInfoRef.current.x !== nextInfo.x || lastVirtualScrollInfoRef.current.y !== nextInfo.y) {\n onVirtualScroll(nextInfo);\n lastVirtualScrollInfoRef.current = nextInfo;\n }\n }\n });\n function onScrollBar(newScrollOffset, horizontal) {\n var newOffset = newScrollOffset;\n if (horizontal) {\n flushSync(function () {\n setOffsetLeft(newOffset);\n });\n triggerScroll();\n } else {\n syncScrollTop(newOffset);\n }\n }\n\n // When data size reduce. It may trigger native scroll event back to fit scroll position\n function onFallbackScroll(e) {\n var newScrollTop = e.currentTarget.scrollTop;\n if (newScrollTop !== offsetTop) {\n syncScrollTop(newScrollTop);\n }\n\n // Trigger origin onScroll\n onScroll === null || onScroll === void 0 || onScroll(e);\n triggerScroll();\n }\n var keepInHorizontalRange = function keepInHorizontalRange(nextOffsetLeft) {\n var tmpOffsetLeft = nextOffsetLeft;\n var max = !!scrollWidth ? scrollWidth - size.width : 0;\n tmpOffsetLeft = Math.max(tmpOffsetLeft, 0);\n tmpOffsetLeft = Math.min(tmpOffsetLeft, max);\n return tmpOffsetLeft;\n };\n var onWheelDelta = useEvent(function (offsetXY, fromHorizontal) {\n if (fromHorizontal) {\n // Horizontal scroll no need sync virtual position\n\n flushSync(function () {\n setOffsetLeft(function (left) {\n var nextOffsetLeft = left + (isRTL ? -offsetXY : offsetXY);\n return keepInHorizontalRange(nextOffsetLeft);\n });\n });\n triggerScroll();\n } else {\n syncScrollTop(function (top) {\n var newTop = top + offsetXY;\n return newTop;\n });\n }\n });\n\n // Since this added in global,should use ref to keep update\n var _useFrameWheel = useFrameWheel(useVirtual, isScrollAtTop, isScrollAtBottom, isScrollAtLeft, isScrollAtRight, !!scrollWidth, onWheelDelta),\n _useFrameWheel2 = _slicedToArray(_useFrameWheel, 2),\n onRawWheel = _useFrameWheel2[0],\n onFireFoxScroll = _useFrameWheel2[1];\n\n // Mobile touch move\n useMobileTouchMove(useVirtual, componentRef, function (isHorizontal, delta, smoothOffset) {\n if (originScroll(isHorizontal, delta, smoothOffset)) {\n return false;\n }\n onRawWheel({\n preventDefault: function preventDefault() {},\n deltaX: isHorizontal ? delta : 0,\n deltaY: isHorizontal ? 0 : delta\n });\n return true;\n });\n useLayoutEffect(function () {\n // Firefox only\n function onMozMousePixelScroll(e) {\n if (useVirtual) {\n e.preventDefault();\n }\n }\n var componentEle = componentRef.current;\n componentEle.addEventListener('wheel', onRawWheel, {\n passive: false\n });\n componentEle.addEventListener('DOMMouseScroll', onFireFoxScroll, {\n passive: true\n });\n componentEle.addEventListener('MozMousePixelScroll', onMozMousePixelScroll, {\n passive: false\n });\n return function () {\n componentEle.removeEventListener('wheel', onRawWheel);\n componentEle.removeEventListener('DOMMouseScroll', onFireFoxScroll);\n componentEle.removeEventListener('MozMousePixelScroll', onMozMousePixelScroll);\n };\n }, [useVirtual]);\n\n // Sync scroll left\n useLayoutEffect(function () {\n if (scrollWidth) {\n var newOffsetLeft = keepInHorizontalRange(offsetLeft);\n setOffsetLeft(newOffsetLeft);\n triggerScroll({\n x: newOffsetLeft\n });\n }\n }, [size.width, scrollWidth]);\n\n // ================================= Ref ==================================\n var delayHideScrollBar = function delayHideScrollBar() {\n var _verticalScrollBarRef, _horizontalScrollBarR;\n (_verticalScrollBarRef = verticalScrollBarRef.current) === null || _verticalScrollBarRef === void 0 || _verticalScrollBarRef.delayHidden();\n (_horizontalScrollBarR = horizontalScrollBarRef.current) === null || _horizontalScrollBarR === void 0 || _horizontalScrollBarR.delayHidden();\n };\n var _scrollTo = useScrollTo(componentRef, mergedData, heights, itemHeight, getKey, function () {\n return collectHeight(true);\n }, syncScrollTop, delayHideScrollBar);\n React.useImperativeHandle(ref, function () {\n return {\n nativeElement: containerRef.current,\n getScrollInfo: getVirtualScrollInfo,\n scrollTo: function scrollTo(config) {\n function isPosScroll(arg) {\n return arg && _typeof(arg) === 'object' && ('left' in arg || 'top' in arg);\n }\n if (isPosScroll(config)) {\n // Scroll X\n if (config.left !== undefined) {\n setOffsetLeft(keepInHorizontalRange(config.left));\n }\n\n // Scroll Y\n _scrollTo(config.top);\n } else {\n _scrollTo(config);\n }\n }\n };\n });\n\n // ================================ Effect ================================\n /** We need told outside that some list not rendered */\n useLayoutEffect(function () {\n if (onVisibleChange) {\n var renderList = mergedData.slice(start, end + 1);\n onVisibleChange(renderList, mergedData);\n }\n }, [start, end, mergedData]);\n\n // ================================ Extra =================================\n var getSize = useGetSize(mergedData, getKey, heights, itemHeight);\n var extraContent = extraRender === null || extraRender === void 0 ? void 0 : extraRender({\n start: start,\n end: end,\n virtual: inVirtual,\n offsetX: offsetLeft,\n offsetY: fillerOffset,\n rtl: isRTL,\n getSize: getSize\n });\n\n // ================================ Render ================================\n var listChildren = useChildren(mergedData, start, end, scrollWidth, offsetLeft, setInstanceRef, children, sharedConfig);\n var componentStyle = null;\n if (height) {\n componentStyle = _objectSpread(_defineProperty({}, fullHeight ? 'height' : 'maxHeight', height), ScrollStyle);\n if (useVirtual) {\n componentStyle.overflowY = 'hidden';\n if (scrollWidth) {\n componentStyle.overflowX = 'hidden';\n }\n if (scrollMoving) {\n componentStyle.pointerEvents = 'none';\n }\n }\n }\n var containerProps = {};\n if (isRTL) {\n containerProps.dir = 'rtl';\n }\n return /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: containerRef,\n style: _objectSpread(_objectSpread({}, style), {}, {\n position: 'relative'\n }),\n className: mergedClassName\n }, containerProps, restProps), /*#__PURE__*/React.createElement(ResizeObserver, {\n onResize: onHolderResize\n }, /*#__PURE__*/React.createElement(Component, {\n className: \"\".concat(prefixCls, \"-holder\"),\n style: componentStyle,\n ref: componentRef,\n onScroll: onFallbackScroll,\n onMouseEnter: delayHideScrollBar\n }, /*#__PURE__*/React.createElement(Filler, {\n prefixCls: prefixCls,\n height: scrollHeight,\n offsetX: offsetLeft,\n offsetY: fillerOffset,\n scrollWidth: scrollWidth,\n onInnerResize: collectHeight,\n ref: fillerInnerRef,\n innerProps: innerProps,\n rtl: isRTL,\n extra: extraContent\n }, listChildren))), inVirtual && scrollHeight > height && /*#__PURE__*/React.createElement(ScrollBar, {\n ref: verticalScrollBarRef,\n prefixCls: prefixCls,\n scrollOffset: offsetTop,\n scrollRange: scrollHeight,\n rtl: isRTL,\n onScroll: onScrollBar,\n onStartMove: onScrollbarStartMove,\n onStopMove: onScrollbarStopMove,\n spinSize: verticalScrollBarSpinSize,\n containerSize: size.height,\n style: styles === null || styles === void 0 ? void 0 : styles.verticalScrollBar,\n thumbStyle: styles === null || styles === void 0 ? void 0 : styles.verticalScrollBarThumb\n }), inVirtual && scrollWidth > size.width && /*#__PURE__*/React.createElement(ScrollBar, {\n ref: horizontalScrollBarRef,\n prefixCls: prefixCls,\n scrollOffset: offsetLeft,\n scrollRange: scrollWidth,\n rtl: isRTL,\n onScroll: onScrollBar,\n onStartMove: onScrollbarStartMove,\n onStopMove: onScrollbarStopMove,\n spinSize: horizontalScrollBarSpinSize,\n containerSize: size.width,\n horizontal: true,\n style: styles === null || styles === void 0 ? void 0 : styles.horizontalScrollBar,\n thumbStyle: styles === null || styles === void 0 ? void 0 : styles.horizontalScrollBarThumb\n }));\n}\nvar List = /*#__PURE__*/React.forwardRef(RawList);\nList.displayName = 'List';\nexport default List;","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { useRef, useEffect } from 'react';\nimport findDOMNode from \"rc-util/es/Dom/findDOMNode\";\nimport raf from \"rc-util/es/raf\";\nimport CacheMap from \"../utils/CacheMap\";\nexport default function useHeights(getKey, onItemAdd, onItemRemove) {\n var _React$useState = React.useState(0),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n updatedMark = _React$useState2[0],\n setUpdatedMark = _React$useState2[1];\n var instanceRef = useRef(new Map());\n var heightsRef = useRef(new CacheMap());\n var collectRafRef = useRef();\n function cancelRaf() {\n raf.cancel(collectRafRef.current);\n }\n function collectHeight() {\n var sync = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n cancelRaf();\n var doCollect = function doCollect() {\n instanceRef.current.forEach(function (element, key) {\n if (element && element.offsetParent) {\n var htmlElement = findDOMNode(element);\n var offsetHeight = htmlElement.offsetHeight;\n if (heightsRef.current.get(key) !== offsetHeight) {\n heightsRef.current.set(key, htmlElement.offsetHeight);\n }\n }\n });\n\n // Always trigger update mark to tell parent that should re-calculate heights when resized\n setUpdatedMark(function (c) {\n return c + 1;\n });\n };\n if (sync) {\n doCollect();\n } else {\n collectRafRef.current = raf(doCollect);\n }\n }\n function setInstanceRef(item, instance) {\n var key = getKey(item);\n var origin = instanceRef.current.get(key);\n if (instance) {\n instanceRef.current.set(key, instance);\n collectHeight();\n } else {\n instanceRef.current.delete(key);\n }\n\n // Instance changed\n if (!origin !== !instance) {\n if (instance) {\n onItemAdd === null || onItemAdd === void 0 || onItemAdd(item);\n } else {\n onItemRemove === null || onItemRemove === void 0 || onItemRemove(item);\n }\n }\n }\n useEffect(function () {\n return cancelRaf;\n }, []);\n return [setInstanceRef, collectHeight, heightsRef.current, updatedMark];\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\n/* eslint-disable no-param-reassign */\nimport * as React from 'react';\nimport raf from \"rc-util/es/raf\";\nimport useLayoutEffect from \"rc-util/es/hooks/useLayoutEffect\";\nimport { warning } from 'rc-util';\nvar MAX_TIMES = 10;\nexport default function useScrollTo(containerRef, data, heights, itemHeight, getKey, collectHeight, syncScrollTop, triggerFlash) {\n var scrollRef = React.useRef();\n var _React$useState = React.useState(null),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n syncState = _React$useState2[0],\n setSyncState = _React$useState2[1];\n\n // ========================== Sync Scroll ==========================\n useLayoutEffect(function () {\n if (syncState && syncState.times < MAX_TIMES) {\n // Never reach\n if (!containerRef.current) {\n setSyncState(function (ori) {\n return _objectSpread({}, ori);\n });\n return;\n }\n collectHeight();\n var targetAlign = syncState.targetAlign,\n originAlign = syncState.originAlign,\n index = syncState.index,\n offset = syncState.offset;\n var height = containerRef.current.clientHeight;\n var needCollectHeight = false;\n var newTargetAlign = targetAlign;\n var targetTop = null;\n\n // Go to next frame if height not exist\n if (height) {\n var mergedAlign = targetAlign || originAlign;\n\n // Get top & bottom\n var stackTop = 0;\n var itemTop = 0;\n var itemBottom = 0;\n var maxLen = Math.min(data.length - 1, index);\n for (var i = 0; i <= maxLen; i += 1) {\n var key = getKey(data[i]);\n itemTop = stackTop;\n var cacheHeight = heights.get(key);\n itemBottom = itemTop + (cacheHeight === undefined ? itemHeight : cacheHeight);\n stackTop = itemBottom;\n }\n\n // Check if need sync height (visible range has item not record height)\n var leftHeight = mergedAlign === 'top' ? offset : height - offset;\n for (var _i = maxLen; _i >= 0; _i -= 1) {\n var _key = getKey(data[_i]);\n var _cacheHeight = heights.get(_key);\n if (_cacheHeight === undefined) {\n needCollectHeight = true;\n break;\n }\n leftHeight -= _cacheHeight;\n if (leftHeight <= 0) {\n break;\n }\n }\n\n // Scroll to\n switch (mergedAlign) {\n case 'top':\n targetTop = itemTop - offset;\n break;\n case 'bottom':\n targetTop = itemBottom - height + offset;\n break;\n default:\n {\n var scrollTop = containerRef.current.scrollTop;\n var scrollBottom = scrollTop + height;\n if (itemTop < scrollTop) {\n newTargetAlign = 'top';\n } else if (itemBottom > scrollBottom) {\n newTargetAlign = 'bottom';\n }\n }\n }\n if (targetTop !== null) {\n syncScrollTop(targetTop);\n }\n\n // One more time for sync\n if (targetTop !== syncState.lastTop) {\n needCollectHeight = true;\n }\n }\n\n // Trigger next effect\n if (needCollectHeight) {\n setSyncState(_objectSpread(_objectSpread({}, syncState), {}, {\n times: syncState.times + 1,\n targetAlign: newTargetAlign,\n lastTop: targetTop\n }));\n }\n } else if (process.env.NODE_ENV !== 'production' && (syncState === null || syncState === void 0 ? void 0 : syncState.times) === MAX_TIMES) {\n warning(false, 'Seems `scrollTo` with `rc-virtual-list` reach the max limitation. Please fire issue for us. Thanks.');\n }\n }, [syncState, containerRef.current]);\n\n // =========================== Scroll To ===========================\n return function (arg) {\n // When not argument provided, we think dev may want to show the scrollbar\n if (arg === null || arg === undefined) {\n triggerFlash();\n return;\n }\n\n // Normal scroll logic\n raf.cancel(scrollRef.current);\n if (typeof arg === 'number') {\n syncScrollTop(arg);\n } else if (arg && _typeof(arg) === 'object') {\n var index;\n var align = arg.align;\n if ('index' in arg) {\n index = arg.index;\n } else {\n index = data.findIndex(function (item) {\n return getKey(item) === arg.key;\n });\n }\n var _arg$offset = arg.offset,\n offset = _arg$offset === void 0 ? 0 : _arg$offset;\n setSyncState({\n times: 0,\n index: index,\n offset: offset,\n originAlign: align\n });\n }\n };\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\n\n/**\n * Size info need loop query for the `heights` which will has the perf issue.\n * Let cache result for each render phase.\n */\nexport function useGetSize(mergedData, getKey, heights, itemHeight) {\n var _React$useMemo = React.useMemo(function () {\n return [new Map(), []];\n }, [mergedData, heights.id, itemHeight]),\n _React$useMemo2 = _slicedToArray(_React$useMemo, 2),\n key2Index = _React$useMemo2[0],\n bottomList = _React$useMemo2[1];\n var getSize = function getSize(startKey) {\n var endKey = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : startKey;\n // Get from cache first\n var startIndex = key2Index.get(startKey);\n var endIndex = key2Index.get(endKey);\n\n // Loop to fill the cache\n if (startIndex === undefined || endIndex === undefined) {\n var dataLen = mergedData.length;\n for (var i = bottomList.length; i < dataLen; i += 1) {\n var _heights$get;\n var item = mergedData[i];\n var key = getKey(item);\n key2Index.set(key, i);\n var cacheHeight = (_heights$get = heights.get(key)) !== null && _heights$get !== void 0 ? _heights$get : itemHeight;\n bottomList[i] = (bottomList[i - 1] || 0) + cacheHeight;\n if (key === startKey) {\n startIndex = i;\n }\n if (key === endKey) {\n endIndex = i;\n }\n if (startIndex !== undefined && endIndex !== undefined) {\n break;\n }\n }\n }\n return {\n top: bottomList[startIndex - 1] || 0,\n bottom: bottomList[endIndex]\n };\n };\n return getSize;\n}","import * as React from 'react';\nimport { Item } from \"../Item\";\nexport default function useChildren(list, startIndex, endIndex, scrollWidth, offsetX, setNodeRef, renderFunc, _ref) {\n var getKey = _ref.getKey;\n return list.slice(startIndex, endIndex + 1).map(function (item, index) {\n var eleIndex = startIndex + index;\n var node = renderFunc(item, eleIndex, {\n style: {\n width: scrollWidth\n },\n offsetX: offsetX\n });\n var key = getKey(item);\n return /*#__PURE__*/React.createElement(Item, {\n key: key,\n setRef: function setRef(ele) {\n return setNodeRef(item, ele);\n }\n }, node);\n });\n}","import List from \"./List\";\nexport default List;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nvar _excluded = [\"disabled\", \"title\", \"children\", \"style\", \"className\"];\nimport classNames from 'classnames';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport useMemo from \"rc-util/es/hooks/useMemo\";\nimport omit from \"rc-util/es/omit\";\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nimport List from 'rc-virtual-list';\nimport * as React from 'react';\nimport { useEffect } from 'react';\nimport SelectContext from \"./SelectContext\";\nimport TransBtn from \"./TransBtn\";\nimport useBaseProps from \"./hooks/useBaseProps\";\nimport { isPlatformMac } from \"./utils/platformUtil\";\nimport { isValidCount } from \"./utils/valueUtil\";\n\n// export interface OptionListProps {\n\nfunction isTitleType(content) {\n return typeof content === 'string' || typeof content === 'number';\n}\n\n/**\n * Using virtual list of option display.\n * Will fallback to dom if use customize render.\n */\nvar OptionList = function OptionList(_, ref) {\n var _useBaseProps = useBaseProps(),\n prefixCls = _useBaseProps.prefixCls,\n id = _useBaseProps.id,\n open = _useBaseProps.open,\n multiple = _useBaseProps.multiple,\n mode = _useBaseProps.mode,\n searchValue = _useBaseProps.searchValue,\n toggleOpen = _useBaseProps.toggleOpen,\n notFoundContent = _useBaseProps.notFoundContent,\n onPopupScroll = _useBaseProps.onPopupScroll;\n var _React$useContext = React.useContext(SelectContext),\n maxCount = _React$useContext.maxCount,\n flattenOptions = _React$useContext.flattenOptions,\n onActiveValue = _React$useContext.onActiveValue,\n defaultActiveFirstOption = _React$useContext.defaultActiveFirstOption,\n onSelect = _React$useContext.onSelect,\n menuItemSelectedIcon = _React$useContext.menuItemSelectedIcon,\n rawValues = _React$useContext.rawValues,\n fieldNames = _React$useContext.fieldNames,\n virtual = _React$useContext.virtual,\n direction = _React$useContext.direction,\n listHeight = _React$useContext.listHeight,\n listItemHeight = _React$useContext.listItemHeight,\n optionRender = _React$useContext.optionRender;\n var itemPrefixCls = \"\".concat(prefixCls, \"-item\");\n var memoFlattenOptions = useMemo(function () {\n return flattenOptions;\n }, [open, flattenOptions], function (prev, next) {\n return next[0] && prev[1] !== next[1];\n });\n\n // =========================== List ===========================\n var listRef = React.useRef(null);\n var overMaxCount = React.useMemo(function () {\n return multiple && isValidCount(maxCount) && (rawValues === null || rawValues === void 0 ? void 0 : rawValues.size) >= maxCount;\n }, [multiple, maxCount, rawValues === null || rawValues === void 0 ? void 0 : rawValues.size]);\n var onListMouseDown = function onListMouseDown(event) {\n event.preventDefault();\n };\n var scrollIntoView = function scrollIntoView(args) {\n var _listRef$current;\n (_listRef$current = listRef.current) === null || _listRef$current === void 0 || _listRef$current.scrollTo(typeof args === 'number' ? {\n index: args\n } : args);\n };\n\n // ========================== Active ==========================\n var getEnabledActiveIndex = function getEnabledActiveIndex(index) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var len = memoFlattenOptions.length;\n for (var i = 0; i < len; i += 1) {\n var current = (index + i * offset + len) % len;\n var _ref = memoFlattenOptions[current] || {},\n group = _ref.group,\n data = _ref.data;\n if (!group && !(data !== null && data !== void 0 && data.disabled) && !overMaxCount) {\n return current;\n }\n }\n return -1;\n };\n var _React$useState = React.useState(function () {\n return getEnabledActiveIndex(0);\n }),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n activeIndex = _React$useState2[0],\n setActiveIndex = _React$useState2[1];\n var setActive = function setActive(index) {\n var fromKeyboard = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n setActiveIndex(index);\n var info = {\n source: fromKeyboard ? 'keyboard' : 'mouse'\n };\n\n // Trigger active event\n var flattenItem = memoFlattenOptions[index];\n if (!flattenItem) {\n onActiveValue(null, -1, info);\n return;\n }\n onActiveValue(flattenItem.value, index, info);\n };\n\n // Auto active first item when list length or searchValue changed\n useEffect(function () {\n setActive(defaultActiveFirstOption !== false ? getEnabledActiveIndex(0) : -1);\n }, [memoFlattenOptions.length, searchValue]);\n\n // https://github.com/ant-design/ant-design/issues/34975\n var isSelected = React.useCallback(function (value) {\n return rawValues.has(value) && mode !== 'combobox';\n }, [mode, _toConsumableArray(rawValues).toString(), rawValues.size]);\n\n // Auto scroll to item position in single mode\n useEffect(function () {\n /**\n * React will skip `onChange` when component update.\n * `setActive` function will call root accessibility state update which makes re-render.\n * So we need to delay to let Input component trigger onChange first.\n */\n var timeoutId = setTimeout(function () {\n if (!multiple && open && rawValues.size === 1) {\n var value = Array.from(rawValues)[0];\n var index = memoFlattenOptions.findIndex(function (_ref2) {\n var data = _ref2.data;\n return data.value === value;\n });\n if (index !== -1) {\n setActive(index);\n scrollIntoView(index);\n }\n }\n });\n\n // Force trigger scrollbar visible when open\n if (open) {\n var _listRef$current2;\n (_listRef$current2 = listRef.current) === null || _listRef$current2 === void 0 || _listRef$current2.scrollTo(undefined);\n }\n return function () {\n return clearTimeout(timeoutId);\n };\n }, [open, searchValue]);\n\n // ========================== Values ==========================\n var onSelectValue = function onSelectValue(value) {\n if (value !== undefined) {\n onSelect(value, {\n selected: !rawValues.has(value)\n });\n }\n\n // Single mode should always close by select\n if (!multiple) {\n toggleOpen(false);\n }\n };\n\n // ========================= Keyboard =========================\n React.useImperativeHandle(ref, function () {\n return {\n onKeyDown: function onKeyDown(event) {\n var which = event.which,\n ctrlKey = event.ctrlKey;\n switch (which) {\n // >>> Arrow keys & ctrl + n/p on Mac\n case KeyCode.N:\n case KeyCode.P:\n case KeyCode.UP:\n case KeyCode.DOWN:\n {\n var offset = 0;\n if (which === KeyCode.UP) {\n offset = -1;\n } else if (which === KeyCode.DOWN) {\n offset = 1;\n } else if (isPlatformMac() && ctrlKey) {\n if (which === KeyCode.N) {\n offset = 1;\n } else if (which === KeyCode.P) {\n offset = -1;\n }\n }\n if (offset !== 0) {\n var nextActiveIndex = getEnabledActiveIndex(activeIndex + offset, offset);\n scrollIntoView(nextActiveIndex);\n setActive(nextActiveIndex, true);\n }\n break;\n }\n\n // >>> Select\n case KeyCode.ENTER:\n {\n var _item$data;\n // value\n var item = memoFlattenOptions[activeIndex];\n if (item && !(item !== null && item !== void 0 && (_item$data = item.data) !== null && _item$data !== void 0 && _item$data.disabled) && !overMaxCount) {\n onSelectValue(item.value);\n } else {\n onSelectValue(undefined);\n }\n if (open) {\n event.preventDefault();\n }\n break;\n }\n\n // >>> Close\n case KeyCode.ESC:\n {\n toggleOpen(false);\n if (open) {\n event.stopPropagation();\n }\n }\n }\n },\n onKeyUp: function onKeyUp() {},\n scrollTo: function scrollTo(index) {\n scrollIntoView(index);\n }\n };\n });\n\n // ========================== Render ==========================\n if (memoFlattenOptions.length === 0) {\n return /*#__PURE__*/React.createElement(\"div\", {\n role: \"listbox\",\n id: \"\".concat(id, \"_list\"),\n className: \"\".concat(itemPrefixCls, \"-empty\"),\n onMouseDown: onListMouseDown\n }, notFoundContent);\n }\n var omitFieldNameList = Object.keys(fieldNames).map(function (key) {\n return fieldNames[key];\n });\n var getLabel = function getLabel(item) {\n return item.label;\n };\n function getItemAriaProps(item, index) {\n var group = item.group;\n return {\n role: group ? 'presentation' : 'option',\n id: \"\".concat(id, \"_list_\").concat(index)\n };\n }\n var renderItem = function renderItem(index) {\n var item = memoFlattenOptions[index];\n if (!item) {\n return null;\n }\n var itemData = item.data || {};\n var value = itemData.value;\n var group = item.group;\n var attrs = pickAttrs(itemData, true);\n var mergedLabel = getLabel(item);\n return item ? /*#__PURE__*/React.createElement(\"div\", _extends({\n \"aria-label\": typeof mergedLabel === 'string' && !group ? mergedLabel : null\n }, attrs, {\n key: index\n }, getItemAriaProps(item, index), {\n \"aria-selected\": isSelected(value)\n }), value) : null;\n };\n var a11yProps = {\n role: 'listbox',\n id: \"\".concat(id, \"_list\")\n };\n return /*#__PURE__*/React.createElement(React.Fragment, null, virtual && /*#__PURE__*/React.createElement(\"div\", _extends({}, a11yProps, {\n style: {\n height: 0,\n width: 0,\n overflow: 'hidden'\n }\n }), renderItem(activeIndex - 1), renderItem(activeIndex), renderItem(activeIndex + 1)), /*#__PURE__*/React.createElement(List, {\n itemKey: \"key\",\n ref: listRef,\n data: memoFlattenOptions,\n height: listHeight,\n itemHeight: listItemHeight,\n fullHeight: false,\n onMouseDown: onListMouseDown,\n onScroll: onPopupScroll,\n virtual: virtual,\n direction: direction,\n innerProps: virtual ? null : a11yProps\n }, function (item, itemIndex) {\n var group = item.group,\n groupOption = item.groupOption,\n data = item.data,\n label = item.label,\n value = item.value;\n var key = data.key;\n\n // Group\n if (group) {\n var _data$title;\n var groupTitle = (_data$title = data.title) !== null && _data$title !== void 0 ? _data$title : isTitleType(label) ? label.toString() : undefined;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classNames(itemPrefixCls, \"\".concat(itemPrefixCls, \"-group\"), data.className),\n title: groupTitle\n }, label !== undefined ? label : key);\n }\n var disabled = data.disabled,\n title = data.title,\n children = data.children,\n style = data.style,\n className = data.className,\n otherProps = _objectWithoutProperties(data, _excluded);\n var passedProps = omit(otherProps, omitFieldNameList);\n\n // Option\n var selected = isSelected(value);\n var mergedDisabled = disabled || !selected && overMaxCount;\n var optionPrefixCls = \"\".concat(itemPrefixCls, \"-option\");\n var optionClassName = classNames(itemPrefixCls, optionPrefixCls, className, _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, \"\".concat(optionPrefixCls, \"-grouped\"), groupOption), \"\".concat(optionPrefixCls, \"-active\"), activeIndex === itemIndex && !mergedDisabled), \"\".concat(optionPrefixCls, \"-disabled\"), mergedDisabled), \"\".concat(optionPrefixCls, \"-selected\"), selected));\n var mergedLabel = getLabel(item);\n var iconVisible = !menuItemSelectedIcon || typeof menuItemSelectedIcon === 'function' || selected;\n\n // https://github.com/ant-design/ant-design/issues/34145\n var content = typeof mergedLabel === 'number' ? mergedLabel : mergedLabel || value;\n // https://github.com/ant-design/ant-design/issues/26717\n var optionTitle = isTitleType(content) ? content.toString() : undefined;\n if (title !== undefined) {\n optionTitle = title;\n }\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, pickAttrs(passedProps), !virtual ? getItemAriaProps(item, itemIndex) : {}, {\n \"aria-selected\": selected,\n className: optionClassName,\n title: optionTitle,\n onMouseMove: function onMouseMove() {\n if (activeIndex === itemIndex || mergedDisabled) {\n return;\n }\n setActive(itemIndex);\n },\n onClick: function onClick() {\n if (!mergedDisabled) {\n onSelectValue(value);\n }\n },\n style: style\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: \"\".concat(optionPrefixCls, \"-content\")\n }, typeof optionRender === 'function' ? optionRender(item, {\n index: itemIndex\n }) : content), /*#__PURE__*/React.isValidElement(menuItemSelectedIcon) || selected, iconVisible && /*#__PURE__*/React.createElement(TransBtn, {\n className: \"\".concat(itemPrefixCls, \"-option-state\"),\n customizeIcon: menuItemSelectedIcon,\n customizeIconProps: {\n value: value,\n disabled: mergedDisabled,\n isSelected: selected\n }\n }, selected ? '✓' : null));\n }));\n};\nvar RefOptionList = /*#__PURE__*/React.forwardRef(OptionList);\nif (process.env.NODE_ENV !== 'production') {\n RefOptionList.displayName = 'OptionList';\n}\nexport default RefOptionList;","/* istanbul ignore file */\nexport function isPlatformMac() {\n return /(mac\\sos|macintosh)/i.test(navigator.appVersion);\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\nimport { toArray } from \"../utils/commonUtil\";\nimport { injectPropsWithOption } from \"../utils/valueUtil\";\nfunction includes(test, search) {\n return toArray(test).join('').toUpperCase().includes(search);\n}\nexport default (function (options, fieldNames, searchValue, filterOption, optionFilterProp) {\n return React.useMemo(function () {\n if (!searchValue || filterOption === false) {\n return options;\n }\n var fieldOptions = fieldNames.options,\n fieldLabel = fieldNames.label,\n fieldValue = fieldNames.value;\n var filteredOptions = [];\n var customizeFilter = typeof filterOption === 'function';\n var upperSearch = searchValue.toUpperCase();\n var filterFunc = customizeFilter ? filterOption : function (_, option) {\n // Use provided `optionFilterProp`\n if (optionFilterProp) {\n return includes(option[optionFilterProp], upperSearch);\n }\n\n // Auto select `label` or `value` by option type\n if (option[fieldOptions]) {\n // hack `fieldLabel` since `OptionGroup` children is not `label`\n return includes(option[fieldLabel !== 'children' ? fieldLabel : 'label'], upperSearch);\n }\n return includes(option[fieldValue], upperSearch);\n };\n var wrapOption = customizeFilter ? function (opt) {\n return injectPropsWithOption(opt);\n } : function (opt) {\n return opt;\n };\n options.forEach(function (item) {\n // Group should check child options\n if (item[fieldOptions]) {\n // Check group first\n var matchGroup = filterFunc(searchValue, wrapOption(item));\n if (matchGroup) {\n filteredOptions.push(item);\n } else {\n // Check option\n var subOptions = item[fieldOptions].filter(function (subItem) {\n return filterFunc(searchValue, wrapOption(subItem));\n });\n if (subOptions.length) {\n filteredOptions.push(_objectSpread(_objectSpread({}, item), {}, _defineProperty({}, fieldOptions, subOptions)));\n }\n }\n return;\n }\n if (filterFunc(searchValue, wrapOption(item))) {\n filteredOptions.push(item);\n }\n });\n return filteredOptions;\n }, [options, filterOption, optionFilterProp, searchValue, fieldNames]);\n});","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport canUseDom from \"rc-util/es/Dom/canUseDom\";\nvar uuid = 0;\n\n/** Is client side and not jsdom */\nexport var isBrowserClient = process.env.NODE_ENV !== 'test' && canUseDom();\n\n/** Get unique id for accessibility usage */\nexport function getUUID() {\n var retId;\n\n // Test never reach\n /* istanbul ignore if */\n if (isBrowserClient) {\n retId = uuid;\n uuid += 1;\n } else {\n retId = 'TEST_OR_SSR';\n }\n return retId;\n}\nexport default function useId(id) {\n // Inner id for accessibility usage. Only work in client side\n var _React$useState = React.useState(),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n innerId = _React$useState2[0],\n setInnerId = _React$useState2[1];\n React.useEffect(function () {\n setInnerId(\"rc_select_\".concat(getUUID()));\n }, []);\n return id || innerId;\n}","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"children\", \"value\"],\n _excluded2 = [\"children\"];\nimport * as React from 'react';\nimport toArray from \"rc-util/es/Children/toArray\";\nfunction convertNodeToOption(node) {\n var _ref = node,\n key = _ref.key,\n _ref$props = _ref.props,\n children = _ref$props.children,\n value = _ref$props.value,\n restProps = _objectWithoutProperties(_ref$props, _excluded);\n return _objectSpread({\n key: key,\n value: value !== undefined ? value : key,\n children: children\n }, restProps);\n}\nexport function convertChildrenToData(nodes) {\n var optionOnly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n return toArray(nodes).map(function (node, index) {\n if (! /*#__PURE__*/React.isValidElement(node) || !node.type) {\n return null;\n }\n var _ref2 = node,\n isSelectOptGroup = _ref2.type.isSelectOptGroup,\n key = _ref2.key,\n _ref2$props = _ref2.props,\n children = _ref2$props.children,\n restProps = _objectWithoutProperties(_ref2$props, _excluded2);\n if (optionOnly || !isSelectOptGroup) {\n return convertNodeToOption(node);\n }\n return _objectSpread(_objectSpread({\n key: \"__RC_SELECT_GRP__\".concat(key === null ? index : key, \"__\"),\n label: key\n }, restProps), {}, {\n options: convertChildrenToData(children)\n });\n }).filter(function (data) {\n return data;\n });\n}","import * as React from 'react';\nimport { convertChildrenToData } from \"../utils/legacyUtil\";\n\n/**\n * Parse `children` to `options` if `options` is not provided.\n * Then flatten the `options`.\n */\nvar useOptions = function useOptions(options, children, fieldNames, optionFilterProp, optionLabelProp) {\n return React.useMemo(function () {\n var mergedOptions = options;\n var childrenAsData = !options;\n if (childrenAsData) {\n mergedOptions = convertChildrenToData(children);\n }\n var valueOptions = new Map();\n var labelOptions = new Map();\n var setLabelOptions = function setLabelOptions(labelOptionsMap, option, key) {\n if (key && typeof key === 'string') {\n labelOptionsMap.set(option[key], option);\n }\n };\n var dig = function dig(optionList) {\n var isChildren = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n // for loop to speed up collection speed\n for (var i = 0; i < optionList.length; i += 1) {\n var option = optionList[i];\n if (!option[fieldNames.options] || isChildren) {\n valueOptions.set(option[fieldNames.value], option);\n setLabelOptions(labelOptions, option, fieldNames.label);\n // https://github.com/ant-design/ant-design/issues/35304\n setLabelOptions(labelOptions, option, optionFilterProp);\n setLabelOptions(labelOptions, option, optionLabelProp);\n } else {\n dig(option[fieldNames.options], true);\n }\n }\n };\n dig(mergedOptions);\n return {\n options: mergedOptions,\n valueOptions: valueOptions,\n labelOptions: labelOptions\n };\n }, [options, children, fieldNames, optionFilterProp, optionLabelProp]);\n};\nexport default useOptions;","import * as React from 'react';\n\n/**\n * Same as `React.useCallback` but always return a memoized function\n * but redirect to real function.\n */\nexport default function useRefFunc(callback) {\n var funcRef = React.useRef();\n funcRef.current = callback;\n var cacheFn = React.useCallback(function () {\n return funcRef.current.apply(funcRef, arguments);\n }, []);\n return cacheFn;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar _excluded = [\"id\", \"mode\", \"prefixCls\", \"backfill\", \"fieldNames\", \"inputValue\", \"searchValue\", \"onSearch\", \"autoClearSearchValue\", \"onSelect\", \"onDeselect\", \"dropdownMatchSelectWidth\", \"filterOption\", \"filterSort\", \"optionFilterProp\", \"optionLabelProp\", \"options\", \"optionRender\", \"children\", \"defaultActiveFirstOption\", \"menuItemSelectedIcon\", \"virtual\", \"direction\", \"listHeight\", \"listItemHeight\", \"labelRender\", \"value\", \"defaultValue\", \"labelInValue\", \"onChange\", \"maxCount\"];\n/**\n * To match accessibility requirement, we always provide an input in the component.\n * Other element will not set `tabIndex` to avoid `onBlur` sequence problem.\n * For focused select, we set `aria-live=\"polite\"` to update the accessibility content.\n *\n * ref:\n * - keyboard: https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/listbox_role#Keyboard_interactions\n *\n * New api:\n * - listHeight\n * - listItemHeight\n * - component\n *\n * Remove deprecated api:\n * - multiple\n * - tags\n * - combobox\n * - firstActiveValue\n * - dropdownMenuStyle\n * - openClassName (Not list in api)\n *\n * Update:\n * - `backfill` only support `combobox` mode\n * - `combobox` mode not support `labelInValue` since it's meaningless\n * - `getInputElement` only support `combobox` mode\n * - `onChange` return OptionData instead of ReactNode\n * - `filterOption` `onChange` `onSelect` accept OptionData instead of ReactNode\n * - `combobox` mode trigger `onChange` will get `undefined` if no `value` match in Option\n * - `combobox` mode not support `optionLabelProp`\n */\n\nimport useMergedState from \"rc-util/es/hooks/useMergedState\";\nimport warning from \"rc-util/es/warning\";\nimport * as React from 'react';\nimport BaseSelect, { isMultiple } from \"./BaseSelect\";\nimport OptGroup from \"./OptGroup\";\nimport Option from \"./Option\";\nimport OptionList from \"./OptionList\";\nimport SelectContext from \"./SelectContext\";\nimport useCache from \"./hooks/useCache\";\nimport useFilterOptions from \"./hooks/useFilterOptions\";\nimport useId from \"./hooks/useId\";\nimport useOptions from \"./hooks/useOptions\";\nimport useRefFunc from \"./hooks/useRefFunc\";\nimport { hasValue, isComboNoValue, toArray } from \"./utils/commonUtil\";\nimport { fillFieldNames, flattenOptions, injectPropsWithOption } from \"./utils/valueUtil\";\nimport warningProps, { warningNullOptions } from \"./utils/warningPropsUtil\";\nvar OMIT_DOM_PROPS = ['inputValue'];\nfunction isRawValue(value) {\n return !value || _typeof(value) !== 'object';\n}\nvar Select = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var id = props.id,\n mode = props.mode,\n _props$prefixCls = props.prefixCls,\n prefixCls = _props$prefixCls === void 0 ? 'rc-select' : _props$prefixCls,\n backfill = props.backfill,\n fieldNames = props.fieldNames,\n inputValue = props.inputValue,\n searchValue = props.searchValue,\n onSearch = props.onSearch,\n _props$autoClearSearc = props.autoClearSearchValue,\n autoClearSearchValue = _props$autoClearSearc === void 0 ? true : _props$autoClearSearc,\n onSelect = props.onSelect,\n onDeselect = props.onDeselect,\n _props$dropdownMatchS = props.dropdownMatchSelectWidth,\n dropdownMatchSelectWidth = _props$dropdownMatchS === void 0 ? true : _props$dropdownMatchS,\n filterOption = props.filterOption,\n filterSort = props.filterSort,\n optionFilterProp = props.optionFilterProp,\n optionLabelProp = props.optionLabelProp,\n options = props.options,\n optionRender = props.optionRender,\n children = props.children,\n defaultActiveFirstOption = props.defaultActiveFirstOption,\n menuItemSelectedIcon = props.menuItemSelectedIcon,\n virtual = props.virtual,\n direction = props.direction,\n _props$listHeight = props.listHeight,\n listHeight = _props$listHeight === void 0 ? 200 : _props$listHeight,\n _props$listItemHeight = props.listItemHeight,\n listItemHeight = _props$listItemHeight === void 0 ? 20 : _props$listItemHeight,\n labelRender = props.labelRender,\n value = props.value,\n defaultValue = props.defaultValue,\n labelInValue = props.labelInValue,\n onChange = props.onChange,\n maxCount = props.maxCount,\n restProps = _objectWithoutProperties(props, _excluded);\n var mergedId = useId(id);\n var multiple = isMultiple(mode);\n var childrenAsData = !!(!options && children);\n var mergedFilterOption = React.useMemo(function () {\n if (filterOption === undefined && mode === 'combobox') {\n return false;\n }\n return filterOption;\n }, [filterOption, mode]);\n\n // ========================= FieldNames =========================\n var mergedFieldNames = React.useMemo(function () {\n return fillFieldNames(fieldNames, childrenAsData);\n }, /* eslint-disable react-hooks/exhaustive-deps */\n [\n // We stringify fieldNames to avoid unnecessary re-renders.\n JSON.stringify(fieldNames), childrenAsData]\n /* eslint-enable react-hooks/exhaustive-deps */);\n\n // =========================== Search ===========================\n var _useMergedState = useMergedState('', {\n value: searchValue !== undefined ? searchValue : inputValue,\n postState: function postState(search) {\n return search || '';\n }\n }),\n _useMergedState2 = _slicedToArray(_useMergedState, 2),\n mergedSearchValue = _useMergedState2[0],\n setSearchValue = _useMergedState2[1];\n\n // =========================== Option ===========================\n var parsedOptions = useOptions(options, children, mergedFieldNames, optionFilterProp, optionLabelProp);\n var valueOptions = parsedOptions.valueOptions,\n labelOptions = parsedOptions.labelOptions,\n mergedOptions = parsedOptions.options;\n\n // ========================= Wrap Value =========================\n var convert2LabelValues = React.useCallback(function (draftValues) {\n // Convert to array\n var valueList = toArray(draftValues);\n\n // Convert to labelInValue type\n return valueList.map(function (val) {\n var rawValue;\n var rawLabel;\n var rawKey;\n var rawDisabled;\n var rawTitle;\n\n // Fill label & value\n if (isRawValue(val)) {\n rawValue = val;\n } else {\n var _val$value;\n rawKey = val.key;\n rawLabel = val.label;\n rawValue = (_val$value = val.value) !== null && _val$value !== void 0 ? _val$value : rawKey;\n }\n var option = valueOptions.get(rawValue);\n if (option) {\n var _option$key;\n // Fill missing props\n if (rawLabel === undefined) rawLabel = option === null || option === void 0 ? void 0 : option[optionLabelProp || mergedFieldNames.label];\n if (rawKey === undefined) rawKey = (_option$key = option === null || option === void 0 ? void 0 : option.key) !== null && _option$key !== void 0 ? _option$key : rawValue;\n rawDisabled = option === null || option === void 0 ? void 0 : option.disabled;\n rawTitle = option === null || option === void 0 ? void 0 : option.title;\n\n // Warning if label not same as provided\n if (process.env.NODE_ENV !== 'production' && !optionLabelProp) {\n var optionLabel = option === null || option === void 0 ? void 0 : option[mergedFieldNames.label];\n if (optionLabel !== undefined && ! /*#__PURE__*/React.isValidElement(optionLabel) && ! /*#__PURE__*/React.isValidElement(rawLabel) && optionLabel !== rawLabel) {\n warning(false, '`label` of `value` is not same as `label` in Select options.');\n }\n }\n }\n return {\n label: rawLabel,\n value: rawValue,\n key: rawKey,\n disabled: rawDisabled,\n title: rawTitle\n };\n });\n }, [mergedFieldNames, optionLabelProp, valueOptions]);\n\n // =========================== Values ===========================\n var _useMergedState3 = useMergedState(defaultValue, {\n value: value\n }),\n _useMergedState4 = _slicedToArray(_useMergedState3, 2),\n internalValue = _useMergedState4[0],\n setInternalValue = _useMergedState4[1];\n\n // Merged value with LabelValueType\n var rawLabeledValues = React.useMemo(function () {\n var _values$;\n var newInternalValue = multiple && internalValue === null ? [] : internalValue;\n var values = convert2LabelValues(newInternalValue);\n\n // combobox no need save value when it's no value (exclude value equal 0)\n if (mode === 'combobox' && isComboNoValue((_values$ = values[0]) === null || _values$ === void 0 ? void 0 : _values$.value)) {\n return [];\n }\n return values;\n }, [internalValue, convert2LabelValues, mode, multiple]);\n\n // Fill label with cache to avoid option remove\n var _useCache = useCache(rawLabeledValues, valueOptions),\n _useCache2 = _slicedToArray(_useCache, 2),\n mergedValues = _useCache2[0],\n getMixedOption = _useCache2[1];\n var displayValues = React.useMemo(function () {\n // `null` need show as placeholder instead\n // https://github.com/ant-design/ant-design/issues/25057\n if (!mode && mergedValues.length === 1) {\n var firstValue = mergedValues[0];\n if (firstValue.value === null && (firstValue.label === null || firstValue.label === undefined)) {\n return [];\n }\n }\n return mergedValues.map(function (item) {\n var _ref;\n return _objectSpread(_objectSpread({}, item), {}, {\n label: (_ref = typeof labelRender === 'function' ? labelRender(item) : item.label) !== null && _ref !== void 0 ? _ref : item.value\n });\n });\n }, [mode, mergedValues, labelRender]);\n\n /** Convert `displayValues` to raw value type set */\n var rawValues = React.useMemo(function () {\n return new Set(mergedValues.map(function (val) {\n return val.value;\n }));\n }, [mergedValues]);\n React.useEffect(function () {\n if (mode === 'combobox') {\n var _mergedValues$;\n var strValue = (_mergedValues$ = mergedValues[0]) === null || _mergedValues$ === void 0 ? void 0 : _mergedValues$.value;\n setSearchValue(hasValue(strValue) ? String(strValue) : '');\n }\n }, [mergedValues]);\n\n // ======================= Display Option =======================\n // Create a placeholder item if not exist in `options`\n var createTagOption = useRefFunc(function (val, label) {\n var mergedLabel = label !== null && label !== void 0 ? label : val;\n return _defineProperty(_defineProperty({}, mergedFieldNames.value, val), mergedFieldNames.label, mergedLabel);\n });\n\n // Fill tag as option if mode is `tags`\n var filledTagOptions = React.useMemo(function () {\n if (mode !== 'tags') {\n return mergedOptions;\n }\n\n // >>> Tag mode\n var cloneOptions = _toConsumableArray(mergedOptions);\n\n // Check if value exist in options (include new patch item)\n var existOptions = function existOptions(val) {\n return valueOptions.has(val);\n };\n\n // Fill current value as option\n _toConsumableArray(mergedValues).sort(function (a, b) {\n return a.value < b.value ? -1 : 1;\n }).forEach(function (item) {\n var val = item.value;\n if (!existOptions(val)) {\n cloneOptions.push(createTagOption(val, item.label));\n }\n });\n return cloneOptions;\n }, [createTagOption, mergedOptions, valueOptions, mergedValues, mode]);\n var filteredOptions = useFilterOptions(filledTagOptions, mergedFieldNames, mergedSearchValue, mergedFilterOption, optionFilterProp);\n\n // Fill options with search value if needed\n var filledSearchOptions = React.useMemo(function () {\n if (mode !== 'tags' || !mergedSearchValue || filteredOptions.some(function (item) {\n return item[optionFilterProp || 'value'] === mergedSearchValue;\n })) {\n return filteredOptions;\n }\n // ignore when search value equal select input value\n if (filteredOptions.some(function (item) {\n return item[mergedFieldNames.value] === mergedSearchValue;\n })) {\n return filteredOptions;\n }\n // Fill search value as option\n return [createTagOption(mergedSearchValue)].concat(_toConsumableArray(filteredOptions));\n }, [createTagOption, optionFilterProp, mode, filteredOptions, mergedSearchValue, mergedFieldNames]);\n var sorter = function sorter(inputOptions) {\n var sortedOptions = _toConsumableArray(inputOptions).sort(function (a, b) {\n return filterSort(a, b, {\n searchValue: mergedSearchValue\n });\n });\n return sortedOptions.map(function (item) {\n if (Array.isArray(item.options)) {\n return _objectSpread(_objectSpread({}, item), {}, {\n options: item.options.length > 0 ? sorter(item.options) : item.options\n });\n }\n return item;\n });\n };\n var orderedFilteredOptions = React.useMemo(function () {\n if (!filterSort) {\n return filledSearchOptions;\n }\n return sorter(filledSearchOptions);\n }, [filledSearchOptions, filterSort, mergedSearchValue]);\n var displayOptions = React.useMemo(function () {\n return flattenOptions(orderedFilteredOptions, {\n fieldNames: mergedFieldNames,\n childrenAsData: childrenAsData\n });\n }, [orderedFilteredOptions, mergedFieldNames, childrenAsData]);\n\n // =========================== Change ===========================\n var triggerChange = function triggerChange(values) {\n var labeledValues = convert2LabelValues(values);\n setInternalValue(labeledValues);\n if (onChange && (\n // Trigger event only when value changed\n labeledValues.length !== mergedValues.length || labeledValues.some(function (newVal, index) {\n var _mergedValues$index;\n return ((_mergedValues$index = mergedValues[index]) === null || _mergedValues$index === void 0 ? void 0 : _mergedValues$index.value) !== (newVal === null || newVal === void 0 ? void 0 : newVal.value);\n }))) {\n var returnValues = labelInValue ? labeledValues : labeledValues.map(function (v) {\n return v.value;\n });\n var returnOptions = labeledValues.map(function (v) {\n return injectPropsWithOption(getMixedOption(v.value));\n });\n onChange(\n // Value\n multiple ? returnValues : returnValues[0],\n // Option\n multiple ? returnOptions : returnOptions[0]);\n }\n };\n\n // ======================= Accessibility ========================\n var _React$useState = React.useState(null),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n activeValue = _React$useState2[0],\n setActiveValue = _React$useState2[1];\n var _React$useState3 = React.useState(0),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n accessibilityIndex = _React$useState4[0],\n setAccessibilityIndex = _React$useState4[1];\n var mergedDefaultActiveFirstOption = defaultActiveFirstOption !== undefined ? defaultActiveFirstOption : mode !== 'combobox';\n var onActiveValue = React.useCallback(function (active, index) {\n var _ref3 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n _ref3$source = _ref3.source,\n source = _ref3$source === void 0 ? 'keyboard' : _ref3$source;\n setAccessibilityIndex(index);\n if (backfill && mode === 'combobox' && active !== null && source === 'keyboard') {\n setActiveValue(String(active));\n }\n }, [backfill, mode]);\n\n // ========================= OptionList =========================\n var triggerSelect = function triggerSelect(val, selected, type) {\n var getSelectEnt = function getSelectEnt() {\n var _option$key2;\n var option = getMixedOption(val);\n return [labelInValue ? {\n label: option === null || option === void 0 ? void 0 : option[mergedFieldNames.label],\n value: val,\n key: (_option$key2 = option === null || option === void 0 ? void 0 : option.key) !== null && _option$key2 !== void 0 ? _option$key2 : val\n } : val, injectPropsWithOption(option)];\n };\n if (selected && onSelect) {\n var _getSelectEnt = getSelectEnt(),\n _getSelectEnt2 = _slicedToArray(_getSelectEnt, 2),\n wrappedValue = _getSelectEnt2[0],\n _option = _getSelectEnt2[1];\n onSelect(wrappedValue, _option);\n } else if (!selected && onDeselect && type !== 'clear') {\n var _getSelectEnt3 = getSelectEnt(),\n _getSelectEnt4 = _slicedToArray(_getSelectEnt3, 2),\n _wrappedValue = _getSelectEnt4[0],\n _option2 = _getSelectEnt4[1];\n onDeselect(_wrappedValue, _option2);\n }\n };\n\n // Used for OptionList selection\n var onInternalSelect = useRefFunc(function (val, info) {\n var cloneValues;\n\n // Single mode always trigger select only with option list\n var mergedSelect = multiple ? info.selected : true;\n if (mergedSelect) {\n cloneValues = multiple ? [].concat(_toConsumableArray(mergedValues), [val]) : [val];\n } else {\n cloneValues = mergedValues.filter(function (v) {\n return v.value !== val;\n });\n }\n triggerChange(cloneValues);\n triggerSelect(val, mergedSelect);\n\n // Clean search value if single or configured\n if (mode === 'combobox') {\n // setSearchValue(String(val));\n setActiveValue('');\n } else if (!isMultiple || autoClearSearchValue) {\n setSearchValue('');\n setActiveValue('');\n }\n });\n\n // ======================= Display Change =======================\n // BaseSelect display values change\n var onDisplayValuesChange = function onDisplayValuesChange(nextValues, info) {\n triggerChange(nextValues);\n var type = info.type,\n values = info.values;\n if (type === 'remove' || type === 'clear') {\n values.forEach(function (item) {\n triggerSelect(item.value, false, type);\n });\n }\n };\n\n // =========================== Search ===========================\n var onInternalSearch = function onInternalSearch(searchText, info) {\n setSearchValue(searchText);\n setActiveValue(null);\n\n // [Submit] Tag mode should flush input\n if (info.source === 'submit') {\n var formatted = (searchText || '').trim();\n // prevent empty tags from appearing when you click the Enter button\n if (formatted) {\n var newRawValues = Array.from(new Set([].concat(_toConsumableArray(rawValues), [formatted])));\n triggerChange(newRawValues);\n triggerSelect(formatted, true);\n setSearchValue('');\n }\n return;\n }\n if (info.source !== 'blur') {\n if (mode === 'combobox') {\n triggerChange(searchText);\n }\n onSearch === null || onSearch === void 0 || onSearch(searchText);\n }\n };\n var onInternalSearchSplit = function onInternalSearchSplit(words) {\n var patchValues = words;\n if (mode !== 'tags') {\n patchValues = words.map(function (word) {\n var opt = labelOptions.get(word);\n return opt === null || opt === void 0 ? void 0 : opt.value;\n }).filter(function (val) {\n return val !== undefined;\n });\n }\n var newRawValues = Array.from(new Set([].concat(_toConsumableArray(rawValues), _toConsumableArray(patchValues))));\n triggerChange(newRawValues);\n newRawValues.forEach(function (newRawValue) {\n triggerSelect(newRawValue, true);\n });\n };\n\n // ========================== Context ===========================\n var selectContext = React.useMemo(function () {\n var realVirtual = virtual !== false && dropdownMatchSelectWidth !== false;\n return _objectSpread(_objectSpread({}, parsedOptions), {}, {\n flattenOptions: displayOptions,\n onActiveValue: onActiveValue,\n defaultActiveFirstOption: mergedDefaultActiveFirstOption,\n onSelect: onInternalSelect,\n menuItemSelectedIcon: menuItemSelectedIcon,\n rawValues: rawValues,\n fieldNames: mergedFieldNames,\n virtual: realVirtual,\n direction: direction,\n listHeight: listHeight,\n listItemHeight: listItemHeight,\n childrenAsData: childrenAsData,\n maxCount: maxCount,\n optionRender: optionRender\n });\n }, [maxCount, parsedOptions, displayOptions, onActiveValue, mergedDefaultActiveFirstOption, onInternalSelect, menuItemSelectedIcon, rawValues, mergedFieldNames, virtual, dropdownMatchSelectWidth, direction, listHeight, listItemHeight, childrenAsData, optionRender]);\n\n // ========================== Warning ===========================\n if (process.env.NODE_ENV !== 'production') {\n warningProps(props);\n warningNullOptions(mergedOptions, mergedFieldNames);\n }\n\n // ==============================================================\n // == Render ==\n // ==============================================================\n return /*#__PURE__*/React.createElement(SelectContext.Provider, {\n value: selectContext\n }, /*#__PURE__*/React.createElement(BaseSelect, _extends({}, restProps, {\n // >>> MISC\n id: mergedId,\n prefixCls: prefixCls,\n ref: ref,\n omitDomProps: OMIT_DOM_PROPS,\n mode: mode\n // >>> Values\n ,\n displayValues: displayValues,\n onDisplayValuesChange: onDisplayValuesChange\n // >>> Trigger\n ,\n direction: direction\n // >>> Search\n ,\n searchValue: mergedSearchValue,\n onSearch: onInternalSearch,\n autoClearSearchValue: autoClearSearchValue,\n onSearchSplit: onInternalSearchSplit,\n dropdownMatchSelectWidth: dropdownMatchSelectWidth\n // >>> OptionList\n ,\n OptionList: OptionList,\n emptyOptions: !displayOptions.length\n // >>> Accessibility\n ,\n activeValue: activeValue,\n activeDescendantId: \"\".concat(mergedId, \"_list_\").concat(accessibilityIndex)\n })));\n});\nif (process.env.NODE_ENV !== 'production') {\n Select.displayName = 'Select';\n}\nvar TypedSelect = Select;\nTypedSelect.Option = Option;\nTypedSelect.OptGroup = OptGroup;\nexport default TypedSelect;","import _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport * as React from 'react';\n/**\n * Cache `value` related LabeledValue & options.\n */\nexport default (function (labeledValues, valueOptions) {\n var cacheRef = React.useRef({\n values: new Map(),\n options: new Map()\n });\n var filledLabeledValues = React.useMemo(function () {\n var _cacheRef$current = cacheRef.current,\n prevValueCache = _cacheRef$current.values,\n prevOptionCache = _cacheRef$current.options;\n\n // Fill label by cache\n var patchedValues = labeledValues.map(function (item) {\n if (item.label === undefined) {\n var _prevValueCache$get;\n return _objectSpread(_objectSpread({}, item), {}, {\n label: (_prevValueCache$get = prevValueCache.get(item.value)) === null || _prevValueCache$get === void 0 ? void 0 : _prevValueCache$get.label\n });\n }\n return item;\n });\n\n // Refresh cache\n var valueCache = new Map();\n var optionCache = new Map();\n patchedValues.forEach(function (item) {\n valueCache.set(item.value, item);\n optionCache.set(item.value, valueOptions.get(item.value) || prevOptionCache.get(item.value));\n });\n cacheRef.current.values = valueCache;\n cacheRef.current.options = optionCache;\n return patchedValues;\n }, [labeledValues, valueOptions]);\n var getOption = React.useCallback(function (val) {\n return valueOptions.get(val) || cacheRef.current.options.get(val);\n }, [valueOptions]);\n return [filledLabeledValues, getOption];\n});","import Select from \"./Select\";\nimport Option from \"./Option\";\nimport OptGroup from \"./OptGroup\";\nimport BaseSelect from \"./BaseSelect\";\nimport useBaseProps from \"./hooks/useBaseProps\";\nexport { Option, OptGroup, BaseSelect, useBaseProps };\nexport default Select;","\"use client\";\n\nimport * as React from 'react';\nimport { TinyColor } from '@ctrl/tinycolor';\nimport { useToken } from '../theme/internal';\nconst Empty = () => {\n const [, token] = useToken();\n const bgColor = new TinyColor(token.colorBgBase);\n // Dark Theme need more dark of this\n const themeStyle = bgColor.toHsl().l < 0.5 ? {\n opacity: 0.65\n } : {};\n return /*#__PURE__*/React.createElement(\"svg\", {\n style: themeStyle,\n width: \"184\",\n height: \"152\",\n viewBox: \"0 0 184 152\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, /*#__PURE__*/React.createElement(\"title\", null, \"empty image\"), /*#__PURE__*/React.createElement(\"g\", {\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(24 31.67)\"\n }, /*#__PURE__*/React.createElement(\"ellipse\", {\n fillOpacity: \".8\",\n fill: \"#F5F5F7\",\n cx: \"67.797\",\n cy: \"106.89\",\n rx: \"67.797\",\n ry: \"12.668\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M122.034 69.674L98.109 40.229c-1.148-1.386-2.826-2.225-4.593-2.225h-51.44c-1.766 0-3.444.839-4.592 2.225L13.56 69.674v15.383h108.475V69.674z\",\n fill: \"#AEB8C2\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M101.537 86.214L80.63 61.102c-1.001-1.207-2.507-1.867-4.048-1.867H31.724c-1.54 0-3.047.66-4.048 1.867L6.769 86.214v13.792h94.768V86.214z\",\n fill: \"url(#linearGradient-1)\",\n transform: \"translate(13.56)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M33.83 0h67.933a4 4 0 0 1 4 4v93.344a4 4 0 0 1-4 4H33.83a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4z\",\n fill: \"#F5F5F7\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M42.678 9.953h50.237a2 2 0 0 1 2 2V36.91a2 2 0 0 1-2 2H42.678a2 2 0 0 1-2-2V11.953a2 2 0 0 1 2-2zM42.94 49.767h49.713a2.262 2.262 0 1 1 0 4.524H42.94a2.262 2.262 0 0 1 0-4.524zM42.94 61.53h49.713a2.262 2.262 0 1 1 0 4.525H42.94a2.262 2.262 0 0 1 0-4.525zM121.813 105.032c-.775 3.071-3.497 5.36-6.735 5.36H20.515c-3.238 0-5.96-2.29-6.734-5.36a7.309 7.309 0 0 1-.222-1.79V69.675h26.318c2.907 0 5.25 2.448 5.25 5.42v.04c0 2.971 2.37 5.37 5.277 5.37h34.785c2.907 0 5.277-2.421 5.277-5.393V75.1c0-2.972 2.343-5.426 5.25-5.426h26.318v33.569c0 .617-.077 1.216-.221 1.789z\",\n fill: \"#DCE0E6\"\n })), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M149.121 33.292l-6.83 2.65a1 1 0 0 1-1.317-1.23l1.937-6.207c-2.589-2.944-4.109-6.534-4.109-10.408C138.802 8.102 148.92 0 161.402 0 173.881 0 184 8.102 184 18.097c0 9.995-10.118 18.097-22.599 18.097-4.528 0-8.744-1.066-12.28-2.902z\",\n fill: \"#DCE0E6\"\n }), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(149.65 15.383)\",\n fill: \"#FFF\"\n }, /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: \"20.654\",\n cy: \"3.167\",\n rx: \"2.849\",\n ry: \"2.815\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.698 5.63H0L2.898.704zM9.259.704h4.985V5.63H9.259z\"\n }))));\n};\nif (process.env.NODE_ENV !== 'production') {\n Empty.displayName = 'EmptyImage';\n}\nexport default Empty;","\"use client\";\n\nimport * as React from 'react';\nimport { useMemo } from 'react';\nimport { TinyColor } from '@ctrl/tinycolor';\nimport { useToken } from '../theme/internal';\nconst Simple = () => {\n const [, token] = useToken();\n const {\n colorFill,\n colorFillTertiary,\n colorFillQuaternary,\n colorBgContainer\n } = token;\n const {\n borderColor,\n shadowColor,\n contentColor\n } = useMemo(() => ({\n borderColor: new TinyColor(colorFill).onBackground(colorBgContainer).toHexShortString(),\n shadowColor: new TinyColor(colorFillTertiary).onBackground(colorBgContainer).toHexShortString(),\n contentColor: new TinyColor(colorFillQuaternary).onBackground(colorBgContainer).toHexShortString()\n }), [colorFill, colorFillTertiary, colorFillQuaternary, colorBgContainer]);\n return /*#__PURE__*/React.createElement(\"svg\", {\n width: \"64\",\n height: \"41\",\n viewBox: \"0 0 64 41\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, /*#__PURE__*/React.createElement(\"title\", null, \"Simple Empty\"), /*#__PURE__*/React.createElement(\"g\", {\n transform: \"translate(0 1)\",\n fill: \"none\",\n fillRule: \"evenodd\"\n }, /*#__PURE__*/React.createElement(\"ellipse\", {\n fill: shadowColor,\n cx: \"32\",\n cy: \"33\",\n rx: \"32\",\n ry: \"7\"\n }), /*#__PURE__*/React.createElement(\"g\", {\n fillRule: \"nonzero\",\n stroke: borderColor\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\",\n fill: contentColor\n }))));\n};\nif (process.env.NODE_ENV !== 'production') {\n Simple.displayName = 'SimpleImage';\n}\nexport default Simple;","import { genStyleHooks, mergeToken } from '../../theme/internal';\n// ============================== Shared ==============================\nconst genSharedEmptyStyle = token => {\n const {\n componentCls,\n margin,\n marginXS,\n marginXL,\n fontSize,\n lineHeight\n } = token;\n return {\n [componentCls]: {\n marginInline: marginXS,\n fontSize,\n lineHeight,\n textAlign: 'center',\n // 原来 &-image 没有父子结构,现在为了外层承担我们的 hashId,改成父子结构\n [`${componentCls}-image`]: {\n height: token.emptyImgHeight,\n marginBottom: marginXS,\n opacity: token.opacityImage,\n img: {\n height: '100%'\n },\n svg: {\n maxWidth: '100%',\n height: '100%',\n margin: 'auto'\n }\n },\n [`${componentCls}-description`]: {\n color: token.colorTextDescription\n },\n // 原来 &-footer 没有父子结构,现在为了外层承担我们的 hashId,改成父子结构\n [`${componentCls}-footer`]: {\n marginTop: margin\n },\n '&-normal': {\n marginBlock: marginXL,\n color: token.colorTextDescription,\n [`${componentCls}-description`]: {\n color: token.colorTextDescription\n },\n [`${componentCls}-image`]: {\n height: token.emptyImgHeightMD\n }\n },\n '&-small': {\n marginBlock: marginXS,\n color: token.colorTextDescription,\n [`${componentCls}-image`]: {\n height: token.emptyImgHeightSM\n }\n }\n }\n };\n};\n// ============================== Export ==============================\nexport default genStyleHooks('Empty', token => {\n const {\n componentCls,\n controlHeightLG,\n calc\n } = token;\n const emptyToken = mergeToken(token, {\n emptyImgCls: `${componentCls}-img`,\n emptyImgHeight: calc(controlHeightLG).mul(2.5).equal(),\n emptyImgHeightMD: controlHeightLG,\n emptyImgHeightSM: calc(controlHeightLG).mul(0.875).equal()\n });\n return [genSharedEmptyStyle(emptyToken)];\n});","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { ConfigContext } from '../config-provider';\nimport { useLocale } from '../locale';\nimport DefaultEmptyImg from './empty';\nimport SimpleEmptyImg from './simple';\nimport useStyle from './style';\nconst defaultEmptyImg = /*#__PURE__*/React.createElement(DefaultEmptyImg, null);\nconst simpleEmptyImg = /*#__PURE__*/React.createElement(SimpleEmptyImg, null);\nconst Empty = _a => {\n var {\n className,\n rootClassName,\n prefixCls: customizePrefixCls,\n image = defaultEmptyImg,\n description,\n children,\n imageStyle,\n style\n } = _a,\n restProps = __rest(_a, [\"className\", \"rootClassName\", \"prefixCls\", \"image\", \"description\", \"children\", \"imageStyle\", \"style\"]);\n const {\n getPrefixCls,\n direction,\n empty\n } = React.useContext(ConfigContext);\n const prefixCls = getPrefixCls('empty', customizePrefixCls);\n const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls);\n const [locale] = useLocale('Empty');\n const des = typeof description !== 'undefined' ? description : locale === null || locale === void 0 ? void 0 : locale.description;\n const alt = typeof des === 'string' ? des : 'empty';\n let imageNode = null;\n if (typeof image === 'string') {\n imageNode = /*#__PURE__*/React.createElement(\"img\", {\n alt: alt,\n src: image\n });\n } else {\n imageNode = image;\n }\n return wrapCSSVar(/*#__PURE__*/React.createElement(\"div\", Object.assign({\n className: classNames(hashId, cssVarCls, prefixCls, empty === null || empty === void 0 ? void 0 : empty.className, {\n [`${prefixCls}-normal`]: image === simpleEmptyImg,\n [`${prefixCls}-rtl`]: direction === 'rtl'\n }, className, rootClassName),\n style: Object.assign(Object.assign({}, empty === null || empty === void 0 ? void 0 : empty.style), style)\n }, restProps), /*#__PURE__*/React.createElement(\"div\", {\n className: `${prefixCls}-image`,\n style: imageStyle\n }, imageNode), des && /*#__PURE__*/React.createElement(\"div\", {\n className: `${prefixCls}-description`\n }, des), children && /*#__PURE__*/React.createElement(\"div\", {\n className: `${prefixCls}-footer`\n }, children)));\n};\nEmpty.PRESENTED_IMAGE_DEFAULT = defaultEmptyImg;\nEmpty.PRESENTED_IMAGE_SIMPLE = simpleEmptyImg;\nif (process.env.NODE_ENV !== 'production') {\n Empty.displayName = 'Empty';\n}\nexport default Empty;","\"use client\";\n\nimport React, { useContext } from 'react';\nimport { ConfigContext } from '.';\nimport Empty from '../empty';\nconst DefaultRenderEmpty = props => {\n const {\n componentName\n } = props;\n const {\n getPrefixCls\n } = useContext(ConfigContext);\n const prefix = getPrefixCls('empty');\n switch (componentName) {\n case 'Table':\n case 'List':\n return /*#__PURE__*/React.createElement(Empty, {\n image: Empty.PRESENTED_IMAGE_SIMPLE\n });\n case 'Select':\n case 'TreeSelect':\n case 'Cascader':\n case 'Transfer':\n case 'Mentions':\n return /*#__PURE__*/React.createElement(Empty, {\n image: Empty.PRESENTED_IMAGE_SIMPLE,\n className: `${prefix}-small`\n });\n /**\n * This type of component should satisfy the nullish coalescing operator(??) on the left-hand side.\n * to let the component itself implement the logic.\n * For example `Table.filter`.\n */\n case 'Table.filter':\n // why `null`? legacy react16 node type `undefined` is not allowed.\n return null;\n default:\n // Should never hit if we take all the component into consider.\n return /*#__PURE__*/React.createElement(Empty, null);\n }\n};\nexport default DefaultRenderEmpty;","import { useContext } from 'react';\nimport { VariantContext } from '../context';\nimport { ConfigContext, Variants } from '../../config-provider';\n/**\n * Compatible for legacy `bordered` prop.\n */\nconst useVariant = function (component, variant) {\n let legacyBordered = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;\n var _a, _b;\n const {\n variant: configVariant,\n [component]: componentConfig\n } = useContext(ConfigContext);\n const ctxVariant = useContext(VariantContext);\n const configComponentVariant = componentConfig === null || componentConfig === void 0 ? void 0 : componentConfig.variant;\n let mergedVariant;\n if (typeof variant !== 'undefined') {\n mergedVariant = variant;\n } else if (legacyBordered === false) {\n mergedVariant = 'borderless';\n } else {\n // form variant > component global variant > global variant\n mergedVariant = (_b = (_a = ctxVariant !== null && ctxVariant !== void 0 ? ctxVariant : configComponentVariant) !== null && _a !== void 0 ? _a : configVariant) !== null && _b !== void 0 ? _b : 'outlined';\n }\n const enableVariantCls = Variants.includes(mergedVariant);\n return [mergedVariant, enableVariantCls];\n};\nexport default useVariant;","const getBuiltInPlacements = popupOverflow => {\n const htmlRegion = popupOverflow === 'scroll' ? 'scroll' : 'visible';\n const sharedConfig = {\n overflow: {\n adjustX: true,\n adjustY: true,\n shiftY: true\n },\n htmlRegion,\n dynamicInset: true\n };\n return {\n bottomLeft: Object.assign(Object.assign({}, sharedConfig), {\n points: ['tl', 'bl'],\n offset: [0, 4]\n }),\n bottomRight: Object.assign(Object.assign({}, sharedConfig), {\n points: ['tr', 'br'],\n offset: [0, 4]\n }),\n topLeft: Object.assign(Object.assign({}, sharedConfig), {\n points: ['bl', 'tl'],\n offset: [0, -4]\n }),\n topRight: Object.assign(Object.assign({}, sharedConfig), {\n points: ['br', 'tr'],\n offset: [0, -4]\n })\n };\n};\nfunction mergedBuiltinPlacements(buildInPlacements, popupOverflow) {\n return buildInPlacements || getBuiltInPlacements(popupOverflow);\n}\nexport default mergedBuiltinPlacements;","import { Keyframes } from '@ant-design/cssinjs';\nimport { initMotion } from './motion';\nexport const slideUpIn = new Keyframes('antSlideUpIn', {\n '0%': {\n transform: 'scaleY(0.8)',\n transformOrigin: '0% 0%',\n opacity: 0\n },\n '100%': {\n transform: 'scaleY(1)',\n transformOrigin: '0% 0%',\n opacity: 1\n }\n});\nexport const slideUpOut = new Keyframes('antSlideUpOut', {\n '0%': {\n transform: 'scaleY(1)',\n transformOrigin: '0% 0%',\n opacity: 1\n },\n '100%': {\n transform: 'scaleY(0.8)',\n transformOrigin: '0% 0%',\n opacity: 0\n }\n});\nexport const slideDownIn = new Keyframes('antSlideDownIn', {\n '0%': {\n transform: 'scaleY(0.8)',\n transformOrigin: '100% 100%',\n opacity: 0\n },\n '100%': {\n transform: 'scaleY(1)',\n transformOrigin: '100% 100%',\n opacity: 1\n }\n});\nexport const slideDownOut = new Keyframes('antSlideDownOut', {\n '0%': {\n transform: 'scaleY(1)',\n transformOrigin: '100% 100%',\n opacity: 1\n },\n '100%': {\n transform: 'scaleY(0.8)',\n transformOrigin: '100% 100%',\n opacity: 0\n }\n});\nexport const slideLeftIn = new Keyframes('antSlideLeftIn', {\n '0%': {\n transform: 'scaleX(0.8)',\n transformOrigin: '0% 0%',\n opacity: 0\n },\n '100%': {\n transform: 'scaleX(1)',\n transformOrigin: '0% 0%',\n opacity: 1\n }\n});\nexport const slideLeftOut = new Keyframes('antSlideLeftOut', {\n '0%': {\n transform: 'scaleX(1)',\n transformOrigin: '0% 0%',\n opacity: 1\n },\n '100%': {\n transform: 'scaleX(0.8)',\n transformOrigin: '0% 0%',\n opacity: 0\n }\n});\nexport const slideRightIn = new Keyframes('antSlideRightIn', {\n '0%': {\n transform: 'scaleX(0.8)',\n transformOrigin: '100% 0%',\n opacity: 0\n },\n '100%': {\n transform: 'scaleX(1)',\n transformOrigin: '100% 0%',\n opacity: 1\n }\n});\nexport const slideRightOut = new Keyframes('antSlideRightOut', {\n '0%': {\n transform: 'scaleX(1)',\n transformOrigin: '100% 0%',\n opacity: 1\n },\n '100%': {\n transform: 'scaleX(0.8)',\n transformOrigin: '100% 0%',\n opacity: 0\n }\n});\nconst slideMotion = {\n 'slide-up': {\n inKeyframes: slideUpIn,\n outKeyframes: slideUpOut\n },\n 'slide-down': {\n inKeyframes: slideDownIn,\n outKeyframes: slideDownOut\n },\n 'slide-left': {\n inKeyframes: slideLeftIn,\n outKeyframes: slideLeftOut\n },\n 'slide-right': {\n inKeyframes: slideRightIn,\n outKeyframes: slideRightOut\n }\n};\nexport const initSlideMotion = (token, motionName) => {\n const {\n antCls\n } = token;\n const motionCls = `${antCls}-${motionName}`;\n const {\n inKeyframes,\n outKeyframes\n } = slideMotion[motionName];\n return [initMotion(motionCls, inKeyframes, outKeyframes, token.motionDurationMid), {\n [`\n ${motionCls}-enter,\n ${motionCls}-appear\n `]: {\n transform: 'scale(0)',\n transformOrigin: '0% 0%',\n opacity: 0,\n animationTimingFunction: token.motionEaseOutQuint,\n '&-prepare': {\n transform: 'scale(1)'\n }\n },\n [`${motionCls}-leave`]: {\n animationTimingFunction: token.motionEaseInQuint\n }\n }];\n};","import { Keyframes } from '@ant-design/cssinjs';\nimport { initMotion } from './motion';\nexport const moveDownIn = new Keyframes('antMoveDownIn', {\n '0%': {\n transform: 'translate3d(0, 100%, 0)',\n transformOrigin: '0 0',\n opacity: 0\n },\n '100%': {\n transform: 'translate3d(0, 0, 0)',\n transformOrigin: '0 0',\n opacity: 1\n }\n});\nexport const moveDownOut = new Keyframes('antMoveDownOut', {\n '0%': {\n transform: 'translate3d(0, 0, 0)',\n transformOrigin: '0 0',\n opacity: 1\n },\n '100%': {\n transform: 'translate3d(0, 100%, 0)',\n transformOrigin: '0 0',\n opacity: 0\n }\n});\nexport const moveLeftIn = new Keyframes('antMoveLeftIn', {\n '0%': {\n transform: 'translate3d(-100%, 0, 0)',\n transformOrigin: '0 0',\n opacity: 0\n },\n '100%': {\n transform: 'translate3d(0, 0, 0)',\n transformOrigin: '0 0',\n opacity: 1\n }\n});\nexport const moveLeftOut = new Keyframes('antMoveLeftOut', {\n '0%': {\n transform: 'translate3d(0, 0, 0)',\n transformOrigin: '0 0',\n opacity: 1\n },\n '100%': {\n transform: 'translate3d(-100%, 0, 0)',\n transformOrigin: '0 0',\n opacity: 0\n }\n});\nexport const moveRightIn = new Keyframes('antMoveRightIn', {\n '0%': {\n transform: 'translate3d(100%, 0, 0)',\n transformOrigin: '0 0',\n opacity: 0\n },\n '100%': {\n transform: 'translate3d(0, 0, 0)',\n transformOrigin: '0 0',\n opacity: 1\n }\n});\nexport const moveRightOut = new Keyframes('antMoveRightOut', {\n '0%': {\n transform: 'translate3d(0, 0, 0)',\n transformOrigin: '0 0',\n opacity: 1\n },\n '100%': {\n transform: 'translate3d(100%, 0, 0)',\n transformOrigin: '0 0',\n opacity: 0\n }\n});\nexport const moveUpIn = new Keyframes('antMoveUpIn', {\n '0%': {\n transform: 'translate3d(0, -100%, 0)',\n transformOrigin: '0 0',\n opacity: 0\n },\n '100%': {\n transform: 'translate3d(0, 0, 0)',\n transformOrigin: '0 0',\n opacity: 1\n }\n});\nexport const moveUpOut = new Keyframes('antMoveUpOut', {\n '0%': {\n transform: 'translate3d(0, 0, 0)',\n transformOrigin: '0 0',\n opacity: 1\n },\n '100%': {\n transform: 'translate3d(0, -100%, 0)',\n transformOrigin: '0 0',\n opacity: 0\n }\n});\nconst moveMotion = {\n 'move-up': {\n inKeyframes: moveUpIn,\n outKeyframes: moveUpOut\n },\n 'move-down': {\n inKeyframes: moveDownIn,\n outKeyframes: moveDownOut\n },\n 'move-left': {\n inKeyframes: moveLeftIn,\n outKeyframes: moveLeftOut\n },\n 'move-right': {\n inKeyframes: moveRightIn,\n outKeyframes: moveRightOut\n }\n};\nexport const initMoveMotion = (token, motionName) => {\n const {\n antCls\n } = token;\n const motionCls = `${antCls}-${motionName}`;\n const {\n inKeyframes,\n outKeyframes\n } = moveMotion[motionName];\n return [initMotion(motionCls, inKeyframes, outKeyframes, token.motionDurationMid), {\n [`\n ${motionCls}-enter,\n ${motionCls}-appear\n `]: {\n opacity: 0,\n animationTimingFunction: token.motionEaseOutCirc\n },\n [`${motionCls}-leave`]: {\n animationTimingFunction: token.motionEaseInOutCirc\n }\n }];\n};","import { resetComponent, textEllipsis } from '../../style';\nimport { initMoveMotion, initSlideMotion, slideDownIn, slideDownOut, slideUpIn, slideUpOut } from '../../style/motion';\nconst genItemStyle = token => {\n const {\n optionHeight,\n optionFontSize,\n optionLineHeight,\n optionPadding\n } = token;\n return {\n position: 'relative',\n display: 'block',\n minHeight: optionHeight,\n padding: optionPadding,\n color: token.colorText,\n fontWeight: 'normal',\n fontSize: optionFontSize,\n lineHeight: optionLineHeight,\n boxSizing: 'border-box'\n };\n};\nconst genSingleStyle = token => {\n const {\n antCls,\n componentCls\n } = token;\n const selectItemCls = `${componentCls}-item`;\n const slideUpEnterActive = `&${antCls}-slide-up-enter${antCls}-slide-up-enter-active`;\n const slideUpAppearActive = `&${antCls}-slide-up-appear${antCls}-slide-up-appear-active`;\n const slideUpLeaveActive = `&${antCls}-slide-up-leave${antCls}-slide-up-leave-active`;\n const dropdownPlacementCls = `${componentCls}-dropdown-placement-`;\n return [{\n [`${componentCls}-dropdown`]: Object.assign(Object.assign({}, resetComponent(token)), {\n position: 'absolute',\n top: -9999,\n zIndex: token.zIndexPopup,\n boxSizing: 'border-box',\n padding: token.paddingXXS,\n overflow: 'hidden',\n fontSize: token.fontSize,\n // Fix select render lag of long text in chrome\n // https://github.com/ant-design/ant-design/issues/11456\n // https://github.com/ant-design/ant-design/issues/11843\n fontVariant: 'initial',\n backgroundColor: token.colorBgElevated,\n borderRadius: token.borderRadiusLG,\n outline: 'none',\n boxShadow: token.boxShadowSecondary,\n [`\n ${slideUpEnterActive}${dropdownPlacementCls}bottomLeft,\n ${slideUpAppearActive}${dropdownPlacementCls}bottomLeft\n `]: {\n animationName: slideUpIn\n },\n [`\n ${slideUpEnterActive}${dropdownPlacementCls}topLeft,\n ${slideUpAppearActive}${dropdownPlacementCls}topLeft,\n ${slideUpEnterActive}${dropdownPlacementCls}topRight,\n ${slideUpAppearActive}${dropdownPlacementCls}topRight\n `]: {\n animationName: slideDownIn\n },\n [`${slideUpLeaveActive}${dropdownPlacementCls}bottomLeft`]: {\n animationName: slideUpOut\n },\n [`\n ${slideUpLeaveActive}${dropdownPlacementCls}topLeft,\n ${slideUpLeaveActive}${dropdownPlacementCls}topRight\n `]: {\n animationName: slideDownOut\n },\n '&-hidden': {\n display: 'none'\n },\n [selectItemCls]: Object.assign(Object.assign({}, genItemStyle(token)), {\n cursor: 'pointer',\n transition: `background ${token.motionDurationSlow} ease`,\n borderRadius: token.borderRadiusSM,\n // =========== Group ============\n '&-group': {\n color: token.colorTextDescription,\n fontSize: token.fontSizeSM,\n cursor: 'default'\n },\n // =========== Option ===========\n '&-option': {\n display: 'flex',\n '&-content': Object.assign({\n flex: 'auto'\n }, textEllipsis),\n '&-state': {\n flex: 'none',\n display: 'flex',\n alignItems: 'center'\n },\n [`&-active:not(${selectItemCls}-option-disabled)`]: {\n backgroundColor: token.optionActiveBg\n },\n [`&-selected:not(${selectItemCls}-option-disabled)`]: {\n color: token.optionSelectedColor,\n fontWeight: token.optionSelectedFontWeight,\n backgroundColor: token.optionSelectedBg,\n [`${selectItemCls}-option-state`]: {\n color: token.colorPrimary\n },\n [`&:has(+ ${selectItemCls}-option-selected:not(${selectItemCls}-option-disabled))`]: {\n borderEndStartRadius: 0,\n borderEndEndRadius: 0,\n [`& + ${selectItemCls}-option-selected:not(${selectItemCls}-option-disabled)`]: {\n borderStartStartRadius: 0,\n borderStartEndRadius: 0\n }\n }\n },\n '&-disabled': {\n [`&${selectItemCls}-option-selected`]: {\n backgroundColor: token.colorBgContainerDisabled\n },\n color: token.colorTextDisabled,\n cursor: 'not-allowed'\n },\n '&-grouped': {\n paddingInlineStart: token.calc(token.controlPaddingHorizontal).mul(2).equal()\n }\n },\n '&-empty': Object.assign(Object.assign({}, genItemStyle(token)), {\n color: token.colorTextDisabled\n })\n }),\n // =========================== RTL ===========================\n '&-rtl': {\n direction: 'rtl'\n }\n })\n },\n // Follow code may reuse in other components\n initSlideMotion(token, 'slide-up'), initSlideMotion(token, 'slide-down'), initMoveMotion(token, 'move-up'), initMoveMotion(token, 'move-down')];\n};\nexport default genSingleStyle;","import { unit } from '@ant-design/cssinjs';\nimport { resetIcon } from '../../style';\nimport { mergeToken } from '../../theme/internal';\n/**\n * Get multiple selector needed style. The calculation:\n *\n * ContainerPadding = BasePadding - ItemMargin\n *\n * Border: ╔═══════════════════════════╗ ┬\n * ContainerPadding: ║ ║ │\n * ╟───────────────────────────╢ ┬ │\n * Item Margin: ║ ║ │ │\n * ║ ┌──────────┐ ║ │ │\n * Item(multipleItemHeight): ║ BasePadding │ Item │ ║ Overflow Container(ControlHeight)\n * ║ └──────────┘ ║ │ │\n * Item Margin: ║ ║ │ │\n * ╟───────────────────────────╢ ┴ │\n * ContainerPadding: ║ ║ │\n * Border: ╚═══════════════════════════╝ ┴\n */\nexport const getMultipleSelectorUnit = token => {\n const {\n multipleSelectItemHeight,\n paddingXXS,\n lineWidth,\n INTERNAL_FIXED_ITEM_MARGIN\n } = token;\n const basePadding = token.max(token.calc(paddingXXS).sub(lineWidth).equal(), 0);\n const containerPadding = token.max(token.calc(basePadding).sub(INTERNAL_FIXED_ITEM_MARGIN).equal(), 0);\n return {\n basePadding,\n containerPadding,\n itemHeight: unit(multipleSelectItemHeight),\n itemLineHeight: unit(token.calc(multipleSelectItemHeight).sub(token.calc(token.lineWidth).mul(2)).equal())\n };\n};\nconst getSelectItemStyle = token => {\n const {\n multipleSelectItemHeight,\n selectHeight,\n lineWidth\n } = token;\n const selectItemDist = token.calc(selectHeight).sub(multipleSelectItemHeight).div(2).sub(lineWidth).equal();\n return selectItemDist;\n};\n/**\n * Get the `rc-overflow` needed style.\n * It's a share style which means not affected by `size`.\n */\nexport const genOverflowStyle = token => {\n const {\n componentCls,\n iconCls,\n borderRadiusSM,\n motionDurationSlow,\n paddingXS,\n multipleItemColorDisabled,\n multipleItemBorderColorDisabled,\n colorIcon,\n colorIconHover,\n INTERNAL_FIXED_ITEM_MARGIN\n } = token;\n const selectOverflowPrefixCls = `${componentCls}-selection-overflow`;\n return {\n /**\n * Do not merge `height` & `line-height` under style with `selection` & `search`, since chrome\n * may update to redesign with its align logic.\n */\n // =========================== Overflow ===========================\n [selectOverflowPrefixCls]: {\n position: 'relative',\n display: 'flex',\n flex: 'auto',\n flexWrap: 'wrap',\n maxWidth: '100%',\n '&-item': {\n flex: 'none',\n alignSelf: 'center',\n maxWidth: '100%',\n display: 'inline-flex'\n },\n // ======================== Selections ==========================\n [`${componentCls}-selection-item`]: {\n display: 'flex',\n alignSelf: 'center',\n flex: 'none',\n boxSizing: 'border-box',\n maxWidth: '100%',\n marginBlock: INTERNAL_FIXED_ITEM_MARGIN,\n borderRadius: borderRadiusSM,\n cursor: 'default',\n transition: `font-size ${motionDurationSlow}, line-height ${motionDurationSlow}, height ${motionDurationSlow}`,\n marginInlineEnd: token.calc(INTERNAL_FIXED_ITEM_MARGIN).mul(2).equal(),\n paddingInlineStart: paddingXS,\n paddingInlineEnd: token.calc(paddingXS).div(2).equal(),\n [`${componentCls}-disabled&`]: {\n color: multipleItemColorDisabled,\n borderColor: multipleItemBorderColorDisabled,\n cursor: 'not-allowed'\n },\n // It's ok not to do this, but 24px makes bottom narrow in view should adjust\n '&-content': {\n display: 'inline-block',\n marginInlineEnd: token.calc(paddingXS).div(2).equal(),\n overflow: 'hidden',\n whiteSpace: 'pre',\n // fix whitespace wrapping. custom tags display all whitespace within.\n textOverflow: 'ellipsis'\n },\n '&-remove': Object.assign(Object.assign({}, resetIcon()), {\n display: 'inline-flex',\n alignItems: 'center',\n color: colorIcon,\n fontWeight: 'bold',\n fontSize: 10,\n lineHeight: 'inherit',\n cursor: 'pointer',\n [`> ${iconCls}`]: {\n verticalAlign: '-0.2em'\n },\n '&:hover': {\n color: colorIconHover\n }\n })\n }\n }\n };\n};\nconst genSelectionStyle = (token, suffix) => {\n const {\n componentCls,\n INTERNAL_FIXED_ITEM_MARGIN\n } = token;\n const selectOverflowPrefixCls = `${componentCls}-selection-overflow`;\n const selectItemHeight = token.multipleSelectItemHeight;\n const selectItemDist = getSelectItemStyle(token);\n const suffixCls = suffix ? `${componentCls}-${suffix}` : '';\n const multipleSelectorUnit = getMultipleSelectorUnit(token);\n return {\n [`${componentCls}-multiple${suffixCls}`]: Object.assign(Object.assign({}, genOverflowStyle(token)), {\n // ========================= Selector =========================\n [`${componentCls}-selector`]: {\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n height: '100%',\n // Multiple is little different that horizontal is follow the vertical\n paddingInline: multipleSelectorUnit.basePadding,\n paddingBlock: multipleSelectorUnit.containerPadding,\n borderRadius: token.borderRadius,\n [`${componentCls}-disabled&`]: {\n background: token.multipleSelectorBgDisabled,\n cursor: 'not-allowed'\n },\n '&:after': {\n display: 'inline-block',\n width: 0,\n margin: `${unit(INTERNAL_FIXED_ITEM_MARGIN)} 0`,\n lineHeight: unit(selectItemHeight),\n visibility: 'hidden',\n content: '\"\\\\a0\"'\n }\n },\n // ======================== Selections ========================\n [`${componentCls}-selection-item`]: {\n height: multipleSelectorUnit.itemHeight,\n lineHeight: unit(multipleSelectorUnit.itemLineHeight)\n },\n // ========================== Input ==========================\n [`${selectOverflowPrefixCls}-item + ${selectOverflowPrefixCls}-item`]: {\n [`${componentCls}-selection-search`]: {\n marginInlineStart: 0\n }\n },\n // https://github.com/ant-design/ant-design/issues/44754\n [`${selectOverflowPrefixCls}-item-suffix`]: {\n height: '100%'\n },\n [`${componentCls}-selection-search`]: {\n display: 'inline-flex',\n position: 'relative',\n maxWidth: '100%',\n marginInlineStart: token.calc(token.inputPaddingHorizontalBase).sub(selectItemDist).equal(),\n [`\n &-input,\n &-mirror\n `]: {\n height: selectItemHeight,\n fontFamily: token.fontFamily,\n lineHeight: unit(selectItemHeight),\n transition: `all ${token.motionDurationSlow}`\n },\n '&-input': {\n width: '100%',\n minWidth: 4.1 // fix search cursor missing\n },\n '&-mirror': {\n position: 'absolute',\n top: 0,\n insetInlineStart: 0,\n insetInlineEnd: 'auto',\n zIndex: 999,\n whiteSpace: 'pre',\n // fix whitespace wrapping caused width calculation bug\n visibility: 'hidden'\n }\n },\n // ======================= Placeholder =======================\n [`${componentCls}-selection-placeholder`]: {\n position: 'absolute',\n top: '50%',\n insetInlineStart: token.inputPaddingHorizontalBase,\n insetInlineEnd: token.inputPaddingHorizontalBase,\n transform: 'translateY(-50%)',\n transition: `all ${token.motionDurationSlow}`\n }\n })\n };\n};\nfunction genSizeStyle(token, suffix) {\n const {\n componentCls\n } = token;\n const suffixCls = suffix ? `${componentCls}-${suffix}` : '';\n const rawStyle = {\n [`${componentCls}-multiple${suffixCls}`]: {\n fontSize: token.fontSize,\n // ========================= Selector =========================\n [`${componentCls}-selector`]: {\n [`${componentCls}-show-search&`]: {\n cursor: 'text'\n }\n },\n [`\n &${componentCls}-show-arrow ${componentCls}-selector,\n &${componentCls}-allow-clear ${componentCls}-selector\n `]: {\n paddingInlineEnd: token.calc(token.fontSizeIcon).add(token.controlPaddingHorizontal).equal()\n }\n }\n };\n return [genSelectionStyle(token, suffix), rawStyle];\n}\nconst genMultipleStyle = token => {\n const {\n componentCls\n } = token;\n const smallToken = mergeToken(token, {\n selectHeight: token.controlHeightSM,\n multipleSelectItemHeight: token.multipleItemHeightSM,\n borderRadius: token.borderRadiusSM,\n borderRadiusSM: token.borderRadiusXS\n });\n const largeToken = mergeToken(token, {\n fontSize: token.fontSizeLG,\n selectHeight: token.controlHeightLG,\n multipleSelectItemHeight: token.multipleItemHeightLG,\n borderRadius: token.borderRadiusLG,\n borderRadiusSM: token.borderRadius\n });\n return [genSizeStyle(token),\n // ======================== Small ========================\n genSizeStyle(smallToken, 'sm'),\n // Padding\n {\n [`${componentCls}-multiple${componentCls}-sm`]: {\n [`${componentCls}-selection-placeholder`]: {\n insetInline: token.calc(token.controlPaddingHorizontalSM).sub(token.lineWidth).equal()\n },\n // https://github.com/ant-design/ant-design/issues/29559\n [`${componentCls}-selection-search`]: {\n marginInlineStart: 2 // Magic Number\n }\n }\n },\n // ======================== Large ========================\n genSizeStyle(largeToken, 'lg')];\n};\nexport default genMultipleStyle;","import { unit } from '@ant-design/cssinjs';\nimport { resetComponent } from '../../style';\nimport { mergeToken } from '../../theme/internal';\nfunction genSizeStyle(token, suffix) {\n const {\n componentCls,\n inputPaddingHorizontalBase,\n borderRadius\n } = token;\n const selectHeightWithoutBorder = token.calc(token.controlHeight).sub(token.calc(token.lineWidth).mul(2)).equal();\n const suffixCls = suffix ? `${componentCls}-${suffix}` : '';\n return {\n [`${componentCls}-single${suffixCls}`]: {\n fontSize: token.fontSize,\n height: token.controlHeight,\n // ========================= Selector =========================\n [`${componentCls}-selector`]: Object.assign(Object.assign({}, resetComponent(token, true)), {\n display: 'flex',\n borderRadius,\n [`${componentCls}-selection-search`]: {\n position: 'absolute',\n top: 0,\n insetInlineStart: inputPaddingHorizontalBase,\n insetInlineEnd: inputPaddingHorizontalBase,\n bottom: 0,\n '&-input': {\n width: '100%',\n WebkitAppearance: 'textfield'\n }\n },\n [`\n ${componentCls}-selection-item,\n ${componentCls}-selection-placeholder\n `]: {\n padding: 0,\n lineHeight: unit(selectHeightWithoutBorder),\n transition: `all ${token.motionDurationSlow}, visibility 0s`,\n alignSelf: 'center'\n },\n [`${componentCls}-selection-placeholder`]: {\n transition: 'none',\n pointerEvents: 'none'\n },\n // For common baseline align\n [['&:after', /* For '' value baseline align */\n `${componentCls}-selection-item:empty:after`, /* For undefined value baseline align */\n `${componentCls}-selection-placeholder:empty:after`].join(',')]: {\n display: 'inline-block',\n width: 0,\n visibility: 'hidden',\n content: '\"\\\\a0\"'\n }\n }),\n [`\n &${componentCls}-show-arrow ${componentCls}-selection-item,\n &${componentCls}-show-arrow ${componentCls}-selection-placeholder\n `]: {\n paddingInlineEnd: token.showArrowPaddingInlineEnd\n },\n // Opacity selection if open\n [`&${componentCls}-open ${componentCls}-selection-item`]: {\n color: token.colorTextPlaceholder\n },\n // ========================== Input ==========================\n // We only change the style of non-customize input which is only support by `combobox` mode.\n // Not customize\n [`&:not(${componentCls}-customize-input)`]: {\n [`${componentCls}-selector`]: {\n width: '100%',\n height: '100%',\n padding: `0 ${unit(inputPaddingHorizontalBase)}`,\n [`${componentCls}-selection-search-input`]: {\n height: selectHeightWithoutBorder\n },\n '&:after': {\n lineHeight: unit(selectHeightWithoutBorder)\n }\n }\n },\n [`&${componentCls}-customize-input`]: {\n [`${componentCls}-selector`]: {\n '&:after': {\n display: 'none'\n },\n [`${componentCls}-selection-search`]: {\n position: 'static',\n width: '100%'\n },\n [`${componentCls}-selection-placeholder`]: {\n position: 'absolute',\n insetInlineStart: 0,\n insetInlineEnd: 0,\n padding: `0 ${unit(inputPaddingHorizontalBase)}`,\n '&:after': {\n display: 'none'\n }\n }\n }\n }\n }\n };\n}\nexport default function genSingleStyle(token) {\n const {\n componentCls\n } = token;\n const inputPaddingHorizontalSM = token.calc(token.controlPaddingHorizontalSM).sub(token.lineWidth).equal();\n return [genSizeStyle(token),\n // ======================== Small ========================\n // Shared\n genSizeStyle(mergeToken(token, {\n controlHeight: token.controlHeightSM,\n borderRadius: token.borderRadiusSM\n }), 'sm'),\n // padding\n {\n [`${componentCls}-single${componentCls}-sm`]: {\n [`&:not(${componentCls}-customize-input)`]: {\n [`${componentCls}-selection-search`]: {\n insetInlineStart: inputPaddingHorizontalSM,\n insetInlineEnd: inputPaddingHorizontalSM\n },\n [`${componentCls}-selector`]: {\n padding: `0 ${unit(inputPaddingHorizontalSM)}`\n },\n // With arrow should provides `padding-right` to show the arrow\n [`&${componentCls}-show-arrow ${componentCls}-selection-search`]: {\n insetInlineEnd: token.calc(inputPaddingHorizontalSM).add(token.calc(token.fontSize).mul(1.5)).equal()\n },\n [`\n &${componentCls}-show-arrow ${componentCls}-selection-item,\n &${componentCls}-show-arrow ${componentCls}-selection-placeholder\n `]: {\n paddingInlineEnd: token.calc(token.fontSize).mul(1.5).equal()\n }\n }\n }\n },\n // ======================== Large ========================\n // Shared\n genSizeStyle(mergeToken(token, {\n controlHeight: token.singleItemHeightLG,\n fontSize: token.fontSizeLG,\n borderRadius: token.borderRadiusLG\n }), 'lg')];\n}","export const prepareComponentToken = token => {\n const {\n fontSize,\n lineHeight,\n lineWidth,\n controlHeight,\n controlHeightSM,\n controlHeightLG,\n paddingXXS,\n controlPaddingHorizontal,\n zIndexPopupBase,\n colorText,\n fontWeightStrong,\n controlItemBgActive,\n controlItemBgHover,\n colorBgContainer,\n colorFillSecondary,\n colorBgContainerDisabled,\n colorTextDisabled\n } = token;\n // Item height default use `controlHeight - 2 * paddingXXS`,\n // but some case `paddingXXS=0`.\n // Let's fallback it.\n const dblPaddingXXS = paddingXXS * 2;\n const dblLineWidth = lineWidth * 2;\n const multipleItemHeight = Math.min(controlHeight - dblPaddingXXS, controlHeight - dblLineWidth);\n const multipleItemHeightSM = Math.min(controlHeightSM - dblPaddingXXS, controlHeightSM - dblLineWidth);\n const multipleItemHeightLG = Math.min(controlHeightLG - dblPaddingXXS, controlHeightLG - dblLineWidth);\n // FIXED_ITEM_MARGIN is a hardcode calculation since calc not support rounding\n const INTERNAL_FIXED_ITEM_MARGIN = Math.floor(paddingXXS / 2);\n return {\n INTERNAL_FIXED_ITEM_MARGIN,\n zIndexPopup: zIndexPopupBase + 50,\n optionSelectedColor: colorText,\n optionSelectedFontWeight: fontWeightStrong,\n optionSelectedBg: controlItemBgActive,\n optionActiveBg: controlItemBgHover,\n optionPadding: `${(controlHeight - fontSize * lineHeight) / 2}px ${controlPaddingHorizontal}px`,\n optionFontSize: fontSize,\n optionLineHeight: lineHeight,\n optionHeight: controlHeight,\n selectorBg: colorBgContainer,\n clearBg: colorBgContainer,\n singleItemHeightLG: controlHeightLG,\n multipleItemBg: colorFillSecondary,\n multipleItemBorderColor: 'transparent',\n multipleItemHeight,\n multipleItemHeightSM,\n multipleItemHeightLG,\n multipleSelectorBgDisabled: colorBgContainerDisabled,\n multipleItemColorDisabled: colorTextDisabled,\n multipleItemBorderColorDisabled: 'transparent',\n showArrowPaddingInlineEnd: Math.ceil(token.fontSize * 1.25)\n };\n};","import { unit } from '@ant-design/cssinjs';\n// =====================================================\n// == Outlined ==\n// =====================================================\nconst genBaseOutlinedStyle = (token, options) => {\n const {\n componentCls,\n antCls,\n controlOutlineWidth\n } = token;\n return {\n [`&:not(${componentCls}-customize-input) ${componentCls}-selector`]: {\n border: `${unit(token.lineWidth)} ${token.lineType} ${options.borderColor}`,\n background: token.selectorBg\n },\n [`&:not(${componentCls}-disabled):not(${componentCls}-customize-input):not(${antCls}-pagination-size-changer)`]: {\n [`&:hover ${componentCls}-selector`]: {\n borderColor: options.hoverBorderHover\n },\n [`${componentCls}-focused& ${componentCls}-selector`]: {\n borderColor: options.activeBorderColor,\n boxShadow: `0 0 0 ${unit(controlOutlineWidth)} ${options.activeShadowColor}`,\n outline: 0\n }\n }\n };\n};\nconst genOutlinedStatusStyle = (token, options) => ({\n [`&${token.componentCls}-status-${options.status}`]: Object.assign({}, genBaseOutlinedStyle(token, options))\n});\nconst genOutlinedStyle = token => ({\n '&-outlined': Object.assign(Object.assign(Object.assign(Object.assign({}, genBaseOutlinedStyle(token, {\n borderColor: token.colorBorder,\n hoverBorderHover: token.colorPrimaryHover,\n activeBorderColor: token.colorPrimary,\n activeShadowColor: token.controlOutline\n })), genOutlinedStatusStyle(token, {\n status: 'error',\n borderColor: token.colorError,\n hoverBorderHover: token.colorErrorHover,\n activeBorderColor: token.colorError,\n activeShadowColor: token.colorErrorOutline\n })), genOutlinedStatusStyle(token, {\n status: 'warning',\n borderColor: token.colorWarning,\n hoverBorderHover: token.colorWarningHover,\n activeBorderColor: token.colorWarning,\n activeShadowColor: token.colorWarningOutline\n })), {\n [`&${token.componentCls}-disabled`]: {\n [`&:not(${token.componentCls}-customize-input) ${token.componentCls}-selector`]: {\n background: token.colorBgContainerDisabled,\n color: token.colorTextDisabled\n }\n },\n [`&${token.componentCls}-multiple ${token.componentCls}-selection-item`]: {\n background: token.multipleItemBg,\n border: `${unit(token.lineWidth)} ${token.lineType} ${token.multipleItemBorderColor}`\n }\n })\n});\n// =====================================================\n// == Filled ==\n// =====================================================\nconst genBaseFilledStyle = (token, options) => {\n const {\n componentCls,\n antCls\n } = token;\n return {\n [`&:not(${componentCls}-customize-input) ${componentCls}-selector`]: {\n background: options.bg,\n border: `${unit(token.lineWidth)} ${token.lineType} transparent`,\n color: options.color\n },\n [`&:not(${componentCls}-disabled):not(${componentCls}-customize-input):not(${antCls}-pagination-size-changer)`]: {\n [`&:hover ${componentCls}-selector`]: {\n background: options.hoverBg\n },\n [`${componentCls}-focused& ${componentCls}-selector`]: {\n background: token.selectorBg,\n borderColor: options.activeBorderColor,\n outline: 0\n }\n }\n };\n};\nconst genFilledStatusStyle = (token, options) => ({\n [`&${token.componentCls}-status-${options.status}`]: Object.assign({}, genBaseFilledStyle(token, options))\n});\nconst genFilledStyle = token => ({\n '&-filled': Object.assign(Object.assign(Object.assign(Object.assign({}, genBaseFilledStyle(token, {\n bg: token.colorFillTertiary,\n hoverBg: token.colorFillSecondary,\n activeBorderColor: token.colorPrimary,\n color: token.colorText\n })), genFilledStatusStyle(token, {\n status: 'error',\n bg: token.colorErrorBg,\n hoverBg: token.colorErrorBgHover,\n activeBorderColor: token.colorError,\n color: token.colorError\n })), genFilledStatusStyle(token, {\n status: 'warning',\n bg: token.colorWarningBg,\n hoverBg: token.colorWarningBgHover,\n activeBorderColor: token.colorWarning,\n color: token.colorWarning\n })), {\n [`&${token.componentCls}-disabled`]: {\n [`&:not(${token.componentCls}-customize-input) ${token.componentCls}-selector`]: {\n borderColor: token.colorBorder,\n background: token.colorBgContainerDisabled,\n color: token.colorTextDisabled\n }\n },\n [`&${token.componentCls}-multiple ${token.componentCls}-selection-item`]: {\n background: token.colorBgContainer,\n border: `${unit(token.lineWidth)} ${token.lineType} ${token.colorSplit}`\n }\n })\n});\n// =====================================================\n// == Borderless ==\n// =====================================================\nconst genBorderlessStyle = token => ({\n '&-borderless': {\n [`${token.componentCls}-selector`]: {\n background: 'transparent',\n borderColor: 'transparent'\n },\n [`&${token.componentCls}-disabled`]: {\n [`&:not(${token.componentCls}-customize-input) ${token.componentCls}-selector`]: {\n color: token.colorTextDisabled\n }\n },\n [`&${token.componentCls}-multiple ${token.componentCls}-selection-item`]: {\n background: token.multipleItemBg,\n border: `${unit(token.lineWidth)} ${token.lineType} ${token.multipleItemBorderColor}`\n },\n // Status\n [`&${token.componentCls}-status-error`]: {\n [`${token.componentCls}-selection-item`]: {\n color: token.colorError\n }\n },\n [`&${token.componentCls}-status-warning`]: {\n [`${token.componentCls}-selection-item`]: {\n color: token.colorWarning\n }\n }\n }\n});\nconst genVariantsStyle = token => ({\n [token.componentCls]: Object.assign(Object.assign(Object.assign({}, genOutlinedStyle(token)), genFilledStyle(token)), genBorderlessStyle(token))\n});\nexport default genVariantsStyle;","import { resetComponent, resetIcon, textEllipsis } from '../../style';\nimport { genCompactItemStyle } from '../../style/compact-item';\nimport { genStyleHooks, mergeToken } from '../../theme/internal';\nimport genDropdownStyle from './dropdown';\nimport genMultipleStyle from './multiple';\nimport genSingleStyle from './single';\nimport { prepareComponentToken } from './token';\nimport genVariantsStyle from './variants';\n// ============================= Selector =============================\nconst genSelectorStyle = token => {\n const {\n componentCls\n } = token;\n return {\n position: 'relative',\n transition: `all ${token.motionDurationMid} ${token.motionEaseInOut}`,\n input: {\n cursor: 'pointer'\n },\n [`${componentCls}-show-search&`]: {\n cursor: 'text',\n input: {\n cursor: 'auto',\n color: 'inherit',\n height: '100%'\n }\n },\n [`${componentCls}-disabled&`]: {\n cursor: 'not-allowed',\n input: {\n cursor: 'not-allowed'\n }\n }\n };\n};\n// ============================== Styles ==============================\n// /* Reset search input style */\nconst getSearchInputWithoutBorderStyle = token => {\n const {\n componentCls\n } = token;\n return {\n [`${componentCls}-selection-search-input`]: {\n margin: 0,\n padding: 0,\n background: 'transparent',\n border: 'none',\n outline: 'none',\n appearance: 'none',\n fontFamily: 'inherit',\n '&::-webkit-search-cancel-button': {\n display: 'none',\n '-webkit-appearance': 'none'\n }\n }\n };\n};\n// =============================== Base ===============================\nconst genBaseStyle = token => {\n const {\n antCls,\n componentCls,\n inputPaddingHorizontalBase,\n iconCls\n } = token;\n return {\n [componentCls]: Object.assign(Object.assign({}, resetComponent(token)), {\n position: 'relative',\n display: 'inline-block',\n cursor: 'pointer',\n [`&:not(${componentCls}-customize-input) ${componentCls}-selector`]: Object.assign(Object.assign({}, genSelectorStyle(token)), getSearchInputWithoutBorderStyle(token)),\n // ======================== Selection ========================\n [`${componentCls}-selection-item`]: Object.assign(Object.assign({\n flex: 1,\n fontWeight: 'normal',\n position: 'relative',\n userSelect: 'none'\n }, textEllipsis), {\n // https://github.com/ant-design/ant-design/issues/40421\n [`> ${antCls}-typography`]: {\n display: 'inline'\n }\n }),\n // ======================= Placeholder =======================\n [`${componentCls}-selection-placeholder`]: Object.assign(Object.assign({}, textEllipsis), {\n flex: 1,\n color: token.colorTextPlaceholder,\n pointerEvents: 'none'\n }),\n // ========================== Arrow ==========================\n [`${componentCls}-arrow`]: Object.assign(Object.assign({}, resetIcon()), {\n position: 'absolute',\n top: '50%',\n insetInlineStart: 'auto',\n insetInlineEnd: inputPaddingHorizontalBase,\n height: token.fontSizeIcon,\n marginTop: token.calc(token.fontSizeIcon).mul(-1).div(2).equal(),\n color: token.colorTextQuaternary,\n fontSize: token.fontSizeIcon,\n lineHeight: 1,\n textAlign: 'center',\n pointerEvents: 'none',\n display: 'flex',\n alignItems: 'center',\n transition: `opacity ${token.motionDurationSlow} ease`,\n [iconCls]: {\n verticalAlign: 'top',\n transition: `transform ${token.motionDurationSlow}`,\n '> svg': {\n verticalAlign: 'top'\n },\n [`&:not(${componentCls}-suffix)`]: {\n pointerEvents: 'auto'\n }\n },\n [`${componentCls}-disabled &`]: {\n cursor: 'not-allowed'\n },\n '> *:not(:last-child)': {\n marginInlineEnd: 8 // FIXME: magic\n }\n }),\n // ========================== Clear ==========================\n [`${componentCls}-clear`]: {\n position: 'absolute',\n top: '50%',\n insetInlineStart: 'auto',\n insetInlineEnd: inputPaddingHorizontalBase,\n zIndex: 1,\n display: 'inline-block',\n width: token.fontSizeIcon,\n height: token.fontSizeIcon,\n marginTop: token.calc(token.fontSizeIcon).mul(-1).div(2).equal(),\n color: token.colorTextQuaternary,\n fontSize: token.fontSizeIcon,\n fontStyle: 'normal',\n lineHeight: 1,\n textAlign: 'center',\n textTransform: 'none',\n cursor: 'pointer',\n opacity: 0,\n transition: `color ${token.motionDurationMid} ease, opacity ${token.motionDurationSlow} ease`,\n textRendering: 'auto',\n '&:before': {\n display: 'block'\n },\n '&:hover': {\n color: token.colorTextTertiary\n }\n },\n [`&:hover ${componentCls}-clear`]: {\n opacity: 1,\n background: token.colorBgBase\n }\n }),\n // ========================= Feedback ==========================\n [`${componentCls}-has-feedback`]: {\n [`${componentCls}-clear`]: {\n insetInlineEnd: token.calc(inputPaddingHorizontalBase).add(token.fontSize).add(token.paddingXS).equal()\n }\n }\n };\n};\n// ============================== Styles ==============================\nconst genSelectStyle = token => {\n const {\n componentCls\n } = token;\n return [{\n [componentCls]: {\n // ==================== In Form ====================\n [`&${componentCls}-in-form-item`]: {\n width: '100%'\n }\n }\n },\n // =====================================================\n // == LTR ==\n // =====================================================\n // Base\n genBaseStyle(token),\n // Single\n genSingleStyle(token),\n // Multiple\n genMultipleStyle(token),\n // Dropdown\n genDropdownStyle(token),\n // =====================================================\n // == RTL ==\n // =====================================================\n {\n [`${componentCls}-rtl`]: {\n direction: 'rtl'\n }\n },\n // =====================================================\n // == Space Compact ==\n // =====================================================\n genCompactItemStyle(token, {\n borderElCls: `${componentCls}-selector`,\n focusElCls: `${componentCls}-focused`\n })];\n};\n// ============================== Export ==============================\nexport default genStyleHooks('Select', (token, _ref) => {\n let {\n rootPrefixCls\n } = _ref;\n const selectToken = mergeToken(token, {\n rootPrefixCls,\n inputPaddingHorizontalBase: token.calc(token.paddingSM).sub(1).equal(),\n multipleSelectItemHeight: token.multipleItemHeight,\n selectHeight: token.controlHeight\n });\n return [genSelectStyle(selectToken), genVariantsStyle(selectToken)];\n}, prepareComponentToken, {\n unitless: {\n optionLineHeight: true,\n optionSelectedFontWeight: true\n }\n});","// This icon file is generated automatically.\nvar CheckOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 00-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z\" } }] }, \"name\": \"check\", \"theme\": \"outlined\" };\nexport default CheckOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport CheckOutlinedSvg from \"@ant-design/icons-svg/es/asn/CheckOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar CheckOutlined = function CheckOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: CheckOutlinedSvg\n }));\n};\n\n/**![check](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTkxMiAxOTBoLTY5LjljLTkuOCAwLTE5LjEgNC41LTI1LjEgMTIuMkw0MDQuNyA3MjQuNSAyMDcgNDc0YTMyIDMyIDAgMDAtMjUuMS0xMi4ySDExMmMtNi43IDAtMTAuNCA3LjctNi4zIDEyLjlsMjczLjkgMzQ3YzEyLjggMTYuMiAzNy40IDE2LjIgNTAuMyAwbDQ4OC40LTYxOC45YzQuMS01LjEuNC0xMi44LTYuMy0xMi44eiIgLz48L3N2Zz4=) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(CheckOutlined);\nif (process.env.NODE_ENV !== 'production') {\n RefIcon.displayName = 'CheckOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar DownOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\" } }] }, \"name\": \"down\", \"theme\": \"outlined\" };\nexport default DownOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport DownOutlinedSvg from \"@ant-design/icons-svg/es/asn/DownOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar DownOutlined = function DownOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: DownOutlinedSvg\n }));\n};\n\n/**![down](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTg4NCAyNTZoLTc1Yy01LjEgMC05LjkgMi41LTEyLjkgNi42TDUxMiA2NTQuMiAyMjcuOSAyNjIuNmMtMy00LjEtNy44LTYuNi0xMi45LTYuNmgtNzVjLTYuNSAwLTEwLjMgNy40LTYuNSAxMi43bDM1Mi42IDQ4Ni4xYzEyLjggMTcuNiAzOSAxNy42IDUxLjcgMGwzNTIuNi00ODYuMWMzLjktNS4zLjEtMTIuNy02LjQtMTIuN3oiIC8+PC9zdmc+) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(DownOutlined);\nif (process.env.NODE_ENV !== 'production') {\n RefIcon.displayName = 'DownOutlined';\n}\nexport default RefIcon;","// This icon file is generated automatically.\nvar SearchOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M909.6 854.5L649.9 594.8C690.2 542.7 712 479 712 412c0-80.2-31.3-155.4-87.9-212.1-56.6-56.7-132-87.9-212.1-87.9s-155.5 31.3-212.1 87.9C143.2 256.5 112 331.8 112 412c0 80.1 31.3 155.5 87.9 212.1C256.5 680.8 331.8 712 412 712c67 0 130.6-21.8 182.7-62l259.7 259.6a8.2 8.2 0 0011.6 0l43.6-43.5a8.2 8.2 0 000-11.6zM570.4 570.4C528 612.7 471.8 636 412 636s-116-23.3-158.4-65.6C211.3 528 188 471.8 188 412s23.3-116.1 65.6-158.4C296 211.3 352.2 188 412 188s116.1 23.2 158.4 65.6S636 352.2 636 412s-23.3 116.1-65.6 158.4z\" } }] }, \"name\": \"search\", \"theme\": \"outlined\" };\nexport default SearchOutlined;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\n\nimport * as React from 'react';\nimport SearchOutlinedSvg from \"@ant-design/icons-svg/es/asn/SearchOutlined\";\nimport AntdIcon from \"../components/AntdIcon\";\nvar SearchOutlined = function SearchOutlined(props, ref) {\n return /*#__PURE__*/React.createElement(AntdIcon, _extends({}, props, {\n ref: ref,\n icon: SearchOutlinedSvg\n }));\n};\n\n/**![search](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIGZpbGw9IiNjYWNhY2EiIHZpZXdCb3g9IjY0IDY0IDg5NiA4OTYiIGZvY3VzYWJsZT0iZmFsc2UiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTkwOS42IDg1NC41TDY0OS45IDU5NC44QzY5MC4yIDU0Mi43IDcxMiA0NzkgNzEyIDQxMmMwLTgwLjItMzEuMy0xNTUuNC04Ny45LTIxMi4xLTU2LjYtNTYuNy0xMzItODcuOS0yMTIuMS04Ny45cy0xNTUuNSAzMS4zLTIxMi4xIDg3LjlDMTQzLjIgMjU2LjUgMTEyIDMzMS44IDExMiA0MTJjMCA4MC4xIDMxLjMgMTU1LjUgODcuOSAyMTIuMUMyNTYuNSA2ODAuOCAzMzEuOCA3MTIgNDEyIDcxMmM2NyAwIDEzMC42LTIxLjggMTgyLjctNjJsMjU5LjcgMjU5LjZhOC4yIDguMiAwIDAwMTEuNiAwbDQzLjYtNDMuNWE4LjIgOC4yIDAgMDAwLTExLjZ6TTU3MC40IDU3MC40QzUyOCA2MTIuNyA0NzEuOCA2MzYgNDEyIDYzNnMtMTE2LTIzLjMtMTU4LjQtNjUuNkMyMTEuMyA1MjggMTg4IDQ3MS44IDE4OCA0MTJzMjMuMy0xMTYuMSA2NS42LTE1OC40QzI5NiAyMTEuMyAzNTIuMiAxODggNDEyIDE4OHMxMTYuMSAyMy4yIDE1OC40IDY1LjZTNjM2IDM1Mi4yIDYzNiA0MTJzLTIzLjMgMTE2LjEtNjUuNiAxNTguNHoiIC8+PC9zdmc+) */\nvar RefIcon = /*#__PURE__*/React.forwardRef(SearchOutlined);\nif (process.env.NODE_ENV !== 'production') {\n RefIcon.displayName = 'SearchOutlined';\n}\nexport default RefIcon;","\"use client\";\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n// TODO: 4.0 - codemod should help to change `filterOption` to support node props.\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport RcSelect, { OptGroup, Option } from 'rc-select';\nimport omit from \"rc-util/es/omit\";\nimport { useZIndex } from '../_util/hooks/useZIndex';\nimport { getTransitionName } from '../_util/motion';\nimport genPurePanel from '../_util/PurePanel';\nimport { getMergedStatus, getStatusClassNames } from '../_util/statusUtils';\nimport { devUseWarning } from '../_util/warning';\nimport { ConfigContext } from '../config-provider';\nimport DefaultRenderEmpty from '../config-provider/defaultRenderEmpty';\nimport DisabledContext from '../config-provider/DisabledContext';\nimport useCSSVarCls from '../config-provider/hooks/useCSSVarCls';\nimport useSize from '../config-provider/hooks/useSize';\nimport { FormItemInputContext } from '../form/context';\nimport useVariants from '../form/hooks/useVariants';\nimport { useCompactItemContext } from '../space/Compact';\nimport { useToken } from '../theme/internal';\nimport mergedBuiltinPlacements from './mergedBuiltinPlacements';\nimport useStyle from './style';\nimport useIcons from './useIcons';\nimport useShowArrow from './useShowArrow';\nconst SECRET_COMBOBOX_MODE_DO_NOT_USE = 'SECRET_COMBOBOX_MODE_DO_NOT_USE';\nconst InternalSelect = (props, ref) => {\n var _a;\n const {\n prefixCls: customizePrefixCls,\n bordered,\n className,\n rootClassName,\n getPopupContainer,\n popupClassName,\n dropdownClassName,\n listHeight = 256,\n placement,\n listItemHeight: customListItemHeight,\n size: customizeSize,\n disabled: customDisabled,\n notFoundContent,\n status: customStatus,\n builtinPlacements,\n dropdownMatchSelectWidth,\n popupMatchSelectWidth,\n direction: propDirection,\n style,\n allowClear,\n variant: customizeVariant,\n dropdownStyle,\n transitionName,\n tagRender,\n maxCount\n } = props,\n rest = __rest(props, [\"prefixCls\", \"bordered\", \"className\", \"rootClassName\", \"getPopupContainer\", \"popupClassName\", \"dropdownClassName\", \"listHeight\", \"placement\", \"listItemHeight\", \"size\", \"disabled\", \"notFoundContent\", \"status\", \"builtinPlacements\", \"dropdownMatchSelectWidth\", \"popupMatchSelectWidth\", \"direction\", \"style\", \"allowClear\", \"variant\", \"dropdownStyle\", \"transitionName\", \"tagRender\", \"maxCount\"]);\n const {\n getPopupContainer: getContextPopupContainer,\n getPrefixCls,\n renderEmpty,\n direction: contextDirection,\n virtual,\n popupMatchSelectWidth: contextPopupMatchSelectWidth,\n popupOverflow,\n select\n } = React.useContext(ConfigContext);\n const [, token] = useToken();\n const listItemHeight = customListItemHeight !== null && customListItemHeight !== void 0 ? customListItemHeight : token === null || token === void 0 ? void 0 : token.controlHeight;\n const prefixCls = getPrefixCls('select', customizePrefixCls);\n const rootPrefixCls = getPrefixCls();\n const direction = propDirection !== null && propDirection !== void 0 ? propDirection : contextDirection;\n const {\n compactSize,\n compactItemClassnames\n } = useCompactItemContext(prefixCls, direction);\n const [variant, enableVariantCls] = useVariants('select', customizeVariant, bordered);\n const rootCls = useCSSVarCls(prefixCls);\n const [wrapCSSVar, hashId, cssVarCls] = useStyle(prefixCls, rootCls);\n const mode = React.useMemo(() => {\n const {\n mode: m\n } = props;\n if (m === 'combobox') {\n return undefined;\n }\n if (m === SECRET_COMBOBOX_MODE_DO_NOT_USE) {\n return 'combobox';\n }\n return m;\n }, [props.mode]);\n const isMultiple = mode === 'multiple' || mode === 'tags';\n const showSuffixIcon = useShowArrow(props.suffixIcon, props.showArrow);\n const mergedPopupMatchSelectWidth = (_a = popupMatchSelectWidth !== null && popupMatchSelectWidth !== void 0 ? popupMatchSelectWidth : dropdownMatchSelectWidth) !== null && _a !== void 0 ? _a : contextPopupMatchSelectWidth;\n // ===================== Form Status =====================\n const {\n status: contextStatus,\n hasFeedback,\n isFormItemInput,\n feedbackIcon\n } = React.useContext(FormItemInputContext);\n const mergedStatus = getMergedStatus(contextStatus, customStatus);\n // ===================== Empty =====================\n let mergedNotFound;\n if (notFoundContent !== undefined) {\n mergedNotFound = notFoundContent;\n } else if (mode === 'combobox') {\n mergedNotFound = null;\n } else {\n mergedNotFound = (renderEmpty === null || renderEmpty === void 0 ? void 0 : renderEmpty('Select')) || /*#__PURE__*/React.createElement(DefaultRenderEmpty, {\n componentName: \"Select\"\n });\n }\n // ===================== Icons =====================\n const {\n suffixIcon,\n itemIcon,\n removeIcon,\n clearIcon\n } = useIcons(Object.assign(Object.assign({}, rest), {\n multiple: isMultiple,\n hasFeedback,\n feedbackIcon,\n showSuffixIcon,\n prefixCls,\n componentName: 'Select'\n }));\n const mergedAllowClear = allowClear === true ? {\n clearIcon\n } : allowClear;\n const selectProps = omit(rest, ['suffixIcon', 'itemIcon']);\n const mergedPopupClassName = classNames(popupClassName || dropdownClassName, {\n [`${prefixCls}-dropdown-${direction}`]: direction === 'rtl'\n }, rootClassName, cssVarCls, rootCls, hashId);\n const mergedSize = useSize(ctx => {\n var _a;\n return (_a = customizeSize !== null && customizeSize !== void 0 ? customizeSize : compactSize) !== null && _a !== void 0 ? _a : ctx;\n });\n // ===================== Disabled =====================\n const disabled = React.useContext(DisabledContext);\n const mergedDisabled = customDisabled !== null && customDisabled !== void 0 ? customDisabled : disabled;\n const mergedClassName = classNames({\n [`${prefixCls}-lg`]: mergedSize === 'large',\n [`${prefixCls}-sm`]: mergedSize === 'small',\n [`${prefixCls}-rtl`]: direction === 'rtl',\n [`${prefixCls}-${variant}`]: enableVariantCls,\n [`${prefixCls}-in-form-item`]: isFormItemInput\n }, getStatusClassNames(prefixCls, mergedStatus, hasFeedback), compactItemClassnames, select === null || select === void 0 ? void 0 : select.className, className, rootClassName, cssVarCls, rootCls, hashId);\n // ===================== Placement =====================\n const memoPlacement = React.useMemo(() => {\n if (placement !== undefined) {\n return placement;\n }\n return direction === 'rtl' ? 'bottomRight' : 'bottomLeft';\n }, [placement, direction]);\n // ====================== Warning ======================\n if (process.env.NODE_ENV !== 'production') {\n const warning = devUseWarning('Select');\n warning.deprecated(!dropdownClassName, 'dropdownClassName', 'popupClassName');\n warning.deprecated(dropdownMatchSelectWidth === undefined, 'dropdownMatchSelectWidth', 'popupMatchSelectWidth');\n process.env.NODE_ENV !== \"production\" ? warning(!('showArrow' in props), 'deprecated', '`showArrow` is deprecated which will be removed in next major version. It will be a default behavior, you can hide it by setting `suffixIcon` to null.') : void 0;\n warning.deprecated(!('bordered' in props), 'bordered', 'variant');\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof maxCount !== 'undefined' && !isMultiple), 'usage', '`maxCount` only works with mode `multiple` or `tags`') : void 0;\n }\n // ====================== zIndex =========================\n const [zIndex] = useZIndex('SelectLike', dropdownStyle === null || dropdownStyle === void 0 ? void 0 : dropdownStyle.zIndex);\n // ====================== Render =======================\n return wrapCSSVar(/*#__PURE__*/React.createElement(RcSelect, Object.assign({\n ref: ref,\n virtual: virtual,\n showSearch: select === null || select === void 0 ? void 0 : select.showSearch\n }, selectProps, {\n style: Object.assign(Object.assign({}, select === null || select === void 0 ? void 0 : select.style), style),\n dropdownMatchSelectWidth: mergedPopupMatchSelectWidth,\n transitionName: getTransitionName(rootPrefixCls, 'slide-up', transitionName),\n builtinPlacements: mergedBuiltinPlacements(builtinPlacements, popupOverflow),\n listHeight: listHeight,\n listItemHeight: listItemHeight,\n mode: mode,\n prefixCls: prefixCls,\n placement: memoPlacement,\n direction: direction,\n suffixIcon: suffixIcon,\n menuItemSelectedIcon: itemIcon,\n removeIcon: removeIcon,\n allowClear: mergedAllowClear,\n notFoundContent: mergedNotFound,\n className: mergedClassName,\n getPopupContainer: getPopupContainer || getContextPopupContainer,\n dropdownClassName: mergedPopupClassName,\n disabled: mergedDisabled,\n dropdownStyle: Object.assign(Object.assign({}, dropdownStyle), {\n zIndex\n }),\n maxCount: isMultiple ? maxCount : undefined,\n tagRender: isMultiple ? tagRender : undefined\n })));\n};\nif (process.env.NODE_ENV !== 'production') {\n InternalSelect.displayName = 'Select';\n}\nconst Select = /*#__PURE__*/React.forwardRef(InternalSelect);\n// We don't care debug panel\n/* istanbul ignore next */\nconst PurePanel = genPurePanel(Select);\nSelect.SECRET_COMBOBOX_MODE_DO_NOT_USE = SECRET_COMBOBOX_MODE_DO_NOT_USE;\nSelect.Option = Option;\nSelect.OptGroup = OptGroup;\nSelect._InternalPanelDoNotUseOrYouWillBeFired = PurePanel;\nif (process.env.NODE_ENV !== 'production') {\n Select.displayName = 'Select';\n}\nexport default Select;","/**\n * Since Select, TreeSelect, Cascader is same Select like component.\n * We just use same hook to handle this logic.\n *\n * If `suffixIcon` is not equal to `null`, always show it.\n */\nexport default function useShowArrow(suffixIcon, showArrow) {\n return showArrow !== undefined ? showArrow : suffixIcon !== null;\n}","import classNames from 'classnames';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst InputStatuses = ['warning', 'error', ''];\nexport function getStatusClassNames(prefixCls, status, hasFeedback) {\n return classNames({\n [`${prefixCls}-status-success`]: status === 'success',\n [`${prefixCls}-status-warning`]: status === 'warning',\n [`${prefixCls}-status-error`]: status === 'error',\n [`${prefixCls}-status-validating`]: status === 'validating',\n [`${prefixCls}-has-feedback`]: hasFeedback\n });\n}\nexport const getMergedStatus = (contextStatus, customStatus) => customStatus || contextStatus;","\"use client\";\n\nimport * as React from 'react';\nimport CheckOutlined from \"@ant-design/icons/es/icons/CheckOutlined\";\nimport CloseCircleFilled from \"@ant-design/icons/es/icons/CloseCircleFilled\";\nimport CloseOutlined from \"@ant-design/icons/es/icons/CloseOutlined\";\nimport DownOutlined from \"@ant-design/icons/es/icons/DownOutlined\";\nimport LoadingOutlined from \"@ant-design/icons/es/icons/LoadingOutlined\";\nimport SearchOutlined from \"@ant-design/icons/es/icons/SearchOutlined\";\nimport { devUseWarning } from '../_util/warning';\nexport default function useIcons(_ref) {\n let {\n suffixIcon,\n clearIcon,\n menuItemSelectedIcon,\n removeIcon,\n loading,\n multiple,\n hasFeedback,\n prefixCls,\n showSuffixIcon,\n feedbackIcon,\n showArrow,\n componentName\n } = _ref;\n if (process.env.NODE_ENV !== 'production') {\n const warning = devUseWarning(componentName);\n warning.deprecated(!clearIcon, 'clearIcon', 'allowClear={{ clearIcon: React.ReactNode }}');\n }\n // Clear Icon\n const mergedClearIcon = clearIcon !== null && clearIcon !== void 0 ? clearIcon : /*#__PURE__*/React.createElement(CloseCircleFilled, null);\n // Validation Feedback Icon\n const getSuffixIconNode = arrowIcon => {\n if (suffixIcon === null && !hasFeedback && !showArrow) {\n return null;\n }\n return /*#__PURE__*/React.createElement(React.Fragment, null, showSuffixIcon !== false && arrowIcon, hasFeedback && feedbackIcon);\n };\n // Arrow item icon\n let mergedSuffixIcon = null;\n if (suffixIcon !== undefined) {\n mergedSuffixIcon = getSuffixIconNode(suffixIcon);\n } else if (loading) {\n mergedSuffixIcon = getSuffixIconNode(/*#__PURE__*/React.createElement(LoadingOutlined, {\n spin: true\n }));\n } else {\n const iconCls = `${prefixCls}-suffix`;\n mergedSuffixIcon = _ref2 => {\n let {\n open,\n showSearch\n } = _ref2;\n if (open && showSearch) {\n return getSuffixIconNode(/*#__PURE__*/React.createElement(SearchOutlined, {\n className: iconCls\n }));\n }\n return getSuffixIconNode(/*#__PURE__*/React.createElement(DownOutlined, {\n className: iconCls\n }));\n };\n }\n // Checked item icon\n let mergedItemIcon = null;\n if (menuItemSelectedIcon !== undefined) {\n mergedItemIcon = menuItemSelectedIcon;\n } else if (multiple) {\n mergedItemIcon = /*#__PURE__*/React.createElement(CheckOutlined, null);\n } else {\n mergedItemIcon = null;\n }\n let mergedRemoveIcon = null;\n if (removeIcon !== undefined) {\n mergedRemoveIcon = removeIcon;\n } else {\n mergedRemoveIcon = /*#__PURE__*/React.createElement(CloseOutlined, null);\n }\n return {\n clearIcon: mergedClearIcon,\n suffixIcon: mergedSuffixIcon,\n itemIcon: mergedItemIcon,\n removeIcon: mergedRemoveIcon\n };\n}","const isArrayLike = function(value: any): boolean {\n /**\n * isArrayLike([1, 2, 3]) => true\n * isArrayLike(document.body.children) => true\n * isArrayLike('abc') => true\n * isArrayLike(Function) => false\n */\n return value !== null && typeof value !== 'function' && isFinite(value.length);\n};\n\nexport default isArrayLike;\n","import isArrayLike from './is-array-like';\n\nconst contains = function(arr: any[], value: any): boolean {\n if (!isArrayLike(arr)) {\n return false;\n }\n return arr.indexOf(value) > -1;\n};\n\nexport default contains;\n","import isArrayLike from './is-array-like';\n\nconst filter = function (arr: T[], func: (v: T, idx: number) => boolean): T[] {\n if (!isArrayLike(arr)) {\n return arr;\n }\n const result: T[] = [];\n for (let index = 0; index < arr.length; index++) {\n const value = arr[index];\n if (func(value, index)) {\n result.push(value);\n }\n }\n\n return result;\n};\n\nexport default filter;\n","import filter from './filter';\nimport contains from './contains';\n\n/**\n * Flattens `array` a single level deep.\n *\n * @param {Array} arr The array to inspect.\n * @param {Array} values The values to exclude.\n * @return {Array} Returns the new array of filtered values.\n * @example\n * difference([2, 1], [2, 3]); // => [1]\n */\nconst difference = function(arr: T[], values: T[] = []): T[] {\n return filter(arr, (value: any) => !contains(values, value));\n};\n\nexport default difference;\n","const toString = {}.toString;\n\nconst isType = (value: any, type: string): boolean => toString.call(value) === '[object ' + type + ']';\n\nexport default isType;\n","/**\n * 是否为函数\n * @param {*} fn 对象\n * @return {Boolean} 是否函数\n */\nimport isType from './is-type';\n\nexport default (value: any): value is Function => {\n return isType(value, 'Function');\n};\n","// isFinite,\nconst isNil = function(value: any): value is null | undefined {\n /**\n * isNil(null) => true\n * isNil() => true\n */\n return value === null || value === undefined;\n};\n\nexport default isNil;\n","import isType from './is-type';\n\nexport default (value: any): value is Array => {\n return Array.isArray ?\n Array.isArray(value) :\n isType(value, 'Array');\n}\n","export default (value: any): value is T => {\n /**\n * isObject({}) => true\n * isObject([1, 2, 3]) => true\n * isObject(Function) => true\n * isObject(null) => false\n */\n const type = typeof value;\n return value !== null && type === 'object' || type === 'function';\n};\n","import isArray from './is-array';\nimport isObject from './is-object';\n\nfunction each (elements: any[] | object, func: (v: any, k: any) => any): void {\n if (!elements) {\n return;\n }\n let rst;\n if (isArray(elements)) {\n for (let i = 0, len = elements.length; i < len; i++) {\n rst = func(elements[i], i);\n if (rst === false) {\n break;\n }\n }\n } else if (isObject(elements)) {\n for (const k in elements) {\n if (elements.hasOwnProperty(k)) {\n rst = func(elements[k], k);\n if (rst === false) {\n break;\n }\n }\n }\n }\n}\n\nexport default each;\n","import each from './each';\nimport isFunction from './is-function';\n\nconst keys = Object.keys ? obj => Object.keys(obj) : obj => {\n const result = [];\n each(obj, (value, key) => {\n if (!(isFunction(obj) && key === 'prototype')) {\n result.push(key);\n }\n });\n return result;\n};\n\nexport default keys;\n","import isNil from './is-nil';\nimport keys from './keys';\n\nfunction isMatch(obj: any, attrs: any): boolean {\n const _keys = keys(attrs);\n const length = _keys.length;\n if (isNil(obj)) return !length;\n for (let i = 0; i < length; i += 1) {\n const key = _keys[i];\n if (attrs[key] !== obj[key] || !(key in obj)) {\n return false;\n }\n }\n return true;\n}\n\nexport default isMatch;\n","const isObjectLike = function(value: any): value is object {\n /**\n * isObjectLike({}) => true\n * isObjectLike([1, 2, 3]) => true\n * isObjectLike(Function) => false\n * isObjectLike(null) => false\n */\n return typeof value === 'object' && value !== null;\n};\n\nexport default isObjectLike;\n","import isObjectLike from './is-object-like';\nimport isType from './is-type';\n\nconst isPlainObject = function(value: any): value is object {\n /**\n * isObjectLike(new Foo) => false\n * isObjectLike([1, 2, 3]) => false\n * isObjectLike({ x: 0, y: 0 }) => true\n * isObjectLike(Object.create(null)) => true\n */\n if (!isObjectLike(value) || !isType(value, 'Object')) {\n return false;\n }\n if (Object.getPrototypeOf(value) === null) {\n return true;\n }\n let proto = value;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(value) === proto;\n};\n\nexport default isPlainObject;\n","import isFunction from './is-function';\nimport isMatch from './is-match';\nimport isArray from './is-array';\nimport isPlainObject from './is-plain-object';\n\nfunction find(arr: T[], predicate: Function): T;\nfunction find(arr: T[], predicate: object): T;\n\nfunction find(arr: T[], predicate: Function | object): T {\n if (!isArray(arr)) return null;\n\n let _predicate;\n if (isFunction(predicate)) {\n _predicate = predicate;\n }\n if (isPlainObject(predicate)) {\n _predicate = a => isMatch(a, predicate);\n }\n if (_predicate) {\n for (let i = 0; i < arr.length; i += 1) {\n if (_predicate(arr[i])) {\n return arr[i];\n }\n }\n }\n return null;\n}\n\nexport default find;\n","function findIndex(arr: T[], predicate: (item: T, idx?: number) => boolean, fromIndex: number = 0): number {\n for (let i = fromIndex; i < arr.length; i ++) {\n if (predicate(arr[i], i)) {\n // 找到终止循环\n return i;\n }\n }\n\n return -1;\n}\n\nexport default findIndex;\n","import isNil from './is-nil';\nimport isArray from './is-array';\n\nconst firstValue = function(data: object[], name: string): any {\n let rst = null;\n for (let i = 0; i < data.length; i++) {\n const obj = data[i];\n const value = obj[name];\n if (!isNil(value)) {\n if (isArray(value)) {\n rst = value[0]; // todo 这里是否应该使用递归,调用 firstValue @绝云\n } else {\n rst = value;\n }\n break;\n }\n }\n return rst;\n};\n\nexport default firstValue;\n","import isArray from './is-array';\n\n/**\n * Flattens `array` a single level deep.\n *\n * @param {Array} arr The array to flatten.\n * @return {Array} Returns the new flattened array.\n * @example\n *\n * flatten([1, [2, [3, [4]], 5]]); // => [1, 2, [3, [4]], 5]\n */\nconst flatten = function (arr: T[]): T[] {\n if (!isArray(arr)) {\n return [];\n }\n let rst: T[] = [];\n for (let i = 0; i < arr.length; i++) {\n rst = rst.concat(arr[i]);\n }\n return rst;\n};\n\nexport default flatten;\n","import isArray from './is-array';\n\n/**\n * Flattens `array` a single level deep.\n *\n * @param {Array} arr The array to flatten.\n * @param {Array} result The array to return.\n * @return {Array} Returns the new flattened array.\n * @example\n *\n * flattenDeep([1, [2, [3, [4]], 5]]); // => [1, 2, 3, 4, 5]\n */\nconst flattenDeep = function(arr: any[], result: any[] = []): any[] {\n if (!isArray(arr)) {\n result.push(arr);\n } else {\n for (let i = 0; i < arr.length; i += 1) {\n flattenDeep(arr[i], result);\n }\n }\n return result;\n};\n\nexport default flattenDeep;\n","import each from './each';\nimport isArray from './is-array';\n\n/**\n * @param {Array} arr The array to iterate over.\n * @return {*} Returns the maximum value.\n * @example\n *\n * max([1, 2]);\n * // => 2\n *\n * max([]);\n * // => undefined\n *\n * const data = new Array(1250010).fill(1).map((d,idx) => idx);\n *\n * max(data);\n * // => 1250010\n * // Math.max(...data) will encounter \"Maximum call stack size exceeded\" error\n */\nexport default (arr: number[]): number | undefined => {\n if (!isArray(arr)) {\n return undefined;\n }\n return arr.reduce((prev, curr) => {\n return Math.max(prev, curr)\n }, arr[0]);\n};\n","import each from './each';\nimport isArray from './is-array';\n\n/**\n * @param {Array} arr The array to iterate over.\n * @return {*} Returns the minimum value.\n * @example\n *\n * min([1, 2]);\n * // => 1\n *\n * min([]);\n * // => undefined\n *\n * const data = new Array(1250010).fill(1).map((d,idx) => idx);\n *\n * min(data);\n * // => 1250010\n * // Math.min(...data) will encounter \"Maximum call stack size exceeded\" error\n */\nexport default (arr: number[]): number | undefined => {\n if (!isArray(arr)) {\n return undefined;\n }\n return arr.reduce((prev, curr) => {\n return Math.min(prev, curr)\n }, arr[0]);\n};\n","import isArray from './is-array';\nimport { default as getMax } from './max';\nimport { default as getMin } from './min';\n\nexport interface RangeType {\n readonly min: number;\n readonly max: number;\n}\n\nconst getRange = function (values: number[]): RangeType {\n // 存在 NaN 时,min,max 判定会出问题\n let filterValues = values.filter((v) => !isNaN(v));\n if (!filterValues.length) {\n // 如果没有数值则直接返回0\n return {\n min: 0,\n max: 0,\n };\n }\n if (isArray(values[0])) {\n let tmp = [];\n for (let i = 0; i < values.length; i++) {\n tmp = tmp.concat(values[i]);\n }\n filterValues = tmp;\n }\n const max = getMax(filterValues);\n const min = getMin(filterValues);\n return {\n min,\n max,\n };\n};\n\nexport default getRange;\n","const arrPrototype = Array.prototype;\nconst splice = arrPrototype.splice;\nconst indexOf = arrPrototype.indexOf;\n\nconst pull = function(arr: T[], ...values: any[]): T[] {\n for (let i = 0; i < values.length; i++) {\n const value = values[i];\n let fromIndex = -1;\n while ((fromIndex = indexOf.call(arr, value)) > -1) {\n splice.call(arr, fromIndex, 1);\n }\n }\n return arr;\n};\n\nexport default pull;\n","import isArrayLike from './is-array-like';\n\nconst splice = Array.prototype.splice;\n\nconst pullAt = function pullAt (arr: T[], indexes: number[]): T[] {\n if (!isArrayLike(arr)) {\n return [];\n }\n let length = arr ? indexes.length : 0;\n const last = length - 1;\n\n while (length--) {\n let previous;\n const index = indexes[length];\n if (length === last || index !== previous) {\n previous = index;\n splice.call(arr, index, 1);\n }\n }\n return arr;\n};\n\nexport default pullAt;\n","import each from './each';\nimport isArray from './is-array';\nimport isPlainObject from './is-plain-object';\nimport { ObjectType } from './types';\n\nconst reduce = function(arr: G[]|ObjectType, fn: (result: T, data: G, idx: string | number) => T, init: T) {\n if (!isArray(arr) && !isPlainObject(arr)) {\n return arr;\n }\n let result = init;\n each(arr, (data, i) => {\n result = fn(result, data, i);\n });\n return result;\n};\n\nexport default reduce;\n","import isArrayLike from './is-array-like';\nimport pullAt from './pull-at';\n\nconst remove = function(arr: T[], predicate: (value: T, idx: number, arr?: T[]) => boolean): T[] {\n /**\n * const arr = [1, 2, 3, 4]\n * const evens = remove(arr, n => n % 2 == 0)\n * console.log(arr) // => [1, 3]\n * console.log(evens) // => [2, 4]\n */\n const result = [];\n if (!isArrayLike(arr)) {\n return result;\n }\n let i = -1;\n const indexes = [];\n const length = arr.length;\n\n while (++i < length) {\n const value = arr[i];\n if (predicate(value, i, arr)) {\n result.push(value);\n indexes.push(i);\n }\n }\n pullAt(arr, indexes);\n return result;\n};\n\nexport default remove;\n","import isType from './is-type';\n\nexport default (str: any): str is string => {\n return isType(str, 'String');\n}\n","import isArray from './is-array';\nimport isString from './is-string';\nimport isFunction from './is-function';\n\nexport interface ObjectType {\n [key: string]: T;\n}\n\nfunction sortBy (arr: ObjectType[], key: Function): ObjectType[];\nfunction sortBy (arr: ObjectType[], key: string): ObjectType[];\nfunction sortBy (arr: ObjectType[], key: string[]): ObjectType[];\n\nfunction sortBy (arr: ObjectType[], key: Function | string | string[]): ObjectType[] {\n let comparer;\n if (isFunction(key)) {\n comparer = (a, b) => key(a) - key(b);\n } else {\n let keys = [];\n if (isString(key)) {\n keys.push(key);\n } else if (isArray(key)) {\n keys = key;\n }\n comparer = (a, b) => {\n for (let i = 0; i < keys.length; i += 1) {\n const prop = keys[i];\n if (a[prop] > b[prop]) {\n return 1;\n }\n if (a[prop] < b[prop]) {\n return -1;\n }\n }\n return 0;\n };\n }\n\n arr.sort(comparer);\n return arr;\n}\n\nexport default sortBy;\n","export default function uniq(arr: any[], cache = new Map()) {\n const r = [];\n\n if (Array.isArray(arr)) {\n for (let i = 0, len = arr.length; i < len; i ++) {\n const item = arr[i];\n // 加一个 cache,提升性能\n if (!cache.has(item)) {\n r.push(item);\n cache.set(item, true);\n }\n }\n }\n return r;\n}\n","import isArray from './is-array';\nimport isNil from './is-nil';\n\nexport default (data: any[], name: string): any[] => {\n const rst = [];\n const tmpMap = {};\n\n for (let i = 0; i < data.length; i++) {\n const obj = data[i];\n let value = obj[name] as string[];\n\n if (!isNil(value)) {\n // flatten\n if (!isArray(value)) {\n value = [ value ];\n }\n for (let j = 0; j < value.length; j++) {\n const val = value[j];\n // unique\n if (!tmpMap[val]) {\n rst.push(val);\n tmpMap[val] = true;\n }\n }\n }\n }\n\n return rst;\n};\n","import isArrayLike from './is-array-like';\n\nexport default function head(o: unknown) {\n if (isArrayLike(o)) {\n return (>o)[0];\n }\n return undefined;\n}\n","import isArrayLike from './is-array-like';\n\nexport default function last(o: unknown) {\n if (isArrayLike(o)) {\n const arr = o as ArrayLike;\n return arr[arr.length - 1];\n }\n return undefined;\n}\n","/**\n * 只要有一个不满足条件就返回 false\n * @param arr\n * @param func\n */\nconst every = function (arr: T[], func: (v: T, idx?: number) => any): boolean {\n for (let i = 0; i < arr.length; i ++) {\n if (!func(arr[i], i)) return false;\n }\n\n return true;\n};\n\nexport default every;\n","/**\n * 只要有一个满足条件就返回 true\n * @param arr\n * @param func\n */\nconst some = function (arr: T[], func: (v: T, idx?: number) => any): boolean {\n for (let i = 0; i < arr.length; i ++) {\n if (func(arr[i], i)) return true;\n }\n\n return false;\n};\n\nexport default some;\n","import isArray from './is-array';\nimport isFunction from './is-function';\n\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\n\nexport interface ObjectType {\n [key: string]: T[];\n}\n\nfunction groupBy(data: T[], condition: (item: T) => string): ObjectType;\nfunction groupBy(data: T[], condition: string): ObjectType;\nfunction groupBy(data: T[], condition: ((item: T) => string) | string): ObjectType {\n if (!condition || !isArray(data)) {\n return {};\n }\n const result: ObjectType = {};\n\n // 兼容方法和 字符串的写法\n const predicate = isFunction(condition) ? condition : (item) => item[condition];\n\n let key: string;\n for (let i = 0; i < data.length; i++) {\n const item = data[i];\n key = predicate(item);\n if (hasOwnProperty.call(result, key)) {\n result[key].push(item);\n } else {\n result[key] = [ item ];\n }\n }\n\n return result;\n}\n\nexport default groupBy;\n","const clamp = function(a: number, min: number, max: number): number {\n if (a < min) {\n return min;\n } else if (a > max) {\n return max;\n }\n return a;\n};\n\nexport default clamp;\n","const fixedBase = function(v: number, base: number | string): number {\n const str = base.toString();\n const index = str.indexOf('.');\n if (index === -1) {\n return Math.round(v);\n }\n let length = str.substr(index + 1).length;\n if (length > 20) {\n length = 20;\n }\n return parseFloat(v.toFixed(length));\n};\n\nexport default fixedBase;\n","/**\n * 判断是否数字\n * @return {Boolean} 是否数字\n */\nimport isType from './is-type';\n\nconst isNumber = function(value: any): value is number {\n return isType(value, 'Number');\n};\nexport default isNumber;\n","import isNumber from './is-number';\n\nconst isInteger = Number.isInteger ? Number.isInteger : function(num: any): boolean {\n return isNumber(num) && num % 1 === 0;\n};\n\nexport default isInteger;\n","const PRECISION = 0.00001; // numbers less than this is considered as 0\n\nexport default function isNumberEqual(a: number, b: number, precision: number = PRECISION): boolean {\n return Math.abs((a - b)) < precision;\n};\n","import isNumber from './is-number';\n\nconst isPositive = function(num: any): boolean {\n return isNumber(num) && num > 0;\n};\n\nexport default isPositive;\n","import each from './each';\nimport isArray from './is-array';\nimport isFunction from './is-function';\n/**\n * @param {Array} arr The array to iterate over.\n * @param {Function} [fn] The iteratee invoked per element.\n * @return {*} 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 * maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\nexport default (arr: T[], fn: ((v: T) => number) | string): T | undefined => {\n if (!isArray(arr)) {\n return undefined;\n }\n\n let maxItem;\n let max = -Infinity;\n\n for (let i = 0; i < arr.length; i++) {\n const item = arr[i];\n const v = isFunction(fn) ? fn(item) : item[fn];\n \n if (v > max) {\n maxItem = item;\n max = v;\n }\n }\n\n return maxItem;\n};\n","const mod = function(n: number, m: number): number {\n return ((n % m) + m) % m;\n};\n\nexport default mod;\n","const DEGREE = 180 / Math.PI;\n\nconst toDegree = function(radian: number): number {\n return DEGREE * radian;\n};\n\nexport default toDegree;\n","const RADIAN = Math.PI / 180;\n\nconst toRadian = function(degree: number): number {\n return RADIAN * degree;\n};\n\nexport default toRadian;\n","import each from './each';\n\nexport default each;\n","import has from './has';\nexport default has;\n","export default (obj: object, key: any): boolean => obj.hasOwnProperty(key);\n","import each from './each';\nimport isFunction from './is-function';\n\n// @ts-ignore\nconst values = Object.values ? obj => Object.values(obj) : obj => {\n const result = [];\n each(obj, (value, key) => {\n if (!(isFunction(obj) && key === 'prototype')) {\n result.push(value);\n }\n });\n return result;\n};\n\nexport default values;\n","import isNil from './is-nil';\n\nexport default (value: any): string => {\n if (isNil(value)) return '';\n return value.toString();\n}\n","import toString from './to-string';\n\nconst lowerCase = function(str: string): string {\n return toString(str).toLowerCase();\n};\n\nexport default lowerCase;\n","export interface ObjectType {\n [key: string]: T;\n}\n\nfunction substitute (str: string, o: ObjectType) {\n if (!str || !o) {\n return str;\n }\n return str.replace(/\\\\?\\{([^{}]+)\\}/g, (match, name): any => {\n if (match.charAt(0) === '\\\\') {\n return match.slice(1);\n }\n return (o[name] === undefined) ? '' : o[name];\n });\n}\n\nexport default substitute;\n","import toString from './to-string';\n\nconst upperFirst = function(value: string): string {\n const str = toString(value);\n return str.charAt(0).toUpperCase() + str.substring(1);\n};\n\nexport default upperFirst;\n","const toString = {}.toString;\n\nconst getType = function(value: any): string {\n return toString.call(value).replace(/^\\[object /, '').replace(/]$/, '');\n};\n\nexport default getType;\n","/**\n * 是否是布尔类型\n *\n * @param {Object} value 测试的值\n * @return {Boolean}\n */\nimport isType from './is-type';\n\nconst isBoolean = function(value: any): value is boolean {\n return isType(value, 'Boolean');\n};\n\nexport default isBoolean;\n","import isType from './is-type';\n\nconst isDate = function(value: any): value is Date {\n return isType(value, 'Date');\n};\n\nexport default isDate;\n","const isNull = function(value): value is null {\n return value === null;\n};\n\nexport default isNull;\n","const objectProto = Object.prototype;\n\nconst isPrototype = function(value: any): boolean {\n const Ctor = value && value.constructor;\n const proto = (typeof Ctor === 'function' && Ctor.prototype) || objectProto;\n return value === proto;\n};\n\nexport default isPrototype;\n","const isUndefined = function(value: any): value is undefined {\n return value === undefined;\n};\n\nexport default isUndefined;\n","/**\n * 判断是否HTML元素\n * @return {Boolean} 是否HTML元素\n */\nconst isElement = function(o: any): boolean {\n return o instanceof Element || o instanceof HTMLDocument;\n};\nexport default isElement;\n","import isArray from './is-array';\n\nconst clone = function(obj) {\n if (typeof obj !== 'object' || obj === null) {\n return obj;\n }\n let rst;\n if (isArray(obj)) {\n rst = [];\n for (let i = 0, l = obj.length; i < l; i++) {\n if (typeof obj[i] === 'object' && obj[i] != null) {\n rst[i] = clone(obj[i]);\n } else {\n rst[i] = obj[i];\n }\n }\n } else {\n rst = {};\n for (const k in obj) {\n if (typeof obj[k] === 'object' && obj[k] != null) {\n rst[k] = clone(obj[k]);\n } else {\n rst[k] = obj[k];\n }\n }\n }\n\n return rst;\n};\n\nexport default clone;\n","\nfunction debounce(func: Function, wait?: number, immediate?: boolean) {\n let timeout;\n return function() {\n const context = this,\n args = arguments;\n const later = function() {\n timeout = null;\n if (!immediate) {\n func.apply(context, args);\n }\n };\n const callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) {\n func.apply(context, args);\n }\n };\n}\n\nexport default debounce;\n","import isFunction from './is-function';\n\n/**\n * _.memoize(calColor);\n * _.memoize(calColor, (...args) => args[0]);\n * @param f\n * @param resolver\n */\nexport default (f: Function, resolver?: (...args: any[]) => string) => {\n if (!isFunction(f)) {\n throw new TypeError('Expected a function')\n }\n\n const memoized = function(...args) {\n // 使用方法构造 key,如果不存在 resolver,则直接取第一个参数作为 key\n const key = resolver ? resolver.apply(this, args) : args[0];\n const cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key)\n }\n const result = f.apply(this, args);\n // 缓存起来\n cache.set(key, result);\n return result\n };\n\n memoized.cache = new Map();\n\n return memoized\n}\n","import isArray from './is-array';\nimport isPlainObject from './is-plain-object';\n\nconst MAX_MIX_LEVEL = 5;\n\nfunction _deepMix(dist, src, level?, maxLevel?) {\n level = level || 0;\n maxLevel = maxLevel || MAX_MIX_LEVEL;\n for (const key in src) {\n if (src.hasOwnProperty(key)) {\n const value = src[key];\n if (value !== null && isPlainObject(value)) {\n if (!isPlainObject(dist[key])) {\n dist[key] = {};\n }\n if (level < maxLevel) {\n _deepMix(dist[key], value, level + 1, maxLevel);\n } else {\n dist[key] = src[key];\n }\n } else if (isArray(value)) {\n dist[key] = [];\n dist[key] = dist[key].concat(value);\n } else if (value !== undefined) {\n dist[key] = value;\n }\n }\n }\n}\n\n// todo 重写\nconst deepMix = function(rst:any, ...args:any[]) {\n for (let i = 0; i < args.length; i += 1) {\n _deepMix(rst, args[i]);\n }\n return rst;\n};\n\nexport default deepMix;\n","import isArrayLike from './is-array-like';\n\nconst indexOf = function (arr: T[], obj: T): number {\n if (!isArrayLike(arr)) {\n return -1;\n }\n const m = Array.prototype.indexOf;\n if (m) {\n return m.call(arr, obj);\n }\n let index = -1;\n\n for (let i = 0; i < arr.length; i++) {\n if (arr[i] === obj) {\n index = i;\n break;\n }\n }\n return index;\n};\n\nexport default indexOf;\n","import isNil from './is-nil';\nimport isArrayLike from './is-array-like';\nimport getType from './get-type';\nimport isPrototype from './is-prototype';\n\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction isEmpty(value: any): boolean {\n /**\n * isEmpty(null) => true\n * isEmpty() => true\n * isEmpty(true) => true\n * isEmpty(1) => true\n * isEmpty([1, 2, 3]) => false\n * isEmpty('abc') => false\n * isEmpty({ a: 1 }) => false\n */\n if (isNil(value)) {\n return true;\n }\n if (isArrayLike(value)) {\n return !value.length;\n }\n const type = getType(value);\n if (type === 'Map' || type === 'Set') {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !Object.keys(value).length;\n }\n for (const key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n\nexport default isEmpty;\n","import isObjectLike from './is-object-like';\nimport isArrayLike from './is-array-like';\nimport isString from './is-string';\n\nconst isEqual = (value: any, other: any): boolean => {\n if (value === other) {\n return true;\n }\n if (!value || !other) {\n return false;\n }\n if (isString(value) || isString(other)) {\n return false;\n }\n if (isArrayLike(value) || isArrayLike(other)) {\n if (value.length !== other.length) {\n return false;\n }\n let rst = true;\n for (let i = 0; i < value.length; i++) {\n rst = isEqual(value[i], other[i]);\n if (!rst) {\n break;\n }\n }\n return rst;\n }\n if (isObjectLike(value) || isObjectLike(other)) {\n const valueKeys = Object.keys(value);\n const otherKeys = Object.keys(other);\n if (valueKeys.length !== otherKeys.length) {\n return false;\n }\n let rst = true;\n for (let i = 0; i < valueKeys.length; i++) {\n rst = isEqual(value[valueKeys[i]], other[valueKeys[i]]);\n if (!rst) {\n break;\n }\n }\n return rst;\n }\n return false;\n};\n\nexport default isEqual;\n","import isArrayLike from './is-array-like';\n\nconst map = (arr: T[], func: (v: T, idx: number) => G): G[] => {\n if (!isArrayLike(arr)) {\n // @ts-ignore\n return arr;\n }\n const result: G[] = [];\n\n for (let index = 0; index < arr.length; index++) {\n const value = arr[index];\n result.push(func(value, index));\n }\n return result;\n};\n\nexport default map;\n","// FIXME: Mutable param should be forbidden in static lang.\nfunction _mix(dist: Base & Source, obj: Source): void {\n for (const key in obj) {\n if (obj.hasOwnProperty(key) && key !== 'constructor' && obj[key] !== undefined) {\n (dist)[key] = obj[key];\n }\n }\n}\n\nexport default function mix(dist: Base & A & B & C, src1?: A, src2?: B, src3?: C): Base & A & B & C {\n if (src1) _mix(dist, src1);\n if (src2) _mix(dist, src2);\n if (src3) _mix(dist, src3);\n return dist;\n}\n","import isString from './is-string';\n/**\n * https://github.com/developit/dlv/blob/master/index.js\n * @param obj\n * @param key\n * @param defaultValue\n */\nexport default (obj: any, key: string | any[], defaultValue?: any): any => {\n let p = 0;\n\n const keyArr = isString(key) ? key.split('.') : key;\n\n while (obj && p < keyArr.length) {\n obj = obj[keyArr[p++]];\n }\n\n return (obj === undefined || p < keyArr.length) ? defaultValue : obj;\n}\n","import isObject from './is-object';\nimport isString from './is-string';\nimport isNumber from './is-number';\n\n/**\n * https://github.com/developit/dlv/blob/master/index.js\n * @param obj\n * @param path\n * @param value\n */\nexport default (obj: any, path: string | any[], value: any): any => {\n let o = obj;\n\n const keyArr = isString(path) ? path.split('.') : path;\n\n keyArr.forEach((key: string | number, idx: number) => {\n // 不是最后一个\n if (idx < keyArr.length - 1) {\n if (!isObject(o[key])) {\n o[key] = isNumber(keyArr[idx + 1]) ? [] : {};\n }\n o = o[key]\n } else {\n o[key] = value;\n }\n });\n\n return obj;\n}\n","import each from './each';\nimport isPlainObject from './is-plain-object';\n\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\n/**\n * Creates an object composed of the picked `object` properties.\n *\n * @param {Object} object The source object.\n * @param {...(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 * pick(object, ['a', 'c']); // => { 'a': 1, 'c': 3 }\n */\n\nexport interface ObjectType {\n [key: string]: T;\n}\n\nexport default (object: ObjectType, keys: string[]): ObjectType => {\n if (object === null || !isPlainObject(object)) {\n return {};\n }\n const result: ObjectType = {};\n each(keys, key => {\n if (hasOwnProperty.call(object, key)) {\n result[key] = object[key];\n }\n });\n return result;\n};\n","import reduce from './reduce';\nimport { ObjectType } from './types';\n\nexport default (obj: ObjectType, keys: string[]): ObjectType => {\n return reduce(\n obj,\n (r: ObjectType, curr: T, key: string) => {\n if (!keys.includes(key)) {\n r[key] = curr;\n }\n return r;\n },\n {}\n );\n}\n","export interface OptionsType {\n leading?: boolean;\n trailing?: boolean;\n}\n\nexport default (func: Function, wait: number, options: OptionsType): Function => {\n let timeout,\n context,\n args,\n result;\n let previous = 0;\n if (!options) options = {};\n\n const later = function() {\n previous = options.leading === false ? 0 : Date.now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n const throttled = function() {\n const now = Date.now();\n if (!previous && options.leading === false) previous = now;\n const remaining = wait - (now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n}\n","const map = {};\n\nexport default (prefix?: string): string => {\n prefix = prefix || 'g';\n if (!map[prefix]) {\n map[prefix] = 1;\n } else {\n map[prefix] += 1;\n }\n return prefix + map[prefix];\n};\n","export default () => {};\n","import isNil from './is-nil';\nimport isArraylike from './is-array-like';\n\nexport default function size(o: unknown) {\n if (isNil(o)) {\n return 0;\n }\n if (isArraylike(o)) {\n return (>o).length;\n }\n return Object.keys(o).length;\n}\n","import values from './values';\nimport memoize from './memoize';\nimport isString from './is-string';\nimport type { Properties } from 'csstype';\n\nexport type Font = Pick & {\n fontSize?: number;\n};\n\nlet ctx: CanvasRenderingContext2D;\n\n/**\n * 计算文本的宽度\n */\nexport default memoize(\n (text: any, font: Font = {}): number => {\n const { fontSize, fontFamily, fontWeight, fontStyle, fontVariant } = font;\n if (!ctx) {\n ctx = document.createElement('canvas').getContext('2d') as CanvasRenderingContext2D;\n }\n ctx!.font = [fontStyle, fontVariant, fontWeight, `${fontSize}px`, fontFamily].join(' ');\n return ctx!.measureText(isString(text) ? text : '').width;\n },\n (text: any, font: Font = {}) => [text, ...values(font)].join('')\n);\n","import isString from './is-string';\nimport toString from './to-string';\nimport { Font, default as measureTextWidth } from './measure-text-width';\n\n/**\n * 获取文本的 ... 文本。\n * 算法(减少每次 measureText 的长度,measureText 的性能跟字符串时间相关):\n * 1. 先通过 STEP 逐步计算,找到最后一个小于 maxWidth 的字符串\n * 2. 然后对最后这个字符串二分计算\n * @param text 需要计算的文本, 由于历史原因 除了支持string,还支持空值,number和数组等\n * @param maxWidth 最大宽度\n * @param font 字体\n * @param str 要替换的文本\n */\nexport default (text: string | number, maxWidth: number, font?: Font, str: string = '...') => {\n const STEP = 16; // 每次 16,调参工程师\n const PLACEHOLDER_WIDTH = measureTextWidth(str, font);\n let leftText = !isString(text) ? toString(text) : text;\n\n let leftWidth = maxWidth;\n\n const r = []; // 最终的分段字符串\n let currentText;\n let currentWidth;\n\n if (measureTextWidth(text, font) <= maxWidth) {\n return text;\n }\n\n // 首先通过 step 计算,找出最大的未超出长度的\n // eslint-disable-next-line no-constant-condition\n while (true) {\n // 更新字符串\n currentText = leftText.substr(0, STEP);\n // 计算宽度\n currentWidth = measureTextWidth(currentText, font);\n // 超出剩余宽度,则停止\n if (currentWidth + PLACEHOLDER_WIDTH > leftWidth) {\n if (currentWidth > leftWidth) {\n break;\n }\n }\n\n r.push(currentText);\n // 没有超出,则计算剩余宽度\n leftWidth -= currentWidth;\n leftText = leftText.substr(STEP);\n // 字符串整体没有超出\n if (!leftText) {\n return r.join('');\n }\n }\n\n // 最下的最后一个 STEP,使用 1 递增(用二分效果更高)\n // eslint-disable-next-line no-constant-condition\n while (true) {\n // 更新字符串\n currentText = leftText.substr(0, 1);\n // 计算宽度\n currentWidth = measureTextWidth(currentText, font);\n // 超出剩余宽度,则停止\n if (currentWidth + PLACEHOLDER_WIDTH > leftWidth) {\n break;\n }\n r.push(currentText);\n // 没有超出,则计算剩余宽度\n leftWidth -= currentWidth;\n leftText = leftText.substr(1);\n\n if (!leftText) {\n return r.join('');\n }\n }\n return `${r.join('')}${str}`;\n};\n","/**\n * k-v 存储\n */\nexport default class {\n map: { [key: string]: T } = {};\n\n has(key: string): boolean {\n return this.map[key] !== undefined;\n }\n\n get(key: string, def?: T): T | undefined {\n const v = this.map[key];\n return v === undefined ? def : v;\n }\n\n set(key: string, value: T): void {\n this.map[key] = value;\n }\n\n clear() {\n this.map = {};\n }\n\n delete(key: string) {\n delete this.map[key];\n }\n\n size(): number {\n return Object.keys(this.map).length;\n }\n}\n","/**\n * view 中三层 group 分层 key\n */\nexport enum LAYER {\n /** 前景层 */\n FORE = 'fore',\n /** 中间层 */\n MID = 'mid',\n /** 背景层 */\n BG = 'bg',\n}\n\n/**\n * 组件在画布的布局方位 12 方位\n */\nexport enum DIRECTION {\n TOP = 'top',\n TOP_LEFT = 'top-left',\n TOP_RIGHT = 'top-right',\n RIGHT = 'right',\n RIGHT_TOP = 'right-top',\n RIGHT_BOTTOM = 'right-bottom',\n LEFT = 'left',\n LEFT_TOP = 'left-top',\n LEFT_BOTTOM = 'left-bottom',\n BOTTOM = 'bottom',\n BOTTOM_LEFT = 'bottom-left',\n BOTTOM_RIGHT = 'bottom-right',\n RADIUS = 'radius',\n CIRCLE = 'circle',\n // no direction information\n NONE = 'none',\n}\n\n/**\n * 组件的类型,可能会影响到布局算法\n */\nexport enum COMPONENT_TYPE {\n /** axis 组件 */\n AXIS = 'axis',\n /** grid 组件 */\n GRID = 'grid',\n /** legend 组件 */\n LEGEND = 'legend',\n /** tooltip 组件 */\n TOOLTIP = 'tooltip',\n /** annotation 组件 */\n ANNOTATION = 'annotation',\n /** 缩略轴组件 */\n SLIDER = 'slider',\n /** 滚动条组件 */\n SCROLLBAR = 'scrollbar',\n /** 其他组件,自定义组件 */\n OTHER = 'other',\n}\n\n/**\n * 三层 group 的 z index\n */\nexport const GROUP_Z_INDEX = {\n FORE: 3,\n MID: 2,\n BG: 1,\n};\n\n/**\n * View 的生命周期阶段(和 3.x 的生命周期略有不同)\n * 我们需要先确定在那写场景需要用到生命周期,如果只是为了在生命周期插入一下什么组件之类的,那么在现有架构就是不需要的\n */\nexport enum VIEW_LIFE_CIRCLE {\n BEFORE_RENDER = 'beforerender',\n AFTER_RENDER = 'afterrender',\n\n BEFORE_PAINT = 'beforepaint',\n AFTER_PAINT = 'afterpaint',\n\n BEFORE_CHANGE_DATA = 'beforechangedata',\n AFTER_CHANGE_DATA = 'afterchangedata',\n\n BEFORE_CLEAR = 'beforeclear',\n AFTER_CLEAR = 'afterclear',\n\n BEFORE_DESTROY = 'beforedestroy',\n\n BEFORE_CHANGE_SIZE = 'beforechangesize',\n AFTER_CHANGE_SIZE = 'afterchangesize',\n}\n\n/**\n * geometry 的生命周期\n */\nexport enum GEOMETRY_LIFE_CIRCLE {\n BEFORE_DRAW_ANIMATE = 'beforeanimate',\n AFTER_DRAW_ANIMATE = 'afteranimate',\n\n BEFORE_RENDER_LABEL = 'beforerenderlabel',\n AFTER_RENDER_LABEL = 'afterrenderlabel',\n}\n\n/**\n * 绘图区的事件列表\n */\nexport enum PLOT_EVENTS {\n // mouse 事件\n MOUSE_ENTER = 'plot:mouseenter',\n MOUSE_DOWN = 'plot:mousedown',\n MOUSE_MOVE = 'plot:mousemove',\n MOUSE_UP = 'plot:mouseup',\n MOUSE_LEAVE = 'plot:mouseleave',\n // 移动端事件\n TOUCH_START = 'plot:touchstart',\n TOUCH_MOVE = 'plot:touchmove',\n TOUCH_END = 'plot:touchend',\n TOUCH_CANCEL = 'plot:touchcancel',\n // click 事件\n CLICK = 'plot:click',\n DBLCLICK = 'plot:dblclick',\n CONTEXTMENU = 'plot:contextmenu',\n\n LEAVE = 'plot:leave',\n ENTER = 'plot:enter',\n}\n\n/**\n * Element 图形交互状态\n */\nexport enum ELEMENT_STATE {\n ACTIVE = 'active',\n INACTIVE = 'inactive',\n SELECTED = 'selected',\n DEFAULT = 'default',\n}\n\n/** 参与分组的图形属性名 */\nexport const GROUP_ATTRS = ['color', 'shape', 'size'];\n/** 存储原始数据的字段名 */\nexport const FIELD_ORIGIN = '_origin';\n/** 最小的图表宽度 */\nexport const MIN_CHART_WIDTH = 1;\n/** 最小的图表高度 */\nexport const MIN_CHART_HEIGHT = 1;\n/** 辅助组件占图表的尺寸的最大比例:如图表上方的图例最多占图表高度的25% */\nexport const COMPONENT_MAX_VIEW_PERCENTAGE = 0.25;\n","/**\n * 创建DOM 节点\n * @param {String} str Dom 字符串\n * @return {HTMLElement} DOM 节点\n */\n\nlet TABLE:HTMLTableElement;\nlet TABLE_TR:HTMLTableRowElement;\nlet FRAGMENT_REG:RegExp;\nlet CONTAINERS:{\n '*': HTMLDivElement;\n [key:string]: any;\n};\n\nfunction initConstants() {\n TABLE = document.createElement('table');\n TABLE_TR = document.createElement('tr');\n FRAGMENT_REG = /^\\s*<(\\w+|!)[^>]*>/;\n CONTAINERS = {\n tr: document.createElement('tbody'),\n tbody: TABLE,\n thead: TABLE,\n tfoot: TABLE,\n td: TABLE_TR,\n th: TABLE_TR,\n '*': document.createElement('div'),\n };\n}\n\nexport default function createDom(str:string): any {\n if (!TABLE) {\n initConstants();\n }\n let name = FRAGMENT_REG.test(str) && RegExp.$1;\n if (!name || !(name in CONTAINERS)) {\n name = '*';\n }\n const container = CONTAINERS[name];\n str = typeof str === 'string' ? str.replace(/(^\\s*)|(\\s*$)/g, '') : str;\n container.innerHTML = '' + str;\n const dom = container.childNodes[0];\n if (dom && container.contains(dom)) {\n container.removeChild(dom);\n }\n return dom;\n}\n","import { IG } from '../dependents';\n\nconst ENGINES: Record = {};\n\n/**\n * 通过名字获取渲染 engine\n * @param name 渲染引擎名字\n * @returns G engine\n */\nexport function getEngine(name: string): IG {\n const G = ENGINES[name];\n\n if (!G) {\n throw new Error(`G engine '${name}' is not exist, please register it at first.`);\n }\n\n return G;\n}\n\n/**\n * 注册渲染引擎\n * @param name\n * @param engine\n */\nexport function registerEngine(name: string, engine: IG) {\n ENGINES[name] = engine;\n}\n","export default function modifyCSS(dom: HTMLElement, css: { [key:string]: any }): HTMLElement {\n if (dom) {\n for (const key in css) {\n if (css.hasOwnProperty(key)) {\n dom.style[key] = css[key];\n }\n }\n }\n return dom;\n}\n","import { MIN_CHART_HEIGHT, MIN_CHART_WIDTH } from '../constant';\nimport { Size } from '../interface';\n\n/**\n * get the element's bounding size\n * @param ele dom element\n * @returns the element width and height\n */\nfunction getElementSize(ele: HTMLElement): Size {\n const style = getComputedStyle(ele);\n\n return {\n width:\n (ele.clientWidth || parseInt(style.width, 10)) -\n parseInt(style.paddingLeft, 10) -\n parseInt(style.paddingRight, 10),\n height:\n (ele.clientHeight || parseInt(style.height, 10)) -\n parseInt(style.paddingTop, 10) -\n parseInt(style.paddingBottom, 10),\n };\n}\n\n/**\n * is value a valid number\n * @param v the input value\n * @returns whether it is a number\n */\nfunction isNumber(v: any): boolean {\n return typeof v === 'number' && !isNaN(v);\n}\n\n/**\n * @ignore\n * calculate the chart size\n * @param ele DOM element\n * @param autoFit should auto fit\n * @param width chart width which is set by user\n * @param height chart height which is set by user\n * @returns the chart width and height\n */\nexport function getChartSize(ele: HTMLElement, autoFit: boolean, width: number, height: number): Size {\n let w = width;\n let h = height;\n\n if (autoFit) {\n const size = getElementSize(ele);\n\n w = size.width ? size.width : w;\n h = size.height ? size.height : h;\n }\n\n return {\n width: Math.max(isNumber(w) ? w : MIN_CHART_WIDTH, MIN_CHART_WIDTH),\n height: Math.max(isNumber(h) ? h : MIN_CHART_HEIGHT, MIN_CHART_HEIGHT),\n };\n}\n\n/**\n * @ignore\n * remove html element from its parent\n * @param dom\n */\nexport function removeDom(dom: HTMLElement) {\n const parent = dom.parentNode;\n\n if (parent) {\n parent.removeChild(dom);\n }\n}\n\n/** @ignore */\nexport { createDom, modifyCSS } from '@antv/dom-util';\n","import EE from '@antv/event-emitter';\n\ninterface BaseCfg {\n visible?: boolean;\n}\n\n/**\n * G2 Chart、View、Geometry 以及 Element 等的基类,提供事件以及一些通用的方法。\n */\nexport default class Base extends EE {\n /** 是否可见 */\n public visible: boolean;\n /** 标识对象是否已销毁 */\n public destroyed: boolean = false;\n\n constructor(cfg: BaseCfg) {\n super();\n const { visible = true } = cfg;\n this.visible = visible;\n }\n\n /**\n * 显示。\n */\n public show() {\n const visible = this.visible;\n if (!visible) {\n this.changeVisible(true);\n }\n }\n\n /**\n * 隐藏。\n */\n public hide() {\n const visible = this.visible;\n if (visible) {\n this.changeVisible(false);\n }\n }\n\n /**\n * 销毁。\n */\n public destroy() {\n this.off();\n this.destroyed = true;\n }\n\n /**\n * 显示或者隐藏。\n * @param visible\n * @returns\n */\n public changeVisible(visible: boolean) {\n if (this.visible === visible) {\n return;\n }\n this.visible = visible;\n }\n}\n","const toString = {}.toString;\n\nconst isType = (value: any, type: string): boolean => toString.call(value) === '[object ' + type + ']';\n\nexport default isType;\n","/**\n * 是否为函数\n * @param {*} fn 对象\n * @return {Boolean} 是否函数\n */\nimport isType from './is-type';\n\nexport default (value: any): value is Function => {\n return isType(value, 'Function');\n};\n","import isType from './is-type';\n\nexport default (value: any): value is Array => {\n return Array.isArray ?\n Array.isArray(value) :\n isType(value, 'Array');\n}\n","export default (value: any): value is T => {\n /**\n * isObject({}) => true\n * isObject([1, 2, 3]) => true\n * isObject(Function) => true\n * isObject(null) => false\n */\n const type = typeof value;\n return value !== null && type === 'object' || type === 'function';\n};\n","import isArray from './is-array';\nimport isObject from './is-object';\n\nfunction each (elements: any[] | object, func: (v: any, k: any) => any): void {\n if (!elements) {\n return;\n }\n let rst;\n if (isArray(elements)) {\n for (let i = 0, len = elements.length; i < len; i++) {\n rst = func(elements[i], i);\n if (rst === false) {\n break;\n }\n }\n } else if (isObject(elements)) {\n for (const k in elements) {\n if (elements.hasOwnProperty(k)) {\n rst = func(elements[k], k);\n if (rst === false) {\n break;\n }\n }\n }\n }\n}\n\nexport default each;\n","import each from './each';\nimport isFunction from './is-function';\n\nconst keys = Object.keys ? obj => Object.keys(obj) : obj => {\n const result = [];\n each(obj, (value, key) => {\n if (!(isFunction(obj) && key === 'prototype')) {\n result.push(key);\n }\n });\n return result;\n};\n\nexport default keys;\n","import isArray from './is-array';\n\n/**\n * Flattens `array` a single level deep.\n *\n * @param {Array} arr The array to flatten.\n * @return {Array} Returns the new flattened array.\n * @example\n *\n * flatten([1, [2, [3, [4]], 5]]); // => [1, 2, [3, [4]], 5]\n */\nconst flatten = function (arr: T[]): T[] {\n if (!isArray(arr)) {\n return [];\n }\n let rst: T[] = [];\n for (let i = 0; i < arr.length; i++) {\n rst = rst.concat(arr[i]);\n }\n return rst;\n};\n\nexport default flatten;\n","const arrPrototype = Array.prototype;\nconst splice = arrPrototype.splice;\nconst indexOf = arrPrototype.indexOf;\n\nconst pull = function(arr: T[], ...values: any[]): T[] {\n for (let i = 0; i < values.length; i++) {\n const value = values[i];\n let fromIndex = -1;\n while ((fromIndex = indexOf.call(arr, value)) > -1) {\n splice.call(arr, fromIndex, 1);\n }\n }\n return arr;\n};\n\nexport default pull;\n","import isArrayLike from './is-array-like';\n\nconst splice = Array.prototype.splice;\n\nconst pullAt = function pullAt (arr: T[], indexes: number[]): T[] {\n if (!isArrayLike(arr)) {\n return [];\n }\n let length = arr ? indexes.length : 0;\n const last = length - 1;\n\n while (length--) {\n let previous;\n const index = indexes[length];\n if (length === last || index !== previous) {\n previous = index;\n splice.call(arr, index, 1);\n }\n }\n return arr;\n};\n\nexport default pullAt;\n","import isArrayLike from './is-array-like';\nimport pullAt from './pull-at';\n\nconst remove = function(arr: T[], predicate: (value: T, idx: number, arr?: T[]) => boolean): T[] {\n /**\n * const arr = [1, 2, 3, 4]\n * const evens = remove(arr, n => n % 2 == 0)\n * console.log(arr) // => [1, 3]\n * console.log(evens) // => [2, 4]\n */\n const result = [];\n if (!isArrayLike(arr)) {\n return result;\n }\n let i = -1;\n const indexes = [];\n const length = arr.length;\n\n while (++i < length) {\n const value = arr[i];\n if (predicate(value, i, arr)) {\n result.push(value);\n indexes.push(i);\n }\n }\n pullAt(arr, indexes);\n return result;\n};\n\nexport default remove;\n","import isType from './is-type';\n\nexport default (str: any): str is string => {\n return isType(str, 'String');\n}\n","// isFinite,\nconst isNil = function(value: any): value is null | undefined {\n /**\n * isNil(null) => true\n * isNil() => true\n */\n return value === null || value === undefined;\n};\n\nexport default isNil;\n","import isArray from './is-array';\nimport isNil from './is-nil';\n\nexport default (data: any[], name: string): any[] => {\n const rst = [];\n const tmpMap = {};\n\n for (let i = 0; i < data.length; i++) {\n const obj = data[i];\n let value = obj[name] as string[];\n\n if (!isNil(value)) {\n // flatten\n if (!isArray(value)) {\n value = [ value ];\n }\n for (let j = 0; j < value.length; j++) {\n const val = value[j];\n // unique\n if (!tmpMap[val]) {\n rst.push(val);\n tmpMap[val] = true;\n }\n }\n }\n }\n\n return rst;\n};\n","import isArray from './is-array';\nimport isFunction from './is-function';\n\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\n\nexport interface ObjectType {\n [key: string]: T[];\n}\n\nfunction groupBy(data: T[], condition: (item: T) => string): ObjectType;\nfunction groupBy(data: T[], condition: string): ObjectType;\nfunction groupBy(data: T[], condition: ((item: T) => string) | string): ObjectType {\n if (!condition || !isArray(data)) {\n return {};\n }\n const result: ObjectType = {};\n\n // 兼容方法和 字符串的写法\n const predicate = isFunction(condition) ? condition : (item) => item[condition];\n\n let key: string;\n for (let i = 0; i < data.length; i++) {\n const item = data[i];\n key = predicate(item);\n if (hasOwnProperty.call(result, key)) {\n result[key].push(item);\n } else {\n result[key] = [ item ];\n }\n }\n\n return result;\n}\n\nexport default groupBy;\n","import groupToMap from './group-to-map';\n\nexport default (data: T[], condition: ((v: T) => string) | string | string[]): T[][] => {\n if (!condition) {\n // 没有条件,则自身改成数组\n return [ data ];\n }\n const groups = groupToMap(data, condition) as { [key: string]: T };\n const array = [];\n for (const i in groups) {\n array.push(groups[i]);\n }\n return array;\n};\n","import isArray from './is-array';\nimport isFunction from './is-function';\nimport groupBy from './group-by';\n\n/**\n * 将数据分组成 map\n * @param data \n * @param condition \n */\nexport default function groupToMap(data: any, condition: string[] | string | ((row: any) => string)) {\n if (!condition) {\n return {\n 0: data,\n };\n }\n if (!isFunction(condition)) {\n // 如果是字符串,则按照 a*b 风格成数组\n const paramscondition = isArray(condition) ? condition : condition.replace(/\\s+/g, '').split('*');\n condition = function (row) {\n let unique = '_'; // 避免出现数字作为Key的情况,会进行按照数字的排序\n \n // 根据字段列表的值,拼接成 key\n for (let i = 0, l = paramscondition.length; i < l; i++) {\n unique += row[paramscondition[i]] && row[paramscondition[i]].toString();\n }\n return unique;\n };\n }\n return groupBy(data, condition);\n}\n","/**\n * 判断是否数字\n * @return {Boolean} 是否数字\n */\nimport isType from './is-type';\n\nconst isNumber = function(value: any): value is number {\n return isType(value, 'Number');\n};\nexport default isNumber;\n","import isNumber from './is-number';\n\nconst isInteger = Number.isInteger ? Number.isInteger : function(num: any): boolean {\n return isNumber(num) && num % 1 === 0;\n};\n\nexport default isInteger;\n","const DEGREE = 180 / Math.PI;\n\nconst toDegree = function(radian: number): number {\n return DEGREE * radian;\n};\n\nexport default toDegree;\n","const RADIAN = Math.PI / 180;\n\nconst toRadian = function(degree: number): number {\n return RADIAN * degree;\n};\n\nexport default toRadian;\n","import each from './each';\nimport isFunction from './is-function';\n\n// @ts-ignore\nconst values = Object.values ? obj => Object.values(obj) : obj => {\n const result = [];\n each(obj, (value, key) => {\n if (!(isFunction(obj) && key === 'prototype')) {\n result.push(value);\n }\n });\n return result;\n};\n\nexport default values;\n","const objectProto = Object.prototype;\n\nconst isPrototype = function(value: any): boolean {\n const Ctor = value && value.constructor;\n const proto = (typeof Ctor === 'function' && Ctor.prototype) || objectProto;\n return value === proto;\n};\n\nexport default isPrototype;\n","import isArray from './is-array';\n\nconst clone = function(obj) {\n if (typeof obj !== 'object' || obj === null) {\n return obj;\n }\n let rst;\n if (isArray(obj)) {\n rst = [];\n for (let i = 0, l = obj.length; i < l; i++) {\n if (typeof obj[i] === 'object' && obj[i] != null) {\n rst[i] = clone(obj[i]);\n } else {\n rst[i] = obj[i];\n }\n }\n } else {\n rst = {};\n for (const k in obj) {\n if (typeof obj[k] === 'object' && obj[k] != null) {\n rst[k] = clone(obj[k]);\n } else {\n rst[k] = obj[k];\n }\n }\n }\n\n return rst;\n};\n\nexport default clone;\n","import isNil from './is-nil';\nimport isArrayLike from './is-array-like';\nimport getType from './get-type';\nimport isPrototype from './is-prototype';\n\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction isEmpty(value: any): boolean {\n /**\n * isEmpty(null) => true\n * isEmpty() => true\n * isEmpty(true) => true\n * isEmpty(1) => true\n * isEmpty([1, 2, 3]) => false\n * isEmpty('abc') => false\n * isEmpty({ a: 1 }) => false\n */\n if (isNil(value)) {\n return true;\n }\n if (isArrayLike(value)) {\n return !value.length;\n }\n const type = getType(value);\n if (type === 'Map' || type === 'Set') {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !Object.keys(value).length;\n }\n for (const key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n\nexport default isEmpty;\n","const isArrayLike = function(value: any): boolean {\n /**\n * isArrayLike([1, 2, 3]) => true\n * isArrayLike(document.body.children) => true\n * isArrayLike('abc') => true\n * isArrayLike(Function) => false\n */\n return value !== null && typeof value !== 'function' && isFinite(value.length);\n};\n\nexport default isArrayLike;\n","import isArrayLike from './is-array-like';\n\nconst map = (arr: T[], func: (v: T, idx: number) => G): G[] => {\n if (!isArrayLike(arr)) {\n // @ts-ignore\n return arr;\n }\n const result: G[] = [];\n\n for (let index = 0; index < arr.length; index++) {\n const value = arr[index];\n result.push(func(value, index));\n }\n return result;\n};\n\nexport default map;\n","import isNil from './is-nil';\nimport isObject from './is-object'\n\nconst identity = (v: T): T => v;\n\ninterface _Type {\n [key: string]: T;\n}\n\nexport default (object: { [key: string]: T }, func: (value: T, key: string) => any = identity): { [key: string]: any } => {\n const r: _Type = {};\n if (isObject(object) && !isNil(object)) {\n Object.keys(object).forEach(key => {\n // @ts-ignore\n r[key] = func(object[key], key);\n });\n }\n return r;\n}\n","// FIXME: Mutable param should be forbidden in static lang.\nfunction _mix(dist: Base & Source, obj: Source): void {\n for (const key in obj) {\n if (obj.hasOwnProperty(key) && key !== 'constructor' && obj[key] !== undefined) {\n (dist)[key] = obj[key];\n }\n }\n}\n\nexport default function mix(dist: Base & A & B & C, src1?: A, src2?: B, src3?: C): Base & A & B & C {\n if (src1) _mix(dist, src1);\n if (src2) _mix(dist, src2);\n if (src3) _mix(dist, src3);\n return dist;\n}\n","import isString from './is-string';\n/**\n * https://github.com/developit/dlv/blob/master/index.js\n * @param obj\n * @param key\n * @param defaultValue\n */\nexport default (obj: any, key: string | any[], defaultValue?: any): any => {\n let p = 0;\n\n const keyArr = isString(key) ? key.split('.') : key;\n\n while (obj && p < keyArr.length) {\n obj = obj[keyArr[p++]];\n }\n\n return (obj === undefined || p < keyArr.length) ? defaultValue : obj;\n}\n","import each from './each';\nimport isPlainObject from './is-plain-object';\n\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\n/**\n * Creates an object composed of the picked `object` properties.\n *\n * @param {Object} object The source object.\n * @param {...(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 * pick(object, ['a', 'c']); // => { 'a': 1, 'c': 3 }\n */\n\nexport interface ObjectType {\n [key: string]: T;\n}\n\nexport default (object: ObjectType, keys: string[]): ObjectType => {\n if (object === null || !isPlainObject(object)) {\n return {};\n }\n const result: ObjectType = {};\n each(keys, key => {\n if (hasOwnProperty.call(object, key)) {\n result[key] = object[key];\n }\n });\n return result;\n};\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","import values from './values';\nimport memoize from './memoize';\nimport isString from './is-string';\nimport type { Properties } from 'csstype';\n\nexport type Font = Pick & {\n fontSize?: number;\n};\n\nlet ctx: CanvasRenderingContext2D;\n\n/**\n * 计算文本的宽度\n */\nexport default memoize(\n (text: any, font: Font = {}): number => {\n const { fontSize, fontFamily, fontWeight, fontStyle, fontVariant } = font;\n if (!ctx) {\n ctx = document.createElement('canvas').getContext('2d') as CanvasRenderingContext2D;\n }\n ctx!.font = [fontStyle, fontVariant, fontWeight, `${fontSize}px`, fontFamily].join(' ');\n return ctx!.measureText(isString(text) ? text : '').width;\n },\n (text: any, font: Font = {}) => [text, ...values(font)].join('')\n);\n","import isFunction from './is-function';\n\n/**\n * _.memoize(calColor);\n * _.memoize(calColor, (...args) => args[0]);\n * @param f\n * @param resolver\n */\nexport default (f: Function, resolver?: (...args: any[]) => string) => {\n if (!isFunction(f)) {\n throw new TypeError('Expected a function')\n }\n\n const memoized = function(...args) {\n // 使用方法构造 key,如果不存在 resolver,则直接取第一个参数作为 key\n const key = resolver ? resolver.apply(this, args) : args[0];\n const cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key)\n }\n const result = f.apply(this, args);\n // 缓存起来\n cache.set(key, result);\n return result\n };\n\n memoized.cache = new Map();\n\n return memoized\n}\n","/**\n * k-v 存储\n */\nexport default class {\n map: { [key: string]: T } = {};\n\n has(key: string): boolean {\n return this.map[key] !== undefined;\n }\n\n get(key: string, def?: T): T | undefined {\n const v = this.map[key];\n return v === undefined ? def : v;\n }\n\n set(key: string, value: T): void {\n this.map[key] = value;\n }\n\n clear() {\n this.map = {};\n }\n\n delete(key: string) {\n delete this.map[key];\n }\n\n size(): number {\n return Object.keys(this.map).length;\n }\n}\n","export const DEFAULT_Y = 0; // 默认的 y 的值\n\n// 偏移之后,间距\nexport const MARGIN_RATIO = 1 / 2;\nexport const DODGE_RATIO = 1 / 2;\n\n// 散点分开之后,距离边界的距离\nexport const GAP = 0.05;\n","import * as _ from '@antv/util';\nimport { DEFAULT_Y } from '../constant';\nimport { AdjustCfg, Data, Range } from '../interface';\n\nexport type AdjustConstructor = new (cfg: any) => Adjust;\n\nexport interface DimValuesMapType {\n [dim: string]: number[];\n}\n\nexport default abstract class Adjust {\n /** 参与调整的维度 */\n public adjustNames: string[];\n /** x 维度对应的字段 */\n public xField: string;\n /** y 维度对应的字段 */\n public yField: string;\n\n // Dodge 属性\n /** 调整占单位宽度的比例,例如:占 2 个分类间距的 1 / 2 */\n public dodgeRatio: number;\n /** 调整过程中 2 个数据的间距,以 dodgeRatio 为分母 */\n public marginRatio: number;\n /** 指定进行 dodge 的字段 */\n public dodgeBy: string;\n /** 自定义 offset */\n public customOffset: ((data: any, range: any) => number) | number;\n\n // Stack 属性\n public height: number;\n public size: number;\n public reverseOrder: boolean;\n\n /** 像素级组间距 */\n public intervalPadding: number;\n /** 像素级组内间距 */\n public dodgePadding: number;\n /** x维度长度,计算归一化padding使用 */\n public xDimensionLegenth: number;\n /** 分组数 */\n public groupNum: number;\n\n // 图形宽度相关配置\n /** 用户配置宽度 */\n public defaultSize: number;\n /** 最大宽度约束 */\n public maxColumnWidth: number;\n /** 最小宽度约束 */\n public minColumnWidth: number;\n /** 宽度比例 */\n public columnWidthRatio: number;\n\n /** 用户自定义的dimValuesMap */\n public dimValuesMap: DimValuesMapType;\n\n constructor(cfg: AdjustCfg & { dimValuesMap?: DimValuesMapType }) {\n const { xField, yField, adjustNames = ['x', 'y'], dimValuesMap } = cfg;\n\n this.adjustNames = adjustNames;\n this.xField = xField;\n this.yField = yField;\n this.dimValuesMap = dimValuesMap;\n }\n\n // 需要各自实现的方法\n public abstract process(dataArray: Data[][]): Data[][];\n\n /**\n * 查看维度是否是 adjust 字段\n * @param dim\n */\n public isAdjust(dim: string): boolean {\n return this.adjustNames.indexOf(dim) >= 0;\n }\n\n protected getAdjustRange(dim: string, dimValue: number, values: number[]): Range {\n const { yField } = this;\n\n const index = values.indexOf(dimValue);\n const length = values.length;\n\n let pre;\n let next;\n\n // 没有 y 字段,但是需要根据 y 调整\n if (!yField && this.isAdjust('y')) {\n pre = 0;\n next = 1;\n } else if (length > 1) {\n // 如果以其开头,则取之,否则取他前面一个\n pre = values[index === 0 ? 0 : index - 1];\n // 如果以其结尾,则取之,否则取他后面一个\n next = values[index === length - 1 ? length - 1 : index + 1];\n\n if (index !== 0) {\n pre += (dimValue - pre) / 2;\n } else {\n pre -= (next - dimValue) / 2;\n }\n\n if (index !== length - 1) {\n next -= (next - dimValue) / 2;\n } else {\n next += (dimValue - values[length - 2]) / 2;\n }\n } else {\n pre = dimValue === 0 ? 0 : dimValue - 0.5;\n next = dimValue === 0 ? 1 : dimValue + 0.5;\n }\n\n return {\n pre,\n next,\n };\n }\n\n protected adjustData(groupedDataArray: Data[][], mergedData: Data[]) {\n // 所有调整维度的值数组\n const dimValuesMap = this.getDimValues(mergedData);\n\n // 按照每一个分组来进行调整\n _.each(groupedDataArray, (dataArray, index) => {\n // 遍历所有数据集合\n // 每个分组中,分别按照不同的 dim 进行调整\n _.each(dimValuesMap, (values: number[], dim: string) => {\n // 根据不同的度量分别调整位置\n this.adjustDim(dim, values, dataArray, index);\n });\n });\n }\n\n /**\n * 对数据进行分组adjustData\n * @param data 数据\n * @param dim 分组的字段\n * @return 分组结果\n */\n protected groupData(data: Data[], dim: string): { [dim: string]: Data[] } {\n // 补齐数据空数据为默认值\n _.each(data, (record: Data) => {\n if (record[dim] === undefined) {\n record[dim] = DEFAULT_Y;\n }\n });\n\n // 按照 dim 维度分组\n return _.groupBy(data, dim);\n }\n\n /** @override */\n protected adjustDim(dim: string, values: number[], data: Data[], index?: number): void {}\n\n /**\n * 获取可调整度量对应的值\n * @param mergedData 数据\n * @return 值的映射\n */\n private getDimValues(mergedData: Data[]): DimValuesMapType {\n const { xField, yField } = this;\n\n const dimValuesMap: DimValuesMapType = _.assign({}, this.dimValuesMap);\n\n // 所有的维度\n const dims = [];\n if (xField && this.isAdjust('x')) {\n dims.push(xField);\n }\n if (yField && this.isAdjust('y')) {\n dims.push(yField);\n }\n\n dims.forEach((dim: string): void => {\n if (dimValuesMap && dimValuesMap[dim]) {\n return;\n }\n // 在每个维度上,所有的值\n dimValuesMap[dim] = _.valuesOfKey(mergedData, dim).sort((v1, v2) => v1 - v2) as number[];\n });\n\n // 只有一维的情况下,同时调整 y,赋予默认值\n if (!yField && this.isAdjust('y')) {\n const dim = 'y';\n dimValuesMap[dim] = [DEFAULT_Y, 1]; // 默认分布在 y 轴的 0 与 1 之间\n }\n\n return dimValuesMap;\n }\n}\n","import Adjust, { AdjustConstructor } from './adjusts/adjust';\n\ninterface AdjustMapType {\n [type: string]: AdjustConstructor;\n}\n\nconst ADJUST_MAP: AdjustMapType = {};\n\n/**\n * 根据类型获取 Adjust 类\n * @param type\n */\nconst getAdjust = (type: string): AdjustConstructor => {\n return ADJUST_MAP[type.toLowerCase()];\n};\n\n/**\n * 注册自定义 Adjust\n * @param type\n * @param ctor\n */\nconst registerAdjust = (type: string, ctor: AdjustConstructor): void => {\n // 注册的时候,需要校验 type 重名,不区分大小写\n if (getAdjust(type)) {\n throw new Error(`Adjust type '${type}' existed.`);\n }\n // 存储到 map 中\n ADJUST_MAP[type.toLowerCase()] = ctor;\n};\n\nexport { getAdjust, registerAdjust, Adjust };\n\nexport * from './interface';\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import * as _ from '@antv/util';\nimport { DODGE_RATIO, MARGIN_RATIO } from '../constant';\nimport { Data, DodgeCfg, Range } from '../interface';\nimport Adjust from './adjust';\n\nexport default class Dodge extends Adjust {\n private cacheMap: { [key: string]: any } = {};\n private adjustDataArray: Data[][] = [];\n private mergeData: Data[] = [];\n\n constructor(cfg: DodgeCfg) {\n super(cfg);\n const {\n marginRatio = MARGIN_RATIO,\n dodgeRatio = DODGE_RATIO,\n dodgeBy,\n intervalPadding,\n dodgePadding,\n xDimensionLength,\n groupNum,\n defaultSize,\n maxColumnWidth,\n minColumnWidth,\n columnWidthRatio,\n customOffset\n } = cfg;\n this.marginRatio = marginRatio;\n this.dodgeRatio = dodgeRatio;\n this.dodgeBy = dodgeBy;\n this.intervalPadding = intervalPadding;\n this.dodgePadding = dodgePadding;\n this.xDimensionLegenth = xDimensionLength;\n this.groupNum = groupNum;\n this.defaultSize = defaultSize;\n this.maxColumnWidth = maxColumnWidth;\n this.minColumnWidth = minColumnWidth;\n this.columnWidthRatio = columnWidthRatio;\n this.customOffset = customOffset;\n }\n\n public process(groupDataArray: Data[][]): Data[][] {\n const groupedDataArray = _.clone(groupDataArray);\n // 将数据数组展开一层\n const mergeData = _.flatten(groupedDataArray);\n\n const { dodgeBy } = this;\n\n // 如果指定了分组 dim 的字段\n const adjustDataArray = dodgeBy ? _.group(mergeData, dodgeBy) : groupedDataArray;\n\n this.cacheMap = {};\n this.adjustDataArray = adjustDataArray;\n this.mergeData = mergeData;\n\n this.adjustData(adjustDataArray, mergeData);\n\n this.adjustDataArray = [];\n this.mergeData = [];\n\n return groupedDataArray;\n }\n\n protected adjustDim(dim: string, values: number[], data: Data[], frameIndex: number): any[] {\n const { customOffset } = this;\n const map = this.getDistribution(dim);\n const groupData = this.groupData(data, dim); // 根据值分组\n \n _.each(groupData, (group, key) => {\n let range: Range;\n\n // xField 中只有一个值,不需要做 dodge\n if (values.length === 1) {\n range = {\n pre: values[0] - 1,\n next: values[0] + 1,\n };\n } else {\n // 如果有多个,则需要获取调整的范围\n range = this.getAdjustRange(dim, parseFloat(key), values);\n }\n _.each(group, (d) => {\n const value = d[dim];\n const valueArr = map[value];\n const valIndex = valueArr.indexOf(frameIndex);\n if (!_.isNil(customOffset)) {\n const { pre, next } = range;\n d[dim] = _.isFunction(customOffset) ? customOffset(d, range) : (pre + next) / 2 + customOffset;\n } else {\n d[dim] = this.getDodgeOffset(range, valIndex, valueArr.length);\n }\n });\n });\n return [];\n }\n\n private getDodgeOffset(range: Range, idx: number, len: number): number {\n const {\n dodgeRatio,\n marginRatio,\n intervalPadding,\n dodgePadding,\n } = this;\n const { pre, next } = range;\n\n const tickLength = next - pre;\n let position;\n // 分多种输入情况\n if (!_.isNil(intervalPadding) && _.isNil(dodgePadding) && intervalPadding >= 0) {\n // 仅配置intervalPadding\n const offset = this.getIntervalOnlyOffset(len, idx);\n position = pre + offset;\n } else if (!_.isNil(dodgePadding) && _.isNil(intervalPadding) && dodgePadding >= 0) {\n // 仅配置dodgePadding\n const offset = this.getDodgeOnlyOffset(len, idx);\n position = pre + offset;\n } else if (\n !_.isNil(intervalPadding) &&\n !_.isNil(dodgePadding) &&\n intervalPadding >= 0 &&\n dodgePadding >= 0\n ) {\n // 同时配置intervalPadding和dodgePadding\n const offset = this.getIntervalAndDodgeOffset(len, idx);\n position = pre + offset;\n } else {\n // 默认情况\n const width = (tickLength * dodgeRatio) / len;\n const margin = marginRatio * width;\n const offset =\n (1 / 2) * (tickLength - len * width - (len - 1) * margin) +\n ((idx + 1) * width + idx * margin) -\n (1 / 2) * width -\n (1 / 2) * tickLength;\n position = (pre + next) / 2 + offset;\n }\n return position;\n }\n\n private getIntervalOnlyOffset(len: number, idx: number): number {\n const {\n defaultSize,\n intervalPadding,\n xDimensionLegenth,\n groupNum,\n dodgeRatio,\n maxColumnWidth,\n minColumnWidth,\n columnWidthRatio,\n } = this;\n const normalizedIntervalPadding = intervalPadding / xDimensionLegenth;\n let normalizedDodgePadding = (1 - (groupNum - 1) * normalizedIntervalPadding) / groupNum * dodgeRatio / (len - 1);\n let geomWidth = ((1 - normalizedIntervalPadding * (groupNum - 1)) / groupNum - normalizedDodgePadding * (len - 1)) / len;\n // 根据columnWidthRatio/defaultSize/maxColumnWidth/minColumnWidth调整宽度\n geomWidth = (!_.isNil(columnWidthRatio)) ? 1 / groupNum / len * columnWidthRatio : geomWidth;\n if (!_.isNil(maxColumnWidth)) {\n const normalizedMaxWidht = maxColumnWidth / xDimensionLegenth;\n geomWidth = Math.min(geomWidth, normalizedMaxWidht);\n }\n if (!_.isNil(minColumnWidth)) {\n const normalizedMinWidht = minColumnWidth / xDimensionLegenth;\n geomWidth = Math.max(geomWidth, normalizedMinWidht);\n }\n geomWidth = defaultSize ? (defaultSize / xDimensionLegenth) : geomWidth;\n // 调整组内间隔\n normalizedDodgePadding = ((1 - (groupNum - 1) * normalizedIntervalPadding) / groupNum - len * geomWidth) / (len - 1);\n const offset =\n ((1 / 2 + idx) * geomWidth + idx * normalizedDodgePadding +\n (1 / 2) * normalizedIntervalPadding) * groupNum -\n normalizedIntervalPadding / 2;\n return offset;\n }\n\n private getDodgeOnlyOffset(len: number, idx: number): number {\n const {\n defaultSize,\n dodgePadding,\n xDimensionLegenth,\n groupNum,\n marginRatio,\n maxColumnWidth,\n minColumnWidth,\n columnWidthRatio,\n } = this;\n const normalizedDodgePadding = dodgePadding / xDimensionLegenth;\n let normalizedIntervalPadding = 1 * marginRatio / (groupNum - 1);\n let geomWidth = ((1 - normalizedIntervalPadding * (groupNum - 1)) / groupNum - normalizedDodgePadding * (len - 1)) / len;\n // 根据columnWidthRatio/defaultSize/maxColumnWidth/minColumnWidth调整宽度\n geomWidth = columnWidthRatio ? 1 / groupNum / len * columnWidthRatio : geomWidth;\n if (!_.isNil(maxColumnWidth)) {\n const normalizedMaxWidht = maxColumnWidth / xDimensionLegenth;\n geomWidth = Math.min(geomWidth, normalizedMaxWidht);\n }\n if (!_.isNil(minColumnWidth)) {\n const normalizedMinWidht = minColumnWidth / xDimensionLegenth;\n geomWidth = Math.max(geomWidth, normalizedMinWidht);\n }\n geomWidth = defaultSize ? (defaultSize / xDimensionLegenth) : geomWidth;\n // 调整组间距\n normalizedIntervalPadding = (1 - (geomWidth * len + normalizedDodgePadding * (len - 1)) * groupNum) / (groupNum - 1);\n const offset =\n ((1 / 2 + idx) * geomWidth + idx * normalizedDodgePadding +\n (1 / 2) * normalizedIntervalPadding) * groupNum -\n normalizedIntervalPadding / 2;\n return offset;\n }\n\n private getIntervalAndDodgeOffset(len: number, idx: number): number {\n const {\n intervalPadding,\n dodgePadding,\n xDimensionLegenth,\n groupNum,\n } = this;\n const normalizedIntervalPadding = intervalPadding / xDimensionLegenth;\n const normalizedDodgePadding = dodgePadding / xDimensionLegenth;\n const geomWidth = ((1 - normalizedIntervalPadding * (groupNum - 1)) / groupNum - normalizedDodgePadding * (len - 1)) / len;\n const offset =\n ((1 / 2 + idx) * geomWidth + idx * normalizedDodgePadding +\n (1 / 2) * normalizedIntervalPadding) * groupNum -\n normalizedIntervalPadding / 2;\n return offset;\n }\n\n private getDistribution(dim: string) {\n const groupedDataArray = this.adjustDataArray;\n const cacheMap = this.cacheMap;\n let map = cacheMap[dim];\n\n if (!map) {\n map = {};\n _.each(groupedDataArray, (data, index) => {\n const values = _.valuesOfKey(data, dim) as number[];\n if (!values.length) {\n values.push(0);\n }\n _.each(values, (val: number) => {\n if (!map[val]) {\n map[val] = [];\n }\n map[val].push(index);\n });\n });\n cacheMap[dim] = map;\n }\n\n return map;\n }\n}\n","import * as _ from '@antv/util';\nimport { GAP } from '../constant';\nimport { Data, Range } from '../interface';\nimport Adjust from './adjust';\n\nfunction randomNumber(min: number, max: number): number {\n return (max - min) * Math.random() + min;\n}\n\nexport default class Jitter extends Adjust {\n public process(groupDataArray: Data[][]): Data[][] {\n const groupedDataArray = _.clone(groupDataArray);\n\n // 之前分组之后的数据,然后有合并回去(和分组前可以理解成是一样的)\n const mergeData = _.flatten(groupedDataArray) as Data[];\n\n // 返回值\n this.adjustData(groupedDataArray, mergeData);\n\n return groupedDataArray;\n }\n\n /**\n * 当前数据分组(index)中,按照维度 dim 进行 jitter 调整\n * @param dim\n * @param values\n * @param dataArray\n */\n protected adjustDim(dim: string, values: number[], dataArray: Data[]) {\n // 在每一个分组中,将数据再按照 dim 分组,用于散列\n const groupDataArray = this.groupData(dataArray, dim);\n return _.each(groupDataArray, (data: Data[], dimValue: string) => {\n return this.adjustGroup(data, dim, parseFloat(dimValue), values);\n });\n }\n\n // 随机出来的字段值\n private getAdjustOffset(range: Range): number {\n const { pre, next } = range;\n // 随机的范围\n const margin = (next - pre) * GAP;\n return randomNumber(pre + margin, next - margin);\n }\n\n // adjust group data\n private adjustGroup(group: Data[], dim: string, dimValue: number, values: number[]): Data[] {\n // 调整范围\n const range = this.getAdjustRange(dim, dimValue, values);\n\n _.each(group, (data: Data) => {\n data[dim] = this.getAdjustOffset(range); // 获取调整的位置\n });\n return group;\n }\n}\n","import * as _ from '@antv/util';\nimport { Data, StackCfg } from '../interface';\nimport Adjust from './adjust';\n\nconst Cache = _.Cache;\n\nexport default class Stack extends Adjust {\n constructor(cfg: StackCfg) {\n super(cfg);\n\n const { adjustNames = ['y'], height = NaN, size = 10, reverseOrder = false } = cfg;\n this.adjustNames = adjustNames;\n this.height = height;\n this.size = size;\n this.reverseOrder = reverseOrder;\n }\n\n /**\n * 方法入参是经过数据分组、数据数字化之后的二维数组\n * @param groupDataArray 分组之后的数据\n */\n public process(groupDataArray: Data[][]): Data[][] {\n const { yField, reverseOrder } = this;\n\n // 如果有指定 y 字段,那么按照 y 字段来 stack\n // 否则,按照高度均分\n const d = yField ? this.processStack(groupDataArray) : this.processOneDimStack(groupDataArray);\n\n return reverseOrder ? this.reverse(d) : d;\n }\n\n private reverse(groupedDataArray: Data[][]): Data[][] {\n return groupedDataArray.slice(0).reverse();\n }\n\n private processStack(groupDataArray: Data[][]): Data[][] {\n const { xField, yField, reverseOrder } = this;\n\n // 层叠顺序翻转\n const groupedDataArray = reverseOrder ? this.reverse(groupDataArray) : groupDataArray;\n\n // 用来缓存,正数和负数的堆叠问题\n const positive = new Cache();\n const negative = new Cache();\n\n return groupedDataArray.map((dataArray) => {\n return dataArray.map((data) => {\n const x: number = _.get(data, xField, 0);\n let y: number = _.get(data, [yField]);\n\n const xKey = x.toString();\n\n // todo 是否应该取 _origin?因为 y 可能取到的值不正确,比如先 symmetric,再 stack!\n y = _.isArray(y) ? y[1] : y;\n\n if (!_.isNil(y)) {\n const cache = y >= 0 ? positive : negative;\n\n if (!cache.has(xKey)) {\n cache.set(xKey, 0);\n }\n const xValue = cache.get(xKey) as number;\n const newXValue = y + xValue;\n\n // 存起来\n cache.set(xKey, newXValue);\n\n return {\n ...data,\n // 叠加成数组,覆盖之前的数据\n [yField]: [xValue, newXValue],\n };\n }\n\n // 没有修改,则直接返回\n return data;\n });\n });\n }\n\n private processOneDimStack(groupDataArray: Data[][]): Data[][] {\n const { xField, height, reverseOrder } = this;\n const yField = 'y';\n\n // 如果层叠的顺序翻转\n const groupedDataArray = reverseOrder ? this.reverse(groupDataArray) : groupDataArray;\n\n // 缓存累加数据\n const cache = new Cache();\n\n return groupedDataArray.map((dataArray): Data[] => {\n return dataArray.map(\n (data): Data => {\n const { size } = this;\n const xValue: string = data[xField];\n\n // todo 没有看到这个 stack 计算原理\n const stackHeight = (size * 2) / height;\n\n if (!cache.has(xValue)) {\n cache.set(xValue, stackHeight / 2); // 初始值大小\n }\n\n const stackValue = cache.get(xValue) as number;\n // 增加一层 stackHeight\n cache.set(xValue, stackValue + stackHeight);\n\n return {\n ...data,\n [yField]: stackValue,\n };\n }\n );\n });\n }\n}\n","import * as _ from '@antv/util';\nimport { Data } from '../interface';\nimport Adjust from './adjust';\n\nexport default class Symmetric extends Adjust {\n public process(groupDataArray: Data[][]): Data[][] {\n const mergeData = _.flatten(groupDataArray);\n\n const { xField, yField } = this;\n\n // 每个 x 值对应的 最大值\n const cache = this.getXValuesMaxMap(mergeData);\n\n // 所有数据的最大的值\n const max = Math.max(...Object.keys(cache).map((key) => cache[key]));\n\n return _.map(groupDataArray, (dataArray) => {\n return _.map(dataArray, (data) => {\n const yValue = data[yField];\n const xValue = data[xField];\n\n // 数组处理逻辑\n if (_.isArray(yValue)) {\n const off = (max - cache[xValue]) / 2;\n\n return {\n ...data,\n [yField]: _.map(yValue, (y: number) => off + y),\n };\n }\n\n // 非数组处理逻辑\n const offset = (max - yValue) / 2;\n return {\n ...data,\n [yField]: [offset, yValue + offset],\n };\n });\n });\n }\n\n // 获取每个 x 对应的最大的值\n private getXValuesMaxMap(mergeData: Data[]): { [key: string]: number } {\n const { xField, yField } = this;\n\n // 根据 xField 的值进行分组\n const groupDataArray = _.groupBy(mergeData, (data) => data[xField] as string);\n\n // 获取每个 xField 值中的最大值\n return _.mapValues(groupDataArray, (dataArray) => this.getDimMaxValue(dataArray, yField));\n }\n\n private getDimMaxValue(mergeData: Data[], dim: string): number {\n // 所有的 value 值\n const dimValues = _.map(mergeData, (data) => _.get(data, dim, []));\n // 将数组打平(dim value 有可能是数组,比如 stack 之后的)\n const flattenValues = _.flatten(dimValues);\n\n // 求出数组的最大值\n return Math.max(...flattenValues);\n }\n}\n","import { getAdjust, registerAdjust } from './factory';\n\nimport Adjust from './adjusts/adjust';\n\nimport Dodge from './adjusts/dodge';\nimport Jitter from './adjusts/jitter';\nimport Stack from './adjusts/stack';\nimport Symmetric from './adjusts/symmetric';\n\n// 注册内置的 adjust\nregisterAdjust('Dodge', Dodge);\nregisterAdjust('Jitter', Jitter);\nregisterAdjust('Stack', Stack);\nregisterAdjust('Symmetric', Symmetric);\n\n// 最终暴露给外部的方法\nexport { getAdjust, registerAdjust, Adjust };\n\nexport * from './interface';\n","const toString = {}.toString;\n\nconst isType = (value: any, type: string): boolean => toString.call(value) === '[object ' + type + ']';\n\nexport default isType;\n","/**\n * 是否为函数\n * @param {*} fn 对象\n * @return {Boolean} 是否函数\n */\nimport isType from './is-type';\n\nexport default (value: any): value is Function => {\n return isType(value, 'Function');\n};\n","import isType from './is-type';\n\nexport default (value: any): value is Array => {\n return Array.isArray ?\n Array.isArray(value) :\n isType(value, 'Array');\n}\n","export default (value: any): value is T => {\n /**\n * isObject({}) => true\n * isObject([1, 2, 3]) => true\n * isObject(Function) => true\n * isObject(null) => false\n */\n const type = typeof value;\n return value !== null && type === 'object' || type === 'function';\n};\n","import isArray from './is-array';\nimport isObject from './is-object';\n\nfunction each (elements: any[] | object, func: (v: any, k: any) => any): void {\n if (!elements) {\n return;\n }\n let rst;\n if (isArray(elements)) {\n for (let i = 0, len = elements.length; i < len; i++) {\n rst = func(elements[i], i);\n if (rst === false) {\n break;\n }\n }\n } else if (isObject(elements)) {\n for (const k in elements) {\n if (elements.hasOwnProperty(k)) {\n rst = func(elements[k], k);\n if (rst === false) {\n break;\n }\n }\n }\n }\n}\n\nexport default each;\n","import each from './each';\nimport isFunction from './is-function';\n\nconst keys = Object.keys ? obj => Object.keys(obj) : obj => {\n const result = [];\n each(obj, (value, key) => {\n if (!(isFunction(obj) && key === 'prototype')) {\n result.push(key);\n }\n });\n return result;\n};\n\nexport default keys;\n","import isArray from './is-array';\nimport { default as getMax } from './max';\nimport { default as getMin } from './min';\n\nexport interface RangeType {\n readonly min: number;\n readonly max: number;\n}\n\nconst getRange = function (values: number[]): RangeType {\n // 存在 NaN 时,min,max 判定会出问题\n let filterValues = values.filter((v) => !isNaN(v));\n if (!filterValues.length) {\n // 如果没有数值则直接返回0\n return {\n min: 0,\n max: 0,\n };\n }\n if (isArray(values[0])) {\n let tmp = [];\n for (let i = 0; i < values.length; i++) {\n tmp = tmp.concat(values[i]);\n }\n filterValues = tmp;\n }\n const max = getMax(filterValues);\n const min = getMin(filterValues);\n return {\n min,\n max,\n };\n};\n\nexport default getRange;\n","import each from './each';\nimport isArray from './is-array';\n\n/**\n * @param {Array} arr The array to iterate over.\n * @return {*} Returns the maximum value.\n * @example\n *\n * max([1, 2]);\n * // => 2\n *\n * max([]);\n * // => undefined\n *\n * const data = new Array(1250010).fill(1).map((d,idx) => idx);\n *\n * max(data);\n * // => 1250010\n * // Math.max(...data) will encounter \"Maximum call stack size exceeded\" error\n */\nexport default (arr: number[]): number | undefined => {\n if (!isArray(arr)) {\n return undefined;\n }\n return arr.reduce((prev, curr) => {\n return Math.max(prev, curr)\n }, arr[0]);\n};\n","import each from './each';\nimport isArray from './is-array';\n\n/**\n * @param {Array} arr The array to iterate over.\n * @return {*} Returns the minimum value.\n * @example\n *\n * min([1, 2]);\n * // => 1\n *\n * min([]);\n * // => undefined\n *\n * const data = new Array(1250010).fill(1).map((d,idx) => idx);\n *\n * min(data);\n * // => 1250010\n * // Math.min(...data) will encounter \"Maximum call stack size exceeded\" error\n */\nexport default (arr: number[]): number | undefined => {\n if (!isArray(arr)) {\n return undefined;\n }\n return arr.reduce((prev, curr) => {\n return Math.min(prev, curr)\n }, arr[0]);\n};\n","const arrPrototype = Array.prototype;\nconst splice = arrPrototype.splice;\nconst indexOf = arrPrototype.indexOf;\n\nconst pull = function(arr: T[], ...values: any[]): T[] {\n for (let i = 0; i < values.length; i++) {\n const value = values[i];\n let fromIndex = -1;\n while ((fromIndex = indexOf.call(arr, value)) > -1) {\n splice.call(arr, fromIndex, 1);\n }\n }\n return arr;\n};\n\nexport default pull;\n","import isArrayLike from './is-array-like';\n\nconst splice = Array.prototype.splice;\n\nconst pullAt = function pullAt (arr: T[], indexes: number[]): T[] {\n if (!isArrayLike(arr)) {\n return [];\n }\n let length = arr ? indexes.length : 0;\n const last = length - 1;\n\n while (length--) {\n let previous;\n const index = indexes[length];\n if (length === last || index !== previous) {\n previous = index;\n splice.call(arr, index, 1);\n }\n }\n return arr;\n};\n\nexport default pullAt;\n","import isArrayLike from './is-array-like';\nimport pullAt from './pull-at';\n\nconst remove = function(arr: T[], predicate: (value: T, idx: number, arr?: T[]) => boolean): T[] {\n /**\n * const arr = [1, 2, 3, 4]\n * const evens = remove(arr, n => n % 2 == 0)\n * console.log(arr) // => [1, 3]\n * console.log(evens) // => [2, 4]\n */\n const result = [];\n if (!isArrayLike(arr)) {\n return result;\n }\n let i = -1;\n const indexes = [];\n const length = arr.length;\n\n while (++i < length) {\n const value = arr[i];\n if (predicate(value, i, arr)) {\n result.push(value);\n indexes.push(i);\n }\n }\n pullAt(arr, indexes);\n return result;\n};\n\nexport default remove;\n","import isType from './is-type';\n\nexport default (str: any): str is string => {\n return isType(str, 'String');\n}\n","const isArrayLike = function(value: any): boolean {\n /**\n * isArrayLike([1, 2, 3]) => true\n * isArrayLike(document.body.children) => true\n * isArrayLike('abc') => true\n * isArrayLike(Function) => false\n */\n return value !== null && typeof value !== 'function' && isFinite(value.length);\n};\n\nexport default isArrayLike;\n","import isArrayLike from './is-array-like';\n\nexport default function head(o: unknown) {\n if (isArrayLike(o)) {\n return (>o)[0];\n }\n return undefined;\n}\n","import isArrayLike from './is-array-like';\n\nexport default function last(o: unknown) {\n if (isArrayLike(o)) {\n const arr = o as ArrayLike;\n return arr[arr.length - 1];\n }\n return undefined;\n}\n","import isArrayLike from './is-array-like';\n\nconst filter = function (arr: T[], func: (v: T, idx: number) => boolean): T[] {\n if (!isArrayLike(arr)) {\n return arr;\n }\n const result: T[] = [];\n for (let index = 0; index < arr.length; index++) {\n const value = arr[index];\n if (func(value, index)) {\n result.push(value);\n }\n }\n\n return result;\n};\n\nexport default filter;\n","import isArray from './is-array';\nimport isFunction from './is-function';\n\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\n\nexport interface ObjectType {\n [key: string]: T[];\n}\n\nfunction groupBy(data: T[], condition: (item: T) => string): ObjectType;\nfunction groupBy(data: T[], condition: string): ObjectType;\nfunction groupBy(data: T[], condition: ((item: T) => string) | string): ObjectType {\n if (!condition || !isArray(data)) {\n return {};\n }\n const result: ObjectType = {};\n\n // 兼容方法和 字符串的写法\n const predicate = isFunction(condition) ? condition : (item) => item[condition];\n\n let key: string;\n for (let i = 0; i < data.length; i++) {\n const item = data[i];\n key = predicate(item);\n if (hasOwnProperty.call(result, key)) {\n result[key].push(item);\n } else {\n result[key] = [ item ];\n }\n }\n\n return result;\n}\n\nexport default groupBy;\n","const fixedBase = function(v: number, base: number | string): number {\n const str = base.toString();\n const index = str.indexOf('.');\n if (index === -1) {\n return Math.round(v);\n }\n let length = str.substr(index + 1).length;\n if (length > 20) {\n length = 20;\n }\n return parseFloat(v.toFixed(length));\n};\n\nexport default fixedBase;\n","/**\n * 判断是否数字\n * @return {Boolean} 是否数字\n */\nimport isType from './is-type';\n\nconst isNumber = function(value: any): value is number {\n return isType(value, 'Number');\n};\nexport default isNumber;\n","import isNumber from './is-number';\n\nconst isInteger = Number.isInteger ? Number.isInteger : function(num: any): boolean {\n return isNumber(num) && num % 1 === 0;\n};\n\nexport default isInteger;\n","const DEGREE = 180 / Math.PI;\n\nconst toDegree = function(radian: number): number {\n return DEGREE * radian;\n};\n\nexport default toDegree;\n","const RADIAN = Math.PI / 180;\n\nconst toRadian = function(degree: number): number {\n return RADIAN * degree;\n};\n\nexport default toRadian;\n","import each from './each';\nimport isFunction from './is-function';\n\n// @ts-ignore\nconst values = Object.values ? obj => Object.values(obj) : obj => {\n const result = [];\n each(obj, (value, key) => {\n if (!(isFunction(obj) && key === 'prototype')) {\n result.push(value);\n }\n });\n return result;\n};\n\nexport default values;\n","const toString = {}.toString;\n\nconst getType = function(value: any): string {\n return toString.call(value).replace(/^\\[object /, '').replace(/]$/, '');\n};\n\nexport default getType;\n","import isType from './is-type';\n\nconst isDate = function(value: any): value is Date {\n return isType(value, 'Date');\n};\n\nexport default isDate;\n","// isFinite,\nconst isNil = function(value: any): value is null | undefined {\n /**\n * isNil(null) => true\n * isNil() => true\n */\n return value === null || value === undefined;\n};\n\nexport default isNil;\n","const objectProto = Object.prototype;\n\nconst isPrototype = function(value: any): boolean {\n const Ctor = value && value.constructor;\n const proto = (typeof Ctor === 'function' && Ctor.prototype) || objectProto;\n return value === proto;\n};\n\nexport default isPrototype;\n","import isArrayLike from './is-array-like';\n\nconst indexOf = function (arr: T[], obj: T): number {\n if (!isArrayLike(arr)) {\n return -1;\n }\n const m = Array.prototype.indexOf;\n if (m) {\n return m.call(arr, obj);\n }\n let index = -1;\n\n for (let i = 0; i < arr.length; i++) {\n if (arr[i] === obj) {\n index = i;\n break;\n }\n }\n return index;\n};\n\nexport default indexOf;\n","import isNil from './is-nil';\nimport isArrayLike from './is-array-like';\nimport getType from './get-type';\nimport isPrototype from './is-prototype';\n\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction isEmpty(value: any): boolean {\n /**\n * isEmpty(null) => true\n * isEmpty() => true\n * isEmpty(true) => true\n * isEmpty(1) => true\n * isEmpty([1, 2, 3]) => false\n * isEmpty('abc') => false\n * isEmpty({ a: 1 }) => false\n */\n if (isNil(value)) {\n return true;\n }\n if (isArrayLike(value)) {\n return !value.length;\n }\n const type = getType(value);\n if (type === 'Map' || type === 'Set') {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !Object.keys(value).length;\n }\n for (const key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n\nexport default isEmpty;\n","import isArrayLike from './is-array-like';\n\nconst map = (arr: T[], func: (v: T, idx: number) => G): G[] => {\n if (!isArrayLike(arr)) {\n // @ts-ignore\n return arr;\n }\n const result: G[] = [];\n\n for (let index = 0; index < arr.length; index++) {\n const value = arr[index];\n result.push(func(value, index));\n }\n return result;\n};\n\nexport default map;\n","// FIXME: Mutable param should be forbidden in static lang.\nfunction _mix(dist: Base & Source, obj: Source): void {\n for (const key in obj) {\n if (obj.hasOwnProperty(key) && key !== 'constructor' && obj[key] !== undefined) {\n (dist)[key] = obj[key];\n }\n }\n}\n\nexport default function mix(dist: Base & A & B & C, src1?: A, src2?: B, src3?: C): Base & A & B & C {\n if (src1) _mix(dist, src1);\n if (src2) _mix(dist, src2);\n if (src3) _mix(dist, src3);\n return dist;\n}\n","import each from './each';\nimport isPlainObject from './is-plain-object';\n\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\n/**\n * Creates an object composed of the picked `object` properties.\n *\n * @param {Object} object The source object.\n * @param {...(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 * pick(object, ['a', 'c']); // => { 'a': 1, 'c': 3 }\n */\n\nexport interface ObjectType {\n [key: string]: T;\n}\n\nexport default (object: ObjectType, keys: string[]): ObjectType => {\n if (object === null || !isPlainObject(object)) {\n return {};\n }\n const result: ObjectType = {};\n each(keys, key => {\n if (hasOwnProperty.call(object, key)) {\n result[key] = object[key];\n }\n });\n return result;\n};\n","import isNil from './is-nil';\nimport isArraylike from './is-array-like';\n\nexport default function size(o: unknown) {\n if (isNil(o)) {\n return 0;\n }\n if (isArraylike(o)) {\n return (>o).length;\n }\n return Object.keys(o).length;\n}\n","import values from './values';\nimport memoize from './memoize';\nimport isString from './is-string';\nimport type { Properties } from 'csstype';\n\nexport type Font = Pick & {\n fontSize?: number;\n};\n\nlet ctx: CanvasRenderingContext2D;\n\n/**\n * 计算文本的宽度\n */\nexport default memoize(\n (text: any, font: Font = {}): number => {\n const { fontSize, fontFamily, fontWeight, fontStyle, fontVariant } = font;\n if (!ctx) {\n ctx = document.createElement('canvas').getContext('2d') as CanvasRenderingContext2D;\n }\n ctx!.font = [fontStyle, fontVariant, fontWeight, `${fontSize}px`, fontFamily].join(' ');\n return ctx!.measureText(isString(text) ? text : '').width;\n },\n (text: any, font: Font = {}) => [text, ...values(font)].join('')\n);\n","import isFunction from './is-function';\n\n/**\n * _.memoize(calColor);\n * _.memoize(calColor, (...args) => args[0]);\n * @param f\n * @param resolver\n */\nexport default (f: Function, resolver?: (...args: any[]) => string) => {\n if (!isFunction(f)) {\n throw new TypeError('Expected a function')\n }\n\n const memoized = function(...args) {\n // 使用方法构造 key,如果不存在 resolver,则直接取第一个参数作为 key\n const key = resolver ? resolver.apply(this, args) : args[0];\n const cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key)\n }\n const result = f.apply(this, args);\n // 缓存起来\n cache.set(key, result);\n return result\n };\n\n memoized.cache = new Map();\n\n return memoized\n}\n","/**\n * k-v 存储\n */\nexport default class {\n map: { [key: string]: T } = {};\n\n has(key: string): boolean {\n return this.map[key] !== undefined;\n }\n\n get(key: string, def?: T): T | undefined {\n const v = this.map[key];\n return v === undefined ? def : v;\n }\n\n set(key: string, value: T): void {\n this.map[key] = value;\n }\n\n clear() {\n this.map = {};\n }\n\n delete(key: string) {\n delete this.map[key];\n }\n\n size(): number {\n return Object.keys(this.map).length;\n }\n}\n","import { each, identity, isArray, isNil, isString, mix } from '@antv/util';\nimport { AttributeCfg, CallbackType, Scale } from '../interface';\n\n// todo 这个到底目的是什么?\nconst toScaleString = (scale: Scale, value: any): any => {\n if (isString(value)) {\n return value;\n }\n return scale.invert(scale.scale(value));\n};\n\nexport type AttributeConstructor = new (cfg: any) => Attribute;\n\n/**\n * 所有视觉通道属性的基类\n * @class Base\n */\nexport default class Attribute {\n public type: string;\n public names: string[] = [];\n public scales: Scale[] = [];\n public linear: boolean = false;\n\n public values: any[] = [];\n\n constructor(cfg: AttributeCfg) {\n // 解析配置\n this._parseCfg(cfg);\n }\n public callback: CallbackType = () => [];\n\n /**\n * 映射的值组成的数组\n * @param params 对应 scale 顺序的值传入\n */\n public mapping(...params: any[]): any[] {\n const values = params.map((param, idx) => {\n return this._toOriginParam(param, this.scales[idx]);\n });\n\n return this.callback.apply(this, values);\n }\n\n /**\n * 如果进行线性映射,返回对应的映射值\n * @param percent\n */\n public getLinearValue(percent: number): number | string {\n // 分段数量\n const steps = this.values.length - 1;\n\n const step = Math.floor(steps * percent);\n const leftPercent = steps * percent - step;\n\n // todo 不懂这个逻辑\n const start = this.values[step];\n const end = step === steps ? start : this.values[step + 1];\n\n // 线性方程\n return start + (end - start) * leftPercent;\n }\n\n /**\n * 根据度量获取属性名\n */\n public getNames() {\n const scales = this.scales;\n const names = this.names;\n\n const length = Math.min(scales.length, names.length);\n const rst = [];\n for (let i = 0; i < length; i += 1) {\n rst.push(names[i]);\n }\n return rst;\n }\n\n /**\n * 获取所有的维度名\n */\n public getFields() {\n return this.scales.map((scale) => scale.field);\n }\n\n /**\n * 根据名称获取度量\n * @param name\n */\n public getScale(name: string) {\n return this.scales[this.names.indexOf(name)];\n }\n\n /**\n * 默认的回调函数(用户没有自定义 callback,或者用户自定义 callback 返回空的时候,使用 values 映射)\n * @param params\n */\n private defaultCallback(...params: any[]): any[] {\n // 没有 params 的情况,是指没有指定 fields,直接返回配置的 values 常量\n if (params.length === 0) {\n return this.values;\n }\n\n return params.map((param, idx) => {\n const scale = this.scales[idx];\n\n return scale.type === 'identity' ? scale.values[0] : this._getAttributeValue(scale, param);\n });\n }\n\n // 解析配置\n private _parseCfg(cfg: AttributeCfg) {\n const { type = 'base', names = [], scales = [], values = [], callback } = cfg;\n\n this.type = type;\n\n this.scales = scales;\n this.values = values;\n this.names = names;\n\n // 构造 callback 方法\n this.callback = (...params: any[]): any[] => {\n /**\n * 当用户设置的 callback 返回 null 时, 应该返回默认 callback 中的值\n */\n if (callback) {\n // 使用用户返回的值处理\n const ret = callback(...params);\n if (!isNil(ret)) {\n return [ret];\n }\n }\n\n // 没有 callback 或者用户 callback 返回值为空,则使用默认的逻辑处理\n return this.defaultCallback.apply(this, params);\n };\n }\n\n // 获取属性值,将值映射到视觉通道\n private _getAttributeValue(scale: Scale, value: any) {\n // 如果是非线性的字段,直接从 values 中取值即可\n if (scale.isCategory && !this.linear) {\n // 离散 scale 变换成索引\n const idx = scale.translate(value) as number;\n return this.values[idx % this.values.length];\n }\n\n // 线性则使用线性值\n const percent = scale.scale(value);\n return this.getLinearValue(percent);\n }\n\n /**\n * 通过 scale 拿到数据对应的原始的参数\n * @param param\n * @param scale\n * @private\n */\n private _toOriginParam(param: any, scale: Scale) {\n // 是线性,直接返回\n // 非线性,使用 scale 变换\n return !scale.isLinear\n ? isArray(param)\n ? param.map((p: any) => toScaleString(scale, p))\n : toScaleString(scale, param)\n : param;\n }\n}\n","const toString = {}.toString;\n\nconst isType = (value: any, type: string): boolean => toString.call(value) === '[object ' + type + ']';\n\nexport default isType;\n","/**\n * 是否为函数\n * @param {*} fn 对象\n * @return {Boolean} 是否函数\n */\nimport isType from './is-type';\n\nexport default (value: any): value is Function => {\n return isType(value, 'Function');\n};\n","import isArray from './is-array';\nimport isObject from './is-object';\n\nfunction each (elements: any[] | object, func: (v: any, k: any) => any): void {\n if (!elements) {\n return;\n }\n let rst;\n if (isArray(elements)) {\n for (let i = 0, len = elements.length; i < len; i++) {\n rst = func(elements[i], i);\n if (rst === false) {\n break;\n }\n }\n } else if (isObject(elements)) {\n for (const k in elements) {\n if (elements.hasOwnProperty(k)) {\n rst = func(elements[k], k);\n if (rst === false) {\n break;\n }\n }\n }\n }\n}\n\nexport default each;\n","import isType from './is-type';\n\nexport default (value: any): value is Array => {\n return Array.isArray ?\n Array.isArray(value) :\n isType(value, 'Array');\n}\n","export default (value: any): value is T => {\n /**\n * isObject({}) => true\n * isObject([1, 2, 3]) => true\n * isObject(Function) => true\n * isObject(null) => false\n */\n const type = typeof value;\n return value !== null && type === 'object' || type === 'function';\n};\n","import each from './each';\nimport isFunction from './is-function';\n\nconst keys = Object.keys ? obj => Object.keys(obj) : obj => {\n const result = [];\n each(obj, (value, key) => {\n if (!(isFunction(obj) && key === 'prototype')) {\n result.push(key);\n }\n });\n return result;\n};\n\nexport default keys;\n","const arrPrototype = Array.prototype;\nconst splice = arrPrototype.splice;\nconst indexOf = arrPrototype.indexOf;\n\nconst pull = function(arr: T[], ...values: any[]): T[] {\n for (let i = 0; i < values.length; i++) {\n const value = values[i];\n let fromIndex = -1;\n while ((fromIndex = indexOf.call(arr, value)) > -1) {\n splice.call(arr, fromIndex, 1);\n }\n }\n return arr;\n};\n\nexport default pull;\n","import isArrayLike from './is-array-like';\n\nconst splice = Array.prototype.splice;\n\nconst pullAt = function pullAt (arr: T[], indexes: number[]): T[] {\n if (!isArrayLike(arr)) {\n return [];\n }\n let length = arr ? indexes.length : 0;\n const last = length - 1;\n\n while (length--) {\n let previous;\n const index = indexes[length];\n if (length === last || index !== previous) {\n previous = index;\n splice.call(arr, index, 1);\n }\n }\n return arr;\n};\n\nexport default pullAt;\n","import isArrayLike from './is-array-like';\nimport pullAt from './pull-at';\n\nconst remove = function(arr: T[], predicate: (value: T, idx: number, arr?: T[]) => boolean): T[] {\n /**\n * const arr = [1, 2, 3, 4]\n * const evens = remove(arr, n => n % 2 == 0)\n * console.log(arr) // => [1, 3]\n * console.log(evens) // => [2, 4]\n */\n const result = [];\n if (!isArrayLike(arr)) {\n return result;\n }\n let i = -1;\n const indexes = [];\n const length = arr.length;\n\n while (++i < length) {\n const value = arr[i];\n if (predicate(value, i, arr)) {\n result.push(value);\n indexes.push(i);\n }\n }\n pullAt(arr, indexes);\n return result;\n};\n\nexport default remove;\n","import isType from './is-type';\n\nexport default (str: any): str is string => {\n return isType(str, 'String');\n}\n","import isArray from './is-array';\nimport isFunction from './is-function';\n\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\n\nexport interface ObjectType {\n [key: string]: T[];\n}\n\nfunction groupBy(data: T[], condition: (item: T) => string): ObjectType;\nfunction groupBy(data: T[], condition: string): ObjectType;\nfunction groupBy(data: T[], condition: ((item: T) => string) | string): ObjectType {\n if (!condition || !isArray(data)) {\n return {};\n }\n const result: ObjectType = {};\n\n // 兼容方法和 字符串的写法\n const predicate = isFunction(condition) ? condition : (item) => item[condition];\n\n let key: string;\n for (let i = 0; i < data.length; i++) {\n const item = data[i];\n key = predicate(item);\n if (hasOwnProperty.call(result, key)) {\n result[key].push(item);\n } else {\n result[key] = [ item ];\n }\n }\n\n return result;\n}\n\nexport default groupBy;\n","/**\n * 判断是否数字\n * @return {Boolean} 是否数字\n */\nimport isType from './is-type';\n\nconst isNumber = function(value: any): value is number {\n return isType(value, 'Number');\n};\nexport default isNumber;\n","import isNumber from './is-number';\n\nconst isInteger = Number.isInteger ? Number.isInteger : function(num: any): boolean {\n return isNumber(num) && num % 1 === 0;\n};\n\nexport default isInteger;\n","const DEGREE = 180 / Math.PI;\n\nconst toDegree = function(radian: number): number {\n return DEGREE * radian;\n};\n\nexport default toDegree;\n","const RADIAN = Math.PI / 180;\n\nconst toRadian = function(degree: number): number {\n return RADIAN * degree;\n};\n\nexport default toRadian;\n","import each from './each';\nimport isFunction from './is-function';\n\n// @ts-ignore\nconst values = Object.values ? obj => Object.values(obj) : obj => {\n const result = [];\n each(obj, (value, key) => {\n if (!(isFunction(obj) && key === 'prototype')) {\n result.push(value);\n }\n });\n return result;\n};\n\nexport default values;\n","const objectProto = Object.prototype;\n\nconst isPrototype = function(value: any): boolean {\n const Ctor = value && value.constructor;\n const proto = (typeof Ctor === 'function' && Ctor.prototype) || objectProto;\n return value === proto;\n};\n\nexport default isPrototype;\n","import isArray from './is-array';\n\nconst clone = function(obj) {\n if (typeof obj !== 'object' || obj === null) {\n return obj;\n }\n let rst;\n if (isArray(obj)) {\n rst = [];\n for (let i = 0, l = obj.length; i < l; i++) {\n if (typeof obj[i] === 'object' && obj[i] != null) {\n rst[i] = clone(obj[i]);\n } else {\n rst[i] = obj[i];\n }\n }\n } else {\n rst = {};\n for (const k in obj) {\n if (typeof obj[k] === 'object' && obj[k] != null) {\n rst[k] = clone(obj[k]);\n } else {\n rst[k] = obj[k];\n }\n }\n }\n\n return rst;\n};\n\nexport default clone;\n","import isFunction from './is-function';\n\n/**\n * _.memoize(calColor);\n * _.memoize(calColor, (...args) => args[0]);\n * @param f\n * @param resolver\n */\nexport default (f: Function, resolver?: (...args: any[]) => string) => {\n if (!isFunction(f)) {\n throw new TypeError('Expected a function')\n }\n\n const memoized = function(...args) {\n // 使用方法构造 key,如果不存在 resolver,则直接取第一个参数作为 key\n const key = resolver ? resolver.apply(this, args) : args[0];\n const cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key)\n }\n const result = f.apply(this, args);\n // 缓存起来\n cache.set(key, result);\n return result\n };\n\n memoized.cache = new Map();\n\n return memoized\n}\n","import isNil from './is-nil';\nimport isArrayLike from './is-array-like';\nimport getType from './get-type';\nimport isPrototype from './is-prototype';\n\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction isEmpty(value: any): boolean {\n /**\n * isEmpty(null) => true\n * isEmpty() => true\n * isEmpty(true) => true\n * isEmpty(1) => true\n * isEmpty([1, 2, 3]) => false\n * isEmpty('abc') => false\n * isEmpty({ a: 1 }) => false\n */\n if (isNil(value)) {\n return true;\n }\n if (isArrayLike(value)) {\n return !value.length;\n }\n const type = getType(value);\n if (type === 'Map' || type === 'Set') {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !Object.keys(value).length;\n }\n for (const key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n\nexport default isEmpty;\n","const isArrayLike = function(value: any): boolean {\n /**\n * isArrayLike([1, 2, 3]) => true\n * isArrayLike(document.body.children) => true\n * isArrayLike('abc') => true\n * isArrayLike(Function) => false\n */\n return value !== null && typeof value !== 'function' && isFinite(value.length);\n};\n\nexport default isArrayLike;\n","import isArrayLike from './is-array-like';\n\nconst map = (arr: T[], func: (v: T, idx: number) => G): G[] => {\n if (!isArrayLike(arr)) {\n // @ts-ignore\n return arr;\n }\n const result: G[] = [];\n\n for (let index = 0; index < arr.length; index++) {\n const value = arr[index];\n result.push(func(value, index));\n }\n return result;\n};\n\nexport default map;\n","import each from './each';\nimport isPlainObject from './is-plain-object';\n\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\n/**\n * Creates an object composed of the picked `object` properties.\n *\n * @param {Object} object The source object.\n * @param {...(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 * pick(object, ['a', 'c']); // => { 'a': 1, 'c': 3 }\n */\n\nexport interface ObjectType {\n [key: string]: T;\n}\n\nexport default (object: ObjectType, keys: string[]): ObjectType => {\n if (object === null || !isPlainObject(object)) {\n return {};\n }\n const result: ObjectType = {};\n each(keys, key => {\n if (hasOwnProperty.call(object, key)) {\n result[key] = object[key];\n }\n });\n return result;\n};\n","import values from './values';\nimport memoize from './memoize';\nimport isString from './is-string';\nimport type { Properties } from 'csstype';\n\nexport type Font = Pick & {\n fontSize?: number;\n};\n\nlet ctx: CanvasRenderingContext2D;\n\n/**\n * 计算文本的宽度\n */\nexport default memoize(\n (text: any, font: Font = {}): number => {\n const { fontSize, fontFamily, fontWeight, fontStyle, fontVariant } = font;\n if (!ctx) {\n ctx = document.createElement('canvas').getContext('2d') as CanvasRenderingContext2D;\n }\n ctx!.font = [fontStyle, fontVariant, fontWeight, `${fontSize}px`, fontFamily].join(' ');\n return ctx!.measureText(isString(text) ? text : '').width;\n },\n (text: any, font: Font = {}) => [text, ...values(font)].join('')\n);\n","/**\n * k-v 存储\n */\nexport default class {\n map: { [key: string]: T } = {};\n\n has(key: string): boolean {\n return this.map[key] !== undefined;\n }\n\n get(key: string, def?: T): T | undefined {\n const v = this.map[key];\n return v === undefined ? def : v;\n }\n\n set(key: string, value: T): void {\n this.map[key] = value;\n }\n\n clear() {\n this.map = {};\n }\n\n delete(key: string) {\n delete this.map[key];\n }\n\n size(): number {\n return Object.keys(this.map).length;\n }\n}\n","import { map, memoize, isString, each } from '@antv/util';\n\nconst RGB_REG = /rgba?\\(([\\s.,0-9]+)\\)/;\nconst regexLG = /^l\\s*\\(\\s*([\\d.]+)\\s*\\)\\s*(.*)/i;\nconst regexRG = /^r\\s*\\(\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*\\)\\s*(.*)/i;\nconst regexColorStop = /[\\d.]+:(#[^\\s]+|[^\\)]+\\))/gi;\n\nconst isGradientColor = (val) => /^[r,R,L,l]{1}[\\s]*\\(/.test(val);\n\n// 创建辅助 tag 取颜色\nconst createTmp = (): HTMLElement => {\n const i = document.createElement('i');\n i.title = 'Web Colour Picker';\n i.style.display = 'none';\n document.body.appendChild(i);\n return i;\n};\n\n// 获取颜色之间的插值\nconst getValue = (start: number[], end: number[], percent: number, index: number): number => {\n return start[index] + (end[index] - start[index]) * percent;\n};\n\n// 数组转换成颜色\nfunction arr2rgb(arr: number[]): string {\n return `#${toHex(arr[0])}${toHex(arr[1])}${toHex(arr[2])}`;\n}\n\n// rgb 颜色转换成数组\nconst rgb2arr = (str: string): number[] => {\n return [\n parseInt(str.substr(1, 2), 16),\n parseInt(str.substr(3, 2), 16),\n parseInt(str.substr(5, 2), 16),\n ];\n};\n\n// 将数值从 0-255 转换成16进制字符串\nconst toHex = (value: number): string => {\n const x16Value = Math.round(value).toString(16);\n\n return x16Value.length === 1 ? `0${x16Value}` : x16Value;\n};\n\n// 计算颜色\nconst calColor = (points: number[][], percent: number) => {\n const fixedPercent = isNaN(Number(percent)) || percent < 0 ? 0 :\n percent > 1 ? 1 :\n Number(percent);\n\n const steps = points.length - 1;\n\n const step = Math.floor(steps * fixedPercent);\n\n const left = steps * fixedPercent - step;\n\n const start = points[step];\n\n const end = step === steps ? start : points[step + 1];\n\n return arr2rgb([\n getValue(start, end, left, 0),\n getValue(start, end, left, 1),\n getValue(start, end, left, 2),\n ]);\n};\n\n// 用于给 toRGB 的缓存(使用 memoize 方法替换)\n// const colorCache = {};\nlet iEl: HTMLElement;\n\n/**\n * 将颜色转换到 rgb 的格式\n * @param {color} color 颜色\n * @return 将颜色转换到 '#ffffff' 的格式\n */\nconst toRGB = (color: string): string => {\n // 如果已经是 rgb的格式\n if (color[0] === '#' && color.length === 7) {\n return color;\n }\n\n if (!iEl) {\n // 防止防止在页头报错\n iEl = createTmp();\n }\n\n iEl.style.color = color;\n\n let rst = document.defaultView.getComputedStyle(iEl, '').getPropertyValue('color');\n\n const matches = RGB_REG.exec(rst) as string[] ;\n const cArray: number[] = matches[1].split(/\\s*,\\s*/).map((s) => Number(s));\n\n rst = arr2rgb(cArray);\n\n return rst;\n};\n\n/**\n * 获取渐变函数\n * @param colors 多个颜色\n * @return 颜色值\n */\nconst gradient = (colors: string | string[]) => {\n const colorArray = isString(colors) ? (colors as string).split('-') : colors;\n\n const points = map(colorArray, (color) => {\n return rgb2arr(color.indexOf('#') === -1 ? toRGB(color) : color);\n });\n\n // 返回一个函数\n return (percent: number): string => {\n return calColor(points, percent);\n };\n};\n\nconst toCSSGradient = (gradientColor) => {\n if (isGradientColor(gradientColor)) {\n let cssColor;\n let steps;\n if (gradientColor[0] === 'l') {\n // 线性渐变\n const arr = regexLG.exec(gradientColor);\n const angle = +arr[1] + 90; // css 和 g 的渐变起始角度不同\n steps = arr[2];\n\n cssColor = `linear-gradient(${angle}deg, `;\n } else if (gradientColor[0] === 'r') {\n // 径向渐变\n cssColor = 'radial-gradient(';\n const arr = regexRG.exec(gradientColor);\n steps = arr[4];\n }\n\n const colorStops: string[] = steps.match(regexColorStop);\n each(colorStops, (item, index) => {\n const itemArr = item.split(':');\n cssColor += `${itemArr[1]} ${itemArr[0] * 100}%`;\n if (index !== (colorStops.length - 1)) {\n cssColor += ', ';\n }\n });\n\n cssColor += ')';\n\n return cssColor;\n }\n\n return gradientColor;\n};\n\nexport default {\n rgb2arr,\n gradient,\n toRGB: memoize(toRGB),\n toCSSGradient,\n};\n","import colorUtil from '@antv/color-util';\nimport { isString } from '@antv/util';\nimport { AttributeCfg } from '../interface';\nimport Attribute from './base';\n\nexport default class Color extends Attribute {\n public gradient: (percent: number) => string;\n\n constructor(cfg: AttributeCfg) {\n super(cfg);\n this.type = 'color';\n this.names = ['color'];\n\n if (isString(this.values)) {\n this.linear = true;\n }\n\n this.gradient = colorUtil.gradient(this.values);\n }\n\n /**\n * @override\n */\n public getLinearValue(percent: number): string {\n return this.gradient(percent);\n }\n}\n","import { AttributeCfg } from '../interface';\nimport Attribute from './base';\n\nexport default class Opacity extends Attribute {\n constructor(cfg: AttributeCfg) {\n super(cfg);\n this.type = 'opacity';\n this.names = ['opacity'];\n }\n}\n","import { isArray, isNil } from '@antv/util';\nimport { AttributeCfg } from '../interface';\nimport Attribute from './base';\n\nexport type Value = number | string;\nexport type MappingValue = Value[] | Value;\n\nexport default class Position extends Attribute {\n constructor(cfg: AttributeCfg) {\n super(cfg);\n this.names = ['x', 'y'];\n this.type = 'position';\n }\n\n public mapping(x: MappingValue, y: MappingValue) {\n const [scaleX, scaleY] = this.scales;\n\n if (isNil(x) || isNil(y)) {\n return [];\n }\n\n return [\n isArray(x) ? x.map((xi) => scaleX.scale(xi)) : scaleX.scale(x),\n isArray(y) ? y.map((yi) => scaleY.scale(yi)) : scaleY.scale(y),\n ];\n }\n}\n","import { AttributeCfg } from '../interface';\nimport Attribute from './base';\n\nexport default class Shape extends Attribute {\n constructor(cfg: AttributeCfg) {\n super(cfg);\n this.type = 'shape';\n this.names = ['shape'];\n }\n\n /**\n * @override\n */\n public getLinearValue(percent: number): string {\n const idx = Math.round((this.values.length - 1) * percent);\n return this.values[idx];\n }\n}\n","import { AttributeCfg } from '../interface';\nimport Attribute from './base';\n\nexport default class Size extends Attribute {\n constructor(cfg: AttributeCfg) {\n super(cfg);\n this.type = 'size';\n this.names = ['size'];\n }\n}\n","import { TickMethod } from '../types';\ninterface MethodMap {\n [key: string]: TickMethod;\n}\nconst methodCache: MethodMap = {};\n\n/**\n * 获取计算 ticks 的方法\n * @param key 键值\n * @returns 计算 ticks 的方法\n */\nexport function getTickMethod(key: string): TickMethod {\n return methodCache[key];\n}\n\n/**\n * 注册计算 ticks 的方法\n * @param key 键值\n * @param method 方法\n */\nexport function registerTickMethod(key: string, method: TickMethod) {\n methodCache[key] = method;\n}\n","import { assign, isEmpty, isFunction, isNil, isNumber, isObject, isString, map } from '@antv/util';\nimport { getTickMethod } from './tick-method/register';\nimport { ScaleConfig, Tick } from './types';\nexport default abstract class Scale {\n /**\n * 度量的类型\n */\n public type: string = 'base';\n /**\n * 是否分类类型的度量\n */\n public isCategory?: boolean = false;\n /**\n * 是否线性度量,有linear, time 度量\n */\n public isLinear?: boolean = false;\n /**\n * 是否连续类型的度量,linear,time,log, pow, quantile, quantize 都支持\n */\n public isContinuous?: boolean = false;\n /**\n * 是否是常量的度量,传入和传出一致\n */\n public isIdentity: boolean = false;\n\n public field?: ScaleConfig['field'];\n public alias?: ScaleConfig['alias'];\n public values: ScaleConfig['values'] = [];\n public min?: ScaleConfig['min'];\n public max?: ScaleConfig['max'];\n public minLimit?: ScaleConfig['minLimit'];\n public maxLimit?: ScaleConfig['maxLimit'];\n public range: ScaleConfig['range'] = [0, 1];\n public ticks: ScaleConfig['ticks'] = [];\n public tickCount: ScaleConfig['tickCount'];\n public tickInterval: ScaleConfig['tickInterval'];\n public formatter?: ScaleConfig['formatter'];\n public tickMethod?: ScaleConfig['tickMethod'];\n protected __cfg__: ScaleConfig; // 缓存的旧配置, 用于 clone\n\n constructor(cfg: ScaleConfig) {\n this.__cfg__ = cfg;\n this.initCfg();\n this.init();\n }\n\n // 对于原始值的必要转换,如分类、时间字段需转换成数值,用transform/map命名可能更好\n public translate(v: any) {\n return v;\n }\n\n /** 将定义域转换为值域 */\n public abstract scale(value: any): number;\n\n /** 将值域转换为定义域 */\n public abstract invert(scaled: number): any;\n\n /** 重新初始化 */\n public change(cfg: ScaleConfig) {\n // 覆盖配置项,而不替代\n assign(this.__cfg__, cfg);\n this.init();\n }\n\n public clone(): Scale {\n return this.constructor(this.__cfg__);\n }\n\n /** 获取坐标轴需要的ticks */\n public getTicks(): Tick[] {\n return map(this.ticks, (tick: any, idx: number) => {\n if (isObject(tick)) {\n // 仅当符合Tick类型时才有意义\n return tick as Tick;\n }\n return {\n text: this.getText(tick, idx),\n tickValue: tick, // 原始value\n value: this.scale(tick), // scaled\n };\n });\n }\n\n /** 获取Tick的格式化结果 */\n public getText(value: any, key?: number): string {\n const formatter = this.formatter;\n const res = formatter ? formatter(value, key) : value;\n if (isNil(res) || !isFunction(res.toString)) {\n return '';\n }\n return res.toString();\n }\n\n // 获取配置项中的值,当前 scale 上的值可能会被修改\n protected getConfig(key) {\n return this.__cfg__[key];\n }\n\n // scale初始化\n protected init(): void {\n assign(this, this.__cfg__);\n this.setDomain();\n if (isEmpty(this.getConfig('ticks'))) {\n this.ticks = this.calculateTicks();\n }\n }\n\n // 子类上覆盖某些属性,不能直接在类上声明,否则会被覆盖\n protected initCfg() {}\n\n protected setDomain(): void {}\n\n protected calculateTicks(): any[] {\n const tickMethod = this.tickMethod;\n let ticks = [];\n if (isString(tickMethod)) {\n const method = getTickMethod(tickMethod);\n if (!method) {\n throw new Error('There is no method to to calculate ticks!');\n }\n ticks = method(this);\n } else if (isFunction(tickMethod)) {\n ticks = tickMethod(this);\n }\n return ticks;\n }\n\n // range 的最小值\n protected rangeMin() {\n return this.range[0];\n }\n\n // range 的最大值\n protected rangeMax() {\n return this.range[1];\n }\n\n /** 定义域转 0~1 */\n protected calcPercent(value: any, min: number, max: number): number {\n if (isNumber(value)) {\n return (value - min) / (max - min);\n }\n return NaN;\n }\n\n /** 0~1转定义域 */\n protected calcValue(percent: number, min: number, max: number): number {\n return min + percent * (max - min);\n }\n}\n","import { indexOf, isNil, isNumber } from '@antv/util';\nimport Base from '../base';\n\n/**\n * 分类度量\n * @class\n */\nclass Category extends Base {\n public readonly type: string = 'cat';\n public readonly isCategory: boolean = true;\n\n // 用于缓存 translate 函数\n private translateIndexMap;\n\n private buildIndexMap() {\n if (!this.translateIndexMap) {\n this.translateIndexMap = new Map();\n // 重新构建缓存\n for (let i = 0; i < this.values.length; i ++) {\n this.translateIndexMap.set(this.values[i], i);\n }\n }\n }\n\n public translate(value: any): number {\n // 按需构建 map\n this.buildIndexMap();\n // 找得到\n let idx = this.translateIndexMap.get(value);\n \n if (idx === undefined) {\n idx = isNumber(value) ? value : NaN;\n }\n return idx;\n }\n\n public scale(value: any): number {\n const order = this.translate(value);\n // 分类数据允许 0.5 范围内调整\n // if (order < this.min - 0.5 || order > this.max + 0.5) {\n // return NaN;\n // }\n const percent = this.calcPercent(order, this.min, this.max);\n return this.calcValue(percent, this.rangeMin(), this.rangeMax());\n }\n\n public invert(scaledValue: number) {\n const domainRange = this.max - this.min;\n const percent = this.calcPercent(scaledValue, this.rangeMin(), this.rangeMax());\n const idx = Math.round(domainRange * percent) + this.min;\n if (idx < this.min || idx > this.max) {\n return NaN;\n }\n return this.values[idx];\n }\n\n public getText(value: any, ...args: any[]): string {\n let v = value;\n // value为index\n if (isNumber(value) && !this.values.includes(value)) {\n v = this.values[v];\n }\n return super.getText(v, ...args);\n }\n // 复写属性\n protected initCfg() {\n this.tickMethod = 'cat';\n }\n // 设置 min, max\n protected setDomain() {\n // 用户有可能设置 min\n if (isNil(this.getConfig('min'))) {\n this.min = 0;\n }\n if (isNil(this.getConfig('max'))) {\n const size = this.values.length;\n this.max = size > 1 ? size - 1 : size;\n }\n\n // scale.init 的时候清除缓存\n if (this.translateIndexMap) {\n this.translateIndexMap = undefined;\n }\n }\n}\n\nexport default Category;\n","const token = /d{1,4}|M{1,4}|YY(?:YY)?|S{1,3}|Do|ZZ|Z|([HhMsDm])\\1?|[aA]|\"[^\"]*\"|'[^']*'/g;\nconst twoDigitsOptional = \"\\\\d\\\\d?\";\nconst twoDigits = \"\\\\d\\\\d\";\nconst threeDigits = \"\\\\d{3}\";\nconst fourDigits = \"\\\\d{4}\";\nconst word = \"[^\\\\s]+\";\nconst literal = /\\[([^]*?)\\]/gm;\n\ntype DateInfo = {\n year: number;\n month: number;\n day: number;\n hour: number;\n minute: number;\n second: number;\n millisecond: number;\n isPm: number | null;\n timezoneOffset: number | null;\n};\n\nexport type I18nSettings = {\n amPm: [string, string];\n dayNames: Days;\n dayNamesShort: Days;\n monthNames: Months;\n monthNamesShort: Months;\n DoFn(dayOfMonth: number): string;\n};\n\nexport type I18nSettingsOptional = Partial;\n\nexport type Days = [string, string, string, string, string, string, string];\nexport type Months = [\n string,\n string,\n string,\n string,\n string,\n string,\n string,\n string,\n string,\n string,\n string,\n string\n];\n\nfunction shorten(arr: T, sLen: number): string[] {\n const newArr: string[] = [];\n for (let i = 0, len = arr.length; i < len; i++) {\n newArr.push(arr[i].substr(0, sLen));\n }\n return newArr;\n}\n\nconst monthUpdate = (\n arrName: \"monthNames\" | \"monthNamesShort\" | \"dayNames\" | \"dayNamesShort\"\n) => (v: string, i18n: I18nSettings): number | null => {\n const lowerCaseArr = i18n[arrName].map(v => v.toLowerCase());\n const index = lowerCaseArr.indexOf(v.toLowerCase());\n if (index > -1) {\n return index;\n }\n return null;\n};\n\nexport function assign(a: A): A;\nexport function assign(a: A, b: B): A & B;\nexport function assign(a: A, b: B, c: C): A & B & C;\nexport function assign(a: A, b: B, c: C, d: D): A & B & C & D;\nexport function assign(origObj: any, ...args: any[]): any {\n for (const obj of args) {\n for (const key in obj) {\n // @ts-ignore ex\n origObj[key] = obj[key];\n }\n }\n return origObj;\n}\n\nconst dayNames: Days = [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\"\n];\nconst monthNames: Months = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n];\n\nconst monthNamesShort: Months = shorten(monthNames, 3) as Months;\nconst dayNamesShort: Days = shorten(dayNames, 3) as Days;\n\nconst defaultI18n: I18nSettings = {\n dayNamesShort,\n dayNames,\n monthNamesShort,\n monthNames,\n amPm: [\"am\", \"pm\"],\n DoFn(dayOfMonth: number) {\n return (\n dayOfMonth +\n [\"th\", \"st\", \"nd\", \"rd\"][\n dayOfMonth % 10 > 3\n ? 0\n : ((dayOfMonth - (dayOfMonth % 10) !== 10 ? 1 : 0) * dayOfMonth) % 10\n ]\n );\n }\n};\nlet globalI18n = assign({}, defaultI18n);\nconst setGlobalDateI18n = (i18n: I18nSettingsOptional): I18nSettings =>\n (globalI18n = assign(globalI18n, i18n));\n\nconst regexEscape = (str: string): string =>\n str.replace(/[|\\\\{()[^$+*?.-]/g, \"\\\\$&\");\n\nconst pad = (val: string | number, len = 2): string => {\n val = String(val);\n while (val.length < len) {\n val = \"0\" + val;\n }\n return val;\n};\n\nconst formatFlags: Record<\n string,\n (dateObj: Date, i18n: I18nSettings) => string\n> = {\n D: (dateObj: Date): string => String(dateObj.getDate()),\n DD: (dateObj: Date): string => pad(dateObj.getDate()),\n Do: (dateObj: Date, i18n: I18nSettings): string =>\n i18n.DoFn(dateObj.getDate()),\n d: (dateObj: Date): string => String(dateObj.getDay()),\n dd: (dateObj: Date): string => pad(dateObj.getDay()),\n ddd: (dateObj: Date, i18n: I18nSettings): string =>\n i18n.dayNamesShort[dateObj.getDay()],\n dddd: (dateObj: Date, i18n: I18nSettings): string =>\n i18n.dayNames[dateObj.getDay()],\n M: (dateObj: Date): string => String(dateObj.getMonth() + 1),\n MM: (dateObj: Date): string => pad(dateObj.getMonth() + 1),\n MMM: (dateObj: Date, i18n: I18nSettings): string =>\n i18n.monthNamesShort[dateObj.getMonth()],\n MMMM: (dateObj: Date, i18n: I18nSettings): string =>\n i18n.monthNames[dateObj.getMonth()],\n YY: (dateObj: Date): string =>\n pad(String(dateObj.getFullYear()), 4).substr(2),\n YYYY: (dateObj: Date): string => pad(dateObj.getFullYear(), 4),\n h: (dateObj: Date): string => String(dateObj.getHours() % 12 || 12),\n hh: (dateObj: Date): string => pad(dateObj.getHours() % 12 || 12),\n H: (dateObj: Date): string => String(dateObj.getHours()),\n HH: (dateObj: Date): string => pad(dateObj.getHours()),\n m: (dateObj: Date): string => String(dateObj.getMinutes()),\n mm: (dateObj: Date): string => pad(dateObj.getMinutes()),\n s: (dateObj: Date): string => String(dateObj.getSeconds()),\n ss: (dateObj: Date): string => pad(dateObj.getSeconds()),\n S: (dateObj: Date): string =>\n String(Math.round(dateObj.getMilliseconds() / 100)),\n SS: (dateObj: Date): string =>\n pad(Math.round(dateObj.getMilliseconds() / 10), 2),\n SSS: (dateObj: Date): string => pad(dateObj.getMilliseconds(), 3),\n a: (dateObj: Date, i18n: I18nSettings): string =>\n dateObj.getHours() < 12 ? i18n.amPm[0] : i18n.amPm[1],\n A: (dateObj: Date, i18n: I18nSettings): string =>\n dateObj.getHours() < 12\n ? i18n.amPm[0].toUpperCase()\n : i18n.amPm[1].toUpperCase(),\n ZZ(dateObj: Date): string {\n const offset = dateObj.getTimezoneOffset();\n return (\n (offset > 0 ? \"-\" : \"+\") +\n pad(Math.floor(Math.abs(offset) / 60) * 100 + (Math.abs(offset) % 60), 4)\n );\n },\n Z(dateObj: Date): string {\n const offset = dateObj.getTimezoneOffset();\n return (\n (offset > 0 ? \"-\" : \"+\") +\n pad(Math.floor(Math.abs(offset) / 60), 2) +\n \":\" +\n pad(Math.abs(offset) % 60, 2)\n );\n }\n};\n\ntype ParseInfo = [\n keyof DateInfo,\n string,\n ((v: string, i18n: I18nSettings) => number | null)?,\n string?\n];\nconst monthParse = (v: string): number => +v - 1;\nconst emptyDigits: ParseInfo = [null, twoDigitsOptional];\nconst emptyWord: ParseInfo = [null, word];\nconst amPm: ParseInfo = [\n \"isPm\",\n word,\n (v: string, i18n: I18nSettings): number | null => {\n const val = v.toLowerCase();\n if (val === i18n.amPm[0]) {\n return 0;\n } else if (val === i18n.amPm[1]) {\n return 1;\n }\n return null;\n }\n];\nconst timezoneOffset: ParseInfo = [\n \"timezoneOffset\",\n \"[^\\\\s]*?[\\\\+\\\\-]\\\\d\\\\d:?\\\\d\\\\d|[^\\\\s]*?Z?\",\n (v: string): number | null => {\n const parts = (v + \"\").match(/([+-]|\\d\\d)/gi);\n\n if (parts) {\n const minutes = +parts[1] * 60 + parseInt(parts[2], 10);\n return parts[0] === \"+\" ? minutes : -minutes;\n }\n\n return 0;\n }\n];\nconst parseFlags: Record = {\n D: [\"day\", twoDigitsOptional],\n DD: [\"day\", twoDigits],\n Do: [\"day\", twoDigitsOptional + word, (v: string): number => parseInt(v, 10)],\n M: [\"month\", twoDigitsOptional, monthParse],\n MM: [\"month\", twoDigits, monthParse],\n YY: [\n \"year\",\n twoDigits,\n (v: string): number => {\n const now = new Date();\n const cent = +(\"\" + now.getFullYear()).substr(0, 2);\n return +(\"\" + (+v > 68 ? cent - 1 : cent) + v);\n }\n ],\n h: [\"hour\", twoDigitsOptional, undefined, \"isPm\"],\n hh: [\"hour\", twoDigits, undefined, \"isPm\"],\n H: [\"hour\", twoDigitsOptional],\n HH: [\"hour\", twoDigits],\n m: [\"minute\", twoDigitsOptional],\n mm: [\"minute\", twoDigits],\n s: [\"second\", twoDigitsOptional],\n ss: [\"second\", twoDigits],\n YYYY: [\"year\", fourDigits],\n S: [\"millisecond\", \"\\\\d\", (v: string): number => +v * 100],\n SS: [\"millisecond\", twoDigits, (v: string): number => +v * 10],\n SSS: [\"millisecond\", threeDigits],\n d: emptyDigits,\n dd: emptyDigits,\n ddd: emptyWord,\n dddd: emptyWord,\n MMM: [\"month\", word, monthUpdate(\"monthNamesShort\")],\n MMMM: [\"month\", word, monthUpdate(\"monthNames\")],\n a: amPm,\n A: amPm,\n ZZ: timezoneOffset,\n Z: timezoneOffset\n};\n\n// Some common format strings\nconst globalMasks: { [key: string]: string } = {\n default: \"ddd MMM DD YYYY HH:mm:ss\",\n shortDate: \"M/D/YY\",\n mediumDate: \"MMM D, YYYY\",\n longDate: \"MMMM D, YYYY\",\n fullDate: \"dddd, MMMM D, YYYY\",\n isoDate: \"YYYY-MM-DD\",\n isoDateTime: \"YYYY-MM-DDTHH:mm:ssZ\",\n shortTime: \"HH:mm\",\n mediumTime: \"HH:mm:ss\",\n longTime: \"HH:mm:ss.SSS\"\n};\nconst setGlobalDateMasks = (masks: {\n [key: string]: string;\n}): { [key: string]: string } => assign(globalMasks, masks);\n\n/***\n * Format a date\n * @method format\n * @param {Date|number} dateObj\n * @param {string} mask Format of the date, i.e. 'mm-dd-yy' or 'shortDate'\n * @returns {string} Formatted date string\n */\nconst format = (\n dateObj: Date,\n mask: string = globalMasks[\"default\"],\n i18n: I18nSettingsOptional = {}\n): string => {\n if (typeof dateObj === \"number\") {\n dateObj = new Date(dateObj);\n }\n\n if (\n Object.prototype.toString.call(dateObj) !== \"[object Date]\" ||\n isNaN(dateObj.getTime())\n ) {\n throw new Error(\"Invalid Date pass to format\");\n }\n\n mask = globalMasks[mask] || mask;\n\n const literals: string[] = [];\n\n // Make literals inactive by replacing them with @@@\n mask = mask.replace(literal, function($0, $1) {\n literals.push($1);\n return \"@@@\";\n });\n\n const combinedI18nSettings: I18nSettings = assign(\n assign({}, globalI18n),\n i18n\n );\n // Apply formatting rules\n mask = mask.replace(token, $0 =>\n formatFlags[$0](dateObj, combinedI18nSettings)\n );\n // Inline literal values back into the formatted value\n return mask.replace(/@@@/g, () => literals.shift());\n};\n\n/**\n * Parse a date string into a Javascript Date object /\n * @method parse\n * @param {string} dateStr Date string\n * @param {string} format Date parse format\n * @param {i18n} I18nSettingsOptional Full or subset of I18N settings\n * @returns {Date|null} Returns Date object. Returns null what date string is invalid or doesn't match format\n */\nfunction parse(\n dateStr: string,\n format: string,\n i18n: I18nSettingsOptional = {}\n): Date | null {\n if (typeof format !== \"string\") {\n throw new Error(\"Invalid format in fecha parse\");\n }\n\n // Check to see if the format is actually a mask\n format = globalMasks[format] || format;\n\n // Avoid regular expression denial of service, fail early for really long strings\n // https://www.owasp.org/index.php/Regular_expression_Denial_of_Service_-_ReDoS\n if (dateStr.length > 1000) {\n return null;\n }\n\n // Default to the beginning of the year.\n const today = new Date();\n const dateInfo: DateInfo = {\n year: today.getFullYear(),\n month: 0,\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n isPm: null,\n timezoneOffset: null\n };\n const parseInfo: ParseInfo[] = [];\n const literals: string[] = [];\n\n // Replace all the literals with @@@. Hopefully a string that won't exist in the format\n let newFormat = format.replace(literal, ($0, $1) => {\n literals.push(regexEscape($1));\n return \"@@@\";\n });\n const specifiedFields: { [field: string]: boolean } = {};\n const requiredFields: { [field: string]: boolean } = {};\n\n // Change every token that we find into the correct regex\n newFormat = regexEscape(newFormat).replace(token, $0 => {\n const info = parseFlags[$0];\n const [field, regex, , requiredField] = info;\n\n // Check if the person has specified the same field twice. This will lead to confusing results.\n if (specifiedFields[field]) {\n throw new Error(`Invalid format. ${field} specified twice in format`);\n }\n\n specifiedFields[field] = true;\n\n // Check if there are any required fields. For instance, 12 hour time requires AM/PM specified\n if (requiredField) {\n requiredFields[requiredField] = true;\n }\n\n parseInfo.push(info);\n return \"(\" + regex + \")\";\n });\n\n // Check all the required fields are present\n Object.keys(requiredFields).forEach(field => {\n if (!specifiedFields[field]) {\n throw new Error(\n `Invalid format. ${field} is required in specified format`\n );\n }\n });\n\n // Add back all the literals after\n newFormat = newFormat.replace(/@@@/g, () => literals.shift());\n\n // Check if the date string matches the format. If it doesn't return null\n const matches = dateStr.match(new RegExp(newFormat, \"i\"));\n if (!matches) {\n return null;\n }\n\n const combinedI18nSettings: I18nSettings = assign(\n assign({}, globalI18n),\n i18n\n );\n\n // For each match, call the parser function for that date part\n for (let i = 1; i < matches.length; i++) {\n const [field, , parser] = parseInfo[i - 1];\n const value = parser\n ? parser(matches[i], combinedI18nSettings)\n : +matches[i];\n\n // If the parser can't make sense of the value, return null\n if (value == null) {\n return null;\n }\n\n dateInfo[field] = value;\n }\n\n if (dateInfo.isPm === 1 && dateInfo.hour != null && +dateInfo.hour !== 12) {\n dateInfo.hour = +dateInfo.hour + 12;\n } else if (dateInfo.isPm === 0 && +dateInfo.hour === 12) {\n dateInfo.hour = 0;\n }\n\n let dateTZ: Date;\n if (dateInfo.timezoneOffset == null) {\n dateTZ = new Date(\n dateInfo.year,\n dateInfo.month,\n dateInfo.day,\n dateInfo.hour,\n dateInfo.minute,\n dateInfo.second,\n dateInfo.millisecond\n );\n const validateFields: [\n \"month\" | \"day\" | \"hour\" | \"minute\" | \"second\",\n \"getMonth\" | \"getDate\" | \"getHours\" | \"getMinutes\" | \"getSeconds\"\n ][] = [\n [\"month\", \"getMonth\"],\n [\"day\", \"getDate\"],\n [\"hour\", \"getHours\"],\n [\"minute\", \"getMinutes\"],\n [\"second\", \"getSeconds\"]\n ];\n for (let i = 0, len = validateFields.length; i < len; i++) {\n // Check to make sure the date field is within the allowed range. Javascript dates allows values\n // outside the allowed range. If the values don't match the value was invalid\n if (\n specifiedFields[validateFields[i][0]] &&\n dateInfo[validateFields[i][0]] !== dateTZ[validateFields[i][1]]()\n ) {\n return null;\n }\n }\n } else {\n dateTZ = new Date(\n Date.UTC(\n dateInfo.year,\n dateInfo.month,\n dateInfo.day,\n dateInfo.hour,\n dateInfo.minute - dateInfo.timezoneOffset,\n dateInfo.second,\n dateInfo.millisecond\n )\n );\n\n // We can't validate dates in another timezone unfortunately. Do a basic check instead\n if (\n dateInfo.month > 11 ||\n dateInfo.month < 0 ||\n dateInfo.day > 31 ||\n dateInfo.day < 1 ||\n dateInfo.hour > 23 ||\n dateInfo.hour < 0 ||\n dateInfo.minute > 59 ||\n dateInfo.minute < 0 ||\n dateInfo.second > 59 ||\n dateInfo.second < 0\n ) {\n return null;\n }\n }\n\n // Don't allow invalid dates\n\n return dateTZ;\n}\nexport default {\n format,\n parse,\n defaultI18n,\n setGlobalDateI18n,\n setGlobalDateMasks\n};\nexport { format, parse, defaultI18n, setGlobalDateI18n, setGlobalDateMasks };\n","import { isDate, isString, last } from '@antv/util';\nimport fecha from 'fecha';\nimport * as fecha1 from 'fecha';\n\nimport bisector from './bisector';\nconst FORMAT_METHOD = 'format';\n\nexport function timeFormat(time, mask) { // 由于 fecha 包的 typescript 定义有问题,所以暂时兼容一下\n const method = fecha1[FORMAT_METHOD] || fecha[FORMAT_METHOD];\n return method(time, mask);\n}\n/**\n * 转换成时间戳\n * @param value 时间值\n */\nexport function toTimeStamp(value: any): number {\n if (isString(value)) {\n if (value.indexOf('T') > 0) {\n value = new Date(value).getTime();\n } else {\n // new Date('2010/01/10') 和 new Date('2010-01-10') 的差别在于:\n // 如果仅有年月日时,前者是带有时区的: Fri Jan 10 2020 02:40:13 GMT+0800 (中国标准时间)\n // 后者会格式化成 Sun Jan 10 2010 08:00:00 GMT+0800 (中国标准时间)\n value = new Date(value.replace(/-/gi, '/')).getTime();\n }\n }\n if (isDate(value)) {\n value = value.getTime();\n }\n return value;\n}\n\nconst SECOND = 1000;\nconst MINUTE = 60 * SECOND;\nconst HOUR = 60 * MINUTE;\nconst DAY = 24 * HOUR;\nconst MONTH = DAY * 31;\nconst YEAR = DAY * 365;\n\nexport { SECOND, MINUTE, HOUR, DAY, MONTH, YEAR };\ntype Interval = [string, number]; // [defaultMomentFormat, interval]\nconst intervals: Interval[] = [\n ['HH:mm:ss', SECOND],\n ['HH:mm:ss', SECOND * 10],\n ['HH:mm:ss', SECOND * 30],\n ['HH:mm', MINUTE],\n ['HH:mm', MINUTE * 10],\n ['HH:mm', MINUTE * 30],\n ['HH', HOUR],\n ['HH', HOUR * 6],\n ['HH', HOUR * 12],\n ['YYYY-MM-DD', DAY],\n ['YYYY-MM-DD', DAY * 4],\n ['YYYY-WW', DAY * 7],\n ['YYYY-MM', MONTH],\n ['YYYY-MM', MONTH * 4],\n ['YYYY-MM', MONTH * 6],\n ['YYYY', DAY * 380], // 借鉴echarts,保证每个周期累加时不会碰到恰巧不够的问题\n];\n\nexport function getTickInterval(min: number, max: number, tickCount: number): Interval {\n const target = (max - min) / tickCount;\n const idx = bisector((o: Interval) => o[1])(intervals, target) - 1;\n let interval: Interval = intervals[idx];\n if (idx < 0) {\n interval = intervals[0];\n } else if (idx >= intervals.length) {\n interval = last(intervals);\n }\n return interval;\n}\n","import { isNil } from '@antv/util';\n\ntype GetterFunc = (o: T) => number;\n\n/**\n * 二分右侧查找\n * https://github.com/d3/d3-array/blob/master/src/bisector.js\n */\nexport default function(getter: GetterFunc) {\n /**\n * x: 目标值\n * lo: 起始位置\n * hi: 结束位置\n */\n return function(a: T[], x: number, _lo?: number, _hi?: number) {\n let lo = isNil(_lo) ? 0 : _lo;\n let hi = isNil(_hi) ? a.length : _hi;\n while (lo < hi) {\n const mid = (lo + hi) >>> 1;\n if (getter(a[mid]) > x) {\n hi = mid;\n } else {\n lo = mid + 1;\n }\n }\n return lo;\n };\n}\n","import { each, isNumber } from '@antv/util';\nimport { timeFormat, toTimeStamp } from '../util/time';\nimport Category from './base';\n\n/**\n * 时间分类度量\n * @class\n */\nclass TimeCat extends Category {\n public readonly type: string = 'timeCat';\n public mask;\n /**\n * @override\n */\n public translate(value) {\n value = toTimeStamp(value);\n let index = this.values.indexOf(value);\n if (index === -1) {\n if (isNumber(value) && value < this.values.length) {\n index = value;\n } else {\n index = NaN;\n }\n }\n return index;\n }\n\n /**\n * 由于时间类型数据需要转换一下,所以复写 getText\n * @override\n */\n public getText(value: string | number, tickIndex?: number) {\n const index = this.translate(value);\n if (index > -1) {\n let result = this.values[index];\n const formatter = this.formatter;\n result = formatter ? formatter(result, tickIndex) : timeFormat(result, this.mask);\n return result;\n }\n return value;\n }\n protected initCfg() {\n this.tickMethod = 'time-cat';\n this.mask = 'YYYY-MM-DD';\n this.tickCount = 7; // 一般时间数据会显示 7, 14, 30 天的数字\n }\n\n protected setDomain() {\n const values = this.values;\n // 针对时间分类类型,会将时间统一转换为时间戳\n each(values, (v, i) => {\n values[i] = toTimeStamp(v);\n });\n values.sort((v1, v2) => {\n return v1 - v2;\n });\n super.setDomain();\n }\n}\n\nexport default TimeCat;\n","import { filter, getRange, head, isNil, last } from '@antv/util';\nimport Base from '../base';\n\n/**\n * 连续度量的基类\n * @class\n */\nexport default abstract class Continuous extends Base {\n public isContinuous?: boolean = true;\n public nice: boolean;\n\n public scale(value: any): number {\n if (isNil(value)) {\n return NaN;\n }\n const rangeMin = this.rangeMin();\n const rangeMax = this.rangeMax();\n const max = this.max;\n const min = this.min;\n if (max === min) {\n return rangeMin;\n }\n const percent = this.getScalePercent(value);\n return rangeMin + percent * (rangeMax - rangeMin);\n }\n\n protected init() {\n super.init();\n // init 完成后保证 min, max 包含 ticks 的范围\n const ticks = this.ticks;\n const firstTick = head(ticks);\n const lastTick = last(ticks);\n if (firstTick < this.min) {\n this.min = firstTick;\n }\n if (lastTick > this.max) {\n this.max = lastTick;\n }\n // strict-limit 方式\n if (!isNil(this.minLimit)) {\n this.min = firstTick;\n }\n if (!isNil(this.maxLimit)) {\n this.max = lastTick;\n }\n }\n\n protected setDomain() {\n const { min, max } = getRange(this.values);\n if (isNil(this.min)) {\n this.min = min;\n }\n if (isNil(this.max)) {\n this.max = max;\n }\n if (this.min > this.max) {\n this.min = min;\n this.max = max;\n }\n }\n\n protected calculateTicks(): any[] {\n let ticks = super.calculateTicks();\n if (!this.nice) {\n ticks = filter(ticks, (tick) => {\n return tick >= this.min && tick <= this.max;\n });\n }\n return ticks;\n }\n\n // 计算原始值值占的百分比\n protected getScalePercent(value) {\n const max = this.max;\n const min = this.min;\n return (value - min) / (max - min);\n }\n\n protected getInvertPercent(value) {\n return (value - this.rangeMin()) / (this.rangeMax() - this.rangeMin());\n }\n}\n","import Continuous from './base';\n\n/**\n * 线性度量\n * @class\n */\nexport default class Linear extends Continuous {\n public minTickInterval: number;\n public type = 'linear';\n public readonly isLinear: boolean = true;\n\n public invert(value: number): any {\n const percent = this.getInvertPercent(value);\n return this.min + percent * (this.max - this.min);\n }\n\n protected initCfg() {\n this.tickMethod = 'wilkinson-extended';\n this.nice = false;\n }\n}\n","import { each, isNil } from '@antv/util';\n\n// 求以a为次幂,结果为b的基数,如 x^^a = b;求x\n// 虽然数学上 b 不支持负数,但是这里需要支持 负数\nexport function calBase(a: number, b: number) {\n const e = Math.E;\n let value;\n if (b >= 0) {\n value = Math.pow(e, Math.log(b) / a); // 使用换底公式求底\n } else {\n value = Math.pow(e, Math.log(-b) / a) * -1; // 使用换底公式求底\n }\n return value;\n}\n\nexport function log(a: number, b: number) {\n if (a === 1) {\n return 1;\n }\n return Math.log(b) / Math.log(a);\n}\n\nexport function getLogPositiveMin(values, base, max?: number) {\n if (isNil(max)) {\n max = Math.max.apply(null, values);\n }\n let positiveMin = max;\n each(values, (value) => {\n if (value > 0 && value < positiveMin) {\n positiveMin = value;\n }\n });\n if (positiveMin === max) {\n positiveMin = max / base;\n }\n if (positiveMin > 1) {\n positiveMin = 1;\n }\n return positiveMin;\n}\n\nfunction digitLength(num: number) {\n // Get digit length of e\n const eSplit = num.toString().split(/[eE]/);\n const len = (eSplit[0].split('.')[1] || '').length - +(eSplit[1] || 0);\n return len > 0 ? len : 0;\n}\n\n/**\n * 高精度加法,解决 0.1 + 0.2 !== 0.3 的经典问题\n *\n * @param num1 加数\n * @param num2 被加数\n * @return {number} 返回值\n */\nexport function precisionAdd(num1: number, num2: number) {\n const num1Digits = digitLength(num1);\n const num2Digits = digitLength(num2);\n const baseNum = 10 ** Math.max(num1Digits, num2Digits);\n return (num1 * baseNum + num2 * baseNum) / baseNum;\n}\n","import { getLogPositiveMin, log } from '../util/math';\nimport Continuous from './base';\n/**\n * Log 度量,处理非均匀分布\n */\nclass Log extends Continuous {\n public readonly type: string = 'log';\n public base: number;\n // 用于解决 min: 0 的场景下的问题\n private positiveMin: number;\n\n /**\n * @override\n */\n public invert(value: number) {\n const base = this.base;\n const max = log(base, this.max);\n const rangeMin = this.rangeMin();\n const range = this.rangeMax() - rangeMin;\n let min;\n const positiveMin = this.positiveMin;\n if (positiveMin) {\n if (value === 0) {\n return 0;\n }\n min = log(base, positiveMin / base);\n const appendPercent = (1 / (max - min)) * range; // 0 到 positiveMin的占比\n if (value < appendPercent) {\n // 落到 0 - positiveMin 之间\n return (value / appendPercent) * positiveMin;\n }\n } else {\n min = log(base, this.min);\n }\n const percent = (value - rangeMin) / range;\n const tmp = percent * (max - min) + min;\n return Math.pow(base, tmp);\n }\n\n protected initCfg() {\n this.tickMethod = 'log';\n this.base = 10;\n this.tickCount = 6;\n this.nice = true;\n }\n\n // 设置\n protected setDomain() {\n super.setDomain();\n const min = this.min;\n if (min < 0) {\n throw new Error('When you use log scale, the minimum value must be greater than zero!');\n }\n if (min === 0) {\n this.positiveMin = getLogPositiveMin(this.values, this.base, this.max);\n }\n }\n\n // 根据当前值获取占比\n protected getScalePercent(value: number) {\n const max = this.max;\n let min = this.min;\n if (max === min) {\n return 0;\n }\n // 如果值小于等于0,则按照0处理\n if (value <= 0) {\n return 0;\n }\n const base = this.base;\n const positiveMin = this.positiveMin;\n // 如果min == 0, 则根据比0大的最小值,计算比例关系。这个最小值作为坐标轴上的第二个tick,第一个是0但是不显示\n if (positiveMin) {\n min = (positiveMin * 1) / base;\n }\n let percent;\n // 如果数值小于次小值,那么就计算 value / 次小值 占整体的比例\n if (value < positiveMin) {\n percent = value / positiveMin / (log(base, max) - log(base, min));\n } else {\n percent = (log(base, value) - log(base, min)) / (log(base, max) - log(base, min));\n }\n return percent;\n }\n}\n\nexport default Log;\n","import { calBase } from '../util/math';\nimport Continuous from './base';\n\n/**\n * Pow 度量,处理非均匀分布\n */\nclass Pow extends Continuous {\n public readonly type: string = 'pow';\n /**\n * 指数\n */\n public exponent: number;\n\n /**\n * @override\n */\n public invert(value: number) {\n const percent = this.getInvertPercent(value);\n const exponent = this.exponent;\n const max = calBase(exponent, this.max);\n const min = calBase(exponent, this.min);\n const tmp = percent * (max - min) + min;\n const factor = tmp >= 0 ? 1 : -1;\n return Math.pow(tmp, exponent) * factor;\n }\n\n protected initCfg() {\n this.tickMethod = 'pow';\n this.exponent = 2;\n this.tickCount = 5;\n this.nice = true;\n }\n\n // 获取度量计算时,value占的定义域百分比\n protected getScalePercent(value: number) {\n const max = this.max;\n const min = this.min;\n if (max === min) {\n return 0;\n }\n const exponent = this.exponent;\n const percent =\n (calBase(exponent, value) - calBase(exponent, min)) / (calBase(exponent, max) - calBase(exponent, min));\n return percent;\n }\n}\n\nexport default Pow;\n","import { each, isDate, isNil, isNumber, isString } from '@antv/util';\nimport { timeFormat, toTimeStamp } from '../util/time';\nimport Linear from './linear';\n\n/**\n * 时间度量\n * @class\n */\nclass Time extends Linear {\n public readonly type: string = 'time';\n public mask: string;\n\n /**\n * @override\n */\n public getText(value: string | number | Date, index?: number) {\n const numberValue = this.translate(value);\n const formatter = this.formatter;\n return formatter ? formatter(numberValue, index) : timeFormat(numberValue, this.mask);\n }\n /**\n * @override\n */\n public scale(value): number {\n let v = value;\n if (isString(v) || isDate(v)) {\n v = this.translate(v);\n }\n return super.scale(v);\n }\n /**\n * 将时间转换成数字\n * @override\n */\n public translate(v): number {\n return toTimeStamp(v);\n }\n protected initCfg() {\n this.tickMethod = 'time-pretty';\n this.mask = 'YYYY-MM-DD';\n this.tickCount = 7;\n this.nice = false;\n }\n\n protected setDomain() {\n const values = this.values;\n // 是否设置了 min, max,而不是直接取 this.min, this.max\n const minConfig = this.getConfig('min');\n const maxConfig = this.getConfig('max');\n // 如果设置了 min,max 则转换成时间戳\n if (!isNil(minConfig) || !isNumber(minConfig)) {\n this.min = this.translate(this.min);\n }\n if (!isNil(maxConfig) || !isNumber(maxConfig)) {\n this.max = this.translate(this.max);\n }\n // 没有设置 min, max 时\n if (values && values.length) {\n // 重新计算最大最小值\n const timeStamps = [];\n let min = Infinity; // 最小值\n let secondMin = min; // 次小值\n let max = 0;\n // 使用一个循环,计算min,max,secondMin\n each(values, (v) => {\n const timeStamp = toTimeStamp(v);\n if (isNaN(timeStamp)) {\n throw new TypeError(`Invalid Time: ${v} in time scale!`);\n }\n if (min > timeStamp) {\n secondMin = min;\n min = timeStamp;\n } else if (secondMin > timeStamp) {\n secondMin = timeStamp;\n }\n if (max < timeStamp) {\n max = timeStamp;\n }\n timeStamps.push(timeStamp);\n });\n // 存在多个值时,设置最小间距\n if (values.length > 1) {\n this.minTickInterval = secondMin - min;\n }\n if (isNil(minConfig)) {\n this.min = min;\n }\n if (isNil(maxConfig)) {\n this.max = max;\n }\n }\n }\n}\nexport default Time;\n","import { each, head, last } from '@antv/util';\nimport Continuous from './base';\n\n/**\n * 分段度量\n */\nclass Quantize extends Continuous {\n public type = 'quantize';\n\n public invert(value): number {\n const ticks = this.ticks;\n const length = ticks.length;\n const percent = this.getInvertPercent(value);\n const minIndex = Math.floor(percent * (length - 1));\n // 最后一个\n if (minIndex >= length - 1) {\n return last(ticks);\n }\n // 超出左边界, 则取第一个\n if (minIndex < 0) {\n return head(ticks);\n }\n const minTick = ticks[minIndex];\n const nextTick = ticks[minIndex + 1];\n // 比当前值小的 tick 在度量上的占比\n const minIndexPercent = minIndex / (length - 1);\n const maxIndexPercent = (minIndex + 1) / (length - 1);\n return minTick + (percent - minIndexPercent) / (maxIndexPercent - minIndexPercent) * (nextTick - minTick);\n }\n\n protected initCfg() {\n this.tickMethod = 'r-pretty';\n this.tickCount = 5;\n this.nice = true;\n }\n\n protected calculateTicks(): any[] {\n const ticks = super.calculateTicks();\n if (!this.nice) { // 如果 nice = false ,补充 min, max\n if (last(ticks) !== this.max) {\n ticks.push(this.max);\n }\n if (head(ticks) !== this.min) {\n ticks.unshift(this.min);\n }\n }\n return ticks;\n }\n\n // 计算当前值在刻度中的占比\n protected getScalePercent(value) {\n const ticks = this.ticks;\n // 超出左边界\n if (value < head(ticks)) {\n return 0;\n }\n // 超出右边界\n if (value > last(ticks)) {\n return 1;\n }\n let minIndex = 0;\n each(ticks, (tick, index) => {\n if (value >= tick) {\n minIndex = index;\n } else {\n return false;\n }\n });\n return minIndex / (ticks.length - 1);\n }\n}\n\nexport default Quantize;\n","import Quantize from './quantize';\n\nclass Quantile extends Quantize {\n public type = 'quantile';\n protected initCfg() {\n this.tickMethod = 'quantile';\n this.tickCount = 5;\n this.nice = true;\n }\n}\n\nexport default Quantile;\n","import Scale from './base';\nimport { ScaleConfig } from './types';\ntype ScaleConstructor = new (cfg: ScaleConfig) => T;\n\ninterface ScaleMap {\n [key: string]: ScaleConstructor;\n}\n\nconst map: ScaleMap = {};\n\nfunction getClass(key: string): ScaleConstructor {\n return map[key];\n}\n\nfunction registerClass(key: string, cls: ScaleConstructor) {\n if (getClass(key)) {\n throw new Error(`type '${key}' existed.`);\n }\n map[key] = cls;\n}\n\nexport { Scale, getClass as getScale, registerClass as registerScale };\n","import { has, isNumber } from '@antv/util';\nimport Base from '../base';\nimport { ScaleType } from '../types';\n\n/**\n * identity scale原则上是定义域和值域一致,scale/invert方法也是一致的\n * 参考R的实现:https://github.com/r-lib/scales/blob/master/R/pal-identity.r\n * 参考d3的实现(做了下转型):https://github.com/d3/d3-scale/blob/master/src/identity.js\n */\nexport default class Identity extends Base {\n public readonly type: ScaleType = 'identity';\n public readonly isIdentity: boolean = true;\n\n public calculateTicks() {\n return this.values;\n }\n\n public scale(value: any): number {\n // 如果传入的值不等于 identity 的值,则直接返回,用于一维图时的 dodge\n if (this.values[0] !== value && isNumber(value)) {\n return value;\n }\n return this.range[0];\n }\n\n public invert(value?: number): number {\n const range = this.range;\n if (value < range[0] || value > range[1]) {\n return NaN;\n }\n return this.values[0];\n }\n}\n","import { filter, isNil, isNumber, last } from '@antv/util';\nimport { ScaleConfig } from '../types';\n\n/**\n * 计算分类 ticks\n * @param cfg 度量的配置项\n * @returns 计算后的 ticks\n */\nexport default function calculateCatTicks(cfg: ScaleConfig): any[] {\n const { values, tickInterval, tickCount, showLast } = cfg;\n\n if (isNumber(tickInterval)) {\n const ticks = filter(values, (__: any, i: number) => i % tickInterval === 0);\n const lastValue = last(values);\n if (showLast && last(ticks) !== lastValue) {\n ticks.push(lastValue);\n }\n return ticks;\n }\n\n const len = values.length;\n let { min, max } = cfg;\n if (isNil(min)) {\n min = 0;\n }\n if (isNil(max)) {\n max = values.length - 1;\n }\n\n if (!isNumber(tickCount) || tickCount >= len) return values.slice(min, max + 1);\n if (tickCount <= 0 || max <= 0) return [];\n\n const interval = tickCount === 1 ? len : Math.floor(len / (tickCount - 1));\n const ticks = [];\n\n let idx = min;\n for (let i = 0; i < tickCount; i++) {\n if (idx >= max) break;\n\n idx = Math.min(min + i * interval, max);\n if (i === tickCount - 1 && showLast) ticks.push(values[max]);\n else ticks.push(values[idx]);\n }\n return ticks;\n}\n","import { ScaleConfig } from '../types';\n\nexport default function d3Linear(cfg: ScaleConfig): number[] {\n const { min, max, nice, tickCount } = cfg;\n const linear = new D3Linear();\n linear.domain([min, max]);\n if (nice) {\n linear.nice(tickCount);\n }\n return linear.ticks(tickCount);\n}\n\nconst DEFAULT_COUNT = 5;\nconst e10 = Math.sqrt(50);\nconst e5 = Math.sqrt(10);\nconst e2 = Math.sqrt(2);\n\n// https://github.com/d3/d3-scale\nexport class D3Linear {\n private _domain: number[] = [0, 1];\n\n public domain(domain?: number[]): D3Linear | number[] {\n if (domain) {\n this._domain = Array.from(domain, Number);\n return this;\n }\n return this._domain.slice();\n }\n\n public nice(count = DEFAULT_COUNT) {\n const d = this._domain.slice();\n let i0 = 0;\n let i1 = this._domain.length - 1;\n let start = this._domain[i0];\n let stop = this._domain[i1];\n let step;\n\n if (stop < start) {\n [start, stop] = [stop, start];\n [i0, i1] = [i1, i0];\n }\n step = tickIncrement(start, stop, count);\n\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = tickIncrement(start, stop, count);\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = tickIncrement(start, stop, count);\n }\n\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n this.domain(d);\n } else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n this.domain(d);\n }\n\n return this;\n }\n\n public ticks(count = DEFAULT_COUNT): number[] {\n return d3ArrayTicks(this._domain[0], this._domain[this._domain.length - 1], count || DEFAULT_COUNT);\n }\n}\n\nfunction d3ArrayTicks(start: number, stop: number, count: number): number[] {\n let reverse;\n let i = -1;\n let n;\n let ticks;\n let step;\n\n (stop = +stop), (start = +start), (count = +count);\n if (start === stop && count > 0) {\n return [start];\n }\n // tslint:disable-next-line\n if ((reverse = stop < start)) {\n (n = start), (start = stop), (stop = n);\n }\n // tslint:disable-next-line\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) {\n return [];\n }\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array((n = Math.ceil(stop - start + 1)));\n while (++i < n) {\n ticks[i] = (start + i) * step;\n }\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array((n = Math.ceil(start - stop + 1)));\n while (++i < n) {\n ticks[i] = (start - i) / step;\n }\n }\n\n if (reverse) {\n ticks.reverse();\n }\n\n return ticks;\n}\n\nfunction tickIncrement(start: number, stop: number, count: number): number {\n const step = (stop - start) / Math.max(0, count);\n const power = Math.floor(Math.log(step) / Math.LN10);\n const error = step / Math.pow(10, power);\n\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n","\nimport { fixedBase } from '@antv/util';\n\nfunction snapMultiple(v, base, snapType) {\n let div;\n if (snapType === 'ceil') {\n div = Math.ceil(v / base);\n } else if (snapType === 'floor') {\n div = Math.floor(v / base);\n } else {\n div = Math.round(v / base);\n }\n return div * base;\n}\n\nexport default function intervalTicks(min, max, interval) {\n // 变成 interval 的倍数\n let minTick = snapMultiple(min, interval, 'floor');\n let maxTick = snapMultiple(max, interval, 'ceil');\n // 统一小数位数\n minTick = fixedBase(minTick, interval);\n maxTick = fixedBase(maxTick, interval);\n const ticks = [];\n // https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Errors/Invalid_array_length\n const availableInterval = Math.max((maxTick - minTick) / (2 ** 12 - 1), interval);\n for (let i = minTick; i <= maxTick; i = i + availableInterval) {\n const tickValue = fixedBase(i, availableInterval); // 防止浮点数加法出现问题\n ticks.push(tickValue);\n }\n return {\n min: minTick,\n max: maxTick,\n ticks\n };\n}","import { isNil } from '@antv/util';\nimport { ScaleConfig } from '../types';\n\n/**\n * 按照给定的 minLimit/maxLimit/tickCount 均匀计算出刻度 ticks\n *\n * @param cfg Scale 配置项\n * @return ticks\n */\nexport default function strictLimit(cfg: ScaleConfig, defaultMin?: number, defaultMax?: number): number[] {\n const { minLimit, maxLimit, min, max, tickCount = 5 } = cfg;\n let tickMin = isNil(minLimit) ? (isNil(defaultMin) ? min : defaultMin) : minLimit;\n let tickMax = isNil(maxLimit) ? (isNil(defaultMax) ? max : defaultMax) : maxLimit;\n\n if (tickMin > tickMax) {\n [tickMax, tickMin] = [tickMin, tickMax];\n }\n\n if (tickCount <= 2) {\n return [tickMin, tickMax];\n }\n\n const step = (tickMax - tickMin) / (tickCount - 1);\n const ticks: number[] = [];\n\n for (let i = 0; i < tickCount; i++) {\n ticks.push(tickMin + step * i);\n }\n\n return ticks;\n}\n","// 为了解决 js 运算的精度问题\nexport function prettyNumber(n: number) {\n return Math.abs(n) < 1e-15 ? n : parseFloat(n.toFixed(15));\n}\n","import { head, indexOf, size, last } from '@antv/util';\nimport { prettyNumber } from './pretty-number';\n\nexport const DEFAULT_Q = [1, 5, 2, 2.5, 4, 3];\n\nexport const ALL_Q = [1, 5, 2, 2.5, 4, 3, 1.5, 7, 6, 8, 9];\n\nconst eps = Number.EPSILON * 100;\n\nfunction mod(n: number, m: number) {\n return ((n % m) + m) % m;\n}\n\nfunction round(n: number) {\n return Math.round(n * 1e12) / 1e12;\n}\n\nfunction simplicity(q: number, Q: number[], j: number, lmin: number, lmax: number, lstep: number) {\n const n = size(Q);\n const i = indexOf(Q, q);\n let v = 0;\n const m = mod(lmin, lstep);\n if ((m < eps || lstep - m < eps) && lmin <= 0 && lmax >= 0) {\n v = 1;\n }\n return 1 - i / (n - 1) - j + v;\n}\n\nfunction simplicityMax(q: number, Q: number[], j: number) {\n const n = size(Q);\n const i = indexOf(Q, q);\n const v = 1;\n return 1 - i / (n - 1) - j + v;\n}\n\nfunction density(k: number, m: number, dMin: number, dMax: number, lMin: number, lMax: number) {\n const r = (k - 1) / (lMax - lMin);\n const rt = (m - 1) / (Math.max(lMax, dMax) - Math.min(dMin, lMin));\n return 2 - Math.max(r / rt, rt / r);\n}\n\nfunction densityMax(k: number, m: number) {\n if (k >= m) {\n return 2 - (k - 1) / (m - 1);\n }\n return 1;\n}\n\nfunction coverage(dMin: number, dMax: number, lMin: number, lMax: number) {\n const range = dMax - dMin;\n return 1 - (0.5 * ((dMax - lMax) ** 2 + (dMin - lMin) ** 2)) / (0.1 * range) ** 2;\n}\n\nfunction coverageMax(dMin: number, dMax: number, span: number) {\n const range = dMax - dMin;\n if (span > range) {\n const half = (span - range) / 2;\n return 1 - half ** 2 / (0.1 * range) ** 2;\n }\n return 1;\n}\n\nfunction legibility() {\n return 1;\n}\n\n/**\n * An Extension of Wilkinson's Algorithm for Position Tick Labels on Axes\n * https://www.yuque.com/preview/yuque/0/2019/pdf/185317/1546999150858-45c3b9c2-4e86-4223-bf1a-8a732e8195ed.pdf\n * @param dMin 最小值\n * @param dMax 最大值\n * @param m tick个数\n * @param onlyLoose 是否允许扩展min、max,不绝对强制,例如[3, 97]\n * @param Q nice numbers集合\n * @param w 四个优化组件的权重\n */\nexport default function extended(\n dMin: number,\n dMax: number,\n n: number = 5,\n onlyLoose: boolean = true,\n Q: number[] = DEFAULT_Q,\n w: [number, number, number, number] = [0.25, 0.2, 0.5, 0.05]\n): { min: number; max: number; ticks: number[] } {\n // 处理小于 0 和小数的 tickCount\n const m = n < 0 ? 0 : Math.round(n);\n\n // nan 也会导致异常\n if (Number.isNaN(dMin) || Number.isNaN(dMax) || typeof dMin !== 'number' || typeof dMax !== 'number' || !m) {\n return {\n min: 0,\n max: 0,\n ticks: [],\n };\n }\n\n // js 极大值极小值问题,差值小于 1e-15 会导致计算出错\n if (dMax - dMin < 1e-15 || m === 1) {\n return {\n min: dMin,\n max: dMax,\n ticks: [dMin],\n };\n }\n\n // js 超大值问题\n if (dMax - dMin > 1e148) {\n const count = n || 5;\n const step = (dMax - dMin) / count;\n return {\n min: dMin,\n max: dMax,\n ticks: Array(count).fill(null).map((_,idx) => {\n return prettyNumber(dMin + step * idx);\n }),\n };\n }\n\n const best = {\n score: -2,\n lmin: 0,\n lmax: 0,\n lstep: 0,\n };\n\n let j = 1;\n while (j < Infinity) {\n for (let i = 0; i < Q.length; i += 1) {\n const q = Q[i];\n const sm = simplicityMax(q, Q, j);\n if (w[0] * sm + w[1] + w[2] + w[3] < best.score) {\n j = Infinity;\n break;\n }\n let k = 2;\n while (k < Infinity) {\n const dm = densityMax(k, m);\n if (w[0] * sm + w[1] + w[2] * dm + w[3] < best.score) {\n break;\n }\n\n const delta = (dMax - dMin) / (k + 1) / j / q;\n let z = Math.ceil(Math.log10(delta));\n\n while (z < Infinity) {\n const step = j * q * 10 ** z;\n const cm = coverageMax(dMin, dMax, step * (k - 1));\n\n if (w[0] * sm + w[1] * cm + w[2] * dm + w[3] < best.score) {\n break;\n }\n\n const minStart = Math.floor(dMax / step) * j - (k - 1) * j;\n const maxStart = Math.ceil(dMin / step) * j;\n\n if (minStart <= maxStart) {\n const count = maxStart - minStart;\n for (let i = 0; i <= count; i += 1) {\n const start = minStart + i;\n const lMin = start * (step / j);\n const lMax = lMin + step * (k - 1);\n const lStep = step;\n\n const s = simplicity(q, Q, j, lMin, lMax, lStep);\n const c = coverage(dMin, dMax, lMin, lMax);\n const g = density(k, m, dMin, dMax, lMin, lMax);\n const l = legibility();\n\n const score = w[0] * s + w[1] * c + w[2] * g + w[3] * l;\n if (score > best.score && (!onlyLoose || (lMin <= dMin && lMax >= dMax))) {\n best.lmin = lMin;\n best.lmax = lMax;\n best.lstep = lStep;\n best.score = score;\n }\n }\n }\n z += 1;\n }\n k += 1;\n }\n }\n j += 1;\n }\n\n // 处理精度问题,保证这三个数没有精度问题\n const lmax = prettyNumber(best.lmax);\n const lmin = prettyNumber(best.lmin);\n const lstep = prettyNumber(best.lstep);\n\n // 加 round 是为处理 extended(0.94, 1, 5)\n // 保证生成的 tickCount 没有精度问题\n const tickCount = Math.floor(round((lmax - lmin) / lstep)) + 1;\n const ticks = new Array(tickCount);\n\n // 少用乘法:防止出现 -1.2 + 1.2 * 3 = 2.3999999999999995 的情况\n ticks[0] = prettyNumber(lmin);\n for (let i = 1; i < tickCount; i++) {\n ticks[i] = prettyNumber(ticks[i - 1] + lstep);\n }\n\n return {\n min: Math.min(dMin, head(ticks)),\n max: Math.max(dMax, last(ticks)),\n ticks,\n };\n}\n","import { prettyNumber } from './pretty-number';\n\nexport default function pretty(min: number, max: number, m: number = 5) {\n if (min === max) {\n return {\n max,\n min,\n ticks: [min],\n };\n }\n\n const n = m < 0 ? 0 : Math.round(m);\n if (n === 0) return { max, min, ticks: [] };\n\n /*\n R pretty:\n https://svn.r-project.org/R/trunk/src/appl/pretty.c\n https://www.rdocumentation.org/packages/base/versions/3.5.2/topics/pretty\n */\n const h = 1.5; // high.u.bias\n const h5 = 0.5 + 1.5 * h; // u5.bias\n // 反正我也不会调参,跳过所有判断步骤\n const d = max - min;\n const c = d / n;\n // 当d非常小的时候触发,但似乎没什么用\n // const min_n = Math.floor(n / 3);\n // const shrink_sml = Math.pow(2, 5);\n // if (Math.log10(d) < -2) {\n // c = (_.max([ Math.abs(max), Math.abs(min) ]) * shrink_sml) / min_n;\n // }\n\n const base = Math.pow(10, Math.floor(Math.log10(c)));\n let unit = base;\n if (2 * base - c < h * (c - unit)) {\n unit = 2 * base;\n if (5 * base - c < h5 * (c - unit)) {\n unit = 5 * base;\n if (10 * base - c < h * (c - unit)) {\n unit = 10 * base;\n }\n }\n }\n const nu = Math.ceil(max / unit);\n const ns = Math.floor(min / unit);\n\n const hi = Math.max(nu * unit, max);\n const lo = Math.min(ns * unit, min);\n\n const size = Math.floor((hi - lo) / unit) + 1;\n const ticks = new Array(size);\n for (let i = 0; i < size; i++) {\n ticks[i] = prettyNumber(lo + i * unit);\n }\n\n return {\n min: lo,\n max: hi,\n ticks,\n };\n}\n","import { ScaleConfig } from '../types';\n/**\n * 计算几分位 https://github.com/simple-statistics/simple-statistics/blob/master/src/quantile_sorted.js\n * @param x 数组\n * @param p 百分比\n */\nfunction quantileSorted(x, p) {\n const idx = x.length * p;\n /*if (x.length === 0) { // 当前场景这些条件不可能命中\n throw new Error('quantile requires at least one value.');\n } else if (p < 0 || p > 1) {\n throw new Error('quantiles must be between 0 and 1');\n } else */\n \n if (p === 1) {\n // If p is 1, directly return the last element\n return x[x.length - 1];\n } else if (p === 0) {\n // If p is 0, directly return the first element\n return x[0];\n } else if (idx % 1 !== 0) {\n // If p is not integer, return the next element in array\n return x[Math.ceil(idx) - 1];\n } else if (x.length % 2 === 0) {\n // If the list has even-length, we'll take the average of this number\n // and the next value, if there is one\n return (x[idx - 1] + x[idx]) / 2;\n } else {\n // Finally, in the simple case of an integer value\n // with an odd-length list, return the x value at the index.\n return x[idx];\n }\n}\n\nexport default function calculateTicks(cfg: ScaleConfig) {\n const { tickCount, values } = cfg;\n if (!values || !values.length) {\n return [];\n }\n const sorted = values.slice().sort((a, b) => {\n return a - b;\n });\n const ticks = [];\n for (let i = 0; i < tickCount; i++) {\n const p = i / (tickCount - 1);\n ticks.push(quantileSorted(sorted, p));\n }\n return ticks;\n}\n","import { ScaleConfig } from '../types';\nimport { DAY, getTickInterval, HOUR, MINUTE, MONTH, SECOND, YEAR } from '../util/time';\n\nfunction getYear(date: number) {\n return new Date(date).getFullYear();\n}\n\nfunction createYear(year: number) {\n return new Date(year, 0, 1).getTime();\n}\n\nfunction getMonth(date: number) {\n return new Date(date).getMonth();\n}\n\nfunction diffMonth(min: number, max: number) {\n const minYear = getYear(min);\n const maxYear = getYear(max);\n const minMonth = getMonth(min);\n const maxMonth = getMonth(max);\n return (maxYear - minYear) * 12 + ((maxMonth - minMonth) % 12);\n}\n\nfunction creatMonth(year: number, month: number) {\n return new Date(year, month, 1).getTime();\n}\n\nfunction diffDay(min: number, max: number) {\n return Math.ceil((max - min) / DAY);\n}\n\nfunction diffHour(min: number, max: number) {\n return Math.ceil((max - min) / HOUR);\n}\n\nfunction diffMinus(min: number, max: number) {\n return Math.ceil((max - min) / (60 * 1000));\n}\n\n/**\n * 计算 time 的 ticks,对 month, year 进行 pretty 处理\n * @param cfg 度量的配置项\n * @returns 计算后的 ticks\n */\nexport default function timePretty(cfg: ScaleConfig): number[] {\n const { min, max, minTickInterval, tickCount } = cfg;\n let { tickInterval } = cfg;\n const ticks: number[] = [];\n // 指定 tickInterval 后 tickCount 不生效,需要重新计算\n if (!tickInterval) {\n tickInterval = (max - min) / tickCount;\n // 如果设置了最小间距,则使用最小间距\n if (minTickInterval && tickInterval < minTickInterval) {\n tickInterval = minTickInterval;\n }\n }\n tickInterval = Math.max(Math.floor((max - min) / (2 ** 12 - 1)), tickInterval);\n const minYear = getYear(min);\n // 如果间距大于 1 年,则将开始日期从整年开始\n if (tickInterval > YEAR) {\n const maxYear = getYear(max);\n const yearInterval = Math.ceil(tickInterval / YEAR);\n for (let i = minYear; i <= maxYear + yearInterval; i = i + yearInterval) {\n ticks.push(createYear(i));\n }\n } else if (tickInterval > MONTH) {\n // 大于月时\n const monthInterval = Math.ceil(tickInterval / MONTH);\n const mmMoth = getMonth(min);\n const dMonths = diffMonth(min, max);\n for (let i = 0; i <= dMonths + monthInterval; i = i + monthInterval) {\n ticks.push(creatMonth(minYear, i + mmMoth));\n }\n } else if (tickInterval > DAY) {\n // 大于天\n const date = new Date(min);\n const year = date.getFullYear();\n const month = date.getMonth();\n const mday = date.getDate();\n const day = Math.ceil(tickInterval / DAY);\n const ddays = diffDay(min, max);\n for (let i = 0; i < ddays + day; i = i + day) {\n ticks.push(new Date(year, month, mday + i).getTime());\n }\n } else if (tickInterval > HOUR) {\n // 大于小时\n const date = new Date(min);\n const year = date.getFullYear();\n const month = date.getMonth();\n const day = date.getDate();\n const hour = date.getHours();\n const hours = Math.ceil(tickInterval / HOUR);\n const dHours = diffHour(min, max);\n for (let i = 0; i <= dHours + hours; i = i + hours) {\n ticks.push(new Date(year, month, day, hour + i).getTime());\n }\n } else if (tickInterval > MINUTE) {\n // 大于分钟\n const dMinus = diffMinus(min, max);\n const minutes = Math.ceil(tickInterval / MINUTE);\n for (let i = 0; i <= dMinus + minutes; i = i + minutes) {\n ticks.push(min + i * MINUTE);\n }\n } else {\n // 小于分钟\n let interval = tickInterval;\n if (interval < SECOND) {\n interval = SECOND;\n }\n const minSecond = Math.floor(min / SECOND) * SECOND;\n const dSeconds = Math.ceil((max - min) / SECOND);\n const seconds = Math.ceil(interval / SECOND);\n for (let i = 0; i < dSeconds + seconds; i = i + seconds) {\n ticks.push(minSecond + i * SECOND);\n }\n }\n\n // 最好是能从算法能解决这个问题,但是如果指定了 tickInterval,计算 ticks,也只能这么算,所以\n // 打印警告提示\n if (ticks.length >= 512) {\n console.warn(`Notice: current ticks length(${ticks.length}) >= 512, may cause performance issues, even out of memory. Because of the configure \"tickInterval\"(in milliseconds, current is ${tickInterval}) is too small, increase the value to solve the problem!`);\n }\n\n return ticks;\n}\n","import cat from './cat';\nimport d3Linear from './d3-linear';\nimport linear from './linear';\nimport log from './log';\nimport pow from './pow';\nimport quantile from './quantile';\nimport rPretty from './r-prettry';\nimport { getTickMethod, registerTickMethod } from './register';\nimport time from './time';\nimport timeCat from './time-cat';\nimport timePretty from './time-pretty';\n\nregisterTickMethod('cat', cat);\nregisterTickMethod('time-cat', timeCat);\nregisterTickMethod('wilkinson-extended', linear);\nregisterTickMethod('r-pretty', rPretty);\nregisterTickMethod('time', time);\nregisterTickMethod('time-pretty', timePretty);\nregisterTickMethod('log', log);\nregisterTickMethod('pow', pow);\nregisterTickMethod('quantile', quantile);\nregisterTickMethod('d3-linear', d3Linear);\n\nexport { getTickMethod, registerTickMethod };\n","import { ScaleConfig } from '../types';\nimport catTicks from './cat';\n/**\n * 计算时间分类的 ticks, 保头,保尾\n * @param cfg 度量的配置项\n * @returns 计算后的 ticks\n */\nexport default function timeCat(cfg: ScaleConfig): any[] {\n // 默认保留最后一条\n const ticks = catTicks({ showLast: true, ...cfg });\n return ticks;\n}\n","import { head, isNil, last } from '@antv/util';\nimport { ScaleConfig } from '../types';\nimport extended from '../util/extended';\nimport interval from '../util/interval';\nimport strictLimit from '../util/strict-limit';\n\n/**\n * 计算线性的 ticks,使用 wilkinson extended 方法\n * @param cfg 度量的配置项\n * @returns 计算后的 ticks\n */\nexport default function linear(cfg: ScaleConfig): number[] {\n const { min, max, tickCount, nice, tickInterval, minLimit, maxLimit } = cfg;\n const ticks = extended(min, max, tickCount, nice).ticks;\n\n if (!isNil(minLimit) || !isNil(maxLimit)) {\n return strictLimit(cfg, head(ticks), last(ticks));\n }\n if (tickInterval) {\n return interval(min, max, tickInterval).ticks;\n }\n return ticks;\n}\n","import { head, isNil, last } from '@antv/util';\nimport { ScaleConfig } from '../types';\nimport interval from '../util/interval';\nimport pretty from '../util/pretty';\nimport strictLimit from '../util/strict-limit';\n\n/**\n * 计算线性的 ticks,使用 R's pretty 方法\n * @param cfg 度量的配置项\n * @returns 计算后的 ticks\n */\nexport default function linearPretty(cfg: ScaleConfig): number[] {\n const { min, max, tickCount, tickInterval, minLimit, maxLimit } = cfg;\n const ticks = pretty(min, max, tickCount).ticks;\n\n if (!isNil(minLimit) || !isNil(maxLimit)) {\n return strictLimit(cfg, head(ticks), last(ticks));\n }\n if (tickInterval) {\n return interval(min, max, tickInterval).ticks;\n }\n return ticks;\n}\n","import { ScaleConfig } from '../types';\nimport { getTickInterval } from '../util/time';\n\nexport default function calculateTimeTicks(cfg: ScaleConfig): number[] {\n const { min, max, minTickInterval } = cfg;\n let tickInterval = cfg.tickInterval;\n let tickCount = cfg.tickCount;\n // 指定 tickInterval 后 tickCount 不生效,需要重新计算\n if (tickInterval) {\n tickCount = Math.ceil((max - min) / tickInterval);\n } else {\n tickInterval = getTickInterval(min, max, tickCount)[1];\n const count = (max - min) / tickInterval;\n const ratio = count / tickCount;\n if (ratio > 1) {\n tickInterval = tickInterval * Math.ceil(ratio);\n }\n // 如果设置了最小间距,则使用最小间距\n if (minTickInterval && tickInterval < minTickInterval) {\n tickInterval = minTickInterval;\n }\n }\n\n tickInterval = Math.max(Math.floor((max - min) / (2 ** 12 - 1)), tickInterval);\n const ticks = [];\n for (let i = min; i < max + tickInterval; i += tickInterval) {\n ticks.push(i);\n }\n return ticks;\n}\n","import { isEmpty } from '@antv/util';\nimport { ScaleConfig } from '../types';\nimport { getLogPositiveMin, log } from '../util/math';\n\n/**\n * 计算 log 的 ticks,考虑 min = 0 的场景\n * @param cfg 度量的配置项\n * @returns 计算后的 ticks\n */\nexport default function calculateLogTicks(cfg: ScaleConfig) {\n const { base, tickCount, min, max, values } = cfg;\n let minTick;\n const maxTick = log(base, max);\n if (min > 0) {\n minTick = Math.floor(log(base, min));\n } else {\n const positiveMin = getLogPositiveMin(values, base, max);\n minTick = Math.floor(log(base, positiveMin));\n }\n const count = maxTick - minTick;\n const avg = Math.ceil(count / tickCount);\n const ticks = [];\n for (let i = minTick; i < maxTick + avg; i = i + avg) {\n ticks.push(Math.pow(base, i));\n }\n if (min <= 0) {\n // 最小值 <= 0 时显示 0\n ticks.unshift(0);\n }\n return ticks;\n}\n","import { ScaleConfig } from '../types';\nimport { calBase } from '../util/math';\nimport pretty from '../util/pretty';\n/**\n * 计算 Pow 的 ticks\n * @param cfg 度量的配置项\n * @returns 计算后的 ticks\n */\nexport default function calculatePowTicks(cfg: ScaleConfig) {\n const { exponent, tickCount } = cfg;\n const max = Math.ceil(calBase(exponent, cfg.max));\n const min = Math.floor(calBase(exponent, cfg.min));\n const ticks = pretty(min, max, tickCount).ticks;\n return ticks.map((tick) => {\n const factor = tick >= 0 ? 1 : -1;\n return Math.pow(tick, exponent) * factor;\n });\n}\n","import { head, isNil, last } from '@antv/util';\nimport { ScaleConfig } from '../types';\nimport d3Linear from '../util/d3-linear';\nimport interval from '../util/interval';\nimport strictLimit from '../util/strict-limit';\n\nexport default function d3LinearTickMethod(cfg: ScaleConfig): number[] {\n const { min, max, tickInterval, minLimit, maxLimit } = cfg;\n const ticks = d3Linear(cfg);\n\n if (!isNil(minLimit) || !isNil(maxLimit)) {\n return strictLimit(cfg, head(ticks), last(ticks));\n }\n if (tickInterval) {\n return interval(min, max, tickInterval).ticks;\n }\n return ticks;\n}\n","import Scale from './base';\nimport Category from './category/base';\nimport TimeCat from './category/time';\nimport Linear from './continuous/linear';\nimport Log from './continuous/log';\nimport Pow from './continuous/pow';\nimport Time from './continuous/time';\nimport Quantize from './continuous/quantize';\nimport Quantile from './continuous/quantile';\nimport { getScale, registerScale } from './factory';\nimport Identity from './identity/index';\nimport { getTickMethod, registerTickMethod } from './tick-method/index';\nimport { ScaleConfig, Tick } from './types';\n\nregisterScale('cat', Category);\nregisterScale('category', Category);\nregisterScale('identity', Identity);\nregisterScale('linear', Linear);\nregisterScale('log', Log);\nregisterScale('pow', Pow);\nregisterScale('time', Time);\nregisterScale('timeCat', TimeCat);\nregisterScale('quantize', Quantize);\nregisterScale('quantile', Quantile);\n\nexport {\n Category,\n Identity,\n Linear,\n Log,\n Pow,\n Time,\n TimeCat,\n Quantile,\n Quantize,\n Scale,\n getScale,\n registerScale,\n ScaleConfig,\n Tick,\n getTickMethod,\n registerTickMethod,\n};\n","import Attribute, { AttributeConstructor } from './attributes/base';\n\ninterface AttributeMapType {\n [key: string]: any;\n}\n\n// 所有的 attribute map\nconst ATTRIBUTE_MAP: AttributeMapType = {};\n\n/**\n * 通过类型获得 Attribute 类\n * @param type\n */\nconst getAttribute = (type: string) => {\n return ATTRIBUTE_MAP[type.toLowerCase()];\n};\n\nconst registerAttribute = (type: string, ctor: AttributeConstructor) => {\n // 注册的时候,需要校验 type 重名,不区分大小写\n if (getAttribute(type)) {\n throw new Error(`Attribute type '${type}' existed.`);\n }\n // 存储到 map 中\n ATTRIBUTE_MAP[type.toLowerCase()] = ctor;\n};\n\nexport { getAttribute, registerAttribute, Attribute };\nexport * from './interface';\n","import Attribute from './attributes/base';\n\nimport Color from './attributes/color';\nimport Opacity from './attributes/opacity';\nimport Position from './attributes/position';\nimport Shape from './attributes/shape';\nimport Size from './attributes/size';\n\nimport { getAttribute, registerAttribute } from './factory';\n\nregisterAttribute('Color', Color);\nregisterAttribute('Opacity', Opacity);\nregisterAttribute('Position', Position);\nregisterAttribute('Shape', Shape);\nregisterAttribute('Size', Size);\n\nexport {\n registerAttribute,\n getAttribute,\n Attribute,\n // 以下 export 是为了兼容,理论上是不需要的\n Color,\n Opacity,\n Position,\n Shape,\n Size,\n};\n\nexport * from './interface';\n","import * as glMatrix from \"./common.js\";\n/**\n * 3 Dimensional Vector\n * @module vec3\n */\n\n/**\n * Creates a new, empty vec3\n *\n * @returns {vec3} a new 3D vector\n */\n\nexport function create() {\n var out = new glMatrix.ARRAY_TYPE(3);\n\n if (glMatrix.ARRAY_TYPE != Float32Array) {\n out[0] = 0;\n out[1] = 0;\n out[2] = 0;\n }\n\n return out;\n}\n/**\n * Creates a new vec3 initialized with values from an existing vector\n *\n * @param {ReadonlyVec3} a vector to clone\n * @returns {vec3} a new 3D vector\n */\n\nexport function clone(a) {\n var out = new glMatrix.ARRAY_TYPE(3);\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\n/**\n * Calculates the length of a vec3\n *\n * @param {ReadonlyVec3} a vector to calculate length of\n * @returns {Number} length of a\n */\n\nexport function length(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return Math.hypot(x, y, z);\n}\n/**\n * Creates a new vec3 initialized with the given values\n *\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @returns {vec3} a new 3D vector\n */\n\nexport function fromValues(x, y, z) {\n var out = new glMatrix.ARRAY_TYPE(3);\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\n/**\n * Copy the values from one vec3 to another\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the source vector\n * @returns {vec3} out\n */\n\nexport function copy(out, a) {\n out[0] = a[0];\n out[1] = a[1];\n out[2] = a[2];\n return out;\n}\n/**\n * Set the components of a vec3 to the given values\n *\n * @param {vec3} out the receiving vector\n * @param {Number} x X component\n * @param {Number} y Y component\n * @param {Number} z Z component\n * @returns {vec3} out\n */\n\nexport function set(out, x, y, z) {\n out[0] = x;\n out[1] = y;\n out[2] = z;\n return out;\n}\n/**\n * Adds two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function add(out, a, b) {\n out[0] = a[0] + b[0];\n out[1] = a[1] + b[1];\n out[2] = a[2] + b[2];\n return out;\n}\n/**\n * Subtracts vector b from vector a\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function subtract(out, a, b) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n return out;\n}\n/**\n * Multiplies two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function multiply(out, a, b) {\n out[0] = a[0] * b[0];\n out[1] = a[1] * b[1];\n out[2] = a[2] * b[2];\n return out;\n}\n/**\n * Divides two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function divide(out, a, b) {\n out[0] = a[0] / b[0];\n out[1] = a[1] / b[1];\n out[2] = a[2] / b[2];\n return out;\n}\n/**\n * Math.ceil the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to ceil\n * @returns {vec3} out\n */\n\nexport function ceil(out, a) {\n out[0] = Math.ceil(a[0]);\n out[1] = Math.ceil(a[1]);\n out[2] = Math.ceil(a[2]);\n return out;\n}\n/**\n * Math.floor the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to floor\n * @returns {vec3} out\n */\n\nexport function floor(out, a) {\n out[0] = Math.floor(a[0]);\n out[1] = Math.floor(a[1]);\n out[2] = Math.floor(a[2]);\n return out;\n}\n/**\n * Returns the minimum of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function min(out, a, b) {\n out[0] = Math.min(a[0], b[0]);\n out[1] = Math.min(a[1], b[1]);\n out[2] = Math.min(a[2], b[2]);\n return out;\n}\n/**\n * Returns the maximum of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function max(out, a, b) {\n out[0] = Math.max(a[0], b[0]);\n out[1] = Math.max(a[1], b[1]);\n out[2] = Math.max(a[2], b[2]);\n return out;\n}\n/**\n * Math.round the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to round\n * @returns {vec3} out\n */\n\nexport function round(out, a) {\n out[0] = Math.round(a[0]);\n out[1] = Math.round(a[1]);\n out[2] = Math.round(a[2]);\n return out;\n}\n/**\n * Scales a vec3 by a scalar number\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to scale\n * @param {Number} b amount to scale the vector by\n * @returns {vec3} out\n */\n\nexport function scale(out, a, b) {\n out[0] = a[0] * b;\n out[1] = a[1] * b;\n out[2] = a[2] * b;\n return out;\n}\n/**\n * Adds two vec3's after scaling the second operand by a scalar value\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {Number} scale the amount to scale b by before adding\n * @returns {vec3} out\n */\n\nexport function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n out[1] = a[1] + b[1] * scale;\n out[2] = a[2] + b[2] * scale;\n return out;\n}\n/**\n * Calculates the euclidian distance between two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} distance between a and b\n */\n\nexport function distance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return Math.hypot(x, y, z);\n}\n/**\n * Calculates the squared euclidian distance between two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} squared distance between a and b\n */\n\nexport function squaredDistance(a, b) {\n var x = b[0] - a[0];\n var y = b[1] - a[1];\n var z = b[2] - a[2];\n return x * x + y * y + z * z;\n}\n/**\n * Calculates the squared length of a vec3\n *\n * @param {ReadonlyVec3} a vector to calculate squared length of\n * @returns {Number} squared length of a\n */\n\nexport function squaredLength(a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n return x * x + y * y + z * z;\n}\n/**\n * Negates the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to negate\n * @returns {vec3} out\n */\n\nexport function negate(out, a) {\n out[0] = -a[0];\n out[1] = -a[1];\n out[2] = -a[2];\n return out;\n}\n/**\n * Returns the inverse of the components of a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to invert\n * @returns {vec3} out\n */\n\nexport function inverse(out, a) {\n out[0] = 1.0 / a[0];\n out[1] = 1.0 / a[1];\n out[2] = 1.0 / a[2];\n return out;\n}\n/**\n * Normalize a vec3\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a vector to normalize\n * @returns {vec3} out\n */\n\nexport function normalize(out, a) {\n var x = a[0];\n var y = a[1];\n var z = a[2];\n var len = x * x + y * y + z * z;\n\n if (len > 0) {\n //TODO: evaluate use of glm_invsqrt here?\n len = 1 / Math.sqrt(len);\n }\n\n out[0] = a[0] * len;\n out[1] = a[1] * len;\n out[2] = a[2] * len;\n return out;\n}\n/**\n * Calculates the dot product of two vec3's\n *\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {Number} dot product of a and b\n */\n\nexport function dot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n/**\n * Computes the cross product of two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @returns {vec3} out\n */\n\nexport function cross(out, a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2];\n var bx = b[0],\n by = b[1],\n bz = b[2];\n out[0] = ay * bz - az * by;\n out[1] = az * bx - ax * bz;\n out[2] = ax * by - ay * bx;\n return out;\n}\n/**\n * Performs a linear interpolation between two vec3's\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nexport function lerp(out, a, b, t) {\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n out[0] = ax + t * (b[0] - ax);\n out[1] = ay + t * (b[1] - ay);\n out[2] = az + t * (b[2] - az);\n return out;\n}\n/**\n * Performs a hermite interpolation with two control points\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {ReadonlyVec3} c the third operand\n * @param {ReadonlyVec3} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nexport function hermite(out, a, b, c, d, t) {\n var factorTimes2 = t * t;\n var factor1 = factorTimes2 * (2 * t - 3) + 1;\n var factor2 = factorTimes2 * (t - 2) + t;\n var factor3 = factorTimes2 * (t - 1);\n var factor4 = factorTimes2 * (3 - 2 * t);\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\n/**\n * Performs a bezier interpolation with two control points\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the first operand\n * @param {ReadonlyVec3} b the second operand\n * @param {ReadonlyVec3} c the third operand\n * @param {ReadonlyVec3} d the fourth operand\n * @param {Number} t interpolation amount, in the range [0-1], between the two inputs\n * @returns {vec3} out\n */\n\nexport function bezier(out, a, b, c, d, t) {\n var inverseFactor = 1 - t;\n var inverseFactorTimesTwo = inverseFactor * inverseFactor;\n var factorTimes2 = t * t;\n var factor1 = inverseFactorTimesTwo * inverseFactor;\n var factor2 = 3 * t * inverseFactorTimesTwo;\n var factor3 = 3 * factorTimes2 * inverseFactor;\n var factor4 = factorTimes2 * t;\n out[0] = a[0] * factor1 + b[0] * factor2 + c[0] * factor3 + d[0] * factor4;\n out[1] = a[1] * factor1 + b[1] * factor2 + c[1] * factor3 + d[1] * factor4;\n out[2] = a[2] * factor1 + b[2] * factor2 + c[2] * factor3 + d[2] * factor4;\n return out;\n}\n/**\n * Generates a random vector with the given scale\n *\n * @param {vec3} out the receiving vector\n * @param {Number} [scale] Length of the resulting vector. If ommitted, a unit vector will be returned\n * @returns {vec3} out\n */\n\nexport function random(out, scale) {\n scale = scale || 1.0;\n var r = glMatrix.RANDOM() * 2.0 * Math.PI;\n var z = glMatrix.RANDOM() * 2.0 - 1.0;\n var zScale = Math.sqrt(1.0 - z * z) * scale;\n out[0] = Math.cos(r) * zScale;\n out[1] = Math.sin(r) * zScale;\n out[2] = z * scale;\n return out;\n}\n/**\n * Transforms the vec3 with a mat4.\n * 4th vector component is implicitly '1'\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyMat4} m matrix to transform with\n * @returns {vec3} out\n */\n\nexport function transformMat4(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2];\n var w = m[3] * x + m[7] * y + m[11] * z + m[15];\n w = w || 1.0;\n out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w;\n out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w;\n out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w;\n return out;\n}\n/**\n * Transforms the vec3 with a mat3.\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyMat3} m the 3x3 matrix to transform with\n * @returns {vec3} out\n */\n\nexport function transformMat3(out, a, m) {\n var x = a[0],\n y = a[1],\n z = a[2];\n out[0] = x * m[0] + y * m[3] + z * m[6];\n out[1] = x * m[1] + y * m[4] + z * m[7];\n out[2] = x * m[2] + y * m[5] + z * m[8];\n return out;\n}\n/**\n * Transforms the vec3 with a quat\n * Can also be used for dual quaternions. (Multiply it with the real part)\n *\n * @param {vec3} out the receiving vector\n * @param {ReadonlyVec3} a the vector to transform\n * @param {ReadonlyQuat} q quaternion to transform with\n * @returns {vec3} out\n */\n\nexport function transformQuat(out, a, q) {\n // benchmarks: https://jsperf.com/quaternion-transform-vec3-implementations-fixed\n var qx = q[0],\n qy = q[1],\n qz = q[2],\n qw = q[3];\n var x = a[0],\n y = a[1],\n z = a[2]; // var qvec = [qx, qy, qz];\n // var uv = vec3.cross([], qvec, a);\n\n var uvx = qy * z - qz * y,\n uvy = qz * x - qx * z,\n uvz = qx * y - qy * x; // var uuv = vec3.cross([], qvec, uv);\n\n var uuvx = qy * uvz - qz * uvy,\n uuvy = qz * uvx - qx * uvz,\n uuvz = qx * uvy - qy * uvx; // vec3.scale(uv, uv, 2 * w);\n\n var w2 = qw * 2;\n uvx *= w2;\n uvy *= w2;\n uvz *= w2; // vec3.scale(uuv, uuv, 2);\n\n uuvx *= 2;\n uuvy *= 2;\n uuvz *= 2; // return vec3.add(out, a, vec3.add(out, uv, uuv));\n\n out[0] = x + uvx + uuvx;\n out[1] = y + uvy + uuvy;\n out[2] = z + uvz + uuvz;\n return out;\n}\n/**\n * Rotate a 3D vector around the x-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nexport function rotateX(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[0];\n r[1] = p[1] * Math.cos(rad) - p[2] * Math.sin(rad);\n r[2] = p[1] * Math.sin(rad) + p[2] * Math.cos(rad); //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\n * Rotate a 3D vector around the y-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nexport function rotateY(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[2] * Math.sin(rad) + p[0] * Math.cos(rad);\n r[1] = p[1];\n r[2] = p[2] * Math.cos(rad) - p[0] * Math.sin(rad); //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\n * Rotate a 3D vector around the z-axis\n * @param {vec3} out The receiving vec3\n * @param {ReadonlyVec3} a The vec3 point to rotate\n * @param {ReadonlyVec3} b The origin of the rotation\n * @param {Number} rad The angle of rotation in radians\n * @returns {vec3} out\n */\n\nexport function rotateZ(out, a, b, rad) {\n var p = [],\n r = []; //Translate point to the origin\n\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2]; //perform rotation\n\n r[0] = p[0] * Math.cos(rad) - p[1] * Math.sin(rad);\n r[1] = p[0] * Math.sin(rad) + p[1] * Math.cos(rad);\n r[2] = p[2]; //translate to correct position\n\n out[0] = r[0] + b[0];\n out[1] = r[1] + b[1];\n out[2] = r[2] + b[2];\n return out;\n}\n/**\n * Get the angle between two 3D vectors\n * @param {ReadonlyVec3} a The first operand\n * @param {ReadonlyVec3} b The second operand\n * @returns {Number} The angle in radians\n */\n\nexport function angle(a, b) {\n var ax = a[0],\n ay = a[1],\n az = a[2],\n bx = b[0],\n by = b[1],\n bz = b[2],\n mag1 = Math.sqrt(ax * ax + ay * ay + az * az),\n mag2 = Math.sqrt(bx * bx + by * by + bz * bz),\n mag = mag1 * mag2,\n cosine = mag && dot(a, b) / mag;\n return Math.acos(Math.min(Math.max(cosine, -1), 1));\n}\n/**\n * Set the components of a vec3 to zero\n *\n * @param {vec3} out the receiving vector\n * @returns {vec3} out\n */\n\nexport function zero(out) {\n out[0] = 0.0;\n out[1] = 0.0;\n out[2] = 0.0;\n return out;\n}\n/**\n * Returns a string representation of a vector\n *\n * @param {ReadonlyVec3} a vector to represent as a string\n * @returns {String} string representation of the vector\n */\n\nexport function str(a) {\n return \"vec3(\" + a[0] + \", \" + a[1] + \", \" + a[2] + \")\";\n}\n/**\n * Returns whether or not the vectors have exactly the same elements in the same position (when compared with ===)\n *\n * @param {ReadonlyVec3} a The first vector.\n * @param {ReadonlyVec3} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function exactEquals(a, b) {\n return a[0] === b[0] && a[1] === b[1] && a[2] === b[2];\n}\n/**\n * Returns whether or not the vectors have approximately the same elements in the same position.\n *\n * @param {ReadonlyVec3} a The first vector.\n * @param {ReadonlyVec3} b The second vector.\n * @returns {Boolean} True if the vectors are equal, false otherwise.\n */\n\nexport function equals(a, b) {\n var a0 = a[0],\n a1 = a[1],\n a2 = a[2];\n var b0 = b[0],\n b1 = b[1],\n b2 = b[2];\n return Math.abs(a0 - b0) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a0), Math.abs(b0)) && Math.abs(a1 - b1) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a1), Math.abs(b1)) && Math.abs(a2 - b2) <= glMatrix.EPSILON * Math.max(1.0, Math.abs(a2), Math.abs(b2));\n}\n/**\n * Alias for {@link vec3.subtract}\n * @function\n */\n\nexport var sub = subtract;\n/**\n * Alias for {@link vec3.multiply}\n * @function\n */\n\nexport var mul = multiply;\n/**\n * Alias for {@link vec3.divide}\n * @function\n */\n\nexport var div = divide;\n/**\n * Alias for {@link vec3.distance}\n * @function\n */\n\nexport var dist = distance;\n/**\n * Alias for {@link vec3.squaredDistance}\n * @function\n */\n\nexport var sqrDist = squaredDistance;\n/**\n * Alias for {@link vec3.length}\n * @function\n */\n\nexport var len = length;\n/**\n * Alias for {@link vec3.squaredLength}\n * @function\n */\n\nexport var sqrLen = squaredLength;\n/**\n * Perform some operation over an array of vec3s.\n *\n * @param {Array} a the array of vectors to iterate over\n * @param {Number} stride Number of elements between the start of each vec3. If 0 assumes tightly packed\n * @param {Number} offset Number of elements to skip at the beginning of the array\n * @param {Number} count Number of vec3s to iterate over. If 0 iterates over entire array\n * @param {Function} fn Function to call for each vector in the array\n * @param {Object} [arg] additional argument to pass to fn\n * @returns {Array} a\n * @function\n */\n\nexport var forEach = function () {\n var vec = create();\n return function (a, stride, offset, count, fn, arg) {\n var i, l;\n\n if (!stride) {\n stride = 3;\n }\n\n if (!offset) {\n offset = 0;\n }\n\n if (count) {\n l = Math.min(count * stride + offset, a.length);\n } else {\n l = a.length;\n }\n\n for (i = offset; i < l; i += stride) {\n vec[0] = a[i];\n vec[1] = a[i + 1];\n vec[2] = a[i + 2];\n fn(vec, vec, arg);\n a[i] = vec[0];\n a[i + 1] = vec[1];\n a[i + 2] = vec[2];\n }\n\n return a;\n };\n}();","import { ext, mat3, vec3 } from '@antv/matrix-util';\nimport { assign } from '@antv/util';\nimport { CoordinateCfg, ICoordinate, Point, Range } from '../interface';\n\nexport type CoordinateCtor = new (cfg: any) => Coordinate;\nexport type Vector2 = [number, number];\nexport type Vector3 = [number, number, number];\nexport type Matrix3 = [number, number, number, number, number, number, number, number, number];\n\n/**\n * Coordinate Base Class\n */\nexport default abstract class Coordinate implements ICoordinate {\n // 自身属性\n public readonly type: string = 'coordinate';\n public readonly isRect: boolean = false;\n public readonly isHelix: boolean = false;\n public readonly isPolar: boolean = false;\n\n // 外部属性\n public start: Point;\n public end: Point;\n public matrix: Matrix3;\n public isTransposed: boolean;\n\n // 极坐标下的属性\n public startAngle: number;\n public endAngle: number;\n public innerRadius: number;\n public radius: number;\n\n public x: Range;\n public y: Range;\n\n // 计算属性,通过相应的 get 方法获取,所以使用 protected 访问修饰符\n protected center: Point;\n protected width: number;\n protected height: number;\n private isReflectX = false;\n private isReflectY = false;\n // 初始构造时候的 matrix,存储起来用于 reset\n private originalMatrix: Matrix3;\n\n constructor(cfg: CoordinateCfg) {\n const { start, end, matrix = [1, 0, 0, 0, 1, 0, 0, 0, 1], isTransposed = false } = cfg;\n this.start = start;\n this.end = end;\n this.matrix = matrix as Matrix3;\n this.originalMatrix = [...matrix] as Matrix3; // 去除引用\n this.isTransposed = isTransposed;\n }\n\n /**\n * 初始化流程\n */\n public initial() {\n // center、width、height\n this.center = {\n x: (this.start.x + this.end.x) / 2,\n y: (this.start.y + this.end.y) / 2,\n };\n\n this.width = Math.abs(this.end.x - this.start.x);\n this.height = Math.abs(this.end.y - this.start.y);\n }\n\n /**\n * 更新配置\n * @param cfg\n */\n public update(cfg: CoordinateCfg) {\n assign(this, cfg);\n this.initial();\n }\n\n public convertDim(percent: number, dim: string): number {\n let { start, end } = this[dim];\n\n // 交换\n if (this.isReflect(dim)) {\n [start, end] = [end, start];\n }\n\n return start + percent * (end - start);\n }\n\n public invertDim(value: number, dim: string): number {\n let { start, end } = this[dim];\n // 交换\n if (this.isReflect(dim)) {\n [start, end] = [end, start];\n }\n\n return (value - start) / (end - start);\n }\n\n /**\n * 将坐标点进行矩阵变换\n * @param x 对应 x 轴画布坐标\n * @param y 对应 y 轴画布坐标\n * @param tag 默认为 0,可取值 0, 1\n * @return 返回变换后的三阶向量 [x, y, z]\n */\n public applyMatrix(x: number, y: number, tag: number = 0): number[] {\n const matrix = this.matrix;\n const vector: Vector3 = [x, y, tag];\n vec3.transformMat3(vector, vector, matrix);\n return vector;\n }\n\n /**\n * 将坐标点进行矩阵逆变换\n * @param x 对应 x 轴画布坐标\n * @param y 对应 y 轴画布坐标\n * @param tag 默认为 0,可取值 0, 1\n * @return 返回矩阵逆变换后的三阶向量 [x, y, z]\n */\n public invertMatrix(x: number, y: number, tag: number = 0): number[] {\n const matrix = this.matrix;\n const inverted = mat3.invert([0, 0, 0, 0, 0, 0, 0, 0, 0], matrix);\n const vector: Vector3 = [x, y, tag];\n if (inverted) {\n // 如果为空则不进行矩阵变化,防止报错\n vec3.transformMat3(vector, vector, inverted);\n }\n return vector;\n }\n\n /**\n * 将归一化的坐标点数据转换为画布坐标,并根据坐标系当前矩阵进行变换\n * @param point 归一化的坐标点\n * @return 返回进行矩阵变换后的画布坐标\n */\n public convert(point: Point): Point {\n const { x, y } = this.convertPoint(point);\n const vector = this.applyMatrix(x, y, 1);\n return {\n x: vector[0],\n y: vector[1],\n };\n }\n\n /**\n * 将进行过矩阵变换画布坐标转换为归一化坐标\n * @param point 画布坐标\n * @return 返回归一化的坐标点\n */\n public invert(point: Point): Point {\n const vector = this.invertMatrix(point.x, point.y, 1);\n return this.invertPoint({\n x: vector[0],\n y: vector[1],\n });\n }\n\n /**\n * 坐标系旋转变换\n * @param radian 旋转弧度\n * @return 返回坐标系对象\n */\n public rotate(radian: number) {\n const matrix = this.matrix;\n const center = this.center;\n ext.leftTranslate(matrix, matrix, [-center.x, -center.y]);\n ext.leftRotate(matrix, matrix, radian);\n ext.leftTranslate(matrix, matrix, [center.x, center.y]);\n return this;\n }\n\n /**\n * 坐标系反射变换\n * @param dim 反射维度\n * @return 返回坐标系对象\n */\n public reflect(dim: string) {\n if (dim === 'x') {\n this.isReflectX = !this.isReflectX;\n } else {\n this.isReflectY = !this.isReflectY;\n }\n return this;\n }\n\n /**\n * 坐标系比例变换\n * @param s1 x 方向缩放比例\n * @param s2 y 方向缩放比例\n * @return 返回坐标系对象\n */\n public scale(s1: number, s2: number) {\n const matrix = this.matrix;\n const center = this.center;\n ext.leftTranslate(matrix, matrix, [-center.x, -center.y]);\n ext.leftScale(matrix, matrix, [s1, s2]);\n ext.leftTranslate(matrix, matrix, [center.x, center.y]);\n return this;\n }\n\n /**\n * 坐标系平移变换\n * @param x x 方向平移像素\n * @param y y 方向平移像素\n * @return 返回坐标系对象\n */\n public translate(x: number, y: number) {\n const matrix = this.matrix;\n ext.leftTranslate(matrix, matrix, [x, y]);\n return this;\n }\n\n /**\n * 将坐标系 x y 两个轴进行转置\n * @return 返回坐标系对象\n */\n public transpose() {\n this.isTransposed = !this.isTransposed;\n return this;\n }\n\n public getCenter(): Point {\n return this.center;\n }\n\n public getWidth(): number {\n return this.width;\n }\n\n public getHeight(): number {\n return this.height;\n }\n\n public getRadius(): number {\n return this.radius;\n }\n\n /**\n * whether has reflect\n * @param dim\n */\n public isReflect(dim: string): boolean {\n return dim === 'x' ? this.isReflectX : this.isReflectY;\n }\n\n /**\n * 重置 matrix\n * @param matrix 如果传入,则使用,否则使用构造函数中传入的默认 matrix\n */\n public resetMatrix(matrix?: Matrix3) {\n // 去除引用关系\n this.matrix = matrix ? matrix : ([...this.originalMatrix] as Matrix3);\n }\n\n /**\n * 将归一化的坐标点数据转换为画布坐标\n * @param point\n */\n public abstract convertPoint(point: Point): Point;\n\n /**\n * 画布坐标转换为归一化的坐标点数据\n * @param point\n */\n public abstract invertPoint(point: Point): Point;\n}\n","import { CoordinateCfg, Point } from '../interface';\nimport Coordinate from './base';\n\n/**\n * 笛卡尔坐标系\n * https://www.zhihu.com/question/20665303\n */\nexport default class Cartesian extends Coordinate {\n public readonly isRect: boolean = true;\n public readonly type: string = 'cartesian';\n\n constructor(cfg: CoordinateCfg) {\n super(cfg);\n\n this.initial();\n }\n\n public initial() {\n super.initial();\n\n const start = this.start;\n const end = this.end;\n\n this.x = {\n start: start.x,\n end: end.x,\n };\n this.y = {\n start: start.y,\n end: end.y,\n };\n }\n\n public convertPoint(point: Point) {\n let { x, y } = point;\n\n // 交换\n if (this.isTransposed) {\n [x, y] = [y, x];\n }\n return {\n x: this.convertDim(x, 'x'),\n y: this.convertDim(y, 'y'),\n };\n }\n\n public invertPoint(point: Point) {\n let x = this.invertDim(point.x, 'x');\n let y = this.invertDim(point.y, 'y');\n\n if (this.isTransposed) {\n [x, y] = [y, x];\n }\n\n return { x, y };\n }\n}\n","import { ext, vec2 } from '@antv/matrix-util';\nimport { isNumberEqual } from '@antv/util';\nimport { Point, PolarCfg } from '../interface';\nimport Coordinate, { Vector2 } from './base';\n\n/**\n * 螺旋坐标系\n */\nexport default class Helix extends Coordinate {\n public readonly isHelix: boolean = true;\n public readonly type: string = 'helix';\n\n // 螺线系数\n private a: number;\n private d: number;\n\n constructor(cfg: PolarCfg) {\n super(cfg);\n\n const { startAngle = 1.25 * Math.PI, endAngle = 7.25 * Math.PI, innerRadius = 0, radius } = cfg;\n\n this.startAngle = startAngle;\n this.endAngle = endAngle;\n this.innerRadius = innerRadius;\n this.radius = radius;\n\n this.initial();\n }\n\n public initial() {\n super.initial();\n\n const index: number = (this.endAngle - this.startAngle) / (2 * Math.PI) + 1; // 螺线圈数\n let maxRadius: number = Math.min(this.width, this.height) / 2;\n\n if (this.radius && this.radius >= 0 && this.radius <= 1) {\n maxRadius = maxRadius * this.radius;\n }\n\n this.d = Math.floor((maxRadius * (1 - this.innerRadius)) / index);\n this.a = this.d / (Math.PI * 2); // 螺线系数\n\n this.x = {\n start: this.startAngle,\n end: this.endAngle,\n };\n this.y = {\n start: this.innerRadius * maxRadius,\n end: this.innerRadius * maxRadius + this.d * 0.99,\n };\n }\n\n /**\n * 将百分比数据变成屏幕坐标\n * @param point 归一化的点坐标\n * @return 返回对应的屏幕坐标\n */\n public convertPoint(point: Point): Point {\n let { x, y } = point;\n if (this.isTransposed) {\n [x, y] = [y, x];\n }\n\n const thi = this.convertDim(x, 'x');\n const r = this.a * thi;\n const newY = this.convertDim(y, 'y');\n\n return {\n x: this.center.x + Math.cos(thi) * (r + newY),\n y: this.center.y + Math.sin(thi) * (r + newY),\n };\n }\n\n /**\n * 将屏幕坐标点还原成百分比数据\n * @param point 屏幕坐标\n * @return 返回对应的归一化后的数据\n */\n public invertPoint(point: Point): Point {\n const d = this.d + this.y.start;\n\n const v = vec2.subtract([0, 0], [point.x, point.y], [this.center.x, this.center.y]) as Vector2;\n\n let thi = ext.angleTo(v, [1, 0], true);\n let rMin = thi * this.a; // 坐标与原点的连线在第一圈上的交点,最小r值\n\n if (vec2.length(v) < rMin) {\n // 坐标与原点的连线不可能小于最小r值,但不排除因小数计算产生的略小于rMin的情况\n rMin = vec2.length(v);\n }\n\n const index = Math.floor((vec2.length(v) - rMin) / d); // 当前点位于第index圈\n thi = 2 * index * Math.PI + thi;\n const r = this.a * thi;\n let newY = vec2.length(v) - r;\n newY = isNumberEqual(newY, 0) ? 0 : newY;\n\n let x = this.invertDim(thi, 'x');\n let y = this.invertDim(newY, 'y');\n x = isNumberEqual(x, 0) ? 0 : x;\n y = isNumberEqual(y, 0) ? 0 : y;\n\n if (this.isTransposed) {\n [x, y] = [y, x];\n }\n\n return { x, y };\n }\n}\n","import { ext, vec2, vec3 } from '@antv/matrix-util';\nimport { isNumberEqual } from '@antv/util';\nimport { Point, PolarCfg } from '../interface';\nimport Coordinate, { Matrix3, Vector2, Vector3 } from './base';\n\nexport default class Polar extends Coordinate {\n public readonly isPolar: boolean = true;\n public readonly type: string = 'polar';\n\n public circleCenter: Point;\n\n // 极坐标的半径值,区别于用户设置的归一化 radius\n private polarRadius: number;\n\n constructor(cfg: PolarCfg) {\n super(cfg);\n\n const { startAngle = -Math.PI / 2, endAngle = (Math.PI * 3) / 2, innerRadius = 0, radius } = cfg;\n this.startAngle = startAngle;\n this.endAngle = endAngle;\n this.innerRadius = innerRadius;\n this.radius = radius;\n\n this.initial();\n }\n\n public initial() {\n super.initial();\n\n while (this.endAngle < this.startAngle) {\n this.endAngle += Math.PI * 2;\n }\n\n const oneBox = this.getOneBox();\n\n const oneWidth = oneBox.maxX - oneBox.minX;\n const oneHeight = oneBox.maxY - oneBox.minY;\n\n const left = Math.abs(oneBox.minX) / oneWidth;\n const top = Math.abs(oneBox.minY) / oneHeight;\n\n let maxRadius: number;\n\n if (this.height / oneHeight > this.width / oneWidth) {\n // width 为主\n maxRadius = this.width / oneWidth;\n this.circleCenter = {\n x: this.center.x - (0.5 - left) * this.width,\n y: this.center.y - (0.5 - top) * maxRadius * oneHeight,\n };\n } else {\n // height 为主\n maxRadius = this.height / oneHeight;\n this.circleCenter = {\n x: this.center.x - (0.5 - left) * maxRadius * oneWidth,\n y: this.center.y - (0.5 - top) * this.height,\n };\n }\n\n this.polarRadius = this.radius;\n if (!this.radius) {\n this.polarRadius = maxRadius;\n } else if (this.radius > 0 && this.radius <= 1) {\n this.polarRadius = maxRadius * this.radius;\n } else if (this.radius <= 0 || this.radius > maxRadius) {\n this.polarRadius = maxRadius;\n }\n\n this.x = {\n start: this.startAngle,\n end: this.endAngle,\n };\n\n this.y = {\n start: this.innerRadius * this.polarRadius,\n end: this.polarRadius,\n };\n }\n\n public getRadius() {\n return this.polarRadius;\n }\n\n public convertPoint(point: Point): Point {\n const center = this.getCenter();\n\n let { x, y } = point;\n\n if (this.isTransposed) {\n [x, y] = [y, x];\n }\n\n x = this.convertDim(x, 'x');\n y = this.convertDim(y, 'y');\n\n return {\n x: center.x + Math.cos(x) * y,\n y: center.y + Math.sin(x) * y,\n };\n }\n\n public invertPoint(point: Point): Point {\n const center = this.getCenter();\n const vPoint: Vector2 = [point.x - center.x, point.y - center.y];\n\n let { startAngle, endAngle } = this;\n if (this.isReflect('x')) {\n [startAngle, endAngle] = [endAngle, startAngle];\n }\n\n const m: Matrix3 = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n ext.leftRotate(m, m, startAngle);\n\n const vStart3: Vector3 = [1, 0, 0];\n vec3.transformMat3(vStart3, vStart3, m);\n const vStart2: Vector2 = [vStart3[0], vStart3[1]];\n let angle = ext.angleTo(vStart2, vPoint, endAngle < startAngle);\n if (isNumberEqual(angle, Math.PI * 2)) {\n angle = 0;\n }\n const radius = vec2.length(vPoint);\n\n let xPercent = angle / (endAngle - startAngle);\n xPercent = endAngle - startAngle > 0 ? xPercent : -xPercent;\n\n const yPercent = this.invertDim(radius, 'y');\n const rst = { x: 0, y: 0 };\n rst.x = this.isTransposed ? yPercent : xPercent;\n rst.y = this.isTransposed ? xPercent : yPercent;\n return rst;\n }\n\n public getCenter() {\n return this.circleCenter;\n }\n\n private getOneBox() {\n const startAngle = this.startAngle;\n const endAngle = this.endAngle;\n if (Math.abs(endAngle - startAngle) >= Math.PI * 2) {\n return {\n minX: -1,\n maxX: 1,\n minY: -1,\n maxY: 1,\n };\n }\n const xs = [0, Math.cos(startAngle), Math.cos(endAngle)];\n const ys = [0, Math.sin(startAngle), Math.sin(endAngle)];\n\n for (let i = Math.min(startAngle, endAngle); i < Math.max(startAngle, endAngle); i += Math.PI / 18) {\n xs.push(Math.cos(i));\n ys.push(Math.sin(i));\n }\n\n return {\n minX: Math.min(...xs),\n maxX: Math.max(...xs),\n minY: Math.min(...ys),\n maxY: Math.max(...ys),\n };\n }\n}\n","import { CoordinateCtor } from './coord/base';\n\n// 所有的 Coordinate map\nconst COORDINATE_MAP: Record = {};\n\n/**\n * 通过类型获得 coordinate 类\n * @param type\n */\nexport const getCoordinate = (type: string): CoordinateCtor => {\n return COORDINATE_MAP[type.toLowerCase()];\n};\n\n/**\n * 注册 coordinate 类\n * @param type\n * @param ctor\n */\nexport const registerCoordinate = (type: string, ctor: CoordinateCtor): void => {\n // 存储到 map 中\n COORDINATE_MAP[type.toLowerCase()] = ctor;\n};\n\nexport * from './interface';\n","import Coordinate from './coord/base';\nimport Cartesian from './coord/cartesian';\nimport Helix from './coord/helix';\nimport Polar from './coord/polar';\n\nimport { getCoordinate, registerCoordinate } from './factory';\n\nregisterCoordinate('rect', Cartesian);\nregisterCoordinate('cartesian', Cartesian);\nregisterCoordinate('polar', Polar);\nregisterCoordinate('helix', Helix);\n\nexport { getCoordinate, registerCoordinate, Coordinate };\n\nexport { Point, PolarCfg, CoordinateCfg } from './interface';\n","import { TickMethod } from '../types';\ninterface MethodMap {\n [key: string]: TickMethod;\n}\nconst methodCache: MethodMap = {};\n\n/**\n * 获取计算 ticks 的方法\n * @param key 键值\n * @returns 计算 ticks 的方法\n */\nexport function getTickMethod(key: string): TickMethod {\n return methodCache[key];\n}\n\n/**\n * 注册计算 ticks 的方法\n * @param key 键值\n * @param method 方法\n */\nexport function registerTickMethod(key: string, method: TickMethod) {\n methodCache[key] = method;\n}\n","import { assign, isEmpty, isFunction, isNil, isNumber, isObject, isString, map } from '@antv/util';\nimport { getTickMethod } from './tick-method/register';\nimport { ScaleConfig, Tick } from './types';\nexport default abstract class Scale {\n /**\n * 度量的类型\n */\n public type: string = 'base';\n /**\n * 是否分类类型的度量\n */\n public isCategory?: boolean = false;\n /**\n * 是否线性度量,有linear, time 度量\n */\n public isLinear?: boolean = false;\n /**\n * 是否连续类型的度量,linear,time,log, pow, quantile, quantize 都支持\n */\n public isContinuous?: boolean = false;\n /**\n * 是否是常量的度量,传入和传出一致\n */\n public isIdentity: boolean = false;\n\n public field?: ScaleConfig['field'];\n public alias?: ScaleConfig['alias'];\n public values: ScaleConfig['values'] = [];\n public min?: ScaleConfig['min'];\n public max?: ScaleConfig['max'];\n public minLimit?: ScaleConfig['minLimit'];\n public maxLimit?: ScaleConfig['maxLimit'];\n public range: ScaleConfig['range'] = [0, 1];\n public ticks: ScaleConfig['ticks'] = [];\n public tickCount: ScaleConfig['tickCount'];\n public tickInterval: ScaleConfig['tickInterval'];\n public formatter?: ScaleConfig['formatter'];\n public tickMethod?: ScaleConfig['tickMethod'];\n protected __cfg__: ScaleConfig; // 缓存的旧配置, 用于 clone\n\n constructor(cfg: ScaleConfig) {\n this.__cfg__ = cfg;\n this.initCfg();\n this.init();\n }\n\n // 对于原始值的必要转换,如分类、时间字段需转换成数值,用transform/map命名可能更好\n public translate(v: any) {\n return v;\n }\n\n /** 将定义域转换为值域 */\n public abstract scale(value: any): number;\n\n /** 将值域转换为定义域 */\n public abstract invert(scaled: number): any;\n\n /** 重新初始化 */\n public change(cfg: ScaleConfig) {\n // 覆盖配置项,而不替代\n assign(this.__cfg__, cfg);\n this.init();\n }\n\n public clone(): Scale {\n return this.constructor(this.__cfg__);\n }\n\n /** 获取坐标轴需要的ticks */\n public getTicks(): Tick[] {\n return map(this.ticks, (tick: any, idx: number) => {\n if (isObject(tick)) {\n // 仅当符合Tick类型时才有意义\n return tick as Tick;\n }\n return {\n text: this.getText(tick, idx),\n tickValue: tick, // 原始value\n value: this.scale(tick), // scaled\n };\n });\n }\n\n /** 获取Tick的格式化结果 */\n public getText(value: any, key?: number): string {\n const formatter = this.formatter;\n const res = formatter ? formatter(value, key) : value;\n if (isNil(res) || !isFunction(res.toString)) {\n return '';\n }\n return res.toString();\n }\n\n // 获取配置项中的值,当前 scale 上的值可能会被修改\n protected getConfig(key) {\n return this.__cfg__[key];\n }\n\n // scale初始化\n protected init(): void {\n assign(this, this.__cfg__);\n this.setDomain();\n if (isEmpty(this.getConfig('ticks'))) {\n this.ticks = this.calculateTicks();\n }\n }\n\n // 子类上覆盖某些属性,不能直接在类上声明,否则会被覆盖\n protected initCfg() {}\n\n protected setDomain(): void {}\n\n protected calculateTicks(): any[] {\n const tickMethod = this.tickMethod;\n let ticks = [];\n if (isString(tickMethod)) {\n const method = getTickMethod(tickMethod);\n if (!method) {\n throw new Error('There is no method to to calculate ticks!');\n }\n ticks = method(this);\n } else if (isFunction(tickMethod)) {\n ticks = tickMethod(this);\n }\n return ticks;\n }\n\n // range 的最小值\n protected rangeMin() {\n return this.range[0];\n }\n\n // range 的最大值\n protected rangeMax() {\n return this.range[1];\n }\n\n /** 定义域转 0~1 */\n protected calcPercent(value: any, min: number, max: number): number {\n if (isNumber(value)) {\n return (value - min) / (max - min);\n }\n return NaN;\n }\n\n /** 0~1转定义域 */\n protected calcValue(percent: number, min: number, max: number): number {\n return min + percent * (max - min);\n }\n}\n","import { indexOf, isNil, isNumber } from '@antv/util';\nimport Base from '../base';\n\n/**\n * 分类度量\n * @class\n */\nclass Category extends Base {\n public readonly type: string = 'cat';\n public readonly isCategory: boolean = true;\n\n // 用于缓存 translate 函数\n private translateIndexMap;\n\n private buildIndexMap() {\n if (!this.translateIndexMap) {\n this.translateIndexMap = new Map();\n // 重新构建缓存\n for (let i = 0; i < this.values.length; i ++) {\n this.translateIndexMap.set(this.values[i], i);\n }\n }\n }\n\n public translate(value: any): number {\n // 按需构建 map\n this.buildIndexMap();\n // 找得到\n let idx = this.translateIndexMap.get(value);\n \n if (idx === undefined) {\n idx = isNumber(value) ? value : NaN;\n }\n return idx;\n }\n\n public scale(value: any): number {\n const order = this.translate(value);\n // 分类数据允许 0.5 范围内调整\n // if (order < this.min - 0.5 || order > this.max + 0.5) {\n // return NaN;\n // }\n const percent = this.calcPercent(order, this.min, this.max);\n return this.calcValue(percent, this.rangeMin(), this.rangeMax());\n }\n\n public invert(scaledValue: number) {\n const domainRange = this.max - this.min;\n const percent = this.calcPercent(scaledValue, this.rangeMin(), this.rangeMax());\n const idx = Math.round(domainRange * percent) + this.min;\n if (idx < this.min || idx > this.max) {\n return NaN;\n }\n return this.values[idx];\n }\n\n public getText(value: any, ...args: any[]): string {\n let v = value;\n // value为index\n if (isNumber(value) && !this.values.includes(value)) {\n v = this.values[v];\n }\n return super.getText(v, ...args);\n }\n // 复写属性\n protected initCfg() {\n this.tickMethod = 'cat';\n }\n // 设置 min, max\n protected setDomain() {\n // 用户有可能设置 min\n if (isNil(this.getConfig('min'))) {\n this.min = 0;\n }\n if (isNil(this.getConfig('max'))) {\n const size = this.values.length;\n this.max = size > 1 ? size - 1 : size;\n }\n\n // scale.init 的时候清除缓存\n if (this.translateIndexMap) {\n this.translateIndexMap = undefined;\n }\n }\n}\n\nexport default Category;\n","import { isDate, isString, last } from '@antv/util';\nimport fecha from 'fecha';\nimport * as fecha1 from 'fecha';\n\nimport bisector from './bisector';\nconst FORMAT_METHOD = 'format';\n\nexport function timeFormat(time, mask) { // 由于 fecha 包的 typescript 定义有问题,所以暂时兼容一下\n const method = fecha1[FORMAT_METHOD] || fecha[FORMAT_METHOD];\n return method(time, mask);\n}\n/**\n * 转换成时间戳\n * @param value 时间值\n */\nexport function toTimeStamp(value: any): number {\n if (isString(value)) {\n if (value.indexOf('T') > 0) {\n value = new Date(value).getTime();\n } else {\n // new Date('2010/01/10') 和 new Date('2010-01-10') 的差别在于:\n // 如果仅有年月日时,前者是带有时区的: Fri Jan 10 2020 02:40:13 GMT+0800 (中国标准时间)\n // 后者会格式化成 Sun Jan 10 2010 08:00:00 GMT+0800 (中国标准时间)\n value = new Date(value.replace(/-/gi, '/')).getTime();\n }\n }\n if (isDate(value)) {\n value = value.getTime();\n }\n return value;\n}\n\nconst SECOND = 1000;\nconst MINUTE = 60 * SECOND;\nconst HOUR = 60 * MINUTE;\nconst DAY = 24 * HOUR;\nconst MONTH = DAY * 31;\nconst YEAR = DAY * 365;\n\nexport { SECOND, MINUTE, HOUR, DAY, MONTH, YEAR };\ntype Interval = [string, number]; // [defaultMomentFormat, interval]\nconst intervals: Interval[] = [\n ['HH:mm:ss', SECOND],\n ['HH:mm:ss', SECOND * 10],\n ['HH:mm:ss', SECOND * 30],\n ['HH:mm', MINUTE],\n ['HH:mm', MINUTE * 10],\n ['HH:mm', MINUTE * 30],\n ['HH', HOUR],\n ['HH', HOUR * 6],\n ['HH', HOUR * 12],\n ['YYYY-MM-DD', DAY],\n ['YYYY-MM-DD', DAY * 4],\n ['YYYY-WW', DAY * 7],\n ['YYYY-MM', MONTH],\n ['YYYY-MM', MONTH * 4],\n ['YYYY-MM', MONTH * 6],\n ['YYYY', DAY * 380], // 借鉴echarts,保证每个周期累加时不会碰到恰巧不够的问题\n];\n\nexport function getTickInterval(min: number, max: number, tickCount: number): Interval {\n const target = (max - min) / tickCount;\n const idx = bisector((o: Interval) => o[1])(intervals, target) - 1;\n let interval: Interval = intervals[idx];\n if (idx < 0) {\n interval = intervals[0];\n } else if (idx >= intervals.length) {\n interval = last(intervals);\n }\n return interval;\n}\n","import { isNil } from '@antv/util';\n\ntype GetterFunc = (o: T) => number;\n\n/**\n * 二分右侧查找\n * https://github.com/d3/d3-array/blob/master/src/bisector.js\n */\nexport default function(getter: GetterFunc) {\n /**\n * x: 目标值\n * lo: 起始位置\n * hi: 结束位置\n */\n return function(a: T[], x: number, _lo?: number, _hi?: number) {\n let lo = isNil(_lo) ? 0 : _lo;\n let hi = isNil(_hi) ? a.length : _hi;\n while (lo < hi) {\n const mid = (lo + hi) >>> 1;\n if (getter(a[mid]) > x) {\n hi = mid;\n } else {\n lo = mid + 1;\n }\n }\n return lo;\n };\n}\n","import { each, isNumber } from '@antv/util';\nimport { timeFormat, toTimeStamp } from '../util/time';\nimport Category from './base';\n\n/**\n * 时间分类度量\n * @class\n */\nclass TimeCat extends Category {\n public readonly type: string = 'timeCat';\n public mask;\n /**\n * @override\n */\n public translate(value) {\n value = toTimeStamp(value);\n let index = this.values.indexOf(value);\n if (index === -1) {\n if (isNumber(value) && value < this.values.length) {\n index = value;\n } else {\n index = NaN;\n }\n }\n return index;\n }\n\n /**\n * 由于时间类型数据需要转换一下,所以复写 getText\n * @override\n */\n public getText(value: string | number, tickIndex?: number) {\n const index = this.translate(value);\n if (index > -1) {\n let result = this.values[index];\n const formatter = this.formatter;\n result = formatter ? formatter(result, tickIndex) : timeFormat(result, this.mask);\n return result;\n }\n return value;\n }\n protected initCfg() {\n this.tickMethod = 'time-cat';\n this.mask = 'YYYY-MM-DD';\n this.tickCount = 7; // 一般时间数据会显示 7, 14, 30 天的数字\n }\n\n protected setDomain() {\n const values = this.values;\n // 针对时间分类类型,会将时间统一转换为时间戳\n each(values, (v, i) => {\n values[i] = toTimeStamp(v);\n });\n values.sort((v1, v2) => {\n return v1 - v2;\n });\n super.setDomain();\n }\n}\n\nexport default TimeCat;\n","import { filter, getRange, head, isNil, last } from '@antv/util';\nimport Base from '../base';\n\n/**\n * 连续度量的基类\n * @class\n */\nexport default abstract class Continuous extends Base {\n public isContinuous?: boolean = true;\n public nice: boolean;\n\n public scale(value: any): number {\n if (isNil(value)) {\n return NaN;\n }\n const rangeMin = this.rangeMin();\n const rangeMax = this.rangeMax();\n const max = this.max;\n const min = this.min;\n if (max === min) {\n return rangeMin;\n }\n const percent = this.getScalePercent(value);\n return rangeMin + percent * (rangeMax - rangeMin);\n }\n\n protected init() {\n super.init();\n // init 完成后保证 min, max 包含 ticks 的范围\n const ticks = this.ticks;\n const firstTick = head(ticks);\n const lastTick = last(ticks);\n if (firstTick < this.min) {\n this.min = firstTick;\n }\n if (lastTick > this.max) {\n this.max = lastTick;\n }\n // strict-limit 方式\n if (!isNil(this.minLimit)) {\n this.min = firstTick;\n }\n if (!isNil(this.maxLimit)) {\n this.max = lastTick;\n }\n }\n\n protected setDomain() {\n const { min, max } = getRange(this.values);\n if (isNil(this.min)) {\n this.min = min;\n }\n if (isNil(this.max)) {\n this.max = max;\n }\n if (this.min > this.max) {\n this.min = min;\n this.max = max;\n }\n }\n\n protected calculateTicks(): any[] {\n let ticks = super.calculateTicks();\n if (!this.nice) {\n ticks = filter(ticks, (tick) => {\n return tick >= this.min && tick <= this.max;\n });\n }\n return ticks;\n }\n\n // 计算原始值值占的百分比\n protected getScalePercent(value) {\n const max = this.max;\n const min = this.min;\n return (value - min) / (max - min);\n }\n\n protected getInvertPercent(value) {\n return (value - this.rangeMin()) / (this.rangeMax() - this.rangeMin());\n }\n}\n","import Continuous from './base';\n\n/**\n * 线性度量\n * @class\n */\nexport default class Linear extends Continuous {\n public minTickInterval: number;\n public type = 'linear';\n public readonly isLinear: boolean = true;\n\n public invert(value: number): any {\n const percent = this.getInvertPercent(value);\n return this.min + percent * (this.max - this.min);\n }\n\n protected initCfg() {\n this.tickMethod = 'wilkinson-extended';\n this.nice = false;\n }\n}\n","import { each, isNil } from '@antv/util';\n\n// 求以a为次幂,结果为b的基数,如 x^^a = b;求x\n// 虽然数学上 b 不支持负数,但是这里需要支持 负数\nexport function calBase(a: number, b: number) {\n const e = Math.E;\n let value;\n if (b >= 0) {\n value = Math.pow(e, Math.log(b) / a); // 使用换底公式求底\n } else {\n value = Math.pow(e, Math.log(-b) / a) * -1; // 使用换底公式求底\n }\n return value;\n}\n\nexport function log(a: number, b: number) {\n if (a === 1) {\n return 1;\n }\n return Math.log(b) / Math.log(a);\n}\n\nexport function getLogPositiveMin(values, base, max?: number) {\n if (isNil(max)) {\n max = Math.max.apply(null, values);\n }\n let positiveMin = max;\n each(values, (value) => {\n if (value > 0 && value < positiveMin) {\n positiveMin = value;\n }\n });\n if (positiveMin === max) {\n positiveMin = max / base;\n }\n if (positiveMin > 1) {\n positiveMin = 1;\n }\n return positiveMin;\n}\n\nfunction digitLength(num: number) {\n // Get digit length of e\n const eSplit = num.toString().split(/[eE]/);\n const len = (eSplit[0].split('.')[1] || '').length - +(eSplit[1] || 0);\n return len > 0 ? len : 0;\n}\n\n/**\n * 高精度加法,解决 0.1 + 0.2 !== 0.3 的经典问题\n *\n * @param num1 加数\n * @param num2 被加数\n * @return {number} 返回值\n */\nexport function precisionAdd(num1: number, num2: number) {\n const num1Digits = digitLength(num1);\n const num2Digits = digitLength(num2);\n const baseNum = 10 ** Math.max(num1Digits, num2Digits);\n return (num1 * baseNum + num2 * baseNum) / baseNum;\n}\n","import { getLogPositiveMin, log } from '../util/math';\nimport Continuous from './base';\n/**\n * Log 度量,处理非均匀分布\n */\nclass Log extends Continuous {\n public readonly type: string = 'log';\n public base: number;\n // 用于解决 min: 0 的场景下的问题\n private positiveMin: number;\n\n /**\n * @override\n */\n public invert(value: number) {\n const base = this.base;\n const max = log(base, this.max);\n const rangeMin = this.rangeMin();\n const range = this.rangeMax() - rangeMin;\n let min;\n const positiveMin = this.positiveMin;\n if (positiveMin) {\n if (value === 0) {\n return 0;\n }\n min = log(base, positiveMin / base);\n const appendPercent = (1 / (max - min)) * range; // 0 到 positiveMin的占比\n if (value < appendPercent) {\n // 落到 0 - positiveMin 之间\n return (value / appendPercent) * positiveMin;\n }\n } else {\n min = log(base, this.min);\n }\n const percent = (value - rangeMin) / range;\n const tmp = percent * (max - min) + min;\n return Math.pow(base, tmp);\n }\n\n protected initCfg() {\n this.tickMethod = 'log';\n this.base = 10;\n this.tickCount = 6;\n this.nice = true;\n }\n\n // 设置\n protected setDomain() {\n super.setDomain();\n const min = this.min;\n if (min < 0) {\n throw new Error('When you use log scale, the minimum value must be greater than zero!');\n }\n if (min === 0) {\n this.positiveMin = getLogPositiveMin(this.values, this.base, this.max);\n }\n }\n\n // 根据当前值获取占比\n protected getScalePercent(value: number) {\n const max = this.max;\n let min = this.min;\n if (max === min) {\n return 0;\n }\n // 如果值小于等于0,则按照0处理\n if (value <= 0) {\n return 0;\n }\n const base = this.base;\n const positiveMin = this.positiveMin;\n // 如果min == 0, 则根据比0大的最小值,计算比例关系。这个最小值作为坐标轴上的第二个tick,第一个是0但是不显示\n if (positiveMin) {\n min = (positiveMin * 1) / base;\n }\n let percent;\n // 如果数值小于次小值,那么就计算 value / 次小值 占整体的比例\n if (value < positiveMin) {\n percent = value / positiveMin / (log(base, max) - log(base, min));\n } else {\n percent = (log(base, value) - log(base, min)) / (log(base, max) - log(base, min));\n }\n return percent;\n }\n}\n\nexport default Log;\n","import { calBase } from '../util/math';\nimport Continuous from './base';\n\n/**\n * Pow 度量,处理非均匀分布\n */\nclass Pow extends Continuous {\n public readonly type: string = 'pow';\n /**\n * 指数\n */\n public exponent: number;\n\n /**\n * @override\n */\n public invert(value: number) {\n const percent = this.getInvertPercent(value);\n const exponent = this.exponent;\n const max = calBase(exponent, this.max);\n const min = calBase(exponent, this.min);\n const tmp = percent * (max - min) + min;\n const factor = tmp >= 0 ? 1 : -1;\n return Math.pow(tmp, exponent) * factor;\n }\n\n protected initCfg() {\n this.tickMethod = 'pow';\n this.exponent = 2;\n this.tickCount = 5;\n this.nice = true;\n }\n\n // 获取度量计算时,value占的定义域百分比\n protected getScalePercent(value: number) {\n const max = this.max;\n const min = this.min;\n if (max === min) {\n return 0;\n }\n const exponent = this.exponent;\n const percent =\n (calBase(exponent, value) - calBase(exponent, min)) / (calBase(exponent, max) - calBase(exponent, min));\n return percent;\n }\n}\n\nexport default Pow;\n","import { each, isDate, isNil, isNumber, isString } from '@antv/util';\nimport { timeFormat, toTimeStamp } from '../util/time';\nimport Linear from './linear';\n\n/**\n * 时间度量\n * @class\n */\nclass Time extends Linear {\n public readonly type: string = 'time';\n public mask: string;\n\n /**\n * @override\n */\n public getText(value: string | number | Date, index?: number) {\n const numberValue = this.translate(value);\n const formatter = this.formatter;\n return formatter ? formatter(numberValue, index) : timeFormat(numberValue, this.mask);\n }\n /**\n * @override\n */\n public scale(value): number {\n let v = value;\n if (isString(v) || isDate(v)) {\n v = this.translate(v);\n }\n return super.scale(v);\n }\n /**\n * 将时间转换成数字\n * @override\n */\n public translate(v): number {\n return toTimeStamp(v);\n }\n protected initCfg() {\n this.tickMethod = 'time-pretty';\n this.mask = 'YYYY-MM-DD';\n this.tickCount = 7;\n this.nice = false;\n }\n\n protected setDomain() {\n const values = this.values;\n // 是否设置了 min, max,而不是直接取 this.min, this.max\n const minConfig = this.getConfig('min');\n const maxConfig = this.getConfig('max');\n // 如果设置了 min,max 则转换成时间戳\n if (!isNil(minConfig) || !isNumber(minConfig)) {\n this.min = this.translate(this.min);\n }\n if (!isNil(maxConfig) || !isNumber(maxConfig)) {\n this.max = this.translate(this.max);\n }\n // 没有设置 min, max 时\n if (values && values.length) {\n // 重新计算最大最小值\n const timeStamps = [];\n let min = Infinity; // 最小值\n let secondMin = min; // 次小值\n let max = 0;\n // 使用一个循环,计算min,max,secondMin\n each(values, (v) => {\n const timeStamp = toTimeStamp(v);\n if (isNaN(timeStamp)) {\n throw new TypeError(`Invalid Time: ${v} in time scale!`);\n }\n if (min > timeStamp) {\n secondMin = min;\n min = timeStamp;\n } else if (secondMin > timeStamp) {\n secondMin = timeStamp;\n }\n if (max < timeStamp) {\n max = timeStamp;\n }\n timeStamps.push(timeStamp);\n });\n // 存在多个值时,设置最小间距\n if (values.length > 1) {\n this.minTickInterval = secondMin - min;\n }\n if (isNil(minConfig)) {\n this.min = min;\n }\n if (isNil(maxConfig)) {\n this.max = max;\n }\n }\n }\n}\nexport default Time;\n","import { each, head, last } from '@antv/util';\nimport Continuous from './base';\n\n/**\n * 分段度量\n */\nclass Quantize extends Continuous {\n public type = 'quantize';\n\n public invert(value): number {\n const ticks = this.ticks;\n const length = ticks.length;\n const percent = this.getInvertPercent(value);\n const minIndex = Math.floor(percent * (length - 1));\n // 最后一个\n if (minIndex >= length - 1) {\n return last(ticks);\n }\n // 超出左边界, 则取第一个\n if (minIndex < 0) {\n return head(ticks);\n }\n const minTick = ticks[minIndex];\n const nextTick = ticks[minIndex + 1];\n // 比当前值小的 tick 在度量上的占比\n const minIndexPercent = minIndex / (length - 1);\n const maxIndexPercent = (minIndex + 1) / (length - 1);\n return minTick + (percent - minIndexPercent) / (maxIndexPercent - minIndexPercent) * (nextTick - minTick);\n }\n\n protected initCfg() {\n this.tickMethod = 'r-pretty';\n this.tickCount = 5;\n this.nice = true;\n }\n\n protected calculateTicks(): any[] {\n const ticks = super.calculateTicks();\n if (!this.nice) { // 如果 nice = false ,补充 min, max\n if (last(ticks) !== this.max) {\n ticks.push(this.max);\n }\n if (head(ticks) !== this.min) {\n ticks.unshift(this.min);\n }\n }\n return ticks;\n }\n\n // 计算当前值在刻度中的占比\n protected getScalePercent(value) {\n const ticks = this.ticks;\n // 超出左边界\n if (value < head(ticks)) {\n return 0;\n }\n // 超出右边界\n if (value > last(ticks)) {\n return 1;\n }\n let minIndex = 0;\n each(ticks, (tick, index) => {\n if (value >= tick) {\n minIndex = index;\n } else {\n return false;\n }\n });\n return minIndex / (ticks.length - 1);\n }\n}\n\nexport default Quantize;\n","import Quantize from './quantize';\n\nclass Quantile extends Quantize {\n public type = 'quantile';\n protected initCfg() {\n this.tickMethod = 'quantile';\n this.tickCount = 5;\n this.nice = true;\n }\n}\n\nexport default Quantile;\n","import Scale from './base';\nimport { ScaleConfig } from './types';\ntype ScaleConstructor = new (cfg: ScaleConfig) => T;\n\ninterface ScaleMap {\n [key: string]: ScaleConstructor;\n}\n\nconst map: ScaleMap = {};\n\nfunction getClass(key: string): ScaleConstructor {\n return map[key];\n}\n\nfunction registerClass(key: string, cls: ScaleConstructor) {\n if (getClass(key)) {\n throw new Error(`type '${key}' existed.`);\n }\n map[key] = cls;\n}\n\nexport { Scale, getClass as getScale, registerClass as registerScale };\n","import { has, isNumber } from '@antv/util';\nimport Base from '../base';\nimport { ScaleType } from '../types';\n\n/**\n * identity scale原则上是定义域和值域一致,scale/invert方法也是一致的\n * 参考R的实现:https://github.com/r-lib/scales/blob/master/R/pal-identity.r\n * 参考d3的实现(做了下转型):https://github.com/d3/d3-scale/blob/master/src/identity.js\n */\nexport default class Identity extends Base {\n public readonly type: ScaleType = 'identity';\n public readonly isIdentity: boolean = true;\n\n public calculateTicks() {\n return this.values;\n }\n\n public scale(value: any): number {\n // 如果传入的值不等于 identity 的值,则直接返回,用于一维图时的 dodge\n if (this.values[0] !== value && isNumber(value)) {\n return value;\n }\n return this.range[0];\n }\n\n public invert(value?: number): number {\n const range = this.range;\n if (value < range[0] || value > range[1]) {\n return NaN;\n }\n return this.values[0];\n }\n}\n","import { filter, isNil, isNumber, last } from '@antv/util';\nimport { ScaleConfig } from '../types';\n\n/**\n * 计算分类 ticks\n * @param cfg 度量的配置项\n * @returns 计算后的 ticks\n */\nexport default function calculateCatTicks(cfg: ScaleConfig): any[] {\n const { values, tickInterval, tickCount, showLast } = cfg;\n\n if (isNumber(tickInterval)) {\n const ticks = filter(values, (__: any, i: number) => i % tickInterval === 0);\n const lastValue = last(values);\n if (showLast && last(ticks) !== lastValue) {\n ticks.push(lastValue);\n }\n return ticks;\n }\n\n const len = values.length;\n let { min, max } = cfg;\n if (isNil(min)) {\n min = 0;\n }\n if (isNil(max)) {\n max = values.length - 1;\n }\n\n if (!isNumber(tickCount) || tickCount >= len) return values.slice(min, max + 1);\n if (tickCount <= 0 || max <= 0) return [];\n\n const interval = tickCount === 1 ? len : Math.floor(len / (tickCount - 1));\n const ticks = [];\n\n let idx = min;\n for (let i = 0; i < tickCount; i++) {\n if (idx >= max) break;\n\n idx = Math.min(min + i * interval, max);\n if (i === tickCount - 1 && showLast) ticks.push(values[max]);\n else ticks.push(values[idx]);\n }\n return ticks;\n}\n","import { ScaleConfig } from '../types';\n\nexport default function d3Linear(cfg: ScaleConfig): number[] {\n const { min, max, nice, tickCount } = cfg;\n const linear = new D3Linear();\n linear.domain([min, max]);\n if (nice) {\n linear.nice(tickCount);\n }\n return linear.ticks(tickCount);\n}\n\nconst DEFAULT_COUNT = 5;\nconst e10 = Math.sqrt(50);\nconst e5 = Math.sqrt(10);\nconst e2 = Math.sqrt(2);\n\n// https://github.com/d3/d3-scale\nexport class D3Linear {\n private _domain: number[] = [0, 1];\n\n public domain(domain?: number[]): D3Linear | number[] {\n if (domain) {\n this._domain = Array.from(domain, Number);\n return this;\n }\n return this._domain.slice();\n }\n\n public nice(count = DEFAULT_COUNT) {\n const d = this._domain.slice();\n let i0 = 0;\n let i1 = this._domain.length - 1;\n let start = this._domain[i0];\n let stop = this._domain[i1];\n let step;\n\n if (stop < start) {\n [start, stop] = [stop, start];\n [i0, i1] = [i1, i0];\n }\n step = tickIncrement(start, stop, count);\n\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = tickIncrement(start, stop, count);\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = tickIncrement(start, stop, count);\n }\n\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n this.domain(d);\n } else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n this.domain(d);\n }\n\n return this;\n }\n\n public ticks(count = DEFAULT_COUNT): number[] {\n return d3ArrayTicks(this._domain[0], this._domain[this._domain.length - 1], count || DEFAULT_COUNT);\n }\n}\n\nfunction d3ArrayTicks(start: number, stop: number, count: number): number[] {\n let reverse;\n let i = -1;\n let n;\n let ticks;\n let step;\n\n (stop = +stop), (start = +start), (count = +count);\n if (start === stop && count > 0) {\n return [start];\n }\n // tslint:disable-next-line\n if ((reverse = stop < start)) {\n (n = start), (start = stop), (stop = n);\n }\n // tslint:disable-next-line\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) {\n return [];\n }\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array((n = Math.ceil(stop - start + 1)));\n while (++i < n) {\n ticks[i] = (start + i) * step;\n }\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array((n = Math.ceil(start - stop + 1)));\n while (++i < n) {\n ticks[i] = (start - i) / step;\n }\n }\n\n if (reverse) {\n ticks.reverse();\n }\n\n return ticks;\n}\n\nfunction tickIncrement(start: number, stop: number, count: number): number {\n const step = (stop - start) / Math.max(0, count);\n const power = Math.floor(Math.log(step) / Math.LN10);\n const error = step / Math.pow(10, power);\n\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n","\nimport { fixedBase } from '@antv/util';\n\nfunction snapMultiple(v, base, snapType) {\n let div;\n if (snapType === 'ceil') {\n div = Math.ceil(v / base);\n } else if (snapType === 'floor') {\n div = Math.floor(v / base);\n } else {\n div = Math.round(v / base);\n }\n return div * base;\n}\n\nexport default function intervalTicks(min, max, interval) {\n // 变成 interval 的倍数\n let minTick = snapMultiple(min, interval, 'floor');\n let maxTick = snapMultiple(max, interval, 'ceil');\n // 统一小数位数\n minTick = fixedBase(minTick, interval);\n maxTick = fixedBase(maxTick, interval);\n const ticks = [];\n // https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Errors/Invalid_array_length\n const availableInterval = Math.max((maxTick - minTick) / (2 ** 12 - 1), interval);\n for (let i = minTick; i <= maxTick; i = i + availableInterval) {\n const tickValue = fixedBase(i, availableInterval); // 防止浮点数加法出现问题\n ticks.push(tickValue);\n }\n return {\n min: minTick,\n max: maxTick,\n ticks\n };\n}","import { isNil } from '@antv/util';\nimport { ScaleConfig } from '../types';\n\n/**\n * 按照给定的 minLimit/maxLimit/tickCount 均匀计算出刻度 ticks\n *\n * @param cfg Scale 配置项\n * @return ticks\n */\nexport default function strictLimit(cfg: ScaleConfig, defaultMin?: number, defaultMax?: number): number[] {\n const { minLimit, maxLimit, min, max, tickCount = 5 } = cfg;\n let tickMin = isNil(minLimit) ? (isNil(defaultMin) ? min : defaultMin) : minLimit;\n let tickMax = isNil(maxLimit) ? (isNil(defaultMax) ? max : defaultMax) : maxLimit;\n\n if (tickMin > tickMax) {\n [tickMax, tickMin] = [tickMin, tickMax];\n }\n\n if (tickCount <= 2) {\n return [tickMin, tickMax];\n }\n\n const step = (tickMax - tickMin) / (tickCount - 1);\n const ticks: number[] = [];\n\n for (let i = 0; i < tickCount; i++) {\n ticks.push(tickMin + step * i);\n }\n\n return ticks;\n}\n","// 为了解决 js 运算的精度问题\nexport function prettyNumber(n: number) {\n return Math.abs(n) < 1e-15 ? n : parseFloat(n.toFixed(15));\n}\n","import { head, indexOf, size, last } from '@antv/util';\nimport { prettyNumber } from './pretty-number';\n\nexport const DEFAULT_Q = [1, 5, 2, 2.5, 4, 3];\n\nexport const ALL_Q = [1, 5, 2, 2.5, 4, 3, 1.5, 7, 6, 8, 9];\n\nconst eps = Number.EPSILON * 100;\n\nfunction mod(n: number, m: number) {\n return ((n % m) + m) % m;\n}\n\nfunction round(n: number) {\n return Math.round(n * 1e12) / 1e12;\n}\n\nfunction simplicity(q: number, Q: number[], j: number, lmin: number, lmax: number, lstep: number) {\n const n = size(Q);\n const i = indexOf(Q, q);\n let v = 0;\n const m = mod(lmin, lstep);\n if ((m < eps || lstep - m < eps) && lmin <= 0 && lmax >= 0) {\n v = 1;\n }\n return 1 - i / (n - 1) - j + v;\n}\n\nfunction simplicityMax(q: number, Q: number[], j: number) {\n const n = size(Q);\n const i = indexOf(Q, q);\n const v = 1;\n return 1 - i / (n - 1) - j + v;\n}\n\nfunction density(k: number, m: number, dMin: number, dMax: number, lMin: number, lMax: number) {\n const r = (k - 1) / (lMax - lMin);\n const rt = (m - 1) / (Math.max(lMax, dMax) - Math.min(dMin, lMin));\n return 2 - Math.max(r / rt, rt / r);\n}\n\nfunction densityMax(k: number, m: number) {\n if (k >= m) {\n return 2 - (k - 1) / (m - 1);\n }\n return 1;\n}\n\nfunction coverage(dMin: number, dMax: number, lMin: number, lMax: number) {\n const range = dMax - dMin;\n return 1 - (0.5 * ((dMax - lMax) ** 2 + (dMin - lMin) ** 2)) / (0.1 * range) ** 2;\n}\n\nfunction coverageMax(dMin: number, dMax: number, span: number) {\n const range = dMax - dMin;\n if (span > range) {\n const half = (span - range) / 2;\n return 1 - half ** 2 / (0.1 * range) ** 2;\n }\n return 1;\n}\n\nfunction legibility() {\n return 1;\n}\n\n/**\n * An Extension of Wilkinson's Algorithm for Position Tick Labels on Axes\n * https://www.yuque.com/preview/yuque/0/2019/pdf/185317/1546999150858-45c3b9c2-4e86-4223-bf1a-8a732e8195ed.pdf\n * @param dMin 最小值\n * @param dMax 最大值\n * @param m tick个数\n * @param onlyLoose 是否允许扩展min、max,不绝对强制,例如[3, 97]\n * @param Q nice numbers集合\n * @param w 四个优化组件的权重\n */\nexport default function extended(\n dMin: number,\n dMax: number,\n n: number = 5,\n onlyLoose: boolean = true,\n Q: number[] = DEFAULT_Q,\n w: [number, number, number, number] = [0.25, 0.2, 0.5, 0.05]\n): { min: number; max: number; ticks: number[] } {\n // 处理小于 0 和小数的 tickCount\n const m = n < 0 ? 0 : Math.round(n);\n\n // nan 也会导致异常\n if (Number.isNaN(dMin) || Number.isNaN(dMax) || typeof dMin !== 'number' || typeof dMax !== 'number' || !m) {\n return {\n min: 0,\n max: 0,\n ticks: [],\n };\n }\n\n // js 极大值极小值问题,差值小于 1e-15 会导致计算出错\n if (dMax - dMin < 1e-15 || m === 1) {\n return {\n min: dMin,\n max: dMax,\n ticks: [dMin],\n };\n }\n\n // js 超大值问题\n if (dMax - dMin > 1e148) {\n const count = n || 5;\n const step = (dMax - dMin) / count;\n return {\n min: dMin,\n max: dMax,\n ticks: Array(count).fill(null).map((_,idx) => {\n return prettyNumber(dMin + step * idx);\n }),\n };\n }\n\n const best = {\n score: -2,\n lmin: 0,\n lmax: 0,\n lstep: 0,\n };\n\n let j = 1;\n while (j < Infinity) {\n for (let i = 0; i < Q.length; i += 1) {\n const q = Q[i];\n const sm = simplicityMax(q, Q, j);\n if (w[0] * sm + w[1] + w[2] + w[3] < best.score) {\n j = Infinity;\n break;\n }\n let k = 2;\n while (k < Infinity) {\n const dm = densityMax(k, m);\n if (w[0] * sm + w[1] + w[2] * dm + w[3] < best.score) {\n break;\n }\n\n const delta = (dMax - dMin) / (k + 1) / j / q;\n let z = Math.ceil(Math.log10(delta));\n\n while (z < Infinity) {\n const step = j * q * 10 ** z;\n const cm = coverageMax(dMin, dMax, step * (k - 1));\n\n if (w[0] * sm + w[1] * cm + w[2] * dm + w[3] < best.score) {\n break;\n }\n\n const minStart = Math.floor(dMax / step) * j - (k - 1) * j;\n const maxStart = Math.ceil(dMin / step) * j;\n\n if (minStart <= maxStart) {\n const count = maxStart - minStart;\n for (let i = 0; i <= count; i += 1) {\n const start = minStart + i;\n const lMin = start * (step / j);\n const lMax = lMin + step * (k - 1);\n const lStep = step;\n\n const s = simplicity(q, Q, j, lMin, lMax, lStep);\n const c = coverage(dMin, dMax, lMin, lMax);\n const g = density(k, m, dMin, dMax, lMin, lMax);\n const l = legibility();\n\n const score = w[0] * s + w[1] * c + w[2] * g + w[3] * l;\n if (score > best.score && (!onlyLoose || (lMin <= dMin && lMax >= dMax))) {\n best.lmin = lMin;\n best.lmax = lMax;\n best.lstep = lStep;\n best.score = score;\n }\n }\n }\n z += 1;\n }\n k += 1;\n }\n }\n j += 1;\n }\n\n // 处理精度问题,保证这三个数没有精度问题\n const lmax = prettyNumber(best.lmax);\n const lmin = prettyNumber(best.lmin);\n const lstep = prettyNumber(best.lstep);\n\n // 加 round 是为处理 extended(0.94, 1, 5)\n // 保证生成的 tickCount 没有精度问题\n const tickCount = Math.floor(round((lmax - lmin) / lstep)) + 1;\n const ticks = new Array(tickCount);\n\n // 少用乘法:防止出现 -1.2 + 1.2 * 3 = 2.3999999999999995 的情况\n ticks[0] = prettyNumber(lmin);\n for (let i = 1; i < tickCount; i++) {\n ticks[i] = prettyNumber(ticks[i - 1] + lstep);\n }\n\n return {\n min: Math.min(dMin, head(ticks)),\n max: Math.max(dMax, last(ticks)),\n ticks,\n };\n}\n","import { prettyNumber } from './pretty-number';\n\nexport default function pretty(min: number, max: number, m: number = 5) {\n if (min === max) {\n return {\n max,\n min,\n ticks: [min],\n };\n }\n\n const n = m < 0 ? 0 : Math.round(m);\n if (n === 0) return { max, min, ticks: [] };\n\n /*\n R pretty:\n https://svn.r-project.org/R/trunk/src/appl/pretty.c\n https://www.rdocumentation.org/packages/base/versions/3.5.2/topics/pretty\n */\n const h = 1.5; // high.u.bias\n const h5 = 0.5 + 1.5 * h; // u5.bias\n // 反正我也不会调参,跳过所有判断步骤\n const d = max - min;\n const c = d / n;\n // 当d非常小的时候触发,但似乎没什么用\n // const min_n = Math.floor(n / 3);\n // const shrink_sml = Math.pow(2, 5);\n // if (Math.log10(d) < -2) {\n // c = (_.max([ Math.abs(max), Math.abs(min) ]) * shrink_sml) / min_n;\n // }\n\n const base = Math.pow(10, Math.floor(Math.log10(c)));\n let unit = base;\n if (2 * base - c < h * (c - unit)) {\n unit = 2 * base;\n if (5 * base - c < h5 * (c - unit)) {\n unit = 5 * base;\n if (10 * base - c < h * (c - unit)) {\n unit = 10 * base;\n }\n }\n }\n const nu = Math.ceil(max / unit);\n const ns = Math.floor(min / unit);\n\n const hi = Math.max(nu * unit, max);\n const lo = Math.min(ns * unit, min);\n\n const size = Math.floor((hi - lo) / unit) + 1;\n const ticks = new Array(size);\n for (let i = 0; i < size; i++) {\n ticks[i] = prettyNumber(lo + i * unit);\n }\n\n return {\n min: lo,\n max: hi,\n ticks,\n };\n}\n","import { ScaleConfig } from '../types';\n/**\n * 计算几分位 https://github.com/simple-statistics/simple-statistics/blob/master/src/quantile_sorted.js\n * @param x 数组\n * @param p 百分比\n */\nfunction quantileSorted(x, p) {\n const idx = x.length * p;\n /*if (x.length === 0) { // 当前场景这些条件不可能命中\n throw new Error('quantile requires at least one value.');\n } else if (p < 0 || p > 1) {\n throw new Error('quantiles must be between 0 and 1');\n } else */\n \n if (p === 1) {\n // If p is 1, directly return the last element\n return x[x.length - 1];\n } else if (p === 0) {\n // If p is 0, directly return the first element\n return x[0];\n } else if (idx % 1 !== 0) {\n // If p is not integer, return the next element in array\n return x[Math.ceil(idx) - 1];\n } else if (x.length % 2 === 0) {\n // If the list has even-length, we'll take the average of this number\n // and the next value, if there is one\n return (x[idx - 1] + x[idx]) / 2;\n } else {\n // Finally, in the simple case of an integer value\n // with an odd-length list, return the x value at the index.\n return x[idx];\n }\n}\n\nexport default function calculateTicks(cfg: ScaleConfig) {\n const { tickCount, values } = cfg;\n if (!values || !values.length) {\n return [];\n }\n const sorted = values.slice().sort((a, b) => {\n return a - b;\n });\n const ticks = [];\n for (let i = 0; i < tickCount; i++) {\n const p = i / (tickCount - 1);\n ticks.push(quantileSorted(sorted, p));\n }\n return ticks;\n}\n","import { ScaleConfig } from '../types';\nimport { DAY, getTickInterval, HOUR, MINUTE, MONTH, SECOND, YEAR } from '../util/time';\n\nfunction getYear(date: number) {\n return new Date(date).getFullYear();\n}\n\nfunction createYear(year: number) {\n return new Date(year, 0, 1).getTime();\n}\n\nfunction getMonth(date: number) {\n return new Date(date).getMonth();\n}\n\nfunction diffMonth(min: number, max: number) {\n const minYear = getYear(min);\n const maxYear = getYear(max);\n const minMonth = getMonth(min);\n const maxMonth = getMonth(max);\n return (maxYear - minYear) * 12 + ((maxMonth - minMonth) % 12);\n}\n\nfunction creatMonth(year: number, month: number) {\n return new Date(year, month, 1).getTime();\n}\n\nfunction diffDay(min: number, max: number) {\n return Math.ceil((max - min) / DAY);\n}\n\nfunction diffHour(min: number, max: number) {\n return Math.ceil((max - min) / HOUR);\n}\n\nfunction diffMinus(min: number, max: number) {\n return Math.ceil((max - min) / (60 * 1000));\n}\n\n/**\n * 计算 time 的 ticks,对 month, year 进行 pretty 处理\n * @param cfg 度量的配置项\n * @returns 计算后的 ticks\n */\nexport default function timePretty(cfg: ScaleConfig): number[] {\n const { min, max, minTickInterval, tickCount } = cfg;\n let { tickInterval } = cfg;\n const ticks: number[] = [];\n // 指定 tickInterval 后 tickCount 不生效,需要重新计算\n if (!tickInterval) {\n tickInterval = (max - min) / tickCount;\n // 如果设置了最小间距,则使用最小间距\n if (minTickInterval && tickInterval < minTickInterval) {\n tickInterval = minTickInterval;\n }\n }\n tickInterval = Math.max(Math.floor((max - min) / (2 ** 12 - 1)), tickInterval);\n const minYear = getYear(min);\n // 如果间距大于 1 年,则将开始日期从整年开始\n if (tickInterval > YEAR) {\n const maxYear = getYear(max);\n const yearInterval = Math.ceil(tickInterval / YEAR);\n for (let i = minYear; i <= maxYear + yearInterval; i = i + yearInterval) {\n ticks.push(createYear(i));\n }\n } else if (tickInterval > MONTH) {\n // 大于月时\n const monthInterval = Math.ceil(tickInterval / MONTH);\n const mmMoth = getMonth(min);\n const dMonths = diffMonth(min, max);\n for (let i = 0; i <= dMonths + monthInterval; i = i + monthInterval) {\n ticks.push(creatMonth(minYear, i + mmMoth));\n }\n } else if (tickInterval > DAY) {\n // 大于天\n const date = new Date(min);\n const year = date.getFullYear();\n const month = date.getMonth();\n const mday = date.getDate();\n const day = Math.ceil(tickInterval / DAY);\n const ddays = diffDay(min, max);\n for (let i = 0; i < ddays + day; i = i + day) {\n ticks.push(new Date(year, month, mday + i).getTime());\n }\n } else if (tickInterval > HOUR) {\n // 大于小时\n const date = new Date(min);\n const year = date.getFullYear();\n const month = date.getMonth();\n const day = date.getDate();\n const hour = date.getHours();\n const hours = Math.ceil(tickInterval / HOUR);\n const dHours = diffHour(min, max);\n for (let i = 0; i <= dHours + hours; i = i + hours) {\n ticks.push(new Date(year, month, day, hour + i).getTime());\n }\n } else if (tickInterval > MINUTE) {\n // 大于分钟\n const dMinus = diffMinus(min, max);\n const minutes = Math.ceil(tickInterval / MINUTE);\n for (let i = 0; i <= dMinus + minutes; i = i + minutes) {\n ticks.push(min + i * MINUTE);\n }\n } else {\n // 小于分钟\n let interval = tickInterval;\n if (interval < SECOND) {\n interval = SECOND;\n }\n const minSecond = Math.floor(min / SECOND) * SECOND;\n const dSeconds = Math.ceil((max - min) / SECOND);\n const seconds = Math.ceil(interval / SECOND);\n for (let i = 0; i < dSeconds + seconds; i = i + seconds) {\n ticks.push(minSecond + i * SECOND);\n }\n }\n\n // 最好是能从算法能解决这个问题,但是如果指定了 tickInterval,计算 ticks,也只能这么算,所以\n // 打印警告提示\n if (ticks.length >= 512) {\n console.warn(`Notice: current ticks length(${ticks.length}) >= 512, may cause performance issues, even out of memory. Because of the configure \"tickInterval\"(in milliseconds, current is ${tickInterval}) is too small, increase the value to solve the problem!`);\n }\n\n return ticks;\n}\n","import { IGroup } from '@antv/g-base';\nimport { Event as GraphEvent } from '@antv/g-base';\nimport { LooseObject } from '../types';\n\n/**\n *\n * @param group 分组\n * @param eventName 事件名\n * @param eventObject 事件对象\n */\nexport function propagationDelegate(group: IGroup, eventName: string, eventObject: LooseObject) {\n const event = new GraphEvent(eventName, eventObject);\n event.target = group;\n event.propagationPath.push(group); // 从当前 group 开始触发 delegation\n group.emitDelegation(eventName, event);\n let parent = group.getParent() as IGroup;\n // 执行冒泡\n while (parent) {\n // 委托事件要先触发\n parent.emitDelegation(eventName, event);\n event.propagationPath.push(parent);\n parent = parent.getParent() as IGroup;\n }\n}\n","import cat from './cat';\nimport d3Linear from './d3-linear';\nimport linear from './linear';\nimport log from './log';\nimport pow from './pow';\nimport quantile from './quantile';\nimport rPretty from './r-prettry';\nimport { getTickMethod, registerTickMethod } from './register';\nimport time from './time';\nimport timeCat from './time-cat';\nimport timePretty from './time-pretty';\n\nregisterTickMethod('cat', cat);\nregisterTickMethod('time-cat', timeCat);\nregisterTickMethod('wilkinson-extended', linear);\nregisterTickMethod('r-pretty', rPretty);\nregisterTickMethod('time', time);\nregisterTickMethod('time-pretty', timePretty);\nregisterTickMethod('log', log);\nregisterTickMethod('pow', pow);\nregisterTickMethod('quantile', quantile);\nregisterTickMethod('d3-linear', d3Linear);\n\nexport { getTickMethod, registerTickMethod };\n","import { ScaleConfig } from '../types';\nimport catTicks from './cat';\n/**\n * 计算时间分类的 ticks, 保头,保尾\n * @param cfg 度量的配置项\n * @returns 计算后的 ticks\n */\nexport default function timeCat(cfg: ScaleConfig): any[] {\n // 默认保留最后一条\n const ticks = catTicks({ showLast: true, ...cfg });\n return ticks;\n}\n","import { head, isNil, last } from '@antv/util';\nimport { ScaleConfig } from '../types';\nimport extended from '../util/extended';\nimport interval from '../util/interval';\nimport strictLimit from '../util/strict-limit';\n\n/**\n * 计算线性的 ticks,使用 wilkinson extended 方法\n * @param cfg 度量的配置项\n * @returns 计算后的 ticks\n */\nexport default function linear(cfg: ScaleConfig): number[] {\n const { min, max, tickCount, nice, tickInterval, minLimit, maxLimit } = cfg;\n const ticks = extended(min, max, tickCount, nice).ticks;\n\n if (!isNil(minLimit) || !isNil(maxLimit)) {\n return strictLimit(cfg, head(ticks), last(ticks));\n }\n if (tickInterval) {\n return interval(min, max, tickInterval).ticks;\n }\n return ticks;\n}\n","import { head, isNil, last } from '@antv/util';\nimport { ScaleConfig } from '../types';\nimport interval from '../util/interval';\nimport pretty from '../util/pretty';\nimport strictLimit from '../util/strict-limit';\n\n/**\n * 计算线性的 ticks,使用 R's pretty 方法\n * @param cfg 度量的配置项\n * @returns 计算后的 ticks\n */\nexport default function linearPretty(cfg: ScaleConfig): number[] {\n const { min, max, tickCount, tickInterval, minLimit, maxLimit } = cfg;\n const ticks = pretty(min, max, tickCount).ticks;\n\n if (!isNil(minLimit) || !isNil(maxLimit)) {\n return strictLimit(cfg, head(ticks), last(ticks));\n }\n if (tickInterval) {\n return interval(min, max, tickInterval).ticks;\n }\n return ticks;\n}\n","import { ScaleConfig } from '../types';\nimport { getTickInterval } from '../util/time';\n\nexport default function calculateTimeTicks(cfg: ScaleConfig): number[] {\n const { min, max, minTickInterval } = cfg;\n let tickInterval = cfg.tickInterval;\n let tickCount = cfg.tickCount;\n // 指定 tickInterval 后 tickCount 不生效,需要重新计算\n if (tickInterval) {\n tickCount = Math.ceil((max - min) / tickInterval);\n } else {\n tickInterval = getTickInterval(min, max, tickCount)[1];\n const count = (max - min) / tickInterval;\n const ratio = count / tickCount;\n if (ratio > 1) {\n tickInterval = tickInterval * Math.ceil(ratio);\n }\n // 如果设置了最小间距,则使用最小间距\n if (minTickInterval && tickInterval < minTickInterval) {\n tickInterval = minTickInterval;\n }\n }\n\n tickInterval = Math.max(Math.floor((max - min) / (2 ** 12 - 1)), tickInterval);\n const ticks = [];\n for (let i = min; i < max + tickInterval; i += tickInterval) {\n ticks.push(i);\n }\n return ticks;\n}\n","import { isEmpty } from '@antv/util';\nimport { ScaleConfig } from '../types';\nimport { getLogPositiveMin, log } from '../util/math';\n\n/**\n * 计算 log 的 ticks,考虑 min = 0 的场景\n * @param cfg 度量的配置项\n * @returns 计算后的 ticks\n */\nexport default function calculateLogTicks(cfg: ScaleConfig) {\n const { base, tickCount, min, max, values } = cfg;\n let minTick;\n const maxTick = log(base, max);\n if (min > 0) {\n minTick = Math.floor(log(base, min));\n } else {\n const positiveMin = getLogPositiveMin(values, base, max);\n minTick = Math.floor(log(base, positiveMin));\n }\n const count = maxTick - minTick;\n const avg = Math.ceil(count / tickCount);\n const ticks = [];\n for (let i = minTick; i < maxTick + avg; i = i + avg) {\n ticks.push(Math.pow(base, i));\n }\n if (min <= 0) {\n // 最小值 <= 0 时显示 0\n ticks.unshift(0);\n }\n return ticks;\n}\n","import { ScaleConfig } from '../types';\nimport { calBase } from '../util/math';\nimport pretty from '../util/pretty';\n/**\n * 计算 Pow 的 ticks\n * @param cfg 度量的配置项\n * @returns 计算后的 ticks\n */\nexport default function calculatePowTicks(cfg: ScaleConfig) {\n const { exponent, tickCount } = cfg;\n const max = Math.ceil(calBase(exponent, cfg.max));\n const min = Math.floor(calBase(exponent, cfg.min));\n const ticks = pretty(min, max, tickCount).ticks;\n return ticks.map((tick) => {\n const factor = tick >= 0 ? 1 : -1;\n return Math.pow(tick, exponent) * factor;\n });\n}\n","import { head, isNil, last } from '@antv/util';\nimport { ScaleConfig } from '../types';\nimport d3Linear from '../util/d3-linear';\nimport interval from '../util/interval';\nimport strictLimit from '../util/strict-limit';\n\nexport default function d3LinearTickMethod(cfg: ScaleConfig): number[] {\n const { min, max, tickInterval, minLimit, maxLimit } = cfg;\n const ticks = d3Linear(cfg);\n\n if (!isNil(minLimit) || !isNil(maxLimit)) {\n return strictLimit(cfg, head(ticks), last(ticks));\n }\n if (tickInterval) {\n return interval(min, max, tickInterval).ticks;\n }\n return ticks;\n}\n","import Scale from './base';\nimport Category from './category/base';\nimport TimeCat from './category/time';\nimport Linear from './continuous/linear';\nimport Log from './continuous/log';\nimport Pow from './continuous/pow';\nimport Time from './continuous/time';\nimport Quantize from './continuous/quantize';\nimport Quantile from './continuous/quantile';\nimport { getScale, registerScale } from './factory';\nimport Identity from './identity/index';\nimport { getTickMethod, registerTickMethod } from './tick-method/index';\nimport { ScaleConfig, Tick } from './types';\n\nregisterScale('cat', Category);\nregisterScale('category', Category);\nregisterScale('identity', Identity);\nregisterScale('linear', Linear);\nregisterScale('log', Log);\nregisterScale('pow', Pow);\nregisterScale('time', Time);\nregisterScale('timeCat', TimeCat);\nregisterScale('quantize', Quantize);\nregisterScale('quantile', Quantile);\n\nexport {\n Category,\n Identity,\n Linear,\n Log,\n Pow,\n Time,\n TimeCat,\n Quantile,\n Quantize,\n Scale,\n getScale,\n registerScale,\n ScaleConfig,\n Tick,\n getTickMethod,\n registerTickMethod,\n};\n","import { IElement } from '@antv/g-base';\nimport { ext, vec2, vec3 } from '@antv/matrix-util';\nimport { BBox, Point } from '../types';\n\nconst identityMatrix = [1, 0, 0, 0, 1, 0, 0, 0, 1];\nexport function getMatrixByAngle(point: Point, angle: number, matrix = identityMatrix): number[] {\n if (!angle) {\n // 角度为 0 或者 null 时返回 null\n return null;\n }\n const m = ext.transform(matrix, [\n ['t', -point.x, -point.y],\n ['r', angle],\n ['t', point.x, point.y],\n ]);\n return m;\n}\n\nexport function getMatrixByTranslate(point: Point, currentMatrix?: number[]): number[] {\n if (!point.x && !point.y) {\n // 0,0 或者 nan 的情况下返回 null\n return null;\n }\n return ext.transform(currentMatrix || identityMatrix, [['t', point.x, point.y]]);\n}\n\n// 从矩阵获取旋转的角度\nexport function getAngleByMatrix(matrix: [\n number, number, number,\n number, number, number,\n number, number, number\n]): number {\n const xVector: [number, number, number] = [1, 0, 0];\n const out: [ number, number, number ] = [0, 0, 0];\n vec3.transformMat3(out, xVector, matrix);\n return Math.atan2(out[1], out[0]);\n}\n// 矩阵 * 向量\nfunction multiplyVec2(matrix, v) {\n const out: [number, number] = [0, 0];\n vec2.transformMat3(out, v, matrix);\n return out;\n}\n\nexport function applyMatrix2BBox(matrix: number[], bbox: BBox) {\n const topLeft = multiplyVec2(matrix, [bbox.minX, bbox.minY]);\n const topRight = multiplyVec2(matrix, [bbox.maxX, bbox.minY]);\n const bottomLeft = multiplyVec2(matrix, [bbox.minX, bbox.maxY]);\n const bottomRight = multiplyVec2(matrix, [bbox.maxX, bbox.maxY]);\n const minX = Math.min(topLeft[0], topRight[0], bottomLeft[0], bottomRight[0]);\n const maxX = Math.max(topLeft[0], topRight[0], bottomLeft[0], bottomRight[0]);\n const minY = Math.min(topLeft[1], topRight[1], bottomLeft[1], bottomRight[1]);\n const maxY = Math.max(topLeft[1], topRight[1], bottomLeft[1], bottomRight[1]);\n return {\n x: minX,\n y: minY,\n minX,\n minY,\n maxX,\n maxY,\n width: maxX - minX,\n height: maxY - minY,\n };\n}\n\nexport function applyRotate(shape: IElement, rotate: number, x: number, y: number) {\n if (rotate) {\n const matrix = getMatrixByAngle({ x, y }, rotate, shape.getMatrix());\n shape.setMatrix(matrix);\n }\n}\n\nexport function applyTranslate(shape: IElement, x: number, y: number) {\n const translateMatrix = getMatrixByTranslate({ x, y });\n shape.attr('matrix', translateMatrix);\n}\n","import { IElement, IGroup } from '@antv/g-base';\nimport { each, isArray, isNil, isNumber } from '@antv/util';\nimport { BBox, Point, Region } from '../types';\n\nexport function formatPadding(padding: number | number[]): number[] {\n let top = 0;\n let left = 0;\n let right = 0;\n let bottom = 0;\n\n if (isNumber(padding)) {\n top = left = right = bottom = padding;\n } else if (isArray(padding)) {\n top = padding[0];\n right = !isNil(padding[1]) ? padding[1] : padding[0];\n bottom = !isNil(padding[2]) ? padding[2] : padding[0];\n left = !isNil(padding[3]) ? padding[3] : right;\n }\n\n return [top, right, bottom, left];\n}\n\nexport function clearDom(container: HTMLElement) {\n const children = container.childNodes;\n const length = children.length;\n for (let i = length - 1; i >= 0; i--) {\n container.removeChild(children[i]);\n }\n}\n\nexport function hasClass(elements, cName): boolean {\n return !!elements.className.match(new RegExp(`(\\\\s|^)${cName}(\\\\s|$)`));\n}\n\nexport function regionToBBox(region: Region): BBox {\n const { start, end } = region;\n const minX = Math.min(start.x, end.x);\n const minY = Math.min(start.y, end.y);\n const maxX = Math.max(start.x, end.x);\n const maxY = Math.max(start.y, end.y);\n return {\n x: minX,\n y: minY,\n minX,\n minY,\n maxX,\n maxY,\n width: maxX - minX,\n height: maxY - minY,\n };\n}\n\nexport function pointsToBBox(points: Point[]): BBox {\n const xs: number[] = points.map((point) => point.x);\n const ys: number[] = points.map((point) => point.y);\n const minX = Math.min(...xs);\n const minY = Math.min(...ys);\n const maxX = Math.max(...xs);\n const maxY = Math.max(...ys);\n return {\n x: minX,\n y: minY,\n minX,\n minY,\n maxX,\n maxY,\n width: maxX - minX,\n height: maxY - minY,\n };\n}\n\nexport function createBBox(x: number, y: number, width: number, height: number): BBox {\n const maxX = x + width;\n const maxY = y + height;\n\n return {\n x,\n y,\n width,\n height,\n minX: x,\n minY: y,\n // 非常奇葩的 js 特性\n // Infinity + Infinity = Infinity\n // Infinity - Infinity = NaN\n // fixed https://github.com/antvis/G2Plot/issues/1243\n maxX: isNaN(maxX) ? 0 : maxX,\n maxY: isNaN(maxY) ? 0 : maxY,\n };\n}\n\nexport function getValueByPercent(min: number, max: number, percent: number) {\n return (1 - percent) * min + max * percent;\n}\n\nexport function getCirclePoint(center: Point, radius: number, angle: number) {\n return {\n x: center.x + Math.cos(angle) * radius,\n y: center.y + Math.sin(angle) * radius,\n };\n}\n\nexport function distance(p1: Point, p2: Point): number {\n const dx = p2.x - p1.x;\n const dy = p2.y - p1.y;\n return Math.sqrt(dx * dx + dy * dy);\n}\n\nexport const wait = (interval: number): Promise => {\n return new Promise((resolve) => {\n setTimeout(resolve, interval);\n });\n};\n\n/**\n * 判断两个数值 是否接近\n * - 解决精度问题(由于无法确定精度上限,根据具体场景可传入 精度 参数)\n */\nexport const near = (x: number, y: number, e = Number.EPSILON ** 0.5): boolean =>\n [x, y].includes(Infinity) ? Math.abs(x) === Math.abs(y) : Math.abs(x - y) < e;\n\nexport function intersectBBox(box1: BBox, box2: BBox): BBox {\n const minX = Math.max(box1.minX, box2.minX);\n const minY = Math.max(box1.minY, box2.minY);\n const maxX = Math.min(box1.maxX, box2.maxX);\n const maxY = Math.min(box1.maxY, box2.maxY);\n return createBBox(minX, minY, maxX - minX, maxY - minY);\n}\n\nexport function mergeBBox(box1: BBox, box2: BBox): BBox {\n const minX = Math.min(box1.minX, box2.minX);\n const minY = Math.min(box1.minY, box2.minY);\n const maxX = Math.max(box1.maxX, box2.maxX);\n const maxY = Math.max(box1.maxY, box2.maxY);\n return createBBox(minX, minY, maxX - minX, maxY - minY);\n}\n\nexport function getBBoxWithClip(element: IElement): BBox {\n const clipShape = element.getClip();\n const clipBBox = clipShape && clipShape.getBBox();\n let bbox;\n if (!element.isGroup()) {\n // 如果是普通的图形\n bbox = element.getBBox();\n } else {\n let minX = Infinity;\n let maxX = -Infinity;\n let minY = Infinity;\n let maxY = -Infinity;\n const children = (element as IGroup).getChildren();\n if (children.length > 0) {\n each(children, (child: IElement) => {\n if (child.get('visible')) {\n // 如果分组没有子元素,则直接跳过\n if (child.isGroup() && child.get('children').length === 0) {\n return true;\n }\n const box = getBBoxWithClip(child);\n // 计算 4 个顶点\n const leftTop = child.applyToMatrix([box.minX, box.minY, 1]);\n const leftBottom = child.applyToMatrix([box.minX, box.maxY, 1]);\n const rightTop = child.applyToMatrix([box.maxX, box.minY, 1]);\n const rightBottom = child.applyToMatrix([box.maxX, box.maxY, 1]);\n // 从中取最小的范围\n const boxMinX = Math.min(leftTop[0], leftBottom[0], rightTop[0], rightBottom[0]);\n const boxMaxX = Math.max(leftTop[0], leftBottom[0], rightTop[0], rightBottom[0]);\n const boxMinY = Math.min(leftTop[1], leftBottom[1], rightTop[1], rightBottom[1]);\n const boxMaxY = Math.max(leftTop[1], leftBottom[1], rightTop[1], rightBottom[1]);\n\n if (boxMinX < minX) {\n minX = boxMinX;\n }\n\n if (boxMaxX > maxX) {\n maxX = boxMaxX;\n }\n\n if (boxMinY < minY) {\n minY = boxMinY;\n }\n\n if (boxMaxY > maxY) {\n maxY = boxMaxY;\n }\n }\n });\n } else {\n minX = 0;\n maxX = 0;\n minY = 0;\n maxY = 0;\n }\n bbox = createBBox(minX, minY, maxX - minX, maxY - minY);\n }\n if (clipBBox) {\n return intersectBBox(bbox, clipBBox);\n } else {\n return bbox;\n }\n}\n\nexport function updateClip(element: IElement, newElement: IElement) {\n if (!element.getClip() && !newElement.getClip()) {\n // 两者都没有 clip\n return;\n }\n const newClipShape = newElement.getClip();\n if (!newClipShape) {\n // 新的 element 没有 clip\n element.setClip(null); // 移除 clip\n return;\n }\n const clipCfg = {\n type: newClipShape.get('type'),\n attrs: newClipShape.attr(),\n };\n element.setClip(clipCfg);\n}\n\nexport function toPx(number) {\n return `${number}px`;\n}\n\nexport function getTextPoint(start: Point, end: Point, position: string, offset: number): Point {\n const lineLength = distance(start, end);\n const offsetPercent = offset / lineLength; // 计算间距同线的比例,用于计算最终的位置\n let percent = 0;\n if (position === 'start') {\n percent = 0 - offsetPercent;\n } else if (position === 'end') {\n percent = 1 + offsetPercent;\n }\n return {\n x: getValueByPercent(start.x, end.x, percent),\n y: getValueByPercent(start.y, end.y, percent),\n };\n}\n","import { Base } from '@antv/g-base';\nimport { deepMix, each, hasKey, isObject } from '@antv/util';\nimport { ILocation } from '../interfaces';\nimport { BBox, ComponentCfg, LocationCfg, OffsetPoint } from '../types';\nconst LOCATION_FIELD_MAP = {\n none: [],\n point: ['x', 'y'],\n region: ['start', 'end'],\n points: ['points'],\n circle: ['center', 'radius', 'startAngle', 'endAngle'],\n};\n\nabstract class Component extends Base implements ILocation {\n constructor(cfg: T) {\n super(cfg);\n this.initCfg();\n }\n /**\n * @protected\n * 默认的配置项\n * @returns {object} 默认的配置项\n */\n public getDefaultCfg() {\n return {\n id: '',\n name: '',\n type: '',\n locationType: 'none',\n offsetX: 0,\n offsetY: 0,\n animate: false,\n capture: true,\n updateAutoRender: false,\n animateOption: {\n appear: null, // 初始入场动画配置\n update: {\n duration: 400,\n easing: 'easeQuadInOut',\n }, // 更新时发生变更的动画配置\n enter: {\n duration: 400,\n easing: 'easeQuadInOut',\n }, // 更新时新增元素的入场动画配置\n leave: {\n duration: 350,\n easing: 'easeQuadIn',\n }, // 更新时销毁动画配置\n },\n events: null,\n defaultCfg: {},\n visible: true,\n };\n }\n\n /**\n * 清理组件的内容,一般配合 render 使用\n * @example\n * axis.clear();\n * axis.render();\n */\n public clear() {}\n\n /**\n * 更新组件\n * @param {object} cfg 更新属性\n */\n public update(cfg: Partial) {\n const defaultCfg = this.get('defaultCfg') || {};\n each(cfg, (value, name) => {\n const originCfg = this.get(name);\n let newCfg = value;\n if (originCfg !== value) {\n // 判断两者是否相等,主要是进行 null 的判定\n if (isObject(value) && defaultCfg[name]) {\n // 新设置的属性与默认值进行合并\n newCfg = deepMix({}, defaultCfg[name], value);\n }\n this.set(name, newCfg);\n }\n });\n this.updateInner(cfg);\n this.afterUpdate(cfg);\n }\n // 更新内部\n protected updateInner(cfg: Partial) {\n\n }\n\n protected afterUpdate(cfg: Partial) {\n // 更新时考虑显示、隐藏\n if (hasKey(cfg, 'visible')) {\n if (cfg.visible) {\n this.show();\n } else {\n this.hide();\n }\n }\n // 更新时考虑capture\n if (hasKey(cfg, 'capture')) {\n this.setCapture(cfg.capture);\n }\n }\n\n public abstract getBBox(): BBox;\n\n public getLayoutBBox(): BBox {\n return this.getBBox(); // 默认返回 getBBox,不同的组件内部单独实现\n }\n\n public getLocationType() {\n return this.get('locationType');\n }\n\n public getOffset(): OffsetPoint {\n return {\n offsetX: this.get('offsetX'),\n offsetY: this.get('offsetY'),\n };\n }\n\n // 默认使用 update\n public setOffset(offsetX: number, offsetY: number) {\n this.update({\n offsetX,\n offsetY,\n } as T);\n }\n\n public setLocation(cfg: LocationCfg) {\n const location = { ...cfg } as Partial;\n this.update(location);\n }\n\n // 实现 ILocation 接口的 getLocation\n public getLocation(): LocationCfg {\n const location = {} as LocationCfg;\n const locationType = this.get('locationType');\n const fields = LOCATION_FIELD_MAP[locationType];\n each(fields, (field) => {\n location[field] = this.get(field);\n });\n return location;\n }\n\n public isList(): boolean {\n return false;\n }\n\n public isSlider(): boolean {\n return false;\n }\n\n /**\n * @protected\n * 初始化,用于具体的组件继承\n */\n public init() {}\n\n /**\n * 绘制组件\n */\n public abstract render();\n\n /**\n * 显示\n */\n public abstract show();\n\n public abstract setCapture(capture: boolean);\n\n /**\n * 隐藏\n */\n public abstract hide();\n\n // 将组件默认的配置项设置合并到传入的配置项\n private initCfg() {\n const defaultCfg = this.get('defaultCfg');\n each(defaultCfg, (value, name) => {\n const cfg = this.get(name);\n if (isObject(cfg)) {\n const newCfg = deepMix({}, value, cfg);\n this.set(name, newCfg);\n }\n });\n }\n}\n\nexport default Component;\n","/**\n * @fileoverview 使用 G.Group 的组件\n * @author dxq613@gmail.com\n */\nimport { IElement, IGroup, IShape } from '@antv/g-base';\nimport { difference, each, isNil, keys, mix, pick } from '@antv/util';\nimport { BBox, GroupComponentCfg, LooseObject, Point } from '../types';\nimport { propagationDelegate } from '../util/event';\nimport { applyMatrix2BBox, getMatrixByTranslate } from '../util/matrix';\nimport { getBBoxWithClip, updateClip } from '../util/util';\nimport Component from './component';\ntype Callback = (evt: object) => void;\n\nconst STATUS_UPDATE = 'update_status';\nconst COPY_PROPERTIES = ['visible', 'tip', 'delegateObject']; // 更新对象时需要复制的属性\nconst COPY_PROPERTIES_EXCLUDES = ['container', 'group', 'shapesMap', 'isRegister', 'isUpdating', 'destroyed']; // 更新子组件时排除的属性\n\nexport type GroupComponentCtor<\n C extends GroupComponentCfg = GroupComponentCfg,\n T extends GroupComponent = GroupComponent\n> = new (cfg: C) => T;\n\nabstract class GroupComponent extends Component {\n public getDefaultCfg() {\n const cfg = super.getDefaultCfg();\n return {\n ...cfg,\n container: null,\n /**\n * @private\n * 缓存图形的 Map\n */\n shapesMap: {},\n group: null,\n capture: true,\n /**\n * @private 组件或者图形是否允许注册\n * @type {false}\n */\n isRegister: false,\n /**\n * @private 是否正在更新\n * @type {false}\n */\n isUpdating: false,\n /**\n * @private\n * 是否初始状态,一旦 render,update 后,这个状态就变成 false, clear 后恢复\n */\n isInit: true,\n };\n }\n\n public remove() {\n this.clear();\n const group = this.get('group');\n group.remove();\n }\n\n public clear() {\n const group = this.get('group');\n group.clear();\n this.set('shapesMap', {});\n this.clearOffScreenCache();\n this.set('isInit', true);\n }\n\n public getChildComponentById(id: string) {\n const group = this.getElementById(id);\n const inst = group && group.get('component');\n return inst;\n }\n\n public getElementById(id: string) {\n return this.get('shapesMap')[id];\n }\n\n public getElementByLocalId(localId) {\n const id = this.getElementId(localId);\n return this.getElementById(id);\n }\n\n public getElementsByName(name: string) {\n const rst = [];\n each(this.get('shapesMap'), (elem) => {\n if (elem.get('name') === name) {\n rst.push(elem);\n }\n });\n\n return rst;\n }\n\n public getContainer(): IGroup {\n return this.get('container') as IGroup;\n }\n\n public updateInner(cfg: Partial) {\n // this.updateInner();\n // this.set('isUpdating', false);\n this.offScreenRender();\n if (this.get('updateAutoRender')) {\n this.render();\n }\n }\n\n public render() {\n let offScreenGroup = this.get('offScreenGroup');\n if (!offScreenGroup) {\n offScreenGroup = this.offScreenRender();\n }\n const group = this.get('group');\n this.updateElements(offScreenGroup, group);\n this.deleteElements();\n this.applyOffset();\n if (!this.get('eventInitted')) {\n this.initEvent();\n this.set('eventInitted', true);\n }\n this.set('isInit', false);\n }\n\n public show() {\n const group = this.get('group');\n group.show();\n this.set('visible', true);\n }\n\n public hide() {\n const group = this.get('group');\n group.hide();\n this.set('visible', false);\n }\n\n public setCapture(capture) {\n const group = this.get('group');\n group.set('capture', capture);\n this.set('capture', capture);\n }\n\n public destroy() {\n this.removeEvent();\n this.remove();\n super.destroy();\n }\n\n public getBBox(): BBox {\n return this.get('group').getCanvasBBox();\n }\n\n public getLayoutBBox(): BBox {\n const group = this.get('group');\n // 防止被 clear 了,offScreenBBox 不存在\n let bbox = this.getInnerLayoutBBox();\n const matrix = group.getTotalMatrix();\n if (matrix) {\n bbox = applyMatrix2BBox(matrix, bbox);\n }\n return bbox; // 默认返回 getBBox,不同的组件内部单独实现\n }\n\n // 复写 on, off, emit 透传到 group\n public on(evt: string, callback: Callback, once?: boolean): this {\n const group = this.get('group');\n group.on(evt, callback, once);\n return this;\n }\n\n public off(evt?: string, callback?: Callback): this {\n const group = this.get('group');\n group && group.off(evt, callback);\n return this;\n }\n\n public emit(eventName: string, eventObject: LooseObject) {\n const group = this.get('group');\n group.emit(eventName, eventObject);\n }\n\n public init() {\n super.init();\n if (!this.get('group')) {\n this.initGroup();\n }\n this.offScreenRender(); // 绘制离屏 group\n }\n\n // 获取组件内部布局占的包围盒\n protected getInnerLayoutBBox() {\n return this.get('offScreenBBox') || this.get('group').getBBox();\n }\n\n // 抛出委托对象\n protected delegateEmit(eventName: string, eventObject: LooseObject) {\n const group = this.get('group');\n eventObject.target = group;\n group.emit(eventName, eventObject);\n propagationDelegate(group, eventName, eventObject);\n }\n // 创建离屏的 group ,不添加在 canvas 中\n protected createOffScreenGroup() {\n const group = this.get('group');\n const GroupClass = group.getGroupBase(); // 获取分组的构造函数\n const newGroup = new GroupClass({\n delegateObject: this.getDelegateObject(), // 生成委托事件触发时附加的对象\n });\n return newGroup;\n }\n\n // 应用 offset\n protected applyOffset() {\n const offsetX = this.get('offsetX');\n const offsetY = this.get('offsetY');\n this.moveElementTo(this.get('group'), {\n x: offsetX,\n y: offsetY,\n });\n }\n\n protected initGroup() {\n const container = this.get('container');\n this.set(\n 'group',\n container.addGroup({\n id: this.get('id'),\n name: this.get('name'),\n capture: this.get('capture'),\n visible: this.get('visible'),\n isComponent: true,\n component: this,\n delegateObject: this.getDelegateObject(),\n })\n );\n }\n\n // 离屏渲染\n protected offScreenRender() {\n this.clearOffScreenCache();\n const offScreenGroup = this.createOffScreenGroup();\n\n this.renderInner(offScreenGroup);\n this.set('offScreenGroup', offScreenGroup);\n // 包含包围盒的 bbox\n this.set('offScreenBBox', getBBoxWithClip(offScreenGroup));\n return offScreenGroup;\n }\n\n /**\n * @protected\n * 在组件上添加分组,主要解决 isReigeter 的问题\n * @param {IGroup} parent 父元素\n * @param {object} cfg 分组的配置项\n */\n protected addGroup(parent: IGroup, cfg) {\n this.appendDelegateObject(parent, cfg);\n const group = parent.addGroup(cfg);\n if (this.get('isRegister')) {\n this.registerElement(group);\n }\n return group;\n }\n\n /**\n * @protected\n * 在组件上添加图形,主要解决 isReigeter 的问题\n * @param {IGroup} parent 父元素\n * @param {object} cfg 分组的配置项\n */\n protected addShape(parent: IGroup, cfg) {\n this.appendDelegateObject(parent, cfg);\n const shape = parent.addShape(cfg);\n if (this.get('isRegister')) {\n this.registerElement(shape);\n }\n return shape;\n }\n\n /**\n * 在组件上添加子组件\n *\n * @param parent 父元素\n * @param cfg 子组件配置项\n */\n protected addComponent(\n parent: IGroup,\n cfg: Omit & { component: GroupComponentCtor }\n ) {\n const { id, component: Ctor, ...restCfg } = cfg;\n // @ts-ignore\n const inst: CT = new Ctor({\n ...restCfg,\n id,\n container: parent,\n updateAutoRender: this.get('updateAutoRender'),\n });\n inst.init();\n inst.render();\n\n if (this.get('isRegister')) {\n this.registerElement(inst.get('group'));\n }\n\n return inst;\n }\n\n protected initEvent() {}\n\n protected removeEvent() {\n const group = this.get('group');\n group.off();\n }\n\n protected getElementId(localId: string) {\n const id = this.get('id'); // 组件的 Id\n const name = this.get('name'); // 组件的名称\n return `${id}-${name}-${localId}`;\n }\n\n protected registerElement(element) {\n const id = element.get('id');\n this.get('shapesMap')[id] = element;\n }\n\n protected unregisterElement(element) {\n const id = element.get('id');\n delete this.get('shapesMap')[id];\n }\n\n // 移动元素\n protected moveElementTo(element: IElement, point: Point) {\n const matrix = getMatrixByTranslate(point);\n element.attr('matrix', matrix);\n }\n\n /**\n * 内部的渲染\n * @param {IGroup} group 图形分组\n */\n protected abstract renderInner(group: IGroup);\n\n /**\n * 图形元素新出现时的动画,默认图形从透明度 0 到当前透明度\n * @protected\n * @param {string} elmentName 图形元素名称\n * @param {IElement} newElement 新的图形元素\n * @param {object} animateCfg 动画的配置项\n */\n protected addAnimation(elmentName, newElement, animateCfg) {\n // 缓存透明度\n let originOpacity = newElement.attr('opacity');\n if (isNil(originOpacity)) {\n originOpacity = 1;\n }\n newElement.attr('opacity', 0);\n newElement.animate({ opacity: originOpacity }, animateCfg);\n }\n\n /**\n * 图形元素新出现时的动画,默认图形从透明度 0 到当前透明度\n * @protected\n * @param {string} elmentName 图形元素名称\n * @param {IElement} originElement 要删除的图形元素\n * @param {object} animateCfg 动画的配置项\n */\n protected removeAnimation(elementName, originElement, animateCfg) {\n originElement.animate({ opacity: 0 }, animateCfg);\n }\n\n /**\n * 图形元素的更新动画\n * @param {string} elmentName 图形元素名称\n * @param {IElement} originElement 现有的图形元素\n * @param {object} newAttrs 新的图形元素\n * @param {object} animateCfg 动画的配置项\n */\n protected updateAnimation(elementName, originElement, newAttrs, animateCfg) {\n originElement.animate(newAttrs, animateCfg);\n }\n\n // 更新组件的图形\n protected updateElements(newGroup, originGroup) {\n const animate = this.get('animate');\n const animateOption = this.get('animateOption');\n const children = newGroup.getChildren().slice(0); // 创建一个新数组,防止添加到 originGroup 时, children 变动\n let preElement; // 前面已经匹配到的图形元素,用于\n each(children, (element) => {\n const elementId = element.get('id');\n const originElement = this.getElementById(elementId);\n const elementName = element.get('name');\n if (originElement) {\n if (element.get('isComponent')) {\n // 嵌套子组件更新\n const childComponent = element.get('component');\n const origChildComponent: GroupComponent = originElement.get('component');\n const newCfg = pick(childComponent.cfg, difference(keys(childComponent.cfg), COPY_PROPERTIES_EXCLUDES));\n origChildComponent.update(newCfg);\n originElement.set(STATUS_UPDATE, 'update');\n } else {\n const replaceAttrs = this.getReplaceAttrs(originElement, element);\n // 更新\n if (animate && animateOption.update) {\n // 没有动画\n this.updateAnimation(elementName, originElement, replaceAttrs, animateOption.update);\n } else {\n // originElement.attrs = replaceAttrs; // 直接替换\n originElement.attr(replaceAttrs);\n }\n // 如果是分组,则继续执行\n if (element.isGroup()) {\n this.updateElements(element, originElement);\n }\n // 复制属性\n each(COPY_PROPERTIES, (name) => {\n originElement.set(name, element.get(name));\n });\n updateClip(originElement, element);\n\n preElement = originElement;\n // 执行完更新后设置状态位为更新\n originElement.set(STATUS_UPDATE, 'update');\n }\n } else {\n // 没有对应的图形,则插入当前图形\n originGroup.add(element); // 应该在 group 加个 insertAt 的方法\n const siblings = originGroup.getChildren(); // 兄弟节点\n siblings.splice(siblings.length - 1, 1); // 先从数组中移除,然后放到合适的位置\n if (preElement) {\n // 前面已经有更新的图形或者插入的图形,则在这个图形后面插入\n const index = siblings.indexOf(preElement);\n siblings.splice(index + 1, 0, element); // 在已经更新的图形元素后面插入\n } else {\n siblings.unshift(element);\n }\n this.registerElement(element); // 注册节点\n element.set(STATUS_UPDATE, 'add'); // 执行完更新后设置状态位为添加\n if (element.get('isComponent')) {\n // 直接新增子组件container属性,实例不变\n const childComponent = element.get('component');\n childComponent.set('container', originGroup);\n } else if (element.isGroup()) {\n // 如果元素是新增加的元素,则遍历注册所有的子节点\n this.registerNewGroup(element);\n }\n preElement = element;\n if (animate) {\n const animateCfg = this.get('isInit') ? animateOption.appear : animateOption.enter;\n if (animateCfg) {\n this.addAnimation(elementName, element, animateCfg);\n }\n }\n }\n });\n }\n\n protected clearUpdateStatus(group: IGroup) {\n const children = group.getChildren();\n each(children, (el) => {\n el.set(STATUS_UPDATE, null); // 清理掉更新状态\n });\n }\n\n // 清理离屏缓存\n private clearOffScreenCache() {\n const offScreenGroup = this.get('offScreenGroup');\n if (offScreenGroup) {\n // 销毁原先的离线 Group\n offScreenGroup.destroy();\n }\n this.set('offScreenGroup', null);\n this.set('offScreenBBox', null);\n }\n\n // private updateInner() {\n // const group = this.get('group');\n // const newGroup = this.createOffScreenGroup();\n // this.renderInner(newGroup);\n // this.applyOffset();\n // this.updateElements(newGroup, group);\n // this.deleteElements();\n // newGroup.destroy(); // 销毁虚拟分组\n // }\n\n // 获取发生委托时的对象,在事件中抛出\n private getDelegateObject() {\n const name = this.get('name');\n const delegateObject = {\n [name]: this,\n component: this,\n };\n return delegateObject;\n }\n\n // 附加委托信息,用于事件\n private appendDelegateObject(parent: IGroup, cfg) {\n const parentObject = parent.get('delegateObject');\n if (!cfg.delegateObject) {\n cfg.delegateObject = {};\n }\n mix(cfg.delegateObject, parentObject); // 将父元素上的委托信息复制到自身\n }\n\n // 获取需要替换的属性,如果原先图形元素存在,而新图形不存在,则设置 undefined\n private getReplaceAttrs(originElement: IElement, newElement: IElement) {\n const originAttrs = originElement.attr();\n const newAttrs = newElement.attr();\n each(originAttrs, (v, k) => {\n if (newAttrs[k] === undefined) {\n newAttrs[k] = undefined;\n }\n });\n return newAttrs;\n }\n\n private registerNewGroup(group) {\n const children = group.getChildren();\n each(children, (element) => {\n this.registerElement(element); // 注册节点\n element.set(STATUS_UPDATE, 'add'); // 执行完更新后设置状态位为添加\n if (element.isGroup()) {\n this.registerNewGroup(element);\n }\n });\n }\n\n // 移除多余的元素\n private deleteElements() {\n const shapesMap = this.get('shapesMap');\n const deleteArray = [];\n // 遍历获取需要删除的图形元素\n each(shapesMap, (element, id) => {\n if (!element.get(STATUS_UPDATE) || element.destroyed) {\n deleteArray.push([id, element]);\n } else {\n element.set(STATUS_UPDATE, null); // 清理掉更新状态\n }\n });\n const animate = this.get('animate');\n const animateOption = this.get('animateOption');\n // 删除图形元素\n each(deleteArray, (item) => {\n const [id, element] = item;\n if (!element.destroyed) {\n const elementName = element.get('name');\n if (animate && animateOption.leave) {\n // 需要动画结束时移除图形\n const callbackAnimCfg = mix(\n {\n callback: () => {\n this.removeElement(element);\n },\n },\n animateOption.leave\n );\n this.removeAnimation(elementName, element, callbackAnimCfg);\n } else {\n this.removeElement(element);\n }\n }\n delete shapesMap[id]; // 从缓存中移除\n });\n }\n\n private removeElement(element: IShape | IGroup) {\n if (element.get('isGroup')) {\n const component = element.get('component');\n if (component) {\n component.destroy();\n }\n }\n element.remove();\n }\n}\n\nexport default GroupComponent;\n","const ELLIPSIS_CODE = '\\u2026';\n\n/** 获取字符串长度 */\nexport function strLen(str: string) {\n let len = 0;\n for (let i = 0; i < str.length; i++) {\n len += charAtLength(str, i);\n }\n return len;\n}\n\n/** 是否属于ASCII编码范畴 */\nexport function charAtLength(str: string, i: number) {\n if (str.charCodeAt(i) > 0 && str.charCodeAt(i) < 128) {\n return 1;\n } else {\n return 2;\n }\n}\n\n/** 文本省略 */\nexport function ellipsisString(str: string, reseveLength: number, position:string = 'tail') {\n const count = str.length;\n let rst = '';\n if (position === 'tail') {\n for (let i = 0, index = 0; i < reseveLength; ) {\n const charLength = charAtLength(str, index);\n if (i + charLength <= reseveLength) {\n rst += str[index];\n i += charAtLength(str, index);\n index++;\n } else {\n break;\n }\n }\n rst += ELLIPSIS_CODE;\n } else if (position === 'head') {\n for (let i = 0, index = count - 1; i < reseveLength; ) {\n const charLength = charAtLength(str, index);\n if (i + charLength <= reseveLength) {\n rst += str[index];\n i += charAtLength(str, index);\n index--;\n } else {\n break;\n }\n }\n rst = ELLIPSIS_CODE + rst;\n } else {\n let startStr = '';\n let endStr = '';\n for (let i = 0, startIndex = 0, endIndex = count - 1; i < reseveLength; ) {\n const startCodeLen = charAtLength(str, startIndex);\n let hasAdd = false; // 设置标志位,防止头尾都没有附加字符\n if (startCodeLen + i <= reseveLength) {\n startStr += str[startIndex];\n startIndex++;\n i += startCodeLen;\n hasAdd = true;\n }\n\n const endCodeLen = charAtLength(str, endIndex);\n if (endCodeLen + i <= reseveLength) {\n endStr = str[endIndex] + endStr;\n i += endCodeLen;\n endIndex--;\n hasAdd = true;\n }\n if (!hasAdd) {\n // 如果都没有增加字符,说明都不适合则中断\n break;\n }\n }\n rst = startStr + ELLIPSIS_CODE + endStr;\n }\n return rst;\n }\n","import { IElement } from '@antv/g-base';\nimport { each, isNil, getEllipsisText, pick } from '@antv/util';\n\nimport { ellipsisString, strLen } from './text';\n\nconst ELLIPSIS_CODE = '\\u2026';\nconst ELLIPSIS_CODE_LENGTH = 2; // 省略号的长度\n\n/** 大数据量阈值 */\nconst OPTIMIZE_THRESHOLD = 400;\n/**\n * 针对大数据量做优化的 getMaxLabelWidth,做法不是直接去比较每一个 label 的最大宽度\n * 而是先通过比较每个 label 每个的字符串的长度,这里区分了下中英文字符\n * 最终是去字符串最“长”的那个 label 的宽度。\n * @param labels\n */\nfunction getMaxLabelWidthOptimized(labels: IElement[]) {\n const texts: string[] = labels.map((label) => {\n const text = label.attr('text');\n return isNil(text) ? '' : `${text}`;\n });\n let maxLen = 0;\n let maxIdx = 0;\n\n for (let i = 0; i < texts.length; i += 1) {\n let len = 0;\n for (let j = 0; j <= texts[i].length; j += 1) {\n const code = texts[i].charCodeAt(j);\n if (code >= 19968 && code <= 40869) {\n len += 2;\n } else {\n len += 1;\n }\n }\n if (len > maxLen) {\n maxLen = len;\n maxIdx = i;\n }\n }\n\n return labels[maxIdx].getBBox().width;\n}\n\n/** 获取最长的 label */\nexport function getMaxLabelWidth(labels: IElement[]) {\n if (labels.length > OPTIMIZE_THRESHOLD) {\n return getMaxLabelWidthOptimized(labels);\n }\n\n let max = 0;\n each(labels, (label) => {\n const bbox = label.getBBox();\n const width = bbox.width;\n if (max < width) {\n max = width;\n }\n });\n return max;\n}\n\n/** 获取label长度 */\nexport function getLabelLength(isVertical: boolean, label) {\n const bbox = label.getCanvasBBox();\n return isVertical ? bbox.width : bbox.height;\n}\n\n/* label长度是否超过约束值 */\nexport function testLabel(label: IElement, limitLength: number): boolean {\n return label.getBBox().width < limitLength;\n}\n\n/** 处理 text shape 的自动省略 */\nexport function ellipsisLabel(isVertical: boolean, label: IElement, limitLength: number, position: string = 'tail') {\n const text = label.attr('text') ?? ''; // 避免出现null、undefined\n\n if (position === 'tail') {\n // component 里的缩略处理做得很糟糕,文字长度测算完全不准确\n // 这里暂时只对 tail 做处理\n const font = pick(label.attr(), ['fontSize', 'fontFamily', 'fontWeight', 'fontStyle', 'fontVariant']);\n const ellipsisText = getEllipsisText(text, limitLength, font, '…') as string;\n if (text !== ellipsisText) {\n label.attr('text', ellipsisText);\n label.set('tip', text);\n return true;\n }\n label.set('tip', null);\n return false;\n }\n\n const labelLength = getLabelLength(isVertical, label);\n const codeLength = strLen(text);\n let ellipsisFlag = false;\n if (limitLength < labelLength) {\n const reserveLength = Math.floor((limitLength / labelLength) * codeLength) - ELLIPSIS_CODE_LENGTH; // 计算出来的应该保存的长度\n let newText;\n if (reserveLength >= 0) {\n newText = ellipsisString(text, reserveLength, position);\n } else {\n newText = ELLIPSIS_CODE;\n }\n if (newText) {\n label.attr('text', newText);\n ellipsisFlag = true;\n }\n }\n if (ellipsisFlag) {\n label.set('tip', text);\n } else {\n label.set('tip', null);\n }\n return ellipsisFlag;\n}\n","import { IGroup } from '@antv/g-base';\nimport { get } from '@antv/util';\n\nimport { EnhancedTextCfg } from '../types';\nimport { ellipsisLabel } from './label';\nimport { applyRotate, applyTranslate } from './matrix';\nimport { formatPadding } from './util';\n\nexport interface TagCfg extends EnhancedTextCfg {\n /** 组件的 id 标识 */\n id?: string;\n /** 组件的名字 */\n name?: string;\n /**\n * 文本标注位置 x\n */\n x: number;\n /**\n * 文本标注位置 y\n */\n y: number;\n}\n\nexport function renderTag(container: IGroup, tagCfg: TagCfg) {\n const { x, y, content, style, id, name, rotate, maxLength, autoEllipsis, isVertical, ellipsisPosition, background } = tagCfg;\n const tagGroup = container.addGroup({\n id: `${id}-group`,\n name: `${name}-group`,\n attrs: {\n x,\n y,\n }\n });\n\n // Text shape\n const text = tagGroup.addShape({\n type: 'text',\n id,\n name,\n attrs: {\n x: 0,\n y: 0,\n text: content,\n ...style,\n },\n });\n\n // maxLength 应包含 background 中的 padding 值\n const padding = formatPadding(get(background, 'padding', 0));\n if (maxLength && autoEllipsis) {\n const maxTextLength = maxLength - (padding[1] + padding[3]);\n // 超出自动省略\n ellipsisLabel(!isVertical, text, maxTextLength, ellipsisPosition);\n }\n\n if (background) {\n // 渲染文本背景\n const backgroundStyle = get(background, 'style', {});\n const { minX, minY, width, height } = text.getCanvasBBox();\n const tagBg = tagGroup.addShape('rect', {\n id: `${id}-bg`,\n name: `${id}-bg`,\n attrs: {\n x: minX - padding[3],\n y: minY - padding[0],\n width: width + padding[1] + padding[3],\n height: height + padding[0] + padding[2],\n ...backgroundStyle,\n },\n });\n tagBg.toBack();\n }\n\n applyTranslate(tagGroup, x, y);\n applyRotate(tagGroup, rotate, x, y);\n}\n","export default {\n fontFamily: `\n BlinkMacSystemFont, \"Segoe UI\", Roboto,\"Helvetica Neue\",\n Helvetica, \"PingFang SC\", \"Hiragino Sans GB\", \"Microsoft YaHei\",\n SimSun, \"sans-serif\"`,\n textColor: '#2C3542',\n activeTextColor: '#333333',\n uncheckedColor: '#D8D8D8',\n lineColor: '#416180',\n regionColor: '#CCD7EB',\n verticalAxisRotate: -Math.PI / 4,\n horizontalAxisRotate: Math.PI / 4,\n\n // descriptionIcon theme\n descriptionIconStroke: '#fff',\n descriptionIconFill: 'rgba(58, 73, 101, .25)',\n};\n","import { IGroup, Point } from '@antv/g-base';\nimport { isNumber, isString } from '@antv/util';\nimport GroupComponent from '../abstract/group-component';\nimport { ILocation } from '../interfaces';\nimport { LineAnnotationCfg, RegionLocationCfg } from '../types';\nimport { renderTag, TagCfg } from '../util/graphic';\nimport Theme from '../util/theme';\nimport { getValueByPercent } from '../util/util';\n\nclass LineAnnotation extends GroupComponent implements ILocation {\n /**\n * @protected\n * 默认的配置项\n * @returns {object} 默认的配置项\n */\n public getDefaultCfg() {\n const cfg = super.getDefaultCfg();\n return {\n ...cfg,\n name: 'annotation',\n type: 'line',\n locationType: 'region',\n start: null,\n end: null,\n style: {},\n text: null,\n defaultCfg: {\n style: {\n fill: Theme.textColor,\n fontSize: 12,\n textAlign: 'center',\n textBaseline: 'bottom',\n fontFamily: Theme.fontFamily,\n },\n text: {\n position: 'center',\n autoRotate: true,\n content: null,\n offsetX: 0,\n offsetY: 0,\n style: {\n stroke: Theme.lineColor,\n lineWidth: 1,\n },\n },\n },\n };\n }\n\n protected renderInner(group: IGroup) {\n this.renderLine(group);\n if (this.get('text')) {\n this.renderLabel(group);\n }\n }\n\n // 绘制线\n private renderLine(group: IGroup) {\n const start = this.get('start');\n const end = this.get('end');\n const style = this.get('style');\n this.addShape(group, {\n type: 'line',\n id: this.getElementId('line'),\n name: 'annotation-line',\n attrs: {\n x1: start.x,\n y1: start.y,\n x2: end.x,\n y2: end.y,\n ...style,\n },\n });\n }\n\n // 获取 label 的位置\n private getLabelPoint(start: Point, end: Point, position: string) {\n let percent;\n if (position === 'start') {\n percent = 0;\n } else if (position === 'center') {\n percent = 0.5;\n } else if (isString(position) && position.indexOf('%') !== -1) {\n percent = parseInt(position, 10) / 100;\n } else if (isNumber(position)) {\n percent = position;\n } else {\n percent = 1;\n }\n\n if (percent > 1 || percent < 0) {\n percent = 1;\n }\n\n return {\n x: getValueByPercent(start.x, end.x, percent),\n y: getValueByPercent(start.y, end.y, percent),\n };\n }\n\n // 绘制 label\n private renderLabel(group: IGroup) {\n const text = this.get('text');\n const start = this.get('start');\n const end = this.get('end');\n const { position, content, style, offsetX, offsetY, autoRotate,\n maxLength, autoEllipsis, ellipsisPosition, background, isVertical = false } = text;\n const point = this.getLabelPoint(start, end, position);\n const x = point.x + offsetX;\n const y = point.y + offsetY;\n\n const cfg: TagCfg = {\n id: this.getElementId('line-text'),\n name: 'annotation-line-text',\n x,\n y,\n content,\n style,\n maxLength,\n autoEllipsis,\n ellipsisPosition,\n background,\n isVertical,\n };\n\n // 如果自动旋转\n if (autoRotate) {\n const vector = [end.x - start.x, end.y - start.y];\n cfg.rotate = Math.atan2(vector[1], vector[0]);\n }\n\n renderTag(group, cfg);\n }\n}\n\nexport default LineAnnotation;\n","import { IGroup } from '@antv/g-base';\n\nimport GroupComponent from '../abstract/group-component';\nimport { ILocation } from '../interfaces';\nimport { PointLocationCfg, TextAnnotationCfg } from '../types';\nimport { renderTag } from '../util/graphic';\nimport { applyRotate, applyTranslate } from '../util/matrix';\nimport Theme from '../util/theme';\n\nclass TextAnnotation extends GroupComponent implements ILocation {\n /**\n * @protected\n * 默认的配置项\n * @returns {object} 默认的配置项\n */\n public getDefaultCfg() {\n const cfg = super.getDefaultCfg();\n return {\n ...cfg,\n name: 'annotation',\n type: 'text',\n locationType: 'point',\n x: 0,\n y: 0,\n content: '',\n rotate: null,\n style: {},\n background: null,\n maxLength: null,\n autoEllipsis: true,\n isVertical: false,\n ellipsisPosition: 'tail',\n defaultCfg: {\n style: {\n fill: Theme.textColor,\n fontSize: 12,\n textAlign: 'center',\n textBaseline: 'middle',\n fontFamily: Theme.fontFamily,\n },\n },\n };\n }\n\n // 复写 setLocation 方法,不需要重新创建 text\n public setLocation(location: PointLocationCfg) {\n this.set('x', location.x);\n this.set('y', location.y);\n this.resetLocation();\n }\n\n protected renderInner(group: IGroup) {\n const { x, y } = this.getLocation();\n const content = this.get('content');\n const style = this.get('style');\n const id = this.getElementId('text');\n const name = `${this.get('name')}-text`;\n const maxLength = this.get('maxLength');\n const autoEllipsis = this.get('autoEllipsis');\n const isVertical = this.get('isVertical');\n const ellipsisPosition = this.get('ellipsisPosition');\n const background = this.get('background');\n const rotate = this.get('rotate');\n\n const cfg = {\n id,\n name,\n x,\n y,\n content,\n style,\n maxLength,\n autoEllipsis,\n isVertical,\n ellipsisPosition,\n background,\n rotate,\n };\n\n renderTag(group, cfg);\n }\n\n private resetLocation() {\n const textGroup = this.getElementByLocalId('text-group');\n if (textGroup) {\n const {x, y} = this.getLocation();\n const rotate = this.get('rotate')\n applyTranslate(textGroup, x, y);\n applyRotate(textGroup, rotate, x, y);\n }\n }\n}\n\nexport default TextAnnotation;\n","import { IGroup } from '@antv/g-base';\nimport GroupComponent from '../abstract/group-component';\nimport { ILocation } from '../interfaces';\nimport { ArcAnnotationCfg, CircleLocationCfg } from '../types';\nimport { getCirclePoint } from '../util/util';\n\nclass ArcAnnotation extends GroupComponent implements ILocation {\n /**\n * @protected\n * 默认的配置项\n * @returns {object} 默认的配置项\n */\n public getDefaultCfg() {\n const cfg = super.getDefaultCfg();\n return {\n ...cfg,\n name: 'annotation',\n type: 'arc',\n locationType: 'circle',\n center: null,\n radius: 100,\n startAngle: -Math.PI / 2,\n endAngle: (Math.PI * 3) / 2,\n style: {\n stroke: '#999',\n lineWidth: 1,\n },\n };\n }\n\n protected renderInner(group: IGroup) {\n this.renderArc(group);\n }\n\n private getArcPath() {\n const { center, radius, startAngle, endAngle } = this.getLocation();\n const startPoint = getCirclePoint(center, radius, startAngle);\n const endPoint = getCirclePoint(center, radius, endAngle);\n const largeFlag = endAngle - startAngle > Math.PI ? 1 : 0;\n\n const path = [['M', startPoint.x, startPoint.y]];\n if (endAngle - startAngle === Math.PI * 2) {\n // 整个圆是分割成两个圆\n const middlePoint = getCirclePoint(center, radius, startAngle + Math.PI);\n path.push(['A', radius, radius, 0, largeFlag, 1, middlePoint.x, middlePoint.y]);\n path.push(['A', radius, radius, 0, largeFlag, 1, endPoint.x, endPoint.y]);\n } else {\n path.push(['A', radius, radius, 0, largeFlag, 1, endPoint.x, endPoint.y]);\n }\n return path;\n }\n\n // 绘制 arc\n private renderArc(group: IGroup) {\n // 也可以 通过 get('center') 类似的方式逐个获取\n const path = this.getArcPath();\n const style = this.get('style');\n this.addShape(group, {\n type: 'path',\n id: this.getElementId('arc'),\n name: 'annotation-arc',\n attrs: {\n path,\n ...style,\n },\n });\n }\n}\n\nexport default ArcAnnotation;\n","import { IGroup } from '@antv/g-base';\nimport GroupComponent from '../abstract/group-component';\nimport { ILocation } from '../interfaces';\nimport { RegionAnnotationCfg, RegionLocationCfg } from '../types';\nimport Theme from '../util/theme';\nimport { regionToBBox } from '../util/util';\n\nclass RegionAnnotation extends GroupComponent implements ILocation {\n /**\n * @protected\n * 默认的配置项\n * @returns {object} 默认的配置项\n */\n public getDefaultCfg() {\n const cfg = super.getDefaultCfg();\n return {\n ...cfg,\n name: 'annotation',\n type: 'region',\n locationType: 'region',\n start: null,\n end: null,\n style: {},\n defaultCfg: {\n style: {\n lineWidth: 0,\n fill: Theme.regionColor,\n opacity: 0.4,\n },\n },\n };\n }\n\n protected renderInner(group: IGroup) {\n this.renderRegion(group);\n }\n\n private renderRegion(group: IGroup) {\n const start = this.get('start');\n const end = this.get('end');\n const style = this.get('style');\n const bbox = regionToBBox({ start, end });\n this.addShape(group, {\n type: 'rect',\n id: this.getElementId('region'),\n name: 'annotation-region',\n attrs: {\n x: bbox.x,\n y: bbox.y,\n width: bbox.width,\n height: bbox.height,\n ...style,\n },\n });\n }\n}\n\nexport default RegionAnnotation;\n","import { IGroup } from '@antv/g-base';\nimport GroupComponent from '../abstract/group-component';\nimport { ILocation } from '../interfaces';\nimport { ImageAnnotationCfg, RegionLocationCfg } from '../types';\nimport { regionToBBox } from '../util/util';\n\nclass ImageAnnotation extends GroupComponent implements ILocation {\n /**\n * @protected\n * 默认的配置项\n * @returns {object} 默认的配置项\n */\n public getDefaultCfg() {\n const cfg = super.getDefaultCfg();\n return {\n ...cfg,\n name: 'annotation',\n type: 'image',\n locationType: 'region',\n start: null,\n end: null,\n src: null,\n style: {},\n };\n }\n\n public renderInner(group: IGroup) {\n this.renderImage(group);\n }\n\n private getImageAttrs() {\n const start = this.get('start');\n const end = this.get('end');\n const style = this.get('style');\n const bbox = regionToBBox({ start, end });\n const src = this.get('src');\n return {\n x: bbox.x,\n y: bbox.y,\n img: src,\n width: bbox.width,\n height: bbox.height,\n ...style,\n };\n }\n\n // 绘制图片\n private renderImage(group: IGroup) {\n this.addShape(group, {\n type: 'image',\n id: this.getElementId('image'),\n name: 'annotation-image',\n attrs: this.getImageAttrs(),\n });\n }\n}\n\nexport default ImageAnnotation;\n","import { IGroup } from '@antv/g-base';\nimport { get } from '@antv/util';\nimport GroupComponent from '../abstract/group-component';\nimport { ILocation } from '../interfaces';\nimport { DataMarkerAnnotationCfg, PointLocationCfg } from '../types';\nimport { renderTag } from '../util/graphic';\nimport { applyTranslate } from '../util/matrix';\nimport Theme from '../util/theme';\n\nclass DataMarkerAnnotation extends GroupComponent implements ILocation {\n /**\n * 默认的配置项\n * @returns {object} 默认的配置项\n */\n public getDefaultCfg() {\n const cfg = super.getDefaultCfg();\n return {\n ...cfg,\n name: 'annotation',\n type: 'dataMarker',\n locationType: 'point',\n x: 0,\n y: 0,\n point: {},\n line: {},\n text: {},\n direction: 'upward',\n autoAdjust: true,\n coordinateBBox: null,\n defaultCfg: {\n point: {\n display: true,\n style: {\n r: 3,\n fill: '#FFFFFF',\n stroke: '#1890FF',\n lineWidth: 2,\n },\n },\n line: {\n display: true,\n length: 20,\n style: {\n stroke: Theme.lineColor,\n lineWidth: 1,\n },\n },\n text: {\n content: '',\n display: true,\n style: {\n fill: Theme.textColor,\n opacity: 0.65,\n fontSize: 12,\n textAlign: 'start',\n fontFamily: Theme.fontFamily,\n },\n },\n },\n };\n }\n\n protected renderInner(group: IGroup) {\n if (get(this.get('line'), 'display')) {\n this.renderLine(group);\n }\n if (get(this.get('text'), 'display')) {\n this.renderText(group);\n }\n if (get(this.get('point'), 'display')) {\n this.renderPoint(group);\n }\n\n if (this.get('autoAdjust')) {\n this.autoAdjust(group);\n }\n }\n\n protected applyOffset() {\n this.moveElementTo(this.get('group'), {\n x: this.get('x') + this.get('offsetX'),\n y: this.get('y') + this.get('offsetY'),\n });\n }\n\n private renderPoint(group: IGroup) {\n const { point } = this.getShapeAttrs();\n\n this.addShape(group, {\n type: 'circle',\n id: this.getElementId('point'),\n name: 'annotation-point',\n attrs: point,\n });\n }\n\n private renderLine(group: IGroup) {\n const { line } = this.getShapeAttrs();\n\n this.addShape(group, {\n type: 'path',\n id: this.getElementId('line'),\n name: 'annotation-line',\n attrs: line,\n });\n }\n\n private renderText(group: IGroup) {\n const { text: textAttrs } = this.getShapeAttrs();\n\n const { x, y, text, ...style } = textAttrs;\n const { background, maxLength, autoEllipsis, isVertival, ellipsisPosition } = this.get('text');\n const tagCfg = {\n x,\n y,\n id: this.getElementId('text'),\n name: 'annotation-text',\n content: text,\n style,\n background,\n maxLength,\n autoEllipsis,\n isVertival,\n ellipsisPosition,\n };\n\n renderTag(group, tagCfg);\n }\n\n private autoAdjust(group: IGroup) {\n const direction: string = this.get('direction');\n const x: number = this.get('x');\n const y: number = this.get('y');\n const lineLength: number = get(this.get('line'), 'length', 0);\n const coordinateBBox = this.get('coordinateBBox');\n const { minX, maxX, minY, maxY } = group.getBBox();\n\n const textGroup = group.findById(this.getElementId('text-group'));\n const textShape = group.findById(this.getElementId('text'));\n const lineShape = group.findById(this.getElementId('line'));\n\n if (!coordinateBBox) {\n return;\n }\n\n if (textGroup) {\n let translateX = textGroup.attr('x'), translateY = textGroup.attr('y');\n let { width, height } = textShape.getCanvasBBox();\n let xFactor = 0, yFactor = 0;\n if (x + minX <= coordinateBBox.minX) {\n // 左侧超出\n if (direction === 'leftward') {\n xFactor = 1;\n } else {\n const overflow = coordinateBBox.minX - (x + minX);\n translateX = textGroup.attr('x') + overflow;\n }\n } else if (x + maxX >= coordinateBBox.maxX) {\n // 右侧超出\n if (direction === 'rightward') {\n xFactor = -1;\n } else {\n const overflow = x + maxX - coordinateBBox.maxX;\n translateX = textGroup.attr('x') - overflow;\n }\n }\n if (!!xFactor) {\n if (lineShape) {\n lineShape.attr('path', [\n ['M', 0, 0],\n ['L', lineLength * xFactor, 0],\n ]);\n }\n translateX = (lineLength + 2 + width) * xFactor;\n }\n if (y + minY <= coordinateBBox.minY) {\n // 上方超出\n if (direction === 'upward') {\n yFactor = 1;\n } else {\n const overflow = coordinateBBox.minY - (y + minY);\n translateY = textGroup.attr('y') + overflow;\n }\n } else if (y + maxY >= coordinateBBox.maxY) {\n // 下方超出\n if (direction === 'downward') {\n yFactor = -1;\n } else {\n const overflow = y + maxY - coordinateBBox.maxY;\n translateY = textGroup.attr('y') - overflow;\n }\n }\n if (!!yFactor) {\n if (lineShape) {\n lineShape.attr('path', [\n ['M', 0, 0],\n ['L', 0, lineLength * yFactor],\n ]);\n }\n translateY = (lineLength + 2 + height) * yFactor;\n }\n if (translateX !== textGroup.attr('x') || translateY !== textGroup.attr('y'))\n applyTranslate(textGroup, translateX, translateY);\n }\n }\n\n private getShapeAttrs() {\n const lineDisplay = get(this.get('line'), 'display');\n const pointStyle = get(this.get('point'), 'style', {});\n const lineStyle = get(this.get('line'), 'style', {});\n const textStyle = get(this.get('text'), 'style', {});\n const direction = this.get('direction');\n const lineLength = lineDisplay ? get(this.get('line'), 'length', 0) : 0;\n let xFactor = 0, yFactor = 0;\n let textBaseline = 'top',\n textAlign = 'start';\n switch (direction) {\n case 'upward':\n yFactor = -1;\n textBaseline = 'bottom';\n break;\n case 'downward':\n yFactor = 1;\n textBaseline = 'top';\n break;\n case 'leftward':\n xFactor = -1;\n textAlign = 'end';\n break;\n case 'rightward':\n xFactor = 1;\n textAlign = 'start';\n break;\n }\n return {\n point: {\n x: 0,\n y: 0,\n ...pointStyle,\n },\n line: {\n path: [\n ['M', 0, 0],\n ['L', lineLength * xFactor, lineLength * yFactor],\n ],\n ...lineStyle,\n },\n text: {\n x: (lineLength + 2) * xFactor,\n y: (lineLength + 2) * yFactor,\n text: get(this.get('text'), 'content', ''),\n textBaseline,\n textAlign,\n ...textStyle,\n },\n };\n }\n}\n\nexport default DataMarkerAnnotation;\n","import { IGroup } from '@antv/g-base';\nimport { get } from '@antv/util';\nimport GroupComponent from '../abstract/group-component';\nimport { ILocation } from '../interfaces';\nimport { DataRegionAnnotationCfg, Point, PointsLocationCfg } from '../types';\nimport Theme from '../util/theme';\nimport { pointsToBBox } from '../util/util';\nimport { renderTag } from '../util/graphic';\n\nclass DataRegionAnnotation extends GroupComponent implements ILocation {\n /**\n * 默认的配置项\n * @returns {object} 默认的配置项\n */\n public getDefaultCfg() {\n const cfg = super.getDefaultCfg();\n return {\n ...cfg,\n name: 'annotation',\n type: 'dataRegion',\n locationType: 'points',\n points: [],\n lineLength: 0,\n region: {},\n text: {},\n defaultCfg: {\n region: {\n style: {\n lineWidth: 0,\n fill: Theme.regionColor,\n opacity: 0.4,\n },\n },\n text: {\n content: '',\n style: {\n textAlign: 'center',\n textBaseline: 'bottom',\n fontSize: 12,\n fill: Theme.textColor,\n fontFamily: Theme.fontFamily,\n },\n },\n },\n };\n }\n\n protected renderInner(group: IGroup) {\n const regionStyle = get(this.get('region'), 'style', {});\n const textStyle = get(this.get('text'), 'style', {});\n const lineLength = this.get('lineLength') || 0;\n const points: Point[] = this.get('points');\n\n if (!points.length) {\n return;\n }\n const bbox = pointsToBBox(points);\n\n // render region\n const path = [];\n path.push(['M', points[0].x, bbox.minY - lineLength]);\n points.forEach((point) => {\n path.push(['L', point.x, point.y]);\n });\n path.push(['L', points[points.length - 1].x, points[points.length - 1].y - lineLength]);\n this.addShape(group, {\n type: 'path',\n id: this.getElementId('region'),\n name: 'annotation-region',\n attrs: {\n path,\n ...regionStyle,\n },\n });\n\n // render text\n const textCfg = {\n id: this.getElementId('text'),\n name: 'annotation-text',\n x: (bbox.minX + bbox.maxX) / 2,\n y: bbox.minY - lineLength,\n ...this.get('text'),\n };\n\n renderTag(group, textCfg);\n }\n}\n\nexport default DataRegionAnnotation;\n","import { IGroup, IShape, Point, ShapeAttrs } from '@antv/g-base';\nimport { clone, each } from '@antv/util';\nimport GroupComponent from '../abstract/group-component';\nimport { ILocation } from '../interfaces';\nimport { RegionFilterAnnotationCfg, RegionLocationCfg } from '../types';\nimport { regionToBBox } from '../util/util';\n\nclass RegionFilterAnnotation extends GroupComponent implements ILocation {\n /**\n * 默认的配置项\n * @returns {object} 默认的配置项\n */\n public getDefaultCfg() {\n const cfg = super.getDefaultCfg();\n return {\n ...cfg,\n name: 'annotation',\n type: 'regionFilter',\n locationType: 'region',\n start: null,\n end: null,\n color: null,\n shape: [],\n };\n }\n\n protected renderInner(group: IGroup) {\n const start: Point = this.get('start');\n const end: Point = this.get('end');\n\n // 1. add region layer\n const layer: IGroup = this.addGroup(group, {\n id: this.getElementId('region-filter'),\n capture: false,\n });\n\n // 2. clone shape & color it\n each(this.get('shapes'), (shape: IShape, shapeIdx: number) => {\n const type = shape.get('type');\n const attrs = clone(shape.attr());\n this.adjustShapeAttrs(attrs);\n this.addShape(layer, {\n id: this.getElementId(`shape-${type}-${shapeIdx}`),\n capture: false,\n type,\n attrs,\n });\n });\n\n // 3. clip\n const clipBBox = regionToBBox({ start, end });\n layer.setClip({\n type: 'rect',\n attrs: {\n x: clipBBox.minX,\n y: clipBBox.minY,\n width: clipBBox.width,\n height: clipBBox.height,\n },\n });\n }\n\n private adjustShapeAttrs(attr: ShapeAttrs) {\n const color = this.get('color');\n if (attr.fill) {\n attr.fill = attr.fillStyle = color;\n }\n attr.stroke = attr.strokeStyle = color;\n }\n}\n\nexport default RegionFilterAnnotation;\n","import { IGroup } from '@antv/g-base';\nimport { isFunction, noop } from '@antv/util';\n\nimport GroupComponent from '../abstract/group-component';\nimport { ShapeAnnotationCfg } from '../types';\n\nexport default class ShapeAnnotation extends GroupComponent {\n public getDefaultCfg() {\n const cfg = super.getDefaultCfg();\n return {\n ...cfg,\n name: 'annotation',\n type: 'shape',\n draw: noop,\n };\n }\n\n protected renderInner(group: IGroup) {\n const render = this.get('render');\n if (isFunction(render)) {\n render(group);\n }\n }\n}\n","/**\n * 获取样式\n * @param {Object} dom DOM节点\n * @param {String} name 样式名\n * @param {Any} defaultValue 默认值\n * @return {String} 属性值\n */\nexport default function getStyle(dom: HTMLElement, name: string, defaultValue?: any) {\n let v;\n try {\n v = window.getComputedStyle ?\n window.getComputedStyle(dom, null)[name] :\n dom.style[name]; // 一般不会走到这个逻辑,dom.style 获取的是标签 style 属性,也不准确\n } catch (e) {\n // do nothing\n } finally {\n v = v === undefined ? defaultValue : v;\n }\n return v;\n}\n","\nimport getStyle from './get-style';\nimport getWidth from './get-width';\n\nexport default function getOuterWidth(el: HTMLElement, defaultValue?: any): number {\n const width = getWidth(el, defaultValue);\n const bLeft = parseFloat(getStyle(el, 'borderLeftWidth')) || 0;\n const pLeft = parseFloat(getStyle(el, 'paddingLeft')) || 0;\n const pRight = parseFloat(getStyle(el, 'paddingRight')) || 0;\n const bRight = parseFloat(getStyle(el, 'borderRightWidth')) || 0;\n const mRight = parseFloat(getStyle(el, 'marginRight')) || 0;\n const mLeft = parseFloat(getStyle(el, 'marginLeft')) || 0;\n return width + bLeft + bRight + pLeft + pRight + mLeft + mRight;\n}\n","import getStyle from './get-style';\n\nexport default function getHeight(el: HTMLElement, defaultValue?: any): number {\n let width = getStyle(el, 'width', defaultValue);\n if (width === 'auto') {\n width = el.offsetWidth;\n }\n return parseFloat(width);\n}\n","\nimport getStyle from './get-style';\nimport getHeight from './get-height';\n\nexport default function getOuterHeight(el: HTMLElement, defaultValue?: any): number {\n const height = getHeight(el, defaultValue);\n const bTop = parseFloat(getStyle(el, 'borderTopWidth')) || 0;\n const pTop = parseFloat(getStyle(el, 'paddingTop')) || 0;\n const pBottom = parseFloat(getStyle(el, 'paddingBottom')) || 0;\n const bBottom = parseFloat(getStyle(el, 'borderBottomWidth')) || 0;\n const mTop = parseFloat(getStyle(el, 'marginTop')) || 0;\n const mBottom = parseFloat(getStyle(el, 'marginBottom')) || 0;\n return height + bTop + bBottom + pTop + pBottom + mTop + mBottom;\n}\n","import getStyle from './get-style';\n\nexport default function getHeight(el: HTMLElement, defaultValue?: any): number {\n let height = getStyle(el, 'height', defaultValue);\n if (height === 'auto') {\n height = el.offsetHeight;\n }\n return parseFloat(height);\n}\n","import { createDom, modifyCSS } from '@antv/dom-util';\nimport { isNil, isString, deepMix, each, hasKey } from '@antv/util';\nimport { BBox, ComponentCfg, HtmlComponentCfg } from '../types';\nimport { clearDom, createBBox, hasClass } from '../util/util';\nimport Component from './component';\n\nabstract class HtmlComponent extends Component {\n public getDefaultCfg() {\n const cfg = super.getDefaultCfg();\n return {\n ...cfg,\n container: null,\n containerTpl: '
    ',\n updateAutoRender: true,\n containerClassName: '',\n parent: null,\n };\n }\n\n public getContainer(): HTMLElement {\n return this.get('container') as HTMLElement;\n }\n\n /**\n * 显示组件\n */\n public show() {\n const container = this.get('container');\n container.style.display = '';\n this.set('visible', true);\n }\n /**\n * 隐藏组件\n */\n public hide() {\n const container = this.get('container');\n container.style.display = 'none';\n this.set('visible', false);\n }\n /**\n * 是否允许捕捉事件\n * @param capture 事件捕捉\n */\n public setCapture(capture) {\n const container = this.getContainer();\n const value = capture ? 'auto' : 'none';\n container.style.pointerEvents = value;\n this.set('capture', capture);\n }\n public getBBox(): BBox {\n const container = this.getContainer();\n const x = parseFloat(container.style.left) || 0;\n const y = parseFloat(container.style.top) || 0;\n return createBBox(x, y, container.clientWidth, container.clientHeight);\n }\n\n public clear() {\n const container = this.get('container');\n clearDom(container);\n }\n\n public destroy() {\n this.removeEvent();\n this.removeDom();\n super.destroy();\n }\n\n /**\n * 复写 init,主要是初始化 DOM 和事件\n */\n public init() {\n super.init();\n this.initContainer();\n this.initDom();\n this.resetStyles(); // 初始化样式\n this.applyStyles(); // 应用样式\n this.initEvent();\n this.initCapture();\n this.initVisible();\n }\n\n protected initCapture() {\n this.setCapture(this.get('capture'));\n }\n protected initVisible() {\n if (!this.get('visible')) {\n // 设置初始显示状态\n this.hide();\n } else {\n this.show();\n }\n }\n\n protected initDom() {\n\n }\n\n protected initContainer() {\n let container = this.get('container');\n if (isNil(container)) {\n // 未指定 container 则创建\n container = this.createDom();\n let parent = this.get('parent');\n if (isString(parent)) {\n parent = document.getElementById(parent);\n this.set('parent', parent);\n }\n parent.appendChild(container);\n if (this.get('containerId')) {\n container.setAttribute('id', this.get('containerId'));\n }\n this.set('container', container);\n } else if (isString(container)) {\n // 用户传入的 id, 作为 container\n container = document.getElementById(container);\n this.set('container', container);\n } // else container 是 DOM\n if (!this.get('parent')) {\n this.set('parent', container.parentNode);\n }\n }\n\n // 样式需要进行合并,不能单纯的替换,否则使用非常不方便\n protected resetStyles() {\n let style = this.get('domStyles');\n const defaultStyles = this.get('defaultStyles');\n if (!style) {\n style = defaultStyles;\n } else {\n style = deepMix({}, defaultStyles, style);\n }\n this.set('domStyles', style);\n }\n // 应用所有的样式\n protected applyStyles() {\n const domStyles = this.get('domStyles');\n if (!domStyles) {\n return;\n }\n const container = this.getContainer();\n this.applyChildrenStyles(container, domStyles);\n const containerClassName = this.get('containerClassName');\n if (containerClassName && hasClass(container, containerClassName)) {\n const containerCss = domStyles[containerClassName];\n modifyCSS(container, containerCss);\n }\n }\n\n protected applyChildrenStyles(element, styles) {\n each(styles, (style, name) => {\n const elements = element.getElementsByClassName(name);\n each(elements, (el) => {\n modifyCSS(el, style);\n });\n });\n }\n // 应用到单个 DOM\n protected applyStyle(cssName, dom) {\n const domStyles = this.get('domStyles');\n modifyCSS(dom, domStyles[cssName]);\n }\n\n /**\n * @protected\n */\n protected createDom() {\n const containerTpl = this.get('containerTpl');\n return createDom(containerTpl);\n }\n\n /**\n * @protected\n * 初始化事件\n */\n protected initEvent() { }\n\n /**\n * @protected\n * 清理 DOM\n */\n protected removeDom() {\n const container = this.get('container');\n // 节点不一定有parentNode\n container && container.parentNode && container.parentNode.removeChild(container);\n }\n\n /**\n * @protected\n * 清理事件\n */\n protected removeEvent() { }\n\n protected updateInner(cfg) {\n // 更新样式\n if (hasKey(cfg, 'domStyles')) {\n this.resetStyles();\n this.applyStyles();\n }\n // 只要属性发生变化,都调整一些位置\n this.resetPosition();\n }\n protected resetPosition() { };\n}\n\nexport default HtmlComponent;\n","import { createDom, getOuterHeight, getOuterWidth, modifyCSS } from '@antv/dom-util';\nimport { isElement, isFunction, isNumber, isString } from '@antv/util';\nimport HtmlComponent from '../abstract/html-component';\nimport { ILocation } from '../interfaces';\nimport { HtmlAnnotationCfg, PointLocationCfg } from '../types';\nimport { clearDom } from '../util/util';\n\nexport default class HtmlAnnotation extends HtmlComponent implements ILocation {\n public getDefaultCfg() {\n const cfg = super.getDefaultCfg();\n return {\n ...cfg,\n name: 'annotation',\n type: 'html',\n locationType: 'point',\n x: 0,\n y: 0,\n containerTpl: `
    `,\n alignX: 'left',\n alignY: 'top',\n html: '',\n zIndex: 7,\n };\n }\n\n public render() {\n const container = this.getContainer();\n const html = this.get('html');\n\n clearDom(container);\n\n const rst: HTMLElement | string = isFunction(html) ? html(container) : html;\n\n if (isElement(rst)) {\n container.appendChild(rst as HTMLElement);\n } else if (isString(rst) || isNumber(rst)) {\n const dom = createDom(`${rst}` as string);\n if (dom) {\n container.appendChild(dom);\n }\n }\n\n this.resetPosition();\n }\n\n protected resetPosition() {\n const container = this.getContainer();\n const { x, y } = this.getLocation();\n const alignX = this.get('alignX');\n const alignY = this.get('alignY');\n const offsetX = this.get('offsetX');\n const offsetY = this.get('offsetY');\n const domWidth = getOuterWidth(container);\n const domHeight = getOuterHeight(container);\n\n const position = {\n x, // alignX left\n y, // alignY top\n };\n\n if (alignX === 'middle') {\n position.x -= Math.round(domWidth / 2);\n } else if (alignX === 'right') {\n position.x -= Math.round(domWidth);\n }\n if (alignY === 'middle') {\n position.y -= Math.round(domHeight / 2);\n } else if (alignY === 'bottom') {\n position.y -= Math.round(domHeight);\n }\n if (offsetX) {\n position.x += offsetX;\n }\n if (offsetY) {\n position.y += offsetY;\n }\n\n modifyCSS(container, {\n position: 'absolute',\n left: `${position.x}px`,\n top: `${position.y}px`,\n zIndex: this.get('zIndex'),\n });\n }\n}\n","import { each, mix } from '@antv/util';\nimport { ListItem } from '../types';\n\n// 获取多个状态量的合并值\nexport function getStatesStyle(item: ListItem, elementName: string, stateStyles: object) {\n const styleName = `${elementName}Style`; // activeStyle\n let styles = null;\n each(stateStyles, (v, state) => {\n if (item[state] && v[styleName]) {\n if (!styles) {\n styles = {};\n }\n mix(styles, v[styleName]); // 合并样式\n }\n });\n return styles;\n}\n","import { IGroup, IShape } from '@antv/g-base';\nimport { ext } from '@antv/matrix-util';\nimport { each, filter, get, isFunction, isNil, isNumberEqual, mix, size, isArray } from '@antv/util';\nimport GroupComponent from '../abstract/group-component';\nimport { IList } from '../interfaces';\nimport { AxisBaseCfg, ListItem, OptimizeCfg, Point } from '../types';\nimport { getMatrixByAngle } from '../util/matrix';\nimport { getStatesStyle } from '../util/state';\nimport Theme from '../util/theme';\n\nabstract class AxisBase extends GroupComponent implements IList {\n public getDefaultCfg() {\n const cfg = super.getDefaultCfg();\n return {\n ...cfg,\n name: 'axis',\n ticks: [],\n line: {},\n tickLine: {},\n subTickLine: null,\n title: null,\n /**\n * 文本标签的配置项\n */\n label: {},\n /**\n * 垂直于坐标轴方向的因子,决定文本、title、tickLine 在坐标轴的哪一侧\n */\n verticalFactor: 1,\n // 垂直方向限制的长度,对文本自适应有很大影响\n verticalLimitLength: null,\n overlapOrder: ['autoRotate', 'autoEllipsis', 'autoHide'],\n tickStates: {},\n optimize: {},\n defaultCfg: {\n line: {\n // @type {Attrs} 坐标轴线的图形属性,如果设置成null,则不显示轴线\n style: {\n lineWidth: 1,\n stroke: Theme.lineColor,\n },\n },\n tickLine: {\n // @type {Attrs} 标注坐标线的图形属性\n style: {\n lineWidth: 1,\n stroke: Theme.lineColor,\n },\n alignTick: true, // 是否同 tick 对齐\n length: 5,\n displayWithLabel: true,\n },\n subTickLine: {\n // @type {Attrs} 标注坐标线的图形属性\n style: {\n lineWidth: 1,\n stroke: Theme.lineColor,\n },\n count: 4, // 子刻度线的数量,将两个刻度线划分成 5 份\n length: 2,\n },\n label: {\n autoRotate: true,\n autoHide: false,\n autoEllipsis: false,\n style: {\n fontSize: 12,\n fill: Theme.textColor,\n fontFamily: Theme.fontFamily,\n fontWeight: 'normal',\n },\n offset: 10,\n offsetX: 0,\n offsetY: 0,\n },\n title: {\n autoRotate: true,\n spacing: 5,\n position: 'center', // start, center, end\n style: {\n fontSize: 12,\n fill: Theme.textColor,\n textBaseline: 'middle',\n fontFamily: Theme.fontFamily,\n textAlign: 'center',\n },\n iconStyle: {\n fill: Theme.descriptionIconFill,\n stroke: Theme.descriptionIconStroke,\n },\n description: ''\n },\n tickStates: {\n active: {\n labelStyle: {\n fontWeight: 500,\n },\n tickLineStyle: {\n lineWidth: 2,\n },\n },\n inactive: {\n labelStyle: {\n fill: Theme.uncheckedColor,\n },\n },\n },\n // 针对大数据量进行优化配置\n optimize: {\n enable: true,\n threshold: 400,\n },\n },\n theme: {},\n };\n }\n\n /**\n * 绘制组件\n */\n public renderInner(group: IGroup) {\n if (this.get('line')) {\n this.drawLine(group);\n }\n // drawTicks 包括 drawLabels 和 drawTickLines\n this.drawTicks(group);\n if (this.get('title')) {\n this.drawTitle(group);\n }\n }\n\n // 实现 IList 接口\n public isList(): boolean {\n return true;\n }\n\n /**\n * 获取图例项\n * @return {ListItem[]} 列表项集合\n */\n public getItems(): ListItem[] {\n return this.get('ticks');\n }\n\n /**\n * 设置列表项\n * @param {ListItem[]} items 列表项集合\n */\n public setItems(items: ListItem[]) {\n this.update({\n ticks: items,\n } as Partial);\n }\n\n /**\n * 更新列表项\n * @param {ListItem} item 列表项\n * @param {object} cfg 列表项\n */\n public updateItem(item: ListItem, cfg: object) {\n mix(item, cfg);\n this.clear(); // 由于单个图例项变化,会引起全局变化,所以全部更新\n this.render();\n }\n\n /**\n * 清空列表\n */\n public clearItems() {\n const itemGroup = this.getElementByLocalId('label-group');\n itemGroup && itemGroup.clear();\n }\n\n /**\n * 设置列表项的状态\n * @param {ListItem} item 列表项\n * @param {string} state 状态名\n * @param {boolean} value 状态值, true, false\n */\n public setItemState(item: ListItem, state: string, value: boolean) {\n item[state] = value;\n this.updateTickStates(item); // 应用状态样式\n }\n\n /**\n * 是否存在指定的状态\n * @param {ListItem} item 列表项\n * @param {boolean} state 状态名\n */\n public hasState(item: ListItem, state: string): boolean {\n return !!item[state];\n }\n\n public getItemStates(item: ListItem): string[] {\n const tickStates = this.get('tickStates');\n const rst = [];\n each(tickStates, (v, k) => {\n if (item[k]) {\n // item.selected\n rst.push(k);\n }\n });\n return rst;\n }\n\n /**\n * 清楚所有列表项的状态\n * @param {string} state 状态值\n */\n public clearItemsState(state: string) {\n const items = this.getItemsByState(state);\n each(items, (item) => {\n this.setItemState(item, state, false);\n });\n }\n\n /**\n * 根据状态获取图例项\n * @param {string} state [description]\n * @return {ListItem[]} [description]\n */\n public getItemsByState(state: string): ListItem[] {\n const items = this.getItems();\n return filter(items, (item) => {\n return this.hasState(item, state);\n });\n }\n\n /**\n * @protected\n * 获取坐标轴线的路径,不同的坐标轴不一样\n */\n protected abstract getLinePath(): any[];\n\n /**\n * 获取坐标轴垂直方向的向量\n * @param {number} offset 距离点距离\n * @param {Point} point 坐标轴上的一点\n */\n protected abstract getSideVector(offset: number, point: Point);\n /**\n * 获取坐标轴的向量\n * @param {Point} point 坐标轴上的点\n */\n protected abstract getAxisVector(point: Point): [number, number];\n\n protected getSidePoint(point: Point, offset: number): Point {\n const self = this;\n const vector = self.getSideVector(offset, point);\n return {\n x: point.x + vector[0],\n y: point.y + vector[1],\n };\n }\n\n /**\n * 根据 tick.value 获取坐标轴上对应的点\n * @param {number} tickValue\n * @returns {Point}\n */\n protected abstract getTickPoint(tickValue: number): Point;\n\n protected getTextAnchor(vector: number[]): string {\n let align;\n if (isNumberEqual(vector[0], 0)) {\n align = 'center';\n } else if (vector[0] > 0) {\n align = 'start';\n } else if (vector[0] < 0) {\n align = 'end';\n }\n return align;\n }\n\n protected getTextBaseline(vector: number[]): string {\n let base;\n if (isNumberEqual(vector[1], 0)) {\n base = 'middle';\n } else if (vector[1] > 0) {\n base = 'top';\n } else if (vector[1] < 0) {\n base = 'bottom';\n }\n return base;\n }\n\n protected processOverlap(labelGroup) {}\n\n // 绘制坐标轴线\n private drawLine(group: IGroup) {\n const path = this.getLinePath();\n const line = this.get('line'); // line 的判空在调用 drawLine 之前,不在这里判定\n this.addShape(group, {\n type: 'path',\n id: this.getElementId('line'),\n name: 'axis-line',\n attrs: mix(\n {\n path,\n },\n line.style\n ),\n });\n }\n\n private getTickLineItems(ticks: ListItem[]) {\n const tickLineItems = [];\n const tickLine = this.get('tickLine');\n const alignTick = tickLine.alignTick;\n const tickLineLength = tickLine.length;\n let tickSegment = 1;\n const tickCount = ticks.length;\n if (tickCount >= 2) {\n tickSegment = ticks[1].value - ticks[0].value;\n }\n\n each(ticks, (tick) => {\n let point = tick.point;\n if (!alignTick) {\n // tickLine 不同 tick 对齐时需要调整 point\n point = this.getTickPoint(tick.value - tickSegment / 2);\n }\n const endPoint = this.getSidePoint(point, tickLineLength);\n tickLineItems.push({\n startPoint: point,\n tickValue: tick.value,\n endPoint,\n tickId: tick.id,\n id: `tickline-${tick.id}`,\n });\n });\n\n // 如果 tickLine 不居中对齐,则需要在最后面补充一个 tickLine\n // if (!alignTick && tickCount > 0) {\n // const tick = ticks[tickCount - 1];\n // const point = this.getTickPoint(tick.value + tickSegment / 2);\n // }\n return tickLineItems;\n }\n\n private getSubTickLineItems(tickLineItems) {\n const subTickLineItems = [];\n const subTickLine = this.get('subTickLine');\n const subCount = subTickLine.count;\n const tickLineCount = tickLineItems.length;\n // 刻度线的数量大于 2 时,才绘制子刻度\n if (tickLineCount >= 2) {\n for (let i = 0; i < tickLineCount - 1; i++) {\n const pre = tickLineItems[i];\n const next = tickLineItems[i + 1];\n for (let j = 0; j < subCount; j++) {\n const percent = (j + 1) / (subCount + 1);\n const tickValue = (1 - percent) * pre.tickValue + percent * next.tickValue;\n const point = this.getTickPoint(tickValue);\n const endPoint = this.getSidePoint(point, subTickLine.length);\n subTickLineItems.push({\n startPoint: point,\n endPoint,\n tickValue,\n id: `sub-${pre.id}-${j}`,\n });\n }\n }\n }\n return subTickLineItems;\n }\n\n private getTickLineAttrs(tickItem: ListItem, type: string, index: number, tickItems: ListItem[]) {\n let style = this.get(type).style;\n\n // 保持和 grid 相同的数据结构\n const item = {\n points: [tickItem.startPoint, tickItem.endPoint],\n };\n\n const defaultTickLineStyle = get(this.get('theme'), ['tickLine', 'style'], {});\n style = isFunction(style) ? mix({}, defaultTickLineStyle, style(item, index, tickItems)) : style;\n\n const { startPoint, endPoint } = tickItem;\n return {\n x1: startPoint.x,\n y1: startPoint.y,\n x2: endPoint.x,\n y2: endPoint.y,\n ...style,\n };\n }\n\n // 绘制坐标轴刻度线\n private drawTick(tickItem: ListItem, tickLineGroup: IGroup, type: string, index: number, tickItems: ListItem[]) {\n this.addShape(tickLineGroup, {\n type: 'line',\n id: this.getElementId(tickItem.id),\n name: `axis-${type}`,\n attrs: this.getTickLineAttrs(tickItem, type, index, tickItems),\n });\n }\n\n // 绘制坐标轴刻度线,包括子刻度线\n private drawTickLines(group: IGroup) {\n const ticks = this.get('ticks');\n const subTickLine = this.get('subTickLine');\n const tickLineItems = this.getTickLineItems(ticks);\n const tickLineGroup = this.addGroup(group, {\n name: 'axis-tickline-group',\n id: this.getElementId('tickline-group'),\n });\n const tickCfg = this.get('tickLine');\n each(tickLineItems, (item, index) => {\n if (tickCfg.displayWithLabel) {\n // 如果跟随 label 显示,则检测是否存在对应的 label\n const labelId = this.getElementId(`label-${item.tickId}`);\n if (group.findById(labelId)) {\n this.drawTick(item, tickLineGroup, 'tickLine', index, tickLineItems);\n }\n } else {\n this.drawTick(item, tickLineGroup, 'tickLine', index, tickLineItems);\n }\n });\n\n if (subTickLine) {\n const subTickLineItems = this.getSubTickLineItems(tickLineItems);\n each(subTickLineItems, (item, index: number) => {\n this.drawTick(item, tickLineGroup, 'subTickLine', index, subTickLineItems);\n });\n }\n }\n\n // 预处理 ticks 确定位置和补充 id\n private processTicks() {\n const ticks = this.get('ticks');\n each(ticks, (tick) => {\n tick.point = this.getTickPoint(tick.value);\n // 补充 tick 的 id,为动画和更新做准备\n if (isNil(tick.id)) {\n // 默认使用 tick.name 作为id\n tick.id = tick.name;\n }\n });\n }\n\n // 绘制 ticks 包括文本和 tickLine\n private drawTicks(group: IGroup) {\n this.optimizeTicks();\n this.processTicks();\n if (this.get('label')) {\n this.drawLabels(group);\n }\n\n if (this.get('tickLine')) {\n this.drawTickLines(group);\n }\n\n const ticks = this.get('ticks');\n each(ticks, (tick) => {\n this.applyTickStates(tick, group);\n });\n }\n\n /**\n * 根据 optimize 配置对 ticks 进行抽样,对抽样过后的 ticks 才进行真实的渲染\n */\n private optimizeTicks() {\n const optimize: OptimizeCfg = this.get('optimize');\n const ticks = this.get('ticks');\n if (optimize && optimize.enable && optimize.threshold > 0) {\n const len = size(ticks);\n if (len > optimize.threshold) {\n const page = Math.ceil(len / optimize.threshold);\n const optimizedTicks = ticks.filter((tick, idx) => idx % page === 0);\n this.set('ticks', optimizedTicks);\n this.set('originalTicks', ticks);\n }\n }\n }\n\n // 获取 label 的配置项\n private getLabelAttrs(tick: ListItem, index: number, ticks: ListItem[]) {\n const labelCfg = this.get('label');\n const { offset, offsetX, offsetY, rotate, formatter } = labelCfg;\n const point = this.getSidePoint(tick.point, offset);\n const vector = this.getSideVector(offset, point);\n const text = formatter ? formatter(tick.name, tick, index) : tick.name;\n let { style } = labelCfg;\n style = isFunction(style) ? get(this.get('theme'), ['label', 'style'], {}) : style;\n\n const attrs = mix(\n {\n x: point.x + offsetX,\n y: point.y + offsetY,\n text,\n textAlign: this.getTextAnchor(vector),\n textBaseline: this.getTextBaseline(vector),\n },\n style\n );\n if (rotate) {\n attrs.matrix = getMatrixByAngle(point, rotate);\n }\n return attrs;\n }\n\n // 绘制文本\n private drawLabels(group: IGroup) {\n const ticks = this.get('ticks');\n const labelGroup = this.addGroup(group, {\n name: 'axis-label-group',\n id: this.getElementId('label-group'),\n });\n each(ticks, (tick: ListItem, index: number) => {\n this.addShape(labelGroup, {\n type: 'text',\n name: 'axis-label',\n id: this.getElementId(`label-${tick.id}`),\n attrs: this.getLabelAttrs(tick, index, ticks),\n delegateObject: {\n tick,\n item: tick,\n index,\n },\n });\n });\n this.processOverlap(labelGroup);\n\n // 处理完后再进行 style 回调处理\n const labels = labelGroup.getChildren();\n const defaultLabelStyle = get(this.get('theme'), ['label', 'style'], {});\n const { style, formatter } = this.get('label');\n if (isFunction(style)) {\n const afterProcessTicks = labels.map((label) => get(label.get('delegateObject'), 'tick'));\n each(labels, (label, index) => {\n const { tick } = label.get('delegateObject');\n const text = formatter ? formatter(tick.name, tick, index) : tick.name;\n const newStyle = mix({}, defaultLabelStyle, style(text, index, afterProcessTicks));\n label.attr(newStyle);\n });\n }\n }\n\n // 标题的属性\n private getTitleAttrs() {\n const titleCfg = this.get('title');\n const { style, position, offset, spacing = 0, autoRotate } = titleCfg;\n const titleHeight = style.fontSize;\n let percent = 0.5;\n if (position === 'start') {\n percent = 0;\n } else if (position === 'end') {\n percent = 1;\n }\n const point = this.getTickPoint(percent); // 标题对应的坐标轴上的点\n // 如果没有指定 titleOffset 也没有渲染 label,这里需要自动计算 offset\n const titlePoint = this.getSidePoint(point, offset || spacing + titleHeight / 2); // 标题的点\n\n const attrs = mix(\n {\n x: titlePoint.x,\n y: titlePoint.y,\n text: titleCfg.text,\n },\n style\n );\n\n const rotate = titleCfg.rotate; // rotate 是角度值\n let angle = rotate;\n if (isNil(rotate) && autoRotate) {\n // 用户没有设定旋转角度,同时设置自动旋转\n const vector = this.getAxisVector(point);\n const v1: [number, number] = [1, 0]; // 水平方向的向量\n angle = ext.angleTo(vector, v1, true);\n }\n if (angle) {\n const matrix = getMatrixByAngle(titlePoint, angle);\n attrs.matrix = matrix;\n }\n return attrs;\n }\n\n // 绘制标题\n private drawTitle(group: IGroup) {\n const titleAttrs = this.getTitleAttrs();\n const titleShape = this.addShape(group, {\n type: 'text',\n id: this.getElementId('title'),\n name: 'axis-title',\n attrs: titleAttrs\n });\n // description字段存在时,显示icon\n if(this.get('title')?.description) {\n this.drawDescriptionIcon(group, titleShape, titleAttrs.matrix)\n }\n }\n\n private drawDescriptionIcon(group: IGroup, titleShape: IShape, matrix: number[]) {\n const descriptionShape = this.addGroup(group, {\n name: 'axis-description',\n id: this.getElementById('description')\n })\n\n const { maxX, maxY, height } = titleShape.getBBox();\n const { iconStyle } = this.get('title')\n const spacing = 4; // 设置icon与文本之间距离\n const r = height / 2;\n const lineWidth = r / 6;\n const startX = maxX + spacing;\n const startY = maxY - height / 2;\n // 绘制 information icon 路径\n // 外圆环path\n const [x0, y0] = [startX + r, startY - r];\n const [x1, y1] = [x0 + r, y0 + r];\n const [x2, y2] = [x0, y1 + r];\n const [x3, y3] = [startX, y0 + r];\n // i path\n const [x4, y4] = [startX + r, startY - height / 4];\n const [x5, y5] = [x4, y4 + lineWidth];\n const [x6, y6] = [x5, y5 + lineWidth];\n const [x7, y7] = [x6, y6 + r * 3 / 4];\n this.addShape(descriptionShape, {\n type: 'path',\n id: this.getElementId('title-description-icon'),\n name: 'axis-title-description-icon',\n attrs: {\n path: [\n ['M', x0, y0],\n ['A', r, r, 0, 0, 1, x1, y1],\n ['A', r, r, 0, 0, 1, x2, y2],\n ['A', r, r, 0, 0, 1, x3, y3],\n ['A', r, r, 0, 0, 1, x0, y0],\n ['M', x4, y4],\n ['L', x5, y5],\n ['M', x6, y6],\n ['L', x7, y7]\n ],\n lineWidth,\n matrix,\n ...iconStyle\n },\n });\n // 点击热区,设置透明矩形\n this.addShape(descriptionShape, {\n type: 'rect',\n id: this.getElementId('title-description-rect'),\n name: 'axis-title-description-rect',\n attrs: {\n x: startX,\n y: startY - height / 2,\n width: height,\n height,\n stroke: '#000',\n fill: '#000',\n opacity: 0,\n matrix,\n cursor: 'pointer'\n }\n })\n\n }\n\n private applyTickStates(tick, group) {\n const states = this.getItemStates(tick);\n if (states.length) {\n const tickStates = this.get('tickStates');\n // 分别更新 label 和 tickLine\n const labelId = this.getElementId(`label-${tick.id}`);\n const labelShape = group.findById(labelId);\n if (labelShape) {\n const labelStateStyle = getStatesStyle(tick, 'label', tickStates);\n labelStateStyle && labelShape.attr(labelStateStyle);\n }\n const tickLineId = this.getElementId(`tickline-${tick.id}`);\n const tickLineShape = group.findById(tickLineId);\n if (tickLineShape) {\n const tickLineStateStyle = getStatesStyle(tick, 'tickLine', tickStates);\n tickLineStateStyle && tickLineShape.attr(tickLineStateStyle);\n }\n }\n }\n\n private updateTickStates(tick) {\n const states = this.getItemStates(tick);\n const tickStates = this.get('tickStates');\n const labelCfg = this.get('label');\n const labelShape = this.getElementByLocalId(`label-${tick.id}`);\n const tickLineCfg = this.get('tickLine');\n const tickLineShape = this.getElementByLocalId(`tickline-${tick.id}`);\n\n if (states.length) {\n if (labelShape) {\n const labelStateStyle = getStatesStyle(tick, 'label', tickStates);\n labelStateStyle && labelShape.attr(labelStateStyle);\n }\n if (tickLineShape) {\n const tickLineStateStyle = getStatesStyle(tick, 'tickLine', tickStates);\n tickLineStateStyle && tickLineShape.attr(tickLineStateStyle);\n }\n } else {\n if (labelShape) {\n labelShape.attr(labelCfg.style);\n }\n if (tickLineShape) {\n tickLineShape.attr(tickLineCfg.style);\n }\n }\n }\n}\n\nexport default AxisBase;\n","import { IGroup } from '@antv/g-base';\nimport { each } from '@antv/util';\nimport { ellipsisLabel } from '../../util/label';\n\nfunction ellipseLabels(isVertical: boolean, labelGroup: IGroup, limitLength: number, position: string): boolean {\n const children = labelGroup.getChildren();\n let ellipsisFlag = false;\n each(children, (label) => {\n const rst = ellipsisLabel(isVertical, label, limitLength, position);\n ellipsisFlag = ellipsisFlag || rst;\n });\n return ellipsisFlag;\n}\n\nexport function getDefault() {\n return ellipsisTail;\n}\n\nexport function ellipsisHead(isVertical: boolean, labelGroup: IGroup, limitLength: number): boolean {\n return ellipseLabels(isVertical, labelGroup, limitLength, 'head');\n}\n\nexport function ellipsisTail(isVertical: boolean, labelGroup: IGroup, limitLength: number): boolean {\n return ellipseLabels(isVertical, labelGroup, limitLength, 'tail');\n}\n\nexport function ellipsisMiddle(isVertical: boolean, labelGroup: IGroup, limitLength: number): boolean {\n return ellipseLabels(isVertical, labelGroup, limitLength, 'middle');\n}\n","import { IElement, IGroup } from '@antv/g-base';\nimport { AxisLabelAutoHideCfg } from '../../types';\nimport { getMaxLabelWidth } from '../../util/label';\nimport { getAngleByMatrix } from '../../util/matrix';\nimport { near } from '../../util/util';\n\n// 文本是否旋转\nfunction isRotate(label: IElement) {\n const matrix = label.attr('matrix');\n return matrix && matrix[0] !== 1; // 仅在这个场景下判定\n}\n\nfunction getRotateAngle(label: IElement) {\n const angle = isRotate(label) ? getAngleByMatrix(label.attr('matrix')) : 0;\n return angle % 360;\n}\n\n// autohide 不再考虑超出限制\n// function isOutLimit(isVertical: boolean, label: IElement, limitLength: number) {\n// if (!limitLength) {\n// // 如果没限制 limitLength 则直接返回 false\n// return false;\n// }\n// const canvasBBox = label.getCanvasBBox();\n// let isOut = false;\n// if (isVertical) {\n// isOut = canvasBBox.width > limitLength;\n// } else {\n// isOut = canvasBBox.height > limitLength;\n// }\n// return isOut;\n// }\n\n// 是否重叠\nfunction isOverlap(isVertical: boolean, first: IElement, second: IElement, minGap: number) {\n let overlap = false;\n const angle = getRotateAngle(first);\n const distance = isVertical\n ? Math.abs(second.attr('y') - first.attr('y'))\n : Math.abs(second.attr('x') - first.attr('x'));\n const prevBBox = (isVertical\n ? second.attr('y') > first.attr('y')\n : second.attr('x') > first.attr('x'))\n ? first.getBBox()\n : second.getBBox();\n\n if (isVertical) {\n const ratio = Math.abs(Math.cos(angle));\n if (near(ratio, 0, Math.PI / 180)) {\n overlap = prevBBox.width + minGap > distance;\n } else {\n overlap = prevBBox.height / ratio + minGap > distance;\n }\n } else {\n const ratio = Math.abs(Math.sin(angle));\n if (near(ratio, 0, Math.PI / 180)) {\n overlap = prevBBox.width + minGap > distance;\n } else {\n overlap = prevBBox.height / ratio + minGap > distance;\n }\n }\n\n return overlap;\n}\n\n// 保留第一个或者最后一个\nfunction reserveOne(isVertical: boolean, labelsGroup: IGroup, reversed: boolean, autoHideCfg?: AxisLabelAutoHideCfg) {\n const minGap = autoHideCfg?.minGap || 0;\n const labels = labelsGroup\n .getChildren()\n .slice() // 复制数组\n .filter((item) => item.get('visible'));\n if (!labels.length) {\n return false;\n }\n let hasHide = false;\n if (reversed) {\n // 翻转\n labels.reverse();\n }\n const count = labels.length;\n const first = labels[0];\n let prev = first;\n for (let i = 1; i < count; i++) {\n const label = labels[i];\n const curBBox = label.getBBox();\n // 不再考虑超出限制,而仅仅根据是否重叠进行隐藏 isOutLimit(isVertical, label, limitLength) ||\n const isHide = isOverlap(isVertical, prev, label, minGap);\n if (isHide) {\n label.hide();\n hasHide = true;\n } else {\n prev = label;\n }\n }\n return hasHide;\n}\n\n// 均匀抽样隐藏标签,注意这里假设 label/tick 是均匀的\nfunction parityHide(isVertical: boolean, labelsGroup: IGroup, autoHideCfg?: AxisLabelAutoHideCfg) {\n const minGap = autoHideCfg?.minGap || 0;\n const labels = labelsGroup.getChildren().slice(); // 复制数组\n if (labels.length < 2) {\n // 如果数量小于 2 则直接返回,等于 2 时可能也会重合\n return false;\n }\n let hasHide = false;\n const first = labels[0];\n const firstBBox = first.getBBox();\n const second = labels[1];\n const count = labels.length;\n const angle = getRotateAngle(first);\n const distance = isVertical\n ? Math.abs(second.attr('y') - first.attr('y'))\n : Math.abs(second.attr('x') - first.attr('x'));\n let interval = 0; // 不重叠的坐标文本间距个数\n if (isVertical) {\n // 垂直的坐标轴计算垂直方向的间距\n const ratio = Math.abs(Math.cos(angle));\n if (near(ratio, 0, Math.PI / 180)) {\n const maxWidth = getMaxLabelWidth(labels);\n interval = (maxWidth + minGap) / distance;\n } else {\n interval = (firstBBox.height / ratio + minGap) / distance;\n }\n } else {\n // 水平坐标轴\n const ratio = Math.abs(Math.sin(angle));\n if (near(ratio, 0, Math.PI / 180)) {\n const maxWidth = getMaxLabelWidth(labels);\n interval = (maxWidth + minGap) / distance;\n } else {\n interval = (firstBBox.height / ratio + minGap) / distance;\n }\n }\n // interval > 1 时需要对 label 进行隐藏\n if (interval > 1) {\n interval = Math.ceil(interval);\n for (let i = 0; i < count; i++) {\n if (i % interval !== 0) {\n // 仅保留被整除的 label\n labels[i].hide();\n hasHide = true;\n }\n }\n }\n return hasHide;\n}\n\nexport function getDefault() {\n return equidistance;\n}\n\n/**\n * 保证首个 label 可见,即使超过 limitLength 也不隐藏\n * @param {boolean} isVertical 是否垂直\n * @param {IGroup} labelsGroup label 的分组\n * @param {number} limitLength 另一个方向的长度限制,autoHide 不关心\n * @param {AxisLabelAutoHideCfg} autoHideCfg autoHide overlap 的可选配置参数\n */\nexport function reserveFirst(\n isVertical: boolean,\n labelsGroup: IGroup,\n limitLength?: number,\n autoHideCfg?: AxisLabelAutoHideCfg\n): boolean {\n return reserveOne(isVertical, labelsGroup, false, autoHideCfg);\n}\n\n/**\n * 保证最后一个 label 可见,即使超过 limitLength 也不隐藏\n * @param {boolean} isVertical 是否垂直\n * @param {IGroup} labelsGroup label 的分组\n * @param {number} limitLength 另一个方向的长度限制,autoHide 不关心\n * @param {AxisLabelAutoHideCfg} autoHideCfg autoHide overlap 的可选配置参数\n */\nexport function reserveLast(\n isVertical: boolean,\n labelsGroup: IGroup,\n limitLength?: number,\n autoHideCfg?: AxisLabelAutoHideCfg\n): boolean {\n return reserveOne(isVertical, labelsGroup, true, autoHideCfg);\n}\n\n/**\n * 保证第一个最后一个 label 可见,即使超过 limitLength 也不隐藏\n * @param {boolean} isVertical 是否垂直\n * @param {IGroup} labelsGroup label 的分组\n * @param {number} limitLength 另一个方向的长度限制,autoHide 不关心\n * @param {AxisLabelAutoHideCfg} autoHideCfg autoHide overlap 的可选配置参数\n */\nexport function reserveBoth(\n isVertical: boolean,\n labelsGroup: IGroup,\n limitLength?: number,\n autoHideCfg?: AxisLabelAutoHideCfg\n): boolean {\n const minGap = autoHideCfg?.minGap || 0;\n const labels = labelsGroup.getChildren().slice(); // 复制数组\n if (labels.length <= 2) {\n // 如果数量小于或等于 2 则直接返回\n return false;\n }\n let hasHide = false;\n const count = labels.length;\n const first = labels[0];\n const last = labels[count - 1];\n let preLabel = first;\n // 按照先保存第一个的逻辑循环一遍,最后一个不参与循环\n for (let i = 1; i < count - 1; i++) {\n const label = labels[i];\n const curBBox = label.getBBox();\n // 废弃 isOutLimit(isVertical, label, limitLength) ||\n const isHide = isOverlap(isVertical, preLabel, label, minGap);\n if (isHide) {\n label.hide();\n hasHide = true;\n } else {\n preLabel = label;\n }\n }\n\n const overlap = isOverlap(isVertical, preLabel, last, minGap);\n if (overlap) {\n // 发生冲突,则隐藏前一个保留后一个\n preLabel.hide();\n hasHide = true;\n }\n return hasHide;\n}\n\n/**\n * 保证 label 均匀显示 和 不出现重叠,主要解决文本层叠的问题,对于 limitLength 不处理\n * @param {boolean} isVertical 是否垂直\n * @param {IGroup} labelsGroup label 的分组\n * @param {number} limitLength 另一个方向的长度限制,autoHide 不关心\n * @param {AxisLabelAutoHideCfg} autoHideCfg autoHide overlap 的可选配置参数\n */\nexport function equidistance(\n isVertical: boolean,\n labelsGroup: IGroup,\n limitLength?: number,\n autoHideCfg?: AxisLabelAutoHideCfg\n): boolean {\n let hasHide = parityHide(isVertical, labelsGroup, autoHideCfg);\n\n // 处理 timeCat 类型的 tick,在均匀的基础上,再次检查出现重叠的进行隐藏\n if (reserveOne(isVertical, labelsGroup, false)) {\n hasHide = true;\n }\n\n return hasHide;\n}\n\n/**\n * 同 equidistance, 首先会保证 labels 均匀显示,然后会保留首尾\n * @param isVertical\n * @param labelsGroup\n * @param {number} limitLength 另一个方向的长度限制,autoHide 不关心\n * @param {AxisLabelAutoHideCfg} autoHideCfg autoHide overlap 的可选配置参数\n */\nexport function equidistanceWithReverseBoth(\n isVertical: boolean,\n labelsGroup: IGroup,\n limitLength?: number,\n autoHideCfg?: AxisLabelAutoHideCfg\n): boolean {\n const labels = labelsGroup.getChildren().slice(); // 复制数组\n let hasHide = parityHide(isVertical, labelsGroup, autoHideCfg);\n\n if (labels.length > 2) {\n const first = labels[0];\n const last = labels[labels.length - 1];\n\n // 如果第一个被隐藏了\n if (!first.get('visible')) {\n first.show();\n if (reserveOne(isVertical, labelsGroup, false, autoHideCfg)) {\n hasHide = true;\n }\n }\n\n // 如果最后一个被隐藏了\n if (!last.get('visible')) {\n last.show();\n if (reserveOne(isVertical, labelsGroup, true, autoHideCfg)) {\n hasHide = true;\n }\n }\n }\n\n return hasHide;\n}\n","import { IElement, IGroup } from '@antv/g-base';\nimport { each, isNumber } from '@antv/util';\nimport { getMaxLabelWidth } from '../../util/label';\nimport { getMatrixByAngle } from '../../util/matrix';\nimport Theme from '../../util/theme';\n\n// 统一设置文本的角度\nfunction setLabelsAngle(labels: IElement[], angle: number) {\n each(labels, (label) => {\n const x = label.attr('x');\n const y = label.attr('y');\n const matrix = getMatrixByAngle({ x, y }, angle);\n label.attr('matrix', matrix);\n });\n}\n\ntype getAngleCallback = (limitLength: number, maxWidth: number) => number;\n\n// 旋转文本\nfunction labelRotate(\n isVertical: boolean,\n labelsGroup: IGroup,\n limitLength: number,\n getAngle: getAngleCallback\n): boolean {\n const labels = labelsGroup.getChildren();\n if (!labels.length) {\n return false;\n }\n if (!isVertical && labels.length < 2) {\n // 水平时至少有两个时才旋转\n return false;\n }\n\n const maxWidth = getMaxLabelWidth(labels);\n let isOverlap = false;\n if (isVertical) {\n // limitLength 为 0 或者 null 时不生效\n isOverlap = !!limitLength && maxWidth > limitLength;\n } else {\n // 同 limitLength 无关\n const tickWidth = Math.abs(labels[1].attr('x') - labels[0].attr('x'));\n isOverlap = maxWidth > tickWidth;\n }\n\n if (isOverlap) {\n const angle = getAngle(limitLength, maxWidth);\n setLabelsAngle(labels, angle);\n }\n return isOverlap;\n}\n\nexport function getDefault() {\n return fixedAngle;\n}\n\n/**\n * 固定角度旋转文本\n * @param {boolean} isVertical 是否垂直方向\n * @param {IGroup} labelsGroup 文本的 group\n * @param {number} limitLength 限定长度\n * @param {number} customRotate 自定义旋转角度\n * @return {boolean} 是否发生了旋转\n */\nexport function fixedAngle(\n isVertical: boolean,\n labelsGroup: IGroup,\n limitLength: number,\n customRotate?: number\n): boolean {\n return labelRotate(isVertical, labelsGroup, limitLength, () => {\n if (isNumber(customRotate)) {\n return customRotate;\n }\n return isVertical ? Theme.verticalAxisRotate : Theme.horizontalAxisRotate;\n });\n}\n\n/**\n * 非固定角度旋转文本\n * @param {boolean} isVertical 是否垂直方向\n * @param {IGroup} labelsGroup 文本的 group\n * @param {number} limitLength 限定长度\n * @return {boolean} 是否发生了旋转\n */\nexport function unfixedAngle(isVertical: boolean, labelsGroup: IGroup, limitLength: number): boolean {\n return labelRotate(isVertical, labelsGroup, limitLength, (length, maxWidth) => {\n if (!length) {\n // 如果没有设置 limitLength,则使用固定的角度旋转\n return isVertical ? Theme.verticalAxisRotate : Theme.horizontalAxisRotate;\n }\n if (isVertical) {\n // 垂直时不需要判定 limitLength > maxWidth ,因为此时不会 overlap\n return -Math.acos(length / maxWidth);\n } else {\n let angle = 0;\n if (length > maxWidth) {\n // 需要判定,asin 的参数 -1, 1\n angle = Math.PI / 4;\n } else {\n angle = Math.asin(length / maxWidth);\n if (angle > Math.PI / 4) {\n // 大于 Math.PI / 4 时没意义\n angle = Math.PI / 4;\n }\n }\n return angle;\n }\n });\n}\n","import { IGroup } from '@antv/g-base';\nimport { vec2 } from '@antv/matrix-util';\nimport { each, isFunction, isNil, isNumberEqual, isObject } from '@antv/util';\nimport { ILocation } from '../interfaces';\nimport { AxisLabelAutoHideCfg, BBox, LineAxisCfg, Point, RegionLocationCfg } from '../types';\nimport Theme from '../util/theme';\nimport AxisBase from './base';\nimport * as OverlapUtil from './overlap';\n\nclass Line extends AxisBase implements ILocation {\n public getDefaultCfg() {\n const cfg = super.getDefaultCfg();\n return {\n ...cfg,\n type: 'line',\n locationType: 'region',\n /**\n * 起始点, x, y\n * @type {object}\n */\n start: null,\n /**\n * 结束点, x, y\n * @type {object}\n */\n end: null,\n };\n }\n\n // 获取坐标轴线的 path\n public getLinePath(): any[] {\n const start = this.get('start');\n const end = this.get('end');\n const path = [];\n path.push(['M', start.x, start.y]);\n path.push(['L', end.x, end.y]);\n return path;\n }\n\n // 重新计算 layout bbox,考虑到 line 不显示\n protected getInnerLayoutBBox(): BBox {\n const start = this.get('start');\n const end = this.get('end');\n const bbox = super.getInnerLayoutBBox();\n const minX = Math.min(start.x, end.x, bbox.x);\n const minY = Math.min(start.y, end.y, bbox.y);\n const maxX = Math.max(start.x, end.x, bbox.maxX);\n const maxY = Math.max(start.y, end.y, bbox.maxY);\n return {\n x: minX,\n y: minY,\n minX,\n minY,\n maxX,\n maxY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n\n protected isVertical() {\n const start = this.get('start');\n const end = this.get('end');\n return isNumberEqual(start.x, end.x);\n }\n\n protected isHorizontal() {\n const start = this.get('start');\n const end = this.get('end');\n return isNumberEqual(start.y, end.y);\n }\n\n protected getTickPoint(tickValue: number): Point {\n const self = this;\n const start = self.get('start');\n const end = self.get('end');\n const regionX = end.x - start.x;\n const regionY = end.y - start.y;\n return {\n x: start.x + regionX * tickValue,\n y: start.y + regionY * tickValue,\n };\n }\n\n // 直线坐标轴下任一点的向量方向都相同\n protected getSideVector(offset: number) {\n const axisVector = this.getAxisVector();\n const normal = vec2.normalize([0, 0], axisVector);\n const factor = this.get('verticalFactor');\n const verticalVector: [number, number] = [normal[1], normal[0] * -1]; // 垂直方向,逆时针方向\n return vec2.scale([0, 0], verticalVector, offset * factor);\n }\n\n // 获取坐标轴的向量\n protected getAxisVector(): [number, number] {\n const start = this.get('start');\n const end = this.get('end');\n return [end.x - start.x, end.y - start.y];\n }\n\n protected processOverlap(labelGroup) {\n const isVertical = this.isVertical();\n const isHorizontal = this.isHorizontal();\n // 非垂直,或者非水平时不处理遮挡问题\n if (!isVertical && !isHorizontal) {\n return;\n }\n const labelCfg = this.get('label');\n const titleCfg = this.get('title');\n const verticalLimitLength = this.get('verticalLimitLength');\n const labelOffset = labelCfg.offset;\n let limitLength = verticalLimitLength;\n let titleHeight = 0;\n let titleSpacing = 0;\n if (titleCfg) {\n titleHeight = titleCfg.style.fontSize;\n titleSpacing = titleCfg.spacing;\n }\n if (limitLength) {\n limitLength = limitLength - labelOffset - titleSpacing - titleHeight;\n }\n const overlapOrder = this.get('overlapOrder');\n each(overlapOrder, (name) => {\n if (labelCfg[name] && this.canProcessOverlap(name)) {\n this.autoProcessOverlap(name, labelCfg[name], labelGroup, limitLength);\n }\n });\n if (titleCfg) {\n if (isNil(titleCfg.offset)) {\n // 调整 title 的 offset\n const bbox = labelGroup.getCanvasBBox();\n const length = isVertical ? bbox.width : bbox.height;\n // 如果用户没有设置 offset,则自动计算\n titleCfg.offset = labelOffset + length + titleSpacing + titleHeight / 2;\n }\n }\n }\n\n /**\n * 是否可以执行某一 overlap\n * @param name\n */\n private canProcessOverlap(name: string) {\n const labelCfg = this.get('label');\n\n // 对 autoRotate,如果配置了旋转角度,直接进行固定角度旋转\n if (name === 'autoRotate') {\n return isNil(labelCfg.rotate);\n }\n\n // 默认所有 overlap 都可执行\n return true;\n }\n\n private autoProcessOverlap(name: string, value: any, labelGroup: IGroup, limitLength: number) {\n const isVertical = this.isVertical();\n let hasAdjusted = false;\n const util = OverlapUtil[name];\n if (value === true) {\n const labelCfg = this.get('label');\n // true 形式的配置:使用 overlap 默认的的处理方法进行处理\n hasAdjusted = util.getDefault()(isVertical, labelGroup, limitLength);\n } else if (isFunction(value)) {\n // 回调函数形式的配置: 用户可以传入回调函数\n hasAdjusted = value(isVertical, labelGroup, limitLength);\n } else if (isObject(value)) {\n // object 形式的配置方式:包括 处理方法 type, 和可选参数配置 cfg\n const overlapCfg = value as { type: string; cfg?: AxisLabelAutoHideCfg };\n if (util[overlapCfg.type]) {\n hasAdjusted = util[overlapCfg.type](isVertical, labelGroup, limitLength, overlapCfg.cfg);\n }\n } else if (util[value]) {\n // 字符串类型的配置:按照名称执行 overlap 处理方法\n hasAdjusted = util[value](isVertical, labelGroup, limitLength);\n }\n if (name === 'autoRotate') {\n // 文本旋转后,文本的对齐方式可能就不合适了\n if (hasAdjusted) {\n const labels = labelGroup.getChildren();\n const verticalFactor = this.get('verticalFactor');\n each(labels, (label) => {\n const textAlign = label.attr('textAlign');\n if (textAlign === 'center') {\n // 居中的文本需要调整旋转度\n const newAlign = verticalFactor > 0 ? 'end' : 'start';\n label.attr('textAlign', newAlign);\n }\n });\n }\n } else if (name === 'autoHide') {\n const children = labelGroup.getChildren().slice(0); // 复制数组,删除时不会出错\n each(children, (label) => {\n if (!label.get('visible')) {\n if (this.get('isRegister')) {\n // 已经注册过了,则删除\n this.unregisterElement(label);\n }\n label.remove(); // 防止 label 数量太多,所以统一删除\n }\n });\n }\n }\n}\n\nexport default Line;\n","import { IGroup } from '@antv/g-base';\nimport { each, isNil, isFunction, isObject } from '@antv/util';\nimport { vec2 } from '@antv/matrix-util';\nimport AxisBase from './base';\nimport * as OverlapUtil from './overlap';\nimport type { AxisLabelAutoHideCfg } from '../types';\nimport type { CircleAxisCfg, Point, } from '../types';\n\nclass Circle extends AxisBase {\n public getDefaultCfg() {\n const cfg = super.getDefaultCfg();\n return {\n ...cfg,\n type: 'circle',\n locationType: 'circle',\n center: null,\n radius: null,\n startAngle: -Math.PI / 2,\n endAngle: (Math.PI * 3) / 2,\n };\n }\n\n protected getLinePath(): any[] {\n const center = this.get('center');\n const x = center.x;\n const y = center.y;\n const rx = this.get('radius');\n const ry = rx;\n const startAngle = this.get('startAngle');\n const endAngle = this.get('endAngle');\n\n let path = [];\n if (Math.abs(endAngle - startAngle) === Math.PI * 2) {\n path = [['M', x, y - ry], ['A', rx, ry, 0, 1, 1, x, y + ry], ['A', rx, ry, 0, 1, 1, x, y - ry], ['Z']];\n } else {\n const startPoint = this.getCirclePoint(startAngle);\n const endPoint = this.getCirclePoint(endAngle);\n const large = Math.abs(endAngle - startAngle) > Math.PI ? 1 : 0;\n const sweep = startAngle > endAngle ? 0 : 1;\n path = [\n ['M', x, y],\n ['L', startPoint.x, startPoint.y],\n ['A', rx, ry, 0, large, sweep, endPoint.x, endPoint.y],\n ['L', x, y],\n ];\n }\n return path;\n }\n\n protected getTickPoint(tickValue): Point {\n const startAngle = this.get('startAngle');\n const endAngle = this.get('endAngle');\n const angle = startAngle + (endAngle - startAngle) * tickValue;\n return this.getCirclePoint(angle);\n }\n\n // 获取垂直于坐标轴的向量\n protected getSideVector(offset: number, point: Point) {\n const center = this.get('center');\n const vector: [number, number] = [point.x - center.x, point.y - center.y];\n const factor = this.get('verticalFactor');\n const vecLen = vec2.length(vector);\n vec2.scale(vector, vector, (factor * offset) / vecLen);\n return vector;\n }\n\n // 获取沿坐标轴方向的向量\n protected getAxisVector(point: Point): [number, number] {\n const center = this.get('center');\n const vector = [point.x - center.x, point.y - center.y];\n return [vector[1], -1 * vector[0]]; // 获取顺时针方向的向量\n }\n\n // 根据圆心和半径获取点\n private getCirclePoint(angle: number, radius?: number) {\n const center = this.get('center');\n radius = radius || this.get('radius');\n return {\n x: center.x + Math.cos(angle) * radius,\n y: center.y + Math.sin(angle) * radius,\n };\n }\n\n /**\n * 是否可以执行某一 overlap\n * @param name\n */\n private canProcessOverlap(name: string) {\n const labelCfg = this.get('label');\n\n // 对 autoRotate,如果配置了旋转角度,直接进行固定角度旋转\n if (name === 'autoRotate') {\n return isNil(labelCfg.rotate);\n }\n\n // 默认所有 overlap 都可执行\n return true;\n }\n\n protected processOverlap(labelGroup) {\n const labelCfg = this.get('label');\n const titleCfg = this.get('title');\n const verticalLimitLength = this.get('verticalLimitLength');\n const labelOffset = labelCfg.offset;\n let limitLength = verticalLimitLength;\n let titleHeight = 0;\n let titleSpacing = 0;\n if (titleCfg) {\n titleHeight = titleCfg.style.fontSize;\n titleSpacing = titleCfg.spacing;\n }\n if (limitLength) {\n limitLength = limitLength - labelOffset - titleSpacing - titleHeight;\n }\n const overlapOrder = this.get('overlapOrder');\n each(overlapOrder, (name) => {\n if (labelCfg[name] && this.canProcessOverlap(name)) {\n this.autoProcessOverlap(name, labelCfg[name], labelGroup, limitLength);\n }\n });\n if (titleCfg) {\n if (isNil(titleCfg.offset)) {\n // 调整 title 的 offset\n const { height: length } = labelGroup.getCanvasBBox();\n // 如果用户没有设置 offset,则自动计算\n titleCfg.offset = labelOffset + length + titleSpacing + titleHeight / 2;\n }\n }\n }\n\n private autoProcessOverlap(name: string, value: any, labelGroup: IGroup, limitLength: number) {\n let hasAdjusted = false;\n const util = OverlapUtil[name];\n if (limitLength > 0) {\n if (value === true) {\n // true 形式的配置:使用 overlap 默认的的处理方法进行处理\n hasAdjusted = util.getDefault()(false, labelGroup, limitLength);\n } else if (isFunction(value)) {\n // 回调函数形式的配置: 用户可以传入回调函数\n hasAdjusted = value(false, labelGroup, limitLength);\n } else if (isObject(value)) {\n // object 形式的配置方式:包括 处理方法 type, 和可选参数配置 cfg\n const overlapCfg = value as { type: string; cfg?: AxisLabelAutoHideCfg };\n if (util[overlapCfg.type]) {\n hasAdjusted = util[overlapCfg.type](false, labelGroup, limitLength, overlapCfg.cfg);\n }\n } else if (util[value]) {\n // 字符串类型的配置:按照名称执行 overlap 处理方法\n hasAdjusted = util[value](false, labelGroup, limitLength);\n }\n }\n if (name === 'autoRotate') {\n // 文本旋转后,文本的对齐方式可能就不合适了\n if (hasAdjusted) {\n const labels = labelGroup.getChildren();\n const verticalFactor = this.get('verticalFactor');\n each(labels, (label) => {\n const textAlign = label.attr('textAlign');\n if (textAlign === 'center') {\n // 居中的文本需要调整旋转度\n const newAlign = verticalFactor > 0 ? 'end' : 'start';\n label.attr('textAlign', newAlign);\n }\n });\n }\n } else if (name === 'autoHide') {\n const children = labelGroup.getChildren().slice(0); // 复制数组,删除时不会出错\n each(children, (label) => {\n if (!label.get('visible')) {\n if (this.get('isRegister')) {\n // 已经注册过了,则删除\n this.unregisterElement(label);\n }\n label.remove(); // 防止 label 数量太多,所以统一删除\n }\n });\n }\n }\n}\n\nexport default Circle;\n","import { IGroup } from '@antv/g-base';\nimport { isNil } from '@antv/util';\nimport GroupComponent from '../abstract/group-component';\nimport { CrosshairBaseCfg, Point } from '../types';\nimport { getMatrixByAngle } from '../util/matrix';\nimport Theme from '../util/theme';\nimport { formatPadding } from '../util/util';\n\nabstract class CrosshairBase extends GroupComponent {\n public getDefaultCfg() {\n const cfg = super.getDefaultCfg();\n return {\n ...cfg,\n name: 'crosshair',\n type: 'base',\n line: {},\n text: null,\n textBackground: {},\n capture: false, // 不能被拾取\n defaultCfg: {\n line: {\n style: {\n lineWidth: 1,\n stroke: Theme.lineColor,\n },\n },\n text: {\n position: 'start',\n offset: 10,\n autoRotate: false,\n content: null,\n style: {\n fill: Theme.textColor,\n textAlign: 'center',\n textBaseline: 'middle',\n fontFamily: Theme.fontFamily,\n },\n },\n textBackground: {\n padding: 5,\n style: {\n stroke: Theme.lineColor,\n },\n },\n },\n };\n }\n\n protected renderInner(group: IGroup) {\n if (this.get('line')) {\n this.renderLine(group);\n }\n if (this.get('text')) {\n this.renderText(group);\n this.renderBackground(group);\n }\n }\n\n /**\n * @protected\n * 获取文本点的位置\n * @return {Point} 文本的位置\n */\n protected abstract getTextPoint(): Point;\n\n protected abstract getRotateAngle(): number;\n\n protected renderText(group: IGroup) {\n const text = this.get('text');\n const { style, autoRotate, content } = text;\n if (!isNil(content)) {\n const textPoint = this.getTextPoint();\n let matrix = null;\n if (autoRotate) {\n const angle = this.getRotateAngle();\n matrix = getMatrixByAngle(textPoint, angle);\n }\n this.addShape(group, {\n type: 'text',\n name: 'crosshair-text',\n id: this.getElementId('text'),\n attrs: {\n ...textPoint,\n text: content,\n matrix,\n ...style,\n },\n });\n }\n }\n\n protected abstract getLinePath(): any[];\n\n protected renderLine(group: IGroup) {\n const path = this.getLinePath();\n const line = this.get('line');\n const style = line.style;\n this.addShape(group, {\n type: 'path',\n name: 'crosshair-line',\n id: this.getElementId('line'),\n attrs: {\n path,\n ...style,\n },\n });\n }\n\n // 绘制文本的背景\n private renderBackground(group: IGroup) {\n const textId = this.getElementId('text');\n const textShape = group.findById(textId); // 查找文本\n const textBackground = this.get('textBackground');\n\n if (textBackground && textShape) {\n const textBBox = textShape.getBBox();\n const padding = formatPadding(textBackground.padding); // 用户传入的 padding 格式不定\n const style = textBackground.style;\n const backgroundShape = this.addShape(group, {\n type: 'rect',\n name: 'crosshair-text-background',\n id: this.getElementId('text-background'),\n attrs: {\n x: textBBox.x - padding[3],\n y: textBBox.y - padding[0],\n width: textBBox.width + padding[1] + padding[3],\n height: textBBox.height + padding[0] + padding[2],\n matrix: textShape.attr('matrix'),\n ...style,\n },\n });\n backgroundShape.toBack();\n }\n }\n}\n\nexport default CrosshairBase;\n","import { ILocation } from '../interfaces';\nimport { LineCrosshairCfg, Point, RegionLocationCfg } from '../types';\nimport { getTextPoint } from '../util/util';\nimport CrosshairBase from './base';\n\nclass LineCrosshair extends CrosshairBase implements ILocation {\n public getDefaultCfg() {\n const cfg = super.getDefaultCfg();\n return {\n ...cfg,\n type: 'line',\n locationType: 'region',\n start: null,\n end: null,\n };\n }\n\n // 直线的文本需要同直线垂直\n protected getRotateAngle(): number {\n const { start, end } = this.getLocation();\n const { position } = this.get('text');\n const angle = Math.atan2(end.y - start.y, end.x - start.x);\n const tangentAngle = position === 'start' ? angle - Math.PI / 2 : angle + Math.PI / 2;\n return tangentAngle;\n }\n\n protected getTextPoint() {\n const { start, end } = this.getLocation();\n const { position, offset } = this.get('text');\n return getTextPoint(start, end, position, offset);\n }\n\n protected getLinePath(): any[] {\n const { start, end } = this.getLocation();\n return [\n ['M', start.x, start.y],\n ['L', end.x, end.y],\n ];\n }\n}\n\nexport default LineCrosshair;\n","import { ILocation } from '../interfaces';\nimport { CircleCrosshairCfg, CircleLocationCfg, Point } from '../types';\nimport { getCirclePoint } from '../util/util';\nimport CrosshairBase from './base';\n\nclass LineCrosshair extends CrosshairBase implements ILocation {\n public getDefaultCfg() {\n const cfg = super.getDefaultCfg();\n return {\n ...cfg,\n type: 'circle',\n locationType: 'circle',\n center: null,\n radius: 100,\n startAngle: -Math.PI / 2,\n endAngle: (Math.PI * 3) / 2,\n };\n }\n\n protected getRotateAngle(): number {\n const { startAngle, endAngle } = this.getLocation();\n const { position } = this.get('text');\n const tangentAngle = position === 'start' ? startAngle + Math.PI / 2 : endAngle - Math.PI / 2;\n return tangentAngle;\n }\n\n protected getTextPoint(): Point {\n const text = this.get('text');\n const { position, offset } = text;\n const { center, radius, startAngle, endAngle } = this.getLocation();\n const angle = position === 'start' ? startAngle : endAngle;\n const tangentAngle = this.getRotateAngle() - Math.PI;\n const point = getCirclePoint(center, radius, angle);\n // 这个地方其实应该求切线向量然后在乘以 offset,但是太啰嗦了,直接给出结果\n // const tangent = [Math.cos(tangentAngle), Math.sin(tangentAngle)];\n // const offsetVector = vec2.scale([], tangent, offset);\n const offsetX = Math.cos(tangentAngle) * offset;\n const offsetY = Math.sin(tangentAngle) * offset;\n return {\n x: point.x + offsetX,\n y: point.y + offsetY,\n };\n }\n\n protected getLinePath(): any[] {\n const { center, radius, startAngle, endAngle } = this.getLocation();\n let path = null;\n if (endAngle - startAngle === Math.PI * 2) {\n // 整圆\n const { x, y } = center;\n path = [\n ['M', x, y - radius],\n ['A', radius, radius, 0, 1, 1, x, y + radius],\n ['A', radius, radius, 0, 1, 1, x, y - radius],\n ['Z'],\n ];\n } else {\n const startPoint = getCirclePoint(center, radius, startAngle);\n const endPoint = getCirclePoint(center, radius, endAngle);\n const large = Math.abs(endAngle - startAngle) > Math.PI ? 1 : 0;\n const sweep = startAngle > endAngle ? 0 : 1;\n path = [\n ['M', startPoint.x, startPoint.y],\n ['A', radius, radius, 0, large, sweep, endPoint.x, endPoint.y],\n ];\n }\n return path;\n }\n}\n\nexport default LineCrosshair;\n","export const CONTAINER_CLASS = 'g2-crosshair';\nexport const CROSSHAIR_LINE = `${CONTAINER_CLASS}-line`;\nexport const CROSSHAIR_TEXT = `${CONTAINER_CLASS}-text`;\n","import Theme from '../util/theme';\n\n// tooltip 相关 dom 的 css 类名\nimport * as CssConst from './css-const';\n\nexport default {\n // css style for tooltip\n [`${CssConst.CONTAINER_CLASS}`]: {\n position: 'relative'\n },\n [`${CssConst.CROSSHAIR_LINE}`]: {\n position: 'absolute',\n backgroundColor: 'rgba(0, 0, 0, 0.25)',\n },\n [`${CssConst.CROSSHAIR_TEXT}`]: {\n position: 'absolute',\n color: Theme.textColor,\n fontFamily: Theme.fontFamily,\n }\n};","import { createDom, modifyCSS } from '@antv/dom-util';\nimport { substitute, hasKey } from '@antv/util';\nimport { toPx, getTextPoint } from '../util/util';\nimport HtmlComponent from '../abstract/html-component';\nimport * as CssConst from './css-const';\nimport HtmlTheme from './html-theme';\nimport {HtmlCrossHairCfg} from '../types';\nclass HtmlCrosshair extends HtmlComponent {\n public getDefaultCfg() {\n const cfg = super.getDefaultCfg();\n return {\n ...cfg,\n name: 'crosshair',\n type: 'html',\n locationType: 'region',\n start: {x: 0, y: 0}, // 防止初始化报错\n end: {x: 0, y: 0}, // 防止初始化报错\n capture: false,\n text: null,\n containerTpl: `
    `,\n crosshairTpl: `
    `,\n textTpl: `{content}`,\n domStyles: null,\n containerClassName: CssConst.CONTAINER_CLASS,\n defaultStyles: HtmlTheme,\n defaultCfg: {\n text: {\n position: 'start',\n content: null,\n align: 'center',\n offset: 10\n }\n },\n };\n }\n\n render() {\n this.resetText();\n this.resetPosition();\n }\n\n // 绘制 crosshair\n private initCrossHair() {\n const container = this.getContainer();\n const crosshairTpl = this.get('crosshairTpl');\n const crosshairEl = createDom(crosshairTpl);\n container.appendChild(crosshairEl);\n this.applyStyle(CssConst.CROSSHAIR_LINE, crosshairEl);\n this.set('crosshairEl', crosshairEl);\n }\n\n // 获取文本的位置\n private getTextPoint() {\n const { start, end } = this.getLocation();\n const { position, offset } = this.get('text');\n return getTextPoint(start, end, position, offset);\n }\n\n // 设置 text\n private resetText() {\n const text = this.get('text');\n let textEl = this.get('textEl') as HTMLElement;\n if (text) {\n const {content} = text;\n if (!textEl) {\n const container = this.getContainer();\n const textTpl = substitute(this.get('textTpl'), text);\n textEl = createDom(textTpl);\n container.appendChild(textEl);\n this.applyStyle(CssConst.CROSSHAIR_TEXT, textEl);\n this.set('textEl', textEl);\n }\n textEl.innerHTML = content;\n } else if (textEl) {\n textEl.remove();\n }\n }\n // 是否垂直\n private isVertical(start, end) {\n return start.x === end.x;\n }\n // 重新调整位置\n protected resetPosition() {\n let crosshairEl = this.get('crosshairEl');\n if (!crosshairEl) {\n this.initCrossHair();\n crosshairEl = this.get('crosshairEl');\n }\n const start = this.get('start');\n const end = this.get('end');\n const minX = Math.min(start.x, end.x);\n const minY = Math.min(start.y, end.y);\n if (this.isVertical(start, end)) {\n modifyCSS(crosshairEl, {\n width: '1px',\n height: toPx(Math.abs(end.y - start.y))\n });\n } else {\n modifyCSS(crosshairEl, {\n height: '1px',\n width: toPx(Math.abs(end.x - start.x))\n });\n }\n modifyCSS(crosshairEl, {\n top: toPx(minY),\n left: toPx(minX)\n });\n this.alignText();\n }\n\n private alignText() {\n // 重新设置 text 位置\n const textEl = this.get('textEl');\n if (textEl) {\n const { align } = this.get('text');\n const clientWidth = textEl.clientWidth;\n const point = this.getTextPoint();\n switch(align) {\n case 'center': \n point.x = point.x - clientWidth / 2;\n break;\n case 'right':\n point.x = point.x - clientWidth;\n case 'left':\n break;\n }\n modifyCSS(textEl, {\n top: toPx(point.y),\n left: toPx(point.x)\n });\n }\n }\n\n protected updateInner(cfg: Partial) {\n if (hasKey(cfg, 'text')) {\n this.resetText();\n }\n super.updateInner(cfg);\n }\n}\n\nexport default HtmlCrosshair;","import { IGroup } from '@antv/g-base';\nimport { each, isString, mix, isFunction } from '@antv/util';\nimport GroupComponent from '../abstract/group-component';\nimport { GridBaseCfg, GroupComponentCfg, Point } from '../types';\nimport Theme from '../util/theme';\n\nabstract class GridBase extends GroupComponent {\n public getDefaultCfg() {\n const cfg = super.getDefaultCfg();\n return {\n ...cfg,\n name: 'grid',\n line: {},\n alternateColor: null,\n capture: false,\n items: [],\n closed: false,\n defaultCfg: {\n line: {\n type: 'line', // 对于 line 类型的 grid 有 line, smooth 两种,cirle 类型的 grid 有 line 和 circle\n style: {\n lineWidth: 1,\n stroke: Theme.lineColor,\n },\n },\n },\n };\n }\n\n /**\n * 获取栅格线的类型\n * @return {string} 栅格线类型\n */\n protected getLineType(): string {\n const line = this.get('line') || this.get('defaultCfg').line;\n return line.type;\n }\n\n protected renderInner(group: IGroup) {\n this.drawGrid(group);\n }\n\n /**\n * 获取栅格线的路径\n * @param {Point[]} points 栅格线的点集合\n * @param {boolean} reversed 顺序是否相反\n * @return {any[]} 路径\n */\n protected abstract getGridPath(points: Point[], reversed?: boolean): any[];\n\n protected getAlternatePath(prePoints: Point[], points: Point[]) {\n let regionPath = this.getGridPath(prePoints);\n const reversePoints = points.slice(0).reverse();\n const nextPath = this.getGridPath(reversePoints, true);\n const closed = this.get('closed');\n if (closed) {\n regionPath = regionPath.concat(nextPath);\n } else {\n nextPath[0][0] = 'L'; // 更新第一个节点\n regionPath = regionPath.concat(nextPath);\n regionPath.push(['Z']);\n }\n return regionPath;\n }\n // 获取路径的配置项\n private getPathStyle() {\n return this.get('line').style;\n }\n\n // 绘制栅格\n private drawGrid(group: IGroup) {\n const line = this.get('line');\n const items = this.get('items');\n const alternateColor = this.get('alternateColor');\n let preItem = null;\n each(items, (item, index) => {\n const id = item.id || index;\n // 绘制栅格线\n if (line) {\n let style = this.getPathStyle();\n style = isFunction(style) ? style(item, index, items) : style;\n\n const lineId = this.getElementId(`line-${id}`);\n const gridPath = this.getGridPath(item.points);\n this.addShape(group, {\n type: 'path',\n name: 'grid-line',\n id: lineId,\n attrs: mix(\n {\n path: gridPath,\n },\n style\n ),\n });\n }\n // 如果存在 alternateColor 则绘制矩形\n // 从第二个栅格线开始绘制\n if (alternateColor && index > 0) {\n const regionId = this.getElementId(`region-${id}`);\n const isEven = index % 2 === 0;\n if (isString(alternateColor)) {\n // 如果颜色是单值,则是仅绘制偶数时的区域\n if (isEven) {\n this.drawAlternateRegion(regionId, group, preItem.points, item.points, alternateColor);\n }\n } else {\n const color = isEven ? alternateColor[1] : alternateColor[0];\n this.drawAlternateRegion(regionId, group, preItem.points, item.points, color);\n }\n }\n preItem = item;\n });\n }\n\n // 绘制栅格线间的间隔\n private drawAlternateRegion(id: string, group: IGroup, prePoints: Point[], points: Point[], color: string) {\n const regionPath = this.getAlternatePath(prePoints, points);\n this.addShape(group, {\n type: 'path',\n id,\n name: 'grid-region',\n attrs: {\n path: regionPath,\n fill: color,\n },\n });\n }\n}\n\nexport default GridBase;\n","import { each } from '@antv/util';\nimport { CircleGridCfg, Point } from '../types';\nimport GridBase from './base';\n\nfunction distance(x1, y1, x2, y2) {\n const dx = x2 - x1;\n const dy = y2 - y1;\n return Math.sqrt(dx * dx + dy * dy);\n}\n\nclass Circle extends GridBase {\n public getDefaultCfg() {\n const cfg = super.getDefaultCfg();\n return {\n ...cfg,\n type: 'circle',\n /**\n * 中心点\n * @type {object}\n */\n center: null,\n /**\n * 栅格线是否封闭\n * @type {true}\n */\n closed: true,\n };\n }\n\n protected getGridPath(points: Point[], reversed: boolean) {\n const lineType = this.getLineType();\n const closed = this.get('closed');\n const path = [];\n if (points.length) {\n // 防止出错\n if (lineType === 'circle') {\n const center = this.get('center');\n const firstPoint = points[0];\n const radius = distance(center.x, center.y, firstPoint.x, firstPoint.y);\n const sweepFlag = reversed ? 0 : 1; // 顺时针还是逆时针\n if (closed) {\n // 封闭时,绘制整个圆\n path.push(['M', center.x, center.y - radius]);\n path.push(['A', radius, radius, 0, 0, sweepFlag, center.x, center.y + radius]);\n path.push(['A', radius, radius, 0, 0, sweepFlag, center.x, center.y - radius]);\n path.push(['Z']);\n } else {\n each(points, (point, index) => {\n if (index === 0) {\n path.push(['M', point.x, point.y]);\n } else {\n path.push(['A', radius, radius, 0, 0, sweepFlag, point.x, point.y]);\n }\n });\n }\n } else {\n each(points, (point, index) => {\n if (index === 0) {\n path.push(['M', point.x, point.y]);\n } else {\n path.push(['L', point.x, point.y]);\n }\n });\n if (closed) {\n path.push(['Z']);\n }\n }\n }\n return path;\n }\n}\n\nexport default Circle;\n","import { each } from '@antv/util';\nimport { Point } from '../types';\nimport GridBase from './base';\n\nclass Line extends GridBase {\n public getDefaultCfg() {\n const cfg = super.getDefaultCfg();\n return {\n ...cfg,\n type: 'line',\n };\n }\n\n protected getGridPath(points: Point[]): any[] {\n const path = [];\n each(points, (point, index) => {\n if (index === 0) {\n path.push(['M', point.x, point.y]);\n } else {\n path.push(['L', point.x, point.y]);\n }\n });\n return path;\n }\n}\n\nexport default Line;\n","import { IGroup } from '@antv/g-base';\nimport GroupComponent from '../abstract/group-component';\nimport { ILocation } from '../interfaces';\nimport { BBox, LegendBaseCfg, Point, PointLocationCfg } from '../types';\nimport { createBBox, formatPadding } from '../util/util';\n\nabstract class LegendBase extends GroupComponent\n implements ILocation {\n public getDefaultCfg() {\n const cfg = super.getDefaultCfg();\n return {\n ...cfg,\n name: 'legend',\n /**\n * 布局方式: horizontal,vertical\n * @type {String}\n */\n layout: 'horizontal',\n locationType: 'point',\n x: 0,\n y: 0,\n offsetX: 0,\n offsetY: 0,\n title: null,\n background: null,\n };\n }\n\n public getLayoutBBox(): BBox {\n const bbox = super.getLayoutBBox();\n const maxWidth = this.get('maxWidth');\n const maxHeight = this.get('maxHeight');\n\n let { width, height } = bbox;\n if (maxWidth) {\n width = Math.min(width, maxWidth);\n }\n if (maxHeight) {\n height = Math.min(height, maxHeight);\n }\n \n return createBBox(bbox.minX, bbox.minY, width, height);\n }\n\n public setLocation(cfg: PointLocationCfg) {\n this.set('x', cfg.x);\n this.set('y', cfg.y);\n this.resetLocation();\n }\n\n protected resetLocation() {\n const x = this.get('x');\n const y = this.get('y');\n const offsetX = this.get('offsetX');\n const offsetY = this.get('offsetY');\n this.moveElementTo(this.get('group'), {\n x: x + offsetX,\n y: y + offsetY,\n });\n }\n\n protected applyOffset() {\n this.resetLocation();\n }\n\n // 获取当前绘制的点\n protected getDrawPoint(): Point {\n return this.get('currentPoint');\n }\n\n protected setDrawPoint(point: Point) {\n return this.set('currentPoint', point);\n }\n // 复写父类定义的绘制方法\n protected renderInner(group: IGroup) {\n this.resetDraw();\n if (this.get('title')) {\n this.drawTitle(group);\n }\n this.drawLegendContent(group);\n if (this.get('background')) {\n this.drawBackground(group);\n }\n // this.resetLocation(); // 在顶层已经在处理偏移时一起处理了\n }\n\n protected abstract drawLegendContent(group);\n\n // 绘制背景\n protected drawBackground(group: IGroup) {\n const background = this.get('background');\n const bbox = group.getBBox();\n const padding = formatPadding(background.padding);\n const attrs = {\n // 背景从 (0,0) 开始绘制\n x: 0,\n y: 0,\n width: bbox.width + padding[1] + padding[3],\n height: bbox.height + padding[0] + padding[2],\n ...background.style,\n };\n const backgroundShape = this.addShape(group, {\n type: 'rect',\n id: this.getElementId('background'),\n name: 'legend-background',\n attrs,\n });\n backgroundShape.toBack();\n }\n\n // 绘制标题,标题在图例项的上面\n protected drawTitle(group: IGroup) {\n const currentPoint = this.get('currentPoint');\n const titleCfg = this.get('title');\n const { spacing, style, text } = titleCfg;\n const shape = this.addShape(group, {\n type: 'text',\n id: this.getElementId('title'),\n name: 'legend-title',\n attrs: {\n text,\n x: currentPoint.x,\n y: currentPoint.y,\n ...style,\n },\n });\n const bbox = shape.getBBox();\n // 标题单独在一行\n this.set('currentPoint', { x: currentPoint.x, y: bbox.maxY + spacing });\n }\n\n // 重置绘制时开始的位置,如果绘制边框,考虑边框的 padding\n private resetDraw() {\n const background = this.get('background');\n const currentPoint = { x: 0, y: 0 };\n if (background) {\n const padding = formatPadding(background.padding);\n currentPoint.x = padding[3]; // 左边 padding\n currentPoint.y = padding[0]; // 上面 padding\n }\n this.set('currentPoint', currentPoint); // 设置绘制的初始位置\n }\n}\n\nexport default LegendBase;\n","import { IGroup, IShape } from '@antv/g-base';\nimport { clamp, deepMix, each, filter, get, mix, isNumber, isFunction } from '@antv/util';\nimport { IList } from '../interfaces';\nimport {\n CategoryLegendCfg,\n LegendPageNavigatorCfg,\n LegendItemNameCfg,\n LegendMarkerCfg,\n ListItem,\n LegendRadio,\n} from '../types';\nimport { ellipsisLabel } from '../util/label';\nimport { getMatrixByAngle, getMatrixByTranslate } from '../util/matrix';\nimport { getStatesStyle } from '../util/state';\nimport Theme from '../util/theme';\nimport LegendBase from './base';\n\n/**\n * 分页器 默认配置\n */\nconst DEFAULT_PAGE_NAVIGATOR = {\n marker: {\n style: {\n inactiveFill: '#000',\n inactiveOpacity: 0.45,\n fill: '#000',\n opacity: 1,\n size: 12,\n },\n },\n text: {\n style: {\n fill: '#ccc',\n fontSize: 12,\n },\n },\n};\n\n// 默认 文本style\nconst textStyle = {\n fill: Theme.textColor,\n fontSize: 12,\n textAlign: 'start',\n textBaseline: 'middle',\n fontFamily: Theme.fontFamily,\n fontWeight: 'normal',\n lineHeight: 12,\n};\n\nconst RIGHT_ARROW_NAME = 'navigation-arrow-right';\nconst LEFT_ARROW_NAME = 'navigation-arrow-left';\n\nconst ROTATE_MAP = {\n right: (90 * Math.PI) / 180,\n left: ((360 - 90) * Math.PI) / 180,\n up: 0,\n down: (180 * Math.PI) / 180,\n};\nclass Category extends LegendBase implements IList {\n private currentPageIndex = 1;\n private totalPagesCnt = 1;\n private pageWidth = 0;\n private pageHeight = 0;\n private startX = 0;\n private startY = 0;\n\n public getDefaultCfg() {\n const cfg = super.getDefaultCfg();\n return {\n ...cfg,\n name: 'legend',\n type: 'category',\n itemSpacing: 24,\n itemMarginBottom: 8,\n maxItemWidth: null,\n itemWidth: null,\n itemHeight: null,\n itemName: {},\n itemValue: null,\n maxWidth: null,\n maxHeight: null,\n marker: {},\n radio: null,\n items: [],\n itemStates: {},\n itemBackground: {},\n pageNavigator: {},\n defaultCfg: {\n title: {\n spacing: 5,\n style: {\n fill: Theme.textColor,\n fontSize: 12,\n textAlign: 'start',\n textBaseline: 'top',\n },\n },\n background: {\n padding: 5,\n style: {\n stroke: Theme.lineColor,\n },\n },\n itemBackground: {\n style: {\n opacity: 0,\n fill: '#fff',\n },\n },\n pageNavigator: DEFAULT_PAGE_NAVIGATOR,\n itemName: {\n spacing: 16, // 如果右边有 value 或者 RadioIcon 使用这个间距\n style: textStyle,\n },\n marker: {\n spacing: 8,\n style: {\n r: 6,\n symbol: 'circle',\n },\n },\n itemValue: {\n alignRight: false, // 只有itemWidth 不为 null 时此属性有效\n formatter: null,\n style: textStyle,\n spacing: 6, // 如果右边有 RadioIcon 使用在这个间距\n },\n itemStates: {\n active: {\n nameStyle: {\n opacity: 0.8,\n },\n },\n unchecked: {\n nameStyle: {\n fill: Theme.uncheckedColor,\n },\n markerStyle: {\n fill: Theme.uncheckedColor,\n stroke: Theme.uncheckedColor,\n },\n },\n inactive: {\n nameStyle: {\n fill: Theme.uncheckedColor,\n },\n markerStyle: {\n opacity: 0.2,\n },\n },\n },\n },\n };\n }\n\n // 实现 IList 接口\n public isList(): boolean {\n return true;\n }\n\n /**\n * 获取图例项\n * @return {ListItem[]} 列表项集合\n */\n public getItems(): ListItem[] {\n return this.get('items');\n }\n\n /**\n * 设置列表项\n * @param {ListItem[]} items 列表项集合\n */\n public setItems(items: ListItem[]) {\n this.update({\n items,\n });\n }\n\n /**\n * 更新列表项\n * @param {ListItem} item 列表项\n * @param {object} cfg 列表项\n */\n public updateItem(item: ListItem, cfg: object) {\n mix(item, cfg);\n this.clear(); // 由于单个图例项变化,会引起全局变化,所以全部更新\n this.render();\n }\n\n /**\n * 清空列表\n */\n public clearItems() {\n const itemGroup = this.getElementByLocalId('item-group');\n itemGroup && itemGroup.clear();\n }\n\n /**\n * 设置列表项的状态\n * @param {ListItem} item 列表项\n * @param {string} state 状态名\n * @param {boolean} value 状态值, true, false\n */\n public setItemState(item: ListItem, state: string, value: boolean) {\n item[state] = value;\n const itemElement = this.getElementByLocalId(`item-${item.id}`);\n if (itemElement) {\n const items = this.getItems();\n const index = items.indexOf(item);\n const offsetGroup = this.createOffScreenGroup(); // 离屏的 group\n const newElement = this.drawItem(item, index, this.getItemHeight(), offsetGroup);\n this.updateElements(newElement, itemElement); // 更新整个分组\n this.clearUpdateStatus(itemElement); // 清理更新状态,防止出现 bug\n }\n }\n /**\n * 是否存在指定的状态\n * @param {ListItem} item 列表项\n * @param {boolean} state 状态名\n */\n public hasState(item: ListItem, state: string): boolean {\n return !!item[state];\n }\n\n public getItemStates(item: ListItem): string[] {\n const itemStates = this.get('itemStates');\n const rst = [];\n each(itemStates, (v, k) => {\n if (item[k]) {\n // item.selected\n rst.push(k);\n }\n });\n return rst;\n }\n\n /**\n * 清楚所有列表项的状态\n * @param {string} state 状态值\n */\n public clearItemsState(state: string) {\n const items = this.getItemsByState(state);\n each(items, (item) => {\n this.setItemState(item, state, false);\n });\n }\n\n /**\n * 根据状态获取图例项\n * @param {string} state [description]\n * @return {ListItem[]} [description]\n */\n public getItemsByState(state: string): ListItem[] {\n const items = this.getItems();\n return filter(items, (item) => {\n return this.hasState(item, state);\n });\n }\n\n // 绘制 legend 的选项\n protected drawLegendContent(group) {\n this.processItems();\n this.drawItems(group);\n }\n\n // 防止未设置 id\n private processItems() {\n const items = this.get('items');\n each(items, (item) => {\n if (!item.id) {\n // 如果没有设置 id,默认使用 name\n item.id = item.name;\n }\n });\n }\n\n // 绘制所有的图例选项\n private drawItems(group: IGroup) {\n const itemContainerGroup = this.addGroup(group, {\n id: this.getElementId('item-container-group'),\n name: 'legend-item-container-group',\n });\n const itemGroup = this.addGroup(itemContainerGroup, {\n id: this.getElementId('item-group'),\n name: 'legend-item-group',\n });\n const itemHeight = this.getItemHeight();\n const itemWidth = this.get('itemWidth');\n const itemSpacing = this.get('itemSpacing');\n const itemMarginBottom = this.get('itemMarginBottom');\n const currentPoint = this.get('currentPoint');\n const startX = currentPoint.x;\n const startY = currentPoint.y;\n const layout = this.get('layout');\n const items = this.get('items');\n let wrapped = false;\n let pageWidth = 0;\n\n const maxWidth = this.get('maxWidth'); // 最大宽度,会导致 layout : 'horizontal' 时自动换行\n const maxHeight = this.get('maxHeight'); // 最大高度,会导致出现分页\n // 暂时不考虑分页\n each(items, (item, index) => {\n const subGroup = this.drawItem(item, index, itemHeight, itemGroup);\n const bbox = subGroup.getBBox();\n const width = itemWidth || bbox.width;\n if (width > pageWidth) {\n pageWidth = width;\n }\n if (layout === 'horizontal') {\n // 如果水平布局\n if (maxWidth && maxWidth < currentPoint.x + width - startX) {\n // 检测是否换行\n wrapped = true;\n currentPoint.x = startX;\n currentPoint.y += itemHeight + itemMarginBottom;\n }\n this.moveElementTo(subGroup, currentPoint);\n currentPoint.x += width + itemSpacing;\n } else {\n // 如果垂直布局\n if (maxHeight && maxHeight < currentPoint.y + itemHeight + itemMarginBottom - startY) {\n // 换行\n wrapped = true;\n currentPoint.x += pageWidth + itemSpacing;\n currentPoint.y = startY;\n pageWidth = 0;\n }\n this.moveElementTo(subGroup, currentPoint);\n currentPoint.y += itemHeight + itemMarginBottom; // itemSpacing 仅影响水平间距\n }\n });\n\n if (wrapped && this.get('flipPage')) {\n this.pageHeight = 0;\n this.pageWidth = 0;\n this.totalPagesCnt = 1;\n this.startX = startX;\n this.startY = startY;\n this.adjustNavigation(group, itemGroup);\n }\n }\n // 获取图例项的高度,如果未定义,则按照 name 的高度计算\n private getItemHeight() {\n let itemHeight = this.get('itemHeight');\n if (!itemHeight) {\n const { style }: LegendItemNameCfg = this.get('itemName') || {};\n\n if (isFunction(style)) {\n const items = this.getItems();\n items.forEach((item, index) => {\n const { fontSize } = { ...textStyle, ...style(item, index, items) };\n if (itemHeight < fontSize) {\n itemHeight = fontSize;\n }\n });\n } else if (style) {\n itemHeight = style.fontSize;\n }\n }\n return itemHeight;\n }\n // 绘制 marker\n private drawMarker(container: IGroup, markerCfg: LegendMarkerCfg, item: ListItem, itemHeight: number) {\n const markerAttrs = {\n x: 0,\n y: itemHeight / 2,\n ...markerCfg.style,\n symbol: get(item.marker, 'symbol', 'circle'),\n ...get(item.marker, 'style', {}),\n };\n\n const shape = this.addShape(container, {\n type: 'marker',\n id: this.getElementId(`item-${item.id}-marker`),\n name: 'legend-item-marker',\n attrs: markerAttrs,\n });\n const bbox = shape.getBBox();\n shape.attr('x', bbox.width / 2); // marker 需要左对齐,所以不能占用左侧的空间\n\n const { stroke, fill } = shape.attr();\n if (stroke) {\n shape.set('isStroke', true);\n }\n if (fill) {\n shape.set('isFill', true);\n }\n\n return shape;\n }\n // 绘制文本\n private drawItemText(\n container: IGroup,\n textName: string,\n cfg: LegendItemNameCfg,\n item: ListItem,\n itemHeight: number,\n xPosition: number,\n index: number\n ) {\n const formatter = cfg.formatter;\n const { style } = cfg;\n\n const attrs = {\n x: xPosition,\n y: itemHeight / 2,\n text: formatter ? formatter(item[textName], item, index) : item[textName],\n ...textStyle,\n ...(isFunction(style) ? style(item, index, this.getItems()) : style),\n };\n\n return this.addShape(container, {\n type: 'text',\n id: this.getElementId(`item-${item.id}-${textName}`),\n name: `legend-item-${textName}`,\n attrs,\n });\n }\n\n private drawRadio(container: IGroup, radioCfg: LegendRadio, item: ListItem, itemHeight: number, x: number) {\n const style = radioCfg.style || {};\n // 以用户设置的 r 为主\n const r = style.r ?? itemHeight / 2;\n const lineWidth = (r * 3.6) / 8;\n const [x0, y0] = [x + r, itemHeight / 2 - r];\n const [x1, y1] = [x0 + r, y0 + r];\n const [x2, y2] = [x0, y1 + r];\n const [x3, y3] = [x, y0 + r];\n const { showRadio } = item;\n const attrs = {\n path: [\n ['M', x0, y0],\n ['A', r, r, 0, 0, 1, x1, y1],\n ['L', x1 - lineWidth, y1],\n ['L', x1, y1],\n ['A', r, r, 0, 0, 1, x2, y2],\n ['L', x2, y2 - lineWidth],\n ['L', x2, y2],\n ['A', r, r, 0, 0, 1, x3, y3],\n ['L', x3 + lineWidth, y3],\n ['L', x3, y3],\n ['A', r, r, 0, 0, 1, x0, y0],\n ['L', x0, y0 + lineWidth],\n ],\n stroke: '#000000',\n fill: '#ffffff',\n ...style,\n opacity: showRadio ? (style?.opacity ?? 0.45) : 0,\n };\n\n const radioShape = this.addShape(container, {\n type: 'path',\n id: this.getElementId(`item-${item.id}-radio`),\n name: 'legend-item-radio',\n attrs,\n });\n radioShape.set('tip', radioCfg.tip);\n return radioShape;\n }\n\n // 绘制图例项\n private drawItem(item: ListItem, index: number, itemHeight: number, itemGroup: IGroup) {\n const groupId = `item-${item.id}`;\n // 设置单独的 Group 用于 setClip\n const subContainer = this.addGroup(itemGroup, {\n name: 'legend-item-container',\n id: this.getElementId(`item-container-${groupId}`),\n delegateObject: {\n item,\n index,\n },\n });\n const subGroup = this.addGroup(subContainer, {\n name: 'legend-item',\n id: this.getElementId(groupId),\n delegateObject: {\n item,\n index,\n },\n });\n const marker = this.get('marker');\n const itemName = this.get('itemName');\n const itemValue = this.get('itemValue');\n const itemBackground = this.get('itemBackground');\n const radio = this.get('radio');\n const itemWidth = this.getLimitItemWidth();\n\n let curX = 0; // 记录当前 x 的位置\n if (marker) {\n const markerShape = this.drawMarker(subGroup, marker, item, itemHeight);\n let spacing = marker.spacing;\n const itemMarkerSpacing = get(item, ['marker', 'spacing']);\n\n if (isNumber(itemMarkerSpacing)) {\n // 如果 item 有配置 marker.spacing,采用 item 的配置\n spacing = itemMarkerSpacing;\n }\n\n curX = markerShape.getBBox().maxX + spacing;\n }\n\n if (itemName) {\n const nameShape = this.drawItemText(subGroup, 'name', itemName, item, itemHeight, curX, index);\n if (itemWidth) {\n // 设置了 item 的最大宽度限制,并且超出了,进行省略处理\n ellipsisLabel(true, nameShape, clamp(itemWidth - curX, 0, itemWidth));\n }\n curX = nameShape.getBBox().maxX + itemName.spacing;\n }\n\n if (itemValue) {\n const valueShape = this.drawItemText(subGroup, 'value', itemValue, item, itemHeight, curX, index);\n if (itemWidth) {\n if (itemValue.alignRight) {\n valueShape.attr({\n textAlign: 'right',\n x: itemWidth,\n });\n ellipsisLabel(true, valueShape, clamp(itemWidth - curX, 0, itemWidth), 'head');\n } else {\n ellipsisLabel(true, valueShape, clamp(itemWidth - curX, 0, itemWidth));\n }\n }\n curX = valueShape.getBBox().maxX + itemValue.spacing;\n }\n\n if (radio) {\n this.drawRadio(subGroup, radio, item, itemHeight, curX);\n }\n\n // 添加透明的背景,便于拾取和包围盒计算\n if (itemBackground) {\n const bbox = subGroup.getBBox();\n const backShape = this.addShape(subGroup, {\n type: 'rect',\n name: 'legend-item-background',\n id: this.getElementId(`${groupId}-background`),\n attrs: {\n x: 0,\n y: 0,\n width: bbox.width,\n height: itemHeight,\n ...itemBackground.style,\n },\n });\n backShape.toBack();\n }\n\n this.applyItemStates(item, subGroup);\n return subGroup;\n }\n\n // 加上分页器并重新排序 items\n private adjustNavigation(container: IGroup, itemGroup: IGroup) {\n const startX = this.startX;\n const startY = this.startY;\n const layout = this.get('layout');\n const subGroups = itemGroup.findAll((item) => item.get('name') === 'legend-item');\n const maxWidth = this.get('maxWidth');\n const maxHeight = this.get('maxHeight');\n const itemWidth = this.get('itemWidth');\n const itemSpacing = this.get('itemSpacing');\n const itemHeight = this.getItemHeight();\n const pageNavigator: LegendPageNavigatorCfg = deepMix({}, DEFAULT_PAGE_NAVIGATOR, this.get('pageNavigator'));\n const navigation = this.drawNavigation(container, layout, '00/00', pageNavigator);\n const navigationBBox = navigation.getBBox();\n const currentPoint = { x: startX, y: startY };\n let pages = 1;\n let widthLimit = 0;\n let pageWidth = 0;\n let maxItemWidth = 0;\n const itemMarginBottom = this.get('itemMarginBottom');\n\n /** 判断当前 item 是否溢出当前页。是的话,需要换行 */\n function shouldWrap(item, currentPoint) {\n const bbox = item.getBBox();\n const width = itemWidth || bbox.width;\n const newItemXPos = currentPoint.x + width + itemSpacing + navigationBBox.width;\n return newItemXPos > maxWidth;\n }\n\n if (layout === 'horizontal') {\n const maxRow = this.get('maxRow') || 1;\n const maxRowHeight = itemHeight + (maxRow === 1 ? 0 : itemMarginBottom);\n // 分页器一直靠右上角\n const navigationX = maxWidth - itemSpacing - navigationBBox.width - navigationBBox.minX; // 理论上不需要减 navigationBBox.minX\n this.pageHeight = maxRowHeight * maxRow;\n this.pageWidth = navigationX;\n each(subGroups, (item) => {\n const bbox = item.getBBox();\n const width = itemWidth || bbox.width;\n if ((widthLimit && widthLimit < currentPoint.x + width + itemSpacing) ||\n shouldWrap(item, currentPoint)) {\n if (pages === 1) {\n widthLimit = currentPoint.x + itemSpacing;\n this.moveElementTo(navigation, {\n x: navigationX,\n y: currentPoint.y + itemHeight / 2 - navigationBBox.height / 2 - navigationBBox.minY,\n });\n }\n pages += 1;\n currentPoint.x = startX;\n currentPoint.y += maxRowHeight;\n }\n this.moveElementTo(item, currentPoint);\n item.getParent().setClip({\n type: 'rect',\n attrs: {\n x: currentPoint.x,\n y: currentPoint.y,\n width: width + itemSpacing,\n height: itemHeight,\n },\n });\n currentPoint.x += width + itemSpacing;\n });\n } else {\n each(subGroups, (item) => {\n const bbox = item.getBBox();\n if (bbox.width > pageWidth) {\n pageWidth = bbox.width;\n }\n });\n maxItemWidth = pageWidth;\n pageWidth += itemSpacing;\n if (maxWidth) {\n // maxWidth 限制加上\n pageWidth = Math.min(maxWidth, pageWidth);\n maxItemWidth = Math.min(maxWidth, maxItemWidth);\n }\n this.pageWidth = pageWidth;\n this.pageHeight = maxHeight - Math.max(navigationBBox.height, itemHeight + itemMarginBottom);\n const cntPerPage = Math.floor(this.pageHeight / (itemHeight + itemMarginBottom));\n each(subGroups, (item, index) => {\n if (index !== 0 && index % cntPerPage === 0) {\n pages += 1;\n currentPoint.x += pageWidth;\n currentPoint.y = startY;\n }\n this.moveElementTo(item, currentPoint);\n item.getParent().setClip({\n type: 'rect',\n attrs: {\n x: currentPoint.x,\n y: currentPoint.y,\n width: pageWidth,\n height: itemHeight,\n },\n });\n currentPoint.y += itemHeight + itemMarginBottom;\n });\n this.totalPagesCnt = pages;\n this.moveElementTo(navigation, {\n x: startX + maxItemWidth / 2 - navigationBBox.width / 2 - navigationBBox.minX,\n y: maxHeight - navigationBBox.height - navigationBBox.minY,\n });\n }\n\n if (this.pageHeight && this.pageWidth) {\n // 为了使固定的 clip 生效,clip 设置在 itemContainerGroup 上,itemGroup 需要在翻页时会设置 matrix\n itemGroup.getParent().setClip({\n type: 'rect',\n attrs: {\n x: this.startX,\n y: this.startY,\n width: this.pageWidth,\n height: this.pageHeight,\n },\n });\n }\n // 重新计算 totalPagesCnt\n if (layout === 'horizontal' && this.get('maxRow')) {\n this.totalPagesCnt = Math.ceil(pages / this.get('maxRow'));\n } else {\n this.totalPagesCnt = pages;\n }\n if (this.currentPageIndex > this.totalPagesCnt) {\n this.currentPageIndex = 1;\n }\n this.updateNavigation(navigation);\n // update initial matrix\n itemGroup.attr('matrix', this.getCurrentNavigationMatrix());\n }\n\n /**\n * 绘制分页器\n */\n private drawNavigation(\n group: IGroup,\n layout: 'horizontal' | 'vertical',\n text: string,\n styleCfg?: LegendPageNavigatorCfg\n ) {\n const currentPoint = { x: 0, y: 0 };\n const subGroup = this.addGroup(group, {\n id: this.getElementId('navigation-group'),\n name: 'legend-navigation',\n });\n const { size = 12, ...arrowStyle } = get(styleCfg.marker, 'style', {});\n const leftArrow = this.drawArrow(\n subGroup,\n currentPoint,\n LEFT_ARROW_NAME,\n layout === 'horizontal' ? 'up' : 'left',\n size,\n arrowStyle\n );\n leftArrow.on('click', this.onNavigationBack);\n const leftArrowBBox = leftArrow.getBBox();\n currentPoint.x += leftArrowBBox.width + 2;\n\n const textShape = this.addShape(subGroup, {\n type: 'text',\n id: this.getElementId('navigation-text'),\n name: 'navigation-text',\n attrs: {\n x: currentPoint.x,\n y: currentPoint.y + size / 2,\n text,\n textBaseline: 'middle',\n ...get(styleCfg.text, 'style'),\n },\n });\n const textBBox = textShape.getBBox();\n currentPoint.x += textBBox.width + 2;\n\n const rightArrow = this.drawArrow(\n subGroup,\n currentPoint,\n RIGHT_ARROW_NAME,\n layout === 'horizontal' ? 'down' : 'right',\n size,\n arrowStyle\n );\n rightArrow.on('click', this.onNavigationAfter);\n\n return subGroup;\n }\n\n private updateNavigation(navigation?: IGroup) {\n const pageNavigator: LegendPageNavigatorCfg = deepMix({}, DEFAULT_PAGE_NAVIGATOR, this.get('pageNavigator'));\n const { fill, opacity, inactiveFill, inactiveOpacity } = pageNavigator.marker.style;\n\n const text = `${this.currentPageIndex}/${this.totalPagesCnt}`;\n const textShape = navigation ? navigation.getChildren()[1] : this.getElementByLocalId('navigation-text');\n const leftArrow = navigation\n ? navigation.findById(this.getElementId(LEFT_ARROW_NAME))\n : this.getElementByLocalId(LEFT_ARROW_NAME);\n const rightArrow = navigation\n ? navigation.findById(this.getElementId(RIGHT_ARROW_NAME))\n : this.getElementByLocalId(RIGHT_ARROW_NAME);\n textShape.attr('text', text);\n // 更新 left-arrow marker\n leftArrow.attr('opacity', this.currentPageIndex === 1 ? inactiveOpacity : opacity);\n leftArrow.attr('fill', this.currentPageIndex === 1 ? inactiveFill : fill);\n leftArrow.attr('cursor', this.currentPageIndex === 1 ? 'not-allowed' : 'pointer');\n // 更新 right-arrow marker\n rightArrow.attr('opacity', this.currentPageIndex === this.totalPagesCnt ? inactiveOpacity : opacity);\n rightArrow.attr('fill', this.currentPageIndex === this.totalPagesCnt ? inactiveFill : fill);\n rightArrow.attr('cursor', this.currentPageIndex === this.totalPagesCnt ? 'not-allowed' : 'pointer');\n // 更新位置\n let cursorX = leftArrow.getBBox().maxX + 2;\n textShape.attr('x', cursorX);\n cursorX += textShape.getBBox().width + 2;\n this.updateArrowPath(rightArrow, { x: cursorX, y: 0 });\n\n }\n\n private drawArrow(\n group: IGroup,\n currentPoint: { x: number; y: number },\n name: string,\n direction: 'left' | 'right' | 'up' | 'down',\n size: number,\n style?: LegendPageNavigatorCfg['marker']['style']\n ) {\n const { x, y } = currentPoint;\n const shape = this.addShape(group, {\n type: 'path',\n id: this.getElementId(name),\n name,\n attrs: {\n size,\n direction,\n path: [['M', x + size / 2, y], ['L', x, y + size], ['L', x + size, y + size], ['Z']],\n cursor: 'pointer',\n ...style,\n },\n });\n shape.attr('matrix', getMatrixByAngle({ x: x + size / 2, y: y + size / 2 }, ROTATE_MAP[direction]));\n\n return shape;\n }\n\n /**\n * 更新分页器 arrow 组件\n */\n private updateArrowPath(arrow: IShape, point: { x: number; y: number }): void {\n const { x, y } = point;\n const { size, direction } = arrow.attr();\n let matrix = getMatrixByAngle({ x: x + size / 2, y: y + size / 2 }, ROTATE_MAP[direction]);\n arrow.attr('path', [['M', x + size / 2, y], ['L', x, y + size], ['L', x + size, y + size], ['Z']]);\n arrow.attr('matrix', matrix);\n }\n\n private getCurrentNavigationMatrix() {\n const { currentPageIndex, pageWidth, pageHeight } = this;\n const layout = this.get('layout');\n const translate =\n layout === 'horizontal'\n ? {\n x: 0,\n y: pageHeight * (1 - currentPageIndex),\n }\n : {\n x: pageWidth * (1 - currentPageIndex),\n y: 0,\n };\n\n return getMatrixByTranslate(translate);\n }\n\n private onNavigationBack = () => {\n const itemGroup = this.getElementByLocalId('item-group');\n if (this.currentPageIndex > 1) {\n this.currentPageIndex -= 1;\n this.updateNavigation();\n const matrix = this.getCurrentNavigationMatrix();\n if (this.get('animate')) {\n itemGroup.animate(\n {\n matrix,\n },\n 100\n );\n } else {\n itemGroup.attr({ matrix });\n }\n }\n };\n\n private onNavigationAfter = () => {\n const itemGroup = this.getElementByLocalId('item-group');\n if (this.currentPageIndex < this.totalPagesCnt) {\n this.currentPageIndex += 1;\n this.updateNavigation();\n const matrix = this.getCurrentNavigationMatrix();\n if (this.get('animate')) {\n itemGroup.animate(\n {\n matrix,\n },\n 100\n );\n } else {\n itemGroup.attr({ matrix });\n }\n }\n };\n\n // 附加状态对应的样式\n private applyItemStates(item: ListItem, subGroup: IGroup) {\n const states = this.getItemStates(item);\n const hasStates = states.length > 0;\n if (hasStates) {\n const children = subGroup.getChildren();\n const itemStates = this.get('itemStates');\n each(children, (element) => {\n const name = element.get('name');\n const elName = name.split('-')[2]; // marker, name, value\n const statesStyle = getStatesStyle(item, elName, itemStates);\n if (statesStyle) {\n element.attr(statesStyle);\n if (elName === 'marker' && !(element.get('isStroke') && element.get('isFill'))) {\n // 如果 marker 是单填充或者单描边的话,就不要额外添加 stroke 或这 fill 属性,否则会影响 unchecked 后的显示\n if (element.get('isStroke')) {\n element.attr('fill', null);\n }\n if (element.get('isFill')) {\n element.attr('stroke', null);\n }\n }\n }\n });\n }\n }\n\n // 获取 itemWidth 的最终设置\n private getLimitItemWidth() {\n const itemWidth = this.get('itemWidth');\n let maxItemWidth = this.get('maxItemWidth');\n\n if (maxItemWidth) {\n // 设置了最大宽度\n if (itemWidth) {\n maxItemWidth = itemWidth <= maxItemWidth ? itemWidth : maxItemWidth;\n }\n } else if (itemWidth) {\n maxItemWidth = itemWidth;\n }\n\n return maxItemWidth;\n }\n}\n\nexport default Category;\n","import { IElement, IGroup } from '@antv/g-base';\nimport { clone, isFunction, mix, upperFirst } from '@antv/util';\nimport { ISlider } from '../interfaces';\nimport { BBox, ContinueLegendCfg } from '../types';\nimport Theme from '../util/theme';\nimport { getValueByPercent } from '../util/util';\nimport LegendBase from './base';\nconst HANDLER_HEIGHT_RATIO = 1.4;\nconst HANDLER_TRIANGLE_RATIO = 0.4;\n\nclass ContinueLegend extends LegendBase implements ISlider {\n public getDefaultCfg() {\n const cfg = super.getDefaultCfg();\n return {\n ...cfg,\n type: 'continue',\n min: 0,\n max: 100,\n value: null,\n colors: [],\n track: {},\n rail: {},\n label: {},\n handler: {},\n slidable: true,\n tip: null,\n step: null,\n maxWidth: null,\n maxHeight: null,\n defaultCfg: {\n label: {\n align: 'rail',\n spacing: 5, // 文本和 rail 的间距\n formatter: null,\n style: {\n fontSize: 12,\n fill: Theme.textColor,\n textBaseline: 'middle',\n fontFamily: Theme.fontFamily,\n },\n },\n handler: {\n size: 10, // handler 的默认宽度\n style: {\n fill: '#fff',\n stroke: '#333',\n },\n },\n track: {},\n rail: {\n type: 'color',\n size: 20,\n defaultLength: 100,\n style: {\n fill: '#DCDEE2',\n },\n },\n title: {\n spacing: 5,\n style: {\n fill: Theme.textColor,\n fontSize: 12,\n textAlign: 'start',\n textBaseline: 'top',\n },\n },\n },\n };\n }\n\n public isSlider() {\n return true;\n }\n\n // 实现 IList 接口\n public getValue() {\n return this.getCurrentValue();\n }\n\n public getRange() {\n return {\n min: this.get('min'),\n max: this.get('max'),\n };\n }\n\n // 改变 range\n public setRange(min, max) {\n this.update({\n min,\n max,\n });\n }\n\n public setValue(value: number[]) {\n const originValue = this.getValue();\n this.set('value', value);\n const group = this.get('group');\n this.resetTrackClip();\n if (this.get('slidable')) {\n this.resetHandlers(group);\n }\n this.delegateEmit('valuechanged', {\n originValue,\n value,\n });\n }\n\n protected initEvent() {\n const group = this.get('group');\n this.bindSliderEvent(group);\n this.bindRailEvent(group);\n this.bindTrackEvent(group);\n }\n\n protected drawLegendContent(group: IGroup) {\n this.drawRail(group);\n this.drawLabels(group);\n this.fixedElements(group); // 调整各个图形位置,适应宽高的限制\n this.resetTrack(group);\n this.resetTrackClip(group);\n if (this.get('slidable')) {\n this.resetHandlers(group);\n }\n }\n\n private bindSliderEvent(group) {\n this.bindHandlersEvent(group);\n }\n\n private bindHandlersEvent(group) {\n group.on('legend-handler-min:drag', (ev) => {\n const minValue = this.getValueByCanvasPoint(ev.x, ev.y);\n const currentValue = this.getCurrentValue();\n let maxValue = currentValue[1];\n if (maxValue < minValue) {\n // 如果小于最小值,则调整最小值\n maxValue = minValue;\n }\n this.setValue([minValue, maxValue]);\n });\n group.on('legend-handler-max:drag', (ev) => {\n const maxValue = this.getValueByCanvasPoint(ev.x, ev.y);\n const currentValue = this.getCurrentValue();\n let minValue = currentValue[0];\n if (minValue > maxValue) {\n // 如果小于最小值,则调整最小值\n minValue = maxValue;\n }\n this.setValue([minValue, maxValue]);\n });\n }\n\n private bindRailEvent(group) {}\n\n private bindTrackEvent(group) {\n let prePoint = null;\n group.on('legend-track:dragstart', (ev) => {\n prePoint = {\n x: ev.x,\n y: ev.y,\n };\n });\n group.on('legend-track:drag', (ev) => {\n if (!prePoint) {\n return;\n }\n const preValue = this.getValueByCanvasPoint(prePoint.x, prePoint.y);\n const curValue = this.getValueByCanvasPoint(ev.x, ev.y);\n const currentValue = this.getCurrentValue();\n const curDiff = currentValue[1] - currentValue[0];\n const range = this.getRange();\n const dValue = curValue - preValue;\n if (dValue < 0) {\n // 减小, 同时未出边界\n if (currentValue[0] + dValue > range.min) {\n this.setValue([currentValue[0] + dValue, currentValue[1] + dValue]);\n } else {\n this.setValue([range.min, range.min + curDiff]);\n }\n // && ||\n } else if (dValue > 0) {\n if (dValue > 0 && currentValue[1] + dValue < range.max) {\n this.setValue([currentValue[0] + dValue, currentValue[1] + dValue]);\n } else {\n this.setValue([range.max - curDiff, range.max]);\n }\n }\n prePoint = {\n x: ev.x,\n y: ev.y,\n };\n });\n group.on('legend-track:dragend', (ev) => {\n prePoint = null;\n });\n }\n\n private drawLabels(group: IGroup) {\n this.drawLabel('min', group);\n this.drawLabel('max', group);\n }\n\n private drawLabel(name, group: IGroup) {\n const labelCfg = this.get('label');\n const style = labelCfg.style;\n const labelAlign = labelCfg.align;\n const labelFormatter = labelCfg.formatter;\n const value = this.get(name);\n const alignAttrs = this.getLabelAlignAttrs(name, labelAlign);\n const localId = `label-${name}`;\n this.addShape(group, {\n type: 'text',\n id: this.getElementId(localId),\n name: `legend-label-${name}`,\n attrs: {\n x: 0,\n y: 0,\n text: isFunction(labelFormatter) ? labelFormatter(value) : value,\n ...style,\n ...alignAttrs,\n },\n });\n }\n\n // 获取文本的对齐方式,为了自适应真实操碎了心\n private getLabelAlignAttrs(name, align) {\n const isVertical = this.isVertical();\n let textAlign = 'center';\n let textBaseline = 'middle';\n if (isVertical) {\n // 垂直布局的所有的文本都左对齐\n textAlign = 'start';\n if (align !== 'rail') {\n if (name === 'min') {\n textBaseline = 'top';\n } else {\n textBaseline = 'bottom';\n }\n } else {\n textBaseline = 'top';\n }\n } else {\n if (align !== 'rail') {\n textBaseline = 'top';\n if (name === 'min') {\n textAlign = 'start';\n } else {\n textAlign = 'end';\n }\n } else {\n textAlign = 'start';\n textBaseline = 'middle';\n }\n }\n return {\n textAlign,\n textBaseline,\n };\n }\n\n private getRailPath(x: number, y: number, w?: number, h?: number) {\n const railCfg = this.get('rail');\n const { size, defaultLength, type } = railCfg;\n const isVertical = this.isVertical();\n const length = defaultLength;\n let width = w;\n let height = h;\n if (!width) {\n width = isVertical ? size : length;\n }\n if (!height) {\n height = isVertical ? length : size;\n }\n const path = [];\n if (type === 'color') {\n path.push(['M', x, y]);\n path.push(['L', x + width, y]);\n path.push(['L', x + width, y + height]);\n path.push(['L', x, y + height]);\n path.push(['Z']);\n } else {\n path.push(['M', x + width, y]);\n path.push(['L', x + width, y + height]);\n path.push(['L', x, y + height]);\n path.push(['Z']);\n }\n return path;\n }\n\n private drawRail(group: IGroup) {\n const railCfg = this.get('rail');\n const style = railCfg.style;\n this.addShape(group, {\n type: 'path',\n id: this.getElementId('rail'),\n name: 'legend-rail',\n attrs: {\n path: this.getRailPath(0, 0),\n ...style,\n },\n });\n }\n\n // 将传入的颜色转换成渐变色\n private getTrackColor(colors) {\n const count = colors.length;\n if (!count) {\n return null;\n }\n if (count === 1) {\n return colors[0];\n }\n let color; // 最终形态 l(0) 0:colors[0] 0.5:colors[1] 1:colors[2];\n if (this.isVertical()) {\n // 根据方向设置渐变方向\n color = 'l(90)';\n } else {\n color = 'l(0)';\n }\n for (let i = 0; i < count; i++) {\n const percent = i / (count - 1);\n color += ` ${percent}:${colors[i]}`;\n }\n return color;\n }\n\n private getTrackPath(group?: IGroup) {\n const railShape = this.getRailShape(group);\n const path = railShape.attr('path');\n return clone(path);\n }\n\n private getClipTrackAttrs(group?: IGroup) {\n const value = this.getCurrentValue();\n const [min, max] = value;\n const railBBox = this.getRailBBox(group);\n const startPoint = this.getPointByValue(min, group);\n const endPoint = this.getPointByValue(max, group);\n const isVertical = this.isVertical();\n let x;\n let y;\n let width;\n let height;\n if (isVertical) {\n x = railBBox.minX;\n y = startPoint.y;\n width = railBBox.width;\n height = endPoint.y - startPoint.y;\n } else {\n x = startPoint.x;\n y = railBBox.minY;\n width = endPoint.x - startPoint.x;\n height = railBBox.height;\n }\n return {\n x,\n y,\n width,\n height,\n };\n }\n\n // 获取 track 的属性,由 path 和 颜色构成\n private getTrackAttrs(group?: IGroup) {\n const trackCfg = this.get('track');\n const colors = this.get('colors');\n const path = this.getTrackPath(group);\n return mix(\n {\n path,\n fill: this.getTrackColor(colors),\n },\n trackCfg.style\n );\n }\n\n private resetTrackClip(group?: IGroup) {\n const container = group || (this.get('group') as IGroup);\n const trackId = this.getElementId('track');\n const trackShape = container.findById(trackId);\n const clipShape = trackShape.getClip();\n const attrs = this.getClipTrackAttrs(group);\n if (!clipShape) {\n trackShape.setClip({\n type: 'rect',\n attrs,\n });\n } else {\n clipShape.attr(attrs);\n }\n }\n\n private resetTrack(group: IGroup) {\n const trackId = this.getElementId('track');\n const trackShape = group.findById(trackId);\n const trackAttrs = this.getTrackAttrs(group);\n if (trackShape) {\n trackShape.attr(trackAttrs);\n } else {\n this.addShape(group, {\n type: 'path',\n id: trackId,\n draggable: this.get('slidable'),\n name: 'legend-track',\n attrs: trackAttrs,\n });\n }\n }\n\n private getPointByValue(value, group?: IGroup) {\n const { min, max } = this.getRange();\n const percent = (value - min) / (max - min);\n const bbox = this.getRailBBox(group);\n const isVertcal = this.isVertical();\n const point = { x: 0, y: 0 };\n if (isVertcal) {\n point.x = bbox.minX + bbox.width / 2;\n point.y = getValueByPercent(bbox.minY, bbox.maxY, percent);\n } else {\n point.x = getValueByPercent(bbox.minX, bbox.maxX, percent);\n point.y = bbox.minY + bbox.height / 2;\n }\n return point;\n }\n\n private getRailShape(group?: IGroup) {\n const container = group || (this.get('group') as IGroup);\n return container.findById(this.getElementId('rail'));\n }\n\n // 获取滑轨的宽高信息\n private getRailBBox(group?: IGroup): BBox {\n const railShape = this.getRailShape(group);\n const bbox = railShape.getBBox();\n return bbox;\n }\n\n private getRailCanvasBBox(): BBox {\n const container = this.get('group');\n const railShape = container.findById(this.getElementId('rail'));\n const bbox = railShape.getCanvasBBox();\n return bbox;\n }\n\n // 是否垂直\n private isVertical(): boolean {\n return this.get('layout') === 'vertical';\n }\n\n // 用于交互时\n private getValueByCanvasPoint(x, y) {\n const { min, max } = this.getRange();\n const bbox = this.getRailCanvasBBox(); // 因为 x, y 是画布坐标\n const isVertcal = this.isVertical();\n const step = this.get('step');\n let percent;\n if (isVertcal) {\n // 垂直时计算 y\n percent = (y - bbox.minY) / bbox.height;\n } else {\n // 水平时计算 x\n percent = (x - bbox.minX) / bbox.width;\n }\n let value = getValueByPercent(min, max, percent);\n if (step) {\n const count = Math.round((value - min) / step);\n value = min + count * step; // 移动到最近的\n }\n if (value > max) {\n value = max;\n }\n if (value < min) {\n value = min;\n }\n return value;\n }\n\n // 当前选中的范围\n private getCurrentValue(): number[] {\n const value = this.get('value');\n if (!value) {\n const values = this.get('values');\n if (!values) {\n return [this.get('min'), this.get('max')];\n }\n // 如果没有定义,取最大范围 最小值 为 values 中的最小值, 如果最小值 超过了 定义的最大值 则 做限制 最大值 反之\n return [Math.max(Math.min(...values, this.get('max')), this.get('min')), Math.min(Math.max(...values, this.get('min')), this.get('max'))];\n }\n return value;\n }\n\n // 重置滑块 handler\n private resetHandlers(group: IGroup) {\n const currentValue = this.getCurrentValue();\n const [min, max] = currentValue;\n this.resetHandler(group, 'min', min);\n this.resetHandler(group, 'max', max);\n }\n // 获取滑块的 path\n private getHandlerPath(handlerCfg, point) {\n const isVertical = this.isVertical();\n const path = [];\n const width = handlerCfg.size;\n const { x, y } = point;\n const height = width * HANDLER_HEIGHT_RATIO;\n const halfWidth = width / 2;\n const oneSixthWidth = width / 6;\n if (isVertical) {\n /**\n * 竖直情况下的滑块 handler,左侧顶点是 x,y\n * /----|\n * -- |\n * -- |\n * \\----|\n */\n const triangleX = x + height * HANDLER_TRIANGLE_RATIO;\n path.push(['M', x, y]);\n path.push(['L', triangleX, y + halfWidth]);\n path.push(['L', x + height, y + halfWidth]);\n path.push(['L', x + height, y - halfWidth]);\n path.push(['L', triangleX, y - halfWidth]);\n path.push(['Z']);\n // 绘制两条横线\n path.push(['M', triangleX, y + oneSixthWidth]);\n path.push(['L', x + height - 2, y + oneSixthWidth]);\n path.push(['M', triangleX, y - oneSixthWidth]);\n path.push(['L', x + height - 2, y - oneSixthWidth]);\n } else {\n /**\n * 水平情况下的滑块,上面顶点处是 x,y\n * / \\\n * | | | |\n * | | | |\n * -----\n */\n const triangleY = y + height * HANDLER_TRIANGLE_RATIO;\n path.push(['M', x, y]);\n path.push(['L', x - halfWidth, triangleY]);\n path.push(['L', x - halfWidth, y + height]);\n path.push(['L', x + halfWidth, y + height]);\n path.push(['L', x + halfWidth, triangleY]);\n path.push(['Z']);\n // 绘制两条竖线\n path.push(['M', x - oneSixthWidth, triangleY]);\n path.push(['L', x - oneSixthWidth, y + height - 2]);\n path.push(['M', x + oneSixthWidth, triangleY]);\n path.push(['L', x + oneSixthWidth, y + height - 2]);\n }\n return path;\n }\n\n // 调整 handler 的位置,如果未存在则绘制\n private resetHandler(group: IGroup, name, value) {\n const point = this.getPointByValue(value, group);\n const handlerCfg = this.get('handler');\n const path = this.getHandlerPath(handlerCfg, point);\n const id = this.getElementId(`handler-${name}`);\n const handlerShape = group.findById(id);\n const isVertical = this.isVertical();\n if (handlerShape) {\n handlerShape.attr('path', path);\n } else {\n this.addShape(group, {\n type: 'path',\n name: `legend-handler-${name}`,\n draggable: true, // 可拖拽\n id,\n attrs: {\n path,\n ...handlerCfg.style,\n cursor: isVertical ? 'ns-resize' : 'ew-resize',\n },\n });\n }\n }\n\n // 当设置了 maxWidth, maxHeight 时调整 rail 的宽度,\n // 文本的位置\n private fixedElements(group: IGroup) {\n const railShape = group.findById(this.getElementId('rail'));\n const minLabel = group.findById(this.getElementId('label-min'));\n const maxLabel = group.findById(this.getElementId('label-max'));\n const startPoint = this.getDrawPoint();\n if (this.isVertical()) {\n // 横向布局\n this.fixedVertail(minLabel, maxLabel, railShape, startPoint);\n } else {\n // 水平布局\n this.fixedHorizontal(minLabel, maxLabel, railShape, startPoint);\n }\n }\n\n private fitRailLength(minLabelBBox, maxLabelBBox, railBBox, railShape) {\n const isVertical = this.isVertical();\n const lengthField = isVertical ? 'height' : 'width';\n const labelCfg = this.get('label');\n const labelAlign = labelCfg.align;\n const spacing = labelCfg.spacing;\n const maxLength = this.get(`max${upperFirst(lengthField)}`); // get('maxWidth')\n if (maxLength) {\n const elementsLength =\n labelAlign === 'rail'\n ? railBBox[lengthField] + minLabelBBox[lengthField] + maxLabelBBox[lengthField] + spacing * 2\n : railBBox[lengthField];\n const diff = elementsLength - maxLength;\n if (diff > 0) {\n // 大于限制的长度\n this.changeRailLength(railShape, lengthField, railBBox[lengthField] - diff);\n }\n }\n }\n\n private changeRailLength(railShape, lengthField, length) {\n const bbox = railShape.getBBox();\n let path;\n if (lengthField === 'height') {\n path = this.getRailPath(bbox.x, bbox.y, bbox.width, length);\n } else {\n path = this.getRailPath(bbox.x, bbox.y, length, bbox.height);\n }\n railShape.attr('path', path);\n }\n\n private changeRailPosition(railShape, x, y) {\n const bbox = railShape.getBBox();\n const path = this.getRailPath(x, y, bbox.width, bbox.height);\n railShape.attr('path', path);\n }\n\n private fixedHorizontal(minLabel: IElement, maxLabel: IElement, railShape: IElement, startPoint) {\n const labelCfg = this.get('label');\n const labelAlign = labelCfg.align;\n const spacing = labelCfg.spacing;\n let railBBox = railShape.getBBox();\n const minLabelBBox = minLabel.getBBox();\n const maxLabelBBox = maxLabel.getBBox();\n const railHeight = railBBox.height; // 取 rail 的高度,作为高度\n this.fitRailLength(minLabelBBox, maxLabelBBox, railBBox, railShape);\n railBBox = railShape.getBBox();\n if (labelAlign === 'rail') {\n // 沿着 rail 方向\n minLabel.attr({\n x: startPoint.x,\n y: startPoint.y + railHeight / 2,\n });\n this.changeRailPosition(railShape, startPoint.x + minLabelBBox.width + spacing, startPoint.y);\n maxLabel.attr({\n x: startPoint.x + minLabelBBox.width + railBBox.width + spacing * 2,\n y: startPoint.y + railHeight / 2,\n });\n } else if (labelAlign === 'top') {\n minLabel.attr({\n x: startPoint.x,\n y: startPoint.y,\n });\n maxLabel.attr({\n x: startPoint.x + railBBox.width,\n y: startPoint.y,\n });\n this.changeRailPosition(railShape, startPoint.x, startPoint.y + minLabelBBox.height + spacing);\n } else {\n this.changeRailPosition(railShape, startPoint.x, startPoint.y);\n minLabel.attr({\n x: startPoint.x,\n y: startPoint.y + railBBox.height + spacing,\n });\n maxLabel.attr({\n x: startPoint.x + railBBox.width,\n y: startPoint.y + railBBox.height + spacing,\n });\n }\n }\n\n private fixedVertail(minLabel: IElement, maxLabel: IElement, railShape: IElement, startPoint) {\n const labelCfg = this.get('label');\n const labelAlign = labelCfg.align;\n const spacing = labelCfg.spacing;\n let railBBox = railShape.getBBox();\n const minLabelBBox = minLabel.getBBox();\n const maxLabelBBox = maxLabel.getBBox();\n this.fitRailLength(minLabelBBox, maxLabelBBox, railBBox, railShape);\n railBBox = railShape.getBBox();\n\n if (labelAlign === 'rail') {\n // 沿着 rail 方向\n minLabel.attr({\n x: startPoint.x,\n y: startPoint.y,\n });\n this.changeRailPosition(railShape, startPoint.x, startPoint.y + minLabelBBox.height + spacing);\n maxLabel.attr({\n x: startPoint.x,\n y: startPoint.y + minLabelBBox.height + railBBox.height + spacing * 2,\n });\n } else if (labelAlign === 'right') {\n minLabel.attr({\n x: startPoint.x + railBBox.width + spacing,\n y: startPoint.y,\n });\n this.changeRailPosition(railShape, startPoint.x, startPoint.y);\n maxLabel.attr({\n x: startPoint.x + railBBox.width + spacing,\n y: startPoint.y + railBBox.height,\n });\n } else {\n // left\n const maxLabelWidth = Math.max(minLabelBBox.width, maxLabelBBox.width);\n minLabel.attr({\n x: startPoint.x,\n y: startPoint.y,\n });\n this.changeRailPosition(railShape, startPoint.x + maxLabelWidth + spacing, startPoint.y);\n maxLabel.attr({\n x: startPoint.x,\n y: startPoint.y + railBBox.height,\n });\n }\n }\n}\n\nexport default ContinueLegend;\n","export const CONTAINER_CLASS = 'g2-tooltip';\nexport const TITLE_CLASS = 'g2-tooltip-title';\nexport const LIST_CLASS = 'g2-tooltip-list';\nexport const LIST_ITEM_CLASS = 'g2-tooltip-list-item';\nexport const MARKER_CLASS = 'g2-tooltip-marker';\nexport const VALUE_CLASS = 'g2-tooltip-value';\nexport const NAME_CLASS = 'g2-tooltip-name';\nexport const CROSSHAIR_X = 'g2-tooltip-crosshair-x';\nexport const CROSSHAIR_Y = 'g2-tooltip-crosshair-y';\n","import Theme from '../util/theme';\n\n// tooltip 相关 dom 的 css 类名\nimport * as CssConst from './css-const';\n\nexport default {\n // css style for tooltip\n [`${CssConst.CONTAINER_CLASS}`]: {\n position: 'absolute',\n visibility: 'visible',\n // @2018-07-25 by blue.lb 这里去掉浮动,火狐上存在样式错位\n // whiteSpace: 'nowrap',\n zIndex: 8,\n transition:\n 'visibility 0.2s cubic-bezier(0.23, 1, 0.32, 1), ' +\n 'left 0.4s cubic-bezier(0.23, 1, 0.32, 1), ' +\n 'top 0.4s cubic-bezier(0.23, 1, 0.32, 1)',\n backgroundColor: 'rgba(255, 255, 255, 0.9)',\n boxShadow: '0px 0px 10px #aeaeae',\n borderRadius: '3px',\n color: 'rgb(87, 87, 87)',\n fontSize: '12px',\n fontFamily: Theme.fontFamily,\n lineHeight: '20px',\n padding: '10px 10px 6px 10px',\n },\n [`${CssConst.TITLE_CLASS}`]: {\n marginBottom: '4px',\n },\n [`${CssConst.LIST_CLASS}`]: {\n margin: '0px',\n listStyleType: 'none',\n padding: '0px',\n },\n [`${CssConst.LIST_ITEM_CLASS}`]: {\n listStyleType: 'none',\n marginBottom: '4px',\n },\n [`${CssConst.MARKER_CLASS}`]: {\n width: '8px',\n height: '8px',\n borderRadius: '50%',\n display: 'inline-block',\n marginRight: '8px',\n },\n [`${CssConst.VALUE_CLASS}`]: {\n display: 'inline-block',\n float: 'right',\n marginLeft: '30px',\n },\n [`${CssConst.CROSSHAIR_X}`]: {\n position: 'absolute',\n width: '1px',\n backgroundColor: 'rgba(0, 0, 0, 0.25)',\n },\n [`${CssConst.CROSSHAIR_Y}`]: {\n position: 'absolute',\n height: '1px',\n backgroundColor: 'rgba(0, 0, 0, 0.25)',\n },\n};\n","import colorUtil from '@antv/color-util';\nimport { createDom, modifyCSS } from '@antv/dom-util';\nimport { each, hasKey, isElement, substitute } from '@antv/util';\nimport HtmlComponent from '../abstract/html-component';\nimport { Point, PointLocationCfg } from '../types';\nimport { TooltipCfg } from '../types';\nimport { clearDom, regionToBBox, toPx } from '../util/util';\nimport * as CssConst from './css-const';\nimport TooltipTheme from './html-theme';\n\nimport { ILocation } from '../interfaces';\nimport { getAlignPoint } from '../util/align';\n\nfunction hasOneKey(obj, keys) {\n let result = false;\n each(keys, (key) => {\n if (hasKey(obj, key)) {\n result = true;\n return false;\n }\n });\n return result;\n}\n\nclass Tooltip extends HtmlComponent implements ILocation {\n public getDefaultCfg() {\n const cfg = super.getDefaultCfg();\n return {\n ...cfg,\n name: 'tooltip',\n type: 'html',\n x: 0,\n y: 0,\n items: [],\n customContent: null,\n containerTpl: `
      `,\n itemTpl: `
    • \n \n {name}:\n {value}\n
    • `,\n xCrosshairTpl: `
      `,\n yCrosshairTpl: `
      `,\n title: null,\n showTitle: true,\n /**\n * tooltip 限制的区域\n * @type {Region}\n */\n region: null,\n // crosshair 的限制区域\n crosshairsRegion: null,\n containerClassName: CssConst.CONTAINER_CLASS,\n // x, y, xy\n crosshairs: null,\n offset: 10,\n position: 'right',\n domStyles: null,\n defaultStyles: TooltipTheme,\n };\n }\n\n // tooltip 渲染时,渲染 title,items 和 corosshairs\n public render() {\n if (this.get('customContent')) {\n this.renderCustomContent();\n } else {\n this.resetTitle();\n this.renderItems();\n }\n // 绘制完成后,再定位\n this.resetPosition();\n }\n\n // 复写清空函数,因为有模板的存在,所以默认的写法不合适\n public clear() {\n // 由于 crosshair 没有在 container 内,所以需要单独清理\n this.clearCrosshairs();\n this.setTitle(''); // 清空标题\n this.clearItemDoms();\n }\n\n public show() {\n const container = this.getContainer();\n if (!container || this.destroyed) {\n // 防止容器不存在或者被销毁时报错\n return;\n }\n this.set('visible', true);\n modifyCSS(container, {\n visibility: 'visible',\n });\n this.setCrossHairsVisible(true);\n }\n\n public hide() {\n const container = this.getContainer();\n // relative: https://github.com/antvis/g2/issues/1221\n if (!container || this.destroyed) {\n return;\n }\n this.set('visible', false);\n modifyCSS(container, {\n visibility: 'hidden',\n });\n this.setCrossHairsVisible(false);\n }\n\n // 实现 IPointLocation 的接口\n public getLocation() {\n return { x: this.get('x'), y: this.get('y') };\n }\n // 实现 IPointLocation 的接口\n public setLocation(point: Point) {\n this.set('x', point.x);\n this.set('y', point.y);\n this.resetPosition();\n }\n\n public setCrossHairsVisible(visible) {\n const display = visible ? '' : 'none';\n const xCrosshairDom = this.get('xCrosshairDom');\n const yCrosshairDom = this.get('yCrosshairDom');\n xCrosshairDom &&\n modifyCSS(xCrosshairDom, {\n display,\n });\n yCrosshairDom &&\n modifyCSS(yCrosshairDom, {\n display,\n });\n }\n\n // 如有 customContent 则根据 customContent 设置 container\n protected initContainer() {\n super.initContainer();\n if (this.get('customContent')) {\n if (this.get('container')) {\n this.get('container').remove();\n }\n const container = this.getHtmlContentNode();\n this.get('parent').appendChild(container);\n this.set('container', container);\n this.resetStyles();\n this.applyStyles();\n }\n }\n\n // 更新属性的同时,可能会引起 DOM 的变化,这里对可能引起 DOM 变化的场景做了处理\n protected updateInner(cfg: Partial) {\n if (this.get('customContent')) {\n this.renderCustomContent();\n } else {\n // 更新标题\n if (hasOneKey(cfg, ['title', 'showTitle'])) {\n this.resetTitle();\n }\n // 更新内容\n if (hasKey(cfg, 'items')) {\n this.renderItems();\n }\n }\n super.updateInner(cfg);\n }\n\n protected initDom() {\n this.cacheDoms();\n }\n // 清理 DOM\n protected removeDom() {\n super.removeDom();\n this.clearCrosshairs();\n }\n // 调整位置\n protected resetPosition() {\n const x = this.get('x');\n const y = this.get('y');\n const offset = this.get('offset');\n const { offsetX, offsetY } = this.getOffset();\n const position = this.get('position');\n const region = this.get('region');\n const container = this.getContainer();\n const bbox = this.getBBox();\n const { width, height } = bbox;\n let limitBox;\n if (region) {\n // 不限制位置\n limitBox = regionToBBox(region);\n }\n const point = getAlignPoint(x, y, offset, width, height, position, limitBox);\n modifyCSS(container, {\n left: toPx(point.x + offsetX),\n top: toPx(point.y + offsetY),\n });\n this.resetCrosshairs();\n }\n\n // 根据 customContent 渲染\n private renderCustomContent() {\n const node = this.getHtmlContentNode();\n const parent: HTMLElement = this.get('parent');\n const curContainer: HTMLElement = this.get('container');\n if (curContainer && curContainer.parentNode === parent) {\n parent.replaceChild(node, curContainer);\n } else {\n parent.appendChild(node);\n }\n this.set('container', node);\n this.resetStyles();\n this.applyStyles();\n }\n\n private getHtmlContentNode() {\n let node: HTMLElement | undefined;\n const customContent = this.get('customContent');\n if (customContent) {\n const elem = customContent(this.get('title'), this.get('items'));\n if (isElement(elem)) {\n node = elem as HTMLElement;\n } else {\n node = createDom(elem);\n }\n }\n return node;\n }\n\n // 缓存模板设置的各种 DOM\n private cacheDoms() {\n const container = this.getContainer();\n const titleDom = container.getElementsByClassName(CssConst.TITLE_CLASS)[0];\n const listDom = container.getElementsByClassName(CssConst.LIST_CLASS)[0];\n this.set('titleDom', titleDom);\n this.set('listDom', listDom);\n }\n\n // 重置 title\n private resetTitle() {\n const title = this.get('title');\n const showTitle = this.get('showTitle');\n if (showTitle && title) {\n this.setTitle(title);\n } else {\n this.setTitle('');\n }\n }\n // 设置 title 文本\n private setTitle(text) {\n const titleDom = this.get('titleDom');\n if (titleDom) {\n titleDom.innerText = text;\n }\n }\n // 终止 crosshair\n private resetCrosshairs() {\n const crosshairsRegion = this.get('crosshairsRegion');\n const crosshairs = this.get('crosshairs');\n if (!crosshairsRegion || !crosshairs) {\n // 不显示 crosshair,都移除,没有设定 region 也都移除掉\n this.clearCrosshairs();\n } else {\n const crosshairBox = regionToBBox(crosshairsRegion);\n const xCrosshairDom = this.get('xCrosshairDom');\n const yCrosshairDom = this.get('yCrosshairDom');\n if (crosshairs === 'x') {\n this.resetCrosshair('x', crosshairBox);\n // 仅显示 x 的 crosshair,y 移除\n if (yCrosshairDom) {\n yCrosshairDom.remove();\n this.set('yCrosshairDom', null);\n }\n } else if (crosshairs === 'y') {\n this.resetCrosshair('y', crosshairBox);\n // 仅显示 y 的 crosshair,x 移除\n if (xCrosshairDom) {\n xCrosshairDom.remove();\n this.set('xCrosshairDom', null);\n }\n } else {\n this.resetCrosshair('x', crosshairBox);\n this.resetCrosshair('y', crosshairBox);\n }\n this.setCrossHairsVisible(this.get('visible'));\n }\n }\n // 设定 crosshair 的位置,需要区分 x,y\n private resetCrosshair(name: string, bbox) {\n const croshairDom = this.checkCrosshair(name);\n const value = this.get(name);\n if (name === 'x') {\n modifyCSS(croshairDom, {\n left: toPx(value),\n top: toPx(bbox.y),\n height: toPx(bbox.height),\n });\n } else {\n modifyCSS(croshairDom, {\n top: toPx(value),\n left: toPx(bbox.x),\n width: toPx(bbox.width),\n });\n }\n }\n\n // 如果 crosshair 对应的 dom 不存在,则创建\n private checkCrosshair(name: string) {\n const domName = `${name}CrosshairDom`;\n const tplName = `${name}CrosshairTpl`;\n const constName = `CROSSHAIR_${name.toUpperCase()}`;\n const styleName = CssConst[constName];\n let croshairDom = this.get(domName);\n const parent = this.get('parent') as HTMLElement;\n if (!croshairDom) {\n croshairDom = createDom(this.get(tplName)); // 创建\n this.applyStyle(styleName, croshairDom); // 设置初始样式\n parent.appendChild(croshairDom); // 添加到跟 tooltip 同级的目录下\n this.set(domName, croshairDom);\n }\n return croshairDom;\n }\n\n private renderItems() {\n this.clearItemDoms();\n const items = this.get('items');\n const itemTpl = this.get('itemTpl');\n const listDom = this.get('listDom');\n if (listDom) {\n each(items, (item) => {\n const color = colorUtil.toCSSGradient(item.color);\n const substituteObj = {\n ...item,\n color,\n };\n\n const domStr = substitute(itemTpl, substituteObj);\n const itemDom = createDom(domStr);\n listDom.appendChild(itemDom);\n });\n this.applyChildrenStyles(listDom, this.get('domStyles'));\n }\n }\n\n private clearItemDoms() {\n if (this.get('listDom')) {\n clearDom(this.get('listDom'));\n }\n }\n\n private clearCrosshairs() {\n const xCrosshairDom = this.get('xCrosshairDom');\n const yCrosshairDom = this.get('yCrosshairDom');\n xCrosshairDom && xCrosshairDom.remove();\n yCrosshairDom && yCrosshairDom.remove();\n this.set('xCrosshairDom', null);\n this.set('yCrosshairDom', null);\n }\n}\n\nexport default Tooltip;\n","import { BBox, Point } from '../types';\n\ninterface OutSides {\n left: boolean;\n right: boolean;\n top: boolean;\n bottom: boolean;\n}\n\n// 检测各边是否超出\nexport function getOutSides(x: number, y: number, width: number, height: number, limitBox: BBox): OutSides {\n const hits = {\n left: x < limitBox.x,\n right: x + width > limitBox.x + limitBox.width,\n top: y < limitBox.y,\n bottom: y + height > limitBox.y + limitBox.height,\n };\n return hits;\n}\n\nexport function getPointByPosition(\n x: number,\n y: number,\n offset: number,\n width: number,\n height: number,\n position: string\n): Point {\n let px = x;\n let py = y;\n switch (position) {\n case 'left': // left center\n px = x - width - offset;\n py = y - height / 2;\n break;\n case 'right':\n px = x + offset;\n py = y - height / 2;\n break;\n case 'top':\n px = x - width / 2;\n py = y - height - offset;\n break;\n case 'bottom':\n // bottom\n px = x - width / 2;\n py = y + offset;\n break;\n default:\n // auto, 在 top-right\n px = x + offset;\n py = y - height - offset;\n break;\n }\n\n return {\n x: px,\n y: py,\n };\n}\n\nexport function getAlignPoint(\n x: number,\n y: number,\n offset: number,\n width: number,\n height: number,\n position: string,\n limitBox?: BBox\n): Point {\n const point = getPointByPosition(x, y, offset, width, height, position);\n if (limitBox) {\n const outSides = getOutSides(point.x, point.y, width, height, limitBox);\n if (position === 'auto') {\n // 如果是 auto,默认 tooltip 在右上角,仅需要判定右侧和上测冲突即可\n if (outSides.right) {\n point.x = Math.max(0, x - width - offset);\n }\n if (outSides.top) {\n point.y = Math.max(0, y - height - offset);\n }\n } else if (position === 'top' || position === 'bottom') {\n if (outSides.left) {\n // 左侧躲避\n point.x = limitBox.x;\n }\n if (outSides.right) {\n // 右侧躲避\n point.x = limitBox.x + limitBox.width - width;\n }\n if (position === 'top' && outSides.top) {\n // 如果上面对齐检测上面,不检测下面\n point.y = y + offset;\n }\n if (position === 'bottom' && outSides.bottom) {\n point.y = y - height - offset;\n }\n } else {\n // 检测左右位置\n if (outSides.top) {\n point.y = limitBox.y;\n }\n if (outSides.bottom) {\n point.y = limitBox.y + limitBox.height - height;\n }\n if (position === 'left' && outSides.left) {\n point.x = x + offset;\n }\n if (position === 'right' && outSides.right) {\n point.x = x - width - offset;\n }\n }\n }\n return point;\n}\n","export const BACKGROUND_STYLE = {\n // fill: 'red',\n opacity: 0,\n};\n\nexport const LINE_STYLE = {\n stroke: '#C5C5C5',\n strokeOpacity: 0.85,\n};\n\nexport const AREA_STYLE = {\n fill: '#CACED4',\n opacity: 0.85,\n};\n","import { vec2 } from '@antv/matrix-util';\nimport type { PathCommand } from './types';\n\ntype Pos = [number, number];\n\nfunction smoothBezier(points: Pos[], smooth: number, isLoop: boolean, constraint: Pos[]) {\n const cps: vec2[] = [];\n const hasConstraint = !!constraint;\n\n let prevPoint: Pos;\n let nextPoint: Pos;\n let min: vec2;\n let max: vec2;\n let nextCp0: vec2;\n let cp1: vec2;\n let cp0: vec2;\n\n if (hasConstraint) {\n [ min, max ] = constraint;\n for (let i = 0, l = points.length; i < l; i += 1) {\n const point = points[i];\n min = vec2.min([ 0, 0 ], min, point);\n max = vec2.max([ 0, 0 ], max, point);\n }\n }\n\n for (let i = 0, len = points.length; i < len; i += 1) {\n const point = points[i];\n if (i === 0 && !isLoop) {\n cp0 = point;\n } else if (i === len - 1 && !isLoop) {\n cp1 = point;\n cps.push(cp0);\n cps.push(cp1);\n } else {\n const prevIdx = [ i ? i - 1 : len - 1, i - 1 ][isLoop ? 0 : 1];\n prevPoint = points[prevIdx];\n nextPoint = points[isLoop ? (i + 1) % len : i + 1];\n\n let v: vec2 = [ 0, 0 ];\n v = vec2.sub(v, nextPoint, prevPoint);\n v = vec2.scale(v, v, smooth);\n\n let d0 = vec2.distance(point, prevPoint);\n let d1 = vec2.distance(point, nextPoint);\n\n const sum = d0 + d1;\n if (sum !== 0) {\n d0 /= sum;\n d1 /= sum;\n }\n\n let v1 = vec2.scale([ 0, 0 ], v, -d0);\n let v2 = vec2.scale([ 0, 0 ], v, d1);\n\n cp1 = vec2.add([ 0, 0 ], point, v1);\n nextCp0 = vec2.add([ 0, 0 ], point, v2);\n\n // 下一个控制点必须在这个点和下一个点之间\n nextCp0 = vec2.min([ 0, 0 ], nextCp0, vec2.max([ 0, 0 ], nextPoint, point));\n nextCp0 = vec2.max([ 0, 0 ], nextCp0, vec2.min([ 0, 0 ], nextPoint, point));\n\n // 重新计算 cp1 的值\n v1 = vec2.sub([ 0, 0 ], nextCp0, point);\n v1 = vec2.scale([ 0, 0 ], v1, -d0 / d1);\n cp1 = vec2.add([ 0, 0 ], point, v1);\n\n // 上一个控制点必须要在上一个点和这一个点之间\n cp1 = vec2.min([ 0, 0 ], cp1, vec2.max([ 0, 0 ], prevPoint, point));\n cp1 = vec2.max([ 0, 0 ], cp1, vec2.min([ 0, 0 ], prevPoint, point));\n\n // 重新计算 nextCp0 的值\n v2 = vec2.sub([ 0, 0 ], point, cp1);\n v2 = vec2.scale([ 0, 0 ], v2, d1 / d0);\n nextCp0 = vec2.add([ 0, 0 ], point, v2);\n\n if (hasConstraint) {\n cp1 = vec2.max([ 0, 0 ], cp1, min);\n cp1 = vec2.min([ 0, 0 ], cp1, max);\n nextCp0 = vec2.max([ 0, 0 ], nextCp0, min);\n nextCp0 = vec2.min([ 0, 0 ], nextCp0, max);\n }\n\n cps.push(cp0);\n cps.push(cp1);\n cp0 = nextCp0;\n }\n }\n\n if (isLoop) {\n cps.push(cps.shift());\n }\n\n return cps;\n}\n\n/**\n * create bezier spline from catmull rom spline\n * @param {Array} crp Catmull Rom Points\n * @param {boolean} z Spline is loop\n * @param {Array} constraint Constraint\n */\nfunction catmullRom2Bezier(\n crp: number[],\n z: boolean = false,\n constraint: Pos[] = [\n [ 0, 0 ],\n [ 1, 1 ],\n ]\n): PathCommand[] {\n const isLoop = !!z;\n const pointList: Pos[] = [];\n for (let i = 0, l = crp.length; i < l; i += 2) {\n pointList.push([ crp[i], crp[i + 1] ]);\n }\n\n const controlPointList = smoothBezier(pointList, 0.4, isLoop, constraint);\n const len = pointList.length;\n const d1: PathCommand[] = [];\n\n let cp1: vec2;\n let cp2: vec2;\n let p: Pos;\n\n for (let i = 0; i < len - 1; i += 1) {\n cp1 = controlPointList[i * 2];\n cp2 = controlPointList[i * 2 + 1];\n p = pointList[i + 1];\n\n d1.push([ 'C', cp1[0], cp1[1], cp2[0], cp2[1], p[0], p[1] ]);\n }\n\n if (isLoop) {\n cp1 = controlPointList[len];\n cp2 = controlPointList[len + 1];\n [ p ] = pointList;\n\n d1.push([ 'C', cp1[0], cp1[1], cp2[0], cp2[1], p[0], p[1] ]);\n }\n return d1;\n}\n\nexport default catmullRom2Bezier;\n","import { isArray } from '@antv/util';\n\nconst SPACES = '\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029';\nconst PATH_COMMAND = new RegExp('([a-z])[' + SPACES + ',]*((-?\\\\d*\\\\.?\\\\d*(?:e[\\\\-+]?\\\\d+)?[' + SPACES + ']*,?[' + SPACES + ']*)+)', 'ig');\nconst PATH_VALUES = new RegExp('(-?\\\\d*\\\\.?\\\\d*(?:e[\\\\-+]?\\\\d+)?)[' + SPACES + ']*,?[' + SPACES + ']*', 'ig');\n\n// Parses given path string into an array of arrays of path segments\nexport default function parsePathString(pathString: string) {\n if (!pathString) {\n return null;\n }\n\n if (isArray(pathString)) {\n return pathString;\n }\n const paramCounts = {\n a: 7,\n c: 6,\n o: 2,\n h: 1,\n l: 2,\n m: 2,\n r: 4,\n q: 4,\n s: 4,\n t: 2,\n v: 1,\n u: 3,\n z: 0,\n };\n const data = [];\n\n String(pathString).replace(PATH_COMMAND, function (a, b, c) {\n const params = [];\n let name = b.toLowerCase();\n c.replace(PATH_VALUES, function (a, b) {\n b && params.push(+b);\n });\n if (name === 'm' && params.length > 2) {\n data.push([ b ].concat(params.splice(0, 2)));\n name = 'l';\n b = b === 'm' ? 'l' : 'L';\n }\n if (name === 'o' && params.length === 1) {\n data.push([ b, params[0] ]);\n }\n if (name === 'r') {\n data.push([ b ].concat(params));\n } else {\n while (params.length >= paramCounts[name]) {\n data.push([ b ].concat(params.splice(0, paramCounts[name])));\n if (!paramCounts[name]) {\n break;\n }\n }\n }\n return '';\n });\n\n return data;\n}\n","const TAU = Math.PI * 2\n\nconst mapToEllipse = ({ x, y }: { x: number, y: number }, rx: number, ry: number, cosphi: number, sinphi: number, centerx: number, centery: number) => {\n x *= rx\n y *= ry\n\n const xp = cosphi * x - sinphi * y\n const yp = sinphi * x + cosphi * y\n\n return {\n x: xp + centerx,\n y: yp + centery\n }\n}\n\nconst approxUnitArc = (ang1: number, ang2: number) => {\n // If 90 degree circular arc, use a constant\n // as derived from http://spencermortensen.com/articles/bezier-circle\n const a = ang2 === 1.5707963267948966\n ? 0.551915024494\n : ang2 === -1.5707963267948966\n ? -0.551915024494\n : 4 / 3 * Math.tan(ang2 / 4)\n\n const x1 = Math.cos(ang1)\n const y1 = Math.sin(ang1)\n const x2 = Math.cos(ang1 + ang2)\n const y2 = Math.sin(ang1 + ang2)\n\n return [\n {\n x: x1 - y1 * a,\n y: y1 + x1 * a\n },\n {\n x: x2 + y2 * a,\n y: y2 - x2 * a\n },\n {\n x: x2,\n y: y2\n }\n ]\n}\n\nconst vectorAngle = (ux: number, uy: number, vx: number, vy: number) => {\n const sign = (ux * vy - uy * vx < 0) ? -1 : 1\n\n let dot = ux * vx + uy * vy\n\n if (dot > 1) {\n dot = 1\n }\n\n if (dot < -1) {\n dot = -1\n }\n\n return sign * Math.acos(dot)\n}\n\nconst getArcCenter = (\n px: any,\n py: any,\n cx: any,\n cy: any,\n rx: number,\n ry: number,\n largeArcFlag: number,\n sweepFlag: number,\n sinphi: number,\n cosphi: number,\n pxp: number,\n pyp: number\n) => {\n const rxsq = Math.pow(rx, 2)\n const rysq = Math.pow(ry, 2)\n const pxpsq = Math.pow(pxp, 2)\n const pypsq = Math.pow(pyp, 2)\n\n let radicant = (rxsq * rysq) - (rxsq * pypsq) - (rysq * pxpsq)\n\n if (radicant < 0) {\n radicant = 0\n }\n\n radicant /= (rxsq * pypsq) + (rysq * pxpsq)\n radicant = Math.sqrt(radicant) * (largeArcFlag === sweepFlag ? -1 : 1)\n\n const centerxp = radicant * rx / ry * pyp\n const centeryp = radicant * -ry / rx * pxp\n\n const centerx = cosphi * centerxp - sinphi * centeryp + (px + cx) / 2\n const centery = sinphi * centerxp + cosphi * centeryp + (py + cy) / 2\n\n const vx1 = (pxp - centerxp) / rx\n const vy1 = (pyp - centeryp) / ry\n const vx2 = (-pxp - centerxp) / rx\n const vy2 = (-pyp - centeryp) / ry\n\n let ang1 = vectorAngle(1, 0, vx1, vy1)\n let ang2 = vectorAngle(vx1, vy1, vx2, vy2)\n\n if (sweepFlag === 0 && ang2 > 0) {\n ang2 -= TAU\n }\n\n if (sweepFlag === 1 && ang2 < 0) {\n ang2 += TAU\n }\n\n return [ centerx, centery, ang1, ang2 ]\n}\n\nconst arcToBezier = ({\n px,\n py,\n cx,\n cy,\n rx,\n ry,\n xAxisRotation = 0,\n largeArcFlag = 0,\n sweepFlag = 0\n}) => {\n const curves = []\n\n if (rx === 0 || ry === 0) {\n return [{ x1: 0, y1: 0, x2: 0, y2: 0, x: cx, y: cy }];\n }\n\n const sinphi = Math.sin(xAxisRotation * TAU / 360)\n const cosphi = Math.cos(xAxisRotation * TAU / 360)\n\n const pxp = cosphi * (px - cx) / 2 + sinphi * (py - cy) / 2\n const pyp = -sinphi * (px - cx) / 2 + cosphi * (py - cy) / 2\n\n if (pxp === 0 && pyp === 0) {\n return [{ x1: 0, y1: 0, x2: 0, y2: 0, x: cx, y: cy }];\n }\n\n rx = Math.abs(rx)\n ry = Math.abs(ry)\n\n const lambda =\n Math.pow(pxp, 2) / Math.pow(rx, 2) +\n Math.pow(pyp, 2) / Math.pow(ry, 2)\n\n if (lambda > 1) {\n rx *= Math.sqrt(lambda)\n ry *= Math.sqrt(lambda)\n }\n\n let [ centerx, centery, ang1, ang2 ] = getArcCenter(\n px,\n py,\n cx,\n cy,\n rx,\n ry,\n largeArcFlag,\n sweepFlag,\n sinphi,\n cosphi,\n pxp,\n pyp\n )\n\n // If 'ang2' == 90.0000000001, then `ratio` will evaluate to\n // 1.0000000001. This causes `segments` to be greater than one, which is an\n // unecessary split, and adds extra points to the bezier curve. To alleviate\n // this issue, we round to 1.0 when the ratio is close to 1.0.\n let ratio = Math.abs(ang2) / (TAU / 4)\n if (Math.abs(1.0 - ratio) < 0.0000001) {\n ratio = 1.0\n }\n\n const segments = Math.max(Math.ceil(ratio), 1)\n\n ang2 /= segments\n\n for (let i = 0; i < segments; i++) {\n curves.push(approxUnitArc(ang1, ang2))\n ang1 += ang2\n }\n\n return curves.map(curve => {\n const { x: x1, y: y1 } = mapToEllipse(curve[ 0 ], rx, ry, cosphi, sinphi, centerx, centery)\n const { x: x2, y: y2 } = mapToEllipse(curve[ 1 ], rx, ry, cosphi, sinphi, centerx, centery)\n const { x, y } = mapToEllipse(curve[ 2 ], rx, ry, cosphi, sinphi, centerx, centery)\n\n return { x1, y1, x2, y2, x, y }\n })\n}\n\nexport function arcToCubic(x1: number, y1: number, rx: number, ry: number, angle: number, LAF: number, SF: number, x2: number, y2: number) {\n const curves = arcToBezier({\n px: x1,\n py: y1,\n cx: x2,\n cy: y2,\n rx,\n ry,\n xAxisRotation: angle,\n largeArcFlag: LAF,\n sweepFlag: SF,\n });\n\n return curves.reduce((prev, cur) => {\n const { x1, y1, x2, y2, x, y } = cur;\n prev.push(x1, y1, x2, y2, x, y);\n return prev;\n }, [] as number[]);\n}\n","import { catmullRom2Bezier } from '@antv/path-util';\nimport { Category, Linear } from '@antv/scale';\nimport { each, head, isEqual, map } from '@antv/util';\n\ntype Point = [number, number];\n\n/**\n * 点数组转 path\n * @param points\n */\nfunction pointsToPath(points: Point[]): any[][] {\n return map(points, (p: Point, idx: number) => {\n const command = idx === 0 ? 'M' : 'L';\n const [x, y] = p;\n return [command, x, y];\n });\n}\n\n/**\n * 将点连接成路径 path\n * @param points\n */\nexport function getLinePath(points: Point[]): any[][] {\n return pointsToPath(points);\n}\n\n/**\n * 将点连成平滑的曲线\n * @param points\n */\nexport function getSmoothLinePath(points: Point[]): any[][] {\n if (points.length <= 2) {\n // 两点以内直接绘制成路径\n return getLinePath(points);\n }\n\n const data = [];\n\n each(points, (p) => {\n // 当前点和上一个点一样的时候,忽略掉\n if (!isEqual(p, data.slice(data.length - 2))) {\n data.push(p[0], p[1]);\n }\n });\n\n // const constraint = [ // 范围\n // [ 0, 0 ],\n // [ 1, 1 ],\n // ];\n const path = catmullRom2Bezier(data, false);\n const [x, y] = head(points);\n path.unshift(['M', x, y]);\n\n return path;\n}\n\n/**\n * 将数据转成 path,利用 scale 的归一化能力\n * @param data\n * @param width\n * @param height\n * @param smooth\n */\nexport function dataToPath(data: number[], width: number, height: number, smooth: boolean = true): any[][] {\n // 利用 scale 来获取 y 上的映射\n const y = new Linear({\n values: data,\n });\n\n const x = new Category({\n values: map(data, (v, idx) => idx),\n });\n\n const points = map(data, (v: number, idx: number) => {\n return [x.scale(idx) * width, height - y.scale(v) * height] as [number, number];\n });\n\n return smooth ? getSmoothLinePath(points) : getLinePath(points);\n}\n\n/**\n * 获得 area 面积的横向连接线的 px 位置\n * @param data \n * @param width \n * @param height \n */\nexport function getAreaLineY(data: number[], height: number): number {\n const y = new Linear({\n values: data,\n });\n // 当曲线全部为负数时,取最大值,当曲线全部为正数时,取最小值,当曲线有正有负,则取零点\n const lineY = y.max < 0 ? y.max : Math.max(0, y.min);\n return height - y.scale(lineY) * height;\n}\n\n/**\n * 线 path 转 area path\n * @param path\n * @param width\n * @param height\n */\nexport function linePathToAreaPath(path: any[][], width: number, height: number, data: number[]): any[][] {\n const areaPath = [...path];\n\n const lineYPx = getAreaLineY(data, height);\n\n areaPath.push(['L', width, lineYPx]);\n areaPath.push(['L', 0, lineYPx]);\n areaPath.push(['Z']);\n\n return areaPath;\n}\n","import { IGroup } from '@antv/g-base';\nimport GroupComponent from '../abstract/group-component';\nimport { GroupComponentCfg } from '../types';\nimport { AREA_STYLE, BACKGROUND_STYLE, LINE_STYLE } from './constant';\nimport { dataToPath, linePathToAreaPath } from './path';\n\nexport interface TrendCfg extends GroupComponentCfg {\n // 位置大小\n readonly x?: number;\n readonly y?: number;\n readonly width?: number;\n readonly height?: number;\n // 数据\n readonly data?: number[];\n // 样式\n readonly smooth?: boolean;\n readonly isArea?: boolean;\n readonly backgroundStyle?: object;\n readonly lineStyle?: object;\n readonly areaStyle?: object;\n}\n\nexport class Trend extends GroupComponent {\n public getDefaultCfg() {\n const cfg = super.getDefaultCfg();\n return {\n ...cfg,\n name: 'trend',\n x: 0,\n y: 0,\n width: 200,\n height: 16,\n smooth: true,\n isArea: false,\n data: [],\n backgroundStyle: BACKGROUND_STYLE,\n lineStyle: LINE_STYLE,\n areaStyle: AREA_STYLE,\n };\n }\n\n protected renderInner(group: IGroup) {\n const { width, height, data, smooth, isArea, backgroundStyle, lineStyle, areaStyle } = this.cfg as TrendCfg;\n\n // 背景\n this.addShape(group, {\n id: this.getElementId('background'),\n type: 'rect',\n attrs: {\n x: 0,\n y: 0,\n width,\n height,\n ...backgroundStyle,\n },\n });\n\n const path = dataToPath(data, width, height, smooth);\n // 线\n this.addShape(group, {\n id: this.getElementId('line'),\n type: 'path',\n attrs: {\n path,\n ...lineStyle,\n },\n });\n\n // area\n // 在 path 的基础上,增加两个坐标点\n if (isArea) {\n const areaPath = linePathToAreaPath(path, width, height, data);\n this.addShape(group, {\n id: this.getElementId('area'),\n type: 'path',\n attrs: {\n path: areaPath,\n ...areaStyle,\n },\n });\n }\n }\n\n protected applyOffset() {\n const { x, y } = this.cfg as TrendCfg;\n\n // 统一移动到对应的位置\n this.moveElementTo(this.get('group'), {\n x,\n y,\n });\n }\n}\n\nexport default Trend;\n","import { IGroup } from '@antv/g-base';\nimport GroupComponent from '../abstract/group-component';\nimport { GroupComponentCfg } from '../types';\n\ninterface IStyle {\n fill?: string;\n stroke?: string;\n radius?: number;\n opacity?: number;\n cursor?: string;\n highLightFill?: string;\n}\n\nexport interface HandlerCfg extends GroupComponentCfg {\n // position size\n readonly x: number;\n readonly y: number;\n readonly width: number;\n readonly height: number;\n // style\n readonly style?: IStyle;\n}\n\nexport const DEFAULT_HANDLER_STYLE = {\n fill: '#F7F7F7',\n stroke: '#BFBFBF',\n radius: 2,\n opacity: 1,\n cursor: 'ew-resize',\n // 高亮的颜色\n highLightFill: '#FFF',\n};\n\nexport class Handler extends GroupComponent {\n public getDefaultCfg() {\n const cfg = super.getDefaultCfg();\n return {\n ...cfg,\n name: 'handler',\n x: 0,\n y: 0,\n width: 10,\n height: 24,\n style: DEFAULT_HANDLER_STYLE,\n };\n }\n protected renderInner(group: IGroup) {\n const { width, height, style } = this.cfg as HandlerCfg;\n const { fill, stroke, radius, opacity, cursor } = style;\n\n // 按钮框框\n this.addShape(group, {\n type: 'rect',\n id: this.getElementId('background'),\n attrs: {\n x: 0,\n y: 0,\n width,\n height,\n fill,\n stroke,\n radius,\n opacity,\n cursor,\n },\n });\n\n // 两根竖线\n const x1 = (1 / 3) * width;\n const x2 = (2 / 3) * width;\n\n const y1 = (1 / 4) * height;\n const y2 = (3 / 4) * height;\n\n this.addShape(group, {\n id: this.getElementId('line-left'),\n type: 'line',\n attrs: {\n x1,\n y1,\n x2: x1,\n y2,\n stroke,\n cursor,\n },\n });\n\n this.addShape(group, {\n id: this.getElementId('line-right'),\n type: 'line',\n attrs: {\n x1: x2,\n y1,\n x2,\n y2,\n stroke,\n cursor,\n },\n });\n }\n\n protected applyOffset() {\n this.moveElementTo(this.get('group'), {\n x: this.get('x'),\n y: this.get('y'),\n });\n }\n\n protected initEvent() {\n this.bindEvents();\n }\n\n private bindEvents() {\n this.get('group').on('mouseenter', () => {\n const { highLightFill } = this.get('style');\n this.getElementByLocalId('background').attr('fill', highLightFill);\n\n this.draw();\n });\n\n this.get('group').on('mouseleave', () => {\n const { fill } = this.get('style');\n this.getElementByLocalId('background').attr('fill', fill);\n\n this.draw();\n });\n }\n\n private draw() {\n const canvas = this.get('container').get('canvas');\n if (canvas) {\n canvas.draw();\n }\n }\n}\n\nexport default Handler;\n","/**\n * 一些默认的样式配置\n */\n\nexport const BACKGROUND_STYLE = {\n fill: '#416180',\n opacity: 0.05,\n};\n\nexport const FOREGROUND_STYLE = {\n fill: '#5B8FF9',\n opacity: 0.15,\n cursor: 'move',\n};\n\nexport const DEFAULT_HANDLER_WIDTH = 10;\n\nexport const HANDLER_STYLE = {\n width: DEFAULT_HANDLER_WIDTH,\n height: 24,\n};\n\nexport const TEXT_STYLE = {\n textBaseline: 'middle',\n fill: '#000',\n opacity: 0.45,\n};\n\nexport const SLIDER_CHANGE = 'sliderchange';\n","import { Event, IGroup, IShape } from '@antv/g-base';\nimport { clamp, deepMix, each, get, isArray, isNil, size } from '@antv/util';\nimport GroupComponent from '../abstract/group-component';\nimport { ISlider } from '../interfaces';\nimport { Trend } from '../trend/trend';\nimport { DEFAULT_HANDLER_STYLE, Handler, HandlerCfg } from './handler';\nimport { GroupComponentCfg, Range } from '../types';\nimport {\n BACKGROUND_STYLE,\n DEFAULT_HANDLER_WIDTH,\n FOREGROUND_STYLE,\n HANDLER_STYLE,\n SLIDER_CHANGE,\n TEXT_STYLE,\n} from './constant';\n\nexport interface TrendCfg {\n // 数据\n readonly data: number[];\n // 样式\n readonly smooth?: boolean;\n readonly isArea?: boolean;\n readonly backgroundStyle?: object;\n readonly lineStyle?: object;\n readonly areaStyle?: object;\n}\n\n/**\n * slider handler style 设置\n */\ntype HandlerStyle = HandlerCfg['style'] & {\n readonly width?: number;\n readonly height?: number;\n};\n\nexport interface SliderCfg extends GroupComponentCfg {\n // position size\n readonly x: number;\n readonly y: number;\n readonly width: number;\n readonly height: number;\n\n // style\n readonly trendCfg?: TrendCfg;\n readonly backgroundStyle?: any;\n readonly foregroundStyle?: any;\n readonly handlerStyle?: HandlerStyle;\n readonly textStyle?: any;\n // 允许滑动位置\n readonly minLimit?: number;\n readonly maxLimit?: number;\n // 初始位置\n readonly start?: number;\n readonly end?: number;\n // 滑块文本\n readonly minText?: string;\n readonly maxText?: string;\n}\n\nexport class Slider extends GroupComponent implements ISlider {\n public cfg: SliderCfg;\n\n private minHandler: Handler;\n private maxHandler: Handler;\n private trend: Trend;\n private currentTarget: string;\n private prevX: number;\n private prevY: number;\n\n public setRange(min: number, max: number) {\n this.set('minLimit', min);\n this.set('maxLimit', max);\n const oldStart = this.get('start');\n const oldEnd = this.get('end');\n const newStart = clamp(oldStart, min, max);\n const newEnd = clamp(oldEnd, min, max);\n if (!this.get('isInit') && (oldStart !== newStart || oldEnd !== newEnd)) {\n this.setValue([newStart, newEnd]);\n }\n }\n\n public getRange(): Range {\n return {\n min: this.get('minLimit') || 0,\n max: this.get('maxLimit') || 1,\n };\n }\n\n public setValue(value: number | number[]) {\n const range = this.getRange();\n if (isArray(value) && value.length === 2) {\n const originValue = [this.get('start'), this.get('end')];\n this.update({\n start: clamp(value[0], range.min, range.max),\n end: clamp(value[1], range.min, range.max),\n });\n if (!this.get('updateAutoRender')) {\n this.render();\n }\n this.delegateEmit('valuechanged', {\n originValue,\n value,\n });\n }\n }\n\n public getValue(): number | number[] {\n return [this.get('start'), this.get('end')];\n }\n\n public getDefaultCfg() {\n const cfg = super.getDefaultCfg();\n return {\n ...cfg,\n name: 'slider',\n x: 0,\n y: 0,\n width: 100,\n height: 16,\n backgroundStyle: {},\n foregroundStyle: {},\n handlerStyle: {},\n textStyle: {},\n defaultCfg: {\n backgroundStyle: BACKGROUND_STYLE,\n foregroundStyle: FOREGROUND_STYLE,\n handlerStyle: HANDLER_STYLE,\n textStyle: TEXT_STYLE,\n },\n };\n }\n\n public update(cfg: Partial) {\n const { start, end } = cfg;\n const validCfg = { ...cfg };\n if (!isNil(start)) {\n validCfg.start = clamp(start, 0, 1);\n }\n if (!isNil(end)) {\n validCfg.end = clamp(end, 0, 1);\n }\n super.update(validCfg);\n this.minHandler = this.getChildComponentById(this.getElementId('minHandler'));\n this.maxHandler = this.getChildComponentById(this.getElementId('maxHandler'));\n this.trend = this.getChildComponentById(this.getElementId('trend'));\n }\n\n public init() {\n this.set('start', clamp(this.get('start'), 0, 1));\n this.set('end', clamp(this.get('end'), 0, 1));\n super.init();\n }\n\n public render() {\n super.render();\n\n this.updateUI(\n this.getElementByLocalId('foreground'),\n this.getElementByLocalId('minText'),\n this.getElementByLocalId('maxText')\n );\n }\n\n protected renderInner(group: IGroup) {\n const {\n start,\n end,\n width,\n height,\n trendCfg = {},\n minText,\n maxText,\n backgroundStyle = {},\n foregroundStyle = {},\n textStyle = {},\n } = this.cfg;\n\n const handlerStyle = deepMix({}, DEFAULT_HANDLER_STYLE, this.cfg.handlerStyle);\n\n const min = start * width;\n const max = end * width;\n\n // 趋势图数据\n if (size(get(trendCfg, 'data'))) {\n this.trend = this.addComponent(group, {\n component: Trend,\n id: this.getElementId('trend'),\n x: 0,\n y: 0,\n width,\n height,\n ...trendCfg,\n });\n }\n\n // 1. 背景\n this.addShape(group, {\n id: this.getElementId('background'),\n type: 'rect',\n attrs: {\n x: 0,\n y: 0,\n width,\n height,\n ...backgroundStyle,\n },\n });\n\n // 2. 左右文字\n const minTextShape = this.addShape(group, {\n id: this.getElementId('minText'),\n type: 'text',\n attrs: {\n // x: 0,\n y: height / 2,\n textAlign: 'right',\n text: minText,\n silent: false,\n ...textStyle,\n },\n });\n\n const maxTextShape = this.addShape(group, {\n id: this.getElementId('maxText'),\n type: 'text',\n attrs: {\n // x: 0,\n y: height / 2,\n textAlign: 'left',\n text: maxText,\n silent: false,\n ...textStyle,\n },\n });\n\n // 3. 前景 选中背景框\n const foregroundShape = this.addShape(group, {\n id: this.getElementId('foreground'),\n name: 'foreground',\n type: 'rect',\n attrs: {\n // x: 0,\n y: 0,\n // width: 0,\n height,\n ...foregroundStyle,\n },\n });\n\n // 滑块相关的大小信息\n const handlerWidth = get(handlerStyle, 'width', DEFAULT_HANDLER_WIDTH);\n const handlerHeight = get(handlerStyle, 'height', 24);\n\n // 4. 左右滑块\n this.minHandler = this.addComponent(group, {\n component: Handler,\n id: this.getElementId('minHandler'),\n name: 'handler-min',\n x: 0,\n y: (height - handlerHeight) / 2,\n width: handlerWidth,\n height: handlerHeight,\n cursor: 'ew-resize',\n style: handlerStyle,\n });\n\n this.maxHandler = this.addComponent(group, {\n component: Handler,\n id: this.getElementId('maxHandler'),\n name: 'handler-max',\n x: 0,\n y: (height - handlerHeight) / 2,\n width: handlerWidth,\n height: handlerHeight,\n cursor: 'ew-resize',\n style: handlerStyle,\n });\n }\n\n protected applyOffset() {\n this.moveElementTo(this.get('group'), {\n x: this.get('x'),\n y: this.get('y'),\n });\n }\n\n protected initEvent() {\n this.bindEvents();\n }\n\n private updateUI(foregroundShape: IShape, minTextShape: IShape, maxTextShape: IShape) {\n const { start, end, width, minText, maxText, handlerStyle, height } = this.cfg as SliderCfg;\n const min = start * width;\n const max = end * width;\n\n if (this.trend) {\n this.trend.update({\n width,\n height,\n });\n if (!this.get('updateAutoRender')) {\n this.trend.render();\n }\n }\n\n // 1. foreground\n foregroundShape.attr('x', min);\n foregroundShape.attr('width', max - min);\n\n // 滑块相关的大小信息\n const handlerWidth = get(handlerStyle, 'width', DEFAULT_HANDLER_WIDTH);\n\n // 设置文本\n minTextShape.attr('text', minText);\n maxTextShape.attr('text', maxText);\n\n const [minAttrs, maxAttrs] = this._dodgeText([min, max], minTextShape, maxTextShape);\n // 2. 左侧滑块和文字位置\n if (this.minHandler) {\n this.minHandler.update({\n x: min - handlerWidth / 2,\n });\n if (!this.get('updateAutoRender')) {\n this.minHandler.render();\n }\n }\n each(minAttrs, (v, k) => minTextShape.attr(k, v));\n\n // 3. 右侧滑块和文字位置\n if (this.maxHandler) {\n this.maxHandler.update({\n x: max - handlerWidth / 2,\n });\n if (!this.get('updateAutoRender')) {\n this.maxHandler.render();\n }\n }\n each(maxAttrs, (v, k) => maxTextShape.attr(k, v));\n }\n\n private bindEvents() {\n const group: IGroup = this.get('group');\n\n group.on('handler-min:mousedown', this.onMouseDown('minHandler'));\n group.on('handler-min:touchstart', this.onMouseDown('minHandler'));\n\n // 2. 右滑块的滑动\n group.on('handler-max:mousedown', this.onMouseDown('maxHandler'));\n group.on('handler-max:touchstart', this.onMouseDown('maxHandler'));\n\n // 3. 前景选中区域\n const foreground = group.findById(this.getElementId('foreground'));\n foreground.on('mousedown', this.onMouseDown('foreground'));\n foreground.on('touchstart', this.onMouseDown('foreground'));\n }\n\n private onMouseDown = (target: string) => (e: Event) => {\n this.currentTarget = target;\n // 取出原生事件\n const event = e.originalEvent as MouseEvent;\n\n // 2. 存储当前点击位置\n event.stopPropagation();\n event.preventDefault();\n\n // 兼容移动端获取数据\n this.prevX = get(event, 'touches.0.pageX', event.pageX);\n this.prevY = get(event, 'touches.0.pageY', event.pageY);\n\n // 3. 开始滑动的时候,绑定 move 和 up 事件\n const containerDOM = this.getContainerDOM();\n\n containerDOM.addEventListener('mousemove', this.onMouseMove);\n containerDOM.addEventListener('mouseup', this.onMouseUp);\n containerDOM.addEventListener('mouseleave', this.onMouseUp);\n\n // 移动端事件\n containerDOM.addEventListener('touchmove', this.onMouseMove);\n containerDOM.addEventListener('touchend', this.onMouseUp);\n containerDOM.addEventListener('touchcancel', this.onMouseUp);\n };\n\n private onMouseMove = (event: MouseEvent) => {\n const { width } = this.cfg as SliderCfg;\n const originValue = [this.get('start'), this.get('end')];\n // 滑动过程中,计算偏移,更新滑块,然后 emit 数据出去\n event.stopPropagation();\n event.preventDefault();\n\n const x = get(event, 'touches.0.pageX', event.pageX);\n const y = get(event, 'touches.0.pageY', event.pageY);\n\n // 横向的 slider 只处理 x\n const offsetX = x - this.prevX;\n\n const offsetXRange = this.adjustOffsetRange(offsetX / width);\n\n // 更新 start end range 范围\n this.updateStartEnd(offsetXRange);\n // 更新 ui\n this.updateUI(\n this.getElementByLocalId('foreground'),\n this.getElementByLocalId('minText'),\n this.getElementByLocalId('maxText')\n );\n\n this.prevX = x;\n this.prevY = y;\n\n this.draw();\n\n // 因为存储的 start、end 可能不一定是按大小存储的,所以排序一下,对外是 end >= start\n this.emit(SLIDER_CHANGE, [this.get('start'), this.get('end')].sort());\n this.delegateEmit('valuechanged', {\n originValue,\n value: [this.get('start'), this.get('end')],\n });\n };\n\n private onMouseUp = () => {\n // 结束之后,取消绑定的事件\n if (this.currentTarget) {\n this.currentTarget = undefined;\n }\n\n const containerDOM = this.getContainerDOM();\n if (containerDOM) {\n containerDOM.removeEventListener('mousemove', this.onMouseMove);\n containerDOM.removeEventListener('mouseup', this.onMouseUp);\n // 防止滑动到 canvas 外部之后,状态丢失\n containerDOM.removeEventListener('mouseleave', this.onMouseUp);\n\n // 移动端事件\n containerDOM.removeEventListener('touchmove', this.onMouseMove);\n containerDOM.removeEventListener('touchend', this.onMouseUp);\n containerDOM.removeEventListener('touchcancel', this.onMouseUp);\n }\n };\n\n /**\n * 调整 offsetRange,因为一些范围的限制\n * @param offsetRange\n */\n private adjustOffsetRange(offsetRange: number): number {\n const { start, end } = this.cfg as SliderCfg;\n // 针对不同的滑动组件,处理的方式不同\n switch (this.currentTarget) {\n case 'minHandler': {\n const min = 0 - start;\n const max = 1 - start;\n\n return Math.min(max, Math.max(min, offsetRange));\n }\n case 'maxHandler': {\n const min = 0 - end;\n const max = 1 - end;\n\n return Math.min(max, Math.max(min, offsetRange));\n }\n case 'foreground': {\n const min = 0 - start;\n const max = 1 - end;\n\n return Math.min(max, Math.max(min, offsetRange));\n }\n }\n }\n\n private updateStartEnd(offsetRange: number) {\n let { start, end } = this.cfg as SliderCfg;\n // 操作不同的组件,反馈不一样\n switch (this.currentTarget) {\n case 'minHandler':\n start += offsetRange;\n break;\n case 'maxHandler':\n end += offsetRange;\n break;\n case 'foreground':\n start += offsetRange;\n end += offsetRange;\n break;\n }\n this.set('start', start);\n this.set('end', end);\n }\n\n /**\n * 调整 text 的位置,自动躲避\n * 根据位置,调整返回新的位置\n * @param range\n */\n private _dodgeText(range: [number, number], minTextShape, maxTextShape): [object, object] {\n const { handlerStyle, width } = this.cfg as SliderCfg;\n const PADDING = 2;\n const handlerWidth = get(handlerStyle, 'width', DEFAULT_HANDLER_WIDTH);\n\n let [min, max] = range;\n let sorted = false;\n\n // 如果交换了位置,则对应的 min max 也交互\n if (min > max) {\n [min, max] = [max, min];\n [minTextShape, maxTextShape] = [maxTextShape, minTextShape];\n sorted = true;\n }\n\n // 避让规则,优先显示在两侧,只有显示不下的时候,才显示在中间\n const minBBox = minTextShape.getBBox();\n const maxBBox = maxTextShape.getBBox();\n\n const minAttrs =\n minBBox.width > min - PADDING\n ? { x: min + handlerWidth / 2 + PADDING, textAlign: 'left' }\n : { x: min - handlerWidth / 2 - PADDING, textAlign: 'right' };\n\n const maxAttrs =\n maxBBox.width > width - max - PADDING\n ? { x: max - handlerWidth / 2 - PADDING, textAlign: 'right' }\n : { x: max + handlerWidth / 2 + PADDING, textAlign: 'left' };\n\n return !sorted ? [minAttrs, maxAttrs] : [maxAttrs, minAttrs];\n }\n\n public draw() {\n const container = this.get('container');\n const canvas = container && container.get('canvas');\n if (canvas) {\n canvas.draw();\n }\n }\n\n private getContainerDOM() {\n const container = this.get('container');\n const canvas = container && container.get('canvas');\n\n return canvas && canvas.get('container');\n }\n}\n\nexport default Slider;\n","export default function addEventListener(target: HTMLElement, eventType: string, callback: any) {\n if (target) {\n if (typeof target.addEventListener === 'function') {\n target.addEventListener(eventType, callback, false);\n return {\n remove() {\n target.removeEventListener(eventType, callback, false);\n },\n };\n // @ts-ignore\n } if (typeof target.attachEvent === 'function') {\n // @ts-ignore\n target.attachEvent('on' + eventType, callback);\n return {\n remove() {\n // @ts-ignore\n target.detachEvent('on' + eventType, callback);\n },\n };\n }\n }\n}\n","import { addEventListener } from '@antv/dom-util';\nimport { Event, IGroup } from '@antv/g-base';\nimport { clamp, deepMix, get, noop } from '@antv/util';\nimport GroupComponent from '../abstract/group-component';\nimport { ISlider } from '../interfaces';\nimport { GroupComponentCfg, Range } from '../types';\n\nexport interface ScrollbarStyle {\n trackColor: string;\n thumbColor: string;\n size: number;\n lineCap: string;\n}\n\nexport interface ScrollbarTheme {\n default?: Partial>;\n hover?: Pick, 'thumbColor'>;\n}\n\nconst DEFAULT_STYLE: ScrollbarStyle = {\n trackColor: 'rgba(0,0,0,0)',\n thumbColor: 'rgba(0,0,0,0.15)',\n size: 8,\n lineCap: 'round',\n};\n\nexport const DEFAULT_THEME: ScrollbarTheme = {\n // 默认样式\n default: DEFAULT_STYLE,\n // 鼠标 hover 的样式\n hover: {\n thumbColor: 'rgba(0,0,0,0.2)',\n },\n};\n\nexport interface ScrollbarCfg extends GroupComponentCfg {\n // scrollBar 的位置\n x: number;\n y: number;\n // 滚动条的布局,横向 | 纵向, 非必传,默认为 false(纵向)\n isHorizontal?: boolean;\n // 滑道长度,必传\n trackLen: number;\n // 滑块长度,必传\n thumbLen: number;\n // 滑块的最小长度,非必传,默认值为 20\n minThumbLen?: number;\n // 滑块相对滑道的偏移, 非必传,默认值为 0\n thumbOffset?: number;\n // 滚动条大小(横向代表高度,纵向代表宽度),优先级大于 theme\n size?: number;\n // 滚动条样式,非必传\n theme?: ScrollbarTheme;\n\n minLimit?: number;\n maxLimit?: number;\n}\n\nexport class Scrollbar extends GroupComponent implements ISlider {\n public cfg: ScrollbarCfg;\n // 通过拖拽开始的事件是 mousedown 还是 touchstart 来决定是移动端还是 pc 端\n private isMobile: boolean;\n private clearEvents = noop;\n private startPos: number;\n\n public setRange(min: number, max: number) {\n this.set('minLimit', min);\n this.set('maxLimit', max);\n const curValue = this.getValue();\n const newValue = clamp(curValue, min, max);\n if (curValue !== newValue && !this.get('isInit')) {\n this.setValue(newValue);\n }\n }\n\n public getRange(): Range {\n const min: number = this.get('minLimit') || 0;\n const max: number = this.get('maxLimit') || 1;\n\n return { min, max };\n }\n\n public setValue(value: number) {\n const range = this.getRange();\n const originalValue = this.getValue();\n this.update({\n thumbOffset: (this.get('trackLen') - this.get('thumbLen')) * clamp(value, range.min, range.max),\n });\n this.delegateEmit('valuechange', {\n originalValue,\n value: this.getValue(),\n });\n }\n\n public getValue(): number {\n return clamp(this.get('thumbOffset') / (this.get('trackLen') - this.get('thumbLen')), 0, 1);\n }\n\n public getDefaultCfg() {\n const cfg = super.getDefaultCfg();\n return {\n ...cfg,\n name: 'scrollbar',\n isHorizontal: true,\n minThumbLen: 20,\n thumbOffset: 0,\n theme: DEFAULT_THEME,\n };\n }\n\n protected renderInner(group: IGroup) {\n this.renderTrackShape(group);\n this.renderThumbShape(group);\n }\n\n protected applyOffset() {\n this.moveElementTo(this.get('group'), {\n x: this.get('x'),\n y: this.get('y'),\n });\n }\n\n protected initEvent() {\n this.bindEvents();\n }\n\n // 创建滑道的 shape\n private renderTrackShape(group: IGroup) {\n const { trackLen, theme = { default: {} } } = this.cfg;\n const { lineCap, trackColor, size: themeSize } = deepMix({}, DEFAULT_THEME, theme).default;\n const size = get(this.cfg, 'size', themeSize);\n\n const attrs = this.get('isHorizontal')\n ? {\n x1: 0 + size / 2,\n y1: size / 2,\n x2: trackLen - size / 2,\n y2: size / 2,\n lineWidth: size,\n stroke: trackColor,\n lineCap,\n }\n : {\n x1: size / 2,\n y1: 0 + size / 2,\n x2: size / 2,\n y2: trackLen - size / 2,\n lineWidth: size,\n stroke: trackColor,\n lineCap,\n };\n return this.addShape(group, {\n id: this.getElementId('track'),\n name: 'track',\n type: 'line',\n attrs,\n });\n }\n\n // 创建滑块的 shape\n private renderThumbShape(group: IGroup) {\n const { thumbOffset, thumbLen, theme } = this.cfg;\n const { size: themeSize, lineCap, thumbColor } = deepMix({}, DEFAULT_THEME, theme).default;\n const size = get(this.cfg, 'size', themeSize);\n\n const attrs = this.get('isHorizontal')\n ? {\n x1: thumbOffset + size / 2,\n y1: size / 2,\n x2: thumbOffset + thumbLen - size / 2,\n y2: size / 2,\n lineWidth: size,\n stroke: thumbColor,\n lineCap,\n cursor: 'default',\n }\n : {\n x1: size / 2,\n y1: thumbOffset + size / 2,\n x2: size / 2,\n y2: thumbOffset + thumbLen - size / 2,\n lineWidth: size,\n stroke: thumbColor,\n lineCap,\n cursor: 'default',\n };\n return this.addShape(group, {\n id: this.getElementId('thumb'),\n name: 'thumb',\n type: 'line',\n attrs,\n });\n }\n\n private bindEvents() {\n const group: IGroup = this.get('group');\n group.on('mousedown', this.onStartEvent(false));\n group.on('mouseup', this.onMouseUp);\n\n group.on('touchstart', this.onStartEvent(true));\n group.on('touchend', this.onMouseUp);\n\n const trackShape = group.findById(this.getElementId('track'));\n trackShape.on('click', this.onTrackClick);\n const thumbShape = group.findById(this.getElementId('thumb'));\n thumbShape.on('mouseover', this.onThumbMouseOver);\n thumbShape.on('mouseout', this.onThumbMouseOut);\n }\n\n private onStartEvent = (isMobile: boolean) => (e: Event) => {\n this.isMobile = isMobile;\n e.originalEvent.preventDefault();\n const clientX = isMobile ? get(e.originalEvent, 'touches.0.clientX') : e.clientX;\n const clientY = isMobile ? get(e.originalEvent, 'touches.0.clientY') : e.clientY;\n\n // 将开始的点记录下来\n this.startPos = this.cfg.isHorizontal ? clientX : clientY;\n\n this.bindLaterEvent();\n };\n\n private bindLaterEvent = () => {\n const containerDOM = this.getContainerDOM();\n let events = [];\n\n if (this.isMobile) {\n events = [\n addEventListener(containerDOM, 'touchmove', this.onMouseMove),\n addEventListener(containerDOM, 'touchend', this.onMouseUp),\n addEventListener(containerDOM, 'touchcancel', this.onMouseUp),\n ];\n } else {\n events = [\n addEventListener(containerDOM, 'mousemove', this.onMouseMove),\n addEventListener(containerDOM, 'mouseup', this.onMouseUp),\n // 为了保证划出 canvas containerDom 时还没触发 mouseup\n addEventListener(containerDOM, 'mouseleave', this.onMouseUp),\n ];\n }\n this.clearEvents = () => {\n events.forEach((e) => {\n e.remove();\n });\n };\n };\n\n // 拖拽滑块的事件回调\n // 这里是 dom 原生事件,绑定在 dom 元素上的\n private onMouseMove = (e: MouseEvent) => {\n const { isHorizontal, thumbOffset } = this.cfg;\n e.preventDefault();\n const clientX = this.isMobile ? get(e, 'touches.0.clientX') : e.clientX;\n const clientY = this.isMobile ? get(e, 'touches.0.clientY') : e.clientY;\n // 鼠标松开的位置\n const endPos = isHorizontal ? clientX : clientY;\n // 滑块需要移动的距离, 由于这里是对滑块监听,所以移动的距离就是 diffDis, 如果监听对象是 container dom,则需要算比例\n const diff = endPos - this.startPos;\n // 更新 _startPos\n this.startPos = endPos;\n\n this.updateThumbOffset(thumbOffset + diff);\n };\n\n private onMouseUp = (e: Event) => {\n e.preventDefault();\n this.clearEvents();\n };\n\n // 点击滑道的事件回调,移动滑块位置\n private onTrackClick = (e: Event) => {\n const { isHorizontal, x, y, thumbLen } = this.cfg;\n const containerDOM = this.getContainerDOM();\n const rect = containerDOM.getBoundingClientRect();\n const { clientX, clientY } = e;\n const offset = isHorizontal ? clientX - rect.left - x - thumbLen / 2 : clientY - rect.top - y - thumbLen / 2;\n\n const newOffset = this.validateRange(offset);\n this.updateThumbOffset(newOffset);\n };\n\n private onThumbMouseOver = () => {\n const { thumbColor } = this.cfg.theme.hover;\n this.getElementByLocalId('thumb').attr('stroke', thumbColor);\n this.draw();\n };\n\n private onThumbMouseOut = () => {\n const { thumbColor } = this.cfg.theme.default;\n this.getElementByLocalId('thumb').attr('stroke', thumbColor);\n this.draw();\n };\n\n private getContainerDOM() {\n const container = this.get('container');\n const canvas = container && container.get('canvas');\n\n return canvas && canvas.get('container');\n }\n\n private validateRange(offset: number) {\n const { thumbLen, trackLen } = this.cfg;\n let newOffset = offset;\n if (offset + thumbLen > trackLen) {\n newOffset = trackLen - thumbLen;\n } else if (offset + thumbLen < thumbLen) {\n newOffset = 0;\n }\n return newOffset;\n }\n\n private draw() {\n const container = this.get('container');\n const canvas = container && container.get('canvas');\n\n if (canvas) {\n canvas.draw();\n }\n }\n\n private updateThumbOffset(offset: number) {\n const { thumbOffset, isHorizontal, thumbLen, size } = this.cfg;\n const newOffset = this.validateRange(offset);\n if (newOffset === thumbOffset) {\n // 如果更新后的 offset 与原值相同,则不改变\n return;\n }\n const thumbShape = this.getElementByLocalId('thumb');\n\n if (isHorizontal) {\n thumbShape.attr({\n x1: newOffset + size / 2,\n x2: newOffset + thumbLen - size / 2,\n });\n } else {\n thumbShape.attr({\n y1: newOffset + size / 2,\n y2: newOffset + thumbLen - size / 2,\n });\n }\n this.emitOffsetChange(newOffset);\n }\n\n private emitOffsetChange(offset: number) {\n const { thumbOffset: originalValue, trackLen, thumbLen } = this.cfg;\n this.cfg.thumbOffset = offset;\n // 发送事件\n this.emit('scrollchange', {\n thumbOffset: offset,\n ratio: clamp(offset / (trackLen - thumbLen), 0, 1),\n });\n this.delegateEmit('valuechange', {\n originalValue,\n value: offset,\n });\n }\n}\n","/* 依赖的模块,在这里统一引入,方便打包优化 */\n\n// G\nexport {\n ICanvas,\n IElement,\n IGroup,\n IShape,\n PathCommand,\n BBox,\n Point,\n ShapeAttrs,\n Event,\n AbstractGroup,\n AbstractShape,\n} from '@antv/g-base';\n// 需要有 G-base 提供 g engine 类型定义\nexport type IG = any;\n\n// adjust\nexport { registerAdjust, getAdjust, Adjust } from '@antv/adjust';\n\n// attr\nexport { getAttribute, Attribute } from '@antv/attr';\nexport { Color } from '@antv/attr';\n\n// coordinate\nexport { getCoordinate, registerCoordinate, Coordinate, CoordinateCfg } from '@antv/coord';\n\n// scale\nexport { getScale, registerScale, Scale, ScaleConfig, Tick } from '@antv/scale';\n\n// component\nimport {\n Annotation,\n Axis,\n Component,\n Crosshair,\n Grid,\n GroupComponent,\n HtmlComponent,\n Legend,\n Slider,\n Tooltip,\n Scrollbar,\n} from '@antv/component';\n\nexport {\n CategoryLegendCfg,\n CircleAxisCfg,\n LineAxisCfg,\n GroupComponentCfg,\n ListItem,\n AxisLineCfg,\n AxisTickLineCfg,\n AxisSubTickLineCfg,\n AxisTitleCfg,\n AxisLabelCfg,\n GridLineCfg,\n LegendMarkerCfg,\n LegendTitleCfg,\n LegendBackgroundCfg,\n LegendItemNameCfg,\n LegendItemValueCfg,\n LegendPageNavigatorCfg,\n ContinueLegendCfg,\n ContinueLegendTrackCfg,\n ContinueLegendRailCfg,\n ContinueLegendLabelCfg,\n ContinueLegendHandlerCfg,\n CrosshairLineCfg,\n CrosshairTextCfg,\n CrosshairTextBackgroundCfg,\n SliderCfg,\n TrendCfg,\n EnhancedTextCfg,\n LineAnnotationTextCfg,\n IComponent,\n IList,\n} from '@antv/component';\n\nexport { HtmlComponent, GroupComponent, Component, Crosshair };\nexport { Annotation };\n// axis\nconst { Line: LineAxis, Circle: CircleAxis } = Axis;\nexport { LineAxis, CircleAxis };\n// grid\nconst { Line: LineGrid, Circle: CircleGrid } = Grid;\nexport { LineGrid, CircleGrid };\n// legend\nconst { Category: CategoryLegend, Continuous: ContinuousLegend } = Legend;\nexport { CategoryLegend, ContinuousLegend };\n// Tooltip\nconst { Html: HtmlTooltip } = Tooltip;\nexport { HtmlTooltip };\n// Slider\nexport { Slider };\n// Scrollbar\nexport { Scrollbar };\n","import { BBox } from '@antv/g-svg';\nimport { each, isEmpty, isNumber, isNumberEqual, max, min } from '@antv/util';\nimport { Coordinate, IShape, Point } from '../dependents';\nimport { ShapeInfo } from '../interface';\n\n// 获取图形的包围盒\nfunction getPointsBox(points) {\n if (isEmpty(points)) {\n return null;\n }\n\n let minX = points[0].x;\n let maxX = points[0].x;\n let minY = points[0].y;\n let maxY = points[0].y;\n each(points, (point) => {\n minX = minX > point.x ? point.x : minX;\n maxX = maxX < point.x ? point.x : maxX;\n minY = minY > point.y ? point.y : minY;\n maxY = maxY < point.y ? point.y : maxY;\n });\n\n return {\n minX,\n maxX,\n minY,\n maxY,\n centerX: (minX + maxX) / 2,\n centerY: (minY + maxY) / 2,\n };\n}\n\nfunction uniqueValues(array: T[]) {\n return Array.from(new Set(array)).length === 1;\n}\n\nfunction mid(array: number[]) {\n return (min(array) + max(array)) / 2;\n}\n\n/**\n * @ignore\n * 根据弧度计算极坐标系下的坐标点\n * @param centerX\n * @param centerY\n * @param radius\n * @param angleInRadian\n * @returns\n */\nexport function polarToCartesian(centerX: number, centerY: number, radius: number, angleInRadian: number) {\n return {\n x: centerX + radius * Math.cos(angleInRadian),\n y: centerY + radius * Math.sin(angleInRadian),\n };\n}\n\n/**\n * @ignore\n * 根据起始角度计算绘制扇形的 path\n * @param centerX\n * @param centerY\n * @param radius\n * @param startAngleInRadian\n * @param endAngleInRadian\n * @returns\n */\nexport function getSectorPath(\n centerX: number,\n centerY: number,\n radius: number,\n startAngleInRadian: number,\n endAngleInRadian: number,\n innerRadius: number = 0\n) {\n const start = polarToCartesian(centerX, centerY, radius, startAngleInRadian);\n const end = polarToCartesian(centerX, centerY, radius, endAngleInRadian);\n\n const innerStart = polarToCartesian(centerX, centerY, innerRadius, startAngleInRadian);\n const innerEnd = polarToCartesian(centerX, centerY, innerRadius, endAngleInRadian);\n\n if (endAngleInRadian - startAngleInRadian === Math.PI * 2) {\n // 整个圆是分割成两个圆\n const middlePoint = polarToCartesian(centerX, centerY, radius, startAngleInRadian + Math.PI);\n const innerMiddlePoint = polarToCartesian(centerX, centerY, innerRadius, startAngleInRadian + Math.PI);\n const circlePathCommands = [\n ['M', start.x, start.y],\n ['A', radius, radius, 0, 1, 1, middlePoint.x, middlePoint.y],\n ['A', radius, radius, 0, 1, 1, end.x, end.y],\n ['M', innerStart.x, innerStart.y],\n ];\n if (innerRadius) {\n circlePathCommands.push(['A', innerRadius, innerRadius, 0, 1, 0, innerMiddlePoint.x, innerMiddlePoint.y]);\n circlePathCommands.push(['A', innerRadius, innerRadius, 0, 1, 0, innerEnd.x, innerEnd.y]);\n }\n\n circlePathCommands.push(['M', start.x, start.y]);\n circlePathCommands.push(['Z']);\n\n return circlePathCommands;\n }\n\n const arcSweep = endAngleInRadian - startAngleInRadian <= Math.PI ? 0 : 1;\n const sectorPathCommands = [\n ['M', start.x, start.y],\n ['A', radius, radius, 0, arcSweep, 1, end.x, end.y],\n ['L', innerEnd.x, innerEnd.y],\n ];\n if (innerRadius) {\n sectorPathCommands.push(['A', innerRadius, innerRadius, 0, arcSweep, 0, innerStart.x, innerStart.y]);\n }\n sectorPathCommands.push(['L', start.x, start.y]);\n sectorPathCommands.push(['Z']);\n\n return sectorPathCommands;\n}\n\n/**\n * @ignore\n * Gets arc path\n * @param centerX\n * @param centerY\n * @param radius\n * @param startAngleInRadian\n * @param endAngleInRadian\n * @returns\n */\nexport function getArcPath(\n centerX: number,\n centerY: number,\n radius: number,\n startAngleInRadian: number,\n endAngleInRadian: number\n) {\n const start = polarToCartesian(centerX, centerY, radius, startAngleInRadian);\n const end = polarToCartesian(centerX, centerY, radius, endAngleInRadian);\n\n if (isNumberEqual(endAngleInRadian - startAngleInRadian, Math.PI * 2)) {\n const middlePoint = polarToCartesian(centerX, centerY, radius, startAngleInRadian + Math.PI);\n return [\n ['M', start.x, start.y],\n ['A', radius, radius, 0, 1, 1, middlePoint.x, middlePoint.y],\n ['A', radius, radius, 0, 1, 1, start.x, start.y],\n ['A', radius, radius, 0, 1, 0, middlePoint.x, middlePoint.y],\n ['A', radius, radius, 0, 1, 0, start.x, start.y],\n ['Z'],\n ];\n }\n const arcSweep = endAngleInRadian - startAngleInRadian <= Math.PI ? 0 : 1;\n return [\n ['M', start.x, start.y],\n ['A', radius, radius, 0, arcSweep, 1, end.x, end.y],\n ];\n}\n\n/**\n * @ignore\n * 从数据模型中的 points 换算角度\n * @param shapeModel\n * @param coordinate\n * @returns\n */\nexport function getAngle(shapeModel: ShapeInfo, coordinate: Coordinate) {\n const points = shapeModel.points;\n const box = getPointsBox(points);\n let endAngle;\n let startAngle;\n const { startAngle: coordStartAngle, endAngle: coordEndAngle } = coordinate;\n const diffAngle = coordEndAngle - coordStartAngle;\n\n if (coordinate.isTransposed) {\n endAngle = box.maxY * diffAngle;\n startAngle = box.minY * diffAngle;\n } else {\n endAngle = box.maxX * diffAngle;\n startAngle = box.minX * diffAngle;\n }\n endAngle += coordStartAngle;\n startAngle += coordStartAngle;\n return {\n startAngle,\n endAngle,\n };\n}\n\n/**\n * @ignore\n * 计算多边形重心: https://en.wikipedia.org/wiki/Centroid#Of_a_polygon\n */\nexport function getPolygonCentroid(xs: number | number[], ys: number | number[]) {\n if (isNumber(xs) && isNumber(ys)) {\n // 普通色块图,xs 和 ys 是数值\n return [xs, ys];\n }\n\n xs = xs as number[];\n ys = ys as number[];\n // 当这个 polygon 的点在一条线上的时候\n // 也就是说 xs 里面的值都相同,比如:[1, 1, 1, 1]\n // 或者说 ys 里面的值都相同,比如:[0, 0, 0, 0]\n // 下面计算得到的 k = 0\n // 导致返回的值是 [NaN, NaN]\n // 所以这里做相应的处理\n if (uniqueValues(xs) || uniqueValues(ys)) return [mid(xs), mid(ys)];\n\n let i = -1;\n let x = 0;\n let y = 0;\n let former;\n let current = xs.length - 1;\n let diff;\n let k = 0;\n while (++i < xs.length) {\n former = current;\n current = i;\n k += diff = xs[former] * ys[current] - xs[current] * ys[former];\n x += (xs[former] + xs[current]) * diff;\n y += (ys[former] + ys[current]) * diff;\n }\n k *= 3;\n return [x / k, y / k];\n}\n\n/**\n * @ignore\n * 获取需要替换的属性,如果原先图形元素存在,而新图形不存在,则设置 undefined\n */\nexport function getReplaceAttrs(sourceShape: IShape, targetShape: IShape) {\n const originAttrs = sourceShape.attr();\n const newAttrs = targetShape.attr();\n each(originAttrs, (v, k) => {\n if (newAttrs[k] === undefined) {\n newAttrs[k] = undefined;\n }\n });\n return newAttrs;\n}\n","import { isArray, isString } from '@antv/util';\n\n/**\n * @ignore\n * Determines whether between is\n * @param value\n * @param start\n * @param end\n * @returns true if between\n */\nexport function isBetween(value: number, start: number, end: number): boolean {\n const min = Math.min(start, end);\n const max = Math.max(start, end);\n\n return value >= min && value <= max;\n}\n\n/**\n * @ignore\n * pads the current string/array with a given value (repeated, if needed) so that the resulting reaches a given length.\n * The padding is applied from the end of the current value.\n *\n * @param source\n * @param targetLength\n * @param padValue\n * @returns\n */\nexport function padEnd(source: string | any[], targetLength: number, padValue: any) {\n if (isString(source)) {\n return source.padEnd(targetLength, padValue);\n } else if (isArray(source)) {\n const sourceLength = source.length;\n if (sourceLength < targetLength) {\n const diff = targetLength - sourceLength;\n for (let i = 0; i < diff; i++) {\n source.push(padValue);\n }\n }\n }\n\n return source;\n}\n\n/**\n * @ignore\n * omit keys of an object.\n * @param obj\n * @param keys\n */\nexport function omit(obj: T, keys: string[]): T {\n if (typeof obj === 'object') {\n keys.forEach((key: string) => {\n delete obj[key];\n });\n }\n\n return obj;\n}\n\n/**\n * @ignore\n * @param sourceArray\n * @param targetArray\n * @param map\n */\nexport function uniq(sourceArray: any[], targetArray: any[] = [], map: Map = new Map()) {\n for (const source of sourceArray) {\n if (!map.has(source)) {\n targetArray.push(source);\n map.set(source, true);\n }\n }\n return targetArray;\n}\n","import { each } from '@antv/util';\nimport { DIRECTION } from '../constant';\nimport { Padding, Point, Region } from '../interface';\nimport { BBox as BBoxObject } from '../dependents';\n\n/**\n * 用于包围盒计算。\n */\nexport class BBox {\n /** x 轴坐标系 */\n public x: number;\n /** y 轴坐标系 */\n public y: number;\n /** 包围盒高度 */\n public height: number;\n /** 包围盒宽度 */\n public width: number;\n\n public static fromRange(minX: number, minY: number, maxX: number, maxY: number) {\n return new BBox(minX, minY, maxX - minX, maxY - minY);\n }\n\n public static fromObject(bbox: BBoxObject) {\n return new BBox(bbox.minX, bbox.minY, bbox.width, bbox.height);\n }\n\n constructor(x: number = 0, y: number = 0, width: number = 0, height: number = 0) {\n this.x = x;\n this.y = y;\n this.height = height;\n this.width = width;\n }\n\n public get minX(): number {\n return this.x;\n }\n\n public get maxX(): number {\n return this.x + this.width;\n }\n\n public get minY(): number {\n return this.y;\n }\n\n public get maxY(): number {\n return this.y + this.height;\n }\n\n public get tl(): Point {\n return { x: this.x, y: this.y };\n }\n\n public get tr(): Point {\n return { x: this.maxX, y: this.y };\n }\n\n public get bl(): Point {\n return { x: this.x, y: this.maxY };\n }\n\n public get br(): Point {\n return { x: this.maxX, y: this.maxY };\n }\n\n public get top(): Point {\n return {\n x: this.x + this.width / 2,\n y: this.minY,\n };\n }\n\n public get right(): Point {\n return {\n x: this.maxX,\n y: this.y + this.height / 2,\n };\n }\n public get bottom(): Point {\n return {\n x: this.x + this.width / 2,\n y: this.maxY,\n };\n }\n public get left(): Point {\n return {\n x: this.minX,\n y: this.y + this.height / 2,\n };\n }\n // end 计算属性\n\n /**\n * 包围盒是否相等\n * @param {BBox} bbox 包围盒\n * @returns 包围盒是否相等\n */\n public isEqual(bbox: BBox): boolean {\n return this.x === bbox.x && this.y === bbox.y && this.width === bbox.width && this.height === bbox.height;\n }\n\n /**\n * 是否包含了另一个包围盒\n * @param child\n */\n public contains(child: BBox): boolean {\n return child.minX >= this.minX && child.maxX <= this.maxX && child.minY >= this.minY && child.maxY <= this.maxY;\n }\n\n /**\n * 克隆包围盒\n * @returns 包围盒\n */\n public clone(): BBox {\n return new BBox(this.x, this.y, this.width, this.height);\n }\n\n /**\n * 取并集\n * @param subBBox\n */\n public add(...subBBox: BBox[]): BBox {\n const bbox = this.clone();\n each(subBBox, (b: BBox) => {\n bbox.x = Math.min(b.x, bbox.x);\n bbox.y = Math.min(b.y, bbox.y);\n bbox.width = Math.max(b.maxX, bbox.maxX) - bbox.x;\n bbox.height = Math.max(b.maxY, bbox.maxY) - bbox.y;\n });\n\n return bbox;\n }\n\n /**\n * 取交集\n * @param subBBox\n */\n public merge(...subBBox: BBox[]): BBox {\n const bbox = this.clone();\n each(subBBox, (b: BBox) => {\n bbox.x = Math.max(b.x, bbox.x);\n bbox.y = Math.max(b.y, bbox.y);\n bbox.width = Math.min(b.maxX, bbox.maxX) - bbox.x;\n bbox.height = Math.min(b.maxY, bbox.maxY) - bbox.y;\n });\n\n return bbox;\n }\n\n /**\n * bbox 剪裁\n * @param subBBox\n * @param direction\n */\n public cut(subBBox: BBox, direction: DIRECTION): BBox {\n const width = subBBox.width;\n const height = subBBox.height;\n\n switch (direction) {\n case DIRECTION.TOP:\n case DIRECTION.TOP_LEFT:\n case DIRECTION.TOP_RIGHT:\n return BBox.fromRange(this.minX, this.minY + height, this.maxX, this.maxY);\n\n case DIRECTION.RIGHT:\n case DIRECTION.RIGHT_TOP:\n case DIRECTION.RIGHT_BOTTOM:\n return BBox.fromRange(this.minX, this.minY, this.maxX - width, this.maxY);\n\n case DIRECTION.BOTTOM:\n case DIRECTION.BOTTOM_LEFT:\n case DIRECTION.BOTTOM_RIGHT:\n return BBox.fromRange(this.minX, this.minY, this.maxX, this.maxY - height);\n\n case DIRECTION.LEFT:\n case DIRECTION.LEFT_TOP:\n case DIRECTION.LEFT_BOTTOM:\n return BBox.fromRange(this.minX + width, this.minY, this.maxX, this.maxY);\n default:\n // 其他情况不裁剪,原样返回\n return this;\n }\n }\n\n /**\n * 收缩形成新的\n * @param gap\n */\n public shrink(gap: Padding): BBox {\n const [top, right, bottom, left] = gap;\n\n return new BBox(this.x + left, this.y + top, this.width - left - right, this.height - top - bottom);\n }\n\n /**\n * 扩张形成新的\n * @param gap\n */\n public expand(gap: Padding): BBox {\n const [top, right, bottom, left] = gap;\n\n return new BBox(this.x - left, this.y - top, this.width + left + right, this.height + top + bottom);\n }\n\n /**\n * get the gap of two bbox, if not exceed, then 0\n * @param bbox\n * @returns [top, right, bottom, left]\n */\n public exceed(bbox: BBox): Padding {\n return [\n Math.max(-this.minY + bbox.minY, 0),\n Math.max(this.maxX - bbox.maxX, 0),\n Math.max(this.maxY - bbox.maxY, 0),\n Math.max(-this.minX + bbox.minX, 0),\n ];\n }\n\n /**\n * 是否碰撞\n * @param bbox\n */\n public collide(bbox: BBox): boolean {\n return this.minX < bbox.maxX && this.maxX > bbox.minX && this.minY < bbox.maxY && this.maxY > bbox.minY;\n }\n\n /**\n * 获取包围盒大小\n * @returns 包围盒大小\n */\n public size(): number {\n return this.width * this.height;\n }\n\n /**\n * 点是否在 bbox 中\n * @param p\n */\n public isPointIn(p: Point) {\n return p.x >= this.minX && p.x <= this.maxX && p.y >= this.minY && p.y <= this.maxY;\n }\n}\n\n/**\n * 从一个 bbox 的 region 获取 bbox\n * @param bbox\n * @param region\n */\nexport const getRegionBBox = (bbox: BBox, region: Region): BBox => {\n const { start, end } = region;\n\n return new BBox(\n bbox.x + bbox.width * start.x,\n bbox.y + bbox.height * start.y,\n bbox.width * Math.abs(end.x - start.x),\n bbox.height * Math.abs(end.y - start.y)\n );\n};\n\n/**\n * 将 bbox 转换成 points\n * @param bbox\n */\nexport function toPoints(bbox: Partial): any[] {\n return [\n [bbox.minX, bbox.minY],\n [bbox.maxX, bbox.minY],\n [bbox.maxX, bbox.maxY],\n [bbox.minX, bbox.maxY],\n ];\n}\n","import { Coordinate } from '../dependents';\nimport { Point } from '../interface';\nimport { getSectorPath } from './graphics';\nimport { isBetween } from './helper';\nimport { BBox } from './bbox';\n\n/**\n * @ignore\n * Gets x dimension length\n * @param coordinate\n * @returns x dimension length\n */\nexport function getXDimensionLength(coordinate): number {\n if (coordinate.isPolar && !coordinate.isTransposed) {\n // 极坐标系下 width 为弧长\n return (coordinate.endAngle - coordinate.startAngle) * coordinate.getRadius();\n }\n\n // 直角坐标系\n const start = coordinate.convert({ x: 0, y: 0 });\n const end = coordinate.convert({ x: 1, y: 0 });\n // 坐标系有可能发生 transpose 等变换,所有通过两点之间的距离进行计算\n return Math.sqrt(Math.pow(end.x - start.x, 2) + Math.pow(end.y - start.y, 2));\n}\n\n/**\n * @ignore\n * Determines whether full circle is\n * @param coordinate\n * @returns true if full circle\n */\nexport function isFullCircle(coordinate: Coordinate): boolean {\n if (coordinate.isPolar) {\n const { startAngle, endAngle } = coordinate;\n return endAngle - startAngle === Math.PI * 2;\n }\n return false;\n}\n\n/**\n * @ignore\n * 获取当前点到坐标系圆心的距离\n * @param coordinate 坐标系\n * @param point 当前点\n * @returns distance to center\n */\nexport function getDistanceToCenter(coordinate: Coordinate, point: Point): number {\n const center = coordinate.getCenter() as Point;\n return Math.sqrt((point.x - center.x) ** 2 + (point.y - center.y) ** 2);\n}\n\n/**\n * @ignore\n * 坐标点是否在坐标系中\n * @param coordinate\n * @param point\n */\nexport function isPointInCoordinate(coordinate: Coordinate, point: Point) {\n let result = false;\n\n if (coordinate) {\n if (coordinate.type === 'theta') {\n const { start, end } = coordinate;\n result = isBetween(point.x, start.x, end.x) && isBetween(point.y, start.y, end.y);\n } else {\n const invertPoint = coordinate.invert(point);\n \n result = isBetween(invertPoint.x, 0, 1) && isBetween(invertPoint.y, 0, 1);\n }\n }\n\n return result;\n}\n\n/**\n * @ignore\n * 获取点到圆心的连线与水平方向的夹角\n */\nexport function getAngleByPoint(coordinate: Coordinate, point: Point): number {\n const center = coordinate.getCenter();\n return Math.atan2(point.y - center.y, point.x - center.x);\n}\n\n/**\n * @ignore\n * 获取同坐标系范围相同的剪切区域\n * @param coordinate\n * @returns\n */\nexport function getCoordinateClipCfg(coordinate: Coordinate, margin: number = 0) {\n const { start, end } = coordinate;\n const width = coordinate.getWidth();\n const height = coordinate.getHeight();\n\n if (coordinate.isPolar) {\n const { startAngle, endAngle } = coordinate;\n const center = coordinate.getCenter();\n const radius = coordinate.getRadius();\n\n return {\n type: 'path',\n startState: {\n path: getSectorPath(center.x, center.y, radius + margin, startAngle, startAngle),\n },\n endState: (ratio) => {\n const diff = (endAngle - startAngle) * ratio + startAngle;\n const path = getSectorPath(center.x, center.y, radius + margin, startAngle, diff);\n return {\n path,\n };\n },\n attrs: {\n path: getSectorPath(center.x, center.y, radius + margin, startAngle, endAngle),\n },\n };\n }\n\n let endState;\n if (coordinate.isTransposed) {\n endState = {\n height: height + margin * 2,\n };\n } else {\n endState = {\n width: width + margin * 2,\n };\n }\n\n return {\n type: 'rect',\n startState: {\n x: start.x - margin,\n y: end.y - margin,\n width: coordinate.isTransposed ? width + margin * 2 : 0,\n height: coordinate.isTransposed ? 0 : height + margin * 2,\n },\n endState,\n attrs: {\n x: start.x - margin,\n y: end.y - margin,\n width: width + margin * 2,\n height: height + margin * 2,\n },\n };\n}\n\n/**\n * 获取坐标系范围的 BBox\n * @param coordinate\n * @param margin\n */\nexport function getCoordinateBBox(coordinate: Coordinate, margin = 0) {\n const { start, end } = coordinate;\n const width = coordinate.getWidth();\n const height = coordinate.getHeight();\n const minX = Math.min(start.x, end.x);\n const minY = Math.min(start.y, end.y);\n\n return BBox.fromRange(minX - margin, minY - margin, minX + width + margin, minY + height + margin);\n}\n","import { firstValue, get, isEmpty, isNil, isNumber, isString, valuesOfKey } from '@antv/util';\nimport { GROUP_ATTRS } from '../constant';\nimport { getScale, Scale, Coordinate } from '../dependents';\nimport { LooseObject, ScaleOption, ViewCfg } from '../interface';\nimport { isFullCircle } from './coordinate';\n\nconst dateRegex =\n /^(?:(?!0000)[0-9]{4}([-/.]+)(?:(?:0?[1-9]|1[0-2])\\1(?:0?[1-9]|1[0-9]|2[0-8])|(?:0?[13-9]|1[0-2])\\1(?:29|30)|(?:0?[13578]|1[02])\\1(?:31))|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)([-/.]+)0?2\\2(?:29))(\\s+([01]|([01][0-9]|2[0-3])):([0-9]|[0-5][0-9]):([0-9]|[0-5][0-9]))?$/;\n\n/**\n * 获取字段对应数据的类型\n * @param field 数据字段名\n * @param data 数据源\n * @returns default type 返回对应的数据类型\n */\nfunction getDefaultType(value: any): string {\n let type = 'linear';\n if (dateRegex.test(value)) {\n type = 'timeCat';\n } else if (isString(value)) {\n type = 'cat';\n }\n return type;\n}\n\n/**\n * using the scale type if user specified, otherwise infer the type\n */\nexport function inferScaleType(scale: Scale, scaleDef: ScaleOption = {}, attrType: string, geometryType: string): string {\n if (scaleDef.type) return scaleDef.type;\n // identity scale 直接返回\n // geometry 类型有: edge,heatmap,interval,line,path,point,polygon,schema,voilin等;理论上,interval 下,可以用 linear scale 作为分组字段\n if (scale.type !== 'identity' && GROUP_ATTRS.includes(attrType) && ['interval'].includes(geometryType)) {\n return 'cat';\n }\n return scale.isCategory ? 'cat' : scale.type;\n}\n\n/**\n * @ignore\n * 为指定的 `field` 字段数据创建 scale\n * @param field 字段名\n * @param [data] 数据集,可为空\n * @param [scaleDef] 列定义,可为空\n * @returns scale 返回创建的 Scale 实例\n */\nexport function createScaleByField(field: string | number, data?: LooseObject[] | [], scaleDef?: ScaleOption): Scale {\n const validData = data || [];\n\n if (isNumber(field) || (isNil(firstValue(validData, field)) && isEmpty(scaleDef))) {\n const Identity = getScale('identity');\n return new Identity({\n field: field.toString(),\n values: [field],\n });\n }\n\n const values = valuesOfKey(validData, field);\n\n // 如果已经定义过这个度量 (fix-later 单纯从数据中,推断 scale type 是不精确的)\n const type = get(scaleDef, 'type', getDefaultType(values[0]));\n const ScaleCtor = getScale(type);\n return new ScaleCtor({\n field,\n values,\n ...scaleDef,\n });\n}\n\n/**\n * @ignore\n * 同步 scale\n * @todo 是否可以通过 scale.update() 方法进行更新\n * @param scale 需要同步的 scale 实例\n * @param newScale 同步源 Scale\n */\nexport function syncScale(scale: Scale, newScale: Scale) {\n if (scale.type !== 'identity' && newScale.type !== 'identity') {\n const obj = {};\n for (const k in newScale) {\n if (Object.prototype.hasOwnProperty.call(newScale, k)) {\n obj[k] = newScale[k];\n }\n }\n\n scale.change(obj);\n }\n}\n\n/**\n * @ignore\n * get the scale name, if alias exist, return alias, or else field\n * @param scale\n * @returns the name of field\n */\nexport function getName(scale: Scale): string {\n return scale.alias || scale.field;\n}\n\n/**\n * 根据 scale values 和 coordinate 获取分类默认 range\n * @param scale 需要获取的 scale 实例\n * @param coordinate coordinate 实例\n * @param theme theme\n */\nexport function getDefaultCategoryScaleRange(\n scale: Scale,\n coordinate: Coordinate,\n theme: ViewCfg['theme']\n): Scale['range'] {\n const { values } = scale;\n const count = values.length;\n let range;\n\n if (count === 1) {\n range = [0.5, 1]; // 只有一个分类时,防止计算出现 [0.5,0.5] 的状态\n } else {\n let widthRatio = 1;\n let offset = 0;\n\n if (isFullCircle(coordinate)) {\n if (!coordinate.isTransposed) {\n range = [0, 1 - 1 / count];\n } else {\n widthRatio = get(theme, 'widthRatio.multiplePie', 1 / 1.3);\n offset = (1 / count) * widthRatio;\n range = [offset / 2, 1 - offset / 2];\n }\n } else {\n offset = 1 / count / 2; // 两边留下分类空间的一半\n range = [offset, 1 - offset]; // 坐标轴最前面和最后面留下空白防止绘制柱状图时\n }\n }\n return range;\n}\n\n/**\n * @function y轴scale的max\n * @param {yScale}\n */\nexport function getMaxScale(scale: Scale) {\n // 过滤values[]中 NaN/undefined/null 等\n const values = scale.values.filter((item) => !isNil(item) && !isNaN(item));\n\n return Math.max(...values, isNil(scale.max) ? -Infinity : scale.max);\n}\n","import { deepMix, get, isBoolean } from '@antv/util';\nimport { DIRECTION } from '../constant';\nimport { Coordinate, Scale } from '../dependents';\nimport { AxisCfg, AxisOption, Point, Region } from '../interface';\nimport { getName } from './scale';\nimport { vec2 } from '@antv/matrix-util';\n\n/**\n * @ignore\n * get axis relative region ( 0 ~ 1) by direction when coordinate is rect\n * @param direction\n * @returns axis coordinate region\n */\nexport function getLineAxisRelativeRegion(direction: DIRECTION): Region {\n let start;\n let end;\n\n switch (direction) {\n case DIRECTION.TOP:\n start = { x: 0, y: 1 };\n end = { x: 1, y: 1 };\n break;\n case DIRECTION.RIGHT:\n start = { x: 1, y: 0 };\n end = { x: 1, y: 1 };\n break;\n case DIRECTION.BOTTOM:\n start = { x: 0, y: 0 };\n end = { x: 1, y: 0 };\n break;\n case DIRECTION.LEFT:\n start = { x: 0, y: 0 };\n end = { x: 0, y: 1 };\n break;\n default:\n start = end = { x: 0, y: 0 };\n }\n\n return { start, end };\n}\n\n/**\n * @ignore\n * get axis relative region ( 0 ~ 1) by direction when coordinate is polar\n * @param coordinate\n * @returns axis coordinate region\n */\nexport function getCircleAxisRelativeRegion(coordinate: Coordinate) {\n let start;\n let end;\n if (coordinate.isTransposed) {\n start = {\n x: 0,\n y: 0,\n };\n end = {\n x: 1,\n y: 0,\n };\n } else {\n start = {\n x: 0,\n y: 0,\n };\n end = {\n x: 0,\n y: 1,\n };\n }\n\n return { start, end };\n}\n\n/**\n * @ignore\n * get the axis region from coordinate\n * @param coordinate\n * @param direction\n * @returns the axis region (start point, end point)\n */\nexport function getAxisRegion(coordinate: Coordinate, direction: DIRECTION): Region {\n let region = { start: { x: 0, y: 0 }, end: { x: 0, y: 0 } };\n if (coordinate.isRect) {\n region = getLineAxisRelativeRegion(direction);\n } else if (coordinate.isPolar) {\n region = getCircleAxisRelativeRegion(coordinate);\n }\n\n const { start, end } = region;\n return {\n start: coordinate.convert(start),\n end: coordinate.convert(end),\n };\n}\n\n/**\n * @ignore\n * get axis factor\n * @param coordinate\n * @param direction\n * @returns factor\n */\nexport function getAxisFactor(coordinate: Coordinate, direction: DIRECTION): number {\n // rect coordinate, by direction\n if (coordinate.isRect) {\n return coordinate.isTransposed\n ? [DIRECTION.RIGHT, DIRECTION.BOTTOM].includes(direction)\n ? 1\n : -1\n : [DIRECTION.BOTTOM, DIRECTION.RIGHT].includes(direction)\n ? -1\n : 1;\n }\n\n // polar y axis, by angle\n if (coordinate.isPolar) {\n const startAngle = coordinate.x.start;\n return startAngle < 0 ? -1 : 1;\n }\n\n return 1;\n}\n\n/**\n * @ignore\n * whether the axis isVertical\n * @param region\n * @returns isVertical\n */\nexport function isVertical(region: Region): boolean {\n const { start, end } = region;\n\n return start.x === end.x;\n}\n\n/**\n * @ignore\n * get factor by region (real position)\n * @param region\n * @param center\n * @returns factor\n */\nexport function getAxisFactorByRegion(region: Region, center: Point): number {\n const { start, end } = region;\n\n const isAxisVertical = isVertical(region);\n\n // 垂直\n if (isAxisVertical) {\n // 左方,从下到上、右方,从上到下\n if ((start.y - end.y) * (center.x - start.x) > 0) {\n return 1;\n } else {\n return -1;\n }\n } else {\n // 下方,从左到右、上方,从右到做\n if ((end.x - start.x) * (start.y - center.y) > 0) {\n return -1;\n } else {\n return 1;\n }\n }\n}\n\n/**\n * @ignore\n * get the axis cfg from theme, will mix the common cfg of legend theme\n *\n * @param theme view theme object\n * @param direction axis direction\n * @returns axis theme cfg\n */\nexport function getAxisThemeCfg(theme: object, direction: string): object {\n const axisTheme = get(theme, ['components', 'axis'], {});\n return deepMix({}, get(axisTheme, ['common'], {}), deepMix({}, get(axisTheme, [direction], {})));\n}\n\n/**\n * get the options of axis title,mix the cfg from theme, avoid common themeCfg not work\n * @param theme\n * @param direction\n * @param axisOptions\n * @returns axis title options\n */\nexport function getAxisTitleOptions(theme: object, direction: string, axisOptions?: object): object {\n const axisTheme = get(theme, ['components', 'axis'], {});\n return deepMix(\n {},\n get(axisTheme, ['common', 'title'], {}),\n deepMix({}, get(axisTheme, [direction, 'title'], {})),\n axisOptions\n );\n}\n\n/**\n * @ignore\n * get circle axis center and radius\n * @param coordinate\n */\nexport function getCircleAxisCenterRadius(coordinate: Coordinate) {\n // @ts-ignore\n const { x, y, circleCenter: center } = coordinate;\n const isReflectY = y.start > y.end;\n const start = coordinate.isTransposed\n ? coordinate.convert({\n x: isReflectY ? 0 : 1,\n y: 0,\n })\n : coordinate.convert({\n x: 0,\n y: isReflectY ? 0 : 1,\n });\n\n const startVector: [number, number] = [start.x - center.x, start.y - center.y];\n const normalVector: [number, number] = [1, 0];\n const startAngle =\n start.y > center.y ? vec2.angle(startVector, normalVector) : vec2.angle(startVector, normalVector) * -1;\n const endAngle = startAngle + (x.end - x.start);\n const radius = Math.sqrt((start.x - center.x) ** 2 + (start.y - center.y) ** 2);\n\n return {\n center,\n radius,\n startAngle,\n endAngle,\n };\n}\n\n/**\n * @ignore\n * 从配置中获取单个字段的 axis 配置\n * @param axes\n * @param field\n * @returns the axis option of field\n */\nexport function getAxisOption(axes: Record | boolean, field: string) {\n if (isBoolean(axes)) {\n return axes === false ? false : {};\n }\n return get(axes, [field]);\n}\n\n/**\n * @ignore\n * 如果配置了 position,则使用配置\n * @param axisOption\n * @param def\n */\nexport function getAxisDirection(axisOption: AxisOption, def: DIRECTION): DIRECTION {\n return get(axisOption, 'position', def);\n}\n\n/**\n * 获取 axis 的 title 文本\n * @param scale\n * @param axisOption\n */\nexport function getAxisTitleText(scale: Scale, axisOption: AxisCfg): string {\n return get(axisOption, ['title', 'text'], getName(scale));\n}\n","import { deepMix, each, every, get, isNil, isNumber } from '@antv/util';\nimport { LAYER } from '../constant';\nimport { IGroup } from '../dependents';\nimport { AxisCfg, Condition, Datum, FacetCfg, FacetData, FacetDataFilter, Region } from '../interface';\n\nimport View from '../chart/view';\nimport { getAxisOption } from '../util/axis';\n\n/**\n * facet 基类\n * - 定义生命周期,方便自定义 facet\n * - 提供基础的生命流程方法\n *\n * 生命周期:\n *\n * 初始化 init\n * 1. 初始化容器\n * 2. 数据分面,生成分面布局信息\n *\n * 渲染阶段 render\n * 1. view 创建\n * 2. title\n * 3. axis\n *\n * 清除阶段 clear\n * 1. 清除 view\n *\n * 销毁阶段 destroy\n * 1. clear\n * 2. 清除事件\n * 3. 清除 group\n */\nexport abstract class Facet = FacetCfg, F extends FacetData = FacetData> {\n /** 分面所在的 view */\n public view: View;\n /** 分面容器 */\n public container: IGroup;\n /** 是否销毁 */\n public destroyed: boolean = false;\n\n /** 分面的配置项 */\n protected cfg: C;\n /** 分面之后的所有分面数据结构 */\n protected facets: F[] = [];\n\n constructor(view: View, cfg: C) {\n this.view = view;\n this.cfg = deepMix({}, this.getDefaultCfg(), cfg);\n }\n\n /**\n * 初始化过程\n */\n public init() {\n // 初始化容器\n if (!this.container) {\n this.container = this.createContainer();\n }\n\n // 生成分面布局信息\n const data = this.view.getData();\n this.facets = this.generateFacets(data);\n }\n\n /**\n * 渲染分面,由上层 view 调用。包括:\n * - 分面 view\n * - 轴\n * - title\n *\n * 子类可以复写,添加一些其他组件,比如滚动条等\n */\n public render() {\n this.renderViews();\n }\n\n /**\n * 更新 facet\n */\n public update() {\n // 其实不用做任何事情,因为 facet 最终生成的 View 和 Geometry 都在父 view 的更新中处理了\n }\n\n /**\n * 清空,clear 之后如果还需要使用,需要重新调用 init 初始化过程\n * 一般在数据有变更的时候调用,重新进行数据的分面逻辑\n */\n public clear() {\n this.clearFacetViews();\n }\n\n /**\n * 销毁\n */\n public destroy() {\n this.clear();\n\n if (this.container) {\n this.container.remove(true);\n this.container = undefined;\n }\n\n this.destroyed = true;\n this.view = undefined;\n this.facets = [];\n }\n\n /**\n * 根据 facet 生成 view,可以给上层自定义使用\n * @param facet\n */\n protected facetToView(facet: F): View {\n const { region, data, padding = this.cfg.padding } = facet;\n\n const view = this.view.createView({\n region,\n padding,\n });\n\n // 设置分面的数据\n view.data(data || []);\n facet.view = view;\n\n // 前置钩子\n this.beforeEachView(view, facet);\n\n const { eachView } = this.cfg;\n if (eachView) {\n eachView(view, facet);\n }\n\n // 后置钩子\n this.afterEachView(view, facet);\n\n return view;\n }\n\n // 创建容器\n private createContainer(): IGroup {\n const foregroundGroup = this.view.getLayer(LAYER.FORE);\n return foregroundGroup.addGroup();\n }\n\n /**\n * 初始化 view\n */\n private renderViews() {\n this.createFacetViews();\n }\n\n /**\n * 创建 分面 view\n */\n private createFacetViews(): View[] {\n // 使用分面数据 创建分面 view\n return this.facets.map((facet): View => {\n return this.facetToView(facet);\n });\n }\n\n /**\n * 从 view 中清除 facetView\n */\n private clearFacetViews() {\n // 从 view 中移除分面 view\n each(this.facets, (facet) => {\n if (facet.view) {\n this.view.removeView(facet.view);\n facet.view = undefined;\n }\n });\n }\n\n /**\n * 解析 spacing\n */\n private parseSpacing() {\n /**\n * @example\n *\n * // 仅使用百分比或像素值\n * // 横向间隔为 10%,纵向间隔为 10%\n * ['10%', '10%']\n * // 横向间隔为 10px,纵向间隔为 10px\n * [10, 10]\n *\n * // 同时使用百分比和像素值\n * ['10%', 10]\n * // 横向间隔为 10%,纵向间隔为 10px\n */\n const { width, height } = this.view.viewBBox;\n const { spacing } = this.cfg;\n return spacing.map((s: number, idx: number) => {\n if (isNumber(s)) return s / (idx === 0 ? width : height);\n else return parseFloat(s) / 100;\n });\n }\n\n // 其他一些提供给子类使用的方法\n\n /**\n * 获取这个字段对应的所有值,数组\n * @protected\n * @param data 数据\n * @param field 字段名\n * @return 字段对应的值\n */\n protected getFieldValues(data: Datum[], field: string): string[] {\n const rst = [];\n const cache: Record = {};\n\n // 去重、去除 Nil 值\n each(data, (d: Datum) => {\n const value = d[field];\n if (!isNil(value) && !cache[value]) {\n rst.push(value);\n cache[value] = true;\n }\n });\n\n return rst;\n }\n\n /**\n * 获得每个分面的 region,平分区域\n * @param rows row 总数\n * @param cols col 总数\n * @param xIndex x 方向 index\n * @param yIndex y 方向 index\n */\n protected getRegion(rows: number, cols: number, xIndex: number, yIndex: number): Region {\n const [xSpacing, ySpacing] = this.parseSpacing();\n // 每两个分面区域横向间隔xSPacing, 纵向间隔ySpacing\n // 每个分面区域的横纵占比\n /**\n * ratio * num + spacing * (num - 1) = 1\n * => ratio = (1 - (spacing * (num - 1))) / num\n * = (1 + spacing) / num - spacing\n *\n * num 对应 cols/rows\n * spacing 对应 xSpacing/ySpacing\n */\n const xRatio = (1 + xSpacing) / (cols === 0 ? 1 : cols) - xSpacing;\n const yRatio = (1 + ySpacing) / (rows === 0 ? 1 : rows) - ySpacing;\n\n // 得到第 index 个分面区域百分比位置\n const start = {\n x: (xRatio + xSpacing) * xIndex,\n y: (yRatio + ySpacing) * yIndex,\n };\n const end = {\n x: start.x + xRatio,\n y: start.y + yRatio,\n };\n return { start, end };\n }\n\n protected getDefaultCfg() {\n return {\n eachView: undefined,\n showTitle: true,\n spacing: [0, 0],\n padding: 10,\n fields: [],\n };\n }\n\n /**\n * 默认的 title 样式,因为有的分面是 title,有的分面配置是 columnTitle、rowTitle\n */\n protected getDefaultTitleCfg() {\n // @ts-ignore\n const fontFamily = this.view.getTheme().fontFamily;\n return {\n style: {\n fontSize: 14,\n fill: '#666',\n fontFamily,\n },\n };\n }\n\n /**\n * 处理 axis 的默认配置\n * @param view\n * @param facet\n */\n protected processAxis(view: View, facet: F) {\n const options = view.getOptions();\n\n const coordinateOption = options.coordinate;\n const geometries = view.geometries;\n\n const coordinateType = get(coordinateOption, 'type', 'rect');\n\n if (coordinateType === 'rect' && geometries.length) {\n if (isNil(options.axes)) {\n // @ts-ignore\n options.axes = {};\n }\n const axes = options.axes;\n\n const [x, y] = geometries[0].getXYFields();\n\n const xOption = getAxisOption(axes, x);\n const yOption = getAxisOption(axes, y);\n\n if (xOption !== false) {\n options.axes[x] = this.getXAxisOption(x, axes, xOption, facet);\n }\n\n if (yOption !== false) {\n options.axes[y] = this.getYAxisOption(y, axes, yOption, facet);\n }\n }\n }\n\n /**\n * 获取分面数据\n * @param conditions\n */\n protected getFacetDataFilter(conditions: Condition[]): FacetDataFilter {\n return (datum: Datum) => {\n // 过滤出全部满足条件的数据\n return every(conditions, (condition) => {\n const { field, value } = condition;\n\n if (!isNil(value) && field) {\n return datum[field] === value;\n }\n return true;\n });\n };\n }\n\n /**\n * @override 开始处理 eachView\n * @param view\n * @param facet\n */\n protected abstract beforeEachView(view: View, facet: F);\n\n /**\n * @override 处理 eachView 之后\n * @param view\n * @param facet\n */\n protected abstract afterEachView(view: View, facet: F);\n\n /**\n * @override 生成分面数据,包含布局\n * @param data\n */\n protected abstract generateFacets(data: Datum[]): F[];\n\n /**\n * 获取 x 轴的配置\n * @param x\n * @param axes\n * @param option\n * @param facet\n */\n protected abstract getXAxisOption(x: string, axes: any, option: AxisCfg, facet: F): object;\n\n /**\n * 获取 y 轴的配置\n * @param y\n * @param axes\n * @param option\n * @param facet\n */\n protected abstract getYAxisOption(y: string, axes: any, option: AxisCfg, facet: F): object;\n}\n","import { lowerCase } from '@antv/util';\nimport { FacetCtor } from '../interface';\nexport { Facet } from './facet';\n\n/**\n * 所有的 Facet 类\n */\nconst Facets: Record = {};\n\n/**\n * 根据 type 获取 facet 类\n * @param type 分面类型\n */\nexport const getFacet = (type: string): FacetCtor => {\n return Facets[lowerCase(type)];\n};\n\n/**\n * 注册一个 Facet 类\n * @param type 分面类型\n * @param ctor 分面类\n */\nexport const registerFacet = (type: string, ctor: FacetCtor) => {\n Facets[lowerCase(type)] = ctor;\n};\n","import { assign } from '@antv/util';\nimport { IAction, IInteractionContext, LooseObject } from '../../interface';\n\n/**\n * Action 的基类\n */\nabstract class Action implements IAction {\n /** Action 名字 */\n public name;\n /** 上下文对象 */\n public context: IInteractionContext;\n /** Action 配置 */\n protected cfg: T;\n /** 配置项的字段,自动负值到 this 上 */\n protected cfgFields: string[];\n\n constructor(context: IInteractionContext, cfg?: T) {\n this.context = context;\n this.cfg = cfg;\n context.addAction(this);\n }\n\n /**\n * 设置配置项传入的值\n * @param cfg\n */\n protected applyCfg(cfg) {\n assign(this, cfg);\n }\n\n /**\n * Inits action,提供给子类用于继承\n */\n public init() {\n this.applyCfg(this.cfg);\n }\n\n /**\n * Destroys action\n */\n public destroy() {\n // 移除 action\n this.context.removeAction(this);\n // 清空\n this.context = null;\n }\n}\n\nexport default Action;\n","import { ActionCallback } from '../../interface';\nimport Action from './base';\n\n/** 回调函数构建的 Action */\nexport default class CallbackAction extends Action {\n /**\n * 回调函数\n */\n public callback: ActionCallback;\n /**\n * 执行\n */\n public execute() {\n if (this.callback) {\n this.callback(this.context);\n }\n }\n /**\n * 销毁\n */\n public destroy() {\n super.destroy();\n this.callback = null;\n }\n}\n","import { ActionCallback, IInteractionContext, LooseObject } from '../../interface';\nimport Action from './base';\nimport CallbackAction from './callback';\nimport { get } from '@antv/util';\n\n/** Action 构造函数 */\ntype ActionConstructor = new (context: IInteractionContext, cfg?: LooseObject) => Action;\n\n/** @ignore */\ninterface ActionOption {\n ActionClass: ActionConstructor;\n cfg: LooseObject;\n}\n\n// Action 类的缓存\nconst ActionCache: Record = {};\n\n/**\n * 根据名称获取 Action 实例\n * @param actionName - action 的名称\n * @param context 上下文\n * @returns Action 实例\n */\nexport function createAction(actionName: string, context: IInteractionContext): Action {\n const actionOption = ActionCache[actionName];\n let action = null;\n if (actionOption) {\n const { ActionClass, cfg } = actionOption;\n action = new ActionClass(context, cfg);\n action.name = actionName;\n action.init();\n }\n return action;\n}\n\n/**\n * 根据 action 的 name 获取定义的类\n * @param actionName action 的 name\n */\nexport function getActionClass(actionName: string): ActionConstructor {\n const actionOption = ActionCache[actionName];\n return get(actionOption, 'ActionClass');\n}\n\n/**\n * 注册 Action\n * @param actionName - action 的名称\n * @param ActionClass - 继承自 action 的类\n */\nexport function registerAction(actionName: string, ActionClass: ActionConstructor, cfg?: LooseObject) {\n ActionCache[actionName] = {\n ActionClass,\n cfg,\n };\n}\n\n/**\n * 取消注册 Action\n * @param actionName action 名称\n */\nexport function unregisterAction(actionName: string) {\n delete ActionCache[actionName];\n}\n\n/**\n * 根据回调函数获取 Action 实例\n * @param callback - action 的回调函数\n * @param context 上下文\n * @returns Action 实例\n */\nexport function createCallbackAction(callback: ActionCallback, context: IInteractionContext): CallbackAction {\n const action = new CallbackAction(context);\n action.callback = callback;\n action.name = 'callback';\n return action;\n}\n","import { vec2 } from '@antv/matrix-util';\nimport { each } from '@antv/util';\nimport { Coordinate, PathCommand } from '../../../dependents';\nimport { Point, Position } from '../../../interface';\nimport { getDistanceToCenter } from '../../../util/coordinate';\n\nfunction _points2path(points: Point[], isInCircle: boolean): PathCommand[] {\n const path = [];\n if (points.length) {\n path.push(['M', points[0].x, points[0].y]);\n for (let i = 1, length = points.length; i < length; i += 1) {\n const item = points[i];\n path.push(['L', item.x, item.y]);\n }\n\n if (isInCircle) {\n path.push(['Z']);\n }\n }\n\n return path;\n}\n\nfunction _convertArr(arr: number[], coord: Coordinate): any[] {\n const tmp = [arr[0]];\n for (let i = 1, len = arr.length; i < len; i = i + 2) {\n const point = coord.convert({\n x: arr[i],\n y: arr[i + 1],\n });\n tmp.push(point.x, point.y);\n }\n return tmp;\n}\nfunction _convertArcPath(path: PathCommand, coord: Coordinate): any[] {\n const { isTransposed } = coord;\n const r = path[1];\n const x = path[6];\n const y = path[7];\n const point = coord.convert({ x, y });\n const direction = isTransposed ? 0 : 1;\n return ['A', r, r, 0, 0, direction, point.x, point.y];\n}\n\nfunction _convertPolarPath(pre: PathCommand, cur: PathCommand, coord: Coordinate): PathCommand[] {\n const { isTransposed, startAngle, endAngle } = coord;\n const prePoint =\n pre[0].toLowerCase() === 'a'\n ? {\n x: pre[6],\n y: pre[7],\n }\n : {\n x: pre[1],\n y: pre[2],\n };\n const curPoint = {\n x: cur[1],\n y: cur[2],\n };\n const rst = [];\n const xDim = isTransposed ? 'y' : 'x';\n const angleRange = Math.abs(curPoint[xDim] - prePoint[xDim]) * (endAngle - startAngle);\n const direction = curPoint[xDim] >= prePoint[xDim] ? 1 : 0; // 圆弧的方向\n const flag = angleRange > Math.PI ? 1 : 0; // 大弧还是小弧标志位\n const convertPoint = coord.convert(curPoint);\n const r = getDistanceToCenter(coord, convertPoint);\n if (r >= 0.5) {\n // 小于1像素的圆在图像上无法识别\n if (angleRange === Math.PI * 2) {\n const middlePoint = {\n x: (curPoint.x + prePoint.x) / 2,\n y: (curPoint.y + prePoint.y) / 2,\n };\n const middleConvertPoint = coord.convert(middlePoint);\n rst.push(['A', r, r, 0, flag, direction, middleConvertPoint.x, middleConvertPoint.y]);\n rst.push(['A', r, r, 0, flag, direction, convertPoint.x, convertPoint.y]);\n } else {\n rst.push(['A', r, r, 0, flag, direction, convertPoint.x, convertPoint.y]);\n }\n }\n return rst;\n}\n\n// 当存在整体的圆时,去除圆前面和后面的线,防止出现直线穿过整个圆的情形\nfunction _filterFullCirleLine(path: PathCommand[]) {\n each(path, (subPath, index) => {\n const cur = subPath;\n if (cur[0].toLowerCase() === 'a') {\n const pre = path[index - 1];\n const next = path[index + 1];\n if (next && next[0].toLowerCase() === 'a') {\n if (pre && pre[0].toLowerCase() === 'l') {\n pre[0] = 'M';\n }\n } else if (pre && pre[0].toLowerCase() === 'a') {\n if (next && next[0].toLowerCase() === 'l') {\n next[0] = 'M';\n }\n }\n }\n });\n}\n\n/**\n * @ignore\n * 计算光滑的贝塞尔曲线\n */\nexport const smoothBezier = (\n points: Position[],\n smooth: number,\n isLoop: boolean,\n constraint: Position[]\n): Position[] => {\n const cps = [];\n const hasConstraint = !!constraint;\n\n let prevPoint: Position;\n let nextPoint: Position;\n let min: Position;\n let max: Position;\n let nextCp0: Position;\n let cp1: Position;\n let cp0: Position;\n\n if (hasConstraint) {\n [min, max] = constraint;\n for (let i = 0, l = points.length; i < l; i++) {\n const point = points[i];\n min = vec2.min([0, 0], min, point) as [number, number];\n max = vec2.max([0, 0], max, point) as [number, number];\n }\n }\n\n for (let i = 0, len = points.length; i < len; i++) {\n const point = points[i];\n if (i === 0 && !isLoop) {\n cp0 = point;\n } else if (i === len - 1 && !isLoop) {\n cp1 = point;\n cps.push(cp0);\n cps.push(cp1);\n } else {\n prevPoint = points[isLoop ? (i ? i - 1 : len - 1) : i - 1];\n nextPoint = points[isLoop ? (i + 1) % len : i + 1];\n\n let v: [number, number] = [0, 0];\n v = vec2.sub(v, nextPoint, prevPoint) as [number, number];\n v = vec2.scale(v, v, smooth) as [number, number];\n\n let d0 = vec2.distance(point, prevPoint);\n let d1 = vec2.distance(point, nextPoint);\n\n const sum = d0 + d1;\n if (sum !== 0) {\n d0 /= sum;\n d1 /= sum;\n }\n\n let v1 = vec2.scale([0, 0], v, -d0);\n let v2 = vec2.scale([0, 0], v, d1);\n\n cp1 = vec2.add([0, 0], point, v1) as Position;\n nextCp0 = vec2.add([0, 0], point, v2) as Position;\n\n // 下一个控制点必须在这个点和下一个点之间\n nextCp0 = vec2.min([0, 0], nextCp0, vec2.max([0, 0], nextPoint, point)) as Position;\n nextCp0 = vec2.max([0, 0], nextCp0, vec2.min([0, 0], nextPoint, point)) as Position;\n\n // 重新计算 cp1 的值\n v1 = vec2.sub([0, 0], nextCp0, point);\n v1 = vec2.scale([0, 0], v1, -d0 / d1);\n cp1 = vec2.add([0, 0], point, v1) as Position;\n\n // 上一个控制点必须要在上一个点和这一个点之间\n cp1 = vec2.min([0, 0], cp1, vec2.max([0, 0], prevPoint, point)) as Position;\n cp1 = vec2.max([0, 0], cp1, vec2.min([0, 0], prevPoint, point)) as Position;\n\n // 重新计算 nextCp0 的值\n v2 = vec2.sub([0, 0], point, cp1);\n v2 = vec2.scale([0, 0], v2, d1 / d0);\n nextCp0 = vec2.add([0, 0], point, v2) as Position;\n\n if (hasConstraint) {\n cp1 = vec2.max([0, 0], cp1, min) as Position;\n cp1 = vec2.min([0, 0], cp1, max) as Position;\n nextCp0 = vec2.max([0, 0], nextCp0, min) as Position;\n nextCp0 = vec2.min([0, 0], nextCp0, max) as Position;\n }\n\n cps.push(cp0);\n cps.push(cp1);\n cp0 = nextCp0;\n }\n }\n\n if (isLoop) {\n cps.push(cps.shift());\n }\n\n return cps;\n};\n\n/**\n * @ignore\n * 贝塞尔曲线\n */\nexport function catmullRom2bezier(crp: number[], z: boolean, constraint: Position[]): PathCommand[] {\n const isLoop = !!z;\n const pointList = [];\n for (let i = 0, l = crp.length; i < l; i += 2) {\n pointList.push([crp[i], crp[i + 1]]);\n }\n\n const controlPointList = smoothBezier(pointList, 0.4, isLoop, constraint);\n const len = pointList.length;\n const d1 = [];\n\n let cp1: Position;\n let cp2: Position;\n let p: Position;\n\n for (let i = 0; i < len - 1; i++) {\n cp1 = controlPointList[i * 2];\n cp2 = controlPointList[i * 2 + 1];\n p = pointList[i + 1];\n\n d1.push(['C', cp1[0], cp1[1], cp2[0], cp2[1], p[0], p[1]]);\n }\n\n if (isLoop) {\n cp1 = controlPointList[len];\n cp2 = controlPointList[len + 1];\n p = pointList[0];\n\n d1.push(['C', cp1[0], cp1[1], cp2[0], cp2[1], p[0], p[1]]);\n }\n return d1;\n}\n\n/**\n * @ignore\n * 将点连接成路径 path\n */\nexport function getLinePath(points: Point[], isInCircle?: boolean): PathCommand[] {\n return _points2path(points, isInCircle);\n}\n\n/**\n * @ignore\n * 根据关键点获取限定了范围的平滑线\n */\nexport function getSplinePath(points: Point[], isInCircle?: boolean, constaint?: Position[]): PathCommand[] {\n const data = [];\n const first = points[0];\n let prePoint = null;\n if (points.length <= 2) {\n // 两点以内直接绘制成路径\n return getLinePath(points, isInCircle);\n }\n for (let i = 0, len = points.length; i < len; i++) {\n const point = points[i];\n if (!prePoint || !(prePoint.x === point.x && prePoint.y === point.y)) {\n data.push(point.x);\n data.push(point.y);\n prePoint = point;\n }\n }\n const constraint = constaint || [\n // 范围\n [0, 0],\n [1, 1],\n ];\n const splinePath = catmullRom2bezier(data, isInCircle, constraint);\n splinePath.unshift(['M', first.x, first.y]);\n return splinePath;\n}\n\n/**\n * @ignore\n * 将归一化后的路径数据转换成坐标\n */\nexport function convertNormalPath(coord, path: PathCommand[]): PathCommand[] {\n const tmp = [];\n each(path, (subPath) => {\n const action = subPath[0];\n switch (action.toLowerCase()) {\n case 'm':\n case 'l':\n case 'c':\n tmp.push(_convertArr(subPath, coord));\n break;\n case 'a':\n tmp.push(_convertArcPath(subPath, coord));\n break;\n case 'z':\n default:\n tmp.push(subPath);\n break;\n }\n });\n return tmp;\n}\n\n/**\n * @ignore\n * 将路径转换为极坐标下的真实路径\n */\nexport function convertPolarPath(coord, path: PathCommand[]): PathCommand[] {\n let tmp = [];\n let pre: PathCommand;\n let cur: PathCommand;\n let transposed: boolean;\n let equals: boolean;\n each(path, (subPath, index) => {\n const action = subPath[0];\n\n switch (action.toLowerCase()) {\n case 'm':\n case 'c':\n case 'q':\n tmp.push(_convertArr(subPath, coord));\n break;\n case 'l':\n pre = path[index - 1];\n cur = subPath;\n transposed = coord.isTransposed;\n // 是否半径相同,转换成圆弧\n equals = transposed ? pre[pre.length - 2] === cur[1] : pre[pre.length - 1] === cur[2];\n if (equals) {\n tmp = tmp.concat(_convertPolarPath(pre, cur, coord));\n } else {\n // y 不相等,所以直接转换\n tmp.push(_convertArr(subPath, coord));\n }\n break;\n case 'a':\n tmp.push(_convertArcPath(subPath, coord));\n break;\n case 'z':\n default:\n tmp.push(subPath);\n break;\n }\n });\n _filterFullCirleLine(tmp); // 过滤多余的直线\n return tmp;\n}\n","import { isArray } from '@antv/util';\n\nconst SPACES = '\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029';\nconst PATH_COMMAND = new RegExp('([a-z])[' + SPACES + ',]*((-?\\\\d*\\\\.?\\\\d*(?:e[\\\\-+]?\\\\d+)?[' + SPACES + ']*,?[' + SPACES + ']*)+)', 'ig');\nconst PATH_VALUES = new RegExp('(-?\\\\d*\\\\.?\\\\d*(?:e[\\\\-+]?\\\\d+)?)[' + SPACES + ']*,?[' + SPACES + ']*', 'ig');\n\n// Parses given path string into an array of arrays of path segments\nexport default function parsePathString(pathString: string) {\n if (!pathString) {\n return null;\n }\n\n if (isArray(pathString)) {\n return pathString;\n }\n const paramCounts = {\n a: 7,\n c: 6,\n o: 2,\n h: 1,\n l: 2,\n m: 2,\n r: 4,\n q: 4,\n s: 4,\n t: 2,\n v: 1,\n u: 3,\n z: 0,\n };\n const data = [];\n\n String(pathString).replace(PATH_COMMAND, function (a, b, c) {\n const params = [];\n let name = b.toLowerCase();\n c.replace(PATH_VALUES, function (a, b) {\n b && params.push(+b);\n });\n if (name === 'm' && params.length > 2) {\n data.push([ b ].concat(params.splice(0, 2)));\n name = 'l';\n b = b === 'm' ? 'l' : 'L';\n }\n if (name === 'o' && params.length === 1) {\n data.push([ b, params[0] ]);\n }\n if (name === 'r') {\n data.push([ b ].concat(params));\n } else {\n while (params.length >= paramCounts[name]) {\n data.push([ b ].concat(params.splice(0, paramCounts[name])));\n if (!paramCounts[name]) {\n break;\n }\n }\n }\n return '';\n });\n\n return data;\n}\n","const TAU = Math.PI * 2\n\nconst mapToEllipse = ({ x, y }: { x: number, y: number }, rx: number, ry: number, cosphi: number, sinphi: number, centerx: number, centery: number) => {\n x *= rx\n y *= ry\n\n const xp = cosphi * x - sinphi * y\n const yp = sinphi * x + cosphi * y\n\n return {\n x: xp + centerx,\n y: yp + centery\n }\n}\n\nconst approxUnitArc = (ang1: number, ang2: number) => {\n // If 90 degree circular arc, use a constant\n // as derived from http://spencermortensen.com/articles/bezier-circle\n const a = ang2 === 1.5707963267948966\n ? 0.551915024494\n : ang2 === -1.5707963267948966\n ? -0.551915024494\n : 4 / 3 * Math.tan(ang2 / 4)\n\n const x1 = Math.cos(ang1)\n const y1 = Math.sin(ang1)\n const x2 = Math.cos(ang1 + ang2)\n const y2 = Math.sin(ang1 + ang2)\n\n return [\n {\n x: x1 - y1 * a,\n y: y1 + x1 * a\n },\n {\n x: x2 + y2 * a,\n y: y2 - x2 * a\n },\n {\n x: x2,\n y: y2\n }\n ]\n}\n\nconst vectorAngle = (ux: number, uy: number, vx: number, vy: number) => {\n const sign = (ux * vy - uy * vx < 0) ? -1 : 1\n\n let dot = ux * vx + uy * vy\n\n if (dot > 1) {\n dot = 1\n }\n\n if (dot < -1) {\n dot = -1\n }\n\n return sign * Math.acos(dot)\n}\n\nconst getArcCenter = (\n px: any,\n py: any,\n cx: any,\n cy: any,\n rx: number,\n ry: number,\n largeArcFlag: number,\n sweepFlag: number,\n sinphi: number,\n cosphi: number,\n pxp: number,\n pyp: number\n) => {\n const rxsq = Math.pow(rx, 2)\n const rysq = Math.pow(ry, 2)\n const pxpsq = Math.pow(pxp, 2)\n const pypsq = Math.pow(pyp, 2)\n\n let radicant = (rxsq * rysq) - (rxsq * pypsq) - (rysq * pxpsq)\n\n if (radicant < 0) {\n radicant = 0\n }\n\n radicant /= (rxsq * pypsq) + (rysq * pxpsq)\n radicant = Math.sqrt(radicant) * (largeArcFlag === sweepFlag ? -1 : 1)\n\n const centerxp = radicant * rx / ry * pyp\n const centeryp = radicant * -ry / rx * pxp\n\n const centerx = cosphi * centerxp - sinphi * centeryp + (px + cx) / 2\n const centery = sinphi * centerxp + cosphi * centeryp + (py + cy) / 2\n\n const vx1 = (pxp - centerxp) / rx\n const vy1 = (pyp - centeryp) / ry\n const vx2 = (-pxp - centerxp) / rx\n const vy2 = (-pyp - centeryp) / ry\n\n let ang1 = vectorAngle(1, 0, vx1, vy1)\n let ang2 = vectorAngle(vx1, vy1, vx2, vy2)\n\n if (sweepFlag === 0 && ang2 > 0) {\n ang2 -= TAU\n }\n\n if (sweepFlag === 1 && ang2 < 0) {\n ang2 += TAU\n }\n\n return [ centerx, centery, ang1, ang2 ]\n}\n\nconst arcToBezier = ({\n px,\n py,\n cx,\n cy,\n rx,\n ry,\n xAxisRotation = 0,\n largeArcFlag = 0,\n sweepFlag = 0\n}) => {\n const curves = []\n\n if (rx === 0 || ry === 0) {\n return [{ x1: 0, y1: 0, x2: 0, y2: 0, x: cx, y: cy }];\n }\n\n const sinphi = Math.sin(xAxisRotation * TAU / 360)\n const cosphi = Math.cos(xAxisRotation * TAU / 360)\n\n const pxp = cosphi * (px - cx) / 2 + sinphi * (py - cy) / 2\n const pyp = -sinphi * (px - cx) / 2 + cosphi * (py - cy) / 2\n\n if (pxp === 0 && pyp === 0) {\n return [{ x1: 0, y1: 0, x2: 0, y2: 0, x: cx, y: cy }];\n }\n\n rx = Math.abs(rx)\n ry = Math.abs(ry)\n\n const lambda =\n Math.pow(pxp, 2) / Math.pow(rx, 2) +\n Math.pow(pyp, 2) / Math.pow(ry, 2)\n\n if (lambda > 1) {\n rx *= Math.sqrt(lambda)\n ry *= Math.sqrt(lambda)\n }\n\n let [ centerx, centery, ang1, ang2 ] = getArcCenter(\n px,\n py,\n cx,\n cy,\n rx,\n ry,\n largeArcFlag,\n sweepFlag,\n sinphi,\n cosphi,\n pxp,\n pyp\n )\n\n // If 'ang2' == 90.0000000001, then `ratio` will evaluate to\n // 1.0000000001. This causes `segments` to be greater than one, which is an\n // unecessary split, and adds extra points to the bezier curve. To alleviate\n // this issue, we round to 1.0 when the ratio is close to 1.0.\n let ratio = Math.abs(ang2) / (TAU / 4)\n if (Math.abs(1.0 - ratio) < 0.0000001) {\n ratio = 1.0\n }\n\n const segments = Math.max(Math.ceil(ratio), 1)\n\n ang2 /= segments\n\n for (let i = 0; i < segments; i++) {\n curves.push(approxUnitArc(ang1, ang2))\n ang1 += ang2\n }\n\n return curves.map(curve => {\n const { x: x1, y: y1 } = mapToEllipse(curve[ 0 ], rx, ry, cosphi, sinphi, centerx, centery)\n const { x: x2, y: y2 } = mapToEllipse(curve[ 1 ], rx, ry, cosphi, sinphi, centerx, centery)\n const { x, y } = mapToEllipse(curve[ 2 ], rx, ry, cosphi, sinphi, centerx, centery)\n\n return { x1, y1, x2, y2, x, y }\n })\n}\n\nexport function arcToCubic(x1: number, y1: number, rx: number, ry: number, angle: number, LAF: number, SF: number, x2: number, y2: number) {\n const curves = arcToBezier({\n px: x1,\n py: y1,\n cx: x2,\n cy: y2,\n rx,\n ry,\n xAxisRotation: angle,\n largeArcFlag: LAF,\n sweepFlag: SF,\n });\n\n return curves.reduce((prev, cur) => {\n const { x1, y1, x2, y2, x, y } = cur;\n prev.push(x1, y1, x2, y2, x, y);\n return prev;\n }, [] as number[]);\n}\n","/**\n * @fileoverview 判断点是否在多边形内\n * @author dxq613@gmail.com\n */\n\n// 多边形的射线检测,参考:https://blog.csdn.net/WilliamSun0122/article/details/77994526\nconst tolerance = 1e-6;\n// 三态函数,判断两个double在eps精度下的大小关系\nfunction dcmp(x) {\n if (Math.abs(x) < tolerance) {\n return 0;\n }\n\n return x < 0 ? -1 : 1;\n}\n\n// 判断点Q是否在p1和p2的线段上\nfunction onSegment(p1, p2, q) {\n if (\n (q[0] - p1[0]) * (p2[1] - p1[1]) === (p2[0] - p1[0]) * (q[1] - p1[1]) &&\n Math.min(p1[0], p2[0]) <= q[0] &&\n q[0] <= Math.max(p1[0], p2[0]) &&\n Math.min(p1[1], p2[1]) <= q[1] &&\n q[1] <= Math.max(p1[1], p2[1])\n ) {\n return true;\n }\n return false;\n}\n\n// 判断点P在多边形内-射线法\nexport default function isInPolygon(points, x, y) {\n let isHit = false;\n const n = points.length;\n if (n <= 2) {\n // svg 中点小于 3 个时,不显示,也无法被拾取\n return false;\n }\n for (let i = 0; i < n; i++) {\n const p1 = points[i];\n const p2 = points[(i + 1) % n];\n if (onSegment(p1, p2, [x, y])) {\n // 点在多边形一条边上\n return true;\n }\n // 前一个判断min(p1[1],p2[1]) 0 !== dcmp(p2[1] - y) > 0 &&\n dcmp(x - ((y - p1[1]) * (p1[0] - p2[0])) / (p1[1] - p2[1]) - p1[0]) < 0\n ) {\n isHit = !isHit;\n }\n }\n return isHit;\n}\n","type Point = {\n /**\n * x 值\n * @type {number}\n */\n x: number;\n /**\n * y 值\n * @type {number}\n */\n y: number;\n};\n\nconst isBetween = (value: number, min: number, max: number) => value >= min && value <= max;\n\n\nexport default function getLineIntersect(p0: Point, p1: Point, p2: Point, p3: Point): Point | null {\n const tolerance = 0.001;\n const E: Point = {\n x: p2.x - p0.x,\n y: p2.y - p0.y,\n };\n const D0: Point = {\n x: p1.x - p0.x,\n y: p1.y - p0.y,\n };\n const D1: Point = {\n x: p3.x - p2.x,\n y: p3.y - p2.y,\n };\n const kross: number = D0.x * D1.y - D0.y * D1.x;\n const sqrKross: number = kross * kross;\n const sqrLen0: number = D0.x * D0.x + D0.y * D0.y;\n const sqrLen1: number = D1.x * D1.x + D1.y * D1.y;\n let point: Point | null = null;\n if (sqrKross > tolerance * sqrLen0 * sqrLen1) {\n const s = (E.x * D1.y - E.y * D1.x) / kross;\n const t = (E.x * D0.y - E.y * D0.x) / kross;\n if (isBetween(s, 0, 1) && isBetween(t, 0, 1)) {\n point = {\n x: p0.x + s * D0.x,\n y: p0.y + s * D0.y,\n };\n }\n }\n return point;\n};","\nimport isPointInPolygon from './point-in-polygon';\nimport getLineIntersect from './get-line-intersect';\nimport {each} from '@antv/util';\n\nfunction parseToLines(points) {\n const lines = [];\n const count = points.length;\n for(let i = 0; i < count - 1; i++) {\n const point = points[i];\n const next = points[i + 1];\n lines.push({\n from: {\n x: point[0],\n y: point[1]\n },\n to: {\n x: next[0],\n y: next[1]\n }\n });\n }\n if (lines.length > 1) {\n const first = points[0];\n const last = points[count - 1];\n lines.push({\n from: {\n x: last[0],\n y: last[1]\n },\n to: {\n x: first[0],\n y: first[1]\n }\n });\n }\n return lines;\n}\n\nfunction lineIntersectPolygon(lines, line) {\n let isIntersect = false;\n each(lines, l => {\n if (getLineIntersect(l.from, l.to, line.from, line.to)) {\n isIntersect = true;\n return false;\n }\n });\n return isIntersect;\n}\n\ntype BBox = {\n minX: number;\n minY: number;\n maxX: number;\n maxY: number;\n};\n\nfunction getBBox(points): BBox {\n const xArr = points.map(p => p[0]);\n const yArr = points.map(p => p[1]);\n return {\n minX: Math.min.apply(null, xArr),\n maxX: Math.max.apply(null, xArr),\n minY: Math.min.apply(null, yArr),\n maxY: Math.max.apply(null, yArr)\n };\n}\n\nfunction intersectBBox(box1:BBox, box2:BBox) {\n return !(box2.minX > box1.maxX || box2.maxX < box1.minX || box2.minY > box1.maxY || box2.maxY < box1.minY);\n}\n\nexport default function isPolygonsIntersect(points1, points2) {\n // 空数组,或者一个点返回 false\n if (points1.length < 2 || points2.length < 2) {\n return false;\n }\n\n const bbox1 = getBBox(points1);\n const bbox2 = getBBox(points2);\n // 判定包围盒是否相交,比判定点是否在多边形内要快的多,可以筛选掉大多数情况\n if (!intersectBBox(bbox1, bbox2)) {\n return false;\n }\n \n let isIn = false;\n // 判定点是否在多边形内部,一旦有一个点在另一个多边形内,则返回\n each(points2, point => {\n if (isPointInPolygon(points1, point[0], point[1])) {\n isIn = true;\n return false;\n }\n });\n if (isIn) {\n return true;\n }\n // 两个多边形都需要判定\n each(points1, point => {\n if (isPointInPolygon(points2, point[0], point[1])) {\n isIn = true;\n return false;\n }\n });\n if (isIn) {\n return true;\n }\n\n const lines1 = parseToLines(points1);\n const lines2 = parseToLines(points2);\n let isIntersect = false;\n each(lines2, line => {\n if (lineIntersectPolygon(lines1, line)) {\n isIntersect = true;\n return false;\n }\n });\n return isIntersect;\n}","import { each, isArray } from '@antv/util';\nimport { View } from '../../chart';\nimport { BBox, PathCommand, Point } from '../../dependents';\nimport Geometry from '../../geometry/base';\nimport Element from '../../geometry/element/';\nimport { catmullRom2bezier, getLinePath } from '../../geometry/shape/util/path';\nimport { toPoints } from '../../util/bbox';\nimport { isPolygonsIntersect } from '@antv/path-util';\nimport { ComponentOption, IInteractionContext, LooseObject } from '../../interface';\n\nfunction getMaskBBox(context: IInteractionContext, tolerance: number) {\n const event = context.event;\n const maskShape = event.target;\n return getMaskBBoxByShape(maskShape, tolerance);\n}\n\n/**\n * 如果 mask BBox 过小则不返回\n */\nfunction isValidMaskBBox(maskShape, tolerance: number) {\n const maskBBox = maskShape.getCanvasBBox();\n const { width, height } = maskBBox;\n return width > 0 && height > 0 && (width >= tolerance || height >= tolerance);\n}\n\n/**\n * 通过 maskShape 获取 mask 的 canvasBBox\n * @param maskShape\n * @param tolerance\n * @returns\n */\nfunction getMaskBBoxByShape(maskShape, tolerance: number) {\n const maskBBox = maskShape.getCanvasBBox();\n return isValidMaskBBox(maskShape, tolerance) ? maskBBox : null;\n}\n\n/**\n * 获取 multiple 模式下 mask 的 canvasBBox 数组\n * @param context 上下文\n * @param tolerance box 宽高小于则不返回\n * @returns\n */\nfunction getMultiMaskBBoxList(context: IInteractionContext, tolerance: number) {\n const { maskShapes } = context.event;\n return maskShapes.map((maskShape) => getMaskBBoxByShape(maskShape, tolerance)).filter((bBox) => !!bBox);\n}\n\nfunction getMaskPath(context: IInteractionContext, tolerance: number) {\n const event = context.event;\n const maskShape = event.target;\n return getMaskPathByMaskShape(maskShape, tolerance);\n}\n\n/**\n * 通过 maskShape 获取 mask path\n * @param maskShape\n * @param tolerance box 宽高小于则不返回\n * @returns\n */\nfunction getMaskPathByMaskShape(maskShape, tolerance: number) {\n return isValidMaskBBox(maskShape, tolerance) ? maskShape.attr('path') : null;\n}\n\n/**\n * 获取 multiple 模式下 mask path 数组\n * @param context 上下文\n * @param tolerance box 宽高小于则不返回\n * @returns\n */\nfunction getMultiMaskPathList(context: IInteractionContext, tolerance: number) {\n const { maskShapes } = context.event;\n return maskShapes.map((maskShape) => getMaskPathByMaskShape(maskShape, tolerance));\n}\n\n/**\n * 获取当前事件相关的图表元素\n * @param context 交互的上下文\n * @ignore\n */\nexport function getCurrentElement(context: IInteractionContext): Element {\n const event = context.event;\n let element;\n const target = event.target;\n if (target) {\n element = target.get('element');\n }\n return element;\n}\n\n/**\n * 获取委托对象\n * @param context 上下文\n * @ignore\n */\nexport function getDelegationObject(context: IInteractionContext): LooseObject {\n const event = context.event;\n const target = event.target;\n let delegateObject;\n if (target) {\n delegateObject = target.get('delegateObject');\n }\n return delegateObject;\n}\n\nexport function isElementChange(context: IInteractionContext) {\n const event = context.event.gEvent;\n // 在同一个 element 内部移动,label 和 shape 之间\n if (event && event.fromShape && event.toShape && event.fromShape.get('element') === event.toShape.get('element')) {\n return false;\n }\n return true;\n}\n\n/**\n * 是否是列表组件\n * @param delegateObject 委托对象\n * @ignore\n */\nexport function isList(delegateObject: LooseObject): boolean {\n return delegateObject && delegateObject.component && delegateObject.component.isList();\n}\n\n/**\n * 是否是滑块组件\n * @param delegateObject 委托对象\n * @ignore\n */\nexport function isSlider(delegateObject: LooseObject): boolean {\n return delegateObject && delegateObject.component && delegateObject.component.isSlider();\n}\n\n/**\n * 是否由 mask 触发\n * @param context 上下文\n * @ignore\n */\nexport function isMask(context: IInteractionContext): boolean {\n const event = context.event;\n const target = event.target;\n return (target && target?.get('name') === 'mask') || isMultipleMask(context);\n}\n\n/**\n * 是否由 multiple mask 触发\n * @param context\n * @returns\n */\nexport function isMultipleMask(context: IInteractionContext): boolean {\n return context.event.target?.get('name') === 'multi-mask';\n}\n\n/**\n * 获取被遮挡的 elements\n * @param context 上下文\n * @ignore\n */\nexport function getMaskedElements(context: IInteractionContext, tolerance: number): Element[] {\n const target = context.event.target;\n\n // multiple 模式下\n if (isMultipleMask(context)) {\n return getMultiMaskedElements(context, tolerance);\n }\n\n // 正常模式下\n if (target.get('type') === 'path') {\n const maskPath = getMaskPath(context, tolerance);\n if (!maskPath) {\n return;\n }\n return getElementsByPath(context.view, maskPath);\n }\n const maskBBox = getMaskBBox(context, tolerance);\n // 如果 bbox 过小则不返回\n if (!maskBBox) {\n return null;\n }\n return getIntersectElements(context.view, maskBBox);\n}\n\n/**\n * 获取 multiple 模式下被 mask 遮挡的 elements\n * @param context 上下文\n * @returns\n */\nfunction getMultiMaskedElements(context: IInteractionContext, tolerance: number): Element[] {\n const { target } = context.event;\n if (target.get('type') === 'path') {\n const maskPathList = getMultiMaskPathList(context, tolerance);\n if (maskPathList.length > 0) {\n return maskPathList.flatMap((maskPath) => getElementsByPath(context.view, maskPath));\n }\n return null;\n }\n const maskBBoxList = getMultiMaskBBoxList(context, tolerance);\n if (maskBBoxList.length > 0) {\n return maskBBoxList.flatMap((maskBBox) => getIntersectElements(context.view, maskBBox));\n }\n return null;\n}\n\n/**\n * @ignore\n */\nexport function getSiblingMaskElements(context: IInteractionContext, sibling: View, tolerance: number) {\n // multiple 模式下\n if (isMultipleMask(context)) {\n return getSiblingMultiMaskedElements(context, sibling, tolerance);\n }\n\n // 正常模式下\n const maskBBox = getMaskBBox(context, tolerance);\n // 如果 bbox 过小则不返回\n if (!maskBBox) {\n return null;\n }\n return getSiblingMaskElementsByBBox(maskBBox, context, sibling);\n}\n\n/**\n * 通过 mashBBox 获取 sibling 模式下被 mask 遮挡的 elements\n * @param maskBBox\n * @param context 上下文\n * @param sibling sibling view\n * @returns\n */\nfunction getSiblingMaskElementsByBBox(maskBBox, context: IInteractionContext, sibling: View) {\n const view = context.view;\n const start = getSiblingPoint(view, sibling, { x: maskBBox.x, y: maskBBox.y });\n const end = getSiblingPoint(view, sibling, { x: maskBBox.maxX, y: maskBBox.maxY });\n const box = {\n minX: start.x,\n minY: start.y,\n maxX: end.x,\n maxY: end.y,\n };\n return getIntersectElements(sibling, box);\n}\n\n/**\n * 获取 sibling 模式下被 multiple mask 遮挡的 elements\n * @param context 上下文\n * @param sibling sibling view\n * @param tolerance box 宽高小于则不返回\n * @returns\n */\nfunction getSiblingMultiMaskedElements(context: IInteractionContext, sibling: View, tolerance: number): Element[] {\n const maskBBoxList = getMultiMaskBBoxList(context, tolerance);\n if (maskBBoxList.length > 0) {\n return maskBBoxList.flatMap((maskBBox) => getSiblingMaskElementsByBBox(maskBBox, context, sibling));\n }\n return null;\n}\n\n/**\n * 获取所有的图表元素\n * @param view View/Chart\n * @ignore\n */\nexport function getElements(view: View): Element[] {\n const geometries = view.geometries;\n let rst: Element[] = [];\n each(geometries, (geom: Geometry) => {\n const elements = geom.elements;\n rst = rst.concat(elements);\n });\n if (view.views && view.views.length) {\n each(view.views, (subView) => {\n rst = rst.concat(getElements(subView));\n });\n }\n return rst;\n}\n\n/**\n * 获取所有的图表元素\n * @param view View/Chart\n * @param field 字段名\n * @param value 字段值\n * @ignore\n */\nexport function getElementsByField(view: View, field: string, value: any) {\n const elements = getElements(view);\n return elements.filter((el) => {\n return getElementValue(el, field) === value;\n });\n}\n\n/**\n * 根据状态名获取图表元素\n * @param view View/Chart\n * @param stateName 状态名\n * @ignore\n */\nexport function getElementsByState(view: View, stateName: string): Element[] {\n const geometries = view.geometries;\n let rst: Element[] = [];\n each(geometries, (geom: Geometry) => {\n const elements = geom.getElementsBy((el) => el.hasState(stateName));\n rst = rst.concat(elements);\n });\n return rst;\n}\n\n/**\n * 获取图表元素对应字段的值\n * @param element 图表元素\n * @param field 字段名\n * @ignore\n */\nexport function getElementValue(element: Element, field) {\n const model = element.getModel();\n const record = model.data;\n let value;\n if (isArray(record)) {\n value = record[0][field];\n } else {\n value = record[field];\n }\n return value;\n}\n\n/**\n * 两个包围盒是否相交\n * @param box1 包围盒1\n * @param box2 包围盒2\n * @ignore\n */\nexport function intersectRect(box1, box2) {\n return !(box2.minX > box1.maxX || box2.maxX < box1.minX || box2.minY > box1.maxY || box2.maxY < box1.minY);\n}\n\n/**\n * 获取包围盒内的图表元素\n * @param view View/Chart\n * @param box 包围盒\n * @ignore\n */\nexport function getIntersectElements(view: View, box) {\n const elements = getElements(view);\n const rst = [];\n each(elements, (el) => {\n const shape = el.shape;\n const shapeBBox = shape.getCanvasBBox();\n if (intersectRect(box, shapeBBox)) {\n rst.push(el);\n }\n });\n return rst;\n}\nfunction pathToPoints(path: any[]) {\n const points = [];\n each(path, (seg) => {\n const command = seg[0];\n if (command !== 'A') {\n for (let i = 1; i < seg.length; i = i + 2) {\n points.push([seg[i], seg[i + 1]]);\n }\n } else {\n const length = seg.length;\n points.push([seg[length - 2], seg[length - 1]]);\n }\n });\n return points;\n}\n/**\n * 获取包围盒内的图表元素\n * @param view View/Chart\n * @param path 路径\n * @ignore\n */\nexport function getElementsByPath(view: View, path: any[]) {\n const elements = getElements(view);\n const points = pathToPoints(path);\n const rst = elements.filter((el: Element) => {\n const shape = el.shape;\n let shapePoints;\n if (shape.get('type') === 'path') {\n shapePoints = pathToPoints(shape.attr('path'));\n } else {\n const shapeBBox = shape.getCanvasBBox();\n shapePoints = toPoints(shapeBBox);\n }\n return isPolygonsIntersect(points, shapePoints);\n });\n return rst;\n}\n\n/**\n * 获取当前 View 的所有组件\n * @param view View/Chart\n * @ignore\n */\nexport function getComponents(view) {\n return view.getComponents().map((co: ComponentOption) => co.component);\n}\n\n/** @ignore */\nexport function distance(p1: Point, p2: Point) {\n const dx = p2.x - p1.x;\n const dy = p2.y - p1.y;\n return Math.sqrt(dx * dx + dy * dy);\n}\n\n/** @ignore */\nexport function getSpline(points: Point[], z: boolean): PathCommand[] {\n if (points.length <= 2) {\n return getLinePath(points, false);\n }\n const first = points[0];\n const arr = [];\n each(points, (point) => {\n arr.push(point.x);\n arr.push(point.y);\n });\n const path = catmullRom2bezier(arr, z, null);\n path.unshift(['M', first.x, first.y]);\n return path;\n}\n\n/**\n * 检测点是否在包围盒内\n * @param box 包围盒\n * @param point 点\n * @ignore\n */\nexport function isInBox(box: BBox, point: Point) {\n return box.x <= point.x && box.maxX >= point.x && box.y <= point.y && box.maxY > point.y;\n}\n\n/**\n * 获取同 view 同一级的 views\n * @param view 当前 view\n * @returns 同一级的 views\n * @ignore\n */\nexport function getSilbings(view: View): View[] {\n const parent = view.parent;\n let siblings = null;\n if (parent) {\n siblings = parent.views.filter((sub) => sub !== view);\n }\n return siblings;\n}\n\nfunction point2Normalize(view: View, point: Point): Point {\n const coord = view.getCoordinate();\n return coord.invert(point);\n}\n/**\n * 将 view 上的一点转换成另一个 view 的点\n * @param view 当前的 view\n * @param sibling 同一层级的 view\n * @param point 指定点\n * @ignore\n */\nexport function getSiblingPoint(view: View, sibling: View, point: Point): Point {\n const normalPoint = point2Normalize(view, point);\n return sibling.getCoordinate().convert(normalPoint);\n}\n\n/**\n * 是否在记录中,临时因为所有的 view 中的数据不是引用,而使用的方法\n * 不同 view 上对数据的引用不相等,导致无法直接用 includes\n * 假设 x, y 值相等时是同一条数据,这个假设不完全正确,而改成 isEqual 则成本太高\n * 后面改成同一个引用时可以修改回来\n * @param records\n * @param record\n * @param xFiled\n * @param yField\n * @returns\n * @ignore\n */\nexport function isInRecords(records: object[], record: object, xFiled: string, yField: string) {\n let isIn = false;\n each(records, (r) => {\n if (r[xFiled] === record[xFiled] && r[yField] === record[yField]) {\n isIn = true;\n return false;\n }\n });\n return isIn;\n}\n\n// 级联获取 field 对应的 scale,如果 view 上没有,遍历子 view\nexport function getScaleByField(view: View, field: string) {\n let scale = view.getScaleByField(field);\n if (!scale && view.views) {\n each(view.views, (subView) => {\n scale = getScaleByField(subView, field);\n if (scale) {\n return false; // 终止循环\n }\n });\n }\n return scale;\n}\n","import { each, get } from '@antv/util';\nimport { View } from '../chart';\nimport { BBox, IShape, Point } from '../dependents';\nimport { IAction, IInteractionContext, LooseObject } from '../interface';\nimport { getComponents, isInBox } from './action/util';\n\n/**\n * 交互的上下文\n */\nexport default class Context implements IInteractionContext {\n /** 当前所有的 Action */\n public actions: IAction[] = [];\n /** 当前 View 实例 */\n public view: View;\n /** 当前事件对象 */\n public event: LooseObject = null;\n\n private cacheMap: LooseObject = {};\n\n constructor(view: View) {\n this.view = view;\n }\n\n /**\n * 缓存信息\n * @param params 缓存的字段\n * - 如果一个字段则获取缓存\n * - 两个字段则设置缓存\n */\n public cache(...params) {\n if (params.length === 1) {\n return this.cacheMap[params[0]];\n } else if (params.length === 2) {\n this.cacheMap[params[0]] = params[1];\n }\n }\n\n /**\n * 获取 Action\n * @param name Action 的名称\n */\n public getAction(name: string): IAction {\n return this.actions.find((action) => action.name === name);\n }\n\n /**\n * 获取 Action\n * @param action Action 对象\n */\n public addAction(action: IAction) {\n this.actions.push(action);\n }\n\n /**\n * 移除 Action\n * @param action Action 对象\n */\n public removeAction(action: IAction) {\n const actions = this.actions;\n const index = this.actions.indexOf(action);\n if (index >= 0) {\n actions.splice(index, 1);\n }\n }\n\n /**\n * 获取当前的点\n */\n public getCurrentPoint(): Point {\n const event = this.event;\n if (event) {\n if (event.target instanceof HTMLElement) {\n const canvas = this.view.getCanvas();\n const point = canvas.getPointByClient(event.clientX, event.clientY);\n return point;\n } else {\n return {\n x: event.x,\n y: event.y,\n };\n }\n }\n return null;\n }\n\n /**\n * 获取当前 shape\n * @returns current shape\n */\n public getCurrentShape(): IShape {\n return get(this.event, ['gEvent', 'shape']);\n }\n\n /**\n * 当前的触发是否在 View 内\n */\n public isInPlot() {\n const point = this.getCurrentPoint();\n if (point) {\n return this.view.isPointInPlot(point);\n }\n return false;\n }\n\n /**\n * 是否在指定的图形内\n * @param name shape 的 name\n */\n public isInShape(name) {\n const shape = this.getCurrentShape(); // 不再考虑在 shape 的 parent 内的情况\n if (shape) {\n return shape.get('name') === name;\n }\n return false;\n }\n\n /**\n * 当前的触发是组件内部\n * @param name 组件名,可以为空\n */\n public isInComponent(name?: string) {\n const components = getComponents(this.view);\n const point = this.getCurrentPoint();\n if (point) {\n return !!components.find((component) => {\n const bbox = component.getBBox() as BBox;\n if (name) {\n return component.get('name') === name && isInBox(bbox, point);\n } else {\n return isInBox(bbox, point);\n }\n });\n }\n return false;\n }\n\n /**\n * 销毁\n */\n public destroy() {\n // 先销毁 action 再清空,一边遍历,一边删除,所以数组需要更新引用\n each(this.actions.slice(), (action) => {\n action.destroy();\n });\n this.view = null;\n this.event = null;\n this.actions = null;\n this.cacheMap = null;\n }\n}\n","import { View } from '../chart';\nimport { LooseObject } from '../interface';\n\nexport type InteractionConstructor = new (view: View, cfg: LooseObject) => Interaction;\n\n/**\n * 交互的基类。\n */\nexport default class Interaction {\n /** view 或者 chart */\n protected view: View;\n /** 配置项 */\n protected cfg: LooseObject;\n\n constructor(view: View, cfg: LooseObject) {\n this.view = view;\n this.cfg = cfg;\n }\n\n /**\n * 初始化。\n */\n public init() {\n this.initEvents();\n }\n\n /**\n * 绑定事件\n */\n protected initEvents() {}\n\n /**\n * 销毁事件\n */\n protected clearEvents() {}\n\n /**\n * 销毁。\n */\n public destroy() {\n this.clearEvents();\n }\n}\n","import { each, isArray, isFunction, isString, debounce, throttle } from '@antv/util';\nimport { View } from '../chart';\nimport { ActionCallback, IAction, IInteractionContext, LooseObject } from '../interface';\nimport { createAction, createCallbackAction } from './action/register';\nimport InteractionContext from './context';\nimport Interaction from './interaction';\n\n// 将字符串转换成 action\nexport function parseAction(actionStr: string, context: IInteractionContext, arg?: any): ActionObject {\n const arr = actionStr.split(':');\n const actionName = arr[0];\n // 如果已经初始化过 action ,则直接引用之前的 action\n const action = context.getAction(actionName) || createAction(actionName, context);\n if (!action) {\n throw new Error(`There is no action named ${actionName}`);\n }\n const methodName = arr[1];\n return {\n action,\n methodName,\n arg,\n };\n}\n\n// 执行 Action\nfunction executeAction(actionObject: ActionObject) {\n const { action, methodName, arg } = actionObject;\n if (action[methodName]) {\n action[methodName](arg);\n } else {\n throw new Error(`Action(${action.name}) doesn't have a method called ${methodName}`);\n }\n}\n\nconst STEP_NAMES = {\n START: 'start',\n SHOW_ENABLE: 'showEnable',\n END: 'end',\n ROLLBACK: 'rollback',\n PROCESSING: 'processing',\n};\n\n/** 交互环节的定义 */\nexport interface InteractionStep {\n /**\n * 触发事件,支持 view,chart 的各种事件,也支持 document、window 的事件\n */\n trigger: string;\n /**\n * 是否可以触发 action\n * @param context - 交互的上下文\n */\n isEnable?: (context: IInteractionContext) => boolean;\n /**\n * 反馈,支持三种方式:\n * - action:method : action 的名字和方法的组合\n * - [’action1:method1‘, ’action2:method‘]\n * - ActionCallback: 回调函数\n */\n action: string | string[] | ActionCallback;\n /**\n * 反馈,具体 action method 的参数:\n * - 当传递多个 action 时,args 必须是一个数组\n */\n arg?: any | any[];\n /**\n * 回调函数,action 执行后执行\n */\n callback?: (context: IInteractionContext) => void;\n /**\n * @private\n * 不需要用户传入,通过上面的属性计算出来的属性\n */\n actionObject?: ActionObject | ActionObject[];\n /**\n * 在一个环节内是否只允许执行一次\n */\n once?: boolean;\n /**\n * 是否增加节流\n */\n throttle?: ThrottleOption;\n /**\n * 是否延迟\n */\n debounce?: DebounceOption;\n}\n\n// action 执行时支持 debounce 和 throttle,可以参考:https://css-tricks.com/debouncing-throttling-explained-examples/\n/**\n * debounce 的配置\n */\nexport interface DebounceOption {\n /**\n * 等待时间\n */\n wait: number;\n /**\n * 是否马上执行\n */\n immediate?: boolean;\n}\n\n/**\n * throttle 的配置\n */\nexport interface ThrottleOption {\n /**\n * 等待时间\n */\n wait: number;\n /**\n * 马上就执行\n */\n leading?: boolean;\n /**\n * 执行完毕后再执行一次\n */\n trailing?: boolean;\n}\n\n/** 缓存 action 对象,仅用于当前文件 */\ninterface ActionObject {\n /**\n * 缓存的 action\n */\n action: IAction;\n /**\n * action 的方法\n */\n methodName: string;\n /**\n * 用户传递的 action 方法的参数\n */\n arg?: any;\n}\n\n/** 交互的所有环节 */\nexport interface InteractionSteps {\n /**\n * 显示交互可以进行\n */\n showEnable?: InteractionStep[];\n /**\n * 交互开始\n */\n start?: InteractionStep[];\n /**\n * 交互持续\n */\n processing?: InteractionStep[];\n /**\n * 交互结束\n */\n end?: InteractionStep[];\n /**\n * 交互回滚\n */\n rollback?: InteractionStep[];\n}\n\n/**\n * 支持语法的交互类\n */\nexport default class GrammarInteraction extends Interaction {\n // 存储的交互环节\n private steps: InteractionSteps;\n /** 当前执行到的阶段 */\n public currentStepName: string;\n /**\n * 当前交互的上下文\n */\n public context: IInteractionContext;\n\n private callbackCaches: LooseObject = {};\n // 某个触发和反馈在本环节是否执行或\n private emitCaches: LooseObject = {};\n\n constructor(view: View, steps: InteractionSteps) {\n super(view, steps);\n this.steps = steps;\n }\n\n /**\n * 初始化\n */\n public init() {\n this.initContext();\n super.init();\n }\n\n /**\n * 清理资源\n */\n public destroy() {\n super.destroy(); // 先清理事件\n this.steps = null;\n if (this.context) {\n this.context.destroy();\n this.context = null;\n }\n\n this.callbackCaches = null;\n this.view = null;\n }\n\n /**\n * 绑定事件\n */\n protected initEvents() {\n each(this.steps, (stepArr, stepName) => {\n each(stepArr, (step) => {\n const callback = this.getActionCallback(stepName, step);\n if (callback) {\n // 如果存在 callback,才绑定,有时候会出现无 callback 的情况\n this.bindEvent(step.trigger, callback);\n }\n });\n });\n }\n\n /**\n * 清理绑定的事件\n */\n protected clearEvents() {\n each(this.steps, (stepArr, stepName) => {\n each(stepArr, (step) => {\n const callback = this.getActionCallback(stepName, step);\n if (callback) {\n this.offEvent(step.trigger, callback);\n }\n });\n });\n }\n\n // 初始化上下文,并初始化 action\n private initContext() {\n const view = this.view;\n const context = new InteractionContext(view);\n this.context = context;\n const steps = this.steps;\n // 生成具体的 Action\n each(steps, (subSteps: InteractionStep[]) => {\n each(subSteps, (step: InteractionStep) => {\n if (isFunction(step.action)) {\n // 如果传入回调函数,则直接生成 CallbackAction\n step.actionObject = {\n action: createCallbackAction(step.action, context),\n methodName: 'execute',\n };\n } else if (isString(step.action)) {\n // 如果是字符串\n step.actionObject = parseAction(step.action, context, step.arg);\n } else if (isArray(step.action)) {\n // 如果是数组\n const actionArr = step.action;\n const argArr = isArray(step.arg) ? step.arg : [step.arg];\n step.actionObject = [];\n each(actionArr, (actionStr, idx) => {\n (step.actionObject as ActionObject[]).push(parseAction(actionStr, context, argArr[idx]));\n });\n }\n // 如果 action 既不是字符串,也不是函数,则不会生成 actionObject\n });\n });\n }\n\n // 是否允许指定阶段名称执行\n private isAllowStep(stepName: string): boolean {\n const currentStepName = this.currentStepName;\n const steps = this.steps;\n // 相同的阶段允许同时执行\n if (currentStepName === stepName) {\n return true;\n }\n\n if (stepName === STEP_NAMES.SHOW_ENABLE) {\n // 示能在整个过程中都可用\n return true;\n }\n\n if (stepName === STEP_NAMES.PROCESSING) {\n // 只有当前是 start 时,才允许 processing\n return currentStepName === STEP_NAMES.START;\n }\n\n if (stepName === STEP_NAMES.START) {\n // 如果当前是 processing,则无法 start,必须等待 end 后才能执行\n return currentStepName !== STEP_NAMES.PROCESSING;\n }\n\n if (stepName === STEP_NAMES.END) {\n return currentStepName === STEP_NAMES.PROCESSING || currentStepName === STEP_NAMES.START;\n }\n\n if (stepName === STEP_NAMES.ROLLBACK) {\n if (steps[STEP_NAMES.END]) {\n // 如果定义了 end, 只有 end 时才允许回滚\n return currentStepName === STEP_NAMES.END;\n } else if (currentStepName === STEP_NAMES.START) {\n // 如果未定义 end, 则判断是否是开始\n return true;\n }\n }\n return false;\n }\n\n // 具体的指定阶段是否允许执行\n private isAllowExecute(stepName: string, step: InteractionStep): boolean {\n if (this.isAllowStep(stepName)) {\n const key = this.getKey(stepName, step);\n // 如果是在本环节内仅允许触发一次,同时已经触发过,则不允许再触发\n if (step.once && this.emitCaches[key]) {\n return false;\n }\n // 如果是允许的阶段,则验证 isEnable 方法\n if (step.isEnable) {\n return step.isEnable(this.context);\n }\n return true; // 如果没有 isEnable 则允许执行\n }\n return false;\n }\n\n private enterStep(stepName: string) {\n this.currentStepName = stepName;\n this.emitCaches = {}; // 清除所有本环节触发的缓存\n }\n\n // 执行完某个触发和反馈(子环节)\n private afterExecute(stepName: string, step) {\n // show enable 不计入正常的流程,其他情况则设置当前的 step\n if (stepName !== STEP_NAMES.SHOW_ENABLE && this.currentStepName !== stepName) {\n this.enterStep(stepName);\n }\n const key = this.getKey(stepName, step);\n // 一旦执行,则缓存标记为,一直保持到跳出改环节\n this.emitCaches[key] = true;\n }\n // 获取某个环节的唯一的键值\n private getKey(stepName, step) {\n return stepName + step.trigger + step.action;\n }\n\n // 获取 step 的回调函数,如果已经生成,则直接返回,如果未生成,则创建\n private getActionCallback(stepName: string, step: InteractionStep): (e: object) => void {\n const context = this.context;\n const callbackCaches = this.callbackCaches;\n const actionObject = step.actionObject;\n if (step.action && actionObject) {\n const key = this.getKey(stepName, step);\n if (!callbackCaches[key]) {\n // 动态生成执行的方法,执行对应 action 的名称\n const actionCallback = (event) => {\n context.event = event; // 保证检测时的 event\n if (this.isAllowExecute(stepName, step)) {\n // 如果是数组时,则依次执行\n if (isArray(actionObject)) {\n each(actionObject, (obj: ActionObject) => {\n context.event = event; // 可能触发新的事件,保证执行前的 context.event 是正确的\n executeAction(obj);\n });\n } else {\n context.event = event; // 保证执行前的 context.event 是正确的\n executeAction(actionObject);\n }\n this.afterExecute(stepName, step);\n if (step.callback) {\n context.event = event; // 保证执行前的 context.event 是正确的\n step.callback(context);\n }\n } else {\n // 如果未通过验证,则事件不要绑定在上面\n context.event = null;\n }\n };\n // 如果设置了 debounce\n if (step.debounce) {\n callbackCaches[key] = debounce(actionCallback, step.debounce.wait, step.debounce.immediate);\n } else if (step.throttle) {\n // 设置 throttle\n callbackCaches[key] = throttle(actionCallback, step.throttle.wait, {\n leading: step.throttle.leading,\n trailing: step.throttle.trailing,\n });\n } else {\n // 直接设置\n callbackCaches[key] = actionCallback;\n }\n }\n return callbackCaches[key];\n }\n return null;\n }\n\n private bindEvent(eventName, callback) {\n const nameArr = eventName.split(':');\n if (nameArr[0] === 'window') {\n window.addEventListener(nameArr[1], callback);\n } else if (nameArr[0] === 'document') {\n document.addEventListener(nameArr[1], callback);\n } else {\n this.view.on(eventName, callback);\n }\n }\n\n private offEvent(eventName, callback) {\n const nameArr = eventName.split(':');\n if (nameArr[0] === 'window') {\n window.removeEventListener(nameArr[1], callback);\n } else if (nameArr[0] === 'document') {\n document.removeEventListener(nameArr[1], callback);\n } else {\n this.view.off(eventName, callback);\n }\n }\n}\n","import { clone, isPlainObject, lowerCase, mix } from '@antv/util';\nimport { View } from '../chart';\nimport { LooseObject } from '../interface';\nimport GrammarInteraction, { InteractionSteps } from './grammar-interaction';\nimport { InteractionConstructor } from './interaction';\n\nconst Interactions: LooseObject = {};\n\n/**\n * 根据交互行为名字获取对应的交互类\n * @param name 交互名字\n * @returns 交互类\n */\nexport function getInteraction(name: string): InteractionSteps | InteractionConstructor {\n return Interactions[lowerCase(name)];\n}\n\n/**\n * 注册交互行为\n * @param name 交互行为名字\n * @param interaction 交互类\n */\nexport function registerInteraction(name: string, interaction: InteractionSteps | InteractionConstructor) {\n Interactions[lowerCase(name)] = interaction;\n}\n\n/**\n * 创建交互实例\n * @param name 交互名\n * @param view 交互应用的 View 实例\n * @param cfg 交互行为配置\n */\nexport function createInteraction(name: string, view: View, cfg?: LooseObject) {\n const interaciton = getInteraction(name);\n if (!interaciton) {\n return null;\n }\n if (isPlainObject(interaciton)) {\n // 如果不 clone 则会多个 interaction 实例共享 step 的定义\n const steps = mix(clone(interaciton), cfg) as InteractionSteps;\n return new GrammarInteraction(view, steps);\n } else {\n const cls = interaciton as InteractionConstructor;\n return new cls(view, cfg);\n }\n}\n\nexport { default as Interaction } from './interaction';\nexport { Action, registerAction, getActionClass } from './action';\n","import { TOOLTIP_CSS_CONST } from '@antv/component';\nimport { ext } from '@antv/matrix-util';\nimport { deepMix } from '@antv/util';\nimport Element from '../../geometry/element';\nimport { LooseObject, StyleSheet } from '../../interface';\nimport { getAngle } from '../../util/graphics';\n\n/**\n * 根据样式表创建 axis 组件主题样式\n * @param styleSheet\n */\nfunction createAxisStyles(styleSheet: StyleSheet): LooseObject {\n return {\n title: {\n autoRotate: true,\n position: 'center', // start, center, end\n spacing: styleSheet.axisTitleSpacing,\n style: {\n fill: styleSheet.axisTitleTextFillColor,\n fontSize: styleSheet.axisTitleTextFontSize,\n lineHeight: styleSheet.axisTitleTextLineHeight,\n textBaseline: 'middle',\n fontFamily: styleSheet.fontFamily,\n },\n iconStyle: {\n fill: styleSheet.axisDescriptionIconFillColor\n }\n },\n label: {\n autoRotate: false,\n autoEllipsis: false,\n autoHide: { type: 'equidistance', cfg: { minGap: 6 } },\n offset: styleSheet.axisLabelOffset,\n style: {\n fill: styleSheet.axisLabelFillColor,\n fontSize: styleSheet.axisLabelFontSize,\n lineHeight: styleSheet.axisLabelLineHeight,\n fontFamily: styleSheet.fontFamily,\n },\n },\n line: {\n style: {\n lineWidth: styleSheet.axisLineBorder,\n stroke: styleSheet.axisLineBorderColor,\n },\n },\n grid: {\n line: {\n type: 'line',\n style: {\n stroke: styleSheet.axisGridBorderColor,\n lineWidth: styleSheet.axisGridBorder,\n lineDash: styleSheet.axisGridLineDash,\n },\n },\n alignTick: true,\n animate: true,\n },\n tickLine: {\n style: {\n lineWidth: styleSheet.axisTickLineBorder,\n stroke: styleSheet.axisTickLineBorderColor,\n },\n alignTick: true, // 默认刻度线和文本对齐\n length: styleSheet.axisTickLineLength,\n },\n subTickLine: null,\n animate: true,\n };\n}\n\n/**\n *\n * @param styleSheet\n */\n// export function\n\n/**\n * 根据样式表创建 legend 组件主题样式\n * @param styleSheet\n */\nfunction createLegendStyles(styleSheet: StyleSheet): LooseObject {\n return {\n title: null,\n marker: {\n symbol: 'circle',\n spacing: styleSheet.legendMarkerSpacing,\n style: {\n r: styleSheet.legendCircleMarkerSize,\n fill: styleSheet.legendMarkerColor,\n },\n },\n itemName: {\n spacing: 5, // 如果右边有 value 使用这个间距\n style: {\n fill: styleSheet.legendItemNameFillColor,\n fontFamily: styleSheet.fontFamily,\n fontSize: styleSheet.legendItemNameFontSize,\n lineHeight: styleSheet.legendItemNameLineHeight,\n fontWeight: styleSheet.legendItemNameFontWeight,\n textAlign: 'start',\n textBaseline: 'middle',\n },\n },\n itemStates: {\n active: {\n nameStyle: {\n opacity: 0.8,\n },\n },\n unchecked: {\n nameStyle: {\n fill: '#D8D8D8',\n },\n markerStyle: {\n fill: '#D8D8D8',\n stroke: '#D8D8D8',\n },\n },\n inactive: {\n nameStyle: {\n fill: '#D8D8D8',\n },\n markerStyle: {\n opacity: 0.2,\n },\n },\n },\n flipPage: true,\n pageNavigator: {\n marker: {\n style: {\n size: styleSheet.legendPageNavigatorMarkerSize,\n inactiveFill: styleSheet.legendPageNavigatorMarkerInactiveFillColor,\n inactiveOpacity: styleSheet.legendPageNavigatorMarkerInactiveFillOpacity,\n fill: styleSheet.legendPageNavigatorMarkerFillColor,\n opacity: styleSheet.legendPageNavigatorMarkerFillOpacity,\n },\n },\n text: {\n style: {\n fill: styleSheet.legendPageNavigatorTextFillColor,\n fontSize: styleSheet.legendPageNavigatorTextFontSize,\n },\n },\n },\n animate: false,\n maxItemWidth: 200,\n itemSpacing: styleSheet.legendItemSpacing,\n itemMarginBottom: styleSheet.legendItemMarginBottom,\n padding: styleSheet.legendPadding, // 图例组件自己的外边距\n };\n}\n\n/**\n * 根据主题样式表生成主题结构\n * @param styleSheet 主题样式表\n */\nexport function createThemeByStyleSheet(styleSheet: StyleSheet): LooseObject {\n const shapeStyles = {\n point: {\n default: {\n fill: styleSheet.pointFillColor,\n r: styleSheet.pointSize,\n stroke: styleSheet.pointBorderColor,\n lineWidth: styleSheet.pointBorder,\n fillOpacity: styleSheet.pointFillOpacity,\n },\n active: {\n stroke: styleSheet.pointActiveBorderColor,\n lineWidth: styleSheet.pointActiveBorder,\n },\n selected: {\n stroke: styleSheet.pointSelectedBorderColor,\n lineWidth: styleSheet.pointSelectedBorder,\n },\n inactive: {\n fillOpacity: styleSheet.pointInactiveFillOpacity,\n strokeOpacity: styleSheet.pointInactiveBorderOpacity,\n },\n },\n hollowPoint: {\n default: {\n fill: styleSheet.hollowPointFillColor,\n lineWidth: styleSheet.hollowPointBorder,\n stroke: styleSheet.hollowPointBorderColor,\n strokeOpacity: styleSheet.hollowPointBorderOpacity,\n r: styleSheet.hollowPointSize,\n },\n active: {\n stroke: styleSheet.hollowPointActiveBorderColor,\n strokeOpacity: styleSheet.hollowPointActiveBorderOpacity,\n },\n selected: {\n lineWidth: styleSheet.hollowPointSelectedBorder,\n stroke: styleSheet.hollowPointSelectedBorderColor,\n strokeOpacity: styleSheet.hollowPointSelectedBorderOpacity,\n },\n inactive: {\n strokeOpacity: styleSheet.hollowPointInactiveBorderOpacity,\n },\n },\n area: {\n default: {\n fill: styleSheet.areaFillColor,\n fillOpacity: styleSheet.areaFillOpacity,\n stroke: null,\n },\n active: {\n fillOpacity: styleSheet.areaActiveFillOpacity,\n },\n selected: {\n fillOpacity: styleSheet.areaSelectedFillOpacity,\n },\n inactive: {\n fillOpacity: styleSheet.areaInactiveFillOpacity,\n },\n },\n hollowArea: {\n default: {\n fill: null,\n stroke: styleSheet.hollowAreaBorderColor,\n lineWidth: styleSheet.hollowAreaBorder,\n strokeOpacity: styleSheet.hollowAreaBorderOpacity,\n },\n active: {\n fill: null,\n lineWidth: styleSheet.hollowAreaActiveBorder,\n },\n selected: {\n fill: null,\n lineWidth: styleSheet.hollowAreaSelectedBorder,\n },\n inactive: {\n strokeOpacity: styleSheet.hollowAreaInactiveBorderOpacity,\n },\n },\n interval: {\n default: {\n fill: styleSheet.intervalFillColor,\n fillOpacity: styleSheet.intervalFillOpacity,\n },\n active: {\n stroke: styleSheet.intervalActiveBorderColor,\n lineWidth: styleSheet.intervalActiveBorder,\n },\n selected: {\n stroke: styleSheet.intervalSelectedBorderColor,\n lineWidth: styleSheet.intervalSelectedBorder,\n },\n inactive: {\n fillOpacity: styleSheet.intervalInactiveFillOpacity,\n strokeOpacity: styleSheet.intervalInactiveBorderOpacity,\n },\n },\n hollowInterval: {\n default: {\n fill: styleSheet.hollowIntervalFillColor,\n stroke: styleSheet.hollowIntervalBorderColor,\n lineWidth: styleSheet.hollowIntervalBorder,\n strokeOpacity: styleSheet.hollowIntervalBorderOpacity,\n },\n active: {\n stroke: styleSheet.hollowIntervalActiveBorderColor,\n lineWidth: styleSheet.hollowIntervalActiveBorder,\n strokeOpacity: styleSheet.hollowIntervalActiveBorderOpacity,\n },\n selected: {\n stroke: styleSheet.hollowIntervalSelectedBorderColor,\n lineWidth: styleSheet.hollowIntervalSelectedBorder,\n strokeOpacity: styleSheet.hollowIntervalSelectedBorderOpacity,\n },\n inactive: {\n stroke: styleSheet.hollowIntervalInactiveBorderColor,\n lineWidth: styleSheet.hollowIntervalInactiveBorder,\n strokeOpacity: styleSheet.hollowIntervalInactiveBorderOpacity,\n },\n },\n line: {\n default: {\n stroke: styleSheet.lineBorderColor,\n lineWidth: styleSheet.lineBorder,\n strokeOpacity: styleSheet.lineBorderOpacity,\n fill: null,\n lineAppendWidth: 10,\n lineCap: 'round',\n lineJoin: 'round',\n },\n active: {\n lineWidth: styleSheet.lineActiveBorder,\n },\n selected: {\n lineWidth: styleSheet.lineSelectedBorder,\n },\n inactive: {\n strokeOpacity: styleSheet.lineInactiveBorderOpacity,\n },\n },\n };\n const axisStyles = createAxisStyles(styleSheet);\n const legendStyles = createLegendStyles(styleSheet);\n\n return {\n background: styleSheet.backgroundColor,\n defaultColor: styleSheet.brandColor,\n subColor: styleSheet.subColor,\n semanticRed: styleSheet.paletteSemanticRed,\n semanticGreen: styleSheet.paletteSemanticGreen,\n padding: 'auto',\n fontFamily: styleSheet.fontFamily,\n // 兼容Theme配置\n /** 一般柱状图宽度占比,geometry中已添加默认值,为了geometry配置生效默认值为null */\n columnWidthRatio: 1 / 2,\n /** 柱状图最大宽度 */\n maxColumnWidth: null,\n /** 柱状图最小宽度 */\n minColumnWidth: null,\n /** 玫瑰图占比 */\n roseWidthRatio: 0.9999999,\n /** 多层饼图/环图占比 */\n multiplePieWidthRatio: 1 / 1.3,\n colors10: styleSheet.paletteQualitative10,\n colors20: styleSheet.paletteQualitative20,\n sequenceColors: styleSheet.paletteSequence,\n shapes: {\n point: [\n 'hollow-circle',\n 'hollow-square',\n 'hollow-bowtie',\n 'hollow-diamond',\n 'hollow-hexagon',\n 'hollow-triangle',\n 'hollow-triangle-down',\n 'circle',\n 'square',\n 'bowtie',\n 'diamond',\n 'hexagon',\n 'triangle',\n 'triangle-down',\n 'cross',\n 'tick',\n 'plus',\n 'hyphen',\n 'line',\n ],\n line: ['line', 'dash', 'dot', 'smooth'],\n area: ['area', 'smooth', 'line', 'smooth-line'],\n interval: ['rect', 'hollow-rect', 'line', 'tick'],\n },\n sizes: [1, 10],\n geometries: {\n interval: {\n rect: {\n default: {\n style: shapeStyles.interval.default,\n },\n active: {\n style: shapeStyles.interval.active,\n },\n inactive: {\n style: shapeStyles.interval.inactive,\n },\n selected: {\n style: (element: Element) => {\n const coordinate = element.geometry.coordinate;\n if (coordinate.isPolar && coordinate.isTransposed) {\n const { startAngle, endAngle } = getAngle(element.getModel(), coordinate);\n const middleAngle = (startAngle + endAngle) / 2;\n const r = 7.5;\n const x = r * Math.cos(middleAngle);\n const y = r * Math.sin(middleAngle);\n return {\n matrix: ext.transform(null, [['t', x, y]]),\n };\n }\n return shapeStyles.interval.selected;\n },\n },\n },\n 'hollow-rect': {\n default: {\n style: shapeStyles.hollowInterval.default,\n },\n active: {\n style: shapeStyles.hollowInterval.active,\n },\n inactive: {\n style: shapeStyles.hollowInterval.inactive,\n },\n selected: {\n style: shapeStyles.hollowInterval.selected,\n },\n },\n line: {\n default: {\n style: shapeStyles.hollowInterval.default,\n },\n active: {\n style: shapeStyles.hollowInterval.active,\n },\n inactive: {\n style: shapeStyles.hollowInterval.inactive,\n },\n selected: {\n style: shapeStyles.hollowInterval.selected,\n },\n },\n tick: {\n default: {\n style: shapeStyles.hollowInterval.default,\n },\n active: {\n style: shapeStyles.hollowInterval.active,\n },\n inactive: {\n style: shapeStyles.hollowInterval.inactive,\n },\n selected: {\n style: shapeStyles.hollowInterval.selected,\n },\n },\n funnel: {\n default: {\n style: shapeStyles.interval.default,\n },\n active: {\n style: shapeStyles.interval.active,\n },\n inactive: {\n style: shapeStyles.interval.inactive,\n },\n selected: {\n style: shapeStyles.interval.selected,\n },\n },\n pyramid: {\n default: {\n style: shapeStyles.interval.default,\n },\n active: {\n style: shapeStyles.interval.active,\n },\n inactive: {\n style: shapeStyles.interval.inactive,\n },\n selected: {\n style: shapeStyles.interval.selected,\n },\n },\n },\n line: {\n line: {\n default: {\n style: shapeStyles.line.default,\n },\n active: {\n style: shapeStyles.line.active,\n },\n inactive: {\n style: shapeStyles.line.inactive,\n },\n selected: {\n style: shapeStyles.line.selected,\n },\n },\n dot: {\n default: {\n style: {\n ...shapeStyles.line.default,\n lineCap: null,\n lineDash: [1, 1],\n },\n },\n active: {\n style: {\n ...shapeStyles.line.active,\n lineCap: null,\n lineDash: [1, 1],\n },\n },\n inactive: {\n style: {\n ...shapeStyles.line.inactive,\n lineCap: null,\n lineDash: [1, 1],\n },\n },\n selected: {\n style: {\n ...shapeStyles.line.selected,\n lineCap: null,\n lineDash: [1, 1],\n },\n },\n },\n dash: {\n default: {\n style: {\n ...shapeStyles.line.default,\n lineCap: null,\n lineDash: [5.5, 1],\n },\n },\n active: {\n style: {\n ...shapeStyles.line.active,\n lineCap: null,\n lineDash: [5.5, 1],\n },\n },\n inactive: {\n style: {\n ...shapeStyles.line.inactive,\n lineCap: null,\n lineDash: [5.5, 1],\n },\n },\n selected: {\n style: {\n ...shapeStyles.line.selected,\n lineCap: null,\n lineDash: [5.5, 1],\n },\n },\n },\n smooth: {\n default: {\n style: shapeStyles.line.default,\n },\n active: {\n style: shapeStyles.line.active,\n },\n inactive: {\n style: shapeStyles.line.inactive,\n },\n selected: {\n style: shapeStyles.line.selected,\n },\n },\n hv: {\n default: {\n style: shapeStyles.line.default,\n },\n active: {\n style: shapeStyles.line.active,\n },\n inactive: {\n style: shapeStyles.line.inactive,\n },\n selected: {\n style: shapeStyles.line.selected,\n },\n },\n vh: {\n default: {\n style: shapeStyles.line.default,\n },\n active: {\n style: shapeStyles.line.active,\n },\n inactive: {\n style: shapeStyles.line.inactive,\n },\n selected: {\n style: shapeStyles.line.selected,\n },\n },\n hvh: {\n default: {\n style: shapeStyles.line.default,\n },\n active: {\n style: shapeStyles.line.active,\n },\n inactive: {\n style: shapeStyles.line.inactive,\n },\n selected: {\n style: shapeStyles.line.selected,\n },\n },\n vhv: {\n default: {\n style: shapeStyles.line.default,\n },\n active: {\n style: shapeStyles.line.active,\n },\n inactive: {\n style: shapeStyles.line.inactive,\n },\n selected: {\n style: shapeStyles.line.selected,\n },\n },\n },\n polygon: {\n polygon: {\n default: {\n style: shapeStyles.interval.default,\n },\n active: {\n style: shapeStyles.interval.active,\n },\n inactive: {\n style: shapeStyles.interval.inactive,\n },\n selected: {\n style: shapeStyles.interval.selected,\n },\n },\n },\n point: {\n circle: {\n default: {\n style: shapeStyles.point.default,\n },\n active: {\n style: shapeStyles.point.active,\n },\n inactive: {\n style: shapeStyles.point.inactive,\n },\n selected: {\n style: shapeStyles.point.selected,\n },\n },\n square: {\n default: {\n style: shapeStyles.point.default,\n },\n active: {\n style: shapeStyles.point.active,\n },\n inactive: {\n style: shapeStyles.point.inactive,\n },\n selected: {\n style: shapeStyles.point.selected,\n },\n },\n bowtie: {\n default: {\n style: shapeStyles.point.default,\n },\n active: {\n style: shapeStyles.point.active,\n },\n inactive: {\n style: shapeStyles.point.inactive,\n },\n selected: {\n style: shapeStyles.point.selected,\n },\n },\n diamond: {\n default: {\n style: shapeStyles.point.default,\n },\n active: {\n style: shapeStyles.point.active,\n },\n inactive: {\n style: shapeStyles.point.inactive,\n },\n selected: {\n style: shapeStyles.point.selected,\n },\n },\n hexagon: {\n default: {\n style: shapeStyles.point.default,\n },\n active: {\n style: shapeStyles.point.active,\n },\n inactive: {\n style: shapeStyles.point.inactive,\n },\n selected: {\n style: shapeStyles.point.selected,\n },\n },\n triangle: {\n default: {\n style: shapeStyles.point.default,\n },\n active: {\n style: shapeStyles.point.active,\n },\n inactive: {\n style: shapeStyles.point.inactive,\n },\n selected: {\n style: shapeStyles.point.selected,\n },\n },\n 'triangle-down': {\n default: {\n style: shapeStyles.point.default,\n },\n active: {\n style: shapeStyles.point.active,\n },\n inactive: {\n style: shapeStyles.point.inactive,\n },\n selected: {\n style: shapeStyles.point.selected,\n },\n },\n 'hollow-circle': {\n default: {\n style: shapeStyles.hollowPoint.default,\n },\n active: {\n style: shapeStyles.hollowPoint.active,\n },\n inactive: {\n style: shapeStyles.hollowPoint.inactive,\n },\n selected: {\n style: shapeStyles.hollowPoint.selected,\n },\n },\n 'hollow-square': {\n default: {\n style: shapeStyles.hollowPoint.default,\n },\n active: {\n style: shapeStyles.hollowPoint.active,\n },\n inactive: {\n style: shapeStyles.hollowPoint.inactive,\n },\n selected: {\n style: shapeStyles.hollowPoint.selected,\n },\n },\n 'hollow-bowtie': {\n default: {\n style: shapeStyles.hollowPoint.default,\n },\n active: {\n style: shapeStyles.hollowPoint.active,\n },\n inactive: {\n style: shapeStyles.hollowPoint.inactive,\n },\n selected: {\n style: shapeStyles.hollowPoint.selected,\n },\n },\n 'hollow-diamond': {\n default: {\n style: shapeStyles.hollowPoint.default,\n },\n active: {\n style: shapeStyles.hollowPoint.active,\n },\n inactive: {\n style: shapeStyles.hollowPoint.inactive,\n },\n selected: {\n style: shapeStyles.hollowPoint.selected,\n },\n },\n 'hollow-hexagon': {\n default: {\n style: shapeStyles.hollowPoint.default,\n },\n active: {\n style: shapeStyles.hollowPoint.active,\n },\n inactive: {\n style: shapeStyles.hollowPoint.inactive,\n },\n selected: {\n style: shapeStyles.hollowPoint.selected,\n },\n },\n 'hollow-triangle': {\n default: {\n style: shapeStyles.hollowPoint.default,\n },\n active: {\n style: shapeStyles.hollowPoint.active,\n },\n inactive: {\n style: shapeStyles.hollowPoint.inactive,\n },\n selected: {\n style: shapeStyles.hollowPoint.selected,\n },\n },\n 'hollow-triangle-down': {\n default: {\n style: shapeStyles.hollowPoint.default,\n },\n active: {\n style: shapeStyles.hollowPoint.active,\n },\n inactive: {\n style: shapeStyles.hollowPoint.inactive,\n },\n selected: {\n style: shapeStyles.hollowPoint.selected,\n },\n },\n cross: {\n default: {\n style: shapeStyles.hollowPoint.default,\n },\n active: {\n style: shapeStyles.hollowPoint.active,\n },\n inactive: {\n style: shapeStyles.hollowPoint.inactive,\n },\n selected: {\n style: shapeStyles.hollowPoint.selected,\n },\n },\n tick: {\n default: {\n style: shapeStyles.hollowPoint.default,\n },\n active: {\n style: shapeStyles.hollowPoint.active,\n },\n inactive: {\n style: shapeStyles.hollowPoint.inactive,\n },\n selected: {\n style: shapeStyles.hollowPoint.selected,\n },\n },\n plus: {\n default: {\n style: shapeStyles.hollowPoint.default,\n },\n active: {\n style: shapeStyles.hollowPoint.active,\n },\n inactive: {\n style: shapeStyles.hollowPoint.inactive,\n },\n selected: {\n style: shapeStyles.hollowPoint.selected,\n },\n },\n hyphen: {\n default: {\n style: shapeStyles.hollowPoint.default,\n },\n active: {\n style: shapeStyles.hollowPoint.active,\n },\n inactive: {\n style: shapeStyles.hollowPoint.inactive,\n },\n selected: {\n style: shapeStyles.hollowPoint.selected,\n },\n },\n line: {\n default: {\n style: shapeStyles.hollowPoint.default,\n },\n active: {\n style: shapeStyles.hollowPoint.active,\n },\n inactive: {\n style: shapeStyles.hollowPoint.inactive,\n },\n selected: {\n style: shapeStyles.hollowPoint.selected,\n },\n },\n },\n area: {\n area: {\n default: {\n style: shapeStyles.area.default,\n },\n active: {\n style: shapeStyles.area.active,\n },\n inactive: {\n style: shapeStyles.area.inactive,\n },\n selected: {\n style: shapeStyles.area.selected,\n },\n },\n smooth: {\n default: {\n style: shapeStyles.area.default,\n },\n active: {\n style: shapeStyles.area.active,\n },\n inactive: {\n style: shapeStyles.area.inactive,\n },\n selected: {\n style: shapeStyles.area.selected,\n },\n },\n line: {\n default: {\n style: shapeStyles.hollowArea.default,\n },\n active: {\n style: shapeStyles.hollowArea.active,\n },\n inactive: {\n style: shapeStyles.hollowArea.inactive,\n },\n selected: {\n style: shapeStyles.hollowArea.selected,\n },\n },\n 'smooth-line': {\n default: {\n style: shapeStyles.hollowArea.default,\n },\n active: {\n style: shapeStyles.hollowArea.active,\n },\n inactive: {\n style: shapeStyles.hollowArea.inactive,\n },\n selected: {\n style: shapeStyles.hollowArea.selected,\n },\n },\n },\n schema: {\n candle: {\n default: {\n style: shapeStyles.hollowInterval.default,\n },\n active: {\n style: shapeStyles.hollowInterval.active,\n },\n inactive: {\n style: shapeStyles.hollowInterval.inactive,\n },\n selected: {\n style: shapeStyles.hollowInterval.selected,\n },\n },\n box: {\n default: {\n style: shapeStyles.hollowInterval.default,\n },\n active: {\n style: shapeStyles.hollowInterval.active,\n },\n inactive: {\n style: shapeStyles.hollowInterval.inactive,\n },\n selected: {\n style: shapeStyles.hollowInterval.selected,\n },\n },\n },\n edge: {\n line: {\n default: {\n style: shapeStyles.line.default,\n },\n active: {\n style: shapeStyles.line.active,\n },\n inactive: {\n style: shapeStyles.line.inactive,\n },\n selected: {\n style: shapeStyles.line.selected,\n },\n },\n vhv: {\n default: {\n style: shapeStyles.line.default,\n },\n active: {\n style: shapeStyles.line.active,\n },\n inactive: {\n style: shapeStyles.line.inactive,\n },\n selected: {\n style: shapeStyles.line.selected,\n },\n },\n smooth: {\n default: {\n style: shapeStyles.line.default,\n },\n active: {\n style: shapeStyles.line.active,\n },\n inactive: {\n style: shapeStyles.line.inactive,\n },\n selected: {\n style: shapeStyles.line.selected,\n },\n },\n arc: {\n default: {\n style: shapeStyles.line.default,\n },\n active: {\n style: shapeStyles.line.active,\n },\n inactive: {\n style: shapeStyles.line.inactive,\n },\n selected: {\n style: shapeStyles.line.selected,\n },\n },\n },\n violin: {\n violin: {\n default: {\n style: shapeStyles.line.default,\n },\n active: {\n style: shapeStyles.line.active,\n },\n inactive: {\n style: shapeStyles.line.inactive,\n },\n selected: {\n style: shapeStyles.line.selected,\n },\n },\n smooth: {\n default: {\n style: shapeStyles.line.default,\n },\n active: {\n style: shapeStyles.line.active,\n },\n inactive: {\n style: shapeStyles.line.inactive,\n },\n selected: {\n style: shapeStyles.line.selected,\n },\n },\n hollow: {\n default: {\n style: shapeStyles.hollowArea.default,\n },\n active: {\n style: shapeStyles.hollowArea.active,\n },\n inactive: {\n style: shapeStyles.hollowArea.inactive,\n },\n selected: {\n style: shapeStyles.hollowArea.selected,\n },\n },\n 'hollow-smooth': {\n default: {\n style: shapeStyles.hollowArea.default,\n },\n active: {\n style: shapeStyles.hollowArea.active,\n },\n inactive: {\n style: shapeStyles.hollowArea.inactive,\n },\n selected: {\n style: shapeStyles.hollowArea.selected,\n },\n },\n },\n },\n components: {\n axis: {\n common: axisStyles,\n top: {\n position: 'top',\n grid: null,\n title: null,\n verticalLimitLength: 1 / 2,\n },\n bottom: {\n position: 'bottom',\n grid: null,\n title: null,\n verticalLimitLength: 1 / 2,\n },\n left: {\n position: 'left',\n title: null,\n line: null,\n tickLine: null,\n verticalLimitLength: 1 / 3,\n },\n right: {\n position: 'right',\n title: null,\n line: null,\n tickLine: null,\n verticalLimitLength: 1 / 3,\n },\n circle: {\n title: null,\n grid: deepMix({}, axisStyles.grid, { line: { type: 'line' } }),\n },\n radius: {\n title: null,\n grid: deepMix({}, axisStyles.grid, { line: { type: 'circle' } }),\n },\n },\n legend: {\n common: legendStyles,\n right: {\n layout: 'vertical',\n padding: styleSheet.legendVerticalPadding,\n },\n left: {\n layout: 'vertical',\n padding: styleSheet.legendVerticalPadding,\n },\n top: {\n layout: 'horizontal',\n padding: styleSheet.legendHorizontalPadding,\n },\n bottom: {\n layout: 'horizontal',\n padding: styleSheet.legendHorizontalPadding,\n },\n continuous: {\n title: null,\n background: null,\n track: {},\n rail: {\n type: 'color',\n size: styleSheet.sliderRailHeight,\n defaultLength: styleSheet.sliderRailWidth,\n style: {\n fill: styleSheet.sliderRailFillColor,\n stroke: styleSheet.sliderRailBorderColor,\n lineWidth: styleSheet.sliderRailBorder,\n },\n },\n label: {\n align: 'rail',\n spacing: 4, // 文本和 rail 的间距\n formatter: null,\n style: {\n fill: styleSheet.sliderLabelTextFillColor,\n fontSize: styleSheet.sliderLabelTextFontSize,\n lineHeight: styleSheet.sliderLabelTextLineHeight,\n textBaseline: 'middle',\n fontFamily: styleSheet.fontFamily,\n },\n },\n handler: {\n size: styleSheet.sliderHandlerWidth,\n style: {\n fill: styleSheet.sliderHandlerFillColor,\n stroke: styleSheet.sliderHandlerBorderColor,\n },\n },\n slidable: true,\n padding: legendStyles.padding,\n },\n },\n tooltip: {\n showContent: true,\n follow: true,\n showCrosshairs: false,\n showMarkers: true,\n shared: false,\n enterable: false,\n position: 'auto',\n marker: {\n symbol: 'circle',\n stroke: '#fff',\n shadowBlur: 10,\n shadowOffsetX: 0,\n shadowOffsetY: 0,\n shadowColor: 'rgba(0,0,0,0.09)',\n lineWidth: 2,\n r: 4,\n },\n crosshairs: {\n line: {\n style: {\n stroke: styleSheet.tooltipCrosshairsBorderColor,\n lineWidth: styleSheet.tooltipCrosshairsBorder,\n },\n },\n text: null,\n textBackground: {\n padding: 2,\n style: {\n fill: 'rgba(0, 0, 0, 0.25)',\n lineWidth: 0,\n stroke: null,\n },\n },\n follow: false,\n },\n // tooltip dom 样式\n domStyles: {\n [`${TOOLTIP_CSS_CONST.CONTAINER_CLASS}`]: {\n position: 'absolute',\n visibility: 'hidden',\n zIndex: 8,\n transition: 'left 0.4s cubic-bezier(0.23, 1, 0.32, 1) 0s, top 0.4s cubic-bezier(0.23, 1, 0.32, 1) 0s',\n backgroundColor: styleSheet.tooltipContainerFillColor,\n opacity: styleSheet.tooltipContainerFillOpacity,\n boxShadow: styleSheet.tooltipContainerShadow,\n borderRadius: `${styleSheet.tooltipContainerBorderRadius}px`,\n color: styleSheet.tooltipTextFillColor,\n fontSize: `${styleSheet.tooltipTextFontSize}px`,\n fontFamily: styleSheet.fontFamily,\n lineHeight: `${styleSheet.tooltipTextLineHeight}px`,\n padding: '0 12px 0 12px',\n },\n [`${TOOLTIP_CSS_CONST.TITLE_CLASS}`]: {\n marginBottom: '12px',\n marginTop: '12px',\n },\n [`${TOOLTIP_CSS_CONST.LIST_CLASS}`]: {\n margin: 0,\n listStyleType: 'none',\n padding: 0,\n },\n [`${TOOLTIP_CSS_CONST.LIST_ITEM_CLASS}`]: {\n listStyleType: 'none',\n padding: 0,\n marginBottom: '12px',\n marginTop: '12px',\n marginLeft: 0,\n marginRight: 0,\n },\n [`${TOOLTIP_CSS_CONST.MARKER_CLASS}`]: {\n width: '8px',\n height: '8px',\n borderRadius: '50%',\n display: 'inline-block',\n marginRight: '8px',\n },\n [`${TOOLTIP_CSS_CONST.VALUE_CLASS}`]: {\n display: 'inline-block',\n float: 'right',\n marginLeft: '30px',\n },\n },\n },\n annotation: {\n arc: {\n style: {\n stroke: styleSheet.annotationArcBorderColor,\n lineWidth: styleSheet.annotationArcBorder,\n },\n animate: true,\n },\n line: {\n style: {\n stroke: styleSheet.annotationLineBorderColor,\n lineDash: styleSheet.annotationLineDash,\n lineWidth: styleSheet.annotationLineBorder,\n },\n text: {\n position: 'start',\n autoRotate: true,\n style: {\n fill: styleSheet.annotationTextFillColor,\n stroke: styleSheet.annotationTextBorderColor,\n lineWidth: styleSheet.annotationTextBorder,\n fontSize: styleSheet.annotationTextFontSize,\n textAlign: 'start',\n fontFamily: styleSheet.fontFamily,\n textBaseline: 'bottom',\n },\n },\n animate: true,\n },\n text: {\n style: {\n fill: styleSheet.annotationTextFillColor,\n stroke: styleSheet.annotationTextBorderColor,\n lineWidth: styleSheet.annotationTextBorder,\n fontSize: styleSheet.annotationTextFontSize,\n textBaseline: 'middle',\n textAlign: 'start',\n fontFamily: styleSheet.fontFamily,\n },\n animate: true,\n },\n region: {\n top: false,\n style: {\n lineWidth: styleSheet.annotationRegionBorder,\n stroke: styleSheet.annotationRegionBorderColor,\n fill: styleSheet.annotationRegionFillColor,\n fillOpacity: styleSheet.annotationRegionFillOpacity,\n }, // 辅助框的图形样式属性\n animate: true,\n },\n image: {\n top: false,\n animate: true,\n },\n dataMarker: {\n top: true,\n point: {\n style: {\n r: 3,\n stroke: styleSheet.brandColor,\n lineWidth: 2,\n },\n },\n line: {\n style: {\n stroke: styleSheet.annotationLineBorderColor,\n lineWidth: styleSheet.annotationLineBorder,\n },\n length: styleSheet.annotationDataMarkerLineLength,\n },\n text: {\n style: {\n textAlign: 'start',\n fill: styleSheet.annotationTextFillColor,\n stroke: styleSheet.annotationTextBorderColor,\n lineWidth: styleSheet.annotationTextBorder,\n fontSize: styleSheet.annotationTextFontSize,\n fontFamily: styleSheet.fontFamily,\n },\n },\n direction: 'upward',\n autoAdjust: true,\n animate: true,\n },\n dataRegion: {\n style: {\n region: {\n fill: styleSheet.annotationRegionFillColor,\n fillOpacity: styleSheet.annotationRegionFillOpacity,\n },\n text: {\n textAlign: 'center',\n textBaseline: 'bottom',\n fill: styleSheet.annotationTextFillColor,\n stroke: styleSheet.annotationTextBorderColor,\n lineWidth: styleSheet.annotationTextBorder,\n fontSize: styleSheet.annotationTextFontSize,\n fontFamily: styleSheet.fontFamily,\n },\n },\n animate: true,\n },\n },\n slider: {\n common: {\n padding: [8, 8, 8, 8],\n backgroundStyle: {\n fill: styleSheet.cSliderBackgroundFillColor,\n opacity: styleSheet.cSliderBackgroundFillOpacity,\n },\n foregroundStyle: {\n fill: styleSheet.cSliderForegroundFillColor,\n opacity: styleSheet.cSliderForegroundFillOpacity,\n },\n handlerStyle: {\n width: styleSheet.cSliderHandlerWidth,\n height: styleSheet.cSliderHandlerHeight,\n fill: styleSheet.cSliderHandlerFillColor,\n opacity: styleSheet.cSliderHandlerFillOpacity,\n stroke: styleSheet.cSliderHandlerBorderColor,\n lineWidth: styleSheet.cSliderHandlerBorder,\n radius: styleSheet.cSliderHandlerBorderRadius,\n // 高亮的颜色\n highLightFill: styleSheet.cSliderHandlerHighlightFillColor,\n },\n textStyle: {\n fill: styleSheet.cSliderTextFillColor,\n opacity: styleSheet.cSliderTextFillOpacity,\n fontSize: styleSheet.cSliderTextFontSize,\n lineHeight: styleSheet.cSliderTextLineHeight,\n fontWeight: styleSheet.cSliderTextFontWeight,\n stroke: styleSheet.cSliderTextBorderColor,\n lineWidth: styleSheet.cSliderTextBorder,\n },\n },\n },\n scrollbar: {\n common: {\n padding: [8, 8, 8, 8],\n },\n default: {\n style: {\n trackColor: styleSheet.scrollbarTrackFillColor,\n thumbColor: styleSheet.scrollbarThumbFillColor,\n },\n },\n hover: {\n style: {\n thumbColor: styleSheet.scrollbarThumbHighlightFillColor,\n },\n },\n },\n },\n labels: {\n offset: 12,\n style: {\n fill: styleSheet.labelFillColor,\n fontSize: styleSheet.labelFontSize,\n fontFamily: styleSheet.fontFamily,\n stroke: styleSheet.labelBorderColor,\n lineWidth: styleSheet.labelBorder,\n },\n fillColorDark: styleSheet.labelFillColorDark,\n fillColorLight: styleSheet.labelFillColorLight,\n autoRotate: true,\n },\n innerLabels: {\n style: {\n fill: styleSheet.innerLabelFillColor,\n fontSize: styleSheet.innerLabelFontSize,\n fontFamily: styleSheet.fontFamily,\n stroke: styleSheet.innerLabelBorderColor,\n lineWidth: styleSheet.innerLabelBorder,\n },\n autoRotate: true,\n },\n overflowLabels: {\n style: {\n fill: styleSheet.overflowLabelFillColor,\n fontSize: styleSheet.overflowLabelFontSize,\n fontFamily: styleSheet.fontFamily,\n stroke: styleSheet.overflowLabelBorderColor,\n lineWidth: styleSheet.overflowLabelBorder,\n },\n },\n pieLabels: {\n labelHeight: 14,\n offset: 10,\n labelLine: {\n style: {\n lineWidth: styleSheet.labelLineBorder,\n },\n },\n autoRotate: true,\n },\n };\n}\n","import { StyleSheetCfg } from '../../interface';\n\nconst BLACK_COLORS = {\n 100: '#000',\n 95: '#0D0D0D',\n 85: '#262626',\n 65: '#595959',\n 45: '#8C8C8C',\n 25: '#BFBFBF',\n 15: '#D9D9D9',\n 6: '#F0F0F0',\n};\n\nconst WHITE_COLORS = {\n 100: '#FFFFFF',\n 95: '#F2F2F2',\n 85: '#D9D9D9',\n 65: '#A6A6A6',\n 45: '#737373',\n 25: '#404040',\n 15: '#262626',\n 6: '#0F0F0F',\n};\n\nconst QUALITATIVE_10 = [\n '#5B8FF9',\n '#5AD8A6',\n '#5D7092',\n '#F6BD16',\n '#6F5EF9',\n '#6DC8EC',\n '#945FB9',\n '#FF9845',\n '#1E9493',\n '#FF99C3',\n];\n\nconst QUALITATIVE_20 = [\n '#5B8FF9',\n '#CDDDFD',\n '#5AD8A6',\n '#CDF3E4',\n '#5D7092',\n '#CED4DE',\n '#F6BD16',\n '#FCEBB9',\n '#6F5EF9',\n '#D3CEFD',\n '#6DC8EC',\n '#D3EEF9',\n '#945FB9',\n '#DECFEA',\n '#FF9845',\n '#FFE0C7',\n '#1E9493',\n '#BBDEDE',\n '#FF99C3',\n '#FFE0ED',\n];\n\n/** 单色顺序色板 */\nconst SINGLE_SEQUENCE = [\n '#B8E1FF',\n '#9AC5FF',\n '#7DAAFF',\n '#5B8FF9',\n '#3D76DD',\n '#085EC0',\n '#0047A5',\n '#00318A',\n '#001D70',\n];\n\nexport const createLightStyleSheet = (cfg: StyleSheetCfg = {}) => {\n const { paletteQualitative10 = QUALITATIVE_10, paletteQualitative20 = QUALITATIVE_20 } = cfg;\n const { brandColor = paletteQualitative10[0] } = cfg;\n\n const token = {\n /** 图表背景色 */\n backgroundColor: 'transparent',\n /** 主题色 */\n brandColor,\n /** 图表辅助色 */\n subColor: 'rgba(0,0,0,0.05)',\n /** 分类色板 1,在数据量小于等于 10 时使用 */\n paletteQualitative10,\n /** 分类色板 2,在数据量大于 10 时使用 */\n paletteQualitative20,\n /** 语义色 */\n paletteSemanticRed: '#F4664A',\n /** 语义色 */\n paletteSemanticGreen: '#30BF78',\n /** 语义色 */\n paletteSemanticYellow: '#FAAD14',\n /** (单色)顺序色板 */\n paletteSequence: SINGLE_SEQUENCE,\n /** 字体 */\n fontFamily: `\"Segoe UI\", Roboto, \"Helvetica Neue\", Arial,\n \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\",\n \"Noto Color Emoji\"`,\n\n // -------------------- 坐标轴 --------------------\n /** 坐标轴线颜色 */\n axisLineBorderColor: BLACK_COLORS[25],\n /** 坐标轴线粗细 */\n axisLineBorder: 1,\n /** 坐标轴线 lineDash 设置 */\n axisLineDash: null,\n\n /** 坐标轴标题颜色 */\n axisTitleTextFillColor: BLACK_COLORS[65],\n /** 坐标轴标题文本字体大小 */\n axisTitleTextFontSize: 12,\n /** 坐标轴标题文本行高 */\n axisTitleTextLineHeight: 12,\n /** 坐标轴标题文本字体粗细 */\n axisTitleTextFontWeight: 'normal',\n /** 坐标轴标题距离坐标轴文本的间距 */\n axisTitleSpacing: 12,\n /** 坐标轴标题详细说明icon颜色 */\n axisDescriptionIconFillColor: WHITE_COLORS[85],\n\n /** 坐标轴刻度线颜色 */\n axisTickLineBorderColor: BLACK_COLORS[25],\n /** 坐标轴刻度线长度 */\n axisTickLineLength: 4,\n /** 坐标轴刻度线粗细 */\n axisTickLineBorder: 1,\n\n /** 坐标轴次刻度线颜色 */\n axisSubTickLineBorderColor: BLACK_COLORS[15],\n /** 坐标轴次刻度线长度 */\n axisSubTickLineLength: 2,\n /** 坐标轴次刻度线粗细 */\n axisSubTickLineBorder: 1,\n\n /** 坐标轴刻度文本颜色 */\n axisLabelFillColor: BLACK_COLORS[45],\n /** 坐标轴刻度文本字体大小 */\n axisLabelFontSize: 12,\n /** 坐标轴刻度文本行高 */\n axisLabelLineHeight: 12,\n /** 坐标轴刻度文本字体粗细 */\n axisLabelFontWeight: 'normal',\n /** 坐标轴刻度文本距离坐标轴线的间距 */\n axisLabelOffset: 8,\n\n /** 坐标轴网格线颜色 */\n axisGridBorderColor: BLACK_COLORS[15],\n /** 坐标轴网格线粗细 */\n axisGridBorder: 1,\n /** 坐标轴网格线虚线设置 */\n axisGridLineDash: null,\n\n // -------------------- 图例 --------------------\n /** 图例标题颜色 */\n legendTitleTextFillColor: BLACK_COLORS[45],\n /** 图例标题文本字体大小 */\n legendTitleTextFontSize: 12,\n /** 图例标题文本行高 */\n legendTitleTextLineHeight: 21,\n /** 图例标题文本字体粗细 */\n legendTitleTextFontWeight: 'normal',\n\n /** 图例 marker 颜色 */\n legendMarkerColor: brandColor,\n /** 图例 marker 距离图例文本的间距 */\n legendMarkerSpacing: 8,\n /** 图例 marker 默认半径大小 */\n legendMarkerSize: 4,\n /** 图例 'circle' marker 半径 */\n legendCircleMarkerSize: 4,\n /** 图例 'square' marker 半径 */\n legendSquareMarkerSize: 4,\n /** 图例 'line' marker 半径 */\n legendLineMarkerSize: 5,\n\n /** 图例项文本颜色 */\n legendItemNameFillColor: BLACK_COLORS[65],\n /** 图例项文本字体大小 */\n legendItemNameFontSize: 12,\n /** 图例项文本行高 */\n legendItemNameLineHeight: 12,\n /** 图例项粗细 */\n legendItemNameFontWeight: 'normal',\n /** 图例项之间的水平间距 */\n legendItemSpacing: 24,\n /** 图例项垂直方向的间隔 */\n legendItemMarginBottom: 12,\n /** 图例与图表绘图区域的偏移距离 */\n legendPadding: [8, 8, 8, 8],\n /** 水平布局的图例与绘图区域偏移距离 */\n legendHorizontalPadding: [8, 0, 8, 0],\n /** 垂直布局的图例与绘图区域偏移距离 */\n legendVerticalPadding: [0, 8, 0, 8],\n\n // 图例分页器\n /** 图例分页器 marker 大小 */\n legendPageNavigatorMarkerSize: 12,\n /** 图例分页器 marker 非激活状态填充色 */\n legendPageNavigatorMarkerInactiveFillColor: BLACK_COLORS[100],\n /** 图例分页器 marker 非激活状态填充色透明度 */\n legendPageNavigatorMarkerInactiveFillOpacity: 0.45,\n /** 图例分页器 marker 填充色 */\n legendPageNavigatorMarkerFillColor: BLACK_COLORS[100],\n /** 图例分页器 marker 填充色透明度 */\n legendPageNavigatorMarkerFillOpacity: 1,\n /** 图例分页器文本颜色 */\n legendPageNavigatorTextFillColor: BLACK_COLORS[45],\n /** 图例分页器文本字体大小 */\n legendPageNavigatorTextFontSize: 12,\n\n /** 连续图例滑块填充色 */\n sliderRailFillColor: BLACK_COLORS[15],\n /** 连续图例滑块边框粗细 */\n sliderRailBorder: 0,\n /** 连续图例滑块边框颜色 */\n sliderRailBorderColor: null,\n /** 连续图例滑块宽度 */\n sliderRailWidth: 100,\n /** 连续图例滑块高度 */\n sliderRailHeight: 12,\n\n /** 连续图例文本颜色 */\n sliderLabelTextFillColor: BLACK_COLORS[45],\n /** 连续图例文本字体大小 */\n sliderLabelTextFontSize: 12,\n /** 连续图例文本行高 */\n sliderLabelTextLineHeight: 12,\n /** 连续图例文本字体粗细 */\n sliderLabelTextFontWeight: 'normal',\n\n /** 连续图例滑块颜色 */\n sliderHandlerFillColor: BLACK_COLORS[6],\n /** 连续图例滑块宽度 */\n sliderHandlerWidth: 10,\n /** 连续图例滑块高度 */\n sliderHandlerHeight: 14,\n /** 连续图例滑块边框粗细 */\n sliderHandlerBorder: 1,\n /** 连续图例滑块边框颜色 */\n sliderHandlerBorderColor: BLACK_COLORS[25],\n\n // -------------------- Annotation,图形标注 --------------------\n /** arc 图形标注描边颜色 */\n annotationArcBorderColor: BLACK_COLORS[15],\n /** arc 图形标注粗细 */\n annotationArcBorder: 1,\n\n /** line 图形标注颜色 */\n annotationLineBorderColor: BLACK_COLORS[25],\n /** line 图形标注粗细 */\n annotationLineBorder: 1,\n /** lube 图形标注的虚线间隔 */\n annotationLineDash: null,\n\n /** text 图形标注文本颜色 */\n annotationTextFillColor: BLACK_COLORS[65],\n /** text 图形标注文本字体大小 */\n annotationTextFontSize: 12,\n /** text 图形标注文本行高 */\n annotationTextLineHeight: 12,\n /** text 图形标注文本字体粗细 */\n annotationTextFontWeight: 'normal',\n /** text 图形标注文本边框颜色 */\n annotationTextBorderColor: null,\n /** text 图形标注文本边框粗细 */\n annotationTextBorder: 0,\n\n /** region 图形标注填充颜色 */\n annotationRegionFillColor: BLACK_COLORS[100],\n /** region 图形标注填充颜色透明色 */\n annotationRegionFillOpacity: 0.06,\n /** region 图形标注描边粗细 */\n annotationRegionBorder: 0,\n /** region 图形标注描边颜色 */\n annotationRegionBorderColor: null,\n\n /** dataMarker 图形标注线的长度 */\n annotationDataMarkerLineLength: 16,\n\n // -------------------- Tooltip --------------------\n /** tooltip crosshairs 辅助线颜色 */\n tooltipCrosshairsBorderColor: BLACK_COLORS[25],\n /** tooltip crosshairs 辅助线粗细 */\n tooltipCrosshairsBorder: 1,\n /** tooltip crosshairs 辅助线虚线间隔 */\n tooltipCrosshairsLineDash: null,\n\n /** tooltip 内容框背景色 */\n tooltipContainerFillColor: 'rgb(255, 255, 255)',\n tooltipContainerFillOpacity: 0.95,\n /** tooltip 内容框阴影 */\n tooltipContainerShadow: '0px 0px 10px #aeaeae',\n /** tooltip 内容框圆角 */\n tooltipContainerBorderRadius: 3,\n\n /** tooltip 文本颜色 */\n tooltipTextFillColor: BLACK_COLORS[65],\n /** tooltip 文本字体大小 */\n tooltipTextFontSize: 12,\n /** tooltip 文本行高 */\n tooltipTextLineHeight: 12,\n /** tooltip 文本字体粗细 */\n tooltipTextFontWeight: 'bold',\n\n // -------------------- Geometry labels --------------------\n /** Geometry label 文本颜色 */\n labelFillColor: BLACK_COLORS[65],\n labelFillColorDark: '#2c3542',\n labelFillColorLight: '#ffffff',\n /** Geometry label 文本字体大小 */\n labelFontSize: 12,\n /** Geometry label 文本行高 */\n labelLineHeight: 12,\n /** Geometry label 文本字体粗细 */\n labelFontWeight: 'normal',\n /** Geometry label 文本描边颜色 */\n labelBorderColor: null,\n /** Geometry label 文本描边粗细 */\n labelBorder: 0,\n\n /** Geometry innerLabel 文本颜色 */\n innerLabelFillColor: WHITE_COLORS[100],\n /** Geometry innerLabel 文本字体大小 */\n innerLabelFontSize: 12,\n /** Geometry innerLabel 文本行高 */\n innerLabelLineHeight: 12,\n /** Geometry innerLabel 文本字体粗细 */\n innerLabelFontWeight: 'normal',\n /** Geometry innerLabel 文本描边颜色 */\n innerLabelBorderColor: null,\n /** Geometry innerLabel 文本描边粗细 */\n innerLabelBorder: 0,\n\n /** Geometry overflowLabel 文本颜色 */\n overflowLabelFillColor: BLACK_COLORS[65],\n /** Geometry overflowLabel 文本字体大小 */\n overflowLabelFontSize: 12,\n /** Geometry overflowLabel 文本行高 */\n overflowLabelLineHeight: 12,\n /** Geometry overflowLabel 文本字体粗细 */\n overflowLabelFontWeight: 'normal',\n /** Geometry overflowLabel 文本描边颜色 */\n overflowLabelBorderColor: WHITE_COLORS[100],\n /** Geometry overflowLabel 文本描边粗细 */\n overflowLabelBorder: 1,\n\n /** Geometry label 文本连接线粗细 */\n labelLineBorder: 1,\n /** Geometry label 文本连接线颜色 */\n labelLineBorderColor: BLACK_COLORS[25],\n\n // -------------------- Slider 组件样式--------------------\n /** slider 滑道高度 */\n cSliderRailHieght: 16,\n /** slider 滑道背景色 */\n cSliderBackgroundFillColor: '#416180',\n /** slider 滑道背景色透明度 */\n cSliderBackgroundFillOpacity: 0.05,\n /** slider 滑道前景色 */\n cSliderForegroundFillColor: '#5B8FF9',\n /** slider 滑道前景色透明度 */\n cSliderForegroundFillOpacity: 0.15,\n // slider handlerStyle 手柄样式\n /** slider 手柄高度 */\n cSliderHandlerHeight: 24,\n /** Slider 手柄宽度 */\n cSliderHandlerWidth: 10,\n /** Slider 手柄背景色 */\n cSliderHandlerFillColor: '#F7F7F7',\n /** Slider 手柄背景色透明度 */\n cSliderHandlerFillOpacity: 1,\n /** Slider 手柄高亮背景色 */\n cSliderHandlerHighlightFillColor: '#FFF',\n /** Slider 手柄边框色 */\n cSliderHandlerBorderColor: '#BFBFBF',\n /** Slider 手柄边框粗细 */\n cSliderHandlerBorder: 1,\n /** Slider 手柄边框圆角 */\n cSliderHandlerBorderRadius: 2,\n // slider textStyle 字体标签样式\n /** Slider 字体标签颜色 */\n cSliderTextFillColor: '#000',\n /** Slider 字体标签透明度 */\n cSliderTextFillOpacity: 0.45,\n /** Slider 字体标签大小 */\n cSliderTextFontSize: 12,\n /** Slider 字体标签行高 */\n cSliderTextLineHeight: 12,\n /** Slider 字体标签字重 */\n cSliderTextFontWeight: 'normal',\n /** Slider 字体标签描边色 */\n cSliderTextBorderColor: null,\n /** Slider 字体标签描边粗细 */\n cSliderTextBorder: 0,\n\n // -------------------- Scrollbar 组件样式--------------------\n /** 滚动条 滚道填充色 */\n scrollbarTrackFillColor: 'rgba(0,0,0,0)',\n /** 滚动条 滑块填充色 */\n scrollbarThumbFillColor: 'rgba(0,0,0,0.15)',\n /** 滚动条 滑块高亮填充色 */\n scrollbarThumbHighlightFillColor: 'rgba(0,0,0,0.2)',\n\n // -------------------- Geometry 图形样式--------------------\n /** 点图填充颜色 */\n pointFillColor: brandColor,\n /** 点图填充颜色透明度 */\n pointFillOpacity: 0.95,\n /** 点图大小 */\n pointSize: 4,\n /** 点图描边粗细 */\n pointBorder: 1,\n /** 点图描边颜色 */\n pointBorderColor: WHITE_COLORS[100],\n /** 点图描边透明度 */\n pointBorderOpacity: 1,\n\n /** 点图 active 状态下描边颜色 */\n pointActiveBorderColor: BLACK_COLORS[100],\n\n /** 点图 selected 状态下描边粗细 */\n pointSelectedBorder: 2,\n /** 点图 selected 状态下描边颜色 */\n pointSelectedBorderColor: BLACK_COLORS[100],\n\n /** 点图 inactive 状态下填充颜色透明度 */\n pointInactiveFillOpacity: 0.3,\n /** 点图 inactive 状态下描边透明度 */\n pointInactiveBorderOpacity: 0.3,\n\n /** 空心点图大小 */\n hollowPointSize: 4,\n /** 空心点图描边粗细 */\n hollowPointBorder: 1,\n /** 空心点图描边颜色 */\n hollowPointBorderColor: brandColor,\n /** 空心点图描边透明度 */\n hollowPointBorderOpacity: 0.95,\n hollowPointFillColor: WHITE_COLORS[100],\n\n /** 空心点图 active 状态下描边粗细 */\n hollowPointActiveBorder: 1,\n /** 空心点图 active 状态下描边颜色 */\n hollowPointActiveBorderColor: BLACK_COLORS[100],\n /** 空心点图 active 状态下描边透明度 */\n hollowPointActiveBorderOpacity: 1,\n\n /** 空心点图 selected 状态下描边粗细 */\n hollowPointSelectedBorder: 2,\n /** 空心点图 selected 状态下描边颜色 */\n hollowPointSelectedBorderColor: BLACK_COLORS[100],\n /** 空心点图 selected 状态下描边透明度 */\n hollowPointSelectedBorderOpacity: 1,\n\n /** 空心点图 inactive 状态下描边透明度 */\n hollowPointInactiveBorderOpacity: 0.3,\n\n /** 线图粗细 */\n lineBorder: 2,\n /** 线图颜色 */\n lineBorderColor: brandColor,\n /** 线图透明度 */\n lineBorderOpacity: 1,\n\n /** 线图 Active 状态下粗细 */\n lineActiveBorder: 3,\n\n /** 线图 selected 状态下粗细 */\n lineSelectedBorder: 3,\n\n /** 线图 inactive 状态下透明度 */\n lineInactiveBorderOpacity: 0.3,\n\n /** area 填充颜色 */\n areaFillColor: brandColor,\n /** area 填充透明度 */\n areaFillOpacity: 0.25,\n\n /** area 在 active 状态下的填充透明度 */\n areaActiveFillColor: brandColor,\n areaActiveFillOpacity: 0.5,\n\n /** area 在 selected 状态下的填充透明度 */\n areaSelectedFillColor: brandColor,\n areaSelectedFillOpacity: 0.5,\n\n /** area inactive 状态下填充透明度 */\n areaInactiveFillOpacity: 0.3,\n\n /** hollowArea 颜色 */\n hollowAreaBorderColor: brandColor,\n /** hollowArea 边框粗细 */\n hollowAreaBorder: 2,\n /** hollowArea 边框透明度 */\n hollowAreaBorderOpacity: 1,\n\n /** hollowArea active 状态下的边框粗细 */\n hollowAreaActiveBorder: 3,\n hollowAreaActiveBorderColor: BLACK_COLORS[100],\n\n /** hollowArea selected 状态下的边框粗细 */\n hollowAreaSelectedBorder: 3,\n hollowAreaSelectedBorderColor: BLACK_COLORS[100],\n\n /** hollowArea inactive 状态下的边框透明度 */\n hollowAreaInactiveBorderOpacity: 0.3,\n\n /** interval 填充颜色 */\n intervalFillColor: brandColor,\n /** interval 填充透明度 */\n intervalFillOpacity: 0.95,\n\n /** interval active 状态下边框粗细 */\n intervalActiveBorder: 1,\n /** interval active 状态下边框颜色 */\n intervalActiveBorderColor: BLACK_COLORS[100],\n intervalActiveBorderOpacity: 1,\n\n /** interval selected 状态下边框粗细 */\n intervalSelectedBorder: 2,\n /** interval selected 状态下边框颜色 */\n intervalSelectedBorderColor: BLACK_COLORS[100],\n /** interval selected 状态下边框透明度 */\n intervalSelectedBorderOpacity: 1,\n\n /** interval inactive 状态下边框透明度 */\n intervalInactiveBorderOpacity: 0.3,\n /** interval inactive 状态下填充透明度 */\n intervalInactiveFillOpacity: 0.3,\n\n /** interval 边框粗细 */\n hollowIntervalBorder: 2,\n /** hollowInterval 边框颜色 */\n hollowIntervalBorderColor: brandColor,\n /** hollowInterval 边框透明度 */\n hollowIntervalBorderOpacity: 1,\n hollowIntervalFillColor: WHITE_COLORS[100],\n\n /** hollowInterval active 状态下边框粗细 */\n hollowIntervalActiveBorder: 2,\n /** hollowInterval active 状态下边框颜色 */\n hollowIntervalActiveBorderColor: BLACK_COLORS[100],\n\n /** hollowInterval selected 状态下边框粗细 */\n hollowIntervalSelectedBorder: 3,\n /** hollowInterval selected 状态下边框颜色 */\n hollowIntervalSelectedBorderColor: BLACK_COLORS[100],\n /** hollowInterval selected 状态下边框透明度 */\n hollowIntervalSelectedBorderOpacity: 1,\n\n /** hollowInterval inactive 状态下边框透明度 */\n hollowIntervalInactiveBorderOpacity: 0.3,\n };\n\n return { ...token, ...cfg };\n};\n\nexport const antvLight = createLightStyleSheet();\n","import { deepMix } from '@antv/util';\nimport { createThemeByStyleSheet } from './create-by-style-sheet';\nimport { createLightStyleSheet } from '../style-sheet/light';\nimport { LooseObject, StyleSheetCfg } from '../../interface';\n\ninterface ThemeCfg extends LooseObject {\n styleSheet?: StyleSheetCfg;\n}\n\nexport function createTheme(themeCfg: ThemeCfg): LooseObject {\n const { styleSheet: styleSheetCfg = {}, ...themeObject } = themeCfg;\n\n // ① 创建样式表 (默认创建 light 的样式表)\n const styleSheet = createLightStyleSheet(styleSheetCfg);\n // ② 创建主题\n return deepMix({}, createThemeByStyleSheet(styleSheet), themeObject);\n}\n","import { get, lowerCase } from '@antv/util';\nimport { LooseObject } from '../interface';\n\nimport { createTheme } from './util';\n\nconst defaultTheme = createTheme({});\n\n// 所有已经存在的主题\nconst Themes: Record = {\n default: defaultTheme,\n};\n\n/**\n * 获取主题配置信息。\n * @param theme 主题名\n */\nexport function getTheme(theme?: string): LooseObject {\n return get(Themes, lowerCase(theme), Themes.default);\n}\n\n/**\n * 注册新的主题配置信息。\n * @param theme 主题名。\n * @param value 具体的主题配置。\n */\nexport function registerTheme(theme: string, value: LooseObject) {\n Themes[lowerCase(theme)] = createTheme(value);\n}\n","import {\n contains,\n filter,\n find,\n isArray,\n isEmpty,\n isFunction,\n isNil,\n isNumberEqual,\n isObject,\n memoize,\n get,\n values,\n} from '@antv/util';\nimport { View } from '../chart';\nimport { FIELD_ORIGIN, GROUP_ATTRS } from '../constant';\nimport { Attribute, Scale } from '../dependents';\nimport Geometry from '../geometry/base';\nimport { Data, Datum, MappingDatum, Point, TooltipCfg, TooltipTitle } from '../interface';\nimport { getName, inferScaleType } from './scale';\n\nfunction snapEqual(v1: any, v2: any, scale: Scale) {\n const value1 = scale.translate(v1);\n const value2 = scale.translate(v2);\n\n return isNumberEqual(value1, value2);\n}\n\nfunction getXValueByPoint(point: Point, geometry: Geometry): number {\n const coordinate = geometry.coordinate;\n const xScale = geometry.getXScale();\n const range = xScale.range;\n const rangeMax = range[range.length - 1];\n const rangeMin = range[0];\n\n const invertPoint = coordinate.invert(point);\n\n let xValue = invertPoint.x;\n if (coordinate.isPolar && xValue > (1 + rangeMax) / 2) {\n xValue = rangeMin; // 极坐标下,scale 的 range 被做过特殊处理\n }\n return xScale.translate(xScale.invert(xValue));\n}\n\nfunction filterYValue(data: Data, point: Point, geometry: Geometry) {\n const coordinate = geometry.coordinate;\n const yScale = geometry.getYScale();\n const yField = yScale.field;\n const invertPoint = coordinate.invert(point);\n const yValue = yScale.invert(invertPoint.y);\n\n const result = find(data, (obj: Datum) => {\n const originData = obj[FIELD_ORIGIN];\n return originData[yField][0] <= yValue && originData[yField][1] >= yValue;\n });\n return result || data[data.length - 1];\n}\n\nconst getXDistance = memoize((scale: Scale) => {\n if (scale.isCategory) {\n return 1;\n }\n const scaleValues = scale.values; // values 是无序的\n const length = scaleValues.length;\n let min = scale.translate(scaleValues[0]);\n let max = min;\n\n for (let index = 0; index < length; index++) {\n const value = scaleValues[index];\n // 时间类型需要 translate\n const numericValue = scale.translate(value);\n if (numericValue < min) {\n min = numericValue;\n }\n if (numericValue > max) {\n max = numericValue;\n }\n }\n return (max - min) / (length - 1);\n});\n\n/**\n * 获得 tooltip 的 title\n * @param originData\n * @param geometry\n * @param title\n */\nfunction getTooltipTitle(originData: Datum, geometry: Geometry, title: TooltipTitle): string {\n const positionAttr = geometry.getAttribute('position');\n const fields = positionAttr.getFields();\n const scales = geometry.scales;\n\n const titleField = isFunction(title) || !title ? fields[0] : title;\n const titleScale = scales[titleField];\n\n // 如果创建了该字段对应的 scale,则通过 scale.getText() 方式取值,因为用户可能对数据进行了格式化\n // 如果没有对应的 scale,则从原始数据中取值,如果原始数据中仍不存在,则直接放回 title 值\n const tooltipTitle = titleScale ? titleScale.getText(originData[titleField]) : originData[titleField] || titleField;\n\n return isFunction(title) ? title(tooltipTitle, originData) : tooltipTitle;\n}\n\nfunction getAttributesForLegend(geometry: Geometry) {\n const attributes = values(geometry.attributes);\n return filter(attributes, (attribute: Attribute) => contains(GROUP_ATTRS, attribute.type));\n}\n\nfunction getTooltipValueScale(geometry: Geometry) {\n const attributes = getAttributesForLegend(geometry);\n let scale;\n for (const attribute of attributes) {\n const tmpScale = attribute.getScale(attribute.type);\n if (tmpScale && tmpScale.isLinear) {\n const tmpScaleDef = get(geometry.scaleDefs, tmpScale.field);\n const inferedScaleType = inferScaleType(tmpScale, tmpScaleDef, attribute.type, geometry.type);\n if (inferedScaleType !== 'cat') {\n // 如果指定字段是非 position 的,同时是连续的\n scale = tmpScale;\n break;\n }\n }\n }\n\n const xScale = geometry.getXScale();\n const yScale = geometry.getYScale();\n\n return scale || yScale || xScale;\n}\n\nfunction getTooltipValue(originData: Datum, valueScale: Scale) {\n const field = valueScale.field;\n const value = originData[field];\n\n if (isArray(value)) {\n const texts = value.map((eachValue) => {\n return valueScale.getText(eachValue);\n });\n return texts.join('-');\n }\n return valueScale.getText(value);\n}\n\n// 根据原始数据获取 tooltip item 中 name 值\nfunction getTooltipName(originData: Datum, geometry: Geometry) {\n let nameScale: Scale;\n const groupScales = geometry.getGroupScales();\n if (groupScales.length) {\n // 如果存在分组类型,取第一个分组类型\n nameScale = groupScales[0];\n }\n if (nameScale) {\n const field = nameScale.field;\n return nameScale.getText(originData[field]);\n }\n\n const valueScale = getTooltipValueScale(geometry);\n return getName(valueScale);\n}\n\n/**\n * @ignore\n * Finds data from geometry by point\n * @param point canvas point\n * @param data an item of geometry.dataArray\n * @param geometry\n * @returns\n */\nexport function findDataByPoint(point: Point, data: MappingDatum[], geometry: Geometry) {\n if (data.length === 0) {\n return null;\n }\n\n const geometryType = geometry.type;\n const xScale = geometry.getXScale();\n const yScale = geometry.getYScale();\n\n const xField = xScale.field;\n const yField = yScale.field;\n\n let rst = null;\n\n // 热力图采用最小逼近策略查找 point 击中的数据\n if (geometryType === 'heatmap' || geometryType === 'point') {\n // 将 point 画布坐标转换为原始数据值\n const coordinate = geometry.coordinate;\n const invertPoint = coordinate.invert(point); // 转换成归一化的数据\n const x = xScale.invert(invertPoint.x); // 转换为原始值\n const y = yScale.invert(invertPoint.y); // 转换为原始值\n\n let min = Infinity;\n for (let index = 0; index < data.length; index++) {\n const obj = data[index];\n const originData = obj[FIELD_ORIGIN];\n const range = (originData[xField] - x) ** 2 + (originData[yField] - y) ** 2;\n if (range < min) {\n min = range;\n rst = obj;\n }\n }\n\n return rst;\n }\n\n // 其他 Geometry 类型按照 x 字段数据进行查找\n const first = data[0];\n let last = data[data.length - 1];\n const xValue = getXValueByPoint(point, geometry);\n const firstXValue = first[FIELD_ORIGIN][xField];\n const firstYValue = first[FIELD_ORIGIN][yField];\n const lastXValue = last[FIELD_ORIGIN][xField];\n const isYArray = yScale.isLinear && isArray(firstYValue); // 考虑 x 维度相同,y 是数组区间的情况\n\n // 如果 x 的值是数组\n if (isArray(firstXValue)) {\n for (let index = 0; index < data.length; index++) {\n const record = data[index];\n const originData = record[FIELD_ORIGIN];\n // xValue 在 originData[xField] 的数值区间内\n if (xScale.translate(originData[xField][0]) <= xValue && xScale.translate(originData[xField][1]) >= xValue) {\n if (isYArray) {\n // 层叠直方图场景,x 和 y 都是数组区间\n if (!isArray(rst)) {\n rst = [];\n }\n rst.push(record);\n } else {\n rst = record;\n break;\n }\n }\n }\n if (isArray(rst)) {\n rst = filterYValue(rst, point, geometry);\n }\n } else {\n let next;\n if (!xScale.isLinear && xScale.type !== 'timeCat') {\n // x 轴对应的数据为非线性以及非时间类型的数据采用遍历查找\n for (let index = 0; index < data.length; index++) {\n const record = data[index];\n const originData = record[FIELD_ORIGIN];\n if (snapEqual(originData[xField], xValue, xScale)) {\n if (isYArray) {\n if (!isArray(rst)) {\n rst = [];\n }\n rst.push(record);\n } else {\n rst = record;\n break;\n }\n } else if (xScale.translate(originData[xField]) <= xValue) {\n last = record;\n next = data[index + 1];\n }\n }\n\n if (isArray(rst)) {\n rst = filterYValue(rst, point, geometry);\n }\n } else {\n // x 轴对应的数据为线性以及时间类型,进行二分查找,性能更好\n if (\n (xValue > xScale.translate(lastXValue) || xValue < xScale.translate(firstXValue)) &&\n (xValue > xScale.max || xValue < xScale.min)\n ) {\n // 不在数据范围内\n return null;\n }\n\n let firstIdx = 0;\n let lastIdx = data.length - 1;\n let middleIdx;\n while (firstIdx <= lastIdx) {\n middleIdx = Math.floor((firstIdx + lastIdx) / 2);\n const item = data[middleIdx][FIELD_ORIGIN][xField];\n if (snapEqual(item, xValue, xScale)) {\n return data[middleIdx];\n }\n\n if (xScale.translate(item) <= xScale.translate(xValue)) {\n firstIdx = middleIdx + 1;\n last = data[middleIdx];\n next = data[middleIdx + 1];\n } else {\n if (lastIdx === 0) {\n last = data[0];\n }\n lastIdx = middleIdx - 1;\n }\n }\n }\n\n if (last && next) {\n // 计算最逼近的\n if (\n Math.abs(xScale.translate(last[FIELD_ORIGIN][xField]) - xValue) >\n Math.abs(xScale.translate(next[FIELD_ORIGIN][xField]) - xValue)\n ) {\n last = next;\n }\n }\n }\n\n const distance = getXDistance(geometry.getXScale()); // 每个分类间的平均间距\n if (!rst && Math.abs(xScale.translate(last[FIELD_ORIGIN][xField]) - xValue) <= distance / 2) {\n rst = last;\n }\n\n return rst;\n}\n\n/**\n * @ignore\n * Gets tooltip items\n * @param data\n * @param geometry\n * @param [title]\n * @returns\n */\nexport function getTooltipItems(\n data: MappingDatum,\n geometry: Geometry,\n title: TooltipTitle = '',\n showNil: boolean = false\n) {\n const originData = data[FIELD_ORIGIN];\n const tooltipTitle = getTooltipTitle(originData, geometry, title);\n const tooltipOption = geometry.tooltipOption;\n const { defaultColor } = geometry.theme;\n const items = [];\n let name;\n let value;\n\n function addItem(itemName, itemValue) {\n if (showNil || (!isNil(itemValue) && itemValue !== '')) {\n // 值为 null的时候,忽视\n const item = {\n title: tooltipTitle,\n data: originData, // 原始数据\n mappingData: data, // 映射后的数据\n name: itemName,\n value: itemValue,\n color: data.color || defaultColor,\n marker: true,\n };\n\n items.push(item);\n }\n }\n\n if (isObject(tooltipOption)) {\n const { fields, callback } = tooltipOption;\n if (callback) {\n // 用户定义了回调函数\n const callbackParams = fields.map((field: string) => {\n return data[FIELD_ORIGIN][field];\n });\n const cfg = callback(...callbackParams);\n const itemCfg = {\n data: data[FIELD_ORIGIN], // 原始数据\n mappingData: data, // 映射后的数据\n title: tooltipTitle,\n color: data.color || defaultColor,\n marker: true, // 默认展示 marker\n ...cfg,\n };\n\n items.push(itemCfg);\n } else {\n const scales = geometry.scales;\n for (const field of fields) {\n if (!isNil(originData[field])) {\n // 字段数据为null, undefined 时不显示\n const scale = scales[field];\n name = getName(scale);\n value = scale.getText(originData[field]);\n addItem(name, value);\n }\n }\n }\n } else {\n const valueScale = getTooltipValueScale(geometry);\n // 字段数据为null ,undefined时不显示\n value = getTooltipValue(originData, valueScale);\n name = getTooltipName(originData, geometry);\n addItem(name, value);\n }\n return items;\n}\n\nfunction getTooltipItemsByFindData(geometry: Geometry, point, title, tooltipCfg: TooltipCfg) {\n const { showNil } = tooltipCfg;\n const result = [];\n const dataArray = geometry.dataArray;\n if (!isEmpty(dataArray)) {\n geometry.sort(dataArray); // 先进行排序,便于 tooltip 查找\n for (const data of dataArray) {\n const record = findDataByPoint(point, data, geometry);\n if (record) {\n const elementId = geometry.getElementId(record);\n const element = geometry.elementsMap[elementId];\n if (geometry.type === 'heatmap' || element.visible) {\n // Heatmap 没有 Element\n // 如果图形元素隐藏了,怎不再 tooltip 上展示相关数据\n const items = getTooltipItems(record, geometry, title, showNil);\n if (items.length) {\n result.push(items);\n }\n }\n }\n }\n }\n\n return result;\n}\n\nfunction getTooltipItemsByHitShape(geometry, point, title, tooltipCfg: TooltipCfg) {\n const { showNil } = tooltipCfg;\n const result = [];\n const container = geometry.container;\n const shape = container.getShape(point.x, point.y);\n if (shape && shape.get('visible') && shape.get('origin')) {\n const mappingData = shape.get('origin').mappingData;\n const items = getTooltipItems(mappingData, geometry, title, showNil);\n if (items.length) {\n result.push(items);\n }\n }\n\n return result;\n}\n\n/**\n * 不进行递归查找\n */\nexport function findItemsFromView(view: View, point: Point, tooltipCfg: TooltipCfg) {\n const result = [];\n // 先从 view 本身查找\n const geometries = view.geometries;\n const { shared, title, reversed } = tooltipCfg;\n for (const geometry of geometries) {\n if (geometry.visible && geometry.tooltipOption !== false) {\n // geometry 可见同时未关闭 tooltip\n const geometryType = geometry.type;\n let tooltipItems;\n if (['point', 'edge', 'polygon'].includes(geometryType)) {\n // 始终通过图形拾取\n tooltipItems = getTooltipItemsByHitShape(geometry, point, title, tooltipCfg);\n } else if (['area', 'line', 'path', 'heatmap'].includes(geometryType)) {\n // 如果是 'area', 'line', 'path',始终通过数据查找方法查找 tooltip\n tooltipItems = getTooltipItemsByFindData(geometry, point, title, tooltipCfg);\n } else {\n if (shared !== false) {\n tooltipItems = getTooltipItemsByFindData(geometry, point, title, tooltipCfg);\n } else {\n tooltipItems = getTooltipItemsByHitShape(geometry, point, title, tooltipCfg);\n }\n }\n if (tooltipItems.length) {\n if (reversed) {\n tooltipItems.reverse();\n }\n // geometry 有可能会有多个 item,因为用户可以设置 geometry.tooltip('x*y*z')\n result.push(tooltipItems);\n }\n }\n }\n\n return result;\n}\n\nexport function findItemsFromViewRecurisive(view: View, point: Point, tooltipCfg: TooltipCfg) {\n let result = findItemsFromView(view, point, tooltipCfg);\n\n // 递归查找,并合并结果\n for (const childView of view.views) {\n result = result.concat(findItemsFromView(childView, point, tooltipCfg));\n }\n\n return result;\n}\n","import { isArray, isNumber } from '@antv/util';\nimport { Padding, ViewPadding } from '../interface';\n\n/**\n * @ignore\n * 是否是自动 padding\n * @param padding\n */\nexport function isAutoPadding(padding: ViewPadding): padding is 'auto' {\n return !isNumber(padding) && !isArray(padding);\n}\n\n/**\n * @ignore\n * padding 的解析逻辑\n * @param padding\n * @return [ top, right, bottom, left ]\n */\nexport function parsePadding(padding: number[] | number = 0): Padding {\n let paddingArray = isArray(padding) ? padding : [padding];\n\n switch (paddingArray.length) {\n case 0:\n paddingArray = [0, 0, 0, 0];\n break;\n case 1:\n paddingArray = new Array(4).fill(paddingArray[0]);\n break;\n case 2:\n paddingArray = [...paddingArray, ...paddingArray];\n break;\n case 3:\n paddingArray = [...paddingArray, paddingArray[1]];\n break;\n default:\n // 其他情况,只去四个\n paddingArray = paddingArray.slice(0, 4);\n break;\n }\n\n return paddingArray as [number, number, number, number];\n}\n","import { ControllerCtor } from './base';\n\nconst LOAD_COMPONENT_CONTROLLERS: Record = {};\n\n/**\n * 全局注册组件。\n * @param name 组件名称\n * @param plugin 注册的组件类\n * @returns void\n */\nexport function registerComponentController(name: string, plugin: ControllerCtor) {\n LOAD_COMPONENT_CONTROLLERS[name] = plugin;\n}\n\n/**\n * 删除全局组件。\n * @param name 组件名\n * @returns void\n */\nexport function unregisterComponentController(name: string) {\n delete LOAD_COMPONENT_CONTROLLERS[name];\n}\n\n/**\n * 获取以注册的组件名。\n * @returns string[] 返回已注册的组件名称\n */\nexport function getComponentControllerNames(): string[] {\n return Object.keys(LOAD_COMPONENT_CONTROLLERS);\n}\n\n/**\n * 根据组件名获取组件类。\n * @param name 组件名\n * @returns 返回组件类\n */\nexport function getComponentController(name: string): ControllerCtor {\n return LOAD_COMPONENT_CONTROLLERS[name];\n}\n","import { each, isNil, some } from '@antv/util';\nimport { Coordinate, getCoordinate, Point } from '../../dependents';\nimport { CoordinateOption } from '../../interface';\n\n/**\n * coordinate controller,职责:\n * 1. 创建实例\n * 2. 暂存配置\n */\nexport default class CoordinateController {\n private option: CoordinateOption;\n private coordinate: Coordinate;\n\n constructor(option?: CoordinateOption) {\n // 设置默认值,并存储配置\n this.option = this.wrapperOption(option);\n }\n\n /**\n * 更新配置\n * @param option\n */\n public update(option: CoordinateOption) {\n this.option = this.wrapperOption(option);\n return this;\n }\n\n /**\n * 是否存在某一个 action\n * @param actionName\n */\n public hasAction(actionName: string) {\n const { actions } = this.option;\n\n return some(actions, (action) => action[0] === actionName);\n }\n /**\n * 创建坐标系对象\n * @param start 起始位置\n * @param end 结束位置\n * @return 坐标系实例\n */\n public create(start: Point, end: Point) {\n const { type, cfg } = this.option;\n const isTheta = type === 'theta';\n\n // 1. 起始位置\n const props = {\n start,\n end,\n ...cfg,\n };\n\n // 2. 创建实例\n const C = getCoordinate(isTheta ? 'polar' : type);\n\n this.coordinate = new C(props);\n\n // @ts-ignore FIXME coordinate 包问题导致 type 不正确\n this.coordinate.type = type;\n\n // 3. 添加默认 action\n if (isTheta) {\n // 不存在 transpose,为其自动设置一个 action\n if (!this.hasAction('transpose')) {\n this.transpose();\n }\n }\n\n // 4. 执行 action\n this.execActions();\n\n return this.coordinate;\n }\n\n /**\n * 更新坐标系对象\n * @param start 起始位置\n * @param end 结束位置\n * @return 坐标系实例\n */\n public adjust(start: Point, end: Point) {\n this.coordinate.update({\n start,\n end,\n });\n\n // 更新坐标系大小的时候,需要:\n // 1. 重置 matrix\n // 2. 重新执行作用于 matrix 的 action\n this.coordinate.resetMatrix();\n this.execActions(['scale', 'rotate', 'translate']);\n\n return this.coordinate;\n }\n\n /**\n * 旋转弧度\n * @param angle\n */\n public rotate(angle: number) {\n this.option.actions.push(['rotate', angle]);\n return this;\n }\n\n /**\n * 镜像\n * @param dim\n */\n public reflect(dim: 'x' | 'y') {\n this.option.actions.push(['reflect', dim]);\n return this;\n }\n\n /**\n * scale\n * @param sx\n * @param sy\n */\n public scale(sx: number, sy: number) {\n this.option.actions.push(['scale', sx, sy]);\n return this;\n }\n\n /**\n * 对角变换\n */\n public transpose() {\n this.option.actions.push(['transpose']);\n return this;\n }\n\n /**\n * 获取配置\n */\n public getOption(): CoordinateOption {\n return this.option;\n }\n\n /**\n * 获得 coordinate 实例\n */\n public getCoordinate() {\n return this.coordinate;\n }\n\n /**\n * 包装配置的默认值\n * @param option\n */\n private wrapperOption(option: CoordinateOption): CoordinateOption {\n return {\n type: 'rect',\n actions: [],\n cfg: {},\n ...option,\n };\n }\n\n /**\n * coordinate 实例执行 actions\n * @params includeActions 如果没有指定,则执行全部,否则,执行指定的 action\n */\n private execActions(includeActions?: string[]) {\n const { actions } = this.option;\n\n each(actions, (action) => {\n const [actionName, ...args] = action;\n\n const shouldExec = isNil(includeActions) ? true : includeActions.includes(actionName);\n\n if (shouldExec) {\n this.coordinate[actionName](...args);\n }\n });\n }\n}\n","import { Event as GEvent, IShape } from '../dependents';\nimport { Datum } from '../interface';\nimport View from './view';\n\n/**\n * @todo Whether it can(or necessary to) keep consistent with the structure of G.Event or directly use the structure of G.Event\n * G2 事件的事件包装类,基于 G.Event\n */\nexport default class Event {\n /** 当前 target 归属的 view 实例 */\n public view: View;\n /** 被包装的原生 G 事件 */\n public gEvent: GEvent;\n /** 原始数据 */\n public data?: Datum;\n /** 事件类型 */\n public type: string;\n\n constructor(view: View, gEvent: GEvent, data?: Datum) {\n this.view = view;\n this.gEvent = gEvent;\n this.data = data;\n this.type = gEvent.type;\n }\n\n /**\n * 非交互产生的事件\n * @param view\n * @param type\n * @param data\n */\n public static fromData(view: View, type: string, data: Datum) {\n return new Event(view, new GEvent(type, {}), data);\n }\n\n // below props are proxy props of G.event convenient\n\n /** the real trigger shape of the event */\n public get target(): IShape {\n // @todo G 中事件定义为 object 不正确,这里先 ignore\n // @ts-ignore\n return this.gEvent.target;\n }\n\n /** 获取对应的 dom 原生时间 */\n public get event(): any {\n return this.gEvent.originalEvent;\n }\n\n /** x 画布坐标 */\n public get x(): number {\n return this.gEvent.x;\n }\n\n /** y 画布坐标 */\n public get y(): number {\n return this.gEvent.y;\n }\n\n /** x 窗口坐标 */\n public get clientX(): number {\n return this.gEvent.clientX;\n }\n\n /** y 窗口坐标 */\n public get clientY(): number {\n return this.gEvent.clientY;\n }\n // end for proxy events\n\n /**\n * event string\n * @returns string\n */\n public toString(): string {\n return `[Event (type=${this.type})]`;\n }\n\n /**\n * clone a new event with same attributes\n * @returns [[Event]]\n */\n public clone(): Event {\n return new Event(this.view, this.gEvent, this.data);\n }\n}\n","import { Controller } from '../controller/base';\nimport View from '../view';\n\n// 布局函数的定义\n// 布局函数的职责:根据 view 中组件信息,计算出最终的图形 padding 数值,以及最终各个组件的布局和位置\nexport type Layout = (view: View) => void;\n\n/**\n * @ignore\n * G2 默认提供的 layout 函数\n * 内置布局函数处理的逻辑:\n *\n * 1. 如果 padding = 'auto',那么自动根据组件的 direction 来计算 padding 数组\n * 2. 根据 padding 和 direction 去分配对应方向的 padding 数值\n * 3. 移动组件位置\n *\n * 前面 1,2 步骤在 view 中已经做掉了。对于组件响应式布局,可以尝试使用约束布局的方式去求解位置信息。\n * @param view\n */\nexport default function defaultLayout(view: View): void {\n const axis = view.getController('axis');\n const legend = view.getController('legend');\n const annotation = view.getController('annotation');\n const slider = view.getController('slider');\n const scrollbar = view.getController('scrollbar');\n\n // 根据最新的 coordinate 重新布局组件\n [axis, slider, scrollbar, legend, annotation].forEach((controller: Controller) => {\n if (controller) {\n controller.layout();\n }\n });\n}\n","/**\n * view 中缓存 scale 的类\n */\nimport { deepMix, each, get, isNumber, last } from '@antv/util';\nimport { Scale, Coordinate } from '../../dependents';\nimport { Data, LooseObject, ScaleOption, ViewCfg } from '../../interface';\nimport { createScaleByField, syncScale, getDefaultCategoryScaleRange } from '../../util/scale';\n\n/** @ignore */\ninterface ScaleMeta {\n readonly key: string;\n readonly scale: Scale;\n scaleDef: ScaleOption;\n syncKey?: string;\n}\n\n/** @ignore */\nexport class ScalePool {\n /** 所有的 scales */\n private scales = new Map();\n /** 需要同步的 scale 分组, key: scaleKeyArray */\n private syncScales = new Map();\n\n /**\n * 创建 scale\n * @param field\n * @param data\n * @param scaleDef\n * @param key\n */\n public createScale(field: string, data: Data, scaleDef: ScaleOption, key: string): Scale {\n let finalScaleDef = scaleDef;\n\n const cacheScaleMeta = this.getScaleMeta(key);\n if (data.length === 0 && cacheScaleMeta) {\n // 在更新过程中数据变为空,同时 key 对应的 scale 已存在则保持 scale 同类型\n const cacheScale = cacheScaleMeta.scale;\n const cacheScaleDef: LooseObject = {\n type: cacheScale.type,\n };\n if (cacheScale.isCategory) {\n // 如果是分类类型,保持 values\n cacheScaleDef.values = cacheScale.values;\n }\n finalScaleDef = deepMix(cacheScaleDef, cacheScaleMeta.scaleDef, scaleDef);\n }\n\n const scale = createScaleByField(field, data, finalScaleDef);\n\n // 缓存起来\n this.cacheScale(scale, scaleDef, key);\n\n return scale;\n }\n\n /**\n * 同步 scale\n */\n public sync(coordinate: Coordinate, theme: ViewCfg['theme']) {\n // 对于 syncScales 中每一个 syncKey 下面的 scale 数组进行同步处理\n this.syncScales.forEach((scaleKeys: string[], syncKey: string) => {\n // min, max, values, ranges\n let min = Number.MAX_SAFE_INTEGER;\n let max = Number.MIN_SAFE_INTEGER;\n const values = [];\n\n // 1. 遍历求得最大最小值,values 等\n each(scaleKeys, (key: string) => {\n const scale = this.getScale(key);\n\n max = isNumber(scale.max) ? Math.max(max, scale.max) : max;\n min = isNumber(scale.min) ? Math.min(min, scale.min) : min;\n\n // 去重\n each(scale.values, (v: any) => {\n if (!values.includes(v)) {\n values.push(v);\n }\n });\n });\n\n // 2. 同步\n each(scaleKeys, (key: string) => {\n const scale = this.getScale(key);\n\n if (scale.isContinuous) {\n scale.change({\n min,\n max,\n values,\n });\n } else if (scale.isCategory) {\n let range = scale.range;\n const cacheScaleMeta = this.getScaleMeta(key);\n\n // 存在 value 值,且用户没有配置 range 配置 to fix https://github.com/antvis/G2/issues/2996\n if (values && !get(cacheScaleMeta, ['scaleDef', 'range'])) {\n // 更新 range\n range = getDefaultCategoryScaleRange(\n deepMix({}, scale, {\n values,\n }),\n coordinate,\n theme\n );\n }\n scale.change({\n values,\n range,\n });\n }\n });\n });\n }\n\n /**\n * 缓存一个 scale\n * @param scale\n * @param scaleDef\n * @param key\n */\n private cacheScale(scale: Scale, scaleDef: ScaleOption, key: string) {\n // 1. 缓存到 scales\n\n let sm = this.getScaleMeta(key);\n // 存在则更新,同时检测类型是否一致\n if (sm && sm.scale.type === scale.type) {\n syncScale(sm.scale, scale);\n sm.scaleDef = scaleDef;\n // 更新 scaleDef\n } else {\n sm = {\n key,\n scale,\n scaleDef,\n };\n\n this.scales.set(key, sm);\n }\n\n // 2. 缓存到 syncScales,构造 Record 数据结构\n const syncKey = this.getSyncKey(sm);\n sm.syncKey = syncKey; // 设置 sync 同步的 key\n\n // 因为存在更新 scale 机制,所以在缓存之前,先从原 syncScales 中去除 sync 的缓存引用\n this.removeFromSyncScales(key);\n\n // 存在 sync 标记才进行 sync\n if (syncKey) {\n // 不存在这个 syncKey,则创建一个空数组\n let scaleKeys = this.syncScales.get(syncKey);\n if (!scaleKeys) {\n scaleKeys = [];\n this.syncScales.set(syncKey, scaleKeys);\n }\n scaleKeys.push(key);\n }\n }\n\n /**\n * 通过 key 获取 scale\n * @param key\n */\n public getScale(key: string): Scale {\n let scaleMeta = this.getScaleMeta(key);\n if (!scaleMeta) {\n const field = last(key.split('-'));\n const scaleKeys = this.syncScales.get(field);\n if (scaleKeys && scaleKeys.length) {\n scaleMeta = this.getScaleMeta(scaleKeys[0]);\n }\n }\n return scaleMeta && scaleMeta.scale;\n }\n\n /**\n * 在 view 销毁的时候,删除 scale 实例,防止内存泄露\n * @param key\n */\n public deleteScale(key: string) {\n const scaleMeta = this.getScaleMeta(key);\n if (scaleMeta) {\n const { syncKey } = scaleMeta;\n\n const scaleKeys = this.syncScales.get(syncKey);\n\n // 移除同步的关系\n if (scaleKeys && scaleKeys.length) {\n const idx = scaleKeys.indexOf(key);\n\n if (idx !== -1) {\n scaleKeys.splice(idx, 1);\n }\n }\n }\n\n // 删除 scale 实例\n this.scales.delete(key);\n }\n\n /**\n * 清空\n */\n public clear() {\n this.scales.clear();\n this.syncScales.clear();\n }\n\n /**\n * 删除 sync scale 引用\n * @param key\n */\n private removeFromSyncScales(key: string) {\n this.syncScales.forEach((scaleKeys: string[], syncKey: string) => {\n const idx = scaleKeys.indexOf(key);\n\n if (idx !== -1) {\n scaleKeys.splice(idx, 1);\n\n // 删除空数组值\n if (scaleKeys.length === 0) {\n this.syncScales.delete(syncKey);\n }\n\n return false; // 跳出循环\n }\n });\n }\n\n /**\n * get sync key\n * @param sm\n */\n private getSyncKey(sm: ScaleMeta): string {\n const { scale, scaleDef } = sm;\n const { field } = scale;\n const sync = get(scaleDef, ['sync']);\n\n // 如果 sync = true,则直接使用字段名作为 syncKey\n return sync === true ? field : sync === false ? undefined : sync;\n }\n\n /**\n * 通过 key 获取 scale\n * @param key\n */\n private getScaleMeta(key: string): ScaleMeta {\n return this.scales.get(key);\n }\n}\n","import { DIRECTION } from '../../constant';\nimport { BBox } from '../../dependents';\nimport { Padding } from '../../interface';\n\nexport type PaddingCalCtor = {\n readonly instance: (top?: number, right?: number, bottom?: number, left?: number) => PaddingCal;\n};\n\n/** @ignore */\nexport class PaddingCal {\n private top: number;\n private right: number;\n private bottom: number;\n private left: number;\n\n /**\n * 使用静态方法创建一个\n * @param top\n * @param right\n * @param bottom\n * @param left\n */\n public static instance(top: number = 0, right: number = 0, bottom: number = 0, left: number = 0) {\n return new PaddingCal(top, right, bottom, left);\n }\n\n /**\n * 初始的 padding 数据\n * @param top\n * @param right\n * @param bottom\n * @param left\n */\n constructor(top: number = 0, right: number = 0, bottom: number = 0, left: number = 0) {\n this.top = top;\n this.right = right;\n this.bottom = bottom;\n this.left = left;\n }\n\n /**\n * 取最大区间\n * @param padding\n */\n public max(padding: Padding): PaddingCal {\n const [top, right, bottom, left] = padding;\n\n this.top = Math.max(this.top, top);\n this.right = Math.max(this.right, right);\n this.bottom = Math.max(this.bottom, bottom);\n this.left = Math.max(this.left, left);\n\n return this;\n }\n\n /**\n * 四周增加 padding\n * @param padding\n */\n public shrink(padding: Padding): PaddingCal {\n const [top, right, bottom, left] = padding;\n\n this.top += top;\n this.right += right;\n this.bottom += bottom;\n this.left += left;\n\n return this;\n }\n\n /**\n * 在某一个方向增加 padding\n * @param bbox\n * @param direction\n */\n public inc(bbox: BBox, direction: DIRECTION): PaddingCal {\n const { width, height } = bbox;\n\n switch (direction) {\n case DIRECTION.TOP:\n case DIRECTION.TOP_LEFT:\n case DIRECTION.TOP_RIGHT:\n this.top += height;\n break;\n\n case DIRECTION.RIGHT:\n case DIRECTION.RIGHT_TOP:\n case DIRECTION.RIGHT_BOTTOM:\n this.right += width;\n break;\n\n case DIRECTION.BOTTOM:\n case DIRECTION.BOTTOM_LEFT:\n case DIRECTION.BOTTOM_RIGHT:\n this.bottom += height;\n break;\n\n case DIRECTION.LEFT:\n case DIRECTION.LEFT_TOP:\n case DIRECTION.LEFT_BOTTOM:\n this.left += width;\n break;\n default:\n break;\n }\n\n return this;\n }\n\n /**\n * 获得最终的 padding\n */\n public getPadding(): Padding {\n return [this.top, this.right, this.bottom, this.left];\n }\n\n /**\n * clone 一个 padding cal\n */\n public clone(): PaddingCal {\n return new PaddingCal(...this.getPadding());\n }\n}\n","import { each } from '@antv/util';\nimport { COMPONENT_TYPE } from '../../constant';\nimport { ComponentOption, Padding } from '../../interface';\nimport { BBox } from '../../util/bbox';\nimport { isAutoPadding, parsePadding } from '../../util/padding';\nimport View from '../view';\nimport { PaddingCal } from './padding-cal';\n\n/**\n * @ignore\n * 根据 view 中的组件,计算实际的 padding 数值\n * @param view\n */\nexport function calculatePadding(view: View): PaddingCal {\n const padding = view.padding;\n\n // 如果不是 auto padding,那么直接解析之后返回\n if (!isAutoPadding(padding)) {\n return new PaddingCal(...parsePadding(padding));\n }\n\n // 是 auto padding,根据组件的情况,来计算 padding\n const { viewBBox } = view;\n\n const paddingCal = new PaddingCal();\n\n const axisComponents = [];\n const paddingComponents = [];\n const otherComponents = [];\n\n each(view.getComponents(), (co: ComponentOption) => {\n const { type } = co;\n if (type === COMPONENT_TYPE.AXIS) {\n axisComponents.push(co);\n } else if ([COMPONENT_TYPE.LEGEND, COMPONENT_TYPE.SLIDER, COMPONENT_TYPE.SCROLLBAR].includes(type)) {\n paddingComponents.push(co);\n } else if (type !== COMPONENT_TYPE.GRID && type !== COMPONENT_TYPE.TOOLTIP) {\n otherComponents.push(co);\n }\n });\n\n // 进行坐标轴布局,应该是取 padding 的并集,而不是进行相加\n each(axisComponents, (co: ComponentOption) => {\n const { component } = co;\n const bboxObject = component.getLayoutBBox();\n const componentBBox = new BBox(bboxObject.x, bboxObject.y, bboxObject.width, bboxObject.height);\n\n const exceed = componentBBox.exceed(viewBBox);\n\n // 在对组件分组之后,先对 axis 进行处理,然后取最大的超出即可。\n paddingCal.max(exceed);\n });\n\n // 有 padding 的组件布局\n each(paddingComponents, (co: ComponentOption) => {\n const { component, direction } = co;\n const bboxObject = component.getLayoutBBox();\n const componentPadding: Padding = component.get('padding');\n const componentBBox = new BBox(bboxObject.x, bboxObject.y, bboxObject.width, bboxObject.height).expand(\n componentPadding\n );\n // 按照方向计算 padding\n paddingCal.inc(componentBBox, direction);\n });\n\n // 其他组件布局\n each(otherComponents, (co: ComponentOption) => {\n const { component, direction } = co;\n const bboxObject = component.getLayoutBBox();\n const componentBBox = new BBox(bboxObject.x, bboxObject.y, bboxObject.width, bboxObject.height);\n // 按照方向计算 padding\n paddingCal.inc(componentBBox, direction);\n });\n\n return paddingCal;\n}\n","import { PaddingCalCtor } from '../layout/padding-cal';\nimport { View } from '../view';\n\n/**\n * 默认的 syncViewPadding 逻辑\n * @param chart\n * @param views\n * @param PC: PaddingCalCtor\n */\nexport function defaultSyncViewPadding(chart: View, views: View[], PC: PaddingCalCtor) {\n const syncPadding = PC.instance();\n\n // 所有的 view 的 autoPadding 指向同一个引用\n views.forEach((v: View) => {\n v.autoPadding = syncPadding.max(v.autoPadding.getPadding());\n });\n}\n","import {\n clone,\n deepMix,\n each,\n filter,\n find,\n flatten,\n get,\n isBoolean,\n isFunction,\n isNil,\n isObject,\n isString,\n isUndefined,\n mix,\n remove,\n set,\n size,\n uniqueId,\n isEqual,\n isPlainObject,\n reduce,\n} from '@antv/util';\nimport { Attribute, Coordinate, Event as GEvent, GroupComponent, ICanvas, IGroup, IShape, Scale } from '../dependents';\nimport {\n AxisOption,\n ComponentOption,\n CoordinateCfg,\n CoordinateOption,\n Data,\n Datum,\n FacetCfgMap,\n FilterCondition,\n GeometryOption,\n LegendOption,\n LooseObject,\n Options,\n Point,\n Region,\n ScaleOption,\n TooltipOption,\n ViewCfg,\n ViewPadding,\n ViewAppendPadding,\n EventPayload,\n Padding,\n} from '../interface';\nimport { GROUP_Z_INDEX, LAYER, PLOT_EVENTS, VIEW_LIFE_CIRCLE } from '../constant';\nimport Base from '../base';\nimport { Facet, getFacet } from '../facet';\nimport Geometry from '../geometry/base';\nimport Element from '../geometry/element';\nimport { createInteraction, Interaction } from '../interaction';\nimport { getTheme } from '../theme';\nimport { BBox } from '../util/bbox';\nimport { getCoordinateClipCfg, isPointInCoordinate } from '../util/coordinate';\nimport { uniq } from '../util/helper';\nimport { findDataByPoint } from '../util/tooltip';\nimport { parsePadding } from '../util/padding';\nimport { getDefaultCategoryScaleRange } from '../util/scale';\nimport { createTheme } from '../theme/util';\nimport Chart from './chart';\nimport { getComponentController, getComponentControllerNames } from './controller';\nimport Annotation from './controller/annotation';\nimport { Controller } from './controller/base';\nimport CoordinateController from './controller/coordinate';\nimport Tooltip from './controller/tooltip';\nimport Slider from './controller/slider';\nimport Scrollbar from './controller/scrollbar';\nimport Axis from './controller/axis';\nimport Gesture from './controller/gesture';\nimport Legend from './controller/legend';\nimport Event from './event';\nimport defaultLayout, { Layout } from './layout';\nimport { ScalePool } from './util/scale-pool';\nimport { PaddingCal } from './layout/padding-cal';\nimport { calculatePadding } from './layout/auto';\nimport { defaultSyncViewPadding } from './util/sync-view-padding';\n\n/**\n * G2 视图 View 类\n */\nexport class View extends Base {\n /** view id,全局唯一。 */\n public id: string;\n /** 父级 view,如果没有父级,则为空。 */\n public parent: View;\n /** 所有的子 view。 */\n public views: View[] = [];\n /** 所有的 geometry 实例。 */\n public geometries: Geometry[] = [];\n /** 所有的组件 controllers。 */\n public controllers: Controller[] = [];\n /** 所有的 Interaction 实例。 */\n public interactions: Record = {};\n\n /** view 区域空间。 */\n public viewBBox: BBox;\n /** 坐标系的位置大小,ViewBBox - padding = coordinateBBox。 */\n public coordinateBBox: BBox;\n /** view 的 padding 大小,传入的配置(不是解析之后的值)。 */\n public padding: ViewPadding;\n /** padding的基础上增加的调整值 */\n public appendPadding: ViewAppendPadding;\n /** G.Canvas 实例。 */\n public canvas: ICanvas;\n /** 存储最终计算的 padding 结果 */\n public autoPadding: PaddingCal;\n\n /** 三层 Group 图形中的背景层。 */\n public backgroundGroup: IGroup;\n /** 三层 Group 图形中的中间层。 */\n public middleGroup: IGroup;\n /** 三层 Group 图形中的前景层。 */\n public foregroundGroup: IGroup;\n /** 是否对超出坐标系范围的 Geometry 进行剪切 */\n public limitInPlot: boolean = false;\n\n /**\n * 标记 view 的大小位置范围,均是 0 ~ 1 范围,便于开发者使用,起始点为左上角。\n */\n protected region: Region;\n /** 主题配置,存储当前主题配置。 */\n protected themeObject: LooseObject;\n\n // 配置信息存储\n protected options: Options = {\n data: [],\n animate: true, // 默认开启动画\n }; // 初始化为空\n\n /** 过滤之后的数据 */\n protected filteredData: Data;\n\n /** 配置开启的组件插件,默认为全局配置的组件。 */\n private usedControllers: string[] = getComponentControllerNames();\n\n /** 所有的 scales */\n private scalePool: ScalePool = new ScalePool();\n\n /** 布局函数 */\n protected layoutFunc: Layout = defaultLayout;\n /** 生成的坐标系实例,{@link https://github.com/antvis/coord/blob/master/src/coord/base.ts|Coordinate} */\n protected coordinateInstance: Coordinate;\n /** Coordinate 相关的控制器类,负责坐标系实例的创建、更新、变换等 */\n protected coordinateController: CoordinateController;\n /** 分面类实例 */\n protected facetInstance: Facet;\n\n /** 当前鼠标是否在 plot 内(CoordinateBBox) */\n private isPreMouseInPlot: boolean = false;\n /** 默认标识位,用于判定数据是否更新 */\n private isDataChanged: boolean = false;\n /** 用于判断坐标系范围是否发生变化的标志位 */\n private isCoordinateChanged: boolean = false;\n /** 从当前这个 view 创建的 scale key */\n private createdScaleKeys = new Map();\n /** 背景色样式的 shape */\n private backgroundStyleRectShape;\n /** 是否同步子 view 的 padding */\n private syncViewPadding;\n\n constructor(props: ViewCfg) {\n super({ visible: props.visible });\n\n const {\n id = uniqueId('view'),\n parent,\n canvas,\n backgroundGroup,\n middleGroup,\n foregroundGroup,\n region = { start: { x: 0, y: 0 }, end: { x: 1, y: 1 } },\n padding,\n appendPadding,\n theme,\n options,\n limitInPlot,\n syncViewPadding,\n } = props;\n\n this.parent = parent;\n this.canvas = canvas;\n this.backgroundGroup = backgroundGroup;\n this.middleGroup = middleGroup;\n this.foregroundGroup = foregroundGroup;\n this.region = region;\n this.padding = padding;\n this.appendPadding = appendPadding;\n // 接受父 view 传入的参数\n this.options = { ...this.options, ...options };\n this.limitInPlot = limitInPlot;\n this.id = id;\n this.syncViewPadding = syncViewPadding;\n\n // 初始化 theme\n this.themeObject = isObject(theme) ? deepMix({}, getTheme('default'), createTheme(theme)) : getTheme(theme);\n this.init();\n }\n\n /**\n * 设置 layout 布局函数\n * @param layout 布局函数\n * @returns void\n */\n public setLayout(layout: Layout) {\n this.layoutFunc = layout;\n }\n\n /**\n * 生命周期:初始化\n * @returns voids\n */\n public init() {\n // 计算画布的 viewBBox\n this.calculateViewBBox();\n\n // 事件委托机制\n this.initEvents();\n\n // 初始化组件 controller\n this.initComponentController();\n\n this.initOptions();\n }\n\n /**\n * 生命周期:渲染流程,渲染过程需要处理数据更新的情况。\n * render 函数仅仅会处理 view 和子 view。\n * @param isUpdate 是否触发更新流程。\n * @param params render 事件参数\n */\n public render(isUpdate: boolean = false, payload?: EventPayload) {\n this.emit(VIEW_LIFE_CIRCLE.BEFORE_RENDER, Event.fromData(this, VIEW_LIFE_CIRCLE.BEFORE_RENDER, payload));\n // 递归渲染\n this.paint(isUpdate);\n\n this.emit(VIEW_LIFE_CIRCLE.AFTER_RENDER, Event.fromData(this, VIEW_LIFE_CIRCLE.AFTER_RENDER, payload));\n\n if (this.visible === false) {\n // 用户在初始化的时候声明 visible: false\n this.changeVisible(false);\n }\n }\n\n /**\n * 生命周期:清空图表上所有的绘制内容,但是不销毁图表,chart 仍可使用。\n * @returns void\n */\n public clear() {\n this.emit(VIEW_LIFE_CIRCLE.BEFORE_CLEAR);\n // 1. 清空缓存和计算数据\n this.filteredData = [];\n this.coordinateInstance = undefined;\n this.isDataChanged = false; // 复位\n this.isCoordinateChanged = false; // 复位\n\n // 2. 清空 geometries\n const geometries = this.geometries;\n for (let i = 0; i < geometries.length; i++) {\n geometries[i].clear();\n // view 中使用 geometry 的时候,还需要清空它的容器,不然下一次 chart.geometry() 的时候,又创建了一个,导致泄露, #2799。\n geometries[i].container.remove(true);\n geometries[i].labelsContainer.remove(true);\n }\n this.geometries = [];\n\n // 3. 清空 controllers\n const controllers = this.controllers;\n for (let i = 0; i < controllers.length; i++) {\n if (controllers[i].name === 'annotation') {\n // 需要清空配置项\n (controllers[i] as Annotation).clear(true);\n } else {\n controllers[i].clear();\n }\n }\n\n // 4. 删除 scale 缓存\n this.createdScaleKeys.forEach((v: boolean, k: string) => {\n this.getRootView().scalePool.deleteScale(k);\n });\n this.createdScaleKeys.clear();\n\n // 递归处理子 view\n const views = this.views;\n for (let i = 0; i < views.length; i++) {\n views[i].clear();\n }\n\n this.emit(VIEW_LIFE_CIRCLE.AFTER_CLEAR);\n }\n\n /**\n * 生命周期:销毁,完全无法使用。\n * @returns void\n */\n public destroy() {\n // 销毁前事件,销毁之后已经没有意义了,所以不抛出事件\n this.emit(VIEW_LIFE_CIRCLE.BEFORE_DESTROY);\n const interactions = this.interactions;\n // 销毁 interactions\n each(interactions, (interaction) => {\n if (interaction) {\n // 有可能已经销毁,设置了 undefined\n interaction.destroy();\n }\n });\n\n this.clear();\n\n // 销毁 controller 中的组件\n const controllers = this.controllers;\n for (let i = 0, len = controllers.length; i < len; i++) {\n const controller = controllers[i];\n controller.destroy();\n }\n\n this.backgroundGroup.remove(true);\n this.middleGroup.remove(true);\n this.foregroundGroup.remove(true);\n\n super.destroy();\n }\n /* end 生命周期函数 */\n\n /**\n * 显示或者隐藏整个 view。\n * @param visible 是否可见\n * @returns View\n */\n public changeVisible(visible: boolean): View {\n super.changeVisible(visible);\n\n const geometries = this.geometries;\n for (let i = 0, len = geometries.length; i < len; i++) {\n const geometry = geometries[i];\n geometry.changeVisible(visible);\n }\n\n const controllers = this.controllers;\n for (let i = 0, len = controllers.length; i < len; i++) {\n const controller = controllers[i];\n controller.changeVisible(visible);\n }\n\n this.foregroundGroup.set('visible', visible);\n this.middleGroup.set('visible', visible);\n this.backgroundGroup.set('visible', visible);\n\n // group.set('visible', visible) 不会触发自动刷新\n this.getCanvas().draw();\n\n return this;\n }\n\n /**\n * 装载数据源。\n *\n * ```ts\n * view.data([{ city: '杭州', sale: 100 }, { city: '上海', sale: 110 } ]);\n * ```\n *\n * @param data 数据源,json 数组。\n * @returns View\n */\n public data(data: Data): View {\n set(this.options, 'data', data);\n this.isDataChanged = true;\n return this;\n }\n\n /**\n * @deprecated\n * This method will be removed at G2 V4.1. Replaced by {@link #data(data)}\n */\n public source(data: Data): View {\n console.warn('This method will be removed at G2 V4.1. Please use chart.data() instead.');\n return this.data(data);\n }\n\n /**\n * 设置数据筛选规则。\n *\n * ```ts\n * view.filter('city', (value: any, datum: Datum) => value !== '杭州');\n *\n * // 删除 'city' 字段对应的筛选规则。\n * view.filter('city', null);\n * ```\n *\n * @param field 数据字段\n * @param condition 筛选规则\n * @returns View\n */\n public filter(field: string, condition: FilterCondition | null): View {\n if (isFunction(condition)) {\n set(this.options, ['filters', field], condition);\n return this;\n }\n // condition 为空,则表示删除过滤条件\n if (!condition && get(this.options, ['filters', field])) {\n delete this.options.filters[field];\n }\n\n return this;\n }\n\n /**\n * 开启或者关闭坐标轴。\n *\n * ```ts\n * view.axis(false); // 不展示坐标轴\n * ```\n * @param field 坐标轴开关\n */\n public axis(field: boolean): View;\n /**\n * 对特定的某条坐标轴进行配置。\n *\n * @example\n * ```ts\n * view.axis('city', false); // 不展示 'city' 字段对应的坐标轴\n *\n * // 将 'city' 字段对应的坐标轴的标题隐藏\n * view.axis('city', {\n * title: null,\n * });\n * ```\n *\n * @param field 要配置的坐标轴对应的字段名称\n * @param axisOption 坐标轴具体配置,更详细的配置项可以参考:https://github.com/antvis/component#axis\n */\n public axis(field: string, axisOption: AxisOption): View;\n public axis(field: string | boolean, axisOption?: AxisOption): View {\n if (isBoolean(field)) {\n set(this.options, ['axes'], field);\n } else {\n set(this.options, ['axes', field], axisOption);\n }\n\n return this;\n }\n\n /**\n * 对图例进行整体配置。\n *\n * ```ts\n * view.legend(false); // 关闭图例\n *\n * view.legend({\n * position: 'right',\n * }); // 图例进行整体配置\n * ```\n * @param field\n * @returns View\n */\n public legend(field: LegendOption): View;\n /**\n * 对特定的图例进行配置。\n *\n * @example\n * ```ts\n * view.legend('city', false); // 关闭某个图例,通过数据字段名进行关联\n *\n * // 对特定的图例进行配置\n * view.legend('city', {\n * position: 'right',\n * });\n * ```\n *\n * @param field 图例对应的数据字段名称\n * @param legendOption 图例配置,更详细的配置项可以参考:https://github.com/antvis/component#axis\n * @returns View\n */\n public legend(field: string, legendOption: LegendOption): View;\n public legend(field: string | LegendOption, legendOption?: LegendOption): View {\n if (isBoolean(field)) {\n set(this.options, ['legends'], field);\n } else if (isString(field)) {\n set(this.options, ['legends', field], legendOption);\n if (isPlainObject(legendOption) && legendOption?.selected) {\n set(this.options, ['filters', field], (name: string) => {\n return legendOption?.selected[name] ?? true;\n });\n }\n } else {\n // 设置全局的 legend 配置\n set(this.options, ['legends'], field);\n }\n\n return this;\n }\n\n /**\n * 批量设置 scale 配置。\n *\n * ```ts\n * view.scale({\n * sale: {\n * min: 0,\n * max: 100,\n * }\n * });\n * ```\n * Scale 的详细配置项可以参考:https://github.com/antvis/scale#api\n * @returns View\n */\n public scale(field: Record): View;\n /**\n * 为特性的数据字段进行 scale 配置。\n *\n * ```ts\n * view.scale('sale', {\n * min: 0,\n * max: 100,\n * });\n * ```\n *\n * @returns View\n */\n public scale(field: string, scaleOption: ScaleOption): View;\n public scale(field: string | Record, scaleOption?: ScaleOption): View {\n if (isString(field)) {\n set(this.options, ['scales', field], scaleOption);\n } else if (isObject(field)) {\n each(field, (v: ScaleOption, k: string) => {\n set(this.options, ['scales', k], v);\n });\n }\n\n return this;\n }\n\n /**\n * tooltip 提示信息配置。\n *\n * ```ts\n * view.tooltip(false); // 关闭 tooltip\n *\n * view.tooltip({\n * shared: true\n * });\n * ```\n *\n * @param cfg Tooltip 配置,更详细的配置项参考:https://github.com/antvis/component#tooltip\n * @returns View\n */\n public tooltip(cfg: boolean | TooltipOption): View {\n set(this.options, 'tooltip', cfg);\n\n return this;\n }\n\n /**\n * 辅助标记配置。\n *\n * ```ts\n * view.annotation().line({\n * start: ['min', 85],\n * end: ['max', 85],\n * style: {\n * stroke: '#595959',\n * lineWidth: 1,\n * lineDash: [3, 3],\n * },\n * });\n * ```\n * 更详细的配置项:https://github.com/antvis/component#annotation\n * @returns [[Annotation]]\n */\n public annotation(): Annotation {\n return this.getController('annotation');\n }\n\n /**\n * @deprecated\n * This method will be removed at G2 V4.1. Replaced by {@link #guide()}\n */\n public guide(): Annotation {\n console.warn('This method will be removed at G2 V4.1. Please use chart.annotation() instead.');\n return this.annotation();\n }\n\n /**\n * 坐标系配置。\n *\n * @example\n * ```ts\n * view.coordinate({\n * type: 'polar',\n * cfg: {\n * radius: 0.85,\n * },\n * actions: [\n * [ 'transpose' ],\n * ],\n * });\n * ```\n *\n * @param option\n * @returns\n */\n public coordinate(option?: CoordinateOption): CoordinateController;\n /**\n * 声明坐标系类型,并进行配置。\n *\n * ```ts\n * // 直角坐标系,并进行转置变换\n * view.coordinate('rect').transpose();\n *\n * // 默认创建直角坐标系\n * view.coordinate();\n * ```\n *\n * @param type 坐标系类型\n * @param [coordinateCfg] 坐标系配置\n * @returns\n */\n public coordinate(type: string, coordinateCfg?: CoordinateCfg): CoordinateController;\n public coordinate(type: string | CoordinateOption, coordinateCfg?: CoordinateCfg): CoordinateController {\n // 提供语法糖,使用更简单\n if (isString(type)) {\n set(this.options, 'coordinate', { type, cfg: coordinateCfg } as CoordinateOption);\n } else {\n set(this.options, 'coordinate', type);\n }\n\n // 更新 coordinate 配置\n this.coordinateController.update(this.options.coordinate);\n\n return this.coordinateController;\n }\n\n /**\n * @deprecated\n * This method will be removed at G2 V4.1. Replaced by {@link #coordinate()}\n */\n public coord(type: string | CoordinateOption, coordinateCfg?: CoordinateCfg): CoordinateController {\n console.warn('This method will be removed at G2 V4.1. Please use chart.coordinate() instead.');\n // @ts-ignore\n return this.coordinate(type, coordinateCfg);\n }\n\n /**\n * view 分面绘制。\n *\n * ```ts\n * view.facet('rect', {\n * rowField: 'province',\n * columnField: 'category',\n * eachView: (innerView: View, facet?: FacetData) => {\n * innerView.line().position('city*sale');\n * },\n * });\n * ```\n *\n * @param type 分面类型\n * @param cfg 分面配置, [[FacetCfgMap]]\n * @returns View\n */\n public facet(type: T, cfg: FacetCfgMap[T]): View {\n // 先销毁掉之前的分面\n if (this.facetInstance) {\n this.facetInstance.destroy();\n }\n\n // 创建新的分面\n const Ctor = getFacet(type);\n\n if (!Ctor) {\n throw new Error(`facet '${type}' is not exist!`);\n }\n\n this.facetInstance = new Ctor(this, { ...cfg, type });\n\n return this;\n }\n\n /*\n * 开启或者关闭动画。\n *\n * ```ts\n * view.animate(false);\n * ```\n *\n * @param status 动画状态,true 表示开始,false 表示关闭\n * @returns View\n */\n public animate(status: boolean): View {\n set(this.options, 'animate', status);\n return this;\n }\n\n /**\n * 更新配置项,用于配置项式声明。\n * @param options 配置项\n */\n public updateOptions(options: Options) {\n this.clear(); // 清空\n mix(this.options, options);\n\n // 需要把已存在的 view 销毁,否则会重复创建\n // 目前针对配置项还没有特别好的 view 更新机制,为了不影响主流流程,所以在这里直接销毁\n this.views.forEach((view) => view.destroy());\n this.views = [];\n\n this.initOptions();\n // 初始化坐标系大小,保证 padding 计算正确\n this.coordinateBBox = this.viewBBox;\n return this;\n }\n\n /**\n * 往 `view.options` 属性中存储配置项。\n * @param name 属性名称\n * @param opt 属性值\n * @returns view\n */\n public option(name: string, opt: any): View {\n // 对于内置的 option,避免覆盖。\n // name 在原型上,说明可能是内置 API,存在 option 被覆盖的风险,不处理\n if (View.prototype[name]) {\n throw new Error(`Can't use built in variable name \"${name}\", please change another one.`);\n }\n\n // 存入到 option 中\n set(this.options, name, opt);\n return this;\n }\n\n /**\n * 设置主题。\n *\n * ```ts\n * view.theme('dark'); // 'dark' 需要事先通过 `registerTheme()` 接口注册完成\n *\n * view.theme({ defaultColor: 'red' });\n * ```\n *\n * @param theme 主题名或者主题配置\n * @returns View\n */\n public theme(theme: string | LooseObject): View {\n this.themeObject = isObject(theme) ? deepMix({}, this.themeObject, createTheme(theme)) : getTheme(theme);\n\n return this;\n }\n\n /* end 一系列传入配置的 API */\n\n /**\n * Call the interaction based on the interaction name\n *\n * ```ts\n * view.interaction('my-interaction', { extra: 'hello world' });\n * ```\n * 详细文档可以参考:https://g2.antv.vision/zh/docs/api/general/interaction\n * @param name interaction name\n * @param cfg interaction config\n * @returns\n */\n public interaction(name: string, cfg?: LooseObject): View {\n const existInteraction = this.interactions[name];\n // 存在则先销毁已有的\n if (existInteraction) {\n existInteraction.destroy();\n }\n\n // 新建交互实例\n const interaction = createInteraction(name, this, cfg);\n if (interaction) {\n interaction.init();\n this.interactions[name] = interaction;\n }\n return this;\n }\n\n /**\n * 移除当前 View 的 interaction\n * ```ts\n * view.removeInteraction('my-interaction');\n * ```\n * @param name interaction name\n */\n public removeInteraction(name: string) {\n const existInteraction = this.interactions[name];\n // 存在则先销毁已有的\n if (existInteraction) {\n existInteraction.destroy();\n this.interactions[name] = undefined;\n }\n }\n\n /**\n * 修改数据,数据更新逻辑,数据更新仅仅影响当前这一层的 view\n *\n * ```ts\n * view.changeData([{ city: '北京', sale: '200' }]);\n * ```\n *\n * @param data\n * @returns void\n */\n public changeData(data: Data) {\n this.isDataChanged = true;\n this.emit(VIEW_LIFE_CIRCLE.BEFORE_CHANGE_DATA, Event.fromData(this, VIEW_LIFE_CIRCLE.BEFORE_CHANGE_DATA, null));\n // 1. 保存数据\n this.data(data);\n\n // 2. 渲染\n this.paint(true);\n\n // 3. 遍历子 view 进行 change data\n const views = this.views;\n for (let i = 0, len = views.length; i < len; i++) {\n const view = views[i];\n // FIXME 子 view 有自己的数据的情况,该如何处理?\n view.changeData(data);\n }\n\n this.emit(VIEW_LIFE_CIRCLE.AFTER_CHANGE_DATA, Event.fromData(this, VIEW_LIFE_CIRCLE.AFTER_CHANGE_DATA, null));\n }\n\n /* View 管理相关的 API */\n\n /**\n * 创建子 view\n *\n * ```ts\n * const innerView = view.createView({\n * start: { x: 0, y: 0 },\n * end: { x: 0.5, y: 0.5 },\n * padding: 8,\n * });\n * ```\n *\n * @param cfg\n * @returns View\n */\n public createView(cfg?: Partial): View {\n // 将会在 4.1 版本中移除递归嵌套 view,仅仅只允许 chart - view 两层。\n // 这个 API 理论上用户量不多,所以暂时不发大版本,所以先暂时打一个 warning。\n if (this.parent && this.parent.parent) {\n // 存在 3 层 结构了\n console.warn('The view nesting recursive feature will be removed at G2 V4.1. Please avoid to use it.');\n }\n\n // 子 view 共享 options 配置数据\n const sharedOptions = {\n data: this.options.data,\n scales: clone(this.options.scales),\n axes: clone(this.options.axes),\n coordinate: clone(this.coordinateController.getOption()),\n tooltip: clone(this.options.tooltip),\n legends: clone(this.options.legends),\n animate: this.options.animate,\n visible: this.visible,\n };\n\n const v = new View({\n parent: this,\n canvas: this.canvas,\n // 子 view 共用三层 group\n backgroundGroup: this.backgroundGroup.addGroup({ zIndex: GROUP_Z_INDEX.BG }),\n middleGroup: this.middleGroup.addGroup({ zIndex: GROUP_Z_INDEX.MID }),\n foregroundGroup: this.foregroundGroup.addGroup({ zIndex: GROUP_Z_INDEX.FORE }),\n theme: this.themeObject,\n padding: this.padding,\n ...cfg,\n options: {\n ...sharedOptions,\n ...get(cfg, 'options', {}),\n },\n });\n\n this.views.push(v);\n\n return v;\n }\n\n /**\n * @deprecated\n * This method will be removed at G2 V4.1. Replaced by {@link #createView()}\n */\n public view(cfg?: Partial) {\n console.warn('This method will be removed at G2 V4.1. Please use chart.createView() instead.');\n return this.createView(cfg);\n }\n\n /**\n * 删除一个子 view\n * @param view\n * @return removedView\n */\n public removeView(view: View): View {\n const removedView = remove(this.views, (v: View) => v === view)[0];\n\n if (removedView) {\n removedView.destroy();\n }\n\n return removedView;\n }\n /* end View 管理相关的 API */\n\n // 一些 get 方法\n\n /**\n * 获取当前坐标系实例。\n * @returns [[Coordinate]]\n */\n public getCoordinate() {\n return this.coordinateInstance;\n }\n\n /**\n * 获取当前 view 的主题配置。\n * @returns themeObject\n */\n public getTheme(): LooseObject {\n return this.themeObject;\n }\n\n /**\n * 获得 x 轴字段的 scale 实例。\n * @returns view 中 Geometry 对于的 x scale\n */\n public getXScale(): Scale {\n // 拿第一个 Geometry 的 X scale\n // 隐藏逻辑:一个 view 中的 Geometry 必须 x 字段一致\n const g = this.geometries[0];\n return g ? g.getXScale() : null;\n }\n\n /**\n * 获取 y 轴字段的 scales 实例。\n * @returns view 中 Geometry 对于的 y scale 数组\n */\n public getYScales(): Scale[] {\n // 拿到所有的 Geometry 的 Y scale,然后去重\n const tmpMap = {};\n const yScales = [];\n this.geometries.forEach((g: Geometry) => {\n const yScale = g.getYScale();\n const field = yScale.field;\n if (!tmpMap[field]) {\n tmpMap[field] = true;\n yScales.push(yScale);\n }\n });\n return yScales;\n }\n\n /**\n * 获取 x 轴或者 y 轴对应的所有 scale 实例。\n * @param dimType x | y\n * @returns x 轴或者 y 轴对应的所有 scale 实例。\n */\n public getScalesByDim(dimType: 'x' | 'y'): Record {\n const geometries = this.geometries;\n const scales = {};\n\n for (let i = 0, len = geometries.length; i < len; i++) {\n const geometry = geometries[i];\n const scale = dimType === 'x' ? geometry.getXScale() : geometry.getYScale();\n if (scale && !scales[scale.field]) {\n scales[scale.field] = scale;\n }\n }\n\n return scales;\n }\n\n /**\n * 根据字段名去获取 scale 实例。\n * @param field 数据字段名称\n * @param key id\n */\n public getScale(field: string, key?: string): Scale {\n const defaultKey = key ? key : this.getScaleKey(field);\n // 调用根节点 view 的方法获取\n return this.getRootView().scalePool.getScale(defaultKey);\n }\n\n /**\n * @deprecated\n * This method will be removed at G2 V4.1. Please use `getScale`.\n */\n public getScaleByField(field: string, key?: string): Scale {\n return this.getScale(field, key);\n }\n\n /**\n * 返回所有配置信息。\n * @returns 所有的 view API 配置。\n */\n public getOptions(): Options {\n return this.options;\n }\n\n /**\n * 获取 view 的数据(过滤后的数据)。\n * @returns 处理过滤器之后的数据。\n */\n public getData() {\n return this.filteredData;\n }\n\n /**\n * 获取原始数据\n * @returns 传入 G2 的原始数据\n */\n public getOriginalData() {\n return this.options.data;\n }\n\n /**\n * 获取布局后的边距 padding\n * @returns\n */\n public getPadding(): Padding {\n return this.autoPadding.getPadding();\n }\n\n /**\n * 获取当前 view 有的 geometries\n * @returns\n */\n public getGeometries() {\n return this.geometries;\n }\n\n /**\n * 获取 view 中的所有 geome\n */\n public getElements(): Element[] {\n return reduce(\n this.geometries,\n (elements: Element[], geometry: Geometry) => {\n return elements.concat(geometry.getElements());\n },\n []\n );\n }\n\n /**\n * 根据一定的规则查找 Geometry 的 Elements。\n *\n * ```typescript\n * getElementsBy((element) => {\n * const data = element.getData();\n *\n * return data.a === 'a';\n * });\n * ```\n *\n * @param condition 定义查找规则的回调函数。\n * @returns\n */\n public getElementsBy(condition: (element: Element) => boolean): Element[] {\n return this.getElements().filter((el) => condition(el));\n }\n\n /**\n * 获得绘制的层级 group。\n * @param layer 层级名称。\n * @returns 对应层级的 Group。\n */\n public getLayer(layer: LAYER): IGroup {\n return layer === LAYER.BG\n ? this.backgroundGroup\n : layer === LAYER.MID\n ? this.middleGroup\n : layer === LAYER.FORE\n ? this.foregroundGroup\n : this.foregroundGroup;\n }\n\n /**\n * 对外暴露方法,判断一个点是否在绘图区域(即坐标系范围)内部。\n * @param point 坐标点\n */\n public isPointInPlot(point: Point): boolean {\n return isPointInCoordinate(this.getCoordinate(), point);\n }\n\n /**\n * 获得所有的 legend 对应的 attribute 实例。\n * @returns 维度字段的 Attribute 数组\n */\n public getLegendAttributes(): Attribute[] {\n return flatten(this.geometries.map((g: Geometry) => g.getGroupAttributes())) as unknown as Attribute[];\n }\n\n /**\n * 获取所有的分组字段的 scale 实例。\n * @returns 获得分组字段的 scale 实例数组。\n */\n public getGroupScales(): Scale[] {\n // 拿到所有的 Geometry 的 分组字段 scale,然后打平去重\n const scales = this.geometries.map((g: Geometry) => g.getGroupScales());\n return uniq(flatten(scales));\n }\n\n /**\n * 获取 G.Canvas 实例。\n * @returns G.Canvas 画布实例。\n */\n public getCanvas(): ICanvas {\n return (this.getRootView() as unknown as Chart).canvas;\n }\n\n /**\n * 获得根节点 view。\n */\n public getRootView(): View {\n let v = this as View;\n\n while (true) {\n if (v.parent) {\n v = v.parent;\n continue;\n }\n break;\n }\n return v;\n }\n\n /**\n * 获取该数据在可视化后,对应的画布坐标点。\n * @param data 原始数据记录\n * @returns 对应的画布坐标点\n */\n public getXY(data: Datum): Point {\n const coordinate = this.getCoordinate();\n const xScales = this.getScalesByDim('x');\n const yScales = this.getScalesByDim('y');\n let x;\n let y;\n\n each(data, (value, key) => {\n if (xScales[key]) {\n x = xScales[key].scale(value);\n }\n if (yScales[key]) {\n y = yScales[key].scale(value);\n }\n });\n\n if (!isNil(x) && !isNil(y)) {\n return coordinate.convert({ x, y });\n }\n }\n\n public getController(name: 'tooltip'): Tooltip;\n public getController(name: 'axis'): Axis;\n public getController(name: 'legend'): Legend;\n public getController(name: 'scrollbar'): Scrollbar;\n public getController(name: 'slider'): Slider;\n public getController(name: 'annotation'): Annotation;\n public getController(name: 'gestucre'): Gesture;\n public getController(name: string): Controller;\n /**\n * 获取 name 对应的 controller 实例\n * @param name\n */\n public getController(name: string): Controller {\n return find(this.controllers, (c: Controller) => c.name === name);\n }\n\n /**\n * 显示 point 坐标点对应的 tooltip。\n * @param point 画布坐标点\n * @returns View\n */\n public showTooltip(point: Point): View {\n const tooltip = this.getController('tooltip');\n if (tooltip) {\n tooltip.showTooltip(point);\n }\n return this;\n }\n\n /**\n * 隐藏 tooltip。\n * @returns View\n */\n public hideTooltip(): View {\n const tooltip = this.getController('tooltip');\n if (tooltip) {\n tooltip.hideTooltip();\n }\n return this;\n }\n\n /**\n * 将 tooltip 锁定到当前位置不能移动。\n * @returns View\n */\n public lockTooltip(): View {\n const tooltip = this.getController('tooltip');\n if (tooltip) {\n tooltip.lockTooltip();\n }\n return this;\n }\n\n /**\n * 将 tooltip 锁定解除。\n * @returns View\n */\n public unlockTooltip(): View {\n const tooltip = this.getController('tooltip');\n if (tooltip) {\n tooltip.unlockTooltip();\n }\n return this;\n }\n\n /**\n * 是否锁定 tooltip。\n * @returns 是否锁定\n */\n public isTooltipLocked() {\n const tooltip = this.getController('tooltip');\n return tooltip && tooltip.isTooltipLocked();\n }\n\n /**\n * 获取当前 point 对应的 tooltip 数据项。\n * @param point 坐标点\n * @returns tooltip 数据项\n */\n public getTooltipItems(point: Point) {\n const tooltip = this.getController('tooltip');\n\n return tooltip ? tooltip.getTooltipItems(point) : [];\n }\n\n /**\n * 获取逼近的点的数据集合\n * @param point 当前坐标点\n * @returns 数据\n */\n public getSnapRecords(point: Point) {\n const geometries = this.geometries;\n let rst = [];\n for (let i = 0, len = geometries.length; i < len; i++) {\n const geom = geometries[i];\n const dataArray = geom.dataArray;\n geom.sort(dataArray); // 先进行排序,便于 tooltip 查找\n let record;\n for (let j = 0, dataLen = dataArray.length; j < dataLen; j++) {\n const data = dataArray[j];\n record = findDataByPoint(point, data, geom);\n if (record) {\n rst.push(record);\n }\n }\n }\n\n // 同样递归处理子 views\n const views = this.views;\n for (let i = 0, len = views.length; i < len; i++) {\n const view = views[i];\n const snapRecords = view.getSnapRecords(point);\n rst = rst.concat(snapRecords);\n }\n\n return rst;\n }\n\n /**\n * 获取所有的 pure component 组件,用于布局。\n */\n public getComponents(): ComponentOption[] {\n let components = [];\n const controllers = this.controllers;\n for (let i = 0, len = controllers.length; i < len; i++) {\n const controller = controllers[i];\n components = components.concat(controller.getComponents());\n }\n\n return components;\n }\n\n /**\n * 将 data 数据进行过滤。\n * @param data\n * @returns 过滤之后的数据\n */\n public filterData(data: Data): Data {\n const { filters } = this.options;\n // 不存在 filters,则不需要进行数据过滤\n if (size(filters) === 0) {\n return data;\n }\n\n // 存在过滤器,则逐个执行过滤,过滤器之间是 与 的关系\n return filter(data, (datum: Datum, idx: number) => {\n // 所有的 filter 字段\n const fields = Object.keys(filters);\n\n // 所有的条件都通过,才算通过\n return fields.every((field: string) => {\n const condition = filters[field];\n\n // condition 返回 true,则保留\n return condition(datum[field], datum, idx);\n });\n });\n }\n\n /**\n * 对某一个字段进行过滤\n * @param field\n * @param data\n */\n public filterFieldData(field: string, data: Data): Data {\n const { filters } = this.options;\n const condition = get(filters, field);\n\n if (isUndefined(condition)) {\n return data;\n }\n return data.filter((datum: Datum, idx: number) => condition(datum[field], datum, idx));\n }\n\n /**\n * 调整 coordinate 的坐标范围。\n */\n public adjustCoordinate() {\n const { start: curStart, end: curEnd } = this.getCoordinate();\n const start = this.coordinateBBox.bl;\n const end = this.coordinateBBox.tr;\n\n // 在 defaultLayoutFn 中只会在 coordinateBBox 发生变化的时候会调用 adjustCoordinate(),所以不用担心被置位\n if (isEqual(curStart, start) && isEqual(curEnd, end)) {\n this.isCoordinateChanged = false;\n // 如果大小没有变化则不更新\n return;\n }\n this.isCoordinateChanged = true;\n this.coordinateInstance = this.coordinateController.adjust(start, end);\n }\n\n protected paint(isUpdate: boolean) {\n this.renderDataRecursive(isUpdate);\n\n // 处理 sync scale 的逻辑\n this.syncScale();\n\n this.emit(VIEW_LIFE_CIRCLE.BEFORE_PAINT);\n\n // 初始化图形、组件位置,计算 padding\n this.renderPaddingRecursive(isUpdate);\n // 布局图形、组件\n this.renderLayoutRecursive(isUpdate);\n // 背景色 shape\n this.renderBackgroundStyleShape();\n // 最终的绘制 render\n this.renderPaintRecursive(isUpdate);\n\n this.emit(VIEW_LIFE_CIRCLE.AFTER_PAINT);\n\n this.isDataChanged = false; // 渲染完毕复位\n }\n\n /**\n * 渲染背景样式的 shape。\n * 放到 view 中创建的原因是让使用 view 绘制图形的时候,也能够处理背景色\n */\n private renderBackgroundStyleShape() {\n // 只有根节点才处理\n if (this.parent) {\n return;\n }\n const background = get(this.themeObject, 'background');\n // 配置了背景色\n if (background) {\n // 1. 不存在则创建\n if (!this.backgroundStyleRectShape) {\n this.backgroundStyleRectShape = this.backgroundGroup.addShape('rect', {\n attrs: {},\n zIndex: -1,\n // 背景色 shape 不设置事件捕获\n capture: false,\n });\n this.backgroundStyleRectShape.toBack();\n }\n\n // 2. 有了 shape 之后设置背景,位置(更新的时候)\n const { x, y, width, height } = this.viewBBox;\n this.backgroundStyleRectShape.attr({\n fill: background,\n x,\n y,\n width,\n height,\n });\n } else {\n // 没有配置背景色\n if (this.backgroundStyleRectShape) {\n this.backgroundStyleRectShape.remove(true);\n this.backgroundStyleRectShape = undefined;\n }\n }\n }\n\n /**\n * 递归计算每个 view 的 padding 值,coordinateBBox 和 coordinateInstance\n * @param isUpdate\n */\n protected renderPaddingRecursive(isUpdate: boolean) {\n // 1. 子 view 大小相对 coordinateBBox,changeSize 的时候需要重新计算\n this.calculateViewBBox();\n // 2. 更新 coordinate\n this.adjustCoordinate();\n // 3. 初始化组件 component\n this.initComponents(isUpdate);\n // 4. 布局计算每隔 view 的 padding 值\n // 4.1. 自动加 auto padding -> absolute padding,并且增加 appendPadding\n this.autoPadding = calculatePadding(this).shrink(parsePadding(this.appendPadding));\n // 4.2. 计算出新的 coordinateBBox,更新 Coordinate\n // 这里必须保留,原因是后面子 view 的 viewBBox 或根据 parent 的 coordinateBBox\n this.coordinateBBox = this.viewBBox.shrink(this.autoPadding.getPadding());\n this.adjustCoordinate();\n\n // 刷新 tooltip (tooltip crosshairs 依赖 coordinate 位置)\n const tooltipController = this.controllers.find((c) => c.name === 'tooltip');\n tooltipController.update();\n\n // 同样递归处理子 views\n const views = this.views;\n for (let i = 0, len = views.length; i < len; i++) {\n const view = views[i];\n view.renderPaddingRecursive(isUpdate);\n }\n }\n\n /**\n * 递归处理 view 的布局,最终是计算各个 view 的 coordinateBBox 和 coordinateInstance\n * @param isUpdate\n */\n protected renderLayoutRecursive(isUpdate: boolean) {\n // 1. 同步子 view padding\n // 根据配置获取 padding\n const syncViewPaddingFn =\n this.syncViewPadding === true\n ? defaultSyncViewPadding\n : isFunction(this.syncViewPadding)\n ? this.syncViewPadding\n : undefined;\n\n if (syncViewPaddingFn) {\n syncViewPaddingFn(this, this.views, PaddingCal);\n // 同步 padding 之后,更新 coordinate\n this.views.forEach((v: View) => {\n v.coordinateBBox = v.viewBBox.shrink(v.autoPadding.getPadding());\n v.adjustCoordinate();\n });\n }\n\n // 3. 将 view 中的组件按照 view padding 移动到对应的位置\n this.doLayout();\n\n // 同样递归处理子 views\n const views = this.views;\n for (let i = 0, len = views.length; i < len; i++) {\n const view = views[i];\n view.renderLayoutRecursive(isUpdate);\n }\n }\n\n /**\n * 最终递归绘制组件和图形\n * @param isUpdate\n */\n protected renderPaintRecursive(isUpdate: boolean) {\n const middleGroup = this.middleGroup;\n if (this.limitInPlot) {\n const { type, attrs } = getCoordinateClipCfg(this.coordinateInstance);\n middleGroup.setClip({\n type,\n attrs,\n });\n } else {\n // 清除已有的 clip\n middleGroup.setClip(undefined);\n }\n\n // 1. 渲染几何标记\n this.paintGeometries(isUpdate);\n // 2. 绘制组件\n this.renderComponents(isUpdate);\n\n // 同样递归处理子 views\n const views = this.views;\n for (let i = 0, len = views.length; i < len; i++) {\n const view = views[i];\n view.renderPaintRecursive(isUpdate);\n }\n }\n\n // end Get 方法\n\n /**\n * 创建 scale,递归到顶层 view 去创建和缓存 scale\n * @param field\n * @param data\n * @param scaleDef\n * @param key\n */\n protected createScale(field: string, data: Data, scaleDef: ScaleOption, key: string): Scale {\n // 1. 合并 field 对应的 scaleDef,合并原则是底层覆盖顶层(就近原则)\n const currentScaleDef = get(this.options.scales, [field]);\n const mergedScaleDef = { ...currentScaleDef, ...scaleDef };\n\n // 2. 是否存在父 view,在则递归,否则创建\n if (this.parent) {\n return this.parent.createScale(field, data, mergedScaleDef, key);\n }\n\n // 3. 在根节点 view 通过 scalePool 创建\n return this.scalePool.createScale(field, data, mergedScaleDef, key);\n }\n\n /**\n * 递归渲染中的数据处理\n * @param isUpdate\n */\n private renderDataRecursive(isUpdate: boolean) {\n // 1. 处理数据\n this.doFilterData();\n // 2. 创建实例\n this.createCoordinate();\n // 3. 初始化 Geometry\n this.initGeometries(isUpdate);\n // 4. 处理分面逻辑,最终都是生成子 view 和 geometry\n this.renderFacet(isUpdate);\n\n // 同样递归处理子 views\n const views = this.views;\n for (let i = 0, len = views.length; i < len; i++) {\n const view = views[i];\n view.renderDataRecursive(isUpdate);\n }\n }\n\n /**\n * 计算 region,计算实际的像素范围坐标\n * @private\n */\n private calculateViewBBox() {\n let x;\n let y;\n let width;\n let height;\n\n if (this.parent) {\n const bbox = this.parent.coordinateBBox;\n // 存在 parent, 那么就是通过父容器大小计算\n x = bbox.x;\n y = bbox.y;\n width = bbox.width;\n height = bbox.height;\n } else {\n // 顶层容器,从 canvas 中取值 宽高\n x = 0;\n y = 0;\n width = this.canvas.get('width');\n height = this.canvas.get('height');\n }\n\n const { start, end } = this.region;\n\n // 根据 region 计算当前 view 的 bbox 大小。\n const viewBBox = new BBox(\n x + width * start.x,\n y + height * start.y,\n width * (end.x - start.x),\n height * (end.y - start.y)\n );\n\n if (!this.viewBBox || !this.viewBBox.isEqual(viewBBox)) {\n // viewBBox 发生变化的时候进行更新\n this.viewBBox = new BBox(\n x + width * start.x,\n y + height * start.y,\n width * (end.x - start.x),\n height * (end.y - start.y)\n );\n }\n\n // 初始的 coordinate bbox 大小\n this.coordinateBBox = this.viewBBox;\n }\n\n /**\n * 初始化事件机制:G 4.0 底层内置支持 name:event 的机制,那么只要所有组件都有自己的 name 即可。\n *\n * G2 的事件只是获取事件委托,然后在 view 嵌套结构中,形成事件冒泡机制。\n * 当前 view 只委托自己 view 中的 Component 和 Geometry 事件,并向上冒泡\n * @private\n */\n private initEvents() {\n // 三层 group 中的 shape 事件都会通过 G 冒泡上来的\n this.foregroundGroup.on('*', this.onDelegateEvents);\n this.middleGroup.on('*', this.onDelegateEvents);\n this.backgroundGroup.on('*', this.onDelegateEvents);\n\n this.canvas.on('*', this.onCanvasEvent);\n }\n\n private onCanvasEvent = (evt: GEvent): void => {\n const name = evt.name;\n if (!name.includes(':')) {\n // 非委托事件\n const e = this.createViewEvent(evt);\n // 处理 plot 事件\n this.doPlotEvent(e);\n this.emit(name, e);\n }\n };\n\n /**\n * 初始化插件\n */\n private initComponentController() {\n const usedControllers = this.usedControllers;\n for (let i = 0, len = usedControllers.length; i < len; i++) {\n const controllerName = usedControllers[i];\n const Ctor = getComponentController(controllerName);\n if (Ctor) {\n this.controllers.push(new Ctor(this));\n }\n }\n }\n\n private createViewEvent(evt: GEvent) {\n const { shape, name } = evt;\n\n const data = shape ? shape.get('origin') : null;\n // 事件在 view 嵌套中冒泡(暂不提供阻止冒泡的机制)\n const e = new Event(this, evt, data);\n e.type = name;\n return e;\n }\n /**\n * 触发事件之后\n * @param evt\n */\n private onDelegateEvents = (evt: GEvent): void => {\n // 阻止继续冒泡,防止重复事件触发\n // evt.preventDefault();\n const { name } = evt;\n if (!name.includes(':')) {\n return;\n }\n // 事件在 view 嵌套中冒泡(暂不提供阻止冒泡的机制)\n const e = this.createViewEvent(evt);\n\n // 包含有基本事件、组合事件\n this.emit(name, e);\n // const currentTarget = evt.currentTarget as IShape;\n // const inheritNames = currentTarget.get('inheritNames');\n // if (evt.delegateObject || inheritNames) {\n // const events = this.getEvents();\n // each(inheritNames, (subName) => {\n // const eventName = `${subName}:${type}`;\n // if (events[eventName]) {\n // this.emit(eventName, e);\n // }\n // });\n // }\n };\n\n /**\n * 处理 PLOT_EVENTS\n * plot event 需要处理所有的基础事件,并判断是否在画布中,然后再决定是否要 emit。\n * 对于 mouseenter、mouseleave 比较特殊,需要做一下数学比较。\n * @param e\n */\n private doPlotEvent(e: Event) {\n const { type, x, y } = e;\n\n const point = { x, y };\n\n const ALL_EVENTS = [\n 'mousedown',\n 'mouseup',\n 'mousemove',\n 'mouseleave',\n 'mousewheel',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n 'click',\n 'dblclick',\n 'contextmenu',\n ];\n\n if (ALL_EVENTS.includes(type)) {\n const currentInPlot = this.isPointInPlot(point);\n const newEvent = e.clone();\n\n if (currentInPlot) {\n const TYPE = `plot:${type}`; // 组合 plot 事件\n newEvent.type = TYPE;\n this.emit(TYPE, newEvent);\n if (type === 'mouseleave' || type === 'touchend') {\n // 在plot 内部却离开画布\n this.isPreMouseInPlot = false;\n }\n }\n\n // 对于 mouseenter, mouseleave 的计算处理\n if (type === 'mousemove' || type === 'touchmove') {\n if (this.isPreMouseInPlot && !currentInPlot) {\n if (type === 'mousemove') {\n newEvent.type = PLOT_EVENTS.MOUSE_LEAVE;\n this.emit(PLOT_EVENTS.MOUSE_LEAVE, newEvent);\n }\n newEvent.type = PLOT_EVENTS.LEAVE;\n this.emit(PLOT_EVENTS.LEAVE, newEvent);\n } else if (!this.isPreMouseInPlot && currentInPlot) {\n if (type === 'mousemove') {\n newEvent.type = PLOT_EVENTS.MOUSE_ENTER;\n this.emit(PLOT_EVENTS.MOUSE_ENTER, newEvent);\n }\n newEvent.type = PLOT_EVENTS.ENTER;\n this.emit(PLOT_EVENTS.ENTER, newEvent);\n }\n // 赋新的状态值\n this.isPreMouseInPlot = currentInPlot;\n } else if (type === 'mouseleave' || type === 'touchend') {\n // 可能不在 currentInPlot 中\n if (this.isPreMouseInPlot) {\n if (type === 'mouseleave') {\n newEvent.type = PLOT_EVENTS.MOUSE_LEAVE;\n this.emit(PLOT_EVENTS.MOUSE_LEAVE, newEvent);\n }\n newEvent.type = PLOT_EVENTS.LEAVE;\n this.emit(PLOT_EVENTS.LEAVE, newEvent);\n\n this.isPreMouseInPlot = false;\n }\n }\n }\n }\n\n // view 生命周期 —— 渲染流程\n\n /**\n * 处理筛选器,筛选数据\n * @private\n */\n private doFilterData() {\n const { data } = this.options;\n this.filteredData = this.filterData(data);\n }\n\n /**\n * 初始化 Geometries\n * @private\n */\n private initGeometries(isUpdate: boolean) {\n // 初始化图形的之前,先创建 / 更新 scales\n this.createOrUpdateScales();\n // 实例化 Geometry,然后 view 将所有的 scale 管理起来\n const coordinate = this.getCoordinate();\n const scaleDefs = get(this.options, 'scales', {});\n const geometries = this.geometries;\n for (let i = 0, len = geometries.length; i < len; i++) {\n const geometry = geometries[i];\n // 保持 scales 引用不要变化\n geometry.scales = this.getGeometryScales();\n const cfg = {\n coordinate, // 使用 coordinate 引用,可以保持 coordinate 的同步更新\n scaleDefs,\n data: this.filteredData,\n theme: this.themeObject,\n isDataChanged: this.isDataChanged,\n isCoordinateChanged: this.isCoordinateChanged,\n };\n\n if (isUpdate) {\n // 数据发生更新\n geometry.update(cfg);\n } else {\n geometry.init(cfg);\n }\n }\n\n // Geometry 初始化之后,生成了 scale,然后进行调整 scale 配置\n this.adjustScales();\n }\n\n /**\n * 根据 Geometry 的所有字段创建 scales\n * 如果存在,则更新,不存在则创建\n */\n private createOrUpdateScales() {\n const fields = this.getScaleFields();\n const groupedFields = this.getGroupedFields();\n\n const { data, scales = {} } = this.getOptions();\n const filteredData = this.filteredData;\n\n for (let i = 0, len = fields.length; i < len; i++) {\n const field = fields[i];\n const scaleDef = scales[field];\n\n // 调用方法,递归去创建\n const key = this.getScaleKey(field);\n this.createScale(\n field,\n // 分组字段的 scale 使用未过滤的数据创建\n groupedFields.includes(field) ? data : filteredData,\n scaleDef,\n key\n );\n\n // 缓存从当前 view 创建的 scale key\n this.createdScaleKeys.set(key, true);\n }\n }\n\n /**\n * 处理 scale 同步逻辑\n */\n private syncScale() {\n // 最终调用 root view 的\n this.getRootView().scalePool.sync(this.getCoordinate(), this.theme);\n }\n\n /**\n * 获得 Geometry 中的 scale 对象\n */\n private getGeometryScales(): Record {\n const fields = this.getScaleFields();\n\n const scales = {};\n for (let i = 0; i < fields.length; i++) {\n const field = fields[i];\n scales[field] = this.getScaleByField(field);\n }\n\n return scales;\n }\n\n private getScaleFields() {\n const fields = [];\n const tmpMap = new Map();\n const geometries = this.geometries;\n for (let i = 0; i < geometries.length; i++) {\n const geometry = geometries[i];\n const geometryScales = geometry.getScaleFields();\n uniq(geometryScales, fields, tmpMap);\n }\n return fields;\n }\n\n private getGroupedFields() {\n const fields = [];\n const tmpMap = new Map();\n const geometries = this.geometries;\n for (let i = 0; i < geometries.length; i++) {\n const geometry = geometries[i];\n const groupFields = geometry.getGroupFields();\n uniq(groupFields, fields, tmpMap);\n }\n return fields;\n }\n\n /**\n * 调整 scale 配置\n * @private\n */\n private adjustScales() {\n // 调整目前包括:\n // 分类 scale,调整 range 范围\n this.adjustCategoryScaleRange();\n }\n\n /**\n * 调整分类 scale 的 range,防止超出坐标系外面\n * @private\n */\n private adjustCategoryScaleRange() {\n const xyScales = [this.getXScale(), ...this.getYScales()].filter((e) => !!e);\n const coordinate = this.getCoordinate();\n const scaleOptions = this.options.scales;\n\n each(xyScales, (scale: Scale) => {\n const { field, values, isCategory, isIdentity } = scale;\n\n // 分类或者 identity 的 scale 才进行处理\n if (isCategory || isIdentity) {\n // 存在 value 值,且用户没有配置 range 配置\n if (values && !get(scaleOptions, [field, 'range'])) {\n // 更新 range\n scale.range = getDefaultCategoryScaleRange(scale, coordinate, this.theme);\n }\n }\n });\n }\n\n /**\n * 根据 options 配置、Geometry 字段配置,自动生成 components\n * @param isUpdate 是否是更新\n * @private\n */\n private initComponents(isUpdate: boolean) {\n // 先全部清空,然后 render\n const controllers = this.controllers;\n for (let i = 0; i < controllers.length; i++) {\n const controller = controllers[i];\n // 更新则走更新逻辑;否则清空载重绘\n if (isUpdate) {\n controller.update();\n } else {\n controller.clear();\n controller.render();\n }\n }\n }\n\n private doLayout() {\n this.layoutFunc(this);\n }\n\n /**\n * 创建坐标系\n * @private\n */\n private createCoordinate() {\n const start = this.coordinateBBox.bl;\n const end = this.coordinateBBox.tr;\n this.coordinateInstance = this.coordinateController.create(start, end);\n }\n\n /**\n * 根据 options 配置自动渲染 geometry\n * @private\n */\n private paintGeometries(isUpdate: boolean) {\n const doAnimation = this.options.animate;\n // geometry 的 paint 阶段\n const coordinate = this.getCoordinate();\n const canvasRegion = {\n x: this.viewBBox.x,\n y: this.viewBBox.y,\n minX: this.viewBBox.minX,\n minY: this.viewBBox.minY,\n maxX: this.viewBBox.maxX,\n maxY: this.viewBBox.maxY,\n width: this.viewBBox.width,\n height: this.viewBBox.height,\n };\n const geometries = this.geometries;\n for (let i = 0; i < geometries.length; i++) {\n const geometry = geometries[i];\n geometry.coordinate = coordinate;\n geometry.canvasRegion = canvasRegion;\n if (!doAnimation) {\n // 如果 view 不执行动画,那么 view 下所有的 geometry 都不执行动画\n geometry.animate(false);\n }\n geometry.paint(isUpdate);\n }\n }\n\n /**\n * 最后的绘制组件\n * @param isUpdate\n */\n private renderComponents(isUpdate: boolean) {\n const components = this.getComponents();\n // 先全部清空,然后 render\n for (let i = 0; i < components.length; i++) {\n const co = components[i];\n (co.component as GroupComponent).render();\n }\n }\n\n /**\n * 渲染分面,会在其中进行数据分面,然后进行子 view 创建\n * @param isUpdate\n */\n private renderFacet(isUpdate: boolean) {\n if (this.facetInstance) {\n if (isUpdate) {\n this.facetInstance.update();\n } else {\n this.facetInstance.clear();\n // 计算分面数据\n this.facetInstance.init();\n // 渲染组件和 views\n this.facetInstance.render();\n }\n }\n }\n\n private initOptions() {\n const {\n geometries = [],\n interactions = [],\n views = [],\n annotations = [],\n coordinate,\n events,\n facets,\n } = this.options;\n\n // 设置坐标系\n if (this.coordinateController) {\n // 更新 coordinate controller\n coordinate && this.coordinateController.update(coordinate);\n } else {\n // 创建 coordinate controller\n this.coordinateController = new CoordinateController(coordinate);\n }\n\n // 创建 geometry 实例\n for (let i = 0; i < geometries.length; i++) {\n const geometryOption = geometries[i];\n this.createGeometry(geometryOption);\n }\n\n // 创建 interactions 实例\n for (let j = 0; j < interactions.length; j++) {\n const interactionOption = interactions[j];\n const { type, cfg } = interactionOption;\n this.interaction(type, cfg);\n }\n\n // 创建 view 实例\n for (let k = 0; k < views.length; k++) {\n const viewOption = views[k];\n this.createView(viewOption);\n }\n\n // 设置 annotation\n const annotationComponent = this.getController('annotation');\n for (let l = 0; l < annotations.length; l++) {\n const annotationOption = annotations[l];\n annotationComponent.annotation(annotationOption);\n }\n\n // 设置 events\n if (events) {\n each(events, (eventCallback, eventName) => {\n this.on(eventName, eventCallback);\n });\n }\n\n if (facets) {\n each(facets, (facet) => {\n const { type, ...rest } = facet;\n\n this.facet(type, rest);\n });\n }\n }\n\n private createGeometry(geometryOption: GeometryOption) {\n const { type, cfg = {} } = geometryOption;\n if (this[type]) {\n const geometry = this[type](cfg);\n each(geometryOption, (v, k) => {\n if (isFunction(geometry[k])) {\n geometry[k](v);\n }\n });\n }\n }\n\n /**\n * scale key 的创建方式\n * @param field\n */\n private getScaleKey(field: string): string {\n return `${this.id}-${field}`;\n }\n}\n\n/**\n * 注册 geometry 组件\n * @param name\n * @param Ctor\n * @returns Geometry\n */\nexport function registerGeometry(name: string, Ctor: any) {\n // 语法糖,在 view API 上增加原型方法\n View.prototype[name.toLowerCase()] = function (cfg: any = {}) {\n const props = {\n /** 图形容器 */\n container: this.middleGroup.addGroup(),\n labelsContainer: this.foregroundGroup.addGroup(),\n ...cfg,\n };\n\n const geometry = new Ctor(props);\n this.geometries.push(geometry);\n\n return geometry;\n };\n}\n\nexport default View;\n","import { debounce, each, isString } from '@antv/util';\nimport { ChartCfg } from '../interface';\nimport { GROUP_Z_INDEX, VIEW_LIFE_CIRCLE } from '../constant';\nimport { getEngine } from '../engine';\nimport { createDom, getChartSize, removeDom, modifyCSS } from '../util/dom';\nimport View from './view';\nimport { AriaOption } from '../interface';\n\n/**\n * Chart 类,是使用 G2 进行绘图的入口。\n */\nexport default class Chart extends View {\n /** Chart 的 DOM 容器 */\n public ele: HTMLElement;\n\n /** 图表宽度 */\n public width: number;\n /** 图表高度 */\n public height: number;\n /** 是否开启局部刷新 */\n public localRefresh: boolean;\n /** 是否自适应 DOM 容器宽高,默认为 false,需要用户手动指定宽高 */\n public autoFit: boolean;\n /** 图表渲染引擎 */\n public renderer: 'canvas' | 'svg';\n\n private wrapperElement: HTMLElement;\n\n // @ts-ignore\n constructor(props: ChartCfg) {\n const {\n container,\n width,\n height,\n autoFit = false,\n padding,\n appendPadding,\n renderer = 'canvas',\n pixelRatio,\n localRefresh = true,\n visible = true,\n supportCSSTransform = false,\n defaultInteractions = ['tooltip', 'legend-filter', 'legend-active', 'continuous-filter', 'ellipsis-text', 'axis-description'],\n options,\n limitInPlot,\n theme,\n syncViewPadding,\n } = props;\n\n const ele: HTMLElement = isString(container) ? document.getElementById(container) : container;\n\n // 生成内部正式绘制的 div 元素\n const wrapperElement = createDom('
      ');\n ele.appendChild(wrapperElement);\n\n // if autoFit, use the container size, to avoid the graph render twice.\n const size = getChartSize(ele, autoFit, width, height);\n\n const G = getEngine(renderer);\n\n const canvas = new G.Canvas({\n container: wrapperElement,\n pixelRatio,\n localRefresh,\n supportCSSTransform,\n ...size,\n });\n\n // 调用 view 的创建\n super({\n parent: null,\n canvas,\n // create 3 group layers for views.\n backgroundGroup: canvas.addGroup({ zIndex: GROUP_Z_INDEX.BG }),\n middleGroup: canvas.addGroup({ zIndex: GROUP_Z_INDEX.MID }),\n foregroundGroup: canvas.addGroup({ zIndex: GROUP_Z_INDEX.FORE }),\n padding,\n appendPadding,\n visible,\n options,\n limitInPlot,\n theme,\n syncViewPadding,\n });\n\n this.ele = ele;\n this.canvas = canvas;\n this.width = size.width;\n this.height = size.height;\n this.autoFit = autoFit;\n this.localRefresh = localRefresh;\n this.renderer = renderer;\n this.wrapperElement = wrapperElement;\n\n // 自适应大小\n this.updateCanvasStyle();\n this.bindAutoFit();\n this.initDefaultInteractions(defaultInteractions);\n }\n\n private initDefaultInteractions(interactions) {\n each(interactions, (interaction) => {\n this.interaction(interaction);\n });\n }\n\n /**\n * 设置 WAI-ARIA 无障碍标签。如何根据图形语法自动生成 arial 内容?\n * @param ariaOption\n */\n public aria(ariaOption: AriaOption) {\n const ATTR = 'aria-label';\n if (ariaOption === false) {\n this.ele.removeAttribute(ATTR);\n } else {\n this.ele.setAttribute(ATTR, ariaOption.label);\n }\n }\n\n /**\n * 改变图表大小,同时重新渲染。\n * @param width 图表宽度\n * @param height 图表高度\n * @returns\n */\n public changeSize(width: number, height: number) {\n // 如果宽高一致,那么 changeSize 不执行任何操作\n if (this.width === width && this.height === height) {\n return this;\n }\n\n this.emit(VIEW_LIFE_CIRCLE.BEFORE_CHANGE_SIZE);\n\n this.width = width;\n this.height = height;\n this.canvas.changeSize(width, height);\n\n // 重新渲染\n this.render(true);\n\n this.emit(VIEW_LIFE_CIRCLE.AFTER_CHANGE_SIZE);\n\n return this;\n }\n\n /**\n * 清空图表,同时清除掉 aria 配置\n */\n public clear() {\n super.clear();\n\n this.aria(false);\n }\n\n /**\n * 销毁图表,同时解绑事件,销毁创建的 G.Canvas 实例。\n * @returns void\n */\n public destroy() {\n super.destroy();\n\n this.unbindAutoFit();\n this.canvas.destroy();\n\n removeDom(this.wrapperElement);\n this.wrapperElement = null;\n }\n\n /**\n * 显示或隐藏图表\n * @param visible 是否可见,true 表示显示,false 表示隐藏\n * @returns\n */\n public changeVisible(visible: boolean) {\n super.changeVisible(visible); // 需要更新 visible 变量\n this.wrapperElement.style.display = visible ? '' : 'none';\n\n return this;\n }\n\n /**\n * 自动根据容器大小 resize 画布\n */\n public forceFit() {\n // skip if already destroyed\n if (!this.destroyed) {\n // 注意第二参数用 true,意思是即时 autoFit = false,forceFit() 调用之后一样是适配容器\n const { width, height } = getChartSize(this.ele, true, this.width, this.height);\n this.changeSize(width, height);\n }\n }\n\n private updateCanvasStyle() {\n modifyCSS(this.canvas.get('el'), {\n display: 'inline-block',\n verticalAlign: 'middle',\n });\n }\n\n private bindAutoFit() {\n if (this.autoFit) {\n window.addEventListener('resize', this.onResize);\n }\n }\n\n private unbindAutoFit() {\n if (this.autoFit) {\n window.removeEventListener('resize', this.onResize);\n }\n }\n\n /**\n * when container size changed, change chart size props, and re-render.\n */\n private onResize = debounce(() => {\n this.forceFit();\n }, 300);\n}\n","import { each } from '@antv/util';\nimport { ComponentOption } from '../../interface';\nimport View from '../view';\n\n/** Component controller class type define */\nexport type ControllerCtor = new (view: View) => Controller;\n\n/**\n * Component Controller 规范需要定义的基类\n * 1. 规范的 option 输入\n * 2. 统一的信息获取 API\n * 3. 明确定义的组件事件(名称、数据)\n */\nexport abstract class Controller {\n /** 是否可见 */\n public visible: boolean = true;\n protected view: View;\n /** option 配置,不同组件有自己不同的配置结构 */\n protected option: O;\n /** 所有的 component */\n protected components: ComponentOption[] = [];\n\n constructor(view: View) {\n this.view = view;\n }\n\n public abstract get name(): string;\n\n /**\n * init the component\n */\n public abstract init();\n\n /**\n * render the components\n */\n public abstract render();\n\n /**\n * update the components\n */\n // public abstract update();\n\n /**\n * do layout\n */\n public abstract layout();\n\n /**\n * 组件的更新逻辑\n * - 根据字段为标识,为每一个组件生成一个 id,放到 option 中\n * - 更新的时候按照 id 去做 diff,然后对同的做处理\n * - 创建增加的\n * - 更新已有的\n * - 销毁删除的\n */\n public abstract update();\n\n /**\n * clear\n * @param includeOption 是否清空 option 配置项(used in annotation)\n */\n public clear(includeOption?: boolean) {\n // destroy all components\n each(this.components, (co: ComponentOption) => {\n co.component.destroy();\n });\n\n // clear all component instance\n this.components = [];\n }\n\n /**\n * destroy the component\n */\n public destroy() {\n this.clear();\n }\n\n /**\n * get all components\n * @returns components array\n */\n public getComponents(): ComponentOption[] {\n return this.components;\n }\n\n /**\n * change visibility of component\n * @param visible\n */\n public changeVisible(visible: boolean) {\n if (this.visible === visible) {\n return;\n }\n this.components.forEach((co: ComponentOption) => {\n if (visible) {\n co.component.show();\n } else {\n co.component.hide();\n }\n });\n this.visible = visible;\n }\n}\n","import { deepMix, find, get, isEqual, isFunction, mix, isString, isBoolean, flatten, isArray } from '@antv/util';\nimport { Crosshair, HtmlTooltip, IGroup } from '../../dependents';\nimport { Point, TooltipItem, TooltipOption } from '../../interface';\nimport { getAngleByPoint, getDistanceToCenter, getCoordinateClipCfg } from '../../util/coordinate';\nimport { polarToCartesian } from '../../util/graphics';\nimport { findItemsFromView } from '../../util/tooltip';\nimport { BBox } from '../../util/bbox';\nimport { Controller } from './base';\nimport Event from '../event';\nimport View from '../view';\n\n// Filter duplicates, use `name`, `color`, `value` and `title` property values as condition\nfunction uniq(items) {\n const uniqItems = [];\n for (let index = 0; index < items.length; index++) {\n const item = items[index];\n const result = find(uniqItems, (subItem) => {\n return (\n subItem.color === item.color &&\n subItem.name === item.name &&\n subItem.value === item.value &&\n subItem.title === item.title\n );\n });\n if (!result) {\n uniqItems.push(item);\n }\n }\n return uniqItems;\n}\n\n/** @ignore */\nexport default class Tooltip extends Controller {\n private tooltip;\n private tooltipMarkersGroup: IGroup;\n private tooltipCrosshairsGroup: IGroup;\n private xCrosshair;\n private yCrosshair;\n private guideGroup: IGroup;\n\n private isLocked: boolean = false;\n private items;\n private title: string;\n private point: Point;\n\n public get name(): string {\n return 'tooltip';\n }\n\n public init() { }\n\n private isVisible() {\n const option = this.view.getOptions().tooltip;\n return option !== false;\n }\n\n public render() { }\n\n /**\n * Shows tooltip\n * @param point\n */\n public showTooltip(point: Point) {\n this.point = point;\n if (!this.isVisible()) {\n // 如果设置 tooltip(false) 则始终不显示\n return;\n }\n const view = this.view;\n const items = this.getTooltipItems(point);\n if (!items.length) {\n // 无内容则不展示,同时 tooltip 需要隐藏\n this.hideTooltip();\n return;\n }\n const title = this.getTitle(items);\n const dataPoint = {\n x: items[0].x,\n y: items[0].y,\n }; // 数据点位置\n\n view.emit(\n 'tooltip:show',\n Event.fromData(view, 'tooltip:show', {\n items,\n title,\n ...point,\n })\n );\n\n const cfg = this.getTooltipCfg();\n const { follow, showMarkers, showCrosshairs, showContent, marker } = cfg;\n const lastItems = this.items;\n const lastTitle = this.title;\n if (!isEqual(lastTitle, title) || !isEqual(lastItems, items)) {\n // 内容发生变化了更新 tooltip\n view.emit(\n 'tooltip:change',\n Event.fromData(view, 'tooltip:change', {\n items,\n title,\n ...point,\n })\n );\n\n if (isFunction(showContent) ? showContent(items) : showContent) {\n // 展示 tooltip 内容框才渲染 tooltip\n if (!this.tooltip) {\n // 延迟生成\n this.renderTooltip();\n }\n this.tooltip.update(\n mix(\n {},\n cfg,\n {\n items: this.getItemsAfterProcess(items),\n title,\n },\n follow ? point : {}\n )\n );\n this.tooltip.show();\n }\n\n if (showMarkers) {\n // 展示 tooltipMarkers,tooltipMarkers 跟随数据\n this.renderTooltipMarkers(items, marker);\n }\n } else {\n // 内容未发生变化,则更新位置\n if (this.tooltip && follow) {\n this.tooltip.update(point);\n this.tooltip.show(); // tooltip 有可能被隐藏,需要保证显示状态\n }\n\n if (this.tooltipMarkersGroup) {\n this.tooltipMarkersGroup.show();\n }\n }\n\n this.items = items;\n this.title = title;\n\n if (showCrosshairs) {\n // 展示 tooltip 辅助线\n const isCrosshairsFollowCursor = get(cfg, ['crosshairs', 'follow'], false); // 辅助线是否要跟随鼠标\n this.renderCrosshairs(isCrosshairsFollowCursor ? point : dataPoint, cfg);\n }\n }\n\n public hideTooltip() {\n const { follow } = this.getTooltipCfg();\n if (!follow) {\n this.point = null;\n return;\n }\n // hide the tooltipMarkers\n const tooltipMarkersGroup = this.tooltipMarkersGroup;\n if (tooltipMarkersGroup) {\n tooltipMarkersGroup.hide();\n }\n\n // hide crosshairs\n const xCrosshair = this.xCrosshair;\n const yCrosshair = this.yCrosshair;\n if (xCrosshair) {\n xCrosshair.hide();\n }\n if (yCrosshair) {\n yCrosshair.hide();\n }\n\n const tooltip = this.tooltip;\n if (tooltip) {\n tooltip.hide();\n }\n\n this.view.emit('tooltip:hide', Event.fromData(this.view, 'tooltip:hide', {}));\n\n this.point = null;\n }\n\n /**\n * lockTooltip\n */\n public lockTooltip() {\n this.isLocked = true;\n if (this.tooltip) {\n // tooltip contianer 可捕获事件\n this.tooltip.setCapture(true);\n }\n }\n\n /**\n * unlockTooltip\n */\n public unlockTooltip() {\n this.isLocked = false;\n const cfg = this.getTooltipCfg();\n if (this.tooltip) {\n // 重置 capture 属性\n this.tooltip.setCapture(cfg.capture);\n }\n }\n\n /**\n * isTooltipLocked\n */\n public isTooltipLocked() {\n return this.isLocked;\n }\n\n public clear() {\n const { tooltip, xCrosshair, yCrosshair, tooltipMarkersGroup } = this;\n if (tooltip) {\n tooltip.hide();\n tooltip.clear();\n }\n\n if (xCrosshair) {\n xCrosshair.clear();\n }\n\n if (yCrosshair) {\n yCrosshair.clear();\n }\n\n if (tooltipMarkersGroup) {\n tooltipMarkersGroup.clear();\n }\n\n // 如果 customContent 不为空,就重新生成 tooltip\n if (tooltip?.get('customContent')) {\n this.tooltip.destroy();\n this.tooltip = null;\n }\n\n // title 和 items 需要清空, 否则 tooltip 内容会出现置空的情况\n // 即:需要走进 !isEqual(lastTitle, title) || !isEqual(lastItems, items) 的逻辑,更新 tooltip 的内容\n this.title = null;\n this.items = null;\n }\n\n public destroy() {\n if (this.tooltip) {\n this.tooltip.destroy();\n }\n if (this.xCrosshair) {\n this.xCrosshair.destroy();\n }\n if (this.yCrosshair) {\n this.yCrosshair.destroy();\n }\n\n if (this.guideGroup) {\n this.guideGroup.remove(true);\n }\n\n this.reset();\n }\n\n public reset() {\n this.items = null;\n this.title = null;\n this.tooltipMarkersGroup = null;\n this.tooltipCrosshairsGroup = null;\n this.xCrosshair = null;\n this.yCrosshair = null;\n this.tooltip = null;\n this.guideGroup = null;\n this.isLocked = false;\n this.point = null;\n }\n\n public changeVisible(visible: boolean) {\n if (this.visible === visible) {\n return;\n }\n const { tooltip, tooltipMarkersGroup, xCrosshair, yCrosshair } = this;\n if (visible) {\n if (tooltip) {\n tooltip.show();\n }\n if (tooltipMarkersGroup) {\n tooltipMarkersGroup.show();\n }\n if (xCrosshair) {\n xCrosshair.show();\n }\n if (yCrosshair) {\n yCrosshair.show();\n }\n } else {\n if (tooltip) {\n tooltip.hide();\n }\n if (tooltipMarkersGroup) {\n tooltipMarkersGroup.hide();\n }\n if (xCrosshair) {\n xCrosshair.hide();\n }\n if (yCrosshair) {\n yCrosshair.hide();\n }\n }\n this.visible = visible;\n }\n\n public getTooltipItems(point: Point) {\n let items = this.findItemsFromView(this.view, point);\n if (items.length) {\n // 三层\n items = flatten(items);\n for (const itemArr of items) {\n for (const item of itemArr) {\n const { x, y } = item.mappingData;\n item.x = isArray(x) ? x[x.length - 1] : x;\n item.y = isArray(y) ? y[y.length - 1] : y;\n }\n }\n\n const { shared } = this.getTooltipCfg();\n // shared: false 代表只显示当前拾取到的 shape 的数据,但是一个 view 会有多个 Geometry,所以有可能会拾取到多个 shape\n if (shared === false && items.length > 1) {\n let snapItem = items[0];\n let min = Math.abs(point.y - snapItem[0].y);\n for (const aItem of items) {\n const yDistance = Math.abs(point.y - aItem[0].y);\n if (yDistance <= min) {\n snapItem = aItem;\n min = yDistance;\n }\n }\n items = [snapItem];\n }\n\n return uniq(flatten(items));\n }\n\n return [];\n }\n\n public layout() { }\n\n public update() {\n if (this.point) {\n this.showTooltip(this.point);\n }\n\n if (this.tooltip) {\n // #2279 修复resize之后tooltip越界的问题\n // 确保tooltip已经创建的情况下\n const canvas = this.view.getCanvas();\n // TODO 逍为 tooltip 的区域不应该是 canvas,而应该是整个 特别是在图比较小的时候\n // 更新 region\n this.tooltip.set('region', {\n start: { x: 0, y: 0 },\n end: { x: canvas.get('width'), y: canvas.get('height') },\n });\n }\n }\n\n /**\n * 当前鼠标点是在 enter tooltip 中\n * @param point\n */\n public isCursorEntered(point: Point) {\n // 是可捕获的,并且点在 tooltip dom 上\n if (this.tooltip) {\n const el: HTMLElement = this.tooltip.getContainer();\n const capture = this.tooltip.get('capture');\n\n if (el && capture) {\n const { x, y, width, height } = el.getBoundingClientRect();\n return new BBox(x, y, width, height).isPointIn(point);\n }\n }\n\n return false;\n }\n\n // 获取 tooltip 配置,因为用户可能会通过 view.tooltip() 重新配置 tooltip,所以就不做缓存,每次直接读取\n public getTooltipCfg() {\n const view = this.view;\n const option = view.getOptions().tooltip;\n const processOption = this.processCustomContent(option);\n const theme = view.getTheme();\n const defaultCfg = get(theme, ['components', 'tooltip'], {});\n const enterable = get(processOption, 'enterable', defaultCfg.enterable);\n return deepMix({}, defaultCfg, processOption, {\n capture: enterable || this.isLocked ? true : false,\n });\n }\n\n // process customContent\n protected processCustomContent(option: TooltipOption) {\n if (isBoolean(option) || !get(option, 'customContent')) {\n return option;\n }\n const currentCustomContent = option.customContent;\n const customContent = (title: string, items: any[]) => {\n const content = currentCustomContent(title, items) || '';\n return isString(content) ? '
      ' + content + '
      ' : content;\n };\n return {\n ...option,\n customContent,\n };\n }\n\n private getTitle(items) {\n const title = items[0].title || items[0].name;\n this.title = title;\n\n return title;\n }\n\n private renderTooltip() {\n const canvas = this.view.getCanvas();\n const region = {\n start: { x: 0, y: 0 },\n end: { x: canvas.get('width'), y: canvas.get('height') },\n };\n\n const cfg = this.getTooltipCfg();\n const tooltip = new HtmlTooltip({\n parent: canvas.get('el').parentNode,\n region,\n ...cfg,\n visible: false,\n crosshairs: null,\n });\n\n tooltip.init();\n this.tooltip = tooltip;\n }\n\n private renderTooltipMarkers(items, marker) {\n const tooltipMarkersGroup = this.getTooltipMarkersGroup();\n const rootView = this.view.getRootView();\n const { limitInPlot } = rootView;\n for (const item of items) {\n const { x, y } = item;\n\n // 有裁剪就剪切\n if (limitInPlot || tooltipMarkersGroup?.getClip()) {\n const { type, attrs } = getCoordinateClipCfg(rootView.getCoordinate());\n tooltipMarkersGroup?.setClip({\n type,\n attrs,\n });\n } else {\n // 清除已有的 clip\n tooltipMarkersGroup?.setClip(undefined);\n }\n\n const theme = this.view.getTheme();\n const markerDefaultCfg = get(theme, ['components', 'tooltip', 'marker'], {});\n\n const attrs = {\n fill: item.color,\n symbol: 'circle',\n shadowColor: item.color,\n ...(isFunction(marker) ? { ...markerDefaultCfg, ...marker(item) } : marker),\n x,\n y,\n };\n\n tooltipMarkersGroup.addShape('marker', {\n attrs,\n });\n }\n }\n\n private renderCrosshairs(point: Point, cfg) {\n const crosshairsType = get(cfg, ['crosshairs', 'type'], 'x'); // 默认展示 x 轴上的辅助线\n if (crosshairsType === 'x') {\n if (this.yCrosshair) {\n this.yCrosshair.hide();\n }\n this.renderXCrosshairs(point, cfg);\n } else if (crosshairsType === 'y') {\n if (this.xCrosshair) {\n this.xCrosshair.hide();\n }\n this.renderYCrosshairs(point, cfg);\n } else if (crosshairsType === 'xy') {\n this.renderXCrosshairs(point, cfg);\n this.renderYCrosshairs(point, cfg);\n }\n }\n\n // 渲染 x 轴上的 tooltip 辅助线\n private renderXCrosshairs(point: Point, tooltipCfg) {\n const coordinate = this.getViewWithGeometry(this.view).getCoordinate();\n let start;\n let end;\n if (coordinate.isRect) {\n if (coordinate.isTransposed) {\n start = {\n x: coordinate.start.x,\n y: point.y,\n };\n end = {\n x: coordinate.end.x,\n y: point.y,\n };\n } else {\n start = {\n x: point.x,\n y: coordinate.end.y,\n };\n end = {\n x: point.x,\n y: coordinate.start.y,\n };\n }\n } else {\n // 极坐标下 x 轴上的 crosshairs 表现为半径\n const angle = getAngleByPoint(coordinate, point);\n const center = coordinate.getCenter();\n const radius = coordinate.getRadius();\n end = polarToCartesian(center.x, center.y, radius, angle);\n start = center;\n }\n\n const cfg = deepMix(\n {\n start,\n end,\n container: this.getTooltipCrosshairsGroup(),\n },\n get(tooltipCfg, 'crosshairs', {}),\n this.getCrosshairsText('x', point, tooltipCfg)\n );\n delete cfg.type; // 与 Crosshairs 组件的 type 冲突故删除\n\n let xCrosshair = this.xCrosshair;\n if (xCrosshair) {\n xCrosshair.update(cfg);\n } else {\n xCrosshair = new Crosshair.Line(cfg);\n xCrosshair.init();\n }\n xCrosshair.render();\n xCrosshair.show();\n this.xCrosshair = xCrosshair;\n }\n\n // 渲染 y 轴上的辅助线\n private renderYCrosshairs(point: Point, tooltipCfg) {\n const coordinate = this.getViewWithGeometry(this.view).getCoordinate();\n let cfg;\n let type;\n if (coordinate.isRect) {\n let start;\n let end;\n if (coordinate.isTransposed) {\n start = {\n x: point.x,\n y: coordinate.end.y,\n };\n end = {\n x: point.x,\n y: coordinate.start.y,\n };\n } else {\n start = {\n x: coordinate.start.x,\n y: point.y,\n };\n end = {\n x: coordinate.end.x,\n y: point.y,\n };\n }\n cfg = {\n start,\n end,\n };\n type = 'Line';\n } else {\n // 极坐标下 y 轴上的 crosshairs 表现为圆弧\n cfg = {\n center: coordinate.getCenter(),\n // @ts-ignore\n radius: getDistanceToCenter(coordinate, point),\n startAngle: coordinate.startAngle,\n endAngle: coordinate.endAngle,\n };\n type = 'Circle';\n }\n\n cfg = deepMix(\n {\n container: this.getTooltipCrosshairsGroup(),\n },\n cfg,\n get(tooltipCfg, 'crosshairs', {}),\n this.getCrosshairsText('y', point, tooltipCfg)\n );\n delete cfg.type; // 与 Crosshairs 组件的 type 冲突故删除\n\n let yCrosshair = this.yCrosshair;\n if (yCrosshair) {\n // 如果坐标系发生直角坐标系与极坐标的切换操作\n if (\n (coordinate.isRect && yCrosshair.get('type') === 'circle') ||\n (!coordinate.isRect && yCrosshair.get('type') === 'line')\n ) {\n yCrosshair = new Crosshair[type](cfg);\n yCrosshair.init();\n } else {\n yCrosshair.update(cfg);\n }\n } else {\n yCrosshair = new Crosshair[type](cfg);\n yCrosshair.init();\n }\n yCrosshair.render();\n yCrosshair.show();\n this.yCrosshair = yCrosshair;\n }\n\n private getCrosshairsText(type, point: Point, tooltipCfg) {\n let textCfg = get(tooltipCfg, ['crosshairs', 'text']);\n const follow = get(tooltipCfg, ['crosshairs', 'follow']);\n const items = this.items;\n\n if (textCfg) {\n const view = this.getViewWithGeometry(this.view);\n // 需要展示文本\n const firstItem = items[0];\n const xScale = view.getXScale();\n const yScale = view.getYScales()[0];\n let xValue;\n let yValue;\n if (follow) {\n // 如果需要跟随鼠标移动,就需要将当前鼠标坐标点转换为对应的数值\n const invertPoint = this.view.getCoordinate().invert(point);\n xValue = xScale.invert(invertPoint.x); // 转换为原始值\n yValue = yScale.invert(invertPoint.y); // 转换为原始值\n } else {\n xValue = firstItem.data[xScale.field];\n yValue = firstItem.data[yScale.field];\n }\n\n const content = type === 'x' ? xValue : yValue;\n if (isFunction(textCfg)) {\n textCfg = textCfg(type, content, items, point);\n } else {\n textCfg.content = content;\n }\n\n return {\n text: textCfg,\n };\n }\n }\n\n // 获取存储 tooltipMarkers 和 crosshairs 的容器\n private getGuideGroup() {\n if (!this.guideGroup) {\n const foregroundGroup = this.view.foregroundGroup;\n this.guideGroup = foregroundGroup.addGroup({\n name: 'tooltipGuide',\n capture: false,\n });\n }\n\n return this.guideGroup;\n }\n\n // 获取 tooltipMarkers 存储的容器\n private getTooltipMarkersGroup() {\n let tooltipMarkersGroup = this.tooltipMarkersGroup;\n if (tooltipMarkersGroup && !tooltipMarkersGroup.destroyed) {\n tooltipMarkersGroup.clear();\n tooltipMarkersGroup.show();\n } else {\n tooltipMarkersGroup = this.getGuideGroup().addGroup({\n name: 'tooltipMarkersGroup',\n });\n tooltipMarkersGroup.toFront();\n this.tooltipMarkersGroup = tooltipMarkersGroup;\n }\n return tooltipMarkersGroup;\n }\n\n // 获取 tooltip crosshairs 存储的容器\n private getTooltipCrosshairsGroup() {\n let tooltipCrosshairsGroup = this.tooltipCrosshairsGroup;\n if (!tooltipCrosshairsGroup) {\n tooltipCrosshairsGroup = this.getGuideGroup().addGroup({\n name: 'tooltipCrosshairsGroup',\n capture: false,\n });\n tooltipCrosshairsGroup.toBack();\n this.tooltipCrosshairsGroup = tooltipCrosshairsGroup;\n }\n return tooltipCrosshairsGroup;\n }\n\n private findItemsFromView(view: View, point: Point) {\n if (view.getOptions().tooltip === false) {\n // 如果 view 关闭了 tooltip\n return [];\n }\n\n const tooltipCfg = this.getTooltipCfg();\n let result = findItemsFromView(view, point, tooltipCfg);\n // 递归查找,并合并结果\n for (const childView of view.views) {\n result = result.concat(this.findItemsFromView(childView, point));\n }\n\n return result;\n }\n\n // FIXME: hack 方法\n // 因为 tooltip 的交互是挂载在 Chart 上,所以当chart 上没有绘制 Geometry 的时候,就查找不到数据,并且绘图区域同子 View 的区域不同\n private getViewWithGeometry(view) {\n if (view.geometries.length) {\n return view;\n }\n\n return find(view.views, (childView) => this.getViewWithGeometry(childView));\n }\n\n /**\n * 根据用户配置的 items 配置,来进行用户自定义的处理,并返回最终的 items\n * 默认不做任何处理\n */\n private getItemsAfterProcess(originalItems: TooltipItem[]): TooltipItem[] {\n const { customItems } = this.getTooltipCfg();\n const fn = customItems ? customItems : (v) => v;\n\n return fn(originalItems);\n }\n}\n","import { IGroup, IShape } from '../../dependents';\nimport { GAnimateCfg } from '../../interface';\nimport { AnimateExtraCfg } from '../interface';\n\n/** @ignore */\ninterface AnimationMap {\n [key: string]: Animation;\n}\n\ntype Animation = (element: IGroup | IShape, animateCfg: GAnimateCfg, cfg: AnimateExtraCfg) => void;\n\nconst ANIMATIONS_MAP: AnimationMap = {};\n\n/**\n * 根据名称获取对应的动画执行函数\n * @param type 动画函数名称\n */\nexport function getAnimation(type: string) {\n return ANIMATIONS_MAP[type.toLowerCase()];\n}\n\n/**\n * 注册动画执行函数\n * @param type 动画执行函数名称\n * @param animation 动画执行函数\n */\nexport function registerAnimation(type: string, animation: Animation) {\n ANIMATIONS_MAP[type.toLowerCase()] = animation;\n}\n","import { deepMix, get, isFunction } from '@antv/util';\nimport { FIELD_ORIGIN } from '../constant';\nimport { Coordinate, IGroup, IShape } from '../dependents';\nimport { AnimateCfg, Data, Datum, GAnimateCfg, Point } from '../interface';\nimport { AnimateExtraCfg } from './interface';\n\nimport { getAnimation } from './animation';\n\n// 默认的动画参数配置\nexport const DEFAULT_ANIMATE_CFG = {\n appear: {\n duration: 450,\n easing: 'easeQuadOut',\n }, // 初始入场动画配置\n update: {\n duration: 400,\n easing: 'easeQuadInOut',\n }, // 更新时发生变更的动画配置\n enter: {\n duration: 400,\n easing: 'easeQuadInOut',\n }, // 更新时新增元素的入场动画配置\n leave: {\n duration: 350,\n easing: 'easeQuadIn',\n }, // 更新时销毁动画配置\n};\n\n// 各个 Geometry 默认的动画执行函数\nconst GEOMETRY_ANIMATE_CFG = {\n interval: (coordinate: Coordinate) => {\n return {\n enter: {\n animation: coordinate.isRect ? (coordinate.isTransposed ? 'scale-in-x' : 'scale-in-y') : 'fade-in',\n },\n update: {\n animation: coordinate.isPolar && coordinate.isTransposed ? 'sector-path-update' : null,\n },\n leave: {\n animation: 'fade-out',\n },\n };\n },\n line: {\n enter: {\n animation: 'fade-in',\n },\n leave: {\n animation: 'fade-out',\n },\n },\n path: {\n enter: {\n animation: 'fade-in',\n },\n leave: {\n animation: 'fade-out',\n },\n },\n point: {\n appear: {\n animation: 'zoom-in',\n },\n enter: {\n animation: 'zoom-in',\n },\n leave: {\n animation: 'zoom-out',\n },\n },\n area: {\n enter: {\n animation: 'fade-in',\n },\n leave: {\n animation: 'fade-out',\n },\n },\n polygon: {\n enter: {\n animation: 'fade-in',\n },\n leave: {\n animation: 'fade-out',\n },\n },\n schema: {\n enter: {\n animation: 'fade-in',\n },\n leave: {\n animation: 'fade-out',\n },\n },\n edge: {\n enter: {\n animation: 'fade-in',\n },\n leave: {\n animation: 'fade-out',\n },\n },\n label: {\n appear: {\n animation: 'fade-in',\n delay: 450,\n },\n enter: {\n animation: 'fade-in',\n },\n update: {\n animation: 'position-update',\n },\n leave: {\n animation: 'fade-out',\n },\n },\n};\n\n// 各个 Geometry 默认的群组出场动画\nconst GEOMETRY_GROUP_APPEAR_ANIMATION = {\n line: () => {\n return {\n animation: 'wave-in',\n };\n },\n area: () => {\n return {\n animation: 'wave-in',\n };\n },\n path: () => {\n return {\n animation: 'fade-in',\n };\n },\n interval(coordinate: Coordinate) {\n let animation;\n\n if (coordinate.isRect) {\n animation = coordinate.isTransposed ? 'grow-in-x' : 'grow-in-y';\n } else {\n animation = 'grow-in-xy';\n if (coordinate.isPolar && coordinate.isTransposed) {\n // pie chart\n animation = 'wave-in';\n }\n }\n return {\n animation,\n };\n },\n schema: (coordinate) => {\n let animation;\n if (coordinate.isRect) {\n animation = coordinate.isTransposed ? 'grow-in-x' : 'grow-in-y';\n } else {\n animation = 'grow-in-xy';\n }\n return {\n animation,\n };\n },\n polygon: () => {\n return {\n animation: 'fade-in',\n duration: 500,\n };\n },\n edge: () => {\n return {\n animation: 'fade-in',\n };\n },\n};\n\n// 解析用户的动画配置\nfunction parseAnimateConfig(animateCfg: AnimateCfg, data: Data | Datum): GAnimateCfg {\n return {\n delay: isFunction(animateCfg.delay) ? animateCfg.delay(data) : animateCfg.delay,\n easing: isFunction(animateCfg.easing) ? animateCfg.easing(data) : animateCfg.easing,\n duration: isFunction(animateCfg.duration) ? animateCfg.duration(data) : animateCfg.duration,\n callback: animateCfg.callback,\n repeat: animateCfg.repeat,\n };\n}\n\n/**\n * @ignore\n * 获取 elementName 对应的动画配置,当声明了 `animateType`,则返回 `animateType` 对应的动画配置\n * @param elementName 元素名称\n * @param coordinate 做表弟类型\n * @param animateType 可选,动画类型\n */\nexport function getDefaultAnimateCfg(elementName: string, coordinate: Coordinate, animateType?: string) {\n let animateCfg = GEOMETRY_ANIMATE_CFG[elementName];\n\n if (animateCfg) {\n if (isFunction(animateCfg)) {\n animateCfg = animateCfg(coordinate);\n }\n animateCfg = deepMix({}, DEFAULT_ANIMATE_CFG, animateCfg);\n\n if (animateType) {\n return animateCfg[animateType];\n }\n }\n return animateCfg;\n}\n\n/**\n * @ignore\n * 工具函数\n * 根据用户传入的配置为 shape 执行动画\n * @param shape 执行动画的图形元素\n * @param animateCfg 动画配置\n * @param cfg 额外的信息\n */\nexport function doAnimate(shape: IGroup | IShape, animateCfg: AnimateCfg, cfg: AnimateExtraCfg) {\n const data = get(shape.get('origin'), 'data', FIELD_ORIGIN);\n const animation = animateCfg.animation; // 获取动画执行函数\n const parsedAnimateCfg = parseAnimateConfig(animateCfg, data);\n if (animation) {\n // 用户声明了动画执行函数\n const animateFunction = getAnimation(animation);\n if (animateFunction) {\n animateFunction(shape, parsedAnimateCfg, cfg);\n }\n } else {\n // 没有声明,则根据 toAttrs 做差值动画\n shape.animate(cfg.toAttrs, parsedAnimateCfg);\n }\n}\n\n/**\n * @ignore\n * 执行 Geometry 群组入场动画\n * @param container 执行群组动画的图形元素\n * @param animateCfg 动画配置\n * @param geometryType geometry 类型\n * @param coordinate 坐标系对象\n * @param minYPoint y 轴最小值对应的画布坐标点\n */\nexport function doGroupAppearAnimate(\n container: IGroup,\n animateCfg: AnimateCfg,\n geometryType: string,\n coordinate: Coordinate,\n minYPoint: Point\n) {\n if (GEOMETRY_GROUP_APPEAR_ANIMATION[geometryType]) {\n const defaultCfg = GEOMETRY_GROUP_APPEAR_ANIMATION[geometryType](coordinate);\n const animation = getAnimation(get(defaultCfg, 'animation', ''));\n if (animation) {\n const cfg = {\n ...DEFAULT_ANIMATE_CFG.appear,\n ...defaultCfg,\n ...animateCfg,\n };\n container.stopAnimate(); // 先结束当前 container 动画\n animation(container, cfg, {\n coordinate,\n minYPoint,\n toAttrs: null,\n });\n }\n }\n}\n","/**\n * Name of Background Shape\n */\nexport const BACKGROUND_SHAPE = 'element-background';\n","import { deepMix, each, get, isArray, isEmpty, isEqual, isFunction, isString } from '@antv/util';\n// 暂未发包\n// @ts-ignore\nimport { propagationDelegate } from '@antv/component';\nimport { doAnimate } from '../../animate';\nimport Base from '../../base';\nimport { BBox, IGroup, IShape } from '../../dependents';\nimport { AnimateOption, Datum, ShapeFactory, ShapeInfo, StateCfg } from '../../interface';\nimport { getReplaceAttrs } from '../../util/graphics';\nimport Geometry from '../base';\nimport { GEOMETRY_LIFE_CIRCLE } from '../../constant';\nimport { BACKGROUND_SHAPE } from '../shape/constant';\n\n/** Element 构造函数传入参数类型 */\ninterface ElementCfg {\n /** 用于创建各种 shape 的工厂对象 */\n shapeFactory: ShapeFactory;\n /** shape 容器 */\n container: IGroup;\n /** element 的索引 */\n elementIndex?: number;\n /** 虚拟 group,用户可以不传入 */\n offscreenGroup?: IGroup;\n /** 是否可见 */\n visible?: boolean;\n}\n\n/**\n * Element 图形元素。\n * 定义:在 G2 中,我们会将数据通过图形语法映射成不同的图形,比如点图,数据集中的每条数据会对应一个点,柱状图每条数据对应一个柱子,线图则是一组数据对应一条折线,Element 即一条/一组数据对应的图形元素,它代表一条数据或者一个数据集,在图形层面,它可以是单个 Shape 也可以是多个 Shape,我们称之为图形元素。\n */\nexport default class Element extends Base {\n /** 用于创建各种 shape 的工厂对象 */\n public shapeFactory: ShapeFactory;\n /** shape 容器 */\n public container: IGroup;\n /** element 索引 */\n public elementIndex: number;\n /** 最后创建的图形对象 */\n public shape: IShape | IGroup;\n /** shape 的动画配置 */\n public animate: AnimateOption | boolean;\n\n // 非构造函数属性,需要外部赋值\n /** element 对应的 Geometry 实例 */\n public geometry: Geometry;\n /** 保存 shape 对应的 label */\n public labelShape: IGroup[] = [];\n\n /** 绘制的 shape 类型 */\n private shapeType: string;\n\n /** shape 绘制需要的数据 */\n private model: ShapeInfo;\n /** 原始数据 */\n private data: Datum;\n // 存储当前开启的状态\n private states: string[] = [];\n private statesStyle;\n // 虚拟 Group\n private offscreenGroup: IGroup;\n\n constructor(cfg: ElementCfg) {\n super(cfg);\n\n const { shapeFactory, container, offscreenGroup, elementIndex, visible = true } = cfg;\n this.shapeFactory = shapeFactory;\n this.container = container;\n this.offscreenGroup = offscreenGroup;\n this.visible = visible;\n this.elementIndex = elementIndex;\n }\n\n /**\n * 绘制图形。\n * @param model 绘制数据。\n * @param isUpdate 可选,是否是更新发生后的绘制。\n */\n public draw(model: ShapeInfo, isUpdate: boolean = false) {\n this.model = model;\n this.data = model.data; // 存储原始数据\n this.shapeType = this.getShapeType(model);\n\n // 绘制图形\n this.drawShape(model, isUpdate);\n\n if (this.visible === false) {\n // 用户在初始化的时候声明 visible: false\n this.changeVisible(false);\n }\n }\n\n /**\n * 更新图形。\n * @param model 更新的绘制数据。\n */\n public update(model: ShapeInfo) {\n const { shapeFactory, shape } = this;\n if (!shape) {\n return;\n }\n\n // 更新数据\n this.model = model;\n this.data = model.data;\n this.shapeType = this.getShapeType(model);\n\n // step 1: 更新 shape 携带的信息\n this.setShapeInfo(shape, model);\n\n // step 2: 使用虚拟 Group 重新绘制 shape,然后更新当前 shape\n const offscreenGroup = this.getOffscreenGroup();\n const newShape = shapeFactory.drawShape(this.shapeType, model, offscreenGroup);\n // @ts-ignore\n newShape.cfg.data = this.data;\n // @ts-ignore\n newShape.cfg.origin = model;\n // label 需要使用\n newShape.cfg.element = this;\n\n // step 3: 同步 shape 样式\n this.syncShapeStyle(shape, newShape, this.getStates(), this.getAnimateCfg('update'));\n }\n\n /**\n * 销毁 element 实例。\n */\n public destroy() {\n const { shapeFactory, shape } = this;\n\n if (shape) {\n const animateCfg = this.getAnimateCfg('leave');\n if (animateCfg) {\n // 指定了动画配置则执行销毁动画\n doAnimate(shape, animateCfg, {\n coordinate: shapeFactory.coordinate,\n toAttrs: {\n ...shape.attr(),\n },\n });\n } else {\n // 否则直接销毁\n shape.remove(true);\n }\n }\n\n // reset\n this.states = [];\n this.shapeFactory = undefined;\n this.container = undefined;\n this.shape = undefined;\n this.animate = undefined;\n this.geometry = undefined;\n this.labelShape = [];\n this.model = undefined;\n this.data = undefined;\n this.offscreenGroup = undefined;\n this.statesStyle = undefined;\n\n super.destroy();\n }\n\n /**\n * 显示或者隐藏 element。\n * @param visible 是否可见。\n */\n public changeVisible(visible: boolean) {\n super.changeVisible(visible);\n\n if (visible) {\n if (this.shape) {\n this.shape.show();\n }\n if (this.labelShape) {\n this.labelShape.forEach((label: IGroup) => {\n label.show();\n });\n }\n } else {\n if (this.shape) {\n this.shape.hide();\n }\n if (this.labelShape) {\n this.labelShape.forEach((label: IGroup) => {\n label.hide();\n });\n }\n }\n }\n\n /**\n * 设置 Element 的状态。\n *\n * 目前 Element 开放三种状态:\n * 1. active\n * 2. selected\n * 3. inactive\n *\n * 这三种状态相互独立,可以进行叠加。\n *\n * 这三种状态的样式可在 [[Theme]] 主题中或者通过 `geometry.state()` 接口进行配置。\n *\n * ```ts\n * // 激活 active 状态\n * setState('active', true);\n * ```\n *\n * @param stateName 状态名\n * @param stateStatus 是否开启状态\n */\n public setState(stateName: string, stateStatus: boolean) {\n const { states, shapeFactory, model, shape, shapeType } = this;\n\n const index = states.indexOf(stateName);\n if (stateStatus) {\n // 开启状态\n if (index > -1) {\n // 该状态已经开启,则返回\n return;\n }\n states.push(stateName);\n if (stateName === 'active' || stateName === 'selected') {\n shape?.toFront();\n }\n } else {\n if (index === -1) {\n // 关闭状态,但是状态未设置过\n return;\n }\n states.splice(index, 1);\n if (stateName === 'active' || stateName === 'selected') {\n const { sortZIndex, zIndexReversed } = this.geometry;\n const idx = zIndexReversed ? this.geometry.elements.length - this.elementIndex : this.elementIndex;\n sortZIndex ? shape.setZIndex(idx) : shape.set('zIndex', idx);\n }\n }\n\n // 使用虚拟 group 重新绘制 shape,然后对这个 shape 应用状态样式后,更新当前 shape。\n const offscreenShape = shapeFactory.drawShape(shapeType, model, this.getOffscreenGroup());\n if (states.length) {\n // 应用当前状态\n this.syncShapeStyle(shape, offscreenShape, states, null);\n } else {\n // 如果没有状态,则需要恢复至原始状态\n this.syncShapeStyle(shape, offscreenShape, ['reset'], null);\n }\n\n offscreenShape.remove(true); // 销毁,减少内存占用\n\n const eventObject = {\n state: stateName,\n stateStatus,\n element: this,\n target: this.container,\n };\n this.container.emit('statechange', eventObject);\n // @ts-ignore\n propagationDelegate(this.shape, 'statechange', eventObject);\n }\n\n /**\n * 清空状量态,恢复至初始状态。\n */\n public clearStates() {\n const states = this.states;\n\n each(states, (state) => {\n this.setState(state, false);\n });\n\n this.states = [];\n }\n\n /**\n * 查询当前 Element 上是否已设置 `stateName` 对应的状态。\n * @param stateName 状态名称。\n * @returns true 表示存在,false 表示不存在。\n */\n public hasState(stateName: string): boolean {\n return this.states.includes(stateName);\n }\n\n /**\n * 获取当前 Element 上所有的状态。\n * @returns 当前 Element 上所有的状态数组。\n */\n public getStates(): string[] {\n return this.states;\n }\n\n /**\n * 获取 Element 对应的原始数据。\n * @returns 原始数据。\n */\n public getData(): Datum {\n return this.data;\n }\n\n /**\n * 获取 Element 对应的图形绘制数据。\n * @returns 图形绘制数据。\n */\n public getModel(): ShapeInfo {\n return this.model;\n }\n\n /**\n * 返回 Element 元素整体的 bbox,包含文本及文本连线(有的话)。\n * @returns 整体包围盒。\n */\n public getBBox(): BBox {\n const { shape, labelShape } = this;\n let bbox = {\n x: 0,\n y: 0,\n minX: 0,\n minY: 0,\n maxX: 0,\n maxY: 0,\n width: 0,\n height: 0,\n };\n if (shape) {\n bbox = shape.getCanvasBBox();\n }\n if (labelShape) {\n labelShape.forEach((label: IGroup) => {\n const labelBBox = label.getCanvasBBox();\n bbox.x = Math.min(labelBBox.x, bbox.x);\n bbox.y = Math.min(labelBBox.y, bbox.y);\n bbox.minX = Math.min(labelBBox.minX, bbox.minX);\n bbox.minY = Math.min(labelBBox.minY, bbox.minY);\n bbox.maxX = Math.max(labelBBox.maxX, bbox.maxX);\n bbox.maxY = Math.max(labelBBox.maxY, bbox.maxY);\n });\n }\n\n bbox.width = bbox.maxX - bbox.minX;\n bbox.height = bbox.maxY - bbox.minY;\n\n return bbox;\n }\n\n private getStatesStyle() {\n if (!this.statesStyle) {\n const { shapeType, geometry, shapeFactory } = this;\n const stateOption = geometry.stateOption;\n const defaultShapeType = shapeFactory.defaultShapeType;\n const stateTheme = shapeFactory.theme[shapeType] || shapeFactory.theme[defaultShapeType];\n this.statesStyle = deepMix({}, stateTheme, stateOption);\n }\n\n return this.statesStyle;\n }\n\n // 从主题中获取对应状态量的样式\n private getStateStyle(stateName: string, shapeKey?: string): StateCfg {\n const statesStyle = this.getStatesStyle();\n const stateCfg = get(statesStyle, [stateName, 'style'], {});\n const shapeStyle = stateCfg[shapeKey] || stateCfg;\n if (isFunction(shapeStyle)) {\n return shapeStyle(this);\n }\n\n return shapeStyle;\n }\n\n // 获取动画配置\n private getAnimateCfg(animateType: string) {\n const animate = this.animate;\n if (animate) {\n const cfg = animate[animateType];\n\n if (cfg) {\n // 增加动画的回调函数,如果外部传入了,则先执行外部,然后发射 geometry 的 animate 事件\n return {\n ...cfg,\n callback: () => {\n isFunction(cfg.callback) && cfg.callback();\n this.geometry?.emit(GEOMETRY_LIFE_CIRCLE.AFTER_DRAW_ANIMATE);\n },\n };\n }\n return cfg;\n }\n\n return null;\n }\n\n // 绘制图形\n private drawShape(model: ShapeInfo, isUpdate: boolean = false) {\n const { shapeFactory, container, shapeType } = this;\n\n // 自定义 shape 有可能返回空 shape\n this.shape = shapeFactory.drawShape(shapeType, model, container);\n\n if (this.shape) {\n this.setShapeInfo(this.shape, model); // 存储绘图数据\n // @ts-ignore\n const name = this.shape.cfg.name;\n // 附加 element 的 name, name 现在支持数组了,很好用了\n if (!name) {\n // 这个地方如果用户添加了 name, 则附加 name ,否则就添加自己的 name\n // @ts-ignore\n this.shape.cfg.name = ['element', this.shapeFactory.geometryType];\n } else if (isString(name)) {\n // @ts-ignore\n this.shape.cfg.name = ['element', name];\n }\n // 执行入场动画\n const animateType = isUpdate ? 'enter' : 'appear';\n const animateCfg = this.getAnimateCfg(animateType);\n if (animateCfg) {\n // 开始执行动画的生命周期\n this.geometry?.emit(GEOMETRY_LIFE_CIRCLE.BEFORE_DRAW_ANIMATE);\n\n doAnimate(this.shape, animateCfg, {\n coordinate: shapeFactory.coordinate,\n toAttrs: {\n ...this.shape.attr(),\n },\n });\n }\n }\n }\n\n // 获取虚拟 Group\n private getOffscreenGroup() {\n if (!this.offscreenGroup) {\n const GroupCtor = this.container.getGroupBase(); // 获取分组的构造函数\n this.offscreenGroup = new GroupCtor({});\n }\n\n return this.offscreenGroup;\n }\n\n // 设置 shape 上需要携带的信息\n private setShapeInfo(shape: IShape | IGroup, data: ShapeInfo) {\n // @ts-ignore\n shape.cfg.origin = data;\n // @ts-ignore\n shape.cfg.element = this;\n if (shape.isGroup()) {\n const children = shape.get('children');\n children.forEach((child) => {\n this.setShapeInfo(child, data);\n });\n }\n }\n\n // 更新当前 shape 的样式\n private syncShapeStyle(\n sourceShape: IGroup | IShape,\n targetShape: IGroup | IShape,\n states: string[] = [],\n animateCfg,\n index: number = 0\n ) {\n if (!sourceShape || !targetShape) {\n return;\n }\n // 所有的 shape 都需要同步 clip\n const clip = sourceShape.get('clipShape');\n const newClip = targetShape.get('clipShape');\n\n this.syncShapeStyle(clip, newClip, states, animateCfg);\n\n if (sourceShape.isGroup()) {\n const children = sourceShape.get('children');\n const newChildren = targetShape.get('children');\n for (let i = 0; i < children.length; i++) {\n this.syncShapeStyle(children[i], newChildren[i], states, animateCfg, index + i);\n }\n } else {\n if (!isEmpty(states) && !isEqual(states, ['reset'])) {\n let name = sourceShape.get('name');\n if (isArray(name)) {\n // 会附加 element 的 name\n name = name[1];\n }\n\n each(states, (state) => {\n // background shape 不进行状态样式设置\n if (targetShape.get('name') !== BACKGROUND_SHAPE) {\n const style = this.getStateStyle(state, name || index); // 如果用户没有设置 name,则默认根据索引值\n targetShape.attr(style);\n }\n });\n }\n const newAttrs = getReplaceAttrs(sourceShape as IShape, targetShape as IShape);\n\n if (this.animate) {\n if (animateCfg) {\n this.geometry?.emit(GEOMETRY_LIFE_CIRCLE.BEFORE_DRAW_ANIMATE);\n // 需要进行动画\n doAnimate(sourceShape, animateCfg, {\n coordinate: this.shapeFactory.coordinate,\n toAttrs: newAttrs,\n shapeModel: this.model,\n });\n } else if (!isEmpty(states)) {\n sourceShape.stopAnimate();\n sourceShape.animate(newAttrs, {\n duration: 300,\n });\n } else {\n sourceShape.attr(newAttrs);\n }\n } else {\n sourceShape.attr(newAttrs);\n }\n }\n }\n\n private getShapeType(model: ShapeInfo) {\n const shape = get(model, 'shape');\n return isArray(shape) ? shape[0] : shape;\n }\n}\n","import { BBox, IGroup, IShape } from '../../dependents';\nimport { LooseObject } from '../../interface';\nimport { GeometryLabelConstructor } from './base';\nimport { LabelItem } from './interface';\n\n/**\n * label 布局函数定义\n * @param items 存储每个 label 的详细信息\n * @param labels 所有的 labels 图形实例\n * @param shapes 所有 label 对应的图形元素实例\n * @param region 画布区域\n * @param cfg 用于存储各个布局函数开放给用户的配置数据\n */\ntype GeometryLabelsLayoutFn = (\n items: LabelItem[],\n labels: IGroup[],\n shapes: IShape[] | IGroup[],\n region: BBox,\n cfg?: LooseObject\n) => void;\n\nconst GEOMETRY_LABELS_MAP: Record = {};\nconst GEOMETRY_LABELS_LAYOUT_MAP: Record = {};\n\n/**\n * 获取 `type` 对应的 [[GeometryLabel]] 类\n * @param type\n * @returns\n */\nexport function getGeometryLabel(type: string): GeometryLabelConstructor {\n return GEOMETRY_LABELS_MAP[type.toLowerCase()];\n}\n\n/**\n * 注册定义的 GeometryLabel 类\n * @param type GeometryLabel 类型名称\n * @param ctor GeometryLabel 类\n */\nexport function registerGeometryLabel(type: string, ctor: GeometryLabelConstructor) {\n GEOMETRY_LABELS_MAP[type.toLowerCase()] = ctor;\n}\n\n/**\n * 获取 `type` 对应的 [[GeometryLabelsLayoutFn]] label 布局函数\n * @param type 布局函数名称\n * @returns\n */\nexport function getGeometryLabelLayout(type: string): GeometryLabelsLayoutFn {\n return GEOMETRY_LABELS_LAYOUT_MAP[type.toLowerCase()];\n}\n\n/**\n * 注册定义的 label 布局函数\n * @param type label 布局函数名称\n * @param layoutFn label 布局函数\n */\nexport function registerGeometryLabelLayout(type: string, layoutFn: GeometryLabelsLayoutFn) {\n GEOMETRY_LABELS_LAYOUT_MAP[type.toLowerCase()] = layoutFn;\n}\n","import { LooseObject } from '@antv/g-svg';\nimport { parsePathString } from '@antv/path-util';\nimport { deepMix, get, upperFirst } from '@antv/util';\nimport { IGroup, IShape, PathCommand } from '../../dependents';\nimport {\n Point,\n RegisterShape,\n RegisterShapeFactory,\n Shape,\n ShapeFactory,\n ShapeInfo,\n ShapeMarkerAttrs,\n ShapeMarkerCfg,\n ShapePoint,\n} from '../../interface';\n\nimport { convertNormalPath, convertPolarPath } from './util/path';\n\n/** ShapeFactory 基类 */\nconst ShapeFactoryBase = {\n /** 坐标系对象 */\n coordinate: null,\n /** 默认绘制的 Shape 类型 */\n defaultShapeType: null,\n /** 主题样式 */\n theme: null,\n /**\n * 获取 shape 绘制需要的关键点\n * @param shapeType shape 类型\n * @param shapePoint 每条数据映射后的坐标点以及 size 数值\n * @returns 图形关键点信息\n */\n getShapePoints(shapeType: string, shapePoint: ShapePoint) {\n const shape = this.getShape(shapeType);\n if (shape.getPoints) {\n return shape.getPoints(shapePoint);\n }\n\n return this.getDefaultPoints(shapePoint);\n },\n /**\n * 根据 shape 类型获取具体的 shape 实例\n * @param shapeType string shape 的类型\n * @returns\n */\n getShape(shapeType: string): Shape {\n const shape = this[shapeType] || this[this.defaultShapeType];\n shape.coordinate = this.coordinate;\n\n return shape;\n },\n /**\n * 获取 shape 的默认关键点\n * @override\n */\n getDefaultPoints() {\n return [];\n },\n /**\n * 获取 shape 的默认绘制样式 (内置的 shapeFactory 均有注册默认样式)\n */\n getDefaultStyle(geometryTheme: LooseObject): LooseObject {\n return get(geometryTheme, [this.defaultShapeType, 'default', 'style'], {});\n },\n /**\n * 获取 shape 对应的缩略图配置信息。\n * @param shapeType shape 类型\n * @param color 颜色\n * @param isInPolar 是否在极坐标系下\n * @returns 返回缩略图 marker 配置。\n */\n getMarker(shapeType: string, markerCfg: ShapeMarkerCfg): ShapeMarkerAttrs {\n let shape = this.getShape(shapeType);\n\n if (!shape.getMarker) {\n const defaultShapeType = this.defaultShapeType;\n shape = this.getShape(defaultShapeType);\n }\n\n const theme = this.theme;\n const shapeStyle = get(theme, [shapeType, 'default'], {});\n const markerStyle = shape.getMarker(markerCfg);\n\n return deepMix({}, shapeStyle, markerStyle);\n },\n /**\n * 绘制 shape\n * @override\n * @param shapeType 绘制的 shape 类型\n * @param cfg 绘制 shape 需要的信息\n * @param element Element 实例\n * @returns\n */\n drawShape(shapeType: string, cfg: ShapeInfo, container: IGroup): IShape | IGroup {\n const shape = this.getShape(shapeType);\n return shape.draw(cfg, container);\n },\n};\n\n/** Shape 基类 */\nconst ShapeBase = {\n /** 坐标系对象 */\n coordinate: null,\n /**\n * 将归一化的 path 转换成坐标系下的 path\n * @param path 归一化的路径\n * @returns\n */\n parsePath(path: string): PathCommand[] {\n const coordinate = this.coordinate;\n let parsedPath = parsePathString(path);\n if (coordinate.isPolar) {\n parsedPath = convertPolarPath(coordinate, parsedPath);\n } else {\n parsedPath = convertNormalPath(coordinate, parsedPath);\n }\n return parsedPath;\n },\n /**\n * 将归一化的坐标转换成画布坐标\n * @param point 归一化的坐标点数据\n * @returns\n */\n parsePoint(point: Point): Point {\n const coordinate = this.coordinate;\n return coordinate.convert(point);\n },\n /**\n * 0~1 points 转 画布 points\n * @param points 节点集合\n * @returns\n */\n parsePoints(points: Point[]): Point[] {\n const coordinate = this.coordinate;\n return points.map((point) => {\n return coordinate.convert(point);\n });\n },\n /**\n * 绘制 shape\n * @override\n */\n draw(cfg: ShapeInfo, container: IGroup) {},\n};\n\nconst ShapeFactoryMap = {};\n\n/**\n * 注册 ShapeFactory。\n * @param factoryName ShapeFactory 名称,对应 Geometry 几何标记名称。\n * @param cfg 注册 ShapeFactory 需要覆写定义的属性。\n * @returns 返回 ShapeFactory 对象。\n */\nexport function registerShapeFactory(factoryName: string, cfg: RegisterShapeFactory): ShapeFactory {\n const className = upperFirst(factoryName);\n const geomObj = {\n ...ShapeFactoryBase,\n ...cfg,\n geometryType: factoryName,\n };\n ShapeFactoryMap[className] = geomObj;\n return geomObj;\n}\n\n/**\n * 注册 Shape。\n * @param factoryName 对应的 ShapeFactory 名称。\n * @param shapeType 注册的 shape 名称。\n * @param cfg 注册 Shape 需要覆写定义的属性。\n * @returns shape 返回注册的 shape 对象。\n */\nexport function registerShape(factoryName: string, shapeType: string, cfg: RegisterShape): Shape {\n const className = upperFirst(factoryName);\n const factory = ShapeFactoryMap[className];\n const shapeObj = {\n ...ShapeBase,\n ...cfg,\n };\n factory[shapeType] = shapeObj;\n return shapeObj;\n}\n\n/**\n * 获取 factoryName 对应的 shapeFactory\n * @param factoryName\n * @returns shape factory\n */\nexport function getShapeFactory(factoryName: string): ShapeFactory {\n const className = upperFirst(factoryName);\n return ShapeFactoryMap[className];\n}\n","import { groupToMap } from '@antv/util';\nimport { Data } from '../../interface';\n\n/** @ignore */\nexport function group(data: Data, fields: string[], appendConditions: Record = {}) {\n if (!fields) {\n return [data];\n }\n const groups = groupToMap(data, fields);\n const array = [];\n if (fields.length === 1 && appendConditions[fields[0]]) {\n const values = appendConditions[fields[0]];\n for (const value of values) {\n const arr = groups[`_${value}`];\n if (arr) {\n // 可能存在用户设置 values ,但是数据中没有对应的字段,则这时候 arr 就为 null\n array.push(arr);\n }\n }\n } else {\n for (const k in groups) {\n if (groups.hasOwnProperty(k)) {\n const eachGroup = groups[k];\n array.push(eachGroup);\n }\n }\n }\n\n return array;\n}\n","import isArray from './is-array';\nimport isFunction from './is-function';\nimport groupBy from './group-by';\n\n/**\n * 将数据分组成 map\n * @param data \n * @param condition \n */\nexport default function groupToMap(data: any, condition: string[] | string | ((row: any) => string)) {\n if (!condition) {\n return {\n 0: data,\n };\n }\n if (!isFunction(condition)) {\n // 如果是字符串,则按照 a*b 风格成数组\n const paramscondition = isArray(condition) ? condition : condition.replace(/\\s+/g, '').split('*');\n condition = function (row) {\n let unique = '_'; // 避免出现数字作为Key的情况,会进行按照数字的排序\n \n // 根据字段列表的值,拼接成 key\n for (let i = 0, l = paramscondition.length; i < l; i++) {\n unique += row[paramscondition[i]] && row[paramscondition[i]].toString();\n }\n return unique;\n };\n }\n return groupBy(data, condition);\n}\n","import { isEqual, some } from '@antv/util';\nimport { ShapeInfo } from '../../interface';\n\n/**\n * @ignore\n * Determines whether model is change\n * @param currentModel\n * @param preModel\n * @returns\n */\nexport function isModelChange(currentModel: ShapeInfo, preModel: ShapeInfo) {\n return some(\n ['color', 'shape', 'size', 'x', 'y', 'isInCircle', 'data', 'style', 'defaultStyle', 'points', 'mappingData'],\n (key: string) => {\n return !isEqual(currentModel[key], preModel[key]);\n }\n );\n}\n","import { isArray } from '@antv/util';\n\n/** @ignore */\nexport function parseFields(field: string | string[]): string[] {\n if (isArray(field)) {\n return field;\n }\n\n return field.split('*');\n}\n","/**\n * 对比当前元素和之前的元素,返回 added, updated, removed\n * @param keyItem 之前的元素的,按照 key-item 的 object 的形式存储\n * @param keys 现在的元素,按照 array 的形式存储\n * @returns 由 added, updated, removed array 构成的 object\n */\nexport function diff(keyItem: Record, keys: string[]) {\n const added = [];\n const updated = [];\n const removed = [];\n const keyIncluded = new Map();\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if (keyItem[key]) updated.push(key);\n else added.push(key);\n keyIncluded.set(key, true);\n }\n\n Object.keys(keyItem).forEach((key) => {\n if (!keyIncluded.has(key)) removed.push(key);\n });\n\n return {\n added,\n updated,\n removed,\n };\n}\n","import { Adjust, getAdjust as getAdjustClass } from '@antv/adjust';\nimport { Attribute, getAttribute as getAttributeClass } from '@antv/attr';\nimport {\n clone,\n deepMix,\n each,\n flatten,\n get,\n isArray,\n isEmpty,\n isEqual,\n isFunction,\n isNil,\n isNumber,\n isObject,\n isPlainObject,\n isString,\n set,\n} from '@antv/util';\nimport { doGroupAppearAnimate, getDefaultAnimateCfg } from '../animate';\nimport Base from '../base';\nimport { FIELD_ORIGIN, GEOMETRY_LIFE_CIRCLE, GROUP_ATTRS } from '../constant';\nimport { BBox, Coordinate, IGroup, IShape, Scale } from '../dependents';\nimport {\n AdjustOption,\n AdjustType,\n AnimateOption,\n AttributeOption,\n ColorAttrCallback,\n Data,\n Datum,\n GeometryLabelCfg,\n GeometryTooltipOption,\n LabelCallback,\n LabelOption,\n LooseObject,\n MappingDatum,\n ScaleOption,\n ShapeAttrCallback,\n ShapeFactory,\n ShapeInfo,\n ShapeMarkerCfg,\n ShapeMarkerAttrs,\n ShapePoint,\n SizeAttrCallback,\n StateOption,\n StyleCallback,\n StyleOption,\n TooltipCallback,\n CustomOption,\n} from '../interface';\nimport { uniq } from '../util/helper';\nimport Element from './element';\nimport { getGeometryLabel } from './label';\nimport GeometryLabel from './label/base';\nimport { getShapeFactory } from './shape/base';\nimport { group } from './util/group-data';\nimport { isModelChange } from './util/is-model-change';\nimport { parseFields } from './util/parse-fields';\nimport { diff } from './util/diff';\nimport { inferScaleType } from '../util/scale';\nimport { getXDimensionLength } from '../util/coordinate';\n\n/** @ignore */\ninterface AttributeInstanceCfg {\n fields?: string[];\n callback?: (...args) => any;\n values?: string[] | number[];\n scales?: Scale[];\n}\ninterface DimValuesMapType {\n [dim: string]: number[];\n}\n/** @ignore */\ninterface AdjustInstanceCfg {\n type: AdjustType;\n adjustNames?: string[];\n xField?: string;\n yField?: string;\n\n dodgeBy?: string;\n marginRatio?: number;\n dodgeRatio?: number;\n\n size?: number;\n height?: number;\n reverseOrder?: boolean;\n\n /** 像素级柱间宽度,调整offset */\n intervalPadding?: number;\n dodgePadding?: number;\n /** x维度长度,计算归一化padding使用 */\n xDimensionLength?: number;\n /** 分组数,计算offset */\n groupNum?: number;\n /** 用户配置宽度 size */\n defaultSize?: number;\n /** 最大最小宽度约束 */\n maxColumnWidth?: number;\n minColumnWidth?: number;\n /** 柱宽比例 */\n columnWidthRatio?: number;\n /** 用户自定义的dimValuesMap */\n dimValuesMap?: DimValuesMapType;\n}\n\n/** geometry.init() 传入参数 */\nexport interface InitCfg {\n /** 坐标系 */\n coordinate?: Coordinate;\n /** 数据 */\n data?: Data;\n /** 主题对象 */\n theme?: LooseObject;\n /** 列定义 */\n scaleDefs?: Record;\n /** 因为数据使用的引用,所以需要有一个标识位标识数据是否发生了更新 */\n isDataChanged?: boolean;\n isCoordinateChanged?: boolean;\n}\n\n/** Geometry 构造函数参数 */\nexport interface GeometryCfg {\n /** Geometry shape 的容器。 */\n container: IGroup;\n /** 绘制的坐标系对象。 */\n coordinate?: Coordinate;\n /** 绘制数据。 */\n data?: Data;\n /** 需要的 scales。 */\n scales?: Record;\n /** 列定义 */\n scaleDefs?: Record;\n /** Geometry labels 的容器 */\n labelsContainer?: IGroup;\n /** 是否对数据进行排序 */\n sortable?: boolean;\n /** elements 的 zIndex 默认按顺序提升,通过 zIndexReversed 可以反序,从而数据越前,层级越高 */\n zIndexReversed?: boolean;\n /** 是否需要对 zIndex 进行 sort。因为耗时长,由具体场景自行决定 */\n sortZIndex?: boolean;\n /** 延迟渲染 Geometry 数据标签. 设置为 true 时,会在浏览器空闲时期被调用, 也可以指定具体 timeout 时间 */\n useDeferredLabel?: boolean | number;\n /** 是否可见 */\n visible?: boolean;\n /** 主题配置 */\n theme?: LooseObject;\n\n /** 组间距 */\n intervalPadding?: number;\n /** 组内间距 */\n dodgePadding?: number;\n /** 柱状图最大宽度 */\n maxColumnWidth?: number;\n /** 柱状图最小宽度 */\n minColumnWidth?: number;\n /** 默认宽度占比,interval类型和schema类型通用 */\n columnWidthRatio?: number;\n /** 玫瑰图占比 */\n roseWidthRatio?: number;\n /** 多层饼图/环图占比 */\n multiplePieWidthRatio?: number;\n}\n\n/**\n * Geometry 几何标记基类,主要负责数据到图形属性的映射以及绘制逻辑。\n */\nexport default class Geometry extends Base {\n /** Geometry 几何标记类型。 */\n public readonly type: string = 'base';\n /** ShapeFactory 对应的类型。 */\n public readonly shapeType: string;\n\n // 在创建 Geometry 实例时可以传入的属性\n /** Coordinate 坐标系实例。 */\n public coordinate: Coordinate;\n /** 用户绘制数据。 */\n public data: Data;\n /** 图形绘制容器。 */\n public readonly container: IGroup;\n /** label 绘制容器。 */\n public readonly labelsContainer: IGroup;\n /** 是否对数据进行排序,默认为 false。 */\n public sortable: boolean;\n /** 当前 Geometry 实例主题。 */\n public theme: LooseObject;\n /** 存储 geometry 需要的 scales,需要外部传入。 */\n public scales: Record;\n /** scale 定义,需要外部传入。 */\n public scaleDefs: Record;\n /** 画布区域,用于 label 布局。 */\n public canvasRegion: BBox;\n\n // 内部产生的属性\n /** Attribute map */\n public attributes: Record = {};\n /** Element map */\n public elements: Element[] = [];\n /**\n * 存储处理后的数据,\n * + init() 及 updateData() 逻辑后, 结构为 Data[];\n * + paint() 逻辑后,结构为 MappingDatum[][]。\n */\n public dataArray: MappingDatum[][];\n /** 存储 tooltip 配置信息。 */\n public tooltipOption: GeometryTooltipOption | boolean;\n /** 存储 label 配置信息。 */\n public labelOption: LabelOption | false;\n /** 状态量相关的配置项 */\n public stateOption: StateOption;\n /** 使用 key-value 结构存储 Element,key 为每个 Element 实例对应的唯一 ID */\n public elementsMap: Record = {};\n /** animate 配置项 */\n public animateOption: AnimateOption | boolean = true;\n /** 图形属性映射配置 */\n protected attributeOption: Record = {};\n /** adjust 配置项 */\n protected adjustOption: AdjustOption[];\n /** style 配置项 */\n protected styleOption: StyleOption;\n /** custom 自定义的配置项 */\n protected customOption: CustomOption;\n /** 每个 Geometry 对应的 Shape 工厂实例,用于创建各个 Shape */\n protected shapeFactory: ShapeFactory;\n /** 存储上一次渲染时的 element 映射表,用于更新逻辑 */\n protected lastElementsMap: Record = {};\n /** 是否生成多个点来绘制图形。 */\n protected generatePoints: boolean = false;\n /** 存储发生图形属性映射前的数据 */\n protected beforeMappingData: Data[] = null;\n /** 存储每个 shape 的默认 size,用于 Interval、Schema 几何标记 */\n protected defaultSize: number;\n\n // 用户通过 geometry 构造函数设置的主题\n private userTheme: LooseObject;\n private adjusts: Record = {};\n private lastAttributeOption;\n private idFields: string[] = [];\n private geometryLabel: GeometryLabel;\n\n // 柱状图间距相关配置\n /** 组间距 */\n protected intervalPadding: number;\n /** 组内间距 */\n protected dodgePadding: number;\n /** 柱状图最大宽度 */\n protected maxColumnWidth: number;\n /** 柱状图最小宽度 */\n protected minColumnWidth: number;\n /** 一般柱状图宽度占比 */\n protected columnWidthRatio: number;\n /** 玫瑰图占比 */\n protected roseWidthRatio: number;\n /** 多层饼图/环图占比 */\n protected multiplePieWidthRatio: number;\n /** elements 的 zIndex 默认按顺序提升,通过 zIndexReversed 可以反序,从而数据越前,层级越高 */\n public zIndexReversed?: boolean;\n /** 是否需要对 zIndex 进行 sort。因为耗时长,由具体场景自行决定 */\n public sortZIndex?: boolean;\n protected useDeferredLabel?: null | number;\n\n /** 虚拟 Group,用于图形更新 */\n private offscreenGroup: IGroup;\n private groupScales: Scale[];\n private hasSorted: boolean = false;\n protected isCoordinateChanged: boolean = false;\n\n /**\n * 创建 Geometry 实例。\n * @param cfg\n */\n constructor(cfg: GeometryCfg) {\n super(cfg);\n\n const {\n container,\n labelsContainer,\n coordinate,\n data,\n sortable = false,\n visible = true,\n theme,\n scales = {},\n scaleDefs = {},\n // 柱状图间隔与宽度相关配置\n intervalPadding,\n dodgePadding,\n maxColumnWidth,\n minColumnWidth,\n columnWidthRatio,\n roseWidthRatio,\n multiplePieWidthRatio,\n zIndexReversed,\n sortZIndex,\n useDeferredLabel,\n } = cfg;\n\n this.container = container;\n this.labelsContainer = labelsContainer;\n this.coordinate = coordinate;\n this.data = data;\n this.sortable = sortable;\n this.visible = visible;\n this.userTheme = theme;\n this.scales = scales;\n this.scaleDefs = scaleDefs;\n // 柱状图间隔与宽度相关配置\n this.intervalPadding = intervalPadding;\n this.dodgePadding = dodgePadding;\n this.maxColumnWidth = maxColumnWidth;\n this.minColumnWidth = minColumnWidth;\n this.columnWidthRatio = columnWidthRatio;\n this.roseWidthRatio = roseWidthRatio;\n this.multiplePieWidthRatio = multiplePieWidthRatio;\n this.zIndexReversed = zIndexReversed;\n this.sortZIndex = sortZIndex;\n this.useDeferredLabel = useDeferredLabel ? (typeof useDeferredLabel === 'number' ? useDeferredLabel : Infinity) : null;\n }\n\n /**\n * 配置 position 通道映射规则。\n *\n * @example\n * ```typescript\n * // 数据结构: [{ x: 'A', y: 10, color: 'red' }]\n * geometry.position('x*y');\n * geometry.position([ 'x', 'y' ]);\n * geometry.position({\n * fields: [ 'x', 'y' ],\n * });\n * ```\n *\n * @param cfg 映射规则\n * @returns\n */\n public position(cfg: string | string[] | AttributeOption): Geometry {\n let positionCfg = cfg;\n if (!isPlainObject(cfg)) {\n // 字符串字段或者数组字段\n positionCfg = {\n fields: parseFields(cfg),\n };\n }\n\n const fields = get(positionCfg, 'fields');\n if (fields.length === 1) {\n // 默认填充一维 1*xx\n fields.unshift('1');\n set(positionCfg, 'fields', fields);\n }\n set(this.attributeOption, 'position', positionCfg);\n\n return this;\n }\n\n /**\n * 配置 color 通道映射规则。\n *\n * @example\n * ```typescript\n * // data: [{ x: 'A', y: 10, color: 'red' }, { x: 'B', y: 30, color: 'yellow' }]\n * geometry.color({\n * fields: [ 'x' ],\n * values: [ '#1890ff', '#5AD8A6' ],\n * });\n * ```\n *\n * @param field 映射规则\n * @returns\n */\n public color(field: AttributeOption): Geometry;\n /**\n * @example\n * ```typescript\n * // data: [{ x: 'A', y: 10, color: 'red' }, { x: 'B', y: 30, color: 'yellow' }]\n *\n * // 使用 '#1890ff' 颜色渲染图形\n * geometry.color('#1890ff');\n *\n * // 根据 x 字段的数据值进行颜色的映射,这时候 G2 会在内部调用默认的回调函数,读取默认提供的颜色进行数据值到颜色值的映射。\n * geometry.color('x');\n *\n * // 将 'x' 字段的数据值映射至指定的颜色值 colors(可以是字符串也可以是数组),此时用于通常映射分类数据\n * geometry.color('x', [ '#1890ff', '#5AD8A6' ]);\n *\n * // 使用回调函数进行颜色值的自定义;可以使用多个字段使用、*号连接\n * geometry.color('x', (xVal) => {\n * if (xVal === 'a') {\n * return 'red';\n * }\n * return 'blue';\n * });\n *\n * // 指定颜色的渐变路径,用于映射连续的数据\n * geometry.color('x', '#BAE7FF-#1890FF-#0050B3');\n * ```\n *\n * @param field 参与颜色映射的数据字段,多个字段使用 '*' 连接符进行连接。\n * @param cfg Optional, color 映射规则。\n * @returns\n */\n public color(field: string, cfg?: string | string[] | ColorAttrCallback): Geometry;\n public color(field: AttributeOption | string, cfg?: string | string[] | ColorAttrCallback): Geometry {\n this.createAttrOption('color', field, cfg);\n\n return this;\n }\n\n /**\n * 配置 shape 通道映射规则。\n *\n * @example\n *\n * ```typescript\n * // data: [{ x: 'A', y: 10, color: 'red' }, { x: 'B', y: 30, color: 'yellow' }]\n * geometry.shape({\n * fields: [ 'x' ],\n * });\n * ```\n *\n * @param field 映射规则配置。\n * @returns\n */\n public shape(field: AttributeOption): Geometry;\n /**\n *\n * @example\n * ```typescript\n * // data: [{ x: 'A', y: 10, color: 'red' }, { x: 'B', y: 30, color: 'yellow' }]\n *\n * // 指定常量,将所有数据值映射到固定的 shape\n * geometry.shape('circle');\n *\n * // 将指定的字段映射到内置的 shapes 数组中\n * geometry.shape('x');\n *\n * // 将指定的字段映射到指定的 shapes 数组中\n * geometry.shape('x', [ 'circle', 'diamond', 'square' ]);\n *\n * // 使用回调函数获取 shape,用于个性化的 shape 定制,可以根据单个或者多个字段确定\n * geometry.shape('x', (xVal) => {\n * if (xVal === 'a') {\n * return 'circle';\n * }\n * return 'diamond';\n * });\n * ```\n *\n * @param field 参与 shape 映射的数据字段,多个字段使用 '*' 连接符进行连接。\n * @param cfg Optional, shape 映射规则。\n * @returns\n */\n public shape(field: string, cfg?: string[] | ShapeAttrCallback): Geometry;\n public shape(field: AttributeOption | string, cfg?: string[] | ShapeAttrCallback): Geometry {\n this.createAttrOption('shape', field, cfg);\n\n return this;\n }\n\n /**\n * 配置 size 通道映射规则。\n *\n * @example\n * ```typescript\n * // data: [{ x: 'A', y: 10, color: 'red' }, { x: 'B', y: 30, color: 'yellow' }]\n * geometry.size({\n * values: [ 10 ],\n * })\n * ```\n *\n * @param field 映射规则。\n * @returns\n */\n public size(field: AttributeOption): Geometry;\n /**\n *\n * @example\n * ```typescript\n * // data: [{ x: 'A', y: 10, color: 'red' }, { x: 'B', y: 30, color: 'yellow' }]\n *\n * // 直接指定像素大小\n * geometry.size(10);\n *\n * // 指定映射到 size 的字段,使用内置的默认大小范围为 [1, 10]\n * geometry.size('x');\n *\n * // 指定映射到 size 字段外,还提供了 size 的最大值和最小值范围\n * geometry.size('x', [ 5, 30 ]);\n *\n * // 使用回调函数映射 size,用于个性化的 size 定制,可以使用多个字段进行映射\n * geometry.size('x', (xVal) => {\n * if (xVal === 'a') {\n * return 10;\n * }\n * return 5;\n * });\n * ```\n *\n * @param field 参与 size 映射的数据字段,多个字段使用 '*' 连接符进行连接。\n * @param cfg Optional, size 映射规则\n * @returns\n */\n public size(field: number | string, cfg?: [number, number] | SizeAttrCallback): Geometry;\n public size(field: AttributeOption | number | string, cfg?: [number, number] | SizeAttrCallback): Geometry {\n this.createAttrOption('size', field, cfg);\n\n return this;\n }\n\n /**\n * 设置数据调整方式。G2 目前内置了四种类型:\n * 1. dodge\n * 2. stack\n * 3. symmetric\n * 4. jitter\n *\n *\n * **Tip**\n * + 对于 'dodge' 类型,可以额外进行如下属性的配置:\n * ```typescript\n * geometry.adjust('dodge', {\n * marginRatio: 0, // 取 0 到 1 范围的值(相对于每个柱子宽度),用于控制一个分组中柱子之间的间距\n * dodgeBy: 'x', // 该属性只对 'dodge' 类型生效,声明以哪个数据字段为分组依据\n * });\n * ```\n *\n * + 对于 'stack' 类型,可以额外进行如下属性的配置:\n * ```typescript\n * geometry.adjust('stack', {\n * reverseOrder: false, // 用于控制是否对数据进行反序操作\n * });\n * ```\n *\n * @example\n * ```typescript\n * geometry.adjust('stack');\n *\n * geometry.adjust({\n * type: 'stack',\n * reverseOrder: false,\n * });\n *\n * // 组合使用 adjust\n * geometry.adjust([ 'stack', 'dodge' ]);\n *\n * geometry.adjust([\n * { type: 'stack' },\n * { type: 'dodge', dodgeBy: 'x' },\n * ]);\n * ```\n *\n * @param adjustCfg 数据调整配置\n * @returns\n */\n public adjust(adjustCfg: string | string[] | AdjustOption | AdjustOption[]): Geometry {\n let adjusts: any = adjustCfg;\n if (isString(adjustCfg) || isPlainObject(adjustCfg)) {\n adjusts = [adjustCfg];\n }\n each(adjusts, (adjust, index) => {\n if (!isObject(adjust)) {\n adjusts[index] = { type: adjust };\n }\n });\n\n this.adjustOption = adjusts;\n return this;\n }\n\n /**\n * 图形样式配置。\n *\n * @example\n * ```typescript\n * // 配置图形样式\n * style({\n * lineWidth: 2,\n * stroke: '#1890ff',\n * });\n *\n * // 根据具体的数据进行详细配置\n * style({\n * fields: [ 'x', 'y' ], // 数据字段\n * callback: (xVal, yVal) => {\n * const style = { lineWidth: 2, stroke: '#1890ff' };\n * if (xVal === 'a') {\n * style.lineDash = [ 2, 2 ];\n * }\n * return style;\n * },\n * });\n * ```\n *\n * @param field 配置样式属性或者样式规则。\n * @returns\n */\n public style(field: StyleOption | LooseObject): Geometry;\n /**\n * @example\n * ```typescript\n * style('x*y', (xVal, yVal) => {\n * const style = { lineWidth: 2, stroke: '#1890ff' };\n * if (xVal === 'a') {\n * style.lineDash = [ 2, 2 ];\n * }\n * return style;\n * });\n * ```\n *\n * @param field 数据字段或者样式配置规则。\n * @param styleFunc Optional, 样式配置回调函数。\n * @returns\n */\n public style(field: string, styleFunc: StyleCallback): Geometry;\n public style(field: StyleOption | LooseObject | string, styleFunc?: StyleCallback): Geometry {\n if (isString(field)) {\n const fields = parseFields(field);\n this.styleOption = {\n fields,\n callback: styleFunc,\n };\n } else {\n const { fields, callback, cfg } = field as StyleOption;\n if (fields || callback || cfg) {\n this.styleOption = field;\n } else {\n this.styleOption = {\n cfg: field,\n };\n }\n }\n\n return this;\n }\n\n /**\n * 配置 Geometry 显示的 tooltip 内容。\n *\n * `tooltip(false)` 代表关闭 tooltip。\n * `tooltip(true)` 代表开启 tooltip。\n *\n * Geometry 默认允许 tooltip 展示,我们可以使用以下方法对 tooltip 的展示内容进行配置:\n *\n * @example\n * ```typescript\n * // data: [{x: 'a', y: 10}]\n * tooltip({\n * fields: [ 'x' ],\n * });\n * ```\n * ![](https://gw.alipayobjects.com/mdn/rms_2274c3/afts/img/A*268uQ50if60AAAAAAAAAAABkARQnAQ)\n *\n * ```typescript\n * tooltip({\n * fields: [ 'x', 'y' ],\n * });\n * ```\n * ![](https://gw.alipayobjects.com/mdn/rms_2274c3/afts/img/A*A_ujSa8QhtcAAAAAAAAAAABkARQnAQ)\n *\n * tooltip() 方法同样支持数据映射及回调用法:\n *\n * @example\n * ```typescript\n * chart.tooltip({\n * itemTpl: '
    • {x}: {y}
    • ',\n * });\n *\n * chart.line()\n * .position('x*y')\n * .tooltip({\n * fields: [ 'x', 'y' ],\n * callback: (x, y) => {\n * return {\n * x,\n * y,\n * };\n * },\n * });\n * ```\n *\n * 其返回的值必须为对象,该值中的属性同 chart.tooltip() 的 itemTpl 模板相对应,返回的变量可用于 itemTpl 的字符串模板。\n *\n * @param field tooltip 配置信息。\n * @returns\n */\n public tooltip(field: GeometryTooltipOption | boolean): Geometry;\n /**\n * @example\n * ```typescript\n * // data: [{x: 'a', y: 10}]\n *\n * // 等同于 tooltip({ fields: [ 'x' ] })\n * tooltip('x');\n *\n * // 等同于 tooltip({ fields: [ 'x', 'y' ] })\n * tooltip('x*y');\n *\n * // 等同于 tooltip({ fields: [ 'x', 'y' ], callback: (x, y) => { x, y } })\n * tooltip('x*y', (x, y) => {\n * return {\n * x,\n * y,\n * };\n * });\n * ```\n *\n * @param field 参与映射的字段。\n * @param cfg Optional, 回调函数\n * @returns\n */\n public tooltip(field: string, cfg?: TooltipCallback): Geometry;\n public tooltip(field: GeometryTooltipOption | boolean | string, cfg?: TooltipCallback): Geometry {\n if (isString(field)) {\n const fields = parseFields(field);\n this.tooltipOption = {\n fields,\n callback: cfg,\n };\n } else {\n this.tooltipOption = field;\n }\n\n return this;\n }\n\n /**\n * Geometry 动画配置。\n *\n * + `animate(false)` 关闭动画\n * + `animate(true)` 开启动画,默认开启。\n *\n * 我们将动画分为四个场景:\n * 1. appear: 图表第一次加载时的入场动画;\n * 2. enter: 图表绘制完成,发生更新后,产生的新图形的进场动画;\n * 3. update: 图表绘制完成,数据发生变更后,有状态变更的图形的更新动画;\n * 4. leave: 图表绘制完成,数据发生变更后,被销毁图形的销毁动画。\n *\n * @example\n * ```typescript\n * animate({\n * enter: {\n * duration: 1000, // enter 动画执行时间\n * },\n * leave: false, // 关闭 leave 销毁动画\n * });\n * ```\n *\n * @param cfg 动画配置\n * @returns\n */\n public animate(cfg: AnimateOption | boolean): Geometry {\n this.animateOption = cfg;\n return this;\n }\n\n /**\n * Geometry label 配置。\n *\n * @example\n * ```ts\n * // data: [ {x: 1, y: 2, z: 'a'}, {x: 2, y: 2, z: 'b'} ]\n * // 在每个图形上显示 z 字段对应的数值\n * label({\n * fields: [ 'z' ]\n * });\n *\n * label(false); // 不展示 label\n *\n * // 在每个图形上显示 x 字段对应的数值,同时配置文本颜色为红色\n * label('x', {\n * style: {\n * fill: 'red',\n * },\n * })\n *\n * // 以 type 类型的 label 渲染每个图形上显示 x 字段对应的数值,同时格式化文本内容\n * label('x', (xValue) => {\n * return {\n * content: xValue + '%',\n * };\n * }, {\n * type: 'base' // 声明 label 类型\n * })\n * ```\n *\n * @param field\n * @returns label\n */\n public label(field: LabelOption | false | string): Geometry;\n public label(field: string, secondParam: GeometryLabelCfg | LabelCallback): Geometry;\n public label(field: string, secondParam: LabelCallback, thirdParam: GeometryLabelCfg): Geometry;\n public label(\n field: string | LabelOption | false,\n secondParam?: GeometryLabelCfg | LabelCallback,\n thirdParam?: GeometryLabelCfg\n ): Geometry {\n if (isString(field)) {\n const labelOption: LabelOption = {};\n const fields = parseFields(field);\n labelOption.fields = fields;\n if (isFunction(secondParam)) {\n labelOption.callback = secondParam;\n } else if (isPlainObject(secondParam)) {\n labelOption.cfg = secondParam;\n }\n\n if (thirdParam) {\n labelOption.cfg = thirdParam;\n }\n this.labelOption = labelOption;\n } else {\n this.labelOption = field;\n }\n\n return this;\n }\n\n /**\n * 设置状态对应的样式。\n *\n * @example\n * ```ts\n * chart.interval().state({\n * selected: {\n * animate: { duration: 100, easing: 'easeLinear' },\n * style: {\n * lineWidth: 2,\n * stroke: '#000',\n * },\n * },\n * });\n * ```\n *\n * 如果图形 shape 是由多个 shape 组成,即为一个 G.Group 对象,那么针对 group 中的每个 shape,我们需要使用下列方式进行状态样式设置:\n * 如果我们为 group 中的每个 shape 设置了 'name' 属性(shape.set('name', 'xx')),则以 'name' 作为 key,否则默认以索引值(即 shape 的 添加顺序)为 key。\n *\n * ```ts\n * chart.interval().shape('groupShape').state({\n * selected: {\n * style: {\n * 0: { lineWidth: 2 },\n * 1: { fillOpacity: 1 },\n * }\n * }\n * });\n * ```\n *\n * @param cfg 状态样式\n */\n public state(cfg: StateOption) {\n this.stateOption = cfg;\n return this;\n }\n\n /**\n * 用于向 shape 中传入自定义的数据。目前可能仅仅可能用于在自定义 shape 的时候,像自定义 shape 中传入自定义的数据,方便实现自定义 shape 的配置能力。\n *\n * @example\n * ```ts\n * chart.interval().customInfo({ yourData: 'hello, g2!' });\n * ```\n *\n * 然后在自定义 shape 的时候,可以拿到这个信息。\n *\n * ```ts\n * registerShape('interval', 'your-shape', {\n * draw(shapeInfo, container) {\n * const { customInfo } = shapeInfo;\n * console.log(customInfo); // will log { yourData: 'hello, g2!' }.\n * }\n * });\n * ```\n *\n * @param cfg\n */\n public customInfo(cfg: any) {\n this.customOption = cfg;\n return this;\n }\n\n /**\n * 初始化 Geomtry 实例:\n * 创建 [[Attribute]] and [[Scale]] 实例,进行数据处理,包括分组、数值化以及数据调整。\n */\n public init(cfg: InitCfg = {}) {\n this.setCfg(cfg);\n this.initAttributes(); // 创建图形属性\n\n // 数据加工:分组 -> 数字化 -> adjust\n this.processData(this.data);\n\n // 调整 scale\n this.adjustScale();\n }\n\n /**\n * Geometry 更新。\n * @param [cfg] 更新的配置\n */\n public update(cfg: InitCfg = {}) {\n const { data, isDataChanged, isCoordinateChanged } = cfg;\n const { attributeOption, lastAttributeOption } = this;\n\n if (!isEqual(attributeOption, lastAttributeOption)) {\n // 映射发生改变,则重新创建图形属性\n this.init(cfg);\n } else if (data && (isDataChanged || !isEqual(data, this.data))) {\n // 数据发生变化\n this.setCfg(cfg);\n this.initAttributes(); // 创建图形属性\n this.processData(data); // 数据加工:分组 -> 数字化 -> adjust\n } else {\n // 有可能 coordinate 变化\n this.setCfg(cfg);\n }\n\n // 调整 scale\n this.adjustScale();\n this.isCoordinateChanged = isCoordinateChanged;\n }\n\n /**\n * 将原始数据映射至图形空间,同时创建图形对象。\n */\n public paint(isUpdate: boolean = false) {\n if (this.animateOption) {\n this.animateOption = deepMix({}, getDefaultAnimateCfg(this.type, this.coordinate), this.animateOption);\n }\n\n this.defaultSize = undefined;\n this.elementsMap = {};\n this.elements = [];\n const offscreenGroup = this.getOffscreenGroup();\n offscreenGroup.clear();\n\n const beforeMappingData = this.beforeMappingData;\n const dataArray = this.beforeMapping(beforeMappingData);\n\n this.dataArray = new Array(dataArray.length);\n for (let i = 0; i < dataArray.length; i++) {\n const data = dataArray[i];\n this.dataArray[i] = this.mapping(data);\n }\n this.updateElements(this.dataArray, isUpdate);\n this.lastElementsMap = this.elementsMap;\n\n if (this.canDoGroupAnimation(isUpdate)) {\n // 如果用户没有配置 appear.animation,就默认走整体动画\n const container = this.container;\n const type = this.type;\n const coordinate = this.coordinate;\n const animateCfg = get(this.animateOption, 'appear');\n const yScale = this.getYScale();\n const yMinPoint = coordinate.convert({\n x: 0,\n y: yScale.scale(this.getYMinValue()),\n });\n doGroupAppearAnimate(container, animateCfg, type, coordinate, yMinPoint);\n }\n\n // 添加 label\n if (this.labelOption) {\n const deferred = this.useDeferredLabel;\n const callback = (() => this.renderLabels(flatten(this.dataArray) as unknown as MappingDatum[], isUpdate)).bind(this);\n if (typeof deferred === 'number') {\n // Use `requestIdleCallback` to render labels in idle time (like react fiber)\n const timeout = (typeof deferred === 'number' && deferred !== Infinity) ? deferred : 0;\n if (!window.requestIdleCallback) {\n setTimeout(callback, timeout);\n } else {\n const options = timeout && timeout !== Infinity ? { timeout } : undefined;\n window.requestIdleCallback(callback, options);\n }\n } else {\n callback();\n }\n }\n\n // 缓存,用于更新\n this.lastAttributeOption = {\n ...this.attributeOption,\n };\n\n if (this.visible === false) {\n // 用户在初始化的时候声明 visible: false\n this.changeVisible(false);\n }\n }\n\n /**\n * 清空当前 Geometry,配置项仍保留,但是内部创建的对象全部清空。\n * @override\n */\n public clear() {\n const { container, geometryLabel, offscreenGroup } = this;\n if (container) {\n container.clear();\n }\n\n if (geometryLabel) {\n geometryLabel.clear();\n }\n\n if (offscreenGroup) {\n offscreenGroup.clear();\n }\n\n // 属性恢复至出厂状态\n this.scaleDefs = undefined;\n this.attributes = {};\n this.scales = {};\n this.elementsMap = {};\n this.lastElementsMap = {};\n this.elements = [];\n this.adjusts = {};\n this.dataArray = null;\n this.beforeMappingData = null;\n this.lastAttributeOption = undefined;\n this.defaultSize = undefined;\n this.idFields = [];\n this.groupScales = undefined;\n this.hasSorted = false;\n this.isCoordinateChanged = false;\n }\n\n /**\n * 销毁 Geometry 实例。\n */\n public destroy() {\n this.clear();\n const container = this.container;\n container.remove(true);\n\n if (this.offscreenGroup) {\n this.offscreenGroup.remove(true);\n this.offscreenGroup = null;\n }\n\n if (this.geometryLabel) {\n this.geometryLabel.destroy();\n this.geometryLabel = null;\n }\n this.theme = undefined;\n this.shapeFactory = undefined;\n\n super.destroy();\n }\n\n /**\n * 获取决定分组的图形属性对应的 scale 实例。\n * @returns\n */\n public getGroupScales(): Scale[] {\n return this.groupScales;\n }\n\n /**\n * 根据名字获取图形属性实例。\n */\n public getAttribute(name: string): Attribute {\n return this.attributes[name];\n }\n\n /** 获取 x 轴对应的 scale 实例。 */\n public getXScale(): Scale {\n return this.getAttribute('position').scales[0];\n }\n\n /** 获取 y 轴对应的 scale 实例。 */\n public getYScale(): Scale {\n return this.getAttribute('position').scales[1];\n }\n\n /**\n * 获取决定分组的图形属性实例。\n */\n public getGroupAttributes(): Attribute[] {\n const rst = [];\n each(this.attributes, (attr: Attribute) => {\n if (GROUP_ATTRS.includes(attr.type)) {\n rst.push(attr);\n }\n });\n return rst;\n }\n\n /** 获取图形属性默认的映射值。 */\n public getDefaultValue(attrName: string) {\n let value: any;\n const attr = this.getAttribute(attrName);\n if (attr && isEmpty(attr.scales)) {\n // 获取映射至常量的值\n value = attr.values[0];\n }\n return value;\n }\n\n /**\n * 获取该数据发生图形映射后对应的 Attribute 图形空间数据。\n * @param attr Attribute 图形属性实例。\n * @param obj 需要进行映射的原始数据。\n * @returns\n */\n public getAttributeValues(attr: Attribute, obj: Datum) {\n const params = [];\n const scales = attr.scales;\n for (let index = 0, length = scales.length; index < length; index++) {\n const scale = scales[index];\n const field = scale.field;\n if (scale.isIdentity) {\n params.push(scale.values);\n } else {\n params.push(obj[field]);\n }\n }\n\n return attr.mapping(...params);\n }\n\n /**\n * 获取对应的 adjust 实例\n * @param adjustType\n * @returns\n */\n public getAdjust(adjustType: string) {\n return this.adjusts[adjustType];\n }\n\n /**\n * 获得 coordinate 实例\n * @returns\n */\n public getCoordinate() {\n return this.coordinate;\n }\n\n public getData() {\n return this.data;\n }\n\n /**\n * 获取 shape 对应的 marker 样式。\n * @param shapeName shape 具体名字\n * @param cfg marker 信息\n * @returns\n */\n public getShapeMarker(shapeName: string, cfg: ShapeMarkerCfg): ShapeMarkerAttrs {\n const shapeFactory = this.getShapeFactory();\n return shapeFactory.getMarker(shapeName, cfg);\n }\n\n /**\n * 根据一定的规则查找 Geometry 的 Elements。\n *\n * ```typescript\n * getElementsBy((element) => {\n * const data = element.getData();\n *\n * return data.a === 'a';\n * });\n * ```\n *\n * @param condition 定义查找规则的回调函数。\n * @returns\n */\n public getElementsBy(condition: (element: Element) => boolean): Element[] {\n return this.elements.filter((element) => condition(element));\n }\n\n /**\n * 获取 Geometry 的所有 Elements。\n *\n * ```typescript\n * getElements();\n * ```\n */\n public getElements() {\n return this.elements;\n }\n\n /**\n * 获取数据对应的唯一 id。\n * @param data Element 对应的绘制数据\n * @returns\n */\n public getElementId(data: MappingDatum | MappingDatum[]) {\n data = isArray(data) ? data[0] : data;\n const originData = data[FIELD_ORIGIN];\n\n // 如果用户声明了使用哪些字段作为 id 值\n if (this.idFields.length) {\n let elementId = originData[this.idFields[0]];\n for (let index = 1; index < this.idFields.length; index++) {\n elementId += '-' + originData[this.idFields[index]];\n }\n\n return elementId;\n }\n\n const type = this.type;\n const xScale = this.getXScale();\n const yScale = this.getYScale();\n const xField = xScale.field || 'x';\n const yField = yScale.field || 'y';\n const yVal = originData[yField];\n let xVal;\n if (xScale.type === 'identity') {\n xVal = xScale.values[0];\n } else {\n xVal = originData[xField];\n }\n\n let id: string;\n if (type === 'interval' || type === 'schema') {\n id = `${xVal}`;\n } else if (type === 'line' || type === 'area' || type === 'path') {\n id = type;\n } else {\n id = `${xVal}-${yVal}`;\n }\n\n const groupScales = this.groupScales;\n\n for (let index = 0, length = groupScales.length; index < length; index++) {\n const groupScale = groupScales[index];\n const field = groupScale.field;\n id = `${id}-${originData[field]}`;\n }\n\n // 用户在进行 dodge 类型的 adjust 调整的时候设置了 dodgeBy 属性\n const dodgeAdjust = this.getAdjust('dodge');\n if (dodgeAdjust) {\n const dodgeBy = dodgeAdjust.dodgeBy;\n if (dodgeBy) {\n id = `${id}-${originData[dodgeBy]}`;\n }\n }\n\n if (this.getAdjust('jitter')) {\n id = `${id}-${data.x}-${data.y}`;\n }\n\n return id;\n }\n\n /**\n * 获取所有需要创建 scale 的字段名称。\n */\n public getScaleFields(): string[] {\n const fields = [];\n const tmpMap = new Map();\n const { attributeOption, labelOption, tooltipOption } = this;\n // 获取图形属性上的 fields\n for (const attributeType in attributeOption) {\n if (attributeOption.hasOwnProperty(attributeType)) {\n const eachOpt = attributeOption[attributeType];\n if (eachOpt.fields) {\n uniq(eachOpt.fields, fields, tmpMap);\n } else if (eachOpt.values) {\n // 考虑 size(10), shape('circle') 等场景\n uniq(eachOpt.values, fields, tmpMap);\n }\n }\n }\n // 获取 label 上的字段\n if (labelOption && labelOption.fields) {\n uniq(labelOption.fields, fields, tmpMap);\n }\n\n // 获取 tooltip 上的字段\n if (isObject(tooltipOption) && tooltipOption.fields) {\n uniq(tooltipOption.fields, fields, tmpMap);\n }\n\n return fields;\n }\n\n /**\n * 显示或者隐藏 geometry。\n * @param visible\n */\n public changeVisible(visible: boolean) {\n super.changeVisible(visible);\n const elements = this.elements;\n for (let index = 0, length = elements.length; index < length; index++) {\n const element = elements[index];\n element.changeVisible(visible);\n }\n if (visible) {\n if (this.container) {\n this.container.show();\n }\n if (this.labelsContainer) {\n this.labelsContainer.show();\n }\n } else {\n if (this.container) {\n this.container.hide();\n }\n if (this.labelsContainer) {\n this.labelsContainer.hide();\n }\n }\n }\n\n /**\n * 获得所有的字段\n */\n public getFields() {\n const uniqMap = new Map();\n const fields = [];\n\n Object.values(this.attributeOption).forEach((cfg) => {\n const fs = cfg?.fields || [];\n fs.forEach((f) => {\n if (!uniqMap.has(f)) {\n fields.push(f);\n }\n uniqMap.set(f, true);\n });\n }, []);\n\n return fields;\n }\n\n /**\n * 获取当前配置中的所有分组 & 分类的字段。\n * @return fields string[]\n */\n public getGroupFields(): string[] {\n const groupFields = [];\n const tmpMap = new Map(); // 用于去重过滤\n for (let index = 0, length = GROUP_ATTRS.length; index < length; index++) {\n const attributeName = GROUP_ATTRS[index];\n const cfg = this.attributeOption[attributeName];\n if (cfg && cfg.fields) {\n uniq(cfg.fields, groupFields, tmpMap);\n }\n }\n\n return groupFields;\n }\n\n /**\n * 获得图形的 x y 字段。\n */\n public getXYFields() {\n const [x, y] = this.attributeOption.position.fields;\n return [x, y];\n }\n\n /**\n * x 字段\n * @returns\n */\n public getXField(): string {\n return get(this.getXYFields(), [0]);\n }\n\n /**\n * y 字段\n * @returns\n */\n public getYField(): string {\n return get(this.getXYFields(), [1]);\n }\n\n /**\n * 获取该 Geometry 下所有生成的 shapes。\n * @returns shapes\n */\n public getShapes(): (IShape | IGroup)[] {\n return this.elements.map((element: Element) => element.shape);\n }\n\n /**\n * 获取虚拟 Group。\n * @returns\n */\n public getOffscreenGroup() {\n if (!this.offscreenGroup) {\n const GroupCtor = this.container.getGroupBase(); // 获取分组的构造函数\n this.offscreenGroup = new GroupCtor({});\n }\n return this.offscreenGroup;\n }\n\n // 对数据进行排序\n public sort(mappingArray: Data[]) {\n if (!this.hasSorted) {\n // 未发生过排序\n const xScale = this.getXScale();\n const xField = xScale.field;\n for (let index = 0; index < mappingArray.length; index++) {\n const itemArr = mappingArray[index];\n itemArr.sort((obj1: Datum, obj2: Datum) => {\n return xScale.translate(obj1[FIELD_ORIGIN][xField]) - xScale.translate(obj2[FIELD_ORIGIN][xField]);\n });\n }\n }\n\n this.hasSorted = true;\n }\n\n /**\n * 调整度量范围。主要针对发生层叠以及一些特殊需求的 Geometry,比如 Interval 下的柱状图 Y 轴默认从 0 开始。\n */\n protected adjustScale() {\n const yScale = this.getYScale();\n // 如果数据发生过 stack adjust,需要调整下 yScale 的数据范围\n if (yScale && this.getAdjust('stack')) {\n this.updateStackRange(yScale, this.beforeMappingData);\n }\n }\n\n /**\n * 获取当前 Geometry 对应的 Shape 工厂实例。\n */\n protected getShapeFactory() {\n const shapeType = this.shapeType;\n if (!getShapeFactory(shapeType)) {\n return;\n }\n if (!this.shapeFactory) {\n this.shapeFactory = clone(getShapeFactory(shapeType)); // 防止多个 view 共享一个 shapeFactory 实例,导致 coordinate 被篡改\n }\n // 因为这里缓存了 shapeFactory,但是外部可能会变更 coordinate,导致无法重新设置到 shapeFactory 中\n this.shapeFactory.coordinate = this.coordinate;\n // theme 原因同上\n this.shapeFactory.theme = this.theme.geometries[shapeType] || {};\n\n return this.shapeFactory;\n }\n\n /**\n * 获取每个 Shape 对应的关键点数据。\n * @param obj 经过分组 -> 数字化 -> adjust 调整后的数据记录\n * @returns\n */\n protected createShapePointsCfg(obj: Datum): S {\n const xScale = this.getXScale();\n const yScale = this.getYScale();\n const x = this.normalizeValues(obj[xScale.field], xScale);\n let y; // 存在没有 y 的情况\n\n if (yScale) {\n y = this.normalizeValues(obj[yScale.field], yScale);\n } else {\n y = obj.y ? obj.y : 0.1;\n }\n\n return {\n x,\n y,\n y0: yScale ? yScale.scale(this.getYMinValue()) : undefined,\n } as S;\n }\n\n /**\n * 创建 Element 实例。\n * @param mappingDatum Element 对应的绘制数据\n * @param [isUpdate] 是否处于更新阶段\n * @returns element 返回创建的 Element 实例\n */\n protected createElement(mappingDatum: MappingDatum, index: number, isUpdate: boolean = false): Element {\n const { container } = this;\n\n const shapeCfg = this.getDrawCfg(mappingDatum); // 获取绘制图形的配置信息\n const shapeFactory = this.getShapeFactory();\n\n const element = new Element({\n shapeFactory,\n container,\n offscreenGroup: this.getOffscreenGroup(),\n elementIndex: index,\n });\n element.animate = this.animateOption;\n element.geometry = this;\n element.draw(shapeCfg, isUpdate); // 绘制\n\n return element;\n }\n\n /**\n * 获取每条数据对应的图形绘制数据。\n * @param mappingDatum 映射后的数据\n * @returns draw cfg\n */\n protected getDrawCfg(mappingDatum: MappingDatum): ShapeInfo {\n const originData = mappingDatum[FIELD_ORIGIN]; // 原始数据\n const cfg: ShapeInfo = {\n mappingData: mappingDatum, // 映射后的数据\n data: originData, // 原始数据\n x: mappingDatum.x,\n y: mappingDatum.y,\n color: mappingDatum.color,\n size: mappingDatum.size,\n isInCircle: this.coordinate.isPolar,\n customInfo: this.customOption,\n };\n\n let shapeName = mappingDatum.shape;\n if (!shapeName && this.getShapeFactory()) {\n shapeName = this.getShapeFactory().defaultShapeType;\n }\n cfg.shape = shapeName;\n // 获取默认样式\n const theme = this.theme.geometries[this.shapeType];\n cfg.defaultStyle = get(theme, [shapeName, 'default'], {}).style;\n if (!cfg.defaultStyle && this.getShapeFactory()) {\n cfg.defaultStyle = this.getShapeFactory().getDefaultStyle(theme);\n }\n\n const styleOption = this.styleOption;\n if (styleOption) {\n cfg.style = this.getStyleCfg(styleOption, originData);\n }\n if (this.generatePoints) {\n cfg.points = mappingDatum.points;\n cfg.nextPoints = mappingDatum.nextPoints;\n }\n\n return cfg;\n }\n\n protected updateElements(mappingDataArray: MappingDatum[][], isUpdate: boolean = false): void {\n const keyDatum = new Map();\n const keys: string[] = [];\n\n // 用来保持 diff 元素之后 added, updated 的相对顺序\n const keyIndex = new Map();\n let index = 0;\n\n // 获得更新数据所有的 keys\n // 将更新的数据用 key 索引\n for (let i = 0; i < mappingDataArray.length; i++) {\n const mappingData = mappingDataArray[i];\n for (let j = 0; j < mappingData.length; j++) {\n const mappingDatum = mappingData[j];\n const key = this.getElementId(mappingDatum);\n const finalKey = keyDatum.has(key) ? `${key}-${i}-${j}` : key;\n keys.push(finalKey);\n keyDatum.set(finalKey, mappingDatum);\n keyIndex.set(finalKey, index);\n index++;\n }\n }\n\n this.elements = new Array(index);\n\n const { added, updated, removed } = diff(this.lastElementsMap, keys);\n\n // 新建 element\n for (const key of added) {\n const mappingDatum = keyDatum.get(key);\n const i = keyIndex.get(key);\n const element = this.createElement(mappingDatum, i, isUpdate);\n this.elements[i] = element;\n this.elementsMap[key] = element;\n if (element.shape) {\n element.shape.set('zIndex', this.zIndexReversed ? this.elements.length - i : i);\n }\n }\n\n // 更新 element\n for (const key of updated) {\n const element = this.lastElementsMap[key];\n const mappingDatum = keyDatum.get(key);\n const currentShapeCfg = this.getDrawCfg(mappingDatum);\n const preShapeCfg = element.getModel();\n const i = keyIndex.get(key);\n if (this.isCoordinateChanged || isModelChange(currentShapeCfg, preShapeCfg)) {\n element.animate = this.animateOption;\n // 通过绘制数据的变更来判断是否需要更新,因为用户有可能会修改图形属性映射\n element.update(currentShapeCfg); // 更新对应的 element\n }\n this.elements[i] = element;\n this.elementsMap[key] = element;\n if (element.shape) {\n element.shape.set('zIndex', this.zIndexReversed ? this.elements.length - i : i);\n }\n }\n\n // 全部 setZIndex 之后,再执行 sort\n if (this.container) {\n this.container.sort();\n }\n\n // 销毁被删除的 elements\n for (const key of removed) {\n const element = this.lastElementsMap[key];\n // 更新动画配置,用户有可能在更新之前有对动画进行配置操作\n element.animate = this.animateOption;\n element.destroy();\n }\n }\n\n /**\n * 获取渲染的 label 类型。\n */\n protected getLabelType(): string {\n const { labelOption, coordinate, type } = this;\n const { type: coordinateType, isTransposed } = coordinate;\n let labelType = get(labelOption, ['cfg', 'type']);\n if (!labelType) {\n // 用户未定义,则进行默认的逻辑\n if (coordinateType === 'polar') {\n // 极坐标下使用通用的极坐标文本,转置则使用饼图\n labelType = isTransposed ? 'pie' : 'polar';\n } else if (coordinateType === 'theta') {\n // theta 坐标系下使用饼图文本\n labelType = 'pie';\n } else if (type === 'interval' || type === 'polygon') {\n labelType = 'interval';\n } else {\n labelType = 'base';\n }\n }\n\n return labelType;\n }\n\n /**\n * 获取 Y 轴上的最小值。\n */\n protected getYMinValue(): number {\n const yScale = this.getYScale();\n const { min, max } = yScale;\n let value: number;\n\n if (min >= 0) {\n value = min;\n } else if (max <= 0) {\n // 当值全位于负区间时,需要保证 ymin 在区域内,不可为 0\n value = max;\n } else {\n value = 0;\n }\n return value;\n }\n\n // 创建图形属性相关的配置项\n protected createAttrOption(attrName: string, field: AttributeOption | string | number, cfg?) {\n if (isNil(field) || isObject(field)) {\n if (isObject(field) && isEqual(Object.keys(field), ['values'])) {\n // shape({ values: [ 'funnel' ] })\n set(this.attributeOption, attrName, {\n fields: field.values,\n });\n } else {\n set(this.attributeOption, attrName, field);\n }\n } else {\n const attrCfg: AttributeOption = {};\n if (isNumber(field)) {\n // size(3)\n attrCfg.values = [field];\n } else {\n attrCfg.fields = parseFields(field);\n }\n\n if (cfg) {\n if (isFunction(cfg)) {\n attrCfg.callback = cfg;\n } else {\n attrCfg.values = cfg;\n }\n }\n\n set(this.attributeOption, attrName, attrCfg);\n }\n }\n\n protected initAttributes() {\n const { attributes, attributeOption, theme, shapeType } = this;\n this.groupScales = [];\n const tmpMap = {};\n\n // 遍历每一个 attrOption,各自创建 Attribute 实例\n for (const attrType in attributeOption) {\n if (attributeOption.hasOwnProperty(attrType)) {\n const option: AttributeOption = attributeOption[attrType];\n if (!option) {\n return;\n }\n const attrCfg: AttributeInstanceCfg = {\n ...option,\n };\n const { callback, values, fields = [] } = attrCfg;\n\n // 获取每一个字段对应的 scale\n const scales = fields.map((field) => {\n const scale = this.scales[field];\n if (!tmpMap[field] && GROUP_ATTRS.includes(attrType)) {\n const inferedScaleType = inferScaleType(scale, get(this.scaleDefs, field), attrType, this.type);\n if (inferedScaleType === 'cat') {\n this.groupScales.push(scale);\n tmpMap[field] = true;\n }\n }\n return scale;\n });\n\n attrCfg.scales = scales;\n\n if (attrType !== 'position' && scales.length === 1 && scales[0].type === 'identity') {\n // 用户在图形通道上声明了常量字段 color('red'), size(5)\n attrCfg.values = scales[0].values;\n } else if (!callback && !values) {\n // 用户没有指定任何规则,则使用默认的映射规则\n if (attrType === 'size') {\n attrCfg.values = theme.sizes;\n } else if (attrType === 'shape') {\n attrCfg.values = theme.shapes[shapeType] || [];\n } else if (attrType === 'color') {\n if (scales.length) {\n // 根据数值个数使用对应的色板\n attrCfg.values = scales[0].values.length <= 10 ? theme.colors10 : theme.colors20;\n } else {\n attrCfg.values = theme.colors10;\n }\n }\n }\n const AttributeCtor = getAttributeClass(attrType);\n attributes[attrType] = new AttributeCtor(attrCfg);\n }\n }\n }\n\n // 处理数据:分组 -> 数字化 -> adjust 调整\n private processData(data: Data) {\n this.hasSorted = false;\n const { scales } = this.getAttribute('position');\n const categoryScales = scales.filter((scale: Scale) => scale.isCategory);\n\n const groupedArray = this.groupData(data); // 数据分组\n const beforeAdjust = [];\n for (let i = 0, len = groupedArray.length; i < len; i++) {\n const subData = groupedArray[i];\n const arr = [];\n for (let j = 0, subLen = subData.length; j < subLen; j++) {\n const originData = subData[j];\n const item = {};\n // tslint:disable-next-line: forin\n for (const k in originData) {\n item[k] = originData[k];\n }\n item[FIELD_ORIGIN] = originData;\n\n // 将分类数据翻译成数据, 仅对位置相关的度量进行数字化处理\n for (const scale of categoryScales) {\n const field = scale.field;\n item[field] = scale.translate(item[field]);\n }\n arr.push(item);\n }\n beforeAdjust.push(arr);\n }\n\n const dataArray = this.adjustData(beforeAdjust); // 进行 adjust 数据调整\n this.beforeMappingData = dataArray;\n\n return dataArray;\n }\n\n // 调整数据\n private adjustData(dataArray: Data[]): Data[] {\n const adjustOption = this.adjustOption;\n const { intervalPadding, dodgePadding, theme } = this;\n // 兼容theme配置\n const maxColumnWidth = this.maxColumnWidth || theme.maxColumnWidth;\n const minColumnWidth = this.minColumnWidth || theme.minColumnWidth;\n const columnWidthRatio = this.columnWidthRatio || theme.columnWidthRatio;\n let result = dataArray;\n\n if (adjustOption) {\n const xScale = this.getXScale();\n const yScale = this.getYScale();\n const xField = xScale.field;\n const yField = yScale ? yScale.field : null;\n const xDimensionLength = getXDimensionLength(this.coordinate);\n const groupNum = xScale.values.length;\n // 传入size计算相关参数,默认宽度、最大最小宽度约束\n const sizeAttr = this.getAttribute('size');\n let defaultSize;\n if (sizeAttr) {\n defaultSize = sizeAttr.values[0];\n }\n for (let i = 0, len = adjustOption.length; i < len; i++) {\n const adjust = adjustOption[i];\n const adjustCfg: AdjustInstanceCfg = {\n xField,\n yField,\n intervalPadding,\n dodgePadding,\n xDimensionLength,\n groupNum,\n defaultSize,\n maxColumnWidth,\n minColumnWidth,\n columnWidthRatio,\n ...adjust,\n };\n const type = adjust.type;\n if (type === 'dodge') {\n const adjustNames = [];\n if (xScale.isCategory || xScale.type === 'identity') {\n adjustNames.push('x');\n } else if (!yScale) {\n adjustNames.push('y');\n } else {\n throw new Error('dodge is not support linear attribute, please use category attribute!');\n }\n adjustCfg.adjustNames = adjustNames;\n // 每个分组内每条柱子的宽度占比,用户不可指定,用户需要通过 columnWidthRatio 指定\n // 兼容theme配置\n adjustCfg.dodgeRatio = columnWidthRatio;\n } else if (type === 'stack') {\n const coordinate = this.coordinate;\n if (!yScale) {\n // 一维的情况下获取高度和默认size\n adjustCfg.height = coordinate.getHeight();\n const size = this.getDefaultValue('size') || 3;\n adjustCfg.size = size;\n }\n // 不进行 transpose 时,用户又没有设置这个参数时,默认从上向下\n if (!coordinate.isTransposed && isNil(adjustCfg.reverseOrder)) {\n adjustCfg.reverseOrder = true;\n }\n }\n const adjustCtor = getAdjustClass(type);\n adjustCfg.dimValuesMap = {};\n //生成dimValuesMap\n if (xScale && xScale.values) {\n adjustCfg.dimValuesMap[xScale.field] = xScale.values.map((v) => xScale.translate(v));\n }\n const adjustInstance = new adjustCtor(adjustCfg);\n\n result = adjustInstance.process(result);\n\n this.adjusts[type] = adjustInstance;\n }\n }\n\n return result;\n }\n\n // 对数据进行分组\n private groupData(data: Data): Data[] {\n const groupScales = this.getGroupScales();\n const scaleDefs = this.scaleDefs;\n const appendConditions = {};\n const groupFields = [];\n for (let index = 0; index < groupScales.length; index++) {\n const scale = groupScales[index];\n const field = scale.field;\n groupFields.push(field);\n if (get(scaleDefs, [field, 'values'])) {\n // 用户通过 view.scale() 接口指定了 values 属性\n appendConditions[field] = scaleDefs[field].values;\n }\n }\n\n return group(data, groupFields, appendConditions);\n }\n\n // 更新发生层叠后的数据对应的度量范围\n private updateStackRange(scale: Scale, dataArray: Data[]) {\n const mergeArray = flatten(dataArray);\n const field = scale.field;\n let min = scale.min;\n let max = scale.max;\n for (let index = 0; index < mergeArray.length; index++) {\n const obj = mergeArray[index];\n const tmpMin = Math.min.apply(null, obj[field]);\n const tmpMax = Math.max.apply(null, obj[field]);\n if (tmpMin < min) {\n min = tmpMin;\n }\n if (tmpMax > max) {\n max = tmpMax;\n }\n }\n const scaleDefs = this.scaleDefs;\n const cfg: LooseObject = {};\n if (min < scale.min && !get(scaleDefs, [field, 'min'])) {\n // 用户如果在列定义中定义了 min,则以用户定义的为准\n cfg.min = min;\n }\n if (max > scale.max && !get(scaleDefs, [field, 'max'])) {\n // 用户如果在列定义中定义了 max\n cfg.max = max;\n }\n\n scale.change(cfg);\n }\n\n // 将数据映射至图形空间前的操作:排序以及关键点的生成\n private beforeMapping(beforeMappingData: Data[]) {\n // 当初加 clone 是因为 points 的引用关系,导致更新失败,可是现在貌似复现不出来了,所以暂时不进行 clone\n // const source = clone(beforeMappingData);\n const source = beforeMappingData;\n if (this.sortable) {\n this.sort(source);\n }\n if (this.generatePoints) {\n // 需要生成关键点\n for (let index = 0, length = source.length; index < length; index++) {\n const currentData = source[index];\n this.generateShapePoints(currentData);\n const nextData = source[index + 1];\n if (nextData) {\n this.generateShapePoints(nextData);\n currentData[0].nextPoints = nextData[0].points;\n }\n }\n }\n\n return source;\n }\n\n // 生成 shape 的关键点\n private generateShapePoints(data: Data) {\n const shapeFactory = this.getShapeFactory();\n const shapeAttr = this.getAttribute('shape');\n for (let index = 0; index < data.length; index++) {\n const obj = data[index];\n const cfg = this.createShapePointsCfg(obj);\n const shape = shapeAttr ? this.getAttributeValues(shapeAttr, obj) : null;\n const points = shapeFactory.getShapePoints(shape, cfg);\n obj.points = points;\n }\n }\n\n // 将数据归一化\n private normalizeValues(values, scale) {\n let rst = [];\n if (isArray(values)) {\n for (let index = 0; index < values.length; index++) {\n const value = values[index];\n rst.push(scale.scale(value));\n }\n } else {\n rst = scale.scale(values);\n }\n return rst;\n }\n\n // 将数据映射至图形空间\n private mapping(data: Data): MappingDatum[] {\n const attributes = this.attributes;\n const mappingData = [];\n for (let index = 0; index < data.length; index++) {\n const record = data[index];\n const newRecord: MappingDatum = {\n _origin: record[FIELD_ORIGIN],\n points: record.points,\n nextPoints: record.nextPoints,\n };\n for (const k in attributes) {\n if (attributes.hasOwnProperty(k)) {\n const attr = attributes[k];\n const names = attr.names;\n const values = this.getAttributeValues(attr, record);\n if (names.length > 1) {\n // position 之类的生成多个字段的属性\n for (let j = 0; j < values.length; j += 1) {\n const val = values[j];\n const name = names[j];\n newRecord[name] = isArray(val) && val.length === 1 ? val[0] : val; // 只有一个值时返回第一个属性值\n }\n } else {\n // values.length === 1 的判断是以下情况,获取用户设置的图形属性值\n // shape('a', ['dot', 'dash']), color('a', ['red', 'yellow'])\n newRecord[names[0]] = values.length === 1 ? values[0] : values;\n }\n }\n }\n\n this.convertPoint(newRecord); // 将 x、y 转换成画布坐标\n mappingData.push(newRecord);\n }\n\n return mappingData;\n }\n\n // 将归一化的坐标值转换成画布坐标\n private convertPoint(mappingRecord: MappingDatum) {\n const { x, y } = mappingRecord;\n\n let rstX;\n let rstY;\n let obj;\n const coordinate = this.coordinate;\n if (isArray(x) && isArray(y)) {\n rstX = [];\n rstY = [];\n for (let i = 0, j = 0, xLen = x.length, yLen = y.length; i < xLen && j < yLen; i += 1, j += 1) {\n obj = coordinate.convert({\n x: x[i],\n y: y[j],\n });\n rstX.push(obj.x);\n rstY.push(obj.y);\n }\n } else if (isArray(y)) {\n rstY = [];\n for (let index = 0; index < y.length; index++) {\n const yVal = y[index];\n obj = coordinate.convert({\n x: x as number,\n y: yVal,\n });\n if (rstX && rstX !== obj.x) {\n if (!isArray(rstX)) {\n rstX = [rstX];\n }\n rstX.push(obj.x);\n } else {\n rstX = obj.x;\n }\n rstY.push(obj.y);\n }\n } else if (isArray(x)) {\n rstX = [];\n for (let index = 0; index < x.length; index++) {\n const xVal = x[index];\n obj = coordinate.convert({\n x: xVal,\n y,\n });\n if (rstY && rstY !== obj.y) {\n if (!isArray(rstY)) {\n rstY = [rstY];\n }\n rstY.push(obj.y);\n } else {\n rstY = obj.y;\n }\n rstX.push(obj.x);\n }\n } else {\n const point = coordinate.convert({\n x,\n y,\n });\n rstX = point.x;\n rstY = point.y;\n }\n mappingRecord.x = rstX;\n mappingRecord.y = rstY;\n }\n\n // 获取 style 配置\n private getStyleCfg(styleOption: StyleOption, originData: Datum) {\n const { fields = [], callback, cfg } = styleOption;\n if (cfg) {\n // 用户直接配置样式属性\n return cfg;\n }\n\n const params = fields.map((field) => {\n return originData[field];\n });\n\n return callback(...params);\n }\n\n private setCfg(cfg: InitCfg) {\n const { coordinate, data, theme, scaleDefs } = cfg;\n if (coordinate) {\n this.coordinate = coordinate;\n }\n if (data) {\n this.data = data;\n }\n if (scaleDefs) {\n this.scaleDefs = scaleDefs;\n this.idFields = [];\n each(scaleDefs, (scaleDef, field) => {\n if (scaleDef && scaleDef.key) {\n this.idFields.push(field);\n }\n });\n }\n if (theme) {\n this.theme = this.userTheme ? deepMix({}, theme, this.userTheme) : theme; // 支持 geometry 层级的主题设置\n }\n }\n\n private async renderLabels(mappingArray: MappingDatum[], isUpdate: boolean = false) {\n let geometryLabel = this.geometryLabel;\n\n this.emit(GEOMETRY_LIFE_CIRCLE.BEFORE_RENDER_LABEL);\n\n if (!geometryLabel) {\n // 初次创建\n const labelType = this.getLabelType();\n const GeometryLabelsCtor = getGeometryLabel(labelType);\n geometryLabel = new GeometryLabelsCtor(this);\n this.geometryLabel = geometryLabel;\n }\n await geometryLabel.render(mappingArray, isUpdate);\n\n // 将 label 同 element 进行关联\n const labelsMap = geometryLabel.labelsRenderer.shapesMap;\n // Store labels for every element.\n const elementLabels = new Map>();\n each(labelsMap, (labelGroup: IGroup, labelGroupId: string) => {\n const labelChildren = labelGroup.getChildren() || [];\n for (let j = 0; j < labelChildren.length; j++) {\n const labelShape = labelChildren[j];\n const element = this.elementsMap[labelShape.get('elementId') || labelGroupId.split(' ')[0]];\n if (element) {\n labelShape.cfg.name = ['element', 'label'];\n labelShape.cfg.element = element;\n const labels = elementLabels.get(element) || new Set();\n labels.add(labelGroup);\n elementLabels.set(element, labels);\n }\n }\n });\n for (const [element, labels] of elementLabels.entries()) {\n element.labelShape = [...labels];\n }\n\n this.emit(GEOMETRY_LIFE_CIRCLE.AFTER_RENDER_LABEL);\n }\n /**\n * 是否需要进行群组入场动画\n * 规则:\n * 1. 如果发生更新,则不进行\n * 2. 如果用户关闭 geometry 动画,则不进行\n * 3. 如果用户关闭了 appear 动画,则不进行\n * 4. 如果用户配置了 appear.animation,则不进行\n */\n private canDoGroupAnimation(isUpdate: boolean) {\n return (\n !isUpdate &&\n this.animateOption &&\n (get(this.animateOption, 'appear') === undefined ||\n (get(this.animateOption, 'appear') && get(this.animateOption, ['appear', 'animation']) === undefined))\n );\n }\n}\n","import { ext } from '@antv/matrix-util';\nimport { IElement, IGroup, IShape } from '../dependents';\n\nconst transform: (m: number[], actions: any[][]) => number[] = ext.transform;\n\nexport { transform };\n\n/**\n * 对元素进行平移操作。\n * @param element 进行变换的元素\n * @param x x 方向位移\n * @param y y 方向位移\n */\nexport function translate(element: IGroup | IShape, x: number, y: number) {\n const matrix = transform(element.getMatrix(), [['t', x, y]]);\n element.setMatrix(matrix);\n}\n\n/**\n * 获取元素旋转矩阵 (以元素的左上角为旋转点)\n * @param element 进行变换的元素\n * @param rotateRadian 旋转弧度\n */\nexport function getRotateMatrix(element: IElement, rotateRadian: number) {\n const { x, y } = element.attr();\n const matrix = transform(element.getMatrix(), [\n ['t', -x, -y],\n ['r', rotateRadian],\n ['t', x, y],\n ]);\n return matrix;\n}\n\n/**\n * 对元素进行旋转操作。\n * @param element 进行变换的元素\n * @param rotateRadian 旋转弧度\n */\nexport function rotate(element: IGroup | IShape, rotateRadian: number) {\n const matrix = getRotateMatrix(element, rotateRadian);\n element.setMatrix(matrix);\n}\n\n/**\n * 获取元矩阵。\n * @returns identity matrix\n */\nexport function getIdentityMatrix(): number[] {\n return [1, 0, 0, 0, 1, 0, 0, 0, 1];\n}\n\n/**\n * 围绕图形中心点进行缩放\n * @param element 进行缩放的图形元素\n * @param ratio 缩放比例\n */\nexport function zoom(element: IGroup | IShape, ratio: number) {\n const bbox = element.getBBox();\n const x = (bbox.minX + bbox.maxX) / 2;\n const y = (bbox.minY + bbox.maxY) / 2;\n element.applyToMatrix([x, y, 1]);\n\n const matrix = transform(element.getMatrix(), [\n ['t', -x, -y],\n ['s', ratio, ratio],\n ['t', x, y],\n ]);\n element.setMatrix(matrix);\n}\n","/**\n * @file utils of label\n */\n\nimport { isNil, isNumber, some } from '@antv/util';\nimport { IElement, IGroup, BBox } from '../../../dependents';\nimport { rotate } from '../../../util/transform';\n\n/**\n * 查找 Label Group 中的文本 shape 对象\n * @param label\n */\nexport function findLabelTextShape(label: IGroup): IElement {\n return label.find((el) => el.get('type') === 'text');\n}\n\n/**\n * 获取标签背景信息: box (无旋转) + rotation (旋转角度)\n */\nexport function getLabelBackgroundInfo(\n labelGroup: IGroup,\n labelItem: { rotate?: number;[key: string]: any },\n padding: number | number[] = [0, 0, 0, 0]\n): { x: number; y: number; width: number; height: number; rotation: number } {\n const content = labelGroup && labelGroup.getChildren()[0];\n if (content) {\n const labelShape = content.clone();\n\n // revert rotate\n if (labelItem?.rotate) {\n rotate(labelShape as IGroup, -labelItem.rotate);\n }\n\n // use `getCanvasBBox`, because if Shape is been translated, `getBBox` is not the actual box position\n const { x, y, width, height } = labelShape.getCanvasBBox();\n\n labelShape.destroy();\n\n let boxPadding = padding;\n if (isNil(boxPadding)) {\n boxPadding = [2, 2, 2, 2];\n } else if (isNumber(boxPadding)) {\n boxPadding = new Array(4).fill(boxPadding);\n }\n\n return {\n x: x - boxPadding[3],\n y: y - boxPadding[0],\n width: width + boxPadding[1] + boxPadding[3],\n height: height + boxPadding[0] + boxPadding[2],\n rotation: labelItem?.rotate || 0,\n };\n }\n\n return { x: 0, y: 0, width: 0, height: 0, rotation: 0 };\n}\n\n/**\n * 计算两个矩形之间的堆叠区域面积\n */\nexport function getOverlapArea(a: BBox, b: BBox, margin = 0) {\n const xOverlap = Math.max(\n 0,\n Math.min(a.x + a.width + margin, b.x + b.width + margin) - Math.max(a.x - margin, b.x - margin)\n );\n const yOverlap = Math.max(\n 0,\n Math.min(a.y + a.height + margin, b.y + b.height + margin) - Math.max(a.y - margin, b.y - margin)\n );\n\n return xOverlap * yOverlap;\n}\n\n/** 检测是否和已布局的堆叠 */\nexport function checkShapeOverlap(cur: IElement, dones: IElement[]) {\n const box = cur.getBBox();\n return some(dones, (done) => {\n const target = done.getBBox();\n return getOverlapArea(box, target, 2) > 0;\n });\n}\n","import { Coordinate } from '@antv/coord';\nimport { IGroup, IShape } from '@antv/g-base';\nimport { each, get, isArray } from '@antv/util';\nimport { doAnimate } from '../animate';\nimport { getReplaceAttrs } from '../util/graphics';\n\n/** label 的必要配置 */\ntype Cfg = {\n data: any;\n origin: any;\n animateCfg: any;\n coordinate: Coordinate;\n};\n\n/**\n * @desc 更新 label (目前没有根据 id 索引,还是会存在一点小问题的,只能根据 idx 索引)\n * @done shape 属性更新\n * @done shape delete\n * @done shape append\n *\n * @param fromShape old labelShape\n * @param toShape new labelShape\n * @param cfg\n */\nexport function updateLabel(fromShape: IGroup, toShape: IGroup, cfg: Cfg): void {\n const { data, origin, animateCfg, coordinate } = cfg;\n const updateAnimateCfg = get(animateCfg, 'update');\n\n fromShape.set('data', data);\n fromShape.set('origin', origin);\n fromShape.set('animateCfg', animateCfg);\n fromShape.set('coordinate', coordinate);\n fromShape.set('visible', toShape.get('visible'));\n\n (fromShape.getChildren() || []).forEach((fromChild, idx) => {\n const toChild = toShape.getChildByIndex(idx) as IShape;\n if (!toChild) {\n fromShape.removeChild(fromChild);\n fromChild.remove(true);\n } else {\n fromChild.set('data', data);\n fromChild.set('origin', origin);\n fromChild.set('animateCfg', animateCfg);\n fromChild.set('coordinate', coordinate);\n\n const newAttrs = getReplaceAttrs(fromChild as IShape, toChild);\n if (updateAnimateCfg) {\n doAnimate(fromChild as IShape, updateAnimateCfg, {\n toAttrs: newAttrs,\n coordinate,\n });\n } else {\n fromChild.attr(newAttrs);\n }\n if (toChild.isGroup()) {\n updateLabel(fromChild as any, toChild as any, cfg);\n }\n }\n });\n\n // append\n each(toShape.getChildren(), (child, idx) => {\n if (isArray(fromShape.getChildren()) && idx >= fromShape.getCount()) {\n if (!child.destroyed) {\n fromShape.add(child);\n }\n }\n });\n}\n","import { deepMix, each, get, isArray, isNull } from '@antv/util';\nimport { BBox, Coordinate, IGroup, IShape } from '../dependents';\nimport { LabelItem } from '../geometry/label/interface';\nimport { AnimateOption, GeometryLabelLayoutCfg } from '../interface';\nimport { doAnimate } from '../animate';\nimport { getGeometryLabelLayout } from '../geometry/label';\nimport { getLabelBackgroundInfo } from '../geometry/label/util';\nimport { polarToCartesian } from '../util/graphics';\nimport { rotate, translate } from '../util/transform';\nimport { FIELD_ORIGIN } from '../constant';\nimport { updateLabel } from './update-label';\n\n/**\n * Labels 实例创建时,传入构造函数的参数定义\n */\nexport interface LabelsGroupCfg {\n /** label 容器 */\n container: IGroup;\n /** label 布局配置 */\n layout?: GeometryLabelLayoutCfg | GeometryLabelLayoutCfg[];\n}\n\n/**\n * Geometry labels 渲染组件\n */\nexport default class Labels {\n /** 用于指定 labels 布局的类型 */\n public layout: GeometryLabelLayoutCfg | GeometryLabelLayoutCfg[];\n /** 图形容器 */\n public container: IGroup;\n /** 动画配置 */\n public animate: AnimateOption | false;\n /** label 绘制的区域 */\n public region: BBox;\n\n /** 存储当前 shape 的映射表,键值为 shape id */\n public shapesMap: Record = {};\n\n constructor(cfg: LabelsGroupCfg) {\n const { layout, container } = cfg;\n\n this.layout = layout;\n this.container = container;\n }\n /**\n * 渲染文本\n */\n public async render(items: LabelItem[], shapes: Record, isUpdate: boolean = false) {\n const shapesMap = {};\n const offscreenGroup = this.createOffscreenGroup(); // 创建虚拟分组\n if (items.length) {\n // 如果 items 空的话就不进行绘制调整操作\n // step 1: 在虚拟 group 中创建 shapes\n for (const item of items) {\n if (item) {\n shapesMap[item.id] = this.renderLabel(item, offscreenGroup);\n }\n }\n // [todo] Move layout into Worker.\n // step 2: 根据布局,调整 labels\n await this.doLayout(items, shapes, shapesMap);\n\n // step 3.1: 绘制 labelLine\n this.renderLabelLine(items, shapesMap);\n // step 3.2: 绘制 labelBackground\n this.renderLabelBackground(items, shapesMap);\n // step 4: 根据用户设置的偏移量调整 label\n this.adjustLabel(items, shapesMap);\n }\n\n // 进行添加、更新、销毁操作\n const lastShapesMap = this.shapesMap;\n each(shapesMap, (shape, id) => {\n if (shape.destroyed) {\n // label 在布局调整环节被删除了(doLayout)\n delete shapesMap[id];\n } else {\n if (lastShapesMap[id]) {\n // 图形发生更新\n const data = shape.get('data');\n const origin = shape.get('origin');\n const coordinate = shape.get('coordinate');\n const currentAnimateCfg = shape.get('animateCfg');\n\n const currentShape = lastShapesMap[id]; // 已经在渲染树上的 shape\n updateLabel(currentShape, shapesMap[id], {\n data,\n origin,\n animateCfg: currentAnimateCfg,\n coordinate,\n });\n\n shapesMap[id] = currentShape; // 保存引用\n } else {\n // 新生成的 shape\n // If container has been destroyed, no need to render labels.\n if (this.container.destroyed) return;\n this.container.add(shape);\n const animateCfg = get(shape.get('animateCfg'), isUpdate ? 'enter' : 'appear');\n if (animateCfg) {\n doAnimate(shape, animateCfg, {\n toAttrs: {\n ...shape.attr(),\n },\n coordinate: shape.get('coordinate'),\n });\n }\n }\n delete lastShapesMap[id];\n }\n });\n\n // 移除\n each(lastShapesMap, (deleteShape) => {\n const animateCfg = get(deleteShape.get('animateCfg'), 'leave');\n if (animateCfg) {\n doAnimate(deleteShape, animateCfg, {\n toAttrs: null,\n coordinate: deleteShape.get('coordinate'),\n });\n } else {\n deleteShape.remove(true); // 移除\n }\n });\n\n this.shapesMap = shapesMap;\n offscreenGroup.destroy();\n }\n\n /** 清除当前 labels */\n public clear() {\n this.container.clear();\n this.shapesMap = {};\n }\n\n /** 销毁 */\n public destroy() {\n this.container.destroy();\n this.shapesMap = null;\n }\n\n private renderLabel(cfg: LabelItem, container: IGroup): IGroup {\n const { id, elementId, data, mappingData, coordinate, animate, content, capture } = cfg;\n const shapeAppendCfg = {\n id,\n elementId,\n capture,\n data,\n origin: {\n ...mappingData,\n data: mappingData[FIELD_ORIGIN],\n },\n coordinate,\n };\n const labelGroup = container.addGroup({\n name: 'label',\n // 如果 this.animate === false 或者 cfg.animate === false/null 则不进行动画,否则进行动画配置的合并\n animateCfg:\n this.animate === false || animate === null || animate === false ? false : deepMix({}, this.animate, animate),\n ...shapeAppendCfg,\n });\n let labelShape;\n if ((content.isGroup && content.isGroup()) || (content.isShape && content.isShape())) {\n // 如果 content 是 Group 或者 Shape,根据 textAlign 调整位置后,直接将其加入 labelGroup\n const { width, height } = content.getCanvasBBox();\n const textAlign = get(cfg, 'textAlign', 'left');\n\n let x = cfg.x;\n const y = cfg.y - height / 2;\n\n if (textAlign === 'center') {\n x = x - width / 2;\n } else if (textAlign === 'right' || textAlign === 'end') {\n x = x - width;\n }\n\n translate(content, x, y); // 将 label 平移至 x, y 指定的位置\n labelShape = content;\n labelGroup.add(content);\n } else {\n const fill = get(cfg, ['style', 'fill']);\n labelShape = labelGroup.addShape('text', {\n attrs: {\n x: cfg.x,\n y: cfg.y,\n textAlign: cfg.textAlign,\n textBaseline: get(cfg, 'textBaseline', 'middle'),\n text: cfg.content,\n ...cfg.style,\n fill: isNull(fill) ? cfg.color : fill,\n },\n ...shapeAppendCfg,\n });\n }\n\n if (cfg.rotate) {\n rotate(labelShape, cfg.rotate);\n }\n return labelGroup;\n }\n\n // 根据type对label布局\n private async doLayout(items: LabelItem[], shapes: Record, shapesMap: Record) {\n if (this.layout) {\n const layouts = isArray(this.layout) ? this.layout : [this.layout];\n await Promise.all(layouts.map((layout: GeometryLabelLayoutCfg) => {\n const layoutFn = getGeometryLabelLayout(get(layout, 'type', ''));\n if (!layoutFn) return;\n\n const labelShapes = [];\n const geometryShapes = [];\n each(shapesMap, (labelShape, id) => {\n labelShapes.push(labelShape);\n geometryShapes.push(shapes[labelShape.get('elementId')]);\n });\n // [todo] Refactor more layout into Worker.\n return layoutFn(items, labelShapes, geometryShapes, this.region, layout.cfg);\n }));\n }\n }\n\n private renderLabelLine(labelItems: LabelItem[], shapesMap) {\n each(labelItems, (labelItem) => {\n const coordinate: Coordinate = get(labelItem, 'coordinate');\n if (!labelItem || !coordinate) {\n return;\n }\n const center = coordinate.getCenter();\n const radius = coordinate.getRadius();\n if (!labelItem.labelLine) {\n // labelLine: null | false,关闭 label 对应的 labelLine\n return;\n }\n const labelLineCfg = get(labelItem, 'labelLine', {});\n const id = labelItem.id;\n let path = labelLineCfg.path;\n if (!path) {\n const start = polarToCartesian(center.x, center.y, radius, labelItem.angle);\n path = [\n ['M', start.x, start.y],\n ['L', labelItem.x, labelItem.y],\n ];\n }\n const labelGroup = shapesMap[id];\n if (!labelGroup.destroyed) {\n labelGroup.addShape('path', {\n capture: false, // labelLine 默认不参与事件捕获\n attrs: {\n path,\n stroke: labelItem.color ? labelItem.color : get(labelItem, ['style', 'fill'], '#000'),\n fill: null,\n ...labelLineCfg.style,\n },\n id,\n origin: labelItem.mappingData,\n data: labelItem.data,\n coordinate: labelItem.coordinate,\n });\n }\n });\n }\n\n /**\n * 绘制标签背景\n * @param labelItems\n */\n private renderLabelBackground(labelItems: LabelItem[], shapesMap) {\n each(labelItems, (labelItem) => {\n const coordinate: Coordinate = get(labelItem, 'coordinate');\n const background: LabelItem['background'] = get(labelItem, 'background');\n if (!background || !coordinate) {\n return;\n }\n\n const id = labelItem.id;\n const labelGroup = shapesMap[id];\n if (!labelGroup.destroyed) {\n const labelContentShape = labelGroup.getChildren()[0];\n if (labelContentShape) {\n const { rotation, ...box } = getLabelBackgroundInfo(labelGroup, labelItem, background.padding);\n const backgroundShape = labelGroup.addShape('rect', {\n attrs: {\n ...box,\n ...(background.style || {}),\n },\n id,\n origin: labelItem.mappingData,\n data: labelItem.data,\n coordinate: labelItem.coordinate,\n });\n backgroundShape.setZIndex(-1);\n\n if (rotation) {\n const matrix = labelContentShape.getMatrix();\n backgroundShape.setMatrix(matrix);\n }\n }\n }\n });\n }\n\n private createOffscreenGroup() {\n const container = this.container;\n const GroupClass = container.getGroupBase(); // 获取分组的构造函数\n const newGroup = new GroupClass({});\n return newGroup;\n }\n\n private adjustLabel(items: LabelItem[], shapesMap) {\n each(items, (item) => {\n if (item) {\n const id = item.id;\n const labelGroup = shapesMap[id];\n if (!labelGroup.destroyed) {\n // fix: 如果说开发者的 label content 是一个 group,此处的偏移无法对 整个 content group 生效;场景类似 饼图 spider label 是一个含 2 个 textShape 的 gorup\n const labelShapes = labelGroup.findAll((ele) => ele.get('type') !== 'path');\n each(labelShapes, (labelShape) => {\n if (labelShape) {\n if (item.offsetX) {\n labelShape.attr('x', labelShape.attr('x') + item.offsetX);\n }\n if (item.offsetY) {\n labelShape.attr('y', labelShape.attr('y') + item.offsetY);\n }\n }\n });\n }\n }\n });\n }\n}\n","import { deepMix, each, get, isArray, isFunction, isNil, isNumber, isString, isUndefined } from '@antv/util';\n\nimport { FIELD_ORIGIN } from '../../constant';\nimport { Scale } from '../../dependents';\nimport { Datum, LabelOption, MappingDatum, Point } from '../../interface';\nimport { LabelCfg, LabelItem, LabelPointCfg, TextAlign } from './interface';\n\nimport { getDefaultAnimateCfg } from '../../animate';\nimport { getPolygonCentroid } from '../../util/graphics';\n\nimport Labels from '../../component/labels';\nimport Geometry from '../base';\nimport Element from '../element';\n\nexport type GeometryLabelConstructor = new (cfg: any) => GeometryLabel;\n\nfunction avg(arr: number[]) {\n let sum = 0;\n each(arr, (value: number) => {\n sum += value;\n });\n return sum / arr.length;\n}\n\n/**\n * Geometry Label 基类,用于生成 Geometry 下所有 label 的配置项信息\n */\nexport default class GeometryLabel {\n /** geometry 实例 */\n public readonly geometry: Geometry;\n public labelsRenderer: Labels;\n /** 默认的布局 */\n public defaultLayout: string;\n\n constructor(geometry: Geometry) {\n this.geometry = geometry;\n }\n\n public getLabelItems(mapppingArray: MappingDatum[]): LabelItem[] {\n const items = [];\n const labelCfgs = this.getLabelCfgs(mapppingArray);\n // 获取 label 相关的 x,y 的值,获取具体的 x, y,防止存在数组\n each(mapppingArray, (mappingData: MappingDatum, index: number) => {\n const labelCfg = labelCfgs[index];\n if (!labelCfg || isNil(mappingData.x) || isNil(mappingData.y)) {\n items.push(null);\n return;\n }\n\n const labelContent = !isArray(labelCfg.content) ? [labelCfg.content] : labelCfg.content;\n labelCfg.content = labelContent;\n const total = labelContent.length;\n each(labelContent, (content, subIndex) => {\n if (isNil(content) || content === '') {\n items.push(null);\n return;\n }\n\n const item = {\n ...labelCfg,\n ...this.getLabelPoint(labelCfg, mappingData, subIndex),\n };\n if (!item.textAlign) {\n item.textAlign = this.getLabelAlign(item, subIndex, total);\n }\n\n if (item.offset <= 0) {\n item.labelLine = null;\n }\n\n items.push(item);\n });\n });\n return items;\n }\n\n public async render(mappingArray: MappingDatum[], isUpdate: boolean = false) {\n const labelItems = this.getLabelItems(mappingArray);\n const labelsRenderer = this.getLabelsRenderer();\n const shapes = this.getGeometryShapes();\n // 渲染文本\n await labelsRenderer.render(labelItems, shapes, isUpdate);\n }\n\n public clear() {\n const labelsRenderer = this.labelsRenderer;\n if (labelsRenderer) {\n labelsRenderer.clear();\n }\n }\n\n public destroy() {\n const labelsRenderer = this.labelsRenderer;\n if (labelsRenderer) {\n labelsRenderer.destroy();\n }\n this.labelsRenderer = null;\n }\n\n // geometry 更新之后,对应的 Coordinate 也会更新,为了获取到最新鲜的 Coordinate,故使用方法获取\n public getCoordinate() {\n return this.geometry.coordinate;\n }\n\n /**\n * 获取 label 的默认配置\n */\n protected getDefaultLabelCfg(offset?: number, position?: string) {\n const geometry = this.geometry;\n const { type, theme } = geometry;\n\n if (\n type === 'polygon' ||\n (type === 'interval' && position === 'middle') ||\n (offset < 0 && !['line', 'point', 'path'].includes(type))\n ) {\n // polygon 或者 (interval 且 middle) 或者 offset 小于 0 时,文本展示在图形内部,将其颜色设置为 白色\n return get(theme, 'innerLabels', {});\n }\n\n return get(theme, 'labels', {});\n }\n\n /**\n * 获取当前 label 的最终配置\n * @param labelCfg\n */\n protected getThemedLabelCfg(labelCfg: LabelCfg) {\n const geometry = this.geometry;\n const defaultLabelCfg = this.getDefaultLabelCfg();\n const { type, theme } = geometry;\n let themedLabelCfg;\n\n if (type === 'polygon' || (labelCfg.offset < 0 && !['line', 'point', 'path'].includes(type))) {\n // polygon 或者 offset 小于 0 时,文本展示在图形内部,将其颜色设置为 白色\n themedLabelCfg = deepMix({}, defaultLabelCfg, theme.innerLabels, labelCfg);\n } else {\n themedLabelCfg = deepMix({}, defaultLabelCfg, theme.labels, labelCfg);\n }\n\n return themedLabelCfg;\n }\n\n /**\n * 设置 label 位置\n * @param labelPointCfg\n * @param mappingData\n * @param index\n * @param position\n */\n protected setLabelPosition(\n labelPointCfg: LabelPointCfg,\n mappingData: MappingDatum,\n index: number,\n position: string\n ) {}\n\n /**\n * @desc 获取 label offset\n */\n protected getLabelOffset(offset: number | string): number {\n const coordinate = this.getCoordinate();\n const vector = this.getOffsetVector(offset);\n return coordinate.isTransposed ? vector[0] : vector[1];\n }\n\n /**\n * 获取每个 label 的偏移量 (矢量)\n * @param labelCfg\n * @param index\n * @param total\n * @return {Point} offsetPoint\n */\n protected getLabelOffsetPoint(labelCfg: LabelCfg, index: number, total: number): Point {\n const offset = labelCfg.offset;\n const coordinate = this.getCoordinate();\n const transposed = coordinate.isTransposed;\n const dim = transposed ? 'x' : 'y';\n const factor = transposed ? 1 : -1; // y 方向上越大,像素的坐标越小,所以transposed时将系数变成\n const offsetPoint = {\n x: 0,\n y: 0,\n };\n if (index > 0 || total === 1) {\n // 判断是否小于0\n offsetPoint[dim] = offset * factor;\n } else {\n offsetPoint[dim] = offset * factor * -1;\n }\n return offsetPoint;\n }\n\n /**\n * 获取每个 label 的位置\n * @param labelCfg\n * @param mappingData\n * @param index\n * @returns label point\n */\n protected getLabelPoint(labelCfg: LabelCfg, mappingData: MappingDatum, index: number): LabelPointCfg {\n const coordinate = this.getCoordinate();\n const total = labelCfg.content.length;\n\n function getDimValue(value: number | number[], idx: number, isAvg = false) {\n let v = value;\n if (isArray(v)) {\n if (labelCfg.content.length === 1) {\n if (isAvg) {\n v = avg(v);\n } else {\n // 如果仅一个 label,多个 y, 取最后一个 y\n if (v.length <= 2) {\n v = v[(value as number[]).length - 1];\n } else {\n v = avg(v);\n }\n }\n } else {\n v = v[idx];\n }\n }\n return v;\n }\n\n const label = {\n content: labelCfg.content[index],\n x: 0,\n y: 0,\n start: { x: 0, y: 0 },\n color: '#fff',\n };\n const shape = isArray(mappingData.shape) ? mappingData.shape[0] : mappingData.shape;\n const isFunnel = shape === 'funnel' || shape === 'pyramid';\n\n // 多边形场景,多用于地图\n if (this.geometry.type === 'polygon') {\n const centroid = getPolygonCentroid(mappingData.x, mappingData.y);\n label.x = centroid[0];\n label.y = centroid[1];\n } else if (this.geometry.type === 'interval' && !isFunnel) {\n // 对直方图的label X 方向的位置居中\n label.x = getDimValue(mappingData.x, index, true);\n label.y = getDimValue(mappingData.y, index);\n } else {\n label.x = getDimValue(mappingData.x, index);\n label.y = getDimValue(mappingData.y, index);\n }\n\n // 处理漏斗图文本位置\n if (isFunnel) {\n const nextPoints = get(mappingData, 'nextPoints');\n const points = get(mappingData, 'points');\n if (nextPoints) {\n // 非漏斗图底部\n const point1 = coordinate.convert(points[1] as Point);\n const point2 = coordinate.convert(nextPoints[1] as Point);\n label.x = (point1.x + point2.x) / 2;\n label.y = (point1.y + point2.y) / 2;\n } else if (shape === 'pyramid') {\n const point1 = coordinate.convert(points[1] as Point);\n const point2 = coordinate.convert(points[2] as Point);\n label.x = (point1.x + point2.x) / 2;\n label.y = (point1.y + point2.y) / 2;\n }\n }\n\n if (labelCfg.position) {\n // 如果 label 支持 position 属性\n this.setLabelPosition(label, mappingData, index, labelCfg.position);\n }\n const offsetPoint = this.getLabelOffsetPoint(labelCfg, index, total);\n label.start = { x: label.x, y: label.y };\n label.x += offsetPoint.x;\n label.y += offsetPoint.y;\n label.color = mappingData.color;\n return label;\n }\n\n /**\n * 获取文本的对齐方式\n * @param item\n * @param index\n * @param total\n * @returns\n */\n protected getLabelAlign(item: LabelItem, index: number, total: number): TextAlign {\n let align: TextAlign = 'center';\n const coordinate = this.getCoordinate();\n if (coordinate.isTransposed) {\n const offset = item.offset;\n if (offset < 0) {\n align = 'right';\n } else if (offset === 0) {\n align = 'center';\n } else {\n align = 'left';\n }\n if (total > 1 && index === 0) {\n if (align === 'right') {\n align = 'left';\n } else if (align === 'left') {\n align = 'right';\n }\n }\n }\n return align;\n }\n\n /**\n * 获取每一个 label 的唯一 id\n * @param mappingData label 对应的图形的绘制数据\n */\n protected getLabelId(mappingData: MappingDatum) {\n const geometry = this.geometry;\n const type = geometry.type;\n const xScale = geometry.getXScale();\n const yScale = geometry.getYScale();\n const origin = mappingData[FIELD_ORIGIN]; // 原始数据\n\n let labelId = geometry.getElementId(mappingData);\n if (type === 'line' || type === 'area') {\n // 折线图以及区域图,一条线会对应一组数据,即多个 labels,为了区分这些 labels,需要在 line id 的前提下加上 x 字段值\n labelId += ` ${origin[xScale.field]}`;\n } else if (type === 'path') {\n // path 路径图,无序,有可能存在相同 x 不同 y 的情况,需要通过 x y 来确定唯一 id\n labelId += ` ${origin[xScale.field]}-${origin[yScale.field]}`;\n }\n\n return labelId;\n }\n\n // 获取 labels 组件\n private getLabelsRenderer() {\n const { labelsContainer, labelOption, canvasRegion, animateOption } = this.geometry;\n const coordinate = this.geometry.coordinate;\n\n let labelsRenderer = this.labelsRenderer;\n if (!labelsRenderer) {\n labelsRenderer = new Labels({\n container: labelsContainer,\n layout: get(labelOption, ['cfg', 'layout'], {\n type: this.defaultLayout,\n }),\n });\n this.labelsRenderer = labelsRenderer;\n }\n labelsRenderer.region = canvasRegion;\n // 设置动画配置,如果 geometry 的动画关闭了,那么 label 的动画也会关闭\n labelsRenderer.animate = animateOption ? getDefaultAnimateCfg('label', coordinate) : false;\n\n return labelsRenderer;\n }\n\n private getLabelCfgs(mapppingArray: MappingDatum[]): LabelCfg[] {\n const geometry = this.geometry;\n const { labelOption, scales, coordinate } = geometry;\n const { fields, callback, cfg } = labelOption as LabelOption;\n const labelScales = fields.map((field: string) => {\n return scales[field];\n });\n\n const labelCfgs: LabelCfg[] = [];\n each(mapppingArray, (mappingData: MappingDatum, index: number) => {\n const origin = mappingData[FIELD_ORIGIN]; // 原始数据\n const originText = this.getLabelText(origin, labelScales);\n let callbackCfg;\n if (callback) {\n // 当同时配置了 callback 和 cfg 时,以 callback 为准\n const originValues = fields.map((field: string) => origin[field]);\n callbackCfg = callback(...originValues);\n if (isNil(callbackCfg)) {\n labelCfgs.push(null);\n return;\n }\n }\n\n let labelCfg = {\n id: this.getLabelId(mappingData), // 进行 ID 标记\n elementId: this.geometry.getElementId(mappingData), // label 对应 Element 的 ID\n data: origin, // 存储原始数据\n mappingData, // 存储映射后的数据,\n coordinate, // 坐标系\n ...cfg,\n ...callbackCfg,\n };\n\n if (isFunction(labelCfg.position)) {\n labelCfg.position = labelCfg.position(origin, mappingData, index);\n }\n\n const offset = this.getLabelOffset(labelCfg.offset || 0);\n // defaultCfg 需要判断 innerLabels & labels\n const defaultLabelCfg = this.getDefaultLabelCfg(offset, labelCfg.position);\n // labelCfg priority: defaultCfg < cfg < callbackCfg\n labelCfg = deepMix({}, defaultLabelCfg, labelCfg);\n // 获取最终的 offset\n labelCfg.offset = this.getLabelOffset(labelCfg.offset || 0);\n\n const content = labelCfg.content;\n if (isFunction(content)) {\n labelCfg.content = content(origin, mappingData, index);\n } else if (isUndefined(content)) {\n // 用户未配置 content,则默认为映射的第一个字段的值\n labelCfg.content = originText[0];\n }\n\n labelCfgs.push(labelCfg);\n });\n\n return labelCfgs;\n }\n\n private getLabelText(origin: Datum, scales: Scale[]) {\n const labelTexts = [];\n each(scales, (scale: Scale) => {\n let value = origin[scale.field];\n if (isArray(value)) {\n value = value.map((subVal) => {\n return scale.getText(subVal);\n });\n } else {\n value = scale.getText(value);\n }\n\n if (isNil(value) || value === '') {\n labelTexts.push(null);\n } else {\n labelTexts.push(value);\n }\n });\n return labelTexts;\n }\n\n private getOffsetVector(offset: number | string = 0) {\n const coordinate = this.getCoordinate();\n let actualOffset = 0;\n if (isNumber(offset)) {\n actualOffset = offset;\n }\n // 如果 x,y 翻转,则偏移 x,否则偏移 y\n return coordinate.isTransposed ? coordinate.applyMatrix(actualOffset, 0) : coordinate.applyMatrix(0, actualOffset);\n }\n\n private getGeometryShapes() {\n const geometry = this.geometry;\n const shapes = {};\n each(geometry.elementsMap, (element: Element, id: string) => {\n shapes[id] = element.shape;\n });\n // 因为有可能 shape 还在进行动画,导致 shape.getBBox() 获取到的值不是最终态,所以需要从 offscreenGroup 获取\n each(geometry.getOffscreenGroup().getChildren(), (child) => {\n const id = geometry.getElementId(child.get('origin').mappingData);\n shapes[id] = child;\n });\n\n return shapes;\n }\n}\n","import { Attribute } from '../dependents';\n\n/**\n * @ignore\n * get the mapping value by attribute, if mapping value is nil, return def\n * @param attr\n * @param value\n * @param def\n * @returns get mapping value\n */\nexport function getMappingValue(attr: Attribute, value: any, def: string): string {\n if (!attr) {\n return def;\n }\n\n let r;\n // 多参数映射,阻止程序报错\n if (attr.callback && attr.callback.length > 1) {\n const restArgs = Array(attr.callback.length - 1).fill('');\n r = attr.mapping(value, ...restArgs).join('');\n } else {\n r = attr.mapping(value).join('');\n }\n\n return r || def;\n}\n","/** @ignore */\nexport const MarkerSymbols = {\n hexagon: (x: number, y: number, r: number) => {\n const diffX = (r / 2) * Math.sqrt(3);\n return [\n ['M', x, y - r],\n ['L', x + diffX, y - r / 2],\n ['L', x + diffX, y + r / 2],\n ['L', x, y + r],\n ['L', x - diffX, y + r / 2],\n ['L', x - diffX, y - r / 2],\n ['Z'],\n ];\n },\n bowtie: (x: number, y: number, r: number) => {\n const diffY = r - 1.5;\n return [['M', x - r, y - diffY], ['L', x + r, y + diffY], ['L', x + r, y - diffY], ['L', x - r, y + diffY], ['Z']];\n },\n cross: (x: number, y: number, r: number) => {\n return [\n ['M', x - r, y - r],\n ['L', x + r, y + r],\n ['M', x + r, y - r],\n ['L', x - r, y + r],\n ];\n },\n tick: (x: number, y: number, r: number) => {\n return [\n ['M', x - r / 2, y - r],\n ['L', x + r / 2, y - r],\n ['M', x, y - r],\n ['L', x, y + r],\n ['M', x - r / 2, y + r],\n ['L', x + r / 2, y + r],\n ];\n },\n plus: (x: number, y: number, r: number) => {\n return [\n ['M', x - r, y],\n ['L', x + r, y],\n ['M', x, y - r],\n ['L', x, y + r],\n ];\n },\n hyphen: (x: number, y: number, r: number) => {\n return [\n ['M', x - r, y],\n ['L', x + r, y],\n ];\n },\n line: (x: number, y: number, r: number) => {\n return [\n ['M', x, y - r],\n ['L', x, y + r],\n ];\n },\n};\n","import { LegendMarkerCfg } from '@antv/component';\nimport { deepMix, isString, each, get, isFunction } from '@antv/util';\nimport View from '../chart/view';\nimport { DIRECTION } from '../constant';\nimport { Attribute, ShapeAttrs, Tick } from '../dependents';\nimport Geometry from '../geometry/base';\nimport { LegendCfg, LegendItem, MarkerCfg } from '../interface';\nimport { getMappingValue } from './attr';\nimport { omit } from './helper';\nimport { MarkerSymbols } from './marker';\n\n/** 线条形 marker symbol */\nconst STROKES_SYMBOLS = ['line', 'cross', 'tick', 'plus', 'hyphen'];\n\n/**\n * 处理用户配置的 marker style\n * @param markerStyle\n * @param userMarker.style\n * @returns {ShapeAttrs} newStyle\n */\nfunction handleUserMarkerStyle(markerStyle: ShapeAttrs, style: MarkerCfg['style']): ShapeAttrs {\n if (isFunction(style)) {\n return style(markerStyle);\n }\n return deepMix({}, markerStyle, style);\n}\n\n/**\n * 根据 marker 是否为线条形 symbol, 来调整下样式\n * @param symbol\n * @param style\n * @param color\n */\nfunction adpatorMarkerStyle(marker: LegendMarkerCfg, color: string): void {\n const symbol = marker.symbol;\n if (isString(symbol) && STROKES_SYMBOLS.indexOf(symbol) !== -1) {\n const markerStyle = get(marker, 'style', {});\n const lineWidth = get(markerStyle, 'lineWidth', 1);\n const stroke = markerStyle.stroke || markerStyle.fill || color;\n marker.style = deepMix({}, marker.style, { lineWidth, stroke, fill: null });\n }\n}\n\n/**\n * 设置 marker 的 symbol,将 字符串的 symbol 转换为真正的绘制命令\n * @param marker\n */\nfunction setMarkerSymbol(marker: LegendMarkerCfg): void {\n const symbol = marker.symbol;\n if (isString(symbol) && MarkerSymbols[symbol]) {\n marker.symbol = MarkerSymbols[symbol];\n }\n}\n\n/**\n * @ignore\n * get the legend layout from direction\n * @param direction\n * @returns layout 'horizontal' | 'vertical'\n */\nexport function getLegendLayout(direction: DIRECTION): 'vertical' | 'horizontal' {\n return direction.startsWith(DIRECTION.LEFT) || direction.startsWith(DIRECTION.RIGHT) ? 'vertical' : 'horizontal';\n}\n\n/** item of @antv/component legend */\ntype ComponentLegendItem = Omit & {\n marker: any;\n};\n\n/**\n * @ignore\n * get the legend items\n * @param view\n * @param geometry\n * @param attr\n * @param themeMarker\n * @param markerCfg\n * @returns legend items\n */\nexport function getLegendItems(\n view: View,\n geometry: Geometry,\n attr: Attribute,\n themeMarker: object,\n userMarker: LegendCfg['marker']\n): ComponentLegendItem[] {\n const scale = attr.getScale(attr.type);\n if (scale.isCategory) {\n const field = scale.field;\n const colorAttr = geometry.getAttribute('color');\n const shapeAttr = geometry.getAttribute('shape');\n const defaultColor = view.getTheme().defaultColor;\n const isInPolar = geometry.coordinate.isPolar;\n\n return scale.getTicks().map((tick: Tick, index: number) => {\n const { text, value: scaleValue } = tick;\n const name = text;\n const value = scale.invert(scaleValue);\n\n // 通过过滤图例项的数据,来看是否 unchecked\n let unchecked = view.filterFieldData(field, [{ [field]: value }]).length === 0;\n each(view.views, (subView) => {\n if (!subView.filterFieldData(field, [{ [field]: value }]).length) {\n unchecked = true;\n }\n });\n\n // @ts-ignore\n const color = getMappingValue(colorAttr, value, defaultColor);\n const shape = getMappingValue(shapeAttr, value, 'point');\n let marker = geometry.getShapeMarker(shape, {\n color,\n isInPolar,\n });\n\n let markerCfg = userMarker;\n if (isFunction(markerCfg)) {\n markerCfg = markerCfg(name, index, { name, value, ...deepMix({}, themeMarker, marker) });\n }\n\n // the marker configure order should be ensure\n marker = deepMix({}, themeMarker, marker, omit({ ...markerCfg }, ['style']));\n adpatorMarkerStyle(marker, color);\n if (markerCfg && markerCfg.style) {\n // handle user's style settings\n marker.style = handleUserMarkerStyle(marker.style, markerCfg.style);\n }\n setMarkerSymbol(marker);\n\n return { id: value, name, value, marker, unchecked };\n });\n }\n return [];\n}\n\n/**\n *\n * @ignore\n * custom legend 的 items 获取\n * @param themeMarker\n * @param userMarker\n * @param customItems\n */\nexport function getCustomLegendItems(themeMarker: object, userMarker: object, customItems: LegendItem[]) {\n // 如果有自定义的 item,那么就直接使用,并合并主题的 marker 配置\n return customItems.map((item: LegendItem, index: number) => {\n let markerCfg = userMarker;\n if (isFunction(markerCfg)) {\n markerCfg = markerCfg(item.name, index, deepMix({}, themeMarker, item));\n }\n\n const itemMarker = isFunction(item.marker)\n ? item.marker(item.name, index, deepMix({}, themeMarker, item))\n : item.marker;\n\n const marker = deepMix({}, themeMarker, markerCfg, itemMarker);\n setMarkerSymbol(marker);\n\n item.marker = marker;\n return item;\n });\n}\n\n/**\n * get the legend cfg from theme, will mix the common cfg of legend theme\n *\n * @param theme view theme object\n * @param direction legend direction\n * @returns legend theme cfg\n */\nexport function getLegendThemeCfg(theme: object, direction: string): object {\n const legendTheme = get(theme, ['components', 'legend'], {});\n return deepMix({}, get(legendTheme, ['common'], {}), deepMix({}, get(legendTheme, [direction], {})));\n}\n","import { isArray } from '@antv/util';\nimport { PathCommand } from '../../../dependents';\nimport { Point, RangePoint, ShapeVertices } from '../../../interface';\nimport { getSplinePath } from './path';\n\nfunction isValueEmpty(value) {\n if (value) {\n return false;\n }\n return value === null || value === undefined || isNaN(value);\n}\n\nfunction isYNil(point: Point[] | RangePoint) {\n if (isArray(point)) {\n // 特殊处理 area 的关键点数据,其关键点结构为 [{x: 0, y: 1}, {x: 0, y: 2}]\n return isValueEmpty(point[1].y);\n }\n const value = point.y;\n return isArray(value) ? isValueEmpty(value[0]) : isValueEmpty(value);\n}\n\n/**\n * @ignore\n * 分割数据,用于处理在一组点数据中,y 对应的数值存在 null/undefined/NaN 的情况\n * 应用于折线图、区域图以及路径图\n *\n * ```typescript\n * // return [[{x: 1, y: 2}, {x: 3, y: 3}]]\n * getPathPoints([{x: 1, y: 2}, {x: 2, y: null}, {x: 3, y: 3}], true);\n * // return [[{x: 1, y: 2}], [{x: 3, y: 3}]]\n * getPathPoints([{x: 1, y: 2}, {x: 2, y: null}, {x: 3, y: 3}], false);\n * // return [[[{ x: 1, y: 10 }, { x: 2, y: 2 }], [{ x: 9, y: 34 }, { x: 1, y: 1 }]]]\n * getPathPoints([\n * [{ x: 1, y: 10 }, { x: 2, y: 2 }],\n * [{ x: 4, y: 2 }, { x: 8, y: NaN }],\n * [{ x: 9, y: 34 }, { x: 1, y: 1 }],\n * ], true);\n * ```\n *\n * @param points 要进行处理点集合\n * @param connectNulls 是否连接空值数据\n * @param showSinglePoint 是否展示孤立点\n * @returns 返回处理后的点集合\n */\nexport function getPathPoints(points: ShapeVertices, connectNulls: boolean = false, showSinglePoint: boolean = true) {\n if (!points.length || (points.length === 1 && !showSinglePoint)) {\n // 空或者只有一个点并配置不展示时\n return [];\n }\n\n if (connectNulls) {\n // 即 y 值为空的场景\n const filtered = [];\n for (let i = 0, len = points.length; i < len; i++) {\n const point = points[i];\n if (!isYNil(point)) {\n filtered.push(point);\n }\n }\n return [filtered];\n }\n\n const result = [];\n let tmp = [];\n for (let i = 0, len = points.length; i < len; i++) {\n const point = points[i];\n if (isYNil(point)) {\n if (tmp.length) {\n if (!(tmp.length === 1 && !showSinglePoint)) {\n // 如果前段数据只有一个字段并且不需要展示时则不加入\n result.push(tmp);\n }\n tmp = [];\n }\n } else {\n tmp.push(point);\n }\n }\n\n if (tmp.length) {\n result.push(tmp);\n }\n return result;\n}\n\n/**\n * 获取小提琴图的边界 path\n * @param points\n * @returns\n */\nexport function getViolinPath(points: ShapeVertices): PathCommand[] {\n const path = [];\n for (let i = 0; i < points.length; i++) {\n const point = points[i] as Point;\n if (point) {\n const action = i === 0 ? 'M' : 'L';\n path.push([action, point.x, point.y]);\n }\n }\n const first = points[0] as Point;\n if (first) {\n path.push(['L', first.x, first.y]);\n path.push(['z']);\n }\n return path;\n}\n\n/**\n * 获取小提琴图 平滑的边界 path\n * @param points\n * @returns\n */\nexport function getSmoothViolinPath(points: ShapeVertices): PathCommand[] {\n const half = points.length / 2;\n const leftPoints = [];\n const rightPoints = [];\n for (let i = 0; i < points.length; i++) {\n if (i < half) {\n leftPoints.push(points[i]);\n } else {\n rightPoints.push(points[i]);\n }\n }\n const leftPath = getSplinePath(leftPoints, false);\n const rightPath = getSplinePath(rightPoints, false);\n if (rightPoints.length) {\n leftPath.push(['L', rightPoints[0].x, rightPoints[0].y]);\n }\n rightPath.shift();\n const path = leftPath.concat(rightPath);\n if (leftPoints.length) {\n path.push(['L', leftPoints[0].x, leftPoints[0].y]);\n }\n path.push(['z']);\n return path;\n}\n","import { deepMix, isNil, get } from '@antv/util';\nimport { ShapeInfo } from '../../../interface';\n\n/**\n * @ignore\n * 获取 Shape 的图形属性\n * @param cfg\n * @param isStroke 是否需要描边\n * @param isFill 是否需要填充\n * @param [sizeName] 可选,表示图形大小的属性,lineWidth 或者 r\n * @returns\n */\nexport function getStyle(cfg: ShapeInfo, isStroke: boolean, isFill: boolean, sizeName: string = '') {\n const { style = {}, defaultStyle, color, size } = cfg;\n const attrs = {\n ...defaultStyle,\n ...style,\n };\n if (color) {\n if (isStroke) {\n if (!style.stroke) {\n // 如果用户在 style() 中配置了 stroke,则以用户配置的为准\n attrs.stroke = color;\n }\n }\n\n if (isFill) {\n if (!style.fill) {\n // 如果用户在 style() 中配置了 fill\n attrs.fill = color;\n }\n }\n }\n if (sizeName && isNil(style[sizeName]) && !isNil(size)) {\n // 如果用户在 style() 中配置了 lineWidth 或者 r 属性\n attrs[sizeName] = size;\n }\n\n return attrs;\n}\n\n/**\n * 获取 矩形背景 的样式\n * @param cfg\n */\nexport function getBackgroundRectStyle(cfg?: ShapeInfo) {\n return deepMix(\n {},\n {\n // 默认背景色,copy from active-region\n fill: '#CCD6EC',\n fillOpacity: 0.3,\n },\n get(cfg, ['background', 'style'])\n );\n}\n","import { isArray } from '@antv/util';\nimport { Point, RangePoint } from '../../../interface';\n\n/**\n * @ignore\n * 拆分点数据\n * @example\n * // result: [{x: 20, y: 20}, {x: 20, y: 30}]\n * splitPoints({x: 20,y: [20, 30]});\n * @example\n * // result: [{x: 20, y: 20}, {x: 30, y: 30}]\n * splitPoints({x: [20, 30],y: [20, 30]});\n * @param obj\n */\nexport function splitPoints(obj: RangePoint): Point[] {\n // y 有可能是数组,对应原始数据中 y 为一个区间数据,如 [19, 30],为了统一也将 x 转换为数组\n const x = obj.x;\n const y = isArray(obj.y) ? obj.y : [obj.y];\n\n return y.map((eachY, index) => {\n return {\n x: isArray(x) ? x[index] : x,\n y: eachY,\n };\n });\n}\n","import { ShapeMarkerCfg } from '../../../interface';\n\nconst LineSymbols = {\n line: (x: number, y: number, r: number) => {\n return [\n ['M', x - r, y],\n ['L', x + r, y],\n ];\n },\n dot: (x: number, y: number, r: number) => {\n return [\n ['M', x - r, y],\n ['L', x + r, y],\n ];\n },\n dash: (x: number, y: number, r: number) => {\n return [\n ['M', x - r, y],\n ['L', x + r, y],\n ];\n },\n smooth: (x: number, y: number, r: number) => {\n return [\n ['M', x - r, y],\n ['A', r / 2, r / 2, 0, 1, 1, x, y],\n ['A', r / 2, r / 2, 0, 1, 0, x + r, y],\n ];\n },\n hv: (x: number, y: number, r: number) => {\n return [\n ['M', x - r - 1, y - 2.5],\n ['L', x, y - 2.5],\n ['L', x, y + 2.5],\n ['L', x + r + 1, y + 2.5],\n ];\n },\n vh: (x: number, y: number, r: number) => {\n return [\n ['M', x - r - 1, y + 2.5],\n ['L', x, y + 2.5],\n ['L', x, y - 2.5],\n ['L', x + r + 1, y - 2.5],\n ];\n },\n hvh: (x: number, y: number, r: number) => {\n return [\n ['M', x - (r + 1), y + 2.5],\n ['L', x - r / 2, y + 2.5],\n ['L', x - r / 2, y - 2.5],\n ['L', x + r / 2, y - 2.5],\n ['L', x + r / 2, y + 2.5],\n ['L', x + r + 1, y + 2.5],\n ];\n },\n vhv: (x: number, y: number) => {\n // 宽 13px,高 8px\n return [\n ['M', x - 5, y + 2.5],\n ['L', x - 5, y],\n ['L', x, y],\n ['L', x, y - 3],\n ['L', x, y + 3],\n ['L', x + 6.5, y + 3],\n ];\n },\n};\n\n/**\n * Gets line marker\n * @ignore\n * @param markerCfg\n * @param shapeType\n * @returns 返回 Line 的 marker 配置\n */\nexport function getLineMarker(markerCfg: ShapeMarkerCfg, shapeType: string) {\n const { color } = markerCfg;\n return {\n symbol: LineSymbols[shapeType],\n style: {\n lineWidth: 2,\n r: 6,\n stroke: color,\n },\n };\n}\n","import { each, isArray } from '@antv/util';\nimport { IGroup, ShapeAttrs } from '../../../dependents';\nimport { Point, Position, RangePoint, ShapeInfo, ShapeMarkerCfg } from '../../../interface';\n\nimport { registerShape, registerShapeFactory } from '../base';\nimport { getPathPoints } from '../util/get-path-points';\nimport { getStyle } from '../util/get-style';\nimport { getLinePath, getSplinePath } from '../util/path';\nimport { splitPoints } from '../util/split-points';\nimport { getLineMarker } from './util';\n\nfunction getShapeAttrs(cfg: ShapeInfo, smooth?: boolean, constraint?: Position[]) {\n const { isStack, connectNulls, isInCircle, showSinglePoint } = cfg;\n const shapeAttrs = getStyle(cfg, true, false, 'lineWidth');\n\n const points = getPathPoints(cfg.points, connectNulls, showSinglePoint); // 根据 connectNulls 值处理 points\n let path = [];\n for (let i = 0, len = points.length; i < len; i++) {\n const eachLinePoints = points[i];\n path = path.concat(getPath(eachLinePoints, isInCircle, isStack, smooth, constraint, shapeAttrs));\n }\n shapeAttrs.path = path;\n\n return shapeAttrs;\n}\n\n// 单条 path\nfunction getSinglePath(\n points: Point[],\n isInCircle: boolean,\n smooth?: boolean,\n constraint?: Position[],\n style?: ShapeAttrs\n) {\n if (points.length === 1) {\n // 只有一个点时\n return [\n ['M', points[0].x, points[0].y - style.lineWidth / 2],\n ['L', points[0].x, points[0].y],\n ['L', points[0].x, points[0].y + style.lineWidth / 2],\n ];\n }\n\n let path;\n if (!smooth) {\n path = getLinePath(points, false);\n if (isInCircle) {\n path.push(['Z']);\n }\n } else {\n // 直角坐标系下绘制曲线时限制最大值、最小值\n if (isInCircle && points.length) {\n points.push({ x: points[0].x, y: points[0].y });\n }\n path = getSplinePath(points, false, constraint);\n }\n\n return path;\n}\n\nfunction getRangePath(\n points: RangePoint[],\n isInCircle: boolean,\n isStack?: boolean,\n smooth?: boolean,\n constraint?: Position[],\n style?: ShapeAttrs\n) {\n const topPoints = [];\n const bottomPoints = [];\n each(points, (point: RangePoint) => {\n const result = splitPoints(point);\n topPoints.push(result[1]); // 上边\n bottomPoints.push(result[0]); // 底边\n });\n\n const topPath = getSinglePath(topPoints, isInCircle, smooth, constraint, style);\n const bottomPath = getSinglePath(bottomPoints, isInCircle, smooth, constraint, style);\n if (isStack) {\n return topPath;\n }\n return topPath.concat(bottomPath);\n}\n\n/**\n * 获取折线图 path\n */\nexport function getPath(\n points: Point[] | RangePoint[],\n isInCircle: boolean,\n isStack?: boolean,\n smooth?: boolean,\n constraint?: Position[],\n style?: ShapeAttrs\n) {\n if (points.length) {\n const first = points[0];\n\n return isArray(first.y)\n ? getRangePath(points as RangePoint[], isInCircle, isStack, smooth, constraint, style)\n : getSinglePath(points as Point[], isInCircle, smooth, constraint, style);\n }\n return [];\n}\n\nconst LineShapeFactory = registerShapeFactory('line', {\n defaultShapeType: 'line',\n});\n\n// 这里因为代码公用,所以直接全部注册\n// 'line' 默认折线;'dot' 点线 ···;'dash' 断线 - - -\neach(['line', 'dot', 'dash', 'smooth'], (shapeType) => {\n registerShape('line', shapeType, {\n draw(cfg: ShapeInfo, container: IGroup) {\n const smooth = shapeType === 'smooth';\n let constraint;\n if (smooth) {\n const { start, end } = this.coordinate;\n constraint = [\n [start.x, end.y],\n [end.x, start.y],\n ];\n }\n\n const attrs = getShapeAttrs(cfg, smooth, constraint);\n const shape = container.addShape({\n type: 'path',\n attrs,\n name: 'line',\n capture: !smooth,\n });\n\n return shape;\n },\n getMarker(markerCfg: ShapeMarkerCfg) {\n return getLineMarker(markerCfg, shapeType);\n },\n });\n});\n\nexport default LineShapeFactory;\n","/* G2 的一个壳子,不包含 Geometry,由开发者自己定义和引入 */\n\nexport const VERSION = '4.2.11';\n\n// 核心基类导出\nexport { Chart, View, Event } from './chart'; // Chart, View 类\nexport { Controller as ComponentController } from './chart/controller/base'; // G2 组件基类\nexport { default as TooltipController } from './chart/controller/tooltip'; // G2 tooltip 组件基类\nexport { default as Geometry } from './geometry/base'; // Geometry 基类\nexport { default as Element } from './geometry/element'; // Element 类\nexport { default as GeometryLabel } from './geometry/label/base'; // Geometry Label 基类\nexport { Interaction, Action } from './interaction'; // Interaction, Action 基类\nexport { Facet } from './facet'; // Facet 基类\nexport { default as InteractionAction } from './interaction/action/base'; // Interaction Action 基类\n\n// 注册 ComponentController\nexport { registerComponentController } from './chart';\n\n// 注册 Geometry\nexport { registerGeometry } from './chart';\n\n// 注册 Geometry Shape\nexport { registerShape, registerShapeFactory, getShapeFactory } from './geometry/shape/base';\n\n// 注册 Geometry label 以及 Geometry Label 布局函数\nexport {\n registerGeometryLabel,\n registerGeometryLabelLayout,\n getGeometryLabel,\n getGeometryLabelLayout,\n} from './geometry/label';\n\n// 注册 interaction\nexport { getInteraction, registerInteraction, registerAction, getActionClass } from './interaction';\n\n// 注册 facet\nexport { getFacet, registerFacet } from './facet';\n\n// 注册主题\nexport { getTheme, registerTheme } from './theme';\n\n// G engine 管理相关\nexport { registerEngine, getEngine } from './engine';\n\n// 注册动画函数\nexport { registerAnimation, getAnimation } from './animate/animation';\n\nexport { LAYER, DIRECTION } from './constant';\n\n// 因为 typescript 部分版本不支持 export * as 语法。\nimport * as Types from './interface';\nexport type { Types };\n\nexport { IGroup, ShapeAttrs, Coordinate, Scale, ScaleConfig } from './dependents';\n\n// 一些工具方法导出\nimport { getMappingValue } from './util/attr';\nimport { getLegendItems } from './util/legend';\nimport { getAngle, getSectorPath, polarToCartesian } from './util/graphics';\nimport { rotate, transform, translate, zoom } from './util/transform';\nimport { getTooltipItems } from './util/tooltip';\nimport { getDelegationObject } from './interaction/action/util';\nimport { getPathPoints } from './geometry/shape/util/get-path-points';\nimport { getPath } from './geometry/shape/line';\n\nexport const Util = {\n getLegendItems,\n translate,\n rotate,\n zoom,\n transform,\n getAngle,\n getSectorPath,\n polarToCartesian,\n getDelegationObject,\n getTooltipItems,\n getMappingValue,\n // shape 的一些操作方法\n getPath,\n getPathPoints,\n};\n","import { StyleSheetCfg } from '../../interface';\n\nconst WHITE_COLORS = {\n 100: '#000',\n 95: '#0D0D0D',\n 85: '#262626',\n 65: '#595959',\n 45: '#8C8C8C',\n 25: '#BFBFBF',\n 15: '#D9D9D9',\n 6: '#F0F0F0',\n};\n\nconst BLACK_COLORS = {\n 100: '#FFFFFF',\n 95: '#F2F2F2',\n 85: '#D9D9D9',\n 65: '#A6A6A6',\n 45: '#737373',\n 25: '#404040',\n 15: '#262626',\n 6: '#0F0F0F',\n};\n\nconst QUALITATIVE_10 = [\n '#5B8FF9',\n '#5AD8A6',\n '#5D7092',\n '#F6BD16',\n '#E86452',\n '#6DC8EC',\n '#945FB9',\n '#FF9845',\n '#1E9493',\n '#FF99C3',\n];\n\nconst QUALITATIVE_20 = [\n '#5B8FF9',\n '#CDDDFD',\n '#5AD8A6',\n '#CDF3E4',\n '#5D7092',\n '#CED4DE',\n '#F6BD16',\n '#FCEBB9',\n '#E86452',\n '#F8D0CB',\n '#6DC8EC',\n '#D3EEF9',\n '#945FB9',\n '#DECFEA',\n '#FF9845',\n '#FFE0C7',\n '#1E9493',\n '#BBDEDE',\n '#FF99C3',\n '#FFE0ED',\n];\n\n/** 单色顺序色板 */\nconst SINGLE_SEQUENCE = [\n '#B8E1FF',\n '#9AC5FF',\n '#7DAAFF',\n '#5B8FF9',\n '#3D76DD',\n '#085EC0',\n '#0047A5',\n '#00318A',\n '#001D70',\n];\n\nexport const createDarkStyleSheet = (cfg: StyleSheetCfg = {}) => {\n const { paletteQualitative10 = QUALITATIVE_10, paletteQualitative20 = QUALITATIVE_20 } = cfg;\n const { brandColor = paletteQualitative10[0] } = cfg;\n\n const token = {\n /** 图表背景色 */\n backgroundColor: '#141414',\n /** 主题色 */\n brandColor,\n /** 图表辅助色 */\n subColor: 'rgba(255,255,255,0.05)',\n /** 分类色板 1,在数据量小于等于 10 时使用 */\n paletteQualitative10,\n /** 分类色板 2,在数据量大于 10 时使用 */\n paletteQualitative20,\n /** 语义色 */\n paletteSemanticRed: '#F4664A',\n /** 语义色 */\n paletteSemanticGreen: '#30BF78',\n /** 语义色 */\n paletteSemanticYellow: '#FAAD14',\n /** (单色)顺序色板 */\n paletteSequence: SINGLE_SEQUENCE,\n /** 字体 */\n fontFamily: `\"Segoe UI\", Roboto, \"Helvetica Neue\", Arial,\n \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\",\n \"Noto Color Emoji\"`,\n\n // -------------------- 坐标轴 --------------------\n /** 坐标轴线颜色 */\n axisLineBorderColor: BLACK_COLORS[25],\n /** 坐标轴线粗细 */\n axisLineBorder: 1,\n /** 坐标轴线 lineDash 设置 */\n axisLineDash: null,\n\n /** 坐标轴标题颜色 */\n axisTitleTextFillColor: BLACK_COLORS[65],\n /** 坐标轴标题文本字体大小 */\n axisTitleTextFontSize: 12,\n /** 坐标轴标题文本行高 */\n axisTitleTextLineHeight: 12,\n /** 坐标轴标题文本字体粗细 */\n axisTitleTextFontWeight: 'normal',\n /** 坐标轴标题距离坐标轴文本的间距 */\n axisTitleSpacing: 12,\n /** 坐标轴标题详细说明icon颜色 */\n axisDescriptionIconFillColor: WHITE_COLORS[85],\n\n /** 坐标轴刻度线颜色 */\n axisTickLineBorderColor: BLACK_COLORS[25],\n /** 坐标轴刻度线长度 */\n axisTickLineLength: 4,\n /** 坐标轴刻度线粗细 */\n axisTickLineBorder: 1,\n\n /** 坐标轴次刻度线颜色 */\n axisSubTickLineBorderColor: BLACK_COLORS[15],\n /** 坐标轴次刻度线长度 */\n axisSubTickLineLength: 2,\n /** 坐标轴次刻度线粗细 */\n axisSubTickLineBorder: 1,\n\n /** 坐标轴刻度文本颜色 */\n axisLabelFillColor: BLACK_COLORS[45],\n /** 坐标轴刻度文本字体大小 */\n axisLabelFontSize: 12,\n /** 坐标轴刻度文本行高 */\n axisLabelLineHeight: 12,\n /** 坐标轴刻度文本字体粗细 */\n axisLabelFontWeight: 'normal',\n /** 坐标轴刻度文本距离坐标轴线的间距 */\n axisLabelOffset: 8,\n\n /** 坐标轴网格线颜色 */\n axisGridBorderColor: BLACK_COLORS[15],\n /** 坐标轴网格线粗细 */\n axisGridBorder: 1,\n /** 坐标轴网格线虚线设置 */\n axisGridLineDash: null,\n\n // -------------------- 图例 --------------------\n /** 图例标题颜色 */\n legendTitleTextFillColor: BLACK_COLORS[45],\n /** 图例标题文本字体大小 */\n legendTitleTextFontSize: 12,\n /** 图例标题文本行高 */\n legendTitleTextLineHeight: 21,\n /** 图例标题文本字体粗细 */\n legendTitleTextFontWeight: 'normal',\n\n /** 图例 marker 颜色 */\n legendMarkerColor: QUALITATIVE_10[0],\n /** 图例 marker 距离图例文本的间距 */\n legendMarkerSpacing: 8,\n /** 图例 marker 默认半径大小 */\n legendMarkerSize: 4,\n /** 图例 'circle' marker 半径 */\n legendCircleMarkerSize: 4,\n /** 图例 'square' marker 半径 */\n legendSquareMarkerSize: 4,\n /** 图例 'line' marker 半径 */\n legendLineMarkerSize: 5,\n\n /** 图例项文本颜色 */\n legendItemNameFillColor: BLACK_COLORS[65],\n /** 图例项文本字体大小 */\n legendItemNameFontSize: 12,\n /** 图例项文本行高 */\n legendItemNameLineHeight: 12,\n /** 图例项粗细 */\n legendItemNameFontWeight: 'normal',\n /** 图例项之间的水平间距 */\n legendItemSpacing: 24,\n /** 图例项垂直方向的间隔 */\n legendItemMarginBottom: 12,\n /** 图例与图表绘图区域的偏移距离 */\n legendSpacing: 16,\n /** 图例与图表绘图区域的偏移距离 */\n legendPadding: [8, 8, 8, 8],\n /** 水平布局的图例与绘图区域偏移距离 */\n legendHorizontalPadding: [8, 0, 8, 0],\n /** 垂直布局的图例与绘图区域偏移距离 */\n legendVerticalPadding: [0, 8, 0, 8],\n\n // 图例分页器\n /** 图例分页器 marker 大小 */\n legendPageNavigatorMarkerSize: 12,\n /** 图例分页器 marker 填充色 */\n legendPageNavigatorMarkerInactiveFillColor: BLACK_COLORS[45],\n /** 图例分页器 marker 填充色透明度 */\n legendPageNavigatorMarkerInactiveFillOpacity: 0.45,\n /** 图例分页器 marker 激活状态填充色 */\n legendPageNavigatorMarkerFillColor: BLACK_COLORS[45],\n /** 图例分页器 marker 激活状态填充色透明度 */\n legendPageNavigatorMarkerFillOpacity: 1,\n /** 图例分页器文本颜色 */\n legendPageNavigatorTextFillColor: BLACK_COLORS[65],\n /** 图例分页器文本字体大小 */\n legendPageNavigatorTextFontSize: 12,\n\n /** 连续图例滑块填充色 */\n sliderRailFillColor: BLACK_COLORS[15],\n /** 连续图例滑块边框粗细 */\n sliderRailBorder: 0,\n /** 连续图例滑块边框颜色 */\n sliderRailBorderColor: null,\n /** 连续图例滑块宽度 */\n sliderRailWidth: 100,\n /** 连续图例滑块高度 */\n sliderRailHeight: 12,\n\n /** 连续图例文本颜色 */\n sliderLabelTextFillColor: BLACK_COLORS[45],\n /** 连续图例文本字体大小 */\n sliderLabelTextFontSize: 12,\n /** 连续图例文本行高 */\n sliderLabelTextLineHeight: 12,\n /** 连续图例文本字体粗细 */\n sliderLabelTextFontWeight: 'normal',\n\n /** 连续图例滑块颜色 */\n sliderHandlerFillColor: WHITE_COLORS[6],\n /** 连续图例滑块宽度 */\n sliderHandlerWidth: 10,\n /** 连续图例滑块高度 */\n sliderHandlerHeight: 14,\n /** 连续图例滑块边框粗细 */\n sliderHandlerBorder: 1,\n /** 连续图例滑块边框颜色 */\n sliderHandlerBorderColor: WHITE_COLORS[25],\n\n // -------------------- Annotation,图形标注 --------------------\n /** arc 图形标注描边颜色 */\n annotationArcBorderColor: BLACK_COLORS[15],\n /** arc 图形标注粗细 */\n annotationArcBorder: 1,\n\n /** line 图形标注颜色 */\n annotationLineBorderColor: BLACK_COLORS[25],\n /** line 图形标注粗细 */\n annotationLineBorder: 1,\n /** lube 图形标注的虚线间隔 */\n annotationLineDash: null,\n\n /** text 图形标注文本颜色 */\n annotationTextFillColor: BLACK_COLORS[65],\n /** text 图形标注文本字体大小 */\n annotationTextFontSize: 12,\n /** text 图形标注文本行高 */\n annotationTextLineHeight: 12,\n /** text 图形标注文本字体粗细 */\n annotationTextFontWeight: 'normal',\n /** text 图形标注文本边框颜色 */\n annotationTextBorderColor: null,\n /** text 图形标注文本边框粗细 */\n annotationTextBorder: 0,\n\n /** region 图形标注填充颜色 */\n annotationRegionFillColor: BLACK_COLORS[100],\n /** region 图形标注填充颜色透明色 */\n annotationRegionFillOpacity: 0.06,\n /** region 图形标注描边粗细 */\n annotationRegionBorder: 0,\n /** region 图形标注描边颜色 */\n annotationRegionBorderColor: null,\n\n /** dataMarker 图形标注线的长度 */\n annotationDataMarkerLineLength: 16,\n\n // -------------------- Tooltip --------------------\n /** tooltip crosshairs 辅助线颜色 */\n tooltipCrosshairsBorderColor: BLACK_COLORS[25],\n /** tooltip crosshairs 辅助线粗细 */\n tooltipCrosshairsBorder: 1,\n /** tooltip crosshairs 辅助线虚线间隔 */\n tooltipCrosshairsLineDash: null,\n\n /** tooltip 内容框背景色 */\n tooltipContainerFillColor: '#1f1f1f',\n tooltipContainerFillOpacity: 0.95,\n /** tooltip 内容框阴影 */\n tooltipContainerShadow: '0px 2px 4px rgba(0,0,0,.5)',\n /** tooltip 内容框圆角 */\n tooltipContainerBorderRadius: 3,\n\n /** tooltip 文本颜色 */\n tooltipTextFillColor: BLACK_COLORS[65],\n /** tooltip 文本字体大小 */\n tooltipTextFontSize: 12,\n /** tooltip 文本行高 */\n tooltipTextLineHeight: 12,\n /** tooltip 文本字体粗细 */\n tooltipTextFontWeight: 'bold',\n\n // -------------------- Geometry labels --------------------\n /** Geometry label 文本颜色 */\n labelFillColor: BLACK_COLORS[65],\n labelFillColorDark: '#2c3542',\n labelFillColorLight: '#ffffff',\n /** Geometry label 文本字体大小 */\n labelFontSize: 12,\n /** Geometry label 文本行高 */\n labelLineHeight: 12,\n /** Geometry label 文本字体粗细 */\n labelFontWeight: 'normal',\n /** Geometry label 文本描边颜色 */\n labelBorderColor: null,\n /** Geometry label 文本描边粗细 */\n labelBorder: 0,\n\n /** Geometry innerLabel 文本颜色 */\n innerLabelFillColor: WHITE_COLORS[100],\n /** Geometry innerLabel 文本字体大小 */\n innerLabelFontSize: 12,\n /** Geometry innerLabel 文本行高 */\n innerLabelLineHeight: 12,\n /** Geometry innerLabel 文本字体粗细 */\n innerLabelFontWeight: 'normal',\n /** Geometry innerLabel 文本描边颜色 */\n innerLabelBorderColor: null,\n /** Geometry innerLabel 文本描边粗细 */\n innerLabelBorder: 0,\n\n /** Geometry label 文本颜色 */\n overflowLabelFillColor: BLACK_COLORS[65],\n overflowLabelFillColorDark: '#2c3542',\n overflowLabelFillColorLight: '#ffffff',\n /** Geometry label 文本字体大小 */\n overflowLabelFontSize: 12,\n /** Geometry label 文本行高 */\n overflowLabelLineHeight: 12,\n /** Geometry label 文本字体粗细 */\n overflowLabelFontWeight: 'normal',\n /** Geometry label 文本描边颜色 */\n overflowLabelBorderColor: WHITE_COLORS[100],\n /** Geometry label 文本描边粗细 */\n overflowLabelBorder: 1,\n\n /** Geometry label 文本连接线粗细 */\n labelLineBorder: 1,\n /** Geometry label 文本连接线颜色 */\n labelLineBorderColor: BLACK_COLORS[25],\n\n // -------------------- Slider 组件样式--------------------\n /** slider 滑道高度 */\n cSliderRailHieght: 16,\n /** slider 滑道背景色 */\n cSliderBackgroundFillColor: '#416180',\n /** slider 滑道背景色透明度 */\n cSliderBackgroundFillOpacity: 0.05,\n /** slider 滑道前景色 */\n cSliderForegroundFillColor: '#5B8FF9',\n /** slider 滑道前景色透明度 */\n cSliderForegroundFillOpacity: 0.15,\n // slider handlerStyle 手柄样式\n /** slider 手柄高度 */\n cSliderHandlerHeight: 24,\n /** Slider 手柄宽度 */\n cSliderHandlerWidth: 10,\n /** Slider 手柄背景色 */\n cSliderHandlerFillColor: '#F7F7F7',\n /** Slider 手柄背景色透明度 */\n cSliderHandlerFillOpacity: 1,\n /** Slider 手柄高亮背景色 */\n cSliderHandlerHighlightFillColor: '#FFF',\n /** Slider 手柄边框色 */\n cSliderHandlerBorderColor: '#BFBFBF',\n /** Slider 手柄边框粗细 */\n cSliderHandlerBorder: 1,\n /** Slider 手柄边框圆角 */\n cSliderHandlerBorderRadius: 2,\n // slider textStyle 字体标签样式\n /** Slider 字体标签颜色 */\n cSliderTextFillColor: '#fff',\n /** Slider 字体标签透明度 */\n cSliderTextFillOpacity: 0.45,\n /** Slider 字体标签大小 */\n cSliderTextFontSize: 12,\n /** Slider 字体标签行高 */\n cSliderTextLineHeight: 12,\n /** Slider 字体标签字重 */\n cSliderTextFontWeight: 'normal',\n /** Slider 字体标签描边色 */\n cSliderTextBorderColor: null,\n /** Slider 字体标签描边粗细 */\n cSliderTextBorder: 0,\n\n // -------------------- Scrollbar 组件样式--------------------\n /** 滚动条 滚道填充色 */\n scrollbarTrackFillColor: 'rgba(255,255,255,0.65)',\n /** 滚动条 滑块填充色 */\n scrollbarThumbFillColor: 'rgba(0,0,0,0.35)',\n /** 滚动条 滑块高亮填充色 */\n scrollbarThumbHighlightFillColor: 'rgba(0,0,0,0.45)',\n\n // -------------------- Geometry 图形样式--------------------\n /** 点图填充颜色 */\n pointFillColor: QUALITATIVE_10[0],\n /** 点图填充颜色透明度 */\n pointFillOpacity: 0.95,\n /** 点图大小 */\n pointSize: 4,\n /** 点图描边粗细 */\n pointBorder: 1,\n /** 点图描边颜色 */\n pointBorderColor: WHITE_COLORS[100],\n /** 点图描边透明度 */\n pointBorderOpacity: 1,\n\n /** 点图 active 状态下描边颜色 */\n pointActiveBorderColor: BLACK_COLORS[100],\n\n /** 点图 selected 状态下描边粗细 */\n pointSelectedBorder: 2,\n /** 点图 selected 状态下描边颜色 */\n pointSelectedBorderColor: BLACK_COLORS[100],\n\n /** 点图 inactive 状态下填充颜色透明度 */\n pointInactiveFillOpacity: 0.3,\n /** 点图 inactive 状态下描边透明度 */\n pointInactiveBorderOpacity: 0.3,\n\n /** 空心点图大小 */\n hollowPointSize: 4,\n /** 空心点图描边粗细 */\n hollowPointBorder: 1,\n /** 空心点图描边颜色 */\n hollowPointBorderColor: QUALITATIVE_10[0],\n /** 空心点图描边透明度 */\n hollowPointBorderOpacity: 0.95,\n hollowPointFillColor: WHITE_COLORS[100],\n\n /** 空心点图 active 状态下描边粗细 */\n hollowPointActiveBorder: 1,\n /** 空心点图 active 状态下描边颜色 */\n hollowPointActiveBorderColor: BLACK_COLORS[100],\n /** 空心点图 active 状态下描边透明度 */\n hollowPointActiveBorderOpacity: 1,\n\n /** 空心点图 selected 状态下描边粗细 */\n hollowPointSelectedBorder: 2,\n /** 空心点图 selected 状态下描边颜色 */\n hollowPointSelectedBorderColor: BLACK_COLORS[100],\n /** 空心点图 selected 状态下描边透明度 */\n hollowPointSelectedBorderOpacity: 1,\n\n /** 空心点图 inactive 状态下描边透明度 */\n hollowPointInactiveBorderOpacity: 0.3,\n\n /** 线图粗细 */\n lineBorder: 2,\n /** 线图颜色 */\n lineBorderColor: QUALITATIVE_10[0],\n /** 线图透明度 */\n lineBorderOpacity: 1,\n\n /** 线图 Active 状态下粗细 */\n lineActiveBorder: 3,\n\n /** 线图 selected 状态下粗细 */\n lineSelectedBorder: 3,\n\n /** 线图 inactive 状态下透明度 */\n lineInactiveBorderOpacity: 0.3,\n\n /** area 填充颜色 */\n areaFillColor: QUALITATIVE_10[0],\n /** area 填充透明度 */\n areaFillOpacity: 0.25,\n\n /** area 在 active 状态下的填充透明度 */\n areaActiveFillColor: QUALITATIVE_10[0],\n areaActiveFillOpacity: 0.5,\n\n /** area 在 selected 状态下的填充透明度 */\n areaSelectedFillColor: QUALITATIVE_10[0],\n areaSelectedFillOpacity: 0.5,\n\n /** area inactive 状态下填充透明度 */\n areaInactiveFillOpacity: 0.3,\n\n /** hollowArea 颜色 */\n hollowAreaBorderColor: QUALITATIVE_10[0],\n /** hollowArea 边框粗细 */\n hollowAreaBorder: 2,\n /** hollowArea 边框透明度 */\n hollowAreaBorderOpacity: 1,\n\n /** hollowArea active 状态下的边框粗细 */\n hollowAreaActiveBorder: 3,\n hollowAreaActiveBorderColor: BLACK_COLORS[100],\n\n /** hollowArea selected 状态下的边框粗细 */\n hollowAreaSelectedBorder: 3,\n hollowAreaSelectedBorderColor: BLACK_COLORS[100],\n\n /** hollowArea inactive 状态下的边框透明度 */\n hollowAreaInactiveBorderOpacity: 0.3,\n\n /** interval 填充颜色 */\n intervalFillColor: QUALITATIVE_10[0],\n /** interval 填充透明度 */\n intervalFillOpacity: 0.95,\n\n /** interval active 状态下边框粗细 */\n intervalActiveBorder: 1,\n /** interval active 状态下边框颜色 */\n intervalActiveBorderColor: BLACK_COLORS[100],\n intervalActiveBorderOpacity: 1,\n\n /** interval selected 状态下边框粗细 */\n intervalSelectedBorder: 2,\n /** interval selected 状态下边框颜色 */\n intervalSelectedBorderColor: BLACK_COLORS[100],\n /** interval selected 状态下边框透明度 */\n intervalSelectedBorderOpacity: 1,\n\n /** interval inactive 状态下边框透明度 */\n intervalInactiveBorderOpacity: 0.3,\n /** interval inactive 状态下填充透明度 */\n intervalInactiveFillOpacity: 0.3,\n\n /** interval 边框粗细 */\n hollowIntervalBorder: 2,\n /** hollowInterval 边框颜色 */\n hollowIntervalBorderColor: QUALITATIVE_10[0],\n /** hollowInterval 边框透明度 */\n hollowIntervalBorderOpacity: 1,\n hollowIntervalFillColor: WHITE_COLORS[100],\n\n /** hollowInterval active 状态下边框粗细 */\n hollowIntervalActiveBorder: 2,\n /** hollowInterval active 状态下边框颜色 */\n hollowIntervalActiveBorderColor: BLACK_COLORS[100],\n\n /** hollowInterval selected 状态下边框粗细 */\n hollowIntervalSelectedBorder: 3,\n /** hollowInterval selected 状态下边框颜色 */\n hollowIntervalSelectedBorderColor: BLACK_COLORS[100],\n /** hollowInterval selected 状态下边框透明度 */\n hollowIntervalSelectedBorderOpacity: 1,\n\n /** hollowInterval inactive 状态下边框透明度 */\n hollowIntervalInactiveBorderOpacity: 0.3,\n };\n\n return { ...token, ...cfg };\n};\n\nexport const antvDark = createDarkStyleSheet();\n","export function getPixelRatio() {\n return window ? window.devicePixelRatio : 1;\n}\n\n/**\n * 两点之间的距离\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n */\nexport function distance(x1: number, y1: number, x2: number, y2: number) {\n const dx = x1 - x2;\n const dy = y1 - y2;\n return Math.sqrt(dx * dx + dy * dy);\n}\n\n/**\n * 是否在包围盒内\n * @param {number} minX 包围盒开始的点 x\n * @param {number} minY 包围盒开始的点 y\n * @param {number} width 宽度\n * @param {number} height 高度\n * @param {[type]} x 检测点的 x\n * @param {[type]} y 监测点的 y\n */\nexport function inBox(minX: number, minY: number, width: number, height: number, x, y) {\n return x >= minX && x <= minX + width && y >= minY && y <= minY + height;\n}\n\nexport function intersectRect(box1, box2) {\n return !(box2.minX > box1.maxX || box2.maxX < box1.minX || box2.minY > box1.maxY || box2.maxY < box1.minY);\n}\n\n// 合并两个区域\nexport function mergeRegion(region1, region2) {\n if (!region1 || !region2) {\n return region1 || region2;\n }\n return {\n minX: Math.min(region1.minX, region2.minX),\n minY: Math.min(region1.minY, region2.minY),\n maxX: Math.max(region1.maxX, region2.maxX),\n maxY: Math.max(region1.maxY, region2.maxY),\n };\n}\n\n/**\n * 判断两个点是否重合,点坐标的格式为 [x, y]\n * @param {Array} point1 第一个点\n * @param {Array} point2 第二个点\n */\nexport function isSamePoint(point1, point2) {\n return point1[0] === point2[0] && point1[1] === point2[1];\n}\n\nexport {\n isNil,\n isString,\n isFunction,\n isArray,\n each,\n toRadian,\n mod,\n isNumberEqual,\n requestAnimationFrame,\n clearAnimationFrame,\n} from '@antv/util';\n","import { IElement } from '@antv/g-base';\nimport { isString, each, isArray } from './util';\n\nconst regexLG = /^l\\s*\\(\\s*([\\d.]+)\\s*\\)\\s*(.*)/i;\nconst regexRG = /^r\\s*\\(\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*\\)\\s*(.*)/i;\nconst regexPR = /^p\\s*\\(\\s*([axyn])\\s*\\)\\s*(.*)/i;\nconst regexColorStop = /[\\d.]+:(#[^\\s]+|[^\\)]+\\))/gi;\n\nfunction addStop(steps, gradient) {\n const arr: string[] = steps.match(regexColorStop);\n each(arr, (item) => {\n const itemArr = item.split(':');\n gradient.addColorStop(itemArr[0], itemArr[1]);\n });\n}\n/**\n * 将边和填充设置的颜色转换成线性渐变对象\n * @param {CanvasRenderingContext2D} context canvas 上下文\n * @param {IElement} element 图形元素\n * @param {string} gradientStr 颜色\n * @returns {any} 渐变对象\n */\nexport function parseLineGradient(context: CanvasRenderingContext2D, element: IElement, gradientStr: string) {\n const arr = regexLG.exec(gradientStr);\n const angle = (parseFloat(arr[1]) % 360) * (Math.PI / 180);\n const steps = arr[2];\n const box = element.getBBox();\n let start;\n let end;\n\n if (angle >= 0 && angle < (1 / 2) * Math.PI) {\n start = {\n x: box.minX,\n y: box.minY,\n };\n end = {\n x: box.maxX,\n y: box.maxY,\n };\n } else if ((1 / 2) * Math.PI <= angle && angle < Math.PI) {\n start = {\n x: box.maxX,\n y: box.minY,\n };\n end = {\n x: box.minX,\n y: box.maxY,\n };\n } else if (Math.PI <= angle && angle < (3 / 2) * Math.PI) {\n start = {\n x: box.maxX,\n y: box.maxY,\n };\n end = {\n x: box.minX,\n y: box.minY,\n };\n } else {\n start = {\n x: box.minX,\n y: box.maxY,\n };\n end = {\n x: box.maxX,\n y: box.minY,\n };\n }\n\n const tanTheta = Math.tan(angle);\n const tanTheta2 = tanTheta * tanTheta;\n\n const x = (end.x - start.x + tanTheta * (end.y - start.y)) / (tanTheta2 + 1) + start.x;\n const y = (tanTheta * (end.x - start.x + tanTheta * (end.y - start.y))) / (tanTheta2 + 1) + start.y;\n const gradient = context.createLinearGradient(start.x, start.y, x, y);\n addStop(steps, gradient);\n return gradient;\n}\n\n/**\n * 将边和填充设置的颜色转换成圆形渐变对象\n * @param {CanvasRenderingContext2D} context canvas 上下文\n * @param {IElement} element 图形元素\n * @param {string} gradientStr 颜色\n * @returns {any} 渐变对象\n */\nexport function parseRadialGradient(context: CanvasRenderingContext2D, element: IElement, gradientStr: string) {\n const arr = regexRG.exec(gradientStr);\n const fx = parseFloat(arr[1]);\n const fy = parseFloat(arr[2]);\n const fr = parseFloat(arr[3]);\n const steps = arr[4];\n // 环半径为0时,默认无渐变,取渐变序列的最后一个颜色\n if (fr === 0) {\n const colors = steps.match(regexColorStop);\n return colors[colors.length - 1].split(':')[1];\n }\n const box = element.getBBox();\n const width = box.maxX - box.minX;\n const height = box.maxY - box.minY;\n const r = Math.sqrt(width * width + height * height) / 2;\n const gradient = context.createRadialGradient(\n box.minX + width * fx,\n box.minY + height * fy,\n 0,\n box.minX + width / 2,\n box.minY + height / 2,\n fr * r\n );\n addStop(steps, gradient);\n return gradient;\n}\n\n/**\n * 边和填充设置的颜色转换成 pattern\n * @param {CanvasRenderingContext2D} context canvas 上下文\n * @param {IElement} element 图形元素\n * @param {string} patternStr 生成 pattern 的字符串\n */\nexport function parsePattern(context: CanvasRenderingContext2D, element: IElement, patternStr: string) {\n // 在转换过程中进行了缓存\n if (element.get('patternSource') && element.get('patternSource') === patternStr) {\n return element.get('pattern');\n }\n let pattern;\n let img;\n const arr = regexPR.exec(patternStr);\n let repeat = arr[1];\n const source = arr[2];\n\n // Function to be called when pattern loads\n function onload() {\n // Create pattern\n pattern = context.createPattern(img, repeat);\n element.set('pattern', pattern); // be a cache\n element.set('patternSource', patternStr);\n }\n\n switch (repeat) {\n case 'a':\n repeat = 'repeat';\n break;\n case 'x':\n repeat = 'repeat-x';\n break;\n case 'y':\n repeat = 'repeat-y';\n break;\n case 'n':\n repeat = 'no-repeat';\n break;\n default:\n repeat = 'no-repeat';\n }\n\n img = new Image();\n // If source URL is not a data URL\n if (!source.match(/^data:/i)) {\n // Set crossOrigin for this image\n img.crossOrigin = 'Anonymous';\n }\n img.src = source;\n\n if (img.complete) {\n onload();\n } else {\n img.onload = onload;\n // Fix onload() bug in IE9\n img.src = img.src;\n }\n\n return pattern;\n}\n\nexport function parseStyle(context: CanvasRenderingContext2D, element: IElement, color: string | CanvasPattern) {\n const bbox = element.getBBox();\n if (isNaN(bbox.x) || isNaN(bbox.y) || isNaN(bbox.width) || isNaN(bbox.height)) {\n return color;\n }\n\n if (isString(color)) {\n if (color[1] === '(' || color[2] === '(') {\n if (color[0] === 'l') {\n // regexLG.test(color)\n return parseLineGradient(context, element, color);\n }\n if (color[0] === 'r') {\n // regexRG.test(color)\n return parseRadialGradient(context, element, color);\n }\n if (color[0] === 'p') {\n // regexPR.test(color)\n return parsePattern(context, element, color);\n }\n }\n return color;\n }\n\n if (color instanceof CanvasPattern) {\n return color;\n }\n}\n\nexport function parseRadius(radius) {\n let r1 = 0;\n let r2 = 0;\n let r3 = 0;\n let r4 = 0;\n if (isArray(radius)) {\n if (radius.length === 1) {\n r1 = r2 = r3 = r4 = radius[0];\n } else if (radius.length === 2) {\n r1 = r3 = radius[0];\n r2 = r4 = radius[1];\n } else if (radius.length === 3) {\n r1 = radius[0];\n r2 = r4 = radius[1];\n r3 = radius[2];\n } else {\n r1 = radius[0];\n r2 = radius[1];\n r3 = radius[2];\n r4 = radius[3];\n }\n } else {\n r1 = r2 = r3 = r4 = radius;\n }\n return [r1, r2, r3, r4];\n}\n","import { mod, toRadian, isSamePoint } from './util';\n\n// 向量长度\nfunction vMag(v) {\n return Math.sqrt(v[0] * v[0] + v[1] * v[1]);\n}\n\n// u.v/|u||v|,计算夹角的余弦值\nfunction vRatio(u, v) {\n // 当存在一个向量的长度为 0 时,夹角也为 0,即夹角的余弦值为 1\n return vMag(u) * vMag(v) ? (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v)) : 1;\n}\n\n// 向量角度\nfunction vAngle(u, v) {\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vRatio(u, v));\n}\n\n// A 0:rx 1:ry 2:x-axis-rotation 3:large-arc-flag 4:sweep-flag 5: x 6: y\nexport default function getArcParams(startPoint, params) {\n let rx = params[1];\n let ry = params[2];\n const xRotation = mod(toRadian(params[3]), Math.PI * 2);\n const arcFlag = params[4];\n const sweepFlag = params[5];\n // 弧形起点坐标\n const x1 = startPoint[0];\n const y1 = startPoint[1];\n // 弧形终点坐标\n const x2 = params[6];\n const y2 = params[7];\n const xp = (Math.cos(xRotation) * (x1 - x2)) / 2.0 + (Math.sin(xRotation) * (y1 - y2)) / 2.0;\n const yp = (-1 * Math.sin(xRotation) * (x1 - x2)) / 2.0 + (Math.cos(xRotation) * (y1 - y2)) / 2.0;\n const lambda = (xp * xp) / (rx * rx) + (yp * yp) / (ry * ry);\n\n if (lambda > 1) {\n rx *= Math.sqrt(lambda);\n ry *= Math.sqrt(lambda);\n }\n const diff = rx * rx * (yp * yp) + ry * ry * (xp * xp);\n\n let f = diff ? Math.sqrt((rx * rx * (ry * ry) - diff) / diff) : 1;\n\n if (arcFlag === sweepFlag) {\n f *= -1;\n }\n if (isNaN(f)) {\n f = 0;\n }\n\n // 旋转前的起点坐标,且当长半轴和短半轴的长度为 0 时,坐标按 (0, 0) 处理\n const cxp = ry ? (f * rx * yp) / ry : 0;\n const cyp = rx ? (f * -ry * xp) / rx : 0;\n\n // 椭圆圆心坐标\n const cx = (x1 + x2) / 2.0 + Math.cos(xRotation) * cxp - Math.sin(xRotation) * cyp;\n const cy = (y1 + y2) / 2.0 + Math.sin(xRotation) * cxp + Math.cos(xRotation) * cyp;\n\n // 起始点的单位向量\n const u = [(xp - cxp) / rx, (yp - cyp) / ry];\n // 终止点的单位向量\n const v = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry];\n // 计算起始点和圆心的连线,与 x 轴正方向的夹角\n const theta = vAngle([1, 0], u);\n\n // 计算圆弧起始点和终止点与椭圆圆心连线的夹角\n let dTheta = vAngle(u, v);\n\n if (vRatio(u, v) <= -1) {\n dTheta = Math.PI;\n }\n if (vRatio(u, v) >= 1) {\n dTheta = 0;\n }\n if (sweepFlag === 0 && dTheta > 0) {\n dTheta = dTheta - 2 * Math.PI;\n }\n if (sweepFlag === 1 && dTheta < 0) {\n dTheta = dTheta + 2 * Math.PI;\n }\n return {\n cx,\n cy,\n // 弧形的起点和终点相同时,长轴和短轴的长度按 0 处理\n rx: isSamePoint(startPoint, [x2, y2]) ? 0 : rx,\n ry: isSamePoint(startPoint, [x2, y2]) ? 0 : ry,\n startAngle: theta,\n endAngle: theta + dTheta,\n xRotation,\n arcFlag,\n sweepFlag,\n };\n}\n","import { Path } from '../shape';\n\nconst { sin, cos, atan2, PI } = Math;\n\nfunction _addDefaultArrow(shape, attrs, x1, y1, x2, y2, isStart) {\n const { stroke, lineWidth } = attrs;\n const x = x1 - x2;\n const y = y1 - y2;\n const rad = atan2(y, x);\n const arrowShape = new Path({\n type: 'path',\n canvas: shape.get('canvas'),\n isArrowShape: true,\n attrs: {\n // 默认箭头的边长为 10,夹角为 60 度\n path: `M${10 * cos(PI / 6)},${10 * sin(PI / 6)} L0,0 L${10 * cos(PI / 6)},-${10 * sin(PI / 6)}`,\n // 使用 shape stroke 值\n stroke,\n lineWidth,\n },\n });\n arrowShape.translate(x2, y2);\n arrowShape.rotateAtPoint(x2, y2, rad);\n shape.set(isStart ? 'startArrowShape' : 'endArrowShape', arrowShape);\n}\n\n/**\n * 箭头 path 的设置要求\n * 1. 箭头顶点坐标需要为 (0, 0)\n * 2. 箭头夹角的中心分割线需要与 X 轴正方向对齐\n */\nfunction _addCustomizedArrow(shape, attrs, x1, y1, x2, y2, isStart) {\n const { startArrow, endArrow, stroke, lineWidth } = attrs;\n const arrowAttrs = isStart ? startArrow : endArrow;\n const { d, fill: arrowFill, stroke: arrowStroke, lineWidth: arrowLineWidth, ...restAttrs } = arrowAttrs;\n const x = x1 - x2;\n const y = y1 - y2;\n const rad = atan2(y, x);\n\n if (d) {\n x2 = x2 - cos(rad) * d;\n y2 = y2 - sin(rad) * d;\n }\n\n const arrowShape = new Path({\n type: 'path',\n canvas: shape.get('canvas'),\n isArrowShape: true,\n attrs: {\n ...restAttrs,\n // 支持单独设置箭头的 stroke 和 lineWidth,若为空则使用 shape 的值\n stroke: arrowStroke || stroke,\n lineWidth: arrowLineWidth || lineWidth,\n // 箭头是否填充需要手动设置,不会继承自 shape 的值\n fill: arrowFill,\n },\n });\n\n arrowShape.translate(x2, y2);\n arrowShape.rotateAtPoint(x2, y2, rad);\n shape.set(isStart ? 'startArrowShape' : 'endArrowShape', arrowShape);\n}\n\n/**\n * 如果自定义箭头并且有 d 需要做偏移,如果直接画,线条会超出箭头尖端,因此需要根据箭头偏移 d, 返回线需要缩短的距离\n * |----------------\n * |<|--------------\n * |\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 箭头作用点 x\n * @param {number} y2 箭头作用点 y\n * @param {number} d 箭头沿线条方向的偏移距离\n * @return {{dx: number, dy: number}} 返回线条偏移距离\n */\nexport function getShortenOffset(x1, y1, x2, y2, d) {\n const rad = atan2(y2 - y1, x2 - x1);\n return {\n dx: cos(rad) * d,\n dy: sin(rad) * d,\n };\n}\n\n/**\n * 绘制起始箭头\n * @param {IShape} shape 图形\n * @param {ShapeAttrs} attrs shape 的绘图属性\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 箭头作用点 x\n * @param {number} y2 箭头作用点 y\n */\nexport function addStartArrow(shape, attrs, x1, y1, x2, y2) {\n if (typeof attrs.startArrow === 'object') {\n _addCustomizedArrow(shape, attrs, x1, y1, x2, y2, true);\n } else if (attrs.startArrow) {\n _addDefaultArrow(shape, attrs, x1, y1, x2, y2, true);\n } else {\n shape.set('startArrowShape', null);\n }\n}\n\n/**\n * 绘制结束箭头\n * @param {IShape} shape 图形\n * @param {ShapeAttrs} attrs shape 的绘图属性\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 箭头作用点 x\n * @param {number} y2 箭头作用点 y\n */\nexport function addEndArrow(shape, attrs, x1, y1, x2, y2) {\n if (typeof attrs.endArrow === 'object') {\n _addCustomizedArrow(shape, attrs, x1, y1, x2, y2, false);\n } else if (attrs.endArrow) {\n _addDefaultArrow(shape, attrs, x1, y1, x2, y2, false);\n } else {\n shape.set('startArrowShape', null);\n }\n}\n","import { each, isArray, max, min } from '@antv/util';\nimport { IElement } from '../interfaces';\nimport { Region } from '../types';\nimport { parseStyle } from './parse';\nimport getArcParams from './arc-params';\nimport { mergeRegion, intersectRect } from './util';\nimport * as ArrowUtil from '../util/arrow';\n\nconst SHAPE_ATTRS_MAP = {\n fill: 'fillStyle',\n stroke: 'strokeStyle',\n opacity: 'globalAlpha',\n};\n\nexport function applyAttrsToContext(context: CanvasRenderingContext2D, element: IElement) {\n const attrs = element.attr();\n for (const k in attrs) {\n let v = attrs[k];\n // 转换一下不与 canvas 兼容的属性名\n const name = SHAPE_ATTRS_MAP[k] ? SHAPE_ATTRS_MAP[k] : k;\n if (name === 'matrix' && v) {\n // 设置矩阵\n context.transform(v[0], v[1], v[3], v[4], v[6], v[7]);\n } else if (name === 'lineDash' && context.setLineDash) {\n // 设置虚线,只支持数组形式,非数组形式不做任何操作\n isArray(v) && context.setLineDash(v);\n } else {\n if (name === 'strokeStyle' || name === 'fillStyle') {\n // 如果存在渐变、pattern 这个开销有些大\n // 可以考虑缓存机制,通过 hasUpdate 来避免一些运算\n v = parseStyle(context, element, v);\n } else if (name === 'globalAlpha') {\n // opacity 效果可以叠加,子元素的 opacity 需要与父元素 opacity 相乘\n v = v * context.globalAlpha;\n }\n context[name] = v;\n }\n }\n}\n\nexport function drawChildren(context: CanvasRenderingContext2D, children: IElement[], region?: Region) {\n for (let i = 0; i < children.length; i++) {\n const child = children[i] as IElement;\n if (child.cfg.visible) {\n child.draw(context, region);\n } else {\n child.skipDraw();\n }\n }\n}\n\n// 这个地方的逻辑比较复杂,简单画了一张图:https://www.yuque.com/antv/ou292n/pcgt5g#OW1QE\nexport function checkRefresh(canvas, children: IElement[], region: Region) {\n const refreshElements = canvas.get('refreshElements');\n // 先遍历需要刷新的元素,将这些元素的父元素也设置 refresh\n each(refreshElements, (el) => {\n if (el !== canvas) {\n let parent = el.cfg.parent;\n while (parent && parent !== canvas && !parent.cfg.refresh) {\n parent.cfg.refresh = true;\n parent = parent.cfg.parent;\n }\n }\n });\n if (refreshElements[0] === canvas) {\n setChildrenRefresh(children, region);\n } else {\n // 检查所有子元素是否可以刷新\n checkChildrenRefresh(children, region);\n }\n}\n// 检查所有的子元素是否应该更新\nexport function checkChildrenRefresh(children: IElement[], region: Region) {\n for (let i = 0; i < children.length; i++) {\n const child = children[i] as IElement;\n if (child.cfg.visible) {\n // 先判断 hasChanged,因为它的优先级判断应该高于 refresh\n if (child.cfg.hasChanged) {\n // 如果节点发生了 change,则需要级联设置子元素的 refresh\n child.cfg.refresh = true;\n if (child.isGroup()) {\n setChildrenRefresh(child.cfg.children, region);\n }\n } else if (child.cfg.refresh) {\n // 如果当前图形/分组 refresh = true,说明其子节点存在 changed\n if (child.isGroup()) {\n checkChildrenRefresh(child.cfg.children, region);\n }\n } else {\n // 这个分支说明此次局部刷新,所有的节点和父元素没有发生变化,仅需要检查包围盒(缓存)是否相交即可\n const refresh = checkElementRefresh(child, region);\n child.cfg.refresh = refresh;\n if (refresh && child.isGroup()) {\n // 如果需要刷新,说明子元素也需要刷新,继续进行判定\n checkChildrenRefresh(child.cfg.children, region);\n }\n }\n }\n }\n}\n\n// 由于对改变的图形放入 refreshElements 时做了优化,判定父元素 changed 时不加入\n// 那么有可能会出现 elements 都为空,所以最终 group\nexport function clearChanged(elements: IElement[]) {\n for (let i = 0; i < elements.length; i++) {\n const el = elements[i];\n el.cfg.hasChanged = false;\n // 级联清理\n if (el.isGroup() && !el.destroyed) {\n clearChanged(el.cfg.children);\n }\n }\n}\n\n// 当某个父元素发生改变时,调用这个方法级联设置 refresh\nfunction setChildrenRefresh(children: IElement[], region: Region) {\n for (let i = 0; i < children.length; i++) {\n const child = children[i] as IElement;\n if (!child.cfg.visible) {\n continue;\n }\n // let refresh = true;\n // 获取缓存的 bbox,如果这个 bbox 还存在则说明父元素不是矩阵发生了改变\n // const bbox = child.cfg.canvasBBox;\n // if (bbox) {\n // // 如果这时候\n // refresh = intersectRect(bbox, region);\n // }\n child.cfg.refresh = true;\n // 如果需要刷新当前节点,所有的子元素设置 refresh\n if (child.isGroup()) {\n setChildrenRefresh(child.get('children'), region);\n }\n }\n}\n\nfunction checkElementRefresh(shape: IElement, region: Region): boolean {\n const bbox = shape.cfg.cacheCanvasBBox;\n const isAllow = shape.cfg.isInView && bbox && intersectRect(bbox, region);\n return isAllow;\n}\n\n// 绘制 path\nexport function drawPath(shape, context, attrs, arcParamsCache) {\n const { path, startArrow, endArrow } = attrs;\n if (!path) {\n return;\n }\n let currentPoint = [0, 0]; // 当前图形\n let startMovePoint = [0, 0]; // 开始 M 的点,可能会有多个\n let distance = {\n dx: 0,\n dy: 0,\n };\n context.beginPath();\n for (let i = 0; i < path.length; i++) {\n const params = path[i];\n const command = params[0];\n if (i === 0 && startArrow && startArrow.d) {\n const tangent = shape.getStartTangent();\n distance = ArrowUtil.getShortenOffset(tangent[0][0], tangent[0][1], tangent[1][0], tangent[1][1], startArrow.d);\n } else if (i === path.length - 2 && path[i + 1][0] === 'Z' && endArrow && endArrow.d) {\n // 为了防止结尾为 Z 的 segment 缩短不起效,需要取最后两个 segment 特殊处理\n const lastPath = path[i + 1];\n if (lastPath[0] === 'Z') {\n const tangent = shape.getEndTangent();\n distance = ArrowUtil.getShortenOffset(tangent[0][0], tangent[0][1], tangent[1][0], tangent[1][1], endArrow.d);\n }\n } else if (i === path.length - 1 && endArrow && endArrow.d) {\n if (path[0] !== 'Z') {\n const tangent = shape.getEndTangent();\n distance = ArrowUtil.getShortenOffset(tangent[0][0], tangent[0][1], tangent[1][0], tangent[1][1], endArrow.d);\n }\n }\n\n const { dx, dy } = distance;\n // V,H,S,T 都在前面被转换成标准形式\n switch (command) {\n case 'M':\n context.moveTo(params[1] - dx, params[2] - dy);\n startMovePoint = [params[1], params[2]];\n break;\n case 'L':\n context.lineTo(params[1] - dx, params[2] - dy);\n break;\n case 'Q':\n context.quadraticCurveTo(params[1], params[2], params[3] - dx, params[4] - dy);\n break;\n case 'C':\n context.bezierCurveTo(params[1], params[2], params[3], params[4], params[5] - dx, params[6] - dy);\n break;\n case 'A': {\n let arcParams;\n // 为了加速绘制,可以提供参数的缓存,各个图形自己缓存\n if (arcParamsCache) {\n arcParams = arcParamsCache[i];\n if (!arcParams) {\n arcParams = getArcParams(currentPoint, params);\n arcParamsCache[i] = arcParams;\n }\n } else {\n arcParams = getArcParams(currentPoint, params);\n }\n const { cx, cy, rx, ry, startAngle, endAngle, xRotation, sweepFlag } = arcParams;\n // 直接使用椭圆的 api\n if (context.ellipse) {\n context.ellipse(cx, cy, rx, ry, xRotation, startAngle, endAngle, 1 - sweepFlag);\n } else {\n const r = rx > ry ? rx : ry;\n const scaleX = rx > ry ? 1 : rx / ry;\n const scaleY = rx > ry ? ry / rx : 1;\n context.translate(cx, cy);\n context.rotate(xRotation);\n context.scale(scaleX, scaleY);\n context.arc(0, 0, r, startAngle, endAngle, 1 - sweepFlag);\n context.scale(1 / scaleX, 1 / scaleY);\n context.rotate(-xRotation);\n context.translate(-cx, -cy);\n }\n break;\n }\n case 'Z':\n context.closePath();\n break;\n default:\n break;\n }\n\n // 有了 Z 后,当前节点从开始 M 的点开始\n if (command === 'Z') {\n currentPoint = startMovePoint;\n } else {\n const len = params.length;\n currentPoint = [params[len - 2], params[len - 1]];\n }\n }\n}\n\n// 刷新图形元素(Shape 或者 Group)\nexport function refreshElement(element, changeType) {\n const canvas = element.get('canvas');\n // 只有存在于 canvas 上时生效\n if (canvas) {\n if (changeType === 'remove') {\n // 一旦 remove,则无法在 element 上拿到包围盒\n // destroy 后所有属性都拿不到,所以需要暂存一下\n // 这是一段 hack 的代码\n element._cacheCanvasBBox = element.get('cacheCanvasBBox');\n }\n // 防止反复刷新\n if (!element.get('hasChanged')) {\n // 但是始终要标记为 hasChanged,便于后面进行局部渲染\n element.set('hasChanged', true);\n\n // 本来只有局部渲染模式下,才需要记录更新的元素队列\n // if (canvas.get('localRefresh')) {\n // canvas.refreshElement(element, changeType, canvas);\n // }\n // 但对于 https://github.com/antvis/g/issues/422 的场景,全局渲染的模式下也需要记录更新的元素队列\n // 如果当前元素的父元素发生了改变,可以不放入队列,这句话大概能够提升 15% 的初次渲染性能\n if (!(element.cfg.parent && element.cfg.parent.get('hasChanged'))) {\n canvas.refreshElement(element, changeType, canvas);\n if (canvas.get('autoDraw')) {\n canvas.draw();\n }\n }\n }\n }\n}\n\nexport function getRefreshRegion(element): Region | undefined {\n let region;\n if (!element.destroyed) {\n const cacheBox = element.get('cacheCanvasBBox');\n const validCache = cacheBox && !!(cacheBox.width && cacheBox.height);\n const bbox = element.getCanvasBBox();\n const validBBox = bbox && !!(bbox.width && bbox.height);\n // 是否是有效 bbox 判定,一些 NaN 或者 宽高为 0 的情况过滤掉\n if (validCache && validBBox) {\n region = mergeRegion(cacheBox, bbox);\n } else if (validCache) {\n region = cacheBox;\n } else if (validBBox) {\n region = bbox;\n }\n } else {\n // 因为元素已经销毁所以无法获取到缓存的包围盒\n region = element['_cacheCanvasBBox'];\n }\n return region;\n}\n\nexport function getMergedRegion(elements): Region {\n if (!elements.length) {\n return null;\n }\n const minXArr = [];\n const minYArr = [];\n const maxXArr = [];\n const maxYArr = [];\n each(elements, (el: IElement) => {\n const region = getRefreshRegion(el);\n if (region) {\n minXArr.push(region.minX);\n minYArr.push(region.minY);\n maxXArr.push(region.maxX);\n maxYArr.push(region.maxY);\n }\n });\n return {\n minX: min(minXArr),\n minY: min(minYArr),\n maxX: max(maxXArr),\n maxY: max(maxYArr),\n };\n}\n\nexport function mergeView(region, viewRegion) {\n if (!region || !viewRegion) {\n return null;\n }\n // 不相交,则直接返回 null\n if (!intersectRect(region, viewRegion)) {\n return null;\n }\n return {\n minX: Math.max(region.minX, viewRegion.minX),\n minY: Math.max(region.minY, viewRegion.minY),\n maxX: Math.min(region.maxX, viewRegion.maxX),\n maxY: Math.min(region.maxY, viewRegion.maxY),\n };\n}\n","import { AbstractGroup } from '@antv/g-base';\nimport { ChangeType } from '@antv/g-base';\nimport { IElement } from './interfaces';\nimport { Region } from './types';\nimport ShapeBase from './shape/base';\nimport * as Shape from './shape';\nimport { applyAttrsToContext, drawChildren, refreshElement } from './util/draw';\nimport { each, max, min } from '@antv/util';\nimport { intersectRect } from './util/util';\n\nclass Group extends AbstractGroup {\n /**\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n onCanvasChange(changeType: ChangeType) {\n refreshElement(this, changeType);\n }\n\n getShapeBase() {\n return Shape;\n }\n\n getGroupBase() {\n return Group;\n }\n\n // 同 shape 中的方法重复了\n _applyClip(context, clip: ShapeBase) {\n if (clip) {\n context.save();\n // 将 clip 的属性挂载到 context 上\n applyAttrsToContext(context, clip);\n // 绘制 clip 路径\n clip.createPath(context);\n context.restore();\n // 裁剪\n context.clip();\n clip._afterDraw();\n }\n }\n\n // 这个方法以前直接使用的 getCanvasBBox,由于 group 上没有缓存,所以每次重新计算,导致性能开销比较大\n // 大概能够节省全局渲染 15-20% 的性能,如果不在这里加缓存优化后 10W 个节点无法达到 5-6 ms,大概能够 30-40ms\n private cacheCanvasBBox() {\n const children = this.cfg.children;\n const xArr = [];\n const yArr = [];\n each(children, (child) => {\n const bbox = child.cfg.cacheCanvasBBox;\n // isInview 的判定是一旦图形或者分组渲染就要计算是否在视图内,\n // 这个判定 10W 个图形下差不多能够节省 5-6 ms 的开销\n if (bbox && child.cfg.isInView) {\n xArr.push(bbox.minX, bbox.maxX);\n yArr.push(bbox.minY, bbox.maxY);\n }\n });\n let bbox = null;\n if (xArr.length) {\n const minX = min(xArr);\n const maxX = max(xArr);\n const minY = min(yArr);\n const maxY = max(yArr);\n bbox = {\n minX,\n minY,\n x: minX,\n y: minY,\n maxX,\n maxY,\n width: maxX - minX,\n height: maxY - minY,\n };\n const canvas = this.cfg.canvas;\n if (canvas) {\n const viewRange = canvas.getViewRange();\n // 如果这个地方判定 isInView == false 设置 bbox 为 false 的话,拾取的性能会更高\n // 但是目前 10W 图形的拾取在 2-5ms 内,这个优化意义不大,可以后期观察再看\n this.set('isInView', intersectRect(bbox, viewRange));\n }\n } else {\n this.set('isInView', false);\n }\n\n this.set('cacheCanvasBBox', bbox);\n }\n\n draw(context: CanvasRenderingContext2D, region?: Region) {\n const children = this.cfg.children as IElement[];\n const allowDraw = region ? this.cfg.refresh : true; // 局部刷新需要判定\n // 这个地方需要判定,在 G6 的场景每个 group 都有 transform 的场景下性能会开销非常大\n // 通过 refresh 的判定,可以不刷新没有发生过变化的分组,不在视窗内的分组等等\n // 如果想进一步提升局部渲染性能,可以进一步优化 refresh 的判定,依然有潜力\n if (children.length && allowDraw) {\n context.save();\n // group 上的矩阵和属性也会应用到上下文上\n // 先将 attrs 应用到上下文中,再设置 clip。因为 clip 应该被当前元素的 matrix 所影响\n applyAttrsToContext(context, this);\n this._applyClip(context, this.getClip() as ShapeBase);\n drawChildren(context, children, region);\n context.restore();\n this.cacheCanvasBBox();\n }\n // 这里的成本比较大,如果不绘制则不再\n // this.set('cacheCanvasBBox', this.getCanvasBBox());\n this.cfg.refresh = null;\n // 绘制后,消除更新标记\n this.set('hasChanged', false);\n }\n // 绘制时被跳过,一般发生在分组隐藏时\n skipDraw() {\n this.set('cacheCanvasBBox', null);\n this.set('hasChanged', false);\n }\n}\n\nexport default Group;\n","import { AbstractShape } from '@antv/g-base';\nimport { ChangeType, BBox } from '@antv/g-base';\nimport { isNil, intersectRect } from '../util/util';\nimport { applyAttrsToContext, refreshElement } from '../util/draw';\nimport { getBBoxMethod } from '@antv/g-base';\nimport { Region } from '../types';\nimport * as Shape from './index';\nimport Group from '../group';\n\nclass ShapeBase extends AbstractShape {\n getDefaultAttrs() {\n const attrs = super.getDefaultAttrs();\n // 设置默认值\n return {\n ...attrs,\n lineWidth: 1,\n lineAppendWidth: 0,\n strokeOpacity: 1,\n fillOpacity: 1,\n };\n }\n\n getShapeBase() {\n return Shape;\n }\n\n getGroupBase() {\n return Group;\n }\n\n /**\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n onCanvasChange(changeType: ChangeType) {\n refreshElement(this, changeType);\n }\n\n calculateBBox(): BBox {\n const type = this.get('type');\n const lineWidth = this.getHitLineWidth();\n // const attrs = this.attr();\n const bboxMethod = getBBoxMethod(type);\n const box = bboxMethod(this);\n const halfLineWidth = lineWidth / 2;\n const minX = box.x - halfLineWidth;\n const minY = box.y - halfLineWidth;\n const maxX = box.x + box.width + halfLineWidth;\n const maxY = box.y + box.height + halfLineWidth;\n return {\n x: minX,\n minX,\n y: minY,\n minY,\n width: box.width + lineWidth,\n height: box.height + lineWidth,\n maxX,\n maxY,\n };\n }\n\n isFill() {\n return !!this.attrs['fill'] || this.isClipShape();\n }\n\n isStroke() {\n return !!this.attrs['stroke'];\n }\n\n // 同 shape 中的方法重复了\n _applyClip(context, clip: ShapeBase) {\n if (clip) {\n context.save();\n // 将 clip 的属性挂载到 context 上\n applyAttrsToContext(context, clip);\n // 绘制 clip 路径\n clip.createPath(context);\n context.restore();\n // 裁剪\n context.clip();\n clip._afterDraw();\n }\n }\n\n // 绘制图形时需要考虑 region 限制\n draw(context: CanvasRenderingContext2D, region?: Region) {\n const clip = this.cfg.clipShape;\n // 如果指定了 region,同时不允许刷新时,直接返回\n if (region) {\n if (this.cfg.refresh === false) {\n // this._afterDraw();\n this.set('hasChanged', false);\n return;\n }\n // 是否相交需要考虑 clip 的包围盒\n const bbox = this.getCanvasBBox();\n if (!intersectRect(region, bbox)) {\n // 图形的包围盒与重绘区域不相交时,也需要清除标记\n this.set('hasChanged', false);\n // 存在多种情形需要更新 cacheCanvasBBox 和 isInview 的判定\n // 1. 之前图形在视窗内,但是现在不再视窗内\n // 2. 如果当前的图形以及父元素都没有发生过变化,refresh = false 不会走到这里,所以这里的图形都是父元素发生变化,但是没有在视图内的元素\n if (this.cfg.isInView) {\n this._afterDraw();\n }\n return;\n }\n }\n context.save();\n // 先将 attrs 应用到上下文中,再设置 clip。因为 clip 应该被当前元素的 matrix 所影响\n applyAttrsToContext(context, this);\n this._applyClip(context, clip as ShapeBase);\n this.drawPath(context);\n context.restore();\n this._afterDraw();\n }\n\n private getCanvasViewBox() {\n const canvas = this.cfg.canvas;\n if (canvas) {\n // @ts-ignore\n return canvas.getViewRange();\n }\n return null;\n }\n\n cacheCanvasBBox() {\n const canvasBBox = this.getCanvasViewBox();\n // 绘制的时候缓存包围盒\n if (canvasBBox) {\n const bbox = this.getCanvasBBox();\n const isInView = intersectRect(bbox, canvasBBox);\n this.set('isInView', isInView);\n // 不再视窗内 cacheCanvasBBox 设置成 null,会提升局部渲染的性能,\n // 因为在局部渲染影响的包围盒计算时不考虑这个图形的包围盒\n // 父元素 cacheCanvasBBox 计算的时候也不计算\n if (isInView) {\n this.set('cacheCanvasBBox', bbox);\n } else {\n this.set('cacheCanvasBBox', null);\n }\n }\n }\n\n _afterDraw() {\n this.cacheCanvasBBox();\n // 绘制后消除标记\n this.set('hasChanged', false);\n this.set('refresh', null);\n }\n\n skipDraw() {\n this.set('cacheCanvasBBox', null);\n this.set('isInView', null);\n this.set('hasChanged', false);\n }\n\n /**\n * 绘制图形的路径\n * @param {CanvasRenderingContext2D} context 上下文\n */\n drawPath(context: CanvasRenderingContext2D) {\n this.createPath(context);\n this.strokeAndFill(context);\n this.afterDrawPath(context);\n }\n\n /**\n * @protected\n * 填充图形\n * @param {CanvasRenderingContext2D} context context 上下文\n */\n fill(context: CanvasRenderingContext2D) {\n context.fill();\n }\n\n /**\n * @protected\n * 绘制图形边框\n * @param {CanvasRenderingContext2D} context context 上下文\n */\n stroke(context: CanvasRenderingContext2D) {\n context.stroke();\n }\n\n // 绘制或者填充\n strokeAndFill(context) {\n const { lineWidth, opacity, strokeOpacity, fillOpacity } = this.attrs;\n\n if (this.isFill()) {\n if (!isNil(fillOpacity) && fillOpacity !== 1) {\n context.globalAlpha = fillOpacity;\n this.fill(context);\n context.globalAlpha = opacity;\n } else {\n this.fill(context);\n }\n }\n\n if (this.isStroke()) {\n if (lineWidth > 0) {\n if (!isNil(strokeOpacity) && strokeOpacity !== 1) {\n context.globalAlpha = strokeOpacity;\n }\n this.stroke(context);\n }\n }\n this.afterDrawPath(context);\n }\n\n /**\n * @protected\n * 绘制图形的路径\n * @param {CanvasRenderingContext2D} context 上下文\n */\n createPath(context: CanvasRenderingContext2D) {}\n\n /**\n * 绘制完成 path 后的操作\n * @param {CanvasRenderingContext2D} context 上下文\n */\n afterDrawPath(context: CanvasRenderingContext2D) {}\n\n isInShape(refX: number, refY: number): boolean {\n // return HitUtil.isHitShape(this, refX, refY);\n const isStroke = this.isStroke();\n const isFill = this.isFill();\n const lineWidth = this.getHitLineWidth();\n return this.isInStrokeOrPath(refX, refY, isStroke, isFill, lineWidth);\n }\n\n // 之所以不拆成 isInStroke 和 isInPath 在于两者存在一些共同的计算\n isInStrokeOrPath(x, y, isStroke, isFill, lineWidth) {\n return false;\n }\n\n /**\n * 获取线拾取的宽度\n * @returns {number} 线的拾取宽度\n */\n getHitLineWidth() {\n if (!this.isStroke()) {\n return 0;\n }\n const attrs = this.attrs;\n return attrs['lineWidth'] + attrs['lineAppendWidth'];\n }\n}\n\nexport default ShapeBase;\n","/**\n * @fileoverview 圆\n * @author dxq613@gmail.com\n */\n\nimport ShapeBase from './base';\nimport { distance } from '../util/util';\n\nclass Circle extends ShapeBase {\n getDefaultAttrs() {\n const attrs = super.getDefaultAttrs();\n return {\n ...attrs,\n x: 0,\n y: 0,\n r: 0,\n };\n }\n\n isInStrokeOrPath(x, y, isStroke, isFill, lineWidth) {\n const attrs = this.attr();\n const cx = attrs.x;\n const cy = attrs.y;\n const r = attrs.r;\n const halfLineWidth = lineWidth / 2;\n const absDistance = distance(cx, cy, x, y);\n // 直接用距离,如果同时存在边和填充时,可以减少两次计算\n if (isFill && isStroke) {\n return absDistance <= r + halfLineWidth;\n }\n if (isFill) {\n return absDistance <= r;\n }\n if (isStroke) {\n return absDistance >= r - halfLineWidth && absDistance <= r + halfLineWidth;\n }\n return false;\n }\n\n createPath(context) {\n const attrs = this.attr();\n const cx = attrs.x;\n const cy = attrs.y;\n const r = attrs.r;\n context.beginPath();\n context.arc(cx, cy, r, 0, Math.PI * 2, false);\n context.closePath();\n }\n}\n\nexport default Circle;\n","/**\n * @fileoverview 椭圆\n * @author dxq613@gmail.com\n */\n\nimport ShapeBase from './base';\n\n// 根据椭圆公式计算 x*x/rx*rx + y*y/ry*ry;\nfunction ellipseDistance(squareX, squareY, rx, ry) {\n return squareX / (rx * rx) + squareY / (ry * ry);\n}\n\nclass Ellipse extends ShapeBase {\n getDefaultAttrs() {\n const attrs = super.getDefaultAttrs();\n return {\n ...attrs,\n x: 0,\n y: 0,\n rx: 0,\n ry: 0,\n };\n }\n\n isInStrokeOrPath(x, y, isStroke, isFill, lineWidth) {\n const attrs = this.attr();\n const halfLineWith = lineWidth / 2;\n const cx = attrs.x;\n const cy = attrs.y;\n const { rx, ry } = attrs;\n const squareX = (x - cx) * (x - cx);\n const squareY = (y - cy) * (y - cy);\n // 使用椭圆的公式: x*x/rx*rx + y*y/ry*ry = 1;\n if (isFill && isStroke) {\n return ellipseDistance(squareX, squareY, rx + halfLineWith, ry + halfLineWith) <= 1;\n }\n if (isFill) {\n return ellipseDistance(squareX, squareY, rx, ry) <= 1;\n }\n if (isStroke) {\n return (\n ellipseDistance(squareX, squareY, rx - halfLineWith, ry - halfLineWith) >= 1 &&\n ellipseDistance(squareX, squareY, rx + halfLineWith, ry + halfLineWith) <= 1\n );\n }\n return false;\n }\n\n createPath(context) {\n const attrs = this.attr();\n const cx = attrs.x;\n const cy = attrs.y;\n const rx = attrs.rx;\n const ry = attrs.ry;\n context.beginPath();\n // 兼容逻辑\n if (context.ellipse) {\n context.ellipse(cx, cy, rx, ry, 0, 0, Math.PI * 2, false);\n } else {\n // 如果不支持,则使用圆来绘制,进行变形\n const r = rx > ry ? rx : ry;\n const scaleX = rx > ry ? 1 : rx / ry;\n const scaleY = rx > ry ? ry / rx : 1;\n context.save();\n context.translate(cx, cy);\n context.scale(scaleX, scaleY);\n context.arc(0, 0, r, 0, Math.PI * 2);\n context.restore();\n context.closePath();\n }\n }\n}\n\nexport default Ellipse;\n","/**\n * @fileoverview 图片\n * @author dxq613@gmail.com\n */\n\nimport ShapeBase from './base';\nimport { isString, isNil } from '../util/util';\nfunction isCanvas(dom) {\n return dom instanceof HTMLElement && isString(dom.nodeName) && dom.nodeName.toUpperCase() === 'CANVAS';\n}\n\nclass ImageShape extends ShapeBase {\n getDefaultAttrs() {\n const attrs = super.getDefaultAttrs();\n return {\n ...attrs,\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n };\n }\n\n initAttrs(attrs) {\n this._setImage(attrs.img);\n }\n\n // image 不计算 stroke\n isStroke() {\n return false;\n }\n\n // 仅仅使用包围盒检测来进行拾取\n // 所以不需要复写 isInStrokeOrPath 的方法\n isOnlyHitBox() {\n return true;\n }\n\n _afterLoading() {\n if (this.get('toDraw') === true) {\n const canvas = this.get('canvas');\n if (canvas) {\n // 这段应该改成局部渲染\n canvas.draw();\n } else {\n // 这种方式如果发生遮挡会出现问题\n this.createPath(this.get('context'));\n }\n }\n }\n\n _setImage(img) {\n const attrs = this.attrs;\n if (isString(img)) {\n const image = new Image();\n image.onload = () => {\n // 图片未加载完,则已经被销毁\n if (this.destroyed) {\n return false;\n }\n // 缓存原始地址,可以做对比,防止重复加载图片\n // 如果考虑到在加载过程中可能替换 img 属性,则情况更加复杂\n // this.set('imgSrc', img);\n // 这里会循环调用 _setImage 方法,但不会再走这个分支\n this.attr('img', image);\n this.set('loading', false);\n this._afterLoading();\n const callback = this.get('callback');\n if (callback) {\n callback.call(this);\n }\n };\n // 设置跨域\n image.crossOrigin = 'Anonymous';\n\n image.src = img;\n // loading 过程中不绘制\n this.set('loading', true);\n } else if (img instanceof Image) {\n // 如果是一个 image 对象,则设置宽高\n if (!attrs.width) {\n attrs.width = img.width;\n }\n if (!attrs.height) {\n attrs.height = img.height;\n }\n } else if (isCanvas(img)) {\n // 如果设置了 canvas 对象\n if (!attrs.width) {\n attrs.width = Number(img.getAttribute('width'));\n }\n\n if (!attrs.height) {\n attrs.height, Number(img.getAttribute('height'));\n }\n }\n }\n\n onAttrChange(name: string, value: any, originValue: any) {\n super.onAttrChange(name, value, originValue);\n // 如果加载的已经是当前图片,则不再处理\n if (name === 'img') {\n // 可以加缓冲,&& this.get('imgSrc') !== value\n this._setImage(value);\n }\n }\n\n createPath(context: CanvasRenderingContext2D) {\n // 正在加载则不绘制\n if (this.get('loading')) {\n this.set('toDraw', true); // 加载完成后绘制\n this.set('context', context);\n return;\n }\n const attrs = this.attr();\n const { x, y, width, height, sx, sy, swidth, sheight } = attrs;\n\n const img = attrs.img;\n if (img instanceof Image || isCanvas(img)) {\n if (!isNil(sx) && !isNil(sy) && !isNil(swidth) && !isNil(sheight)) {\n context.drawImage(img, sx, sy, swidth, sheight, x, y, width, height);\n } else {\n context.drawImage(img, x, y, width, height);\n }\n }\n }\n}\n\nexport default ImageShape;\n","import { max, min } from '@antv/util';\nimport { BBox } from './types';\n\n/**\n * 两点之间的距离\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @return {number} 距离\n */\nexport function distance(x1: number, y1: number, x2: number, y2: number) {\n const dx = x1 - x2;\n const dy = y1 - y2;\n return Math.sqrt(dx * dx + dy * dy);\n}\n\nexport function isNumberEqual(v1: number, v2: number) {\n return Math.abs(v1 - v2) < 0.001;\n}\n\nexport function getBBoxByArray(xArr: number[], yArr: number[]): BBox {\n const minX = min(xArr);\n const minY = min(yArr);\n const maxX = max(xArr);\n const maxY = max(yArr);\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n}\n\nexport function getBBoxRange(x1: number, y1: number, x2: number, y2: number) {\n return {\n minX: min([x1, x2]),\n maxX: max([x1, x2]),\n minY: min([y1, y2]),\n maxY: max([y1, y2]),\n };\n}\n\nexport function piMod(angle: number) {\n return (angle + Math.PI * 2) % (Math.PI * 2);\n}\n","import { distance, getBBoxByArray } from './util';\nimport * as vec2 from 'gl-matrix/vec2';\nimport { BBox, Point } from './types';\n\nexport default {\n /**\n * 计算线段的包围盒\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @return {object} 包围盒对象\n */\n box(x1: number, y1: number, x2: number, y2: number): BBox {\n return getBBoxByArray([x1, x2], [y1, y2]);\n },\n /**\n * 线段的长度\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @return {number} 距离\n */\n length(x1: number, y1: number, x2: number, y2: number) {\n return distance(x1, y1, x2, y2);\n },\n /**\n * 根据比例获取点\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @param {number} t 指定比例\n * @return {object} 包含 x, y 的点\n */\n pointAt(x1: number, y1: number, x2: number, y2: number, t: number): Point {\n return {\n x: (1 - t) * x1 + t * x2,\n y: (1 - t) * y1 + t * y2,\n };\n },\n /**\n * 点到线段的距离\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @param {number} x 测试点 x\n * @param {number} y 测试点 y\n * @return {number} 距离\n */\n pointDistance(x1: number, y1: number, x2: number, y2: number, x: number, y: number): number {\n // 投影距离 x1, y1 的向量,假设 p, p1, p2 三个点,投影点为 a\n // p1a = p1p.p1p2/|p1p2| * (p1p 的单位向量)\n const cross = (x2 - x1) * (x - x1) + (y2 - y1) * (y - y1);\n if (cross < 0) {\n return distance(x1, y1, x, y);\n }\n const lengthSquare = (x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1);\n if (cross > lengthSquare) {\n return distance(x2, y2, x, y);\n }\n return this.pointToLine(x1, y1, x2, y2, x, y);\n },\n /**\n * 点到直线的距离,而不是点到线段的距离\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @param {number} x 测试点 x\n * @param {number} y 测试点 y\n * @return {number} 距离\n */\n pointToLine(x1: number, y1: number, x2: number, y2: number, x: number, y: number) {\n const d = [x2 - x1, y2 - y1];\n // 如果端点相等,则判定点到点的距离\n if (vec2.exactEquals(d, [0, 0])) {\n return Math.sqrt((x - x1) * (x - x1) + (y - y1) * (y - y1));\n }\n const u = [-d[1], d[0]];\n vec2.normalize(u, u);\n const a = [x - x1, y - y1];\n return Math.abs(vec2.dot(a, u));\n },\n /**\n * 线段的角度\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @return {number} 导数\n */\n tangentAngle(x1: number, y1: number, x2: number, y2: number) {\n return Math.atan2(y2 - y1, x2 - x1);\n },\n};\n","import { distance } from './util';\nimport { Point, PointTuple } from './types';\n\nconst EPSILON = 0.0001;\n/**\n * 使用牛顿切割法求最近的点\n * @param {number[]} xArr 点的 x 数组\n * @param {number[]} yArr 点的 y 数组\n * @param {number} x 指定的点 x\n * @param {number} y 指定的点 y\n * @param {Function} tCallback 差值函数\n */\nexport function nearestPoint(\n xArr: number[],\n yArr: number[],\n x: number,\n y: number,\n tCallback: (...arr: number[]) => number,\n length?: number\n): Point {\n let t: number;\n let d = Infinity;\n const v0: PointTuple = [x, y];\n\n let segNum = 20;\n if (length && length > 200) {\n segNum = length / 10;\n }\n const increaseRate = 1 / segNum;\n\n let interval = increaseRate / 10;\n\n for (let i = 0; i <= segNum; i++) {\n const _t = i * increaseRate;\n const v1: PointTuple = [tCallback.apply(null, xArr.concat([_t])), tCallback.apply(null, yArr.concat([_t]))];\n\n const d1 = distance(v0[0], v0[1], v1[0], v1[1]);\n if (d1 < d) {\n t = _t;\n d = d1;\n }\n }\n // 提前终止\n if (t === 0) {\n return {\n x: xArr[0],\n y: yArr[0],\n };\n }\n if (t === 1) {\n const count = xArr.length;\n return {\n x: xArr[count - 1],\n y: yArr[count - 1],\n };\n }\n d = Infinity;\n\n for (let i = 0; i < 32; i++) {\n if (interval < EPSILON) {\n break;\n }\n\n const prev = t - interval;\n const next = t + interval;\n\n const v1 = [tCallback.apply(null, xArr.concat([prev])), tCallback.apply(null, yArr.concat([prev]))];\n\n const d1 = distance(v0[0], v0[1], v1[0], v1[1]);\n if (prev >= 0 && d1 < d) {\n t = prev;\n d = d1;\n } else {\n const v2 = [tCallback.apply(null, xArr.concat([next])), tCallback.apply(null, yArr.concat([next]))];\n const d2 = distance(v0[0], v0[1], v2[0], v2[1]);\n if (next <= 1 && d2 < d) {\n t = next;\n d = d2;\n } else {\n interval *= 0.5;\n }\n }\n }\n\n return {\n x: tCallback.apply(null, xArr.concat([t])),\n y: tCallback.apply(null, yArr.concat([t])),\n };\n}\n\n// 近似求解 https://community.khronos.org/t/3d-cubic-bezier-segment-length/62363/2\nexport function snapLength(xArr: number[], yArr: number[]) {\n let totalLength = 0;\n const count = xArr.length;\n for (let i = 0; i < count; i++) {\n const x = xArr[i];\n const y = yArr[i];\n const nextX = xArr[(i + 1) % count];\n const nextY = yArr[(i + 1) % count];\n totalLength += distance(x, y, nextX, nextY);\n }\n return totalLength / 2;\n}\n","import line from './line';\nimport { distance, isNumberEqual, getBBoxByArray, piMod } from './util';\nimport { nearestPoint } from './bezier';\nimport { Point } from './types';\n\n// 差值公式\nfunction quadraticAt(p0: number, p1: number, p2: number, t: number) {\n const onet = 1 - t;\n return onet * onet * p0 + 2 * t * onet * p1 + t * t * p2;\n}\n\n// 求极值\nfunction extrema(p0: number, p1: number, p2: number) {\n const a = p0 + p2 - 2 * p1;\n if (isNumberEqual(a, 0)) {\n return [0.5];\n }\n const rst = (p0 - p1) / a;\n if (rst <= 1 && rst >= 0) {\n return [rst];\n }\n return [];\n}\n\nfunction derivativeAt(p0: number, p1: number, p2: number, t: number) {\n return 2 * (1 - t) * (p1 - p0) + 2 * t * (p2 - p1);\n}\n\n// 分割贝塞尔曲线\nfunction divideQuadratic(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, t: number) {\n // 划分点\n const xt = quadraticAt(x1, x2, x3, t);\n const yt = quadraticAt(y1, y2, y3, t);\n\n // 分割的第一条曲线的控制点\n const controlPoint1 = line.pointAt(x1, y1, x2, y2, t);\n // 分割的第二条曲线的控制点\n const controlPoint2 = line.pointAt(x2, y2, x3, y3, t);\n return [\n [x1, y1, controlPoint1.x, controlPoint1.y, xt, yt],\n [xt, yt, controlPoint2.x, controlPoint2.y, x3, y3],\n ];\n}\n\n// 使用迭代法取贝塞尔曲线的长度\nfunction quadraticLength(\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n x3: number,\n y3: number,\n iterationCount: number\n) {\n if (iterationCount === 0) {\n return (distance(x1, y1, x2, y2) + distance(x2, y2, x3, y3) + distance(x1, y1, x3, y3)) / 2;\n }\n const quadratics = divideQuadratic(x1, y1, x2, y2, x3, y3, 0.5);\n const left = quadratics[0];\n const right = quadratics[1];\n left.push(iterationCount - 1);\n right.push(iterationCount - 1);\n return quadraticLength.apply(null, left) + quadraticLength.apply(null, right);\n}\n\nexport default {\n box(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number) {\n const xExtrema = extrema(x1, x2, x3)[0];\n const yExtrema = extrema(y1, y2, y3)[0];\n // 控制点不加入 box 的计算\n const xArr = [x1, x3];\n const yArr = [y1, y3];\n if (xExtrema !== undefined) {\n xArr.push(quadraticAt(x1, x2, x3, xExtrema));\n }\n if (yExtrema !== undefined) {\n yArr.push(quadraticAt(y1, y2, y3, yExtrema));\n }\n return getBBoxByArray(xArr, yArr);\n },\n length(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number) {\n return quadraticLength(x1, y1, x2, y2, x3, y3, 3);\n },\n nearestPoint(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, x0: number, y0: number) {\n return nearestPoint([x1, x2, x3], [y1, y2, y3], x0, y0, quadraticAt);\n },\n pointDistance(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, x0: number, y0: number) {\n const point = this.nearestPoint(x1, y1, x2, y2, x3, y3, x0, y0);\n return distance(point.x, point.y, x0, y0);\n },\n interpolationAt: quadraticAt,\n pointAt(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, t: number): Point {\n return {\n x: quadraticAt(x1, x2, x3, t),\n y: quadraticAt(y1, y2, y3, t),\n };\n },\n divide(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, t: number) {\n return divideQuadratic(x1, y1, x2, y2, x3, y3, t);\n },\n tangentAngle(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, t: number) {\n const dx = derivativeAt(x1, x2, x3, t);\n const dy = derivativeAt(y1, y2, y3, t);\n const angle = Math.atan2(dy, dx);\n return piMod(angle);\n },\n};\n","import { distance, isNumberEqual, getBBoxByArray, piMod } from './util';\nimport line from './line';\nimport { snapLength, nearestPoint } from './bezier';\nimport { Point } from './types';\n\nfunction cubicAt(p0: number, p1: number, p2: number, p3: number, t: number) {\n const onet = 1 - t; // t * t * t 的性能大概是 Math.pow(t, 3) 的三倍\n return onet * onet * onet * p0 + 3 * p1 * t * onet * onet + 3 * p2 * t * t * onet + p3 * t * t * t;\n}\n\nfunction derivativeAt(p0: number, p1: number, p2: number, p3: number, t: number) {\n const onet = 1 - t;\n return 3 * (onet * onet * (p1 - p0) + 2 * onet * t * (p2 - p1) + t * t * (p3 - p2));\n}\n\nfunction extrema(p0: number, p1: number, p2: number, p3: number) {\n const a = -3 * p0 + 9 * p1 - 9 * p2 + 3 * p3;\n const b = 6 * p0 - 12 * p1 + 6 * p2;\n const c = 3 * p1 - 3 * p0;\n const extremas = [];\n let t1: number;\n let t2: number;\n let discSqrt: number;\n\n if (isNumberEqual(a, 0)) {\n if (!isNumberEqual(b, 0)) {\n t1 = -c / b;\n if (t1 >= 0 && t1 <= 1) {\n extremas.push(t1);\n }\n }\n } else {\n const disc = b * b - 4 * a * c;\n if (isNumberEqual(disc, 0)) {\n extremas.push(-b / (2 * a));\n } else if (disc > 0) {\n discSqrt = Math.sqrt(disc);\n t1 = (-b + discSqrt) / (2 * a);\n t2 = (-b - discSqrt) / (2 * a);\n if (t1 >= 0 && t1 <= 1) {\n extremas.push(t1);\n }\n if (t2 >= 0 && t2 <= 1) {\n extremas.push(t2);\n }\n }\n }\n return extremas;\n}\n\n// 分割贝塞尔曲线\nfunction divideCubic(\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n x3: number,\n y3: number,\n x4: number,\n y4: number,\n t: number\n) {\n // 划分点\n const xt = cubicAt(x1, x2, x3, x4, t);\n const yt = cubicAt(y1, y2, y3, y4, t);\n // 计算两点之间的差值点\n const c1 = line.pointAt(x1, y1, x2, y2, t);\n const c2 = line.pointAt(x2, y2, x3, y3, t);\n const c3 = line.pointAt(x3, y3, x4, y4, t);\n const c12 = line.pointAt(c1.x, c1.y, c2.x, c2.y, t);\n const c23 = line.pointAt(c2.x, c2.y, c3.x, c3.y, t);\n return [\n [x1, y1, c1.x, c1.y, c12.x, c12.y, xt, yt],\n [xt, yt, c23.x, c23.y, c3.x, c3.y, x4, y4],\n ];\n}\n\n// 使用迭代法取贝塞尔曲线的长度,二阶和三阶分开写,更清晰和便于调试\nfunction cubicLength(\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n x3: number,\n y3: number,\n x4: number,\n y4: number,\n iterationCount: number\n) {\n if (iterationCount === 0) {\n return snapLength([x1, x2, x3, x4], [y1, y2, y3, y4]);\n }\n const cubics = divideCubic(x1, y1, x2, y2, x3, y3, x4, y4, 0.5);\n const left = cubics[0];\n const right = cubics[1];\n left.push(iterationCount - 1);\n right.push(iterationCount - 1);\n return cubicLength.apply(null, left) + cubicLength.apply(null, right);\n}\n\nexport default {\n extrema,\n box(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, x4: number, y4: number) {\n const xArr = [x1, x4];\n const yArr = [y1, y4];\n const xExtrema = extrema(x1, x2, x3, x4);\n const yExtrema = extrema(y1, y2, y3, y4);\n for (let i = 0; i < xExtrema.length; i++) {\n xArr.push(cubicAt(x1, x2, x3, x4, xExtrema[i]));\n }\n for (let i = 0; i < yExtrema.length; i++) {\n yArr.push(cubicAt(y1, y2, y3, y4, yExtrema[i]));\n }\n return getBBoxByArray(xArr, yArr);\n },\n length(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, x4: number, y4: number) {\n // 迭代三次,划分成 8 段求长度\n return cubicLength(x1, y1, x2, y2, x3, y3, x4, y4, 3);\n },\n nearestPoint(\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n x3: number,\n y3: number,\n x4: number,\n y4: number,\n x0: number,\n y0: number,\n length?: number\n ) {\n return nearestPoint([x1, x2, x3, x4], [y1, y2, y3, y4], x0, y0, cubicAt, length);\n },\n pointDistance(\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n x3: number,\n y3: number,\n x4: number,\n y4: number,\n x0: number,\n y0: number,\n length?: number\n ) {\n const point = this.nearestPoint(x1, y1, x2, y2, x3, y3, x4, y4, x0, y0, length);\n return distance(point.x, point.y, x0, y0);\n },\n interpolationAt: cubicAt,\n pointAt(\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n x3: number,\n y3: number,\n x4: number,\n y4: number,\n t: number\n ): Point {\n return {\n x: cubicAt(x1, x2, x3, x4, t),\n y: cubicAt(y1, y2, y3, y4, t),\n };\n },\n divide(x1: number, y1: number, x2: number, y2: number, x3: number, y3: number, x4: number, y4: number, t: number) {\n return divideCubic(x1, y1, x2, y2, x3, y3, x4, y4, t);\n },\n tangentAngle(\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n x3: number,\n y3: number,\n x4: number,\n y4: number,\n t: number\n ) {\n const dx = derivativeAt(x1, x2, x3, x4, t);\n const dy = derivativeAt(y1, y2, y3, y4, t);\n return piMod(Math.atan2(dy, dx));\n },\n};\n","import line from './line';\nimport { distance } from './util';\nimport { Point, PointTuple, Segment } from './types';\n\nfunction analyzePoints(points: PointTuple[]) {\n // 计算每段的长度和总的长度\n let totalLength = 0;\n const segments: Segment[] = [];\n for (let i = 0; i < points.length - 1; i++) {\n const from = points[i];\n const to = points[i + 1];\n const length = distance(from[0], from[1], to[0], to[1]);\n const seg = {\n from,\n to,\n length,\n };\n segments.push(seg);\n totalLength += length;\n }\n return { segments, totalLength };\n}\n\nexport function lengthOfSegment(points: PointTuple[]) {\n if (points.length < 2) {\n return 0;\n }\n let totalLength = 0;\n for (let i = 0; i < points.length - 1; i++) {\n const from = points[i];\n const to = points[i + 1];\n totalLength += distance(from[0], from[1], to[0], to[1]);\n }\n return totalLength;\n}\n\n/**\n * 按照比例在数据片段中获取点\n * @param {array} points 点的集合\n * @param {number} t 百分比 0-1\n * @return {object} 点的坐标\n */\nexport function pointAtSegments(points: PointTuple[], t: number): Point {\n // 边界判断\n if (t > 1 || t < 0 || points.length < 2) {\n return null;\n }\n const { segments, totalLength } = analyzePoints(points);\n // 多个点有可能重合\n if (totalLength === 0) {\n return {\n x: points[0][0],\n y: points[0][1],\n };\n }\n // 计算比例\n let startRatio = 0;\n let point = null;\n for (let i = 0; i < segments.length; i++) {\n const seg = segments[i];\n const { from, to } = seg;\n const currentRatio = seg.length / totalLength;\n if (t >= startRatio && t <= startRatio + currentRatio) {\n const localRatio = (t - startRatio) / currentRatio;\n point = line.pointAt(from[0], from[1], to[0], to[1], localRatio);\n break;\n }\n startRatio += currentRatio;\n }\n return point;\n}\n\n/**\n * 按照比例在数据片段中获取切线的角度\n * @param {array} points 点的集合\n * @param {number} t 百分比 0-1\n */\nexport function angleAtSegments(points: PointTuple[], t: number) {\n // 边界判断\n if (t > 1 || t < 0 || points.length < 2) {\n return 0;\n }\n const { segments, totalLength } = analyzePoints(points);\n // 计算比例\n let startRatio = 0;\n let angle = 0;\n for (let i = 0; i < segments.length; i++) {\n const seg = segments[i];\n const { from, to } = seg;\n const currentRatio = seg.length / totalLength;\n if (t >= startRatio && t <= startRatio + currentRatio) {\n angle = Math.atan2(to[1] - from[1], to[0] - from[0]);\n break;\n }\n startRatio += currentRatio;\n }\n return angle;\n}\n\nexport function distanceAtSegment(points: PointTuple[], x: number, y: number) {\n let minDistance = Infinity;\n for (let i = 0; i < points.length - 1; i++) {\n const point = points[i];\n const nextPoint = points[i + 1];\n const distance = line.pointDistance(point[0], point[1], nextPoint[0], nextPoint[1], x, y);\n if (distance < minDistance) {\n minDistance = distance;\n }\n }\n return minDistance;\n}\n","import { pointAtSegments, angleAtSegments, distanceAtSegment, lengthOfSegment } from './segments';\nimport { getBBoxByArray } from './util';\nimport { PointTuple, BBox } from './types';\n\nexport default {\n /**\n * 计算多折线的包围盒\n * @param {array} points 点的集合 [x,y] 的形式\n * @return {object} 包围盒\n */\n box(points: PointTuple[]): BBox {\n const xArr = [];\n const yArr = [];\n for (let i = 0; i < points.length; i++) {\n const point = points[i];\n xArr.push(point[0]);\n yArr.push(point[1]);\n }\n return getBBoxByArray(xArr, yArr);\n },\n /**\n * 计算多折线的长度\n * @param {array} points 点的集合 [x,y] 的形式\n * @return {object} 多条边的长度\n */\n length(points: PointTuple[]) {\n return lengthOfSegment(points);\n },\n /**\n * 根据比例获取多折线的点\n * @param {array} points 点的集合 [x,y] 的形式\n * @param {number} t 在多折线的长度上的比例\n * @return {object} 根据比例值计算出来的点\n */\n pointAt(points: PointTuple[], t: number) {\n return pointAtSegments(points, t);\n },\n /**\n * 指定点到多折线的距离\n * @param {array} points 点的集合 [x,y] 的形式\n * @param {number} x 指定点的 x\n * @param {number} y 指定点的 y\n * @return {number} 点到多折线的距离\n */\n pointDistance(points: PointTuple[], x: number, y: number) {\n return distanceAtSegment(points, x, y);\n },\n /**\n * 根据比例获取多折线的切线角度\n * @param {array} points 点的集合 [x,y] 的形式\n * @param {number} t 在多折线的长度上的比例\n * @return {object} 根据比例值计算出来的角度\n */\n tangentAngle(points: PointTuple[], t: number) {\n return angleAtSegments(points, t);\n },\n};\n","import { Line as LineUtil } from '@antv/g-math';\n\nexport default function inLine(x1, y1, x2, y2, lineWidth, x, y) {\n const minX = Math.min(x1, x2);\n const maxX = Math.max(x1, x2);\n const minY = Math.min(y1, y2);\n const maxY = Math.max(y1, y2);\n const halfWidth = lineWidth / 2;\n // 因为目前的方案是计算点到直线的距离,而有可能会在延长线上,所以要先判断是否在包围盒内\n // 这种方案会在水平或者竖直的情况下载线的延长线上有半 lineWidth 的误差\n if (!(x >= minX - halfWidth && x <= maxX + halfWidth && y >= minY - halfWidth && y <= maxY + halfWidth)) {\n return false;\n }\n // 因为已经计算了包围盒,所以仅需要计算到直线的距离即可,可以显著提升性能\n return LineUtil.pointToLine(x1, y1, x2, y2, x, y) <= lineWidth / 2;\n}\n","/**\n * @fileoverview 线\n * @author dxq613@gmail.com\n */\nimport { Line as LineUtil } from '@antv/g-math';\nimport ShapeBase from './base';\nimport inLine from '../util/in-stroke/line';\nimport * as ArrowUtil from '../util/arrow';\n\nclass Line extends ShapeBase {\n getDefaultAttrs() {\n const attrs = super.getDefaultAttrs();\n return {\n ...attrs,\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 0,\n startArrow: false,\n endArrow: false,\n };\n }\n\n initAttrs(attrs) {\n this.setArrow();\n }\n\n // 更新属性时,检测是否更改了箭头\n onAttrChange(name: string, value: any, originValue: any) {\n super.onAttrChange(name, value, originValue);\n // 由于箭头的绘制依赖于 line 的诸多 attrs,因此这里不再对每个 attr 进行判断,attr 每次变化都会影响箭头的更新\n this.setArrow();\n }\n\n setArrow() {\n const attrs = this.attr();\n const { x1, y1, x2, y2, startArrow, endArrow } = attrs;\n if (startArrow) {\n ArrowUtil.addStartArrow(this, attrs, x2, y2, x1, y1);\n }\n if (endArrow) {\n ArrowUtil.addEndArrow(this, attrs, x1, y1, x2, y2);\n }\n }\n\n isInStrokeOrPath(x, y, isStroke, isFill, lineWidth) {\n if (!isStroke || !lineWidth) {\n return false;\n }\n const { x1, y1, x2, y2 } = this.attr();\n return inLine(x1, y1, x2, y2, lineWidth, x, y);\n }\n\n createPath(context) {\n const attrs = this.attr();\n const { x1, y1, x2, y2, startArrow, endArrow } = attrs;\n let startArrowDistance = {\n dx: 0,\n dy: 0,\n };\n let endArrowDistance = {\n dx: 0,\n dy: 0,\n };\n\n if (startArrow && startArrow.d) {\n startArrowDistance = ArrowUtil.getShortenOffset(x1, y1, x2, y2, attrs.startArrow.d);\n }\n if (endArrow && endArrow.d) {\n endArrowDistance = ArrowUtil.getShortenOffset(x1, y1, x2, y2, attrs.endArrow.d);\n }\n\n context.beginPath();\n // 如果自定义箭头,线条相应缩进\n context.moveTo(x1 + startArrowDistance.dx, y1 + startArrowDistance.dy);\n context.lineTo(x2 - endArrowDistance.dx, y2 - endArrowDistance.dy);\n }\n\n afterDrawPath(context) {\n const startArrowShape = this.get('startArrowShape');\n const endArrowShape = this.get('endArrowShape');\n if (startArrowShape) {\n startArrowShape.draw(context);\n }\n if (endArrowShape) {\n endArrowShape.draw(context);\n }\n }\n\n /**\n * Get length of line\n * @return {number} length\n */\n getTotalLength() {\n const { x1, y1, x2, y2 } = this.attr();\n return LineUtil.length(x1, y1, x2, y2);\n }\n\n /**\n * Get point according to ratio\n * @param {number} ratio\n * @return {Point} point\n */\n getPoint(ratio: number) {\n const { x1, y1, x2, y2 } = this.attr();\n return LineUtil.pointAt(x1, y1, x2, y2, ratio);\n }\n}\n\nexport default Line;\n","import { each, isArray, isString } from '@antv/util';\n\nconst regexTags = /[MLHVQTCSAZ]([^MLHVQTCSAZ]*)/ig;\nconst regexDot = /[^\\s\\,]+/ig;\n\nfunction parsePath(p: string): string[] {\n let path = p || [] as string | string[];\n if (isArray(path)) {\n return path;\n }\n\n if (isString(path)) {\n path = path.match(regexTags);\n each(path, (item, index) => {\n // @ts-ignore\n item = item.match(regexDot);\n if (item[0].length > 1) {\n const tag = item[0].charAt(0);\n // @ts-ignore\n item.splice(1, 0, item[0].substr(1));\n // @ts-ignore\n item[0] = tag;\n }\n // @ts-ignore\n each(item, function (sub, i) {\n if (!isNaN(sub)) {\n // @ts-ignore\n item[i] = +sub;\n }\n });\n // @ts-ignore\n path[index] = item;\n });\n return path;\n }\n}\n\nexport default parsePath;\n","import { isArray } from '@antv/util';\n\nconst SPACES = '\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029';\nconst PATH_COMMAND = new RegExp('([a-z])[' + SPACES + ',]*((-?\\\\d*\\\\.?\\\\d*(?:e[\\\\-+]?\\\\d+)?[' + SPACES + ']*,?[' + SPACES + ']*)+)', 'ig');\nconst PATH_VALUES = new RegExp('(-?\\\\d*\\\\.?\\\\d*(?:e[\\\\-+]?\\\\d+)?)[' + SPACES + ']*,?[' + SPACES + ']*', 'ig');\n\n// Parses given path string into an array of arrays of path segments\nexport default function parsePathString(pathString: string) {\n if (!pathString) {\n return null;\n }\n\n if (isArray(pathString)) {\n return pathString;\n }\n const paramCounts = {\n a: 7,\n c: 6,\n o: 2,\n h: 1,\n l: 2,\n m: 2,\n r: 4,\n q: 4,\n s: 4,\n t: 2,\n v: 1,\n u: 3,\n z: 0,\n };\n const data = [];\n\n String(pathString).replace(PATH_COMMAND, function (a, b, c) {\n const params = [];\n let name = b.toLowerCase();\n c.replace(PATH_VALUES, function (a, b) {\n b && params.push(+b);\n });\n if (name === 'm' && params.length > 2) {\n data.push([ b ].concat(params.splice(0, 2)));\n name = 'l';\n b = b === 'm' ? 'l' : 'L';\n }\n if (name === 'o' && params.length === 1) {\n data.push([ b, params[0] ]);\n }\n if (name === 'r') {\n data.push([ b ].concat(params));\n } else {\n while (params.length >= paramCounts[name]) {\n data.push([ b ].concat(params.splice(0, paramCounts[name])));\n if (!paramCounts[name]) {\n break;\n }\n }\n }\n return '';\n });\n\n return data;\n}\n","import parsePathString from './parse-path-string';\nconst REGEX_MD = /[a-z]/;\n\nfunction toSymmetry(p, c) { // 点对称\n return [\n c[0] + (c[0] - p[0]),\n c[1] + (c[1] - p[1]),\n ];\n}\n\nexport default function pathToAbsolute(pathString: string) {\n const pathArray = parsePathString(pathString);\n\n if (!pathArray || !pathArray.length) {\n return [\n [ 'M', 0, 0 ],\n ];\n }\n let needProcess = false; // 如果存在小写的命令或者 V,H,T,S 则需要处理\n for (let i = 0; i < pathArray.length; i++) {\n const cmd = pathArray[i][0];\n // 如果存在相对位置的命令,则中断返回\n if (REGEX_MD.test(cmd) || [ 'V', 'H', 'T', 'S' ].indexOf(cmd) >= 0) {\n needProcess = true;\n break;\n }\n }\n // 如果不存在相对命令,则直接返回\n // 如果在业务上都写绝对路径,这种方式最快,仅做了一次检测\n if (!needProcess) {\n return pathArray;\n }\n\n const res = [];\n let x = 0;\n let y = 0;\n let mx = 0;\n let my = 0;\n let start = 0;\n let pa0;\n let dots;\n const first = pathArray[0];\n if (first[0] === 'M' || first[0] === 'm') {\n x = +first[1];\n y = +first[2];\n mx = x;\n my = y;\n start++;\n res[0] = [ 'M', x, y ];\n }\n\n for (let i = start, ii = pathArray.length; i < ii; i++) {\n const pa = pathArray[i];\n const preParams = res[i - 1]; // 取前一个已经处理后的节点,否则会出现问题\n let r = [];\n const cmd = pa[0];\n const upCmd = cmd.toUpperCase();\n if (cmd !== upCmd) {\n r[0] = upCmd;\n switch (upCmd) {\n case 'A':\n r[1] = pa[1];\n r[2] = pa[2];\n r[3] = pa[3];\n r[4] = pa[4];\n r[5] = pa[5];\n r[6] = +pa[6] + x;\n r[7] = +pa[7] + y;\n break;\n case 'V':\n r[1] = +pa[1] + y;\n break;\n case 'H':\n r[1] = +pa[1] + x;\n break;\n case 'M':\n mx = +pa[1] + x;\n my = +pa[2] + y;\n r[1] = mx;\n r[2] = my;\n break; // for lint\n default:\n for (let j = 1, jj = pa.length; j < jj; j++) {\n r[j] = +pa[j] + ((j % 2) ? x : y);\n }\n }\n } else { // 如果本来已经大写,则不处理\n r = pathArray[i];\n }\n // 需要在外面统一做,同时处理 V,H,S,T 等特殊指令\n switch (upCmd) {\n case 'Z':\n x = +mx;\n y = +my;\n break;\n case 'H':\n x = r[1];\n r = [ 'L', x, y ];\n break;\n case 'V':\n y = r[1];\n r = [ 'L', x, y ];\n break;\n case 'T':\n x = r[1];\n y = r[2];\n // 以 x, y 为中心的,上一个控制点的对称点\n // 需要假设上一个节点的命令为 Q\n const symetricT = toSymmetry([ preParams[1], preParams[2] ], [ preParams[3], preParams[4] ]);\n r = [ 'Q', symetricT[0], symetricT[1], x, y ];\n break;\n case 'S':\n x = r[r.length - 2];\n y = r[r.length - 1];\n // 以 x,y 为中心,取上一个控制点,\n // 需要假设上一个线段为 C 或者 S\n const length = preParams.length;\n const symetricS = toSymmetry(\n [ preParams[length - 4], preParams[length - 3] ],\n [ preParams[length - 2], preParams[length - 1] ]);\n r = [ 'C', symetricS[0], symetricS[1], r[1], r[2], x, y ];\n break;\n case 'M':\n mx = r[r.length - 2];\n my = r[r.length - 1];\n break; // for lint\n default:\n x = r[r.length - 2];\n y = r[r.length - 1];\n }\n res.push(r);\n }\n\n return res;\n}\n","const TAU = Math.PI * 2\n\nconst mapToEllipse = ({ x, y }: { x: number, y: number }, rx: number, ry: number, cosphi: number, sinphi: number, centerx: number, centery: number) => {\n x *= rx\n y *= ry\n\n const xp = cosphi * x - sinphi * y\n const yp = sinphi * x + cosphi * y\n\n return {\n x: xp + centerx,\n y: yp + centery\n }\n}\n\nconst approxUnitArc = (ang1: number, ang2: number) => {\n // If 90 degree circular arc, use a constant\n // as derived from http://spencermortensen.com/articles/bezier-circle\n const a = ang2 === 1.5707963267948966\n ? 0.551915024494\n : ang2 === -1.5707963267948966\n ? -0.551915024494\n : 4 / 3 * Math.tan(ang2 / 4)\n\n const x1 = Math.cos(ang1)\n const y1 = Math.sin(ang1)\n const x2 = Math.cos(ang1 + ang2)\n const y2 = Math.sin(ang1 + ang2)\n\n return [\n {\n x: x1 - y1 * a,\n y: y1 + x1 * a\n },\n {\n x: x2 + y2 * a,\n y: y2 - x2 * a\n },\n {\n x: x2,\n y: y2\n }\n ]\n}\n\nconst vectorAngle = (ux: number, uy: number, vx: number, vy: number) => {\n const sign = (ux * vy - uy * vx < 0) ? -1 : 1\n\n let dot = ux * vx + uy * vy\n\n if (dot > 1) {\n dot = 1\n }\n\n if (dot < -1) {\n dot = -1\n }\n\n return sign * Math.acos(dot)\n}\n\nconst getArcCenter = (\n px: any,\n py: any,\n cx: any,\n cy: any,\n rx: number,\n ry: number,\n largeArcFlag: number,\n sweepFlag: number,\n sinphi: number,\n cosphi: number,\n pxp: number,\n pyp: number\n) => {\n const rxsq = Math.pow(rx, 2)\n const rysq = Math.pow(ry, 2)\n const pxpsq = Math.pow(pxp, 2)\n const pypsq = Math.pow(pyp, 2)\n\n let radicant = (rxsq * rysq) - (rxsq * pypsq) - (rysq * pxpsq)\n\n if (radicant < 0) {\n radicant = 0\n }\n\n radicant /= (rxsq * pypsq) + (rysq * pxpsq)\n radicant = Math.sqrt(radicant) * (largeArcFlag === sweepFlag ? -1 : 1)\n\n const centerxp = radicant * rx / ry * pyp\n const centeryp = radicant * -ry / rx * pxp\n\n const centerx = cosphi * centerxp - sinphi * centeryp + (px + cx) / 2\n const centery = sinphi * centerxp + cosphi * centeryp + (py + cy) / 2\n\n const vx1 = (pxp - centerxp) / rx\n const vy1 = (pyp - centeryp) / ry\n const vx2 = (-pxp - centerxp) / rx\n const vy2 = (-pyp - centeryp) / ry\n\n let ang1 = vectorAngle(1, 0, vx1, vy1)\n let ang2 = vectorAngle(vx1, vy1, vx2, vy2)\n\n if (sweepFlag === 0 && ang2 > 0) {\n ang2 -= TAU\n }\n\n if (sweepFlag === 1 && ang2 < 0) {\n ang2 += TAU\n }\n\n return [ centerx, centery, ang1, ang2 ]\n}\n\nconst arcToBezier = ({\n px,\n py,\n cx,\n cy,\n rx,\n ry,\n xAxisRotation = 0,\n largeArcFlag = 0,\n sweepFlag = 0\n}) => {\n const curves = []\n\n if (rx === 0 || ry === 0) {\n return [{ x1: 0, y1: 0, x2: 0, y2: 0, x: cx, y: cy }];\n }\n\n const sinphi = Math.sin(xAxisRotation * TAU / 360)\n const cosphi = Math.cos(xAxisRotation * TAU / 360)\n\n const pxp = cosphi * (px - cx) / 2 + sinphi * (py - cy) / 2\n const pyp = -sinphi * (px - cx) / 2 + cosphi * (py - cy) / 2\n\n if (pxp === 0 && pyp === 0) {\n return [{ x1: 0, y1: 0, x2: 0, y2: 0, x: cx, y: cy }];\n }\n\n rx = Math.abs(rx)\n ry = Math.abs(ry)\n\n const lambda =\n Math.pow(pxp, 2) / Math.pow(rx, 2) +\n Math.pow(pyp, 2) / Math.pow(ry, 2)\n\n if (lambda > 1) {\n rx *= Math.sqrt(lambda)\n ry *= Math.sqrt(lambda)\n }\n\n let [ centerx, centery, ang1, ang2 ] = getArcCenter(\n px,\n py,\n cx,\n cy,\n rx,\n ry,\n largeArcFlag,\n sweepFlag,\n sinphi,\n cosphi,\n pxp,\n pyp\n )\n\n // If 'ang2' == 90.0000000001, then `ratio` will evaluate to\n // 1.0000000001. This causes `segments` to be greater than one, which is an\n // unecessary split, and adds extra points to the bezier curve. To alleviate\n // this issue, we round to 1.0 when the ratio is close to 1.0.\n let ratio = Math.abs(ang2) / (TAU / 4)\n if (Math.abs(1.0 - ratio) < 0.0000001) {\n ratio = 1.0\n }\n\n const segments = Math.max(Math.ceil(ratio), 1)\n\n ang2 /= segments\n\n for (let i = 0; i < segments; i++) {\n curves.push(approxUnitArc(ang1, ang2))\n ang1 += ang2\n }\n\n return curves.map(curve => {\n const { x: x1, y: y1 } = mapToEllipse(curve[ 0 ], rx, ry, cosphi, sinphi, centerx, centery)\n const { x: x2, y: y2 } = mapToEllipse(curve[ 1 ], rx, ry, cosphi, sinphi, centerx, centery)\n const { x, y } = mapToEllipse(curve[ 2 ], rx, ry, cosphi, sinphi, centerx, centery)\n\n return { x1, y1, x2, y2, x, y }\n })\n}\n\nexport function arcToCubic(x1: number, y1: number, rx: number, ry: number, angle: number, LAF: number, SF: number, x2: number, y2: number) {\n const curves = arcToBezier({\n px: x1,\n py: y1,\n cx: x2,\n cy: y2,\n rx,\n ry,\n xAxisRotation: angle,\n largeArcFlag: LAF,\n sweepFlag: SF,\n });\n\n return curves.reduce((prev, cur) => {\n const { x1, y1, x2, y2, x, y } = cur;\n prev.push(x1, y1, x2, y2, x, y);\n return prev;\n }, [] as number[]);\n}\n","import { mod, toRadian } from '@antv/util';\n\n// 向量长度\nfunction vMag(v) {\n return Math.sqrt(v[0] * v[0] + v[1] * v[1]);\n}\n\n// u.v/|u||v|,计算夹角的余弦值\nfunction vRatio(u, v) {\n // 当存在一个向量的长度为 0 时,夹角也为 0,即夹角的余弦值为 1\n return vMag(u) * vMag(v) ? (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v)) : 1;\n}\n\n// 向量角度\nfunction vAngle(u, v) {\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vRatio(u, v));\n}\n\n/**\n * 判断两个点是否重合,点坐标的格式为 [x, y]\n * @param {Array} point1 第一个点\n * @param {Array} point2 第二个点\n */\nexport function isSamePoint(point1, point2) {\n return point1[0] === point2[0] && point1[1] === point2[1];\n}\n\n// A 0:rx 1:ry 2:x-axis-rotation 3:large-arc-flag 4:sweep-flag 5: x 6: y\nexport default function getArcParams(startPoint, params) {\n let rx = params[1];\n let ry = params[2];\n const xRotation = mod(toRadian(params[3]), Math.PI * 2);\n const arcFlag = params[4];\n const sweepFlag = params[5];\n // 弧形起点坐标\n const x1 = startPoint[0];\n const y1 = startPoint[1];\n // 弧形终点坐标\n const x2 = params[6];\n const y2 = params[7];\n const xp = (Math.cos(xRotation) * (x1 - x2)) / 2.0 + (Math.sin(xRotation) * (y1 - y2)) / 2.0;\n const yp = (-1 * Math.sin(xRotation) * (x1 - x2)) / 2.0 + (Math.cos(xRotation) * (y1 - y2)) / 2.0;\n const lambda = (xp * xp) / (rx * rx) + (yp * yp) / (ry * ry);\n\n if (lambda > 1) {\n rx *= Math.sqrt(lambda);\n ry *= Math.sqrt(lambda);\n }\n const diff = rx * rx * (yp * yp) + ry * ry * (xp * xp);\n\n let f = diff ? Math.sqrt((rx * rx * (ry * ry) - diff) / diff) : 1;\n\n if (arcFlag === sweepFlag) {\n f *= -1;\n }\n if (isNaN(f)) {\n f = 0;\n }\n\n // 旋转前的起点坐标,且当长半轴和短半轴的长度为 0 时,坐标按 (0, 0) 处理\n const cxp = ry ? (f * rx * yp) / ry : 0;\n const cyp = rx ? (f * -ry * xp) / rx : 0;\n\n // 椭圆圆心坐标\n const cx = (x1 + x2) / 2.0 + Math.cos(xRotation) * cxp - Math.sin(xRotation) * cyp;\n const cy = (y1 + y2) / 2.0 + Math.sin(xRotation) * cxp + Math.cos(xRotation) * cyp;\n\n // 起始点的单位向量\n const u = [ (xp - cxp) / rx, (yp - cyp) / ry ];\n // 终止点的单位向量\n const v = [ (-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry ];\n // 计算起始点和圆心的连线,与 x 轴正方向的夹角\n const theta = vAngle([ 1, 0 ], u);\n\n // 计算圆弧起始点和终止点与椭圆圆心连线的夹角\n let dTheta = vAngle(u, v);\n\n if (vRatio(u, v) <= -1) {\n dTheta = Math.PI;\n }\n if (vRatio(u, v) >= 1) {\n dTheta = 0;\n }\n if (sweepFlag === 0 && dTheta > 0) {\n dTheta = dTheta - 2 * Math.PI;\n }\n if (sweepFlag === 1 && dTheta < 0) {\n dTheta = dTheta + 2 * Math.PI;\n }\n return {\n cx,\n cy,\n // 弧形的起点和终点相同时,长轴和短轴的长度按 0 处理\n rx: isSamePoint(startPoint, [ x2, y2 ]) ? 0 : rx,\n ry: isSamePoint(startPoint, [ x2, y2 ]) ? 0 : ry,\n startAngle: theta,\n endAngle: theta + dTheta,\n xRotation,\n arcFlag,\n sweepFlag,\n };\n}\n","import getArcParams from './get-arc-params';\nimport { isSamePoint } from './get-arc-params';\nimport parsePath from './parse-path';\n\n// 点对称\nfunction toSymmetry(point, center) {\n return [ center[0] + (center[0] - point[0]), center[1] + (center[1] - point[1]) ];\n}\n\nexport default function getSegments(path) {\n path = parsePath(path);\n const segments = [];\n let currentPoint = null; // 当前图形\n let nextParams = null; // 下一节点的 path 参数\n let startMovePoint = null; // 开始 M 的点,可能会有多个\n let lastStartMovePointIndex = 0; // 最近一个开始点 M 的索引\n const count = path.length;\n for (let i = 0; i < count; i++) {\n const params = path[i];\n nextParams = path[i + 1];\n const command = params[0];\n // 数学定义上的参数,便于后面的计算\n const segment = {\n command,\n prePoint: currentPoint,\n params,\n startTangent: null,\n endTangent: null,\n };\n switch (command) {\n case 'M':\n startMovePoint = [ params[1], params[2] ];\n lastStartMovePointIndex = i;\n break;\n case 'A':\n const arcParams = getArcParams(currentPoint, params);\n segment['arcParams'] = arcParams;\n break;\n default:\n break;\n }\n if (command === 'Z') {\n // 有了 Z 后,当前节点从开始 M 的点开始\n currentPoint = startMovePoint;\n // 如果当前点的命令为 Z,相当于当前点为最近一个 M 点,则下一个点直接指向最近一个 M 点的下一个点\n nextParams = path[lastStartMovePointIndex + 1];\n } else {\n const len = params.length;\n currentPoint = [ params[len - 2], params[len - 1] ];\n }\n if (nextParams && nextParams[0] === 'Z') {\n // 如果下一个点的命令为 Z,则下一个点直接指向最近一个 M 点\n nextParams = path[lastStartMovePointIndex];\n if (segments[lastStartMovePointIndex]) {\n // 如果下一个点的命令为 Z,则最近一个 M 点的前一个点为当前点\n segments[lastStartMovePointIndex].prePoint = currentPoint;\n }\n }\n segment['currentPoint'] = currentPoint;\n // 如果当前点与最近一个 M 点相同,则最近一个 M 点的前一个点为当前点的前一个点\n if (\n segments[lastStartMovePointIndex] &&\n isSamePoint(currentPoint, segments[lastStartMovePointIndex].currentPoint)\n ) {\n segments[lastStartMovePointIndex].prePoint = segment.prePoint;\n }\n const nextPoint = nextParams ? [ nextParams[nextParams.length - 2], nextParams[nextParams.length - 1] ] : null;\n segment['nextPoint'] = nextPoint;\n // Add startTangent and endTangent\n const { prePoint } = segment;\n if ([ 'L', 'H', 'V' ].includes(command)) {\n segment.startTangent = [ prePoint[0] - currentPoint[0], prePoint[1] - currentPoint[1] ];\n segment.endTangent = [ currentPoint[0] - prePoint[0], currentPoint[1] - prePoint[1] ];\n } else if (command === 'Q') {\n // 二次贝塞尔曲线只有一个控制点\n const cp = [ params[1], params[2] ];\n // 二次贝塞尔曲线的终点为 currentPoint\n segment.startTangent = [ prePoint[0] - cp[0], prePoint[1] - cp[1] ];\n segment.endTangent = [ currentPoint[0] - cp[0], currentPoint[1] - cp[1] ];\n } else if (command === 'T') {\n const preSegment = segments[i - 1];\n const cp = toSymmetry(preSegment.currentPoint, prePoint);\n if (preSegment.command === 'Q') {\n segment.command = 'Q';\n segment.startTangent = [ prePoint[0] - cp[0], prePoint[1] - cp[1] ];\n segment.endTangent = [ currentPoint[0] - cp[0], currentPoint[1] - cp[1] ];\n } else {\n segment.command = 'TL';\n segment.startTangent = [ prePoint[0] - currentPoint[0], prePoint[1] - currentPoint[1] ];\n segment.endTangent = [ currentPoint[0] - prePoint[0], currentPoint[1] - prePoint[1] ];\n }\n } else if (command === 'C') {\n // 三次贝塞尔曲线有两个控制点\n const cp1 = [ params[1], params[2] ];\n const cp2 = [ params[3], params[4] ];\n segment.startTangent = [ prePoint[0] - cp1[0], prePoint[1] - cp1[1] ];\n segment.endTangent = [ currentPoint[0] - cp2[0], currentPoint[1] - cp2[1] ];\n\n // horizontal line, eg. ['C', 100, 100, 100, 100, 200, 200]\n if (segment.startTangent[0] === 0 && segment.startTangent[1] === 0) {\n segment.startTangent = [cp1[0] - cp2[0], cp1[1] - cp2[1]];\n }\n if (segment.endTangent[0] === 0 && segment.endTangent[1] === 0) {\n segment.endTangent = [cp2[0] - cp1[0], cp2[1] - cp1[1]];\n }\n } else if (command === 'S') {\n const preSegment = segments[i - 1];\n const cp1 = toSymmetry(preSegment.currentPoint, prePoint);\n const cp2 = [ params[1], params[2] ];\n if (preSegment.command === 'C') {\n segment.command = 'C'; // 将 S 命令变换为 C 命令\n segment.startTangent = [ prePoint[0] - cp1[0], prePoint[1] - cp1[1] ];\n segment.endTangent = [ currentPoint[0] - cp2[0], currentPoint[1] - cp2[1] ];\n } else {\n segment.command = 'SQ'; // 将 S 命令变换为 SQ 命令\n segment.startTangent = [ prePoint[0] - cp2[0], prePoint[1] - cp2[1] ];\n segment.endTangent = [ currentPoint[0] - cp2[0], currentPoint[1] - cp2[1] ];\n }\n } else if (command === 'A') {\n let d = 0.001;\n const {\n cx = 0,\n cy = 0,\n rx = 0,\n ry = 0,\n sweepFlag = 0,\n startAngle = 0,\n endAngle = 0,\n } = segment['arcParams'] || {};\n if (sweepFlag === 0) {\n d *= -1;\n }\n const dx1 = rx * Math.cos(startAngle - d) + cx;\n const dy1 = ry * Math.sin(startAngle - d) + cy;\n segment.startTangent = [ dx1 - startMovePoint[0], dy1 - startMovePoint[1] ];\n const dx2 = rx * Math.cos(startAngle + endAngle + d) + cx;\n const dy2 = ry * Math.sin(startAngle + endAngle - d) + cy;\n segment.endTangent = [ prePoint[0] - dx2, prePoint[1] - dy2 ];\n }\n segments.push(segment);\n }\n return segments;\n}\n","/**\n * @fileoverview Marker\n * @author dxq613@gmail.com\n */\n\nimport { isNil } from '@antv/util';\nimport { path2Absolute } from '@antv/path-util';\nimport ShapeBase from './base';\nimport { isFunction } from '../util/util';\nimport { drawPath } from '../util/draw';\n\nconst Symbols = {\n // 圆\n circle(x, y, r) {\n return [\n ['M', x - r, y],\n ['A', r, r, 0, 1, 0, x + r, y],\n ['A', r, r, 0, 1, 0, x - r, y],\n ];\n },\n // 正方形\n square(x, y, r) {\n return [['M', x - r, y - r], ['L', x + r, y - r], ['L', x + r, y + r], ['L', x - r, y + r], ['Z']];\n },\n // 菱形\n diamond(x, y, r) {\n return [['M', x - r, y], ['L', x, y - r], ['L', x + r, y], ['L', x, y + r], ['Z']];\n },\n // 三角形\n triangle(x, y, r) {\n const diffY = r * Math.sin((1 / 3) * Math.PI);\n return [['M', x - r, y + diffY], ['L', x, y - diffY], ['L', x + r, y + diffY], ['Z']];\n },\n // 倒三角形\n 'triangle-down'(x, y, r) {\n const diffY = r * Math.sin((1 / 3) * Math.PI);\n return [['M', x - r, y - diffY], ['L', x + r, y - diffY], ['L', x, y + diffY], ['Z']];\n },\n};\n\nclass Marker extends ShapeBase {\n initAttrs(attrs) {\n this._resetParamsCache();\n }\n\n // 重置绘制 path 存储的缓存\n _resetParamsCache() {\n // 为了加速 path 的绘制、拾取和计算,这个地方可以缓存很多东西\n // 这些缓存都是第一次需要时计算和存储,虽然增加了复杂度,但是频繁调用的方法,性能有很大提升\n this.set('paramsCache', {}); // 清理缓存\n }\n\n // 更新属性时,检测是否更改了 path\n onAttrChange(name: string, value: any, originValue: any) {\n super.onAttrChange(name, value, originValue);\n if (['symbol', 'x', 'y', 'r', 'radius'].indexOf(name) !== -1) {\n // path 相关属性更改时,清理缓存\n this._resetParamsCache();\n }\n }\n\n // 仅仅使用包围盒检测来进行拾取\n // 所以不需要复写 isInStrokeOrPath 的方法\n isOnlyHitBox() {\n return true;\n }\n\n _getR(attrs) {\n // 兼容 r 和 radius 两种写法,推荐使用 r\n return isNil(attrs.r) ? attrs.radius : attrs.r;\n }\n\n _getPath() {\n const attrs = this.attr();\n const { x, y } = attrs;\n const symbol = attrs.symbol || 'circle';\n const r = this._getR(attrs);\n let method;\n let path;\n if (isFunction(symbol)) {\n method = symbol;\n path = method(x, y, r);\n // 将 path 转成绝对路径\n path = path2Absolute(path);\n } else {\n // 内置 symbol 的 path 都是绝对路径,直接绘制即可,不需要对 path 进行特殊处理\n method = Marker.Symbols[symbol];\n\n if (!method) {\n console.warn(`${symbol} marker is not supported.`);\n return null;\n }\n\n path = method(x, y, r);\n }\n\n return path;\n }\n\n createPath(context) {\n const path = this._getPath();\n const paramsCache = this.get('paramsCache');\n drawPath(this, context, { path }, paramsCache);\n }\n\n static Symbols = Symbols;\n}\n\nexport default Marker;\n","import { getOffScreenContext } from '@antv/g-base';\n\nexport default function isPointInPath(shape, x, y) {\n const ctx = getOffScreenContext();\n shape.createPath(ctx);\n return ctx.isPointInPath(x, y);\n}\n","/**\n * @fileoverview 判断点是否在多边形内\n * @author dxq613@gmail.com\n */\n\n// 多边形的射线检测,参考:https://blog.csdn.net/WilliamSun0122/article/details/77994526\nconst tolerance = 1e-6;\n// 三态函数,判断两个double在eps精度下的大小关系\nfunction dcmp(x) {\n if (Math.abs(x) < tolerance) {\n return 0;\n }\n\n return x < 0 ? -1 : 1;\n}\n\n// 判断点Q是否在p1和p2的线段上\nfunction onSegment(p1, p2, q) {\n if (\n (q[0] - p1[0]) * (p2[1] - p1[1]) === (p2[0] - p1[0]) * (q[1] - p1[1]) &&\n Math.min(p1[0], p2[0]) <= q[0] &&\n q[0] <= Math.max(p1[0], p2[0]) &&\n Math.min(p1[1], p2[1]) <= q[1] &&\n q[1] <= Math.max(p1[1], p2[1])\n ) {\n return true;\n }\n return false;\n}\n\n// 判断点P在多边形内-射线法\nexport default function isInPolygon(points, x, y) {\n let isHit = false;\n const n = points.length;\n if (n <= 2) {\n // svg 中点小于 3 个时,不显示,也无法被拾取\n return false;\n }\n for (let i = 0; i < n; i++) {\n const p1 = points[i];\n const p2 = points[(i + 1) % n];\n if (onSegment(p1, p2, [x, y])) {\n // 点在多边形一条边上\n return true;\n }\n // 前一个判断min(p1[1],p2[1]) 0 !== dcmp(p2[1] - y) > 0 &&\n dcmp(x - ((y - p1[1]) * (p1[0] - p2[0])) / (p1[1] - p2[1]) - p1[0]) < 0\n ) {\n isHit = !isHit;\n }\n }\n return isHit;\n}\n","import { distance } from '../util';\nexport default function arc(cx, cy, r, startAngle, endAngle, lineWidth, x, y) {\n const angle = (Math.atan2(y - cy, x - cx) + Math.PI * 2) % (Math.PI * 2); // 转换到 0 - 2 * Math.PI 之间\n if (angle < startAngle || angle > endAngle) {\n return false;\n }\n const point = {\n x: cx + r * Math.cos(angle),\n y: cy + r * Math.sin(angle),\n };\n return distance(point.x, point.y, x, y) <= lineWidth / 2;\n}\n","/**\n * @fileoverview path 的一些工具\n * @author dxq613@gmail.com\n */\nimport { PathUtil } from '@antv/g-base';\nimport { Quad as QuadUtil } from '@antv/g-math';\nimport { Cubic as CubicUtil } from '@antv/g-math';\nimport { ext } from '@antv/matrix-util';\nimport * as vec3 from 'gl-matrix/vec3';\nimport { inBox } from './util';\nimport inLine from './in-stroke/line';\nimport inArc from './in-stroke/arc';\n\nconst { transform } = ext;\n\nfunction hasArc(path) {\n let hasArc = false;\n const count = path.length;\n for (let i = 0; i < count; i++) {\n const params = path[i];\n const cmd = params[0];\n if (cmd === 'C' || cmd === 'A' || cmd === 'Q') {\n hasArc = true;\n break;\n }\n }\n return hasArc;\n}\n\nfunction isPointInStroke(segments, lineWidth, x, y, length) {\n let isHit = false;\n const halfWidth = lineWidth / 2;\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const { currentPoint, params, prePoint, box } = segment;\n // 如果在前面已经生成过包围盒,直接按照包围盒计算\n if (box && !inBox(box.x - halfWidth, box.y - halfWidth, box.width + lineWidth, box.height + lineWidth, x, y)) {\n continue;\n }\n switch (segment.command) {\n // L 和 Z 都是直线, M 不进行拾取\n case 'L':\n case 'Z':\n isHit = inLine(prePoint[0], prePoint[1], currentPoint[0], currentPoint[1], lineWidth, x, y);\n break;\n case 'Q':\n const qDistance = QuadUtil.pointDistance(\n prePoint[0],\n prePoint[1],\n params[1],\n params[2],\n params[3],\n params[4],\n x,\n y\n );\n isHit = qDistance <= lineWidth / 2;\n break;\n case 'C':\n const cDistance = CubicUtil.pointDistance(\n prePoint[0], // 上一段结束位置, 即 C 的起始点\n prePoint[1],\n params[1], // 'C' 的参数,1、2 为第一个控制点,3、4 为第二个控制点,5、6 为结束点\n params[2],\n params[3],\n params[4],\n params[5],\n params[6],\n x,\n y,\n length\n );\n isHit = cDistance <= lineWidth / 2;\n break;\n case 'A':\n // 计算点到椭圆圆弧的距离,暂时使用近似算法,后面可以改成切割法求最近距离\n const arcParams = segment.arcParams;\n const { cx, cy, rx, ry, startAngle, endAngle, xRotation } = arcParams;\n const p = [x, y, 1];\n const r = rx > ry ? rx : ry;\n const scaleX = rx > ry ? 1 : rx / ry;\n const scaleY = rx > ry ? ry / rx : 1;\n const m = transform(null, [\n ['t', -cx, -cy],\n ['r', -xRotation],\n ['s', 1 / scaleX, 1 / scaleY],\n ]);\n vec3.transformMat3(p, p, m);\n isHit = inArc(0, 0, r, startAngle, endAngle, lineWidth, p[0], p[1]);\n break;\n default:\n break;\n }\n if (isHit) {\n break;\n }\n }\n return isHit;\n}\n\n/**\n * 提取出内部的闭合多边形和非闭合的多边形,假设 path 不存在圆弧\n * @param {Array} path 路径\n * @returns {Array} 点的集合\n */\nfunction extractPolygons(path) {\n const count = path.length;\n const polygons = [];\n const polylines = [];\n let points = []; // 防止第一个命令不是 'M'\n for (let i = 0; i < count; i++) {\n const params = path[i];\n const cmd = params[0];\n if (cmd === 'M') {\n // 遇到 'M' 判定是否是新数组,新数组中没有点\n if (points.length) {\n // 如果存在点,则说明没有遇到 'Z',开始了一个新的多边形\n polylines.push(points);\n points = []; // 创建新的点\n }\n points.push([params[1], params[2]]);\n } else if (cmd === 'Z') {\n if (points.length) {\n // 存在点\n polygons.push(points);\n points = []; // 开始新的点集合\n }\n // 如果不存在点,同时 'Z',则说明是错误,不处理\n } else {\n points.push([params[1], params[2]]);\n }\n }\n // 说明 points 未放入 polygons 或者 polyline\n // 仅当只有一个 M,没有 Z 时会发生这种情况\n if (points.length > 0) {\n polylines.push(points);\n }\n return {\n polygons,\n polylines,\n };\n}\n\nexport default {\n hasArc,\n extractPolygons,\n isPointInStroke,\n ...PathUtil,\n};\n","/**\n * @fileoverview path\n * @author dxq613@gmail.com\n */\nimport { Point } from '@antv/g-base';\nimport { Cubic as CubicUtil } from '@antv/g-math';\nimport { each, isNil } from '@antv/util';\nimport ShapeBase from './base';\nimport { path2Absolute, path2Segments } from '@antv/path-util';\nimport { drawPath } from '../util/draw';\nimport isPointInPath from '../util/in-path/point-in-path';\nimport isInPolygon from '../util/in-path/polygon';\nimport PathUtil from '../util/path';\nimport * as ArrowUtil from '../util/arrow';\n\n// 是否在多个多边形内部\nfunction isInPolygons(polygons, x, y) {\n let isHit = false;\n for (let i = 0; i < polygons.length; i++) {\n const points = polygons[i];\n isHit = isInPolygon(points, x, y);\n if (isHit) {\n break;\n }\n }\n return isHit;\n}\n\nclass Path extends ShapeBase {\n getDefaultAttrs() {\n const attrs = super.getDefaultAttrs();\n return {\n ...attrs,\n startArrow: false,\n endArrow: false,\n };\n }\n\n initAttrs(attrs) {\n this._setPathArr(attrs.path);\n this.setArrow();\n }\n\n // 更新属性时,检测是否更改了 path\n onAttrChange(name: string, value: any, originValue: any) {\n super.onAttrChange(name, value, originValue);\n if (name === 'path') {\n this._setPathArr(value);\n }\n // 由于箭头的绘制依赖于 line 的诸多 attrs,因此这里不再对每个 attr 进行判断,attr 每次变化都会影响箭头的更新\n this.setArrow();\n }\n\n // 将 path 转换成绝对路径\n _setPathArr(path) {\n // 转换 path 的格式\n this.attrs.path = path2Absolute(path);\n const hasArc = PathUtil.hasArc(path);\n // 为了加速 path 的绘制、拾取和计算,这个地方可以缓存很多东西\n // 这些缓存都是第一次需要时计算和存储,虽然增加了复杂度,但是频繁调用的方法,性能有很大提升\n this.set('hasArc', hasArc);\n this.set('paramsCache', {}); // 清理缓存\n this.set('segments', null); // 延迟生成 path,在动画场景下可能不会有拾取\n this.set('curve', null);\n this.set('tCache', null);\n this.set('totalLength', null);\n }\n\n getSegments() {\n let segments = this.get('segements');\n if (!segments) {\n segments = path2Segments(this.attr('path'));\n this.set('segments', segments);\n }\n return segments;\n }\n\n setArrow() {\n const attrs = this.attr();\n const { startArrow, endArrow } = attrs;\n\n if (startArrow) {\n const tangent = this.getStartTangent();\n ArrowUtil.addStartArrow(this, attrs, tangent[0][0], tangent[0][1], tangent[1][0], tangent[1][1]);\n }\n if (endArrow) {\n const tangent = this.getEndTangent();\n ArrowUtil.addEndArrow(this, attrs, tangent[0][0], tangent[0][1], tangent[1][0], tangent[1][1]);\n }\n }\n\n isInStrokeOrPath(x, y, isStroke, isFill, lineWidth) {\n const segments = this.getSegments();\n const hasArc = this.get('hasArc');\n let isHit = false;\n if (isStroke) {\n const length = this.getTotalLength();\n isHit = PathUtil.isPointInStroke(segments, lineWidth, x, y, length);\n }\n if (!isHit && isFill) {\n if (hasArc) {\n // 存在曲线时,暂时使用 canvas 的 api 计算,后续可以进行多边形切割\n isHit = isPointInPath(this, x, y);\n } else {\n const path = this.attr('path');\n const extractResutl = PathUtil.extractPolygons(path);\n // 提取出来的多边形包含闭合的和非闭合的,在这里统一按照多边形处理\n isHit = isInPolygons(extractResutl.polygons, x, y) || isInPolygons(extractResutl.polylines, x, y);\n }\n }\n return isHit;\n }\n\n createPath(context) {\n const attrs = this.attr();\n const paramsCache = this.get('paramsCache'); // 由于计算圆弧的参数成本很大,所以要缓存\n drawPath(this, context, attrs, paramsCache);\n }\n\n afterDrawPath(context: CanvasRenderingContext2D) {\n const startArrowShape = this.get('startArrowShape');\n const endArrowShape = this.get('endArrowShape');\n if (startArrowShape) {\n startArrowShape.draw(context);\n }\n if (endArrowShape) {\n endArrowShape.draw(context);\n }\n }\n\n /**\n * Get total length of path\n * @return {number} length\n */\n getTotalLength() {\n const totalLength = this.get('totalLength');\n if (!isNil(totalLength)) {\n return totalLength;\n }\n this._calculateCurve();\n this._setTcache();\n return this.get('totalLength');\n }\n\n /**\n * Get point according to ratio\n * @param {number} ratio\n * @return {Point} point\n */\n getPoint(ratio: number): Point {\n let tCache = this.get('tCache');\n if (!tCache) {\n this._calculateCurve();\n this._setTcache();\n tCache = this.get('tCache');\n }\n\n let subt;\n let index;\n\n const curve = this.get('curve');\n if (!tCache || tCache.length === 0) {\n if (curve) {\n return {\n x: curve[0][1],\n y: curve[0][2],\n };\n }\n return null;\n }\n each(tCache, (v, i) => {\n if (ratio >= v[0] && ratio <= v[1]) {\n subt = (ratio - v[0]) / (v[1] - v[0]);\n index = i;\n }\n });\n\n const seg = curve[index];\n if (isNil(seg) || isNil(index)) {\n return null;\n }\n const l = seg.length;\n const nextSeg = curve[index + 1];\n return CubicUtil.pointAt(\n seg[l - 2],\n seg[l - 1],\n nextSeg[1],\n nextSeg[2],\n nextSeg[3],\n nextSeg[4],\n nextSeg[5],\n nextSeg[6],\n subt\n );\n }\n\n _calculateCurve() {\n const { path } = this.attr();\n this.set('curve', PathUtil.pathToCurve(path));\n }\n\n _setTcache() {\n let totalLength = 0;\n let tempLength = 0;\n // 每段 curve 对应起止点的长度比例列表,形如: [[0, 0.25], [0.25, 0.6]. [0.6, 0.9], [0.9, 1]]\n const tCache = [];\n let segmentT;\n let segmentL;\n let segmentN;\n let l;\n const curve = this.get('curve');\n\n if (!curve) {\n return;\n }\n\n each(curve, (segment, i) => {\n segmentN = curve[i + 1];\n l = segment.length;\n if (segmentN) {\n totalLength +=\n CubicUtil.length(\n segment[l - 2],\n segment[l - 1],\n segmentN[1],\n segmentN[2],\n segmentN[3],\n segmentN[4],\n segmentN[5],\n segmentN[6]\n ) || 0;\n }\n });\n this.set('totalLength', totalLength);\n\n if (totalLength === 0) {\n this.set('tCache', []);\n return;\n }\n\n each(curve, (segment, i) => {\n segmentN = curve[i + 1];\n l = segment.length;\n if (segmentN) {\n segmentT = [];\n segmentT[0] = tempLength / totalLength;\n segmentL = CubicUtil.length(\n segment[l - 2],\n segment[l - 1],\n segmentN[1],\n segmentN[2],\n segmentN[3],\n segmentN[4],\n segmentN[5],\n segmentN[6]\n );\n // 当 path 不连续时,segmentL 可能为空,为空时需要作为 0 处理\n tempLength += segmentL || 0;\n segmentT[1] = tempLength / totalLength;\n tCache.push(segmentT);\n }\n });\n this.set('tCache', tCache);\n }\n\n /**\n * Get start tangent vector\n * @return {Array}\n */\n getStartTangent(): number[][] {\n const segments = this.getSegments();\n let result;\n if (segments.length > 1) {\n const startPoint = segments[0].currentPoint;\n const endPoint = segments[1].currentPoint;\n const tangent = segments[1].startTangent;\n result = [];\n if (tangent) {\n result.push([startPoint[0] - tangent[0], startPoint[1] - tangent[1]]);\n result.push([startPoint[0], startPoint[1]]);\n } else {\n result.push([endPoint[0], endPoint[1]]);\n result.push([startPoint[0], startPoint[1]]);\n }\n }\n return result;\n }\n\n /**\n * Get end tangent vector\n * @return {Array}\n */\n getEndTangent(): number[][] {\n const segments = this.getSegments();\n const length = segments.length;\n let result;\n if (length > 1) {\n const startPoint = segments[length - 2].currentPoint;\n const endPoint = segments[length - 1].currentPoint;\n const tangent = segments[length - 1].endTangent;\n result = [];\n if (tangent) {\n result.push([endPoint[0] - tangent[0], endPoint[1] - tangent[1]]);\n result.push([endPoint[0], endPoint[1]]);\n } else {\n result.push([startPoint[0], startPoint[1]]);\n result.push([endPoint[0], endPoint[1]]);\n }\n }\n return result;\n }\n}\n\nexport default Path;\n","import inLine from './line';\n\nexport default function inPolyline(points: any[], lineWidth: number, x: number, y: number, isClose: boolean) {\n const count = points.length;\n if (count < 2) {\n return false;\n }\n for (let i = 0; i < count - 1; i++) {\n const x1 = points[i][0];\n const y1 = points[i][1];\n const x2 = points[i + 1][0];\n const y2 = points[i + 1][1];\n\n if (inLine(x1, y1, x2, y2, lineWidth, x, y)) {\n return true;\n }\n }\n\n // 如果封闭,则计算起始点和结束点的边\n if (isClose) {\n const first = points[0];\n const last = points[count - 1];\n if (inLine(first[0], first[1], last[0], last[1], lineWidth, x, y)) {\n return true;\n }\n }\n\n return false;\n}\n","/**\n * @fileoverview 多边形\n * @author dxq613@gmail.com\n */\n\nimport ShapeBase from './base';\nimport inPolyline from '../util/in-stroke/polyline';\nimport isInPolygon from '../util/in-path/polygon';\n\nclass Polygon extends ShapeBase {\n isInStrokeOrPath(x, y, isStroke, isFill, lineWidth) {\n const { points } = this.attr();\n let isHit = false;\n if (isStroke) {\n isHit = inPolyline(points, lineWidth, x, y, true);\n }\n if (!isHit && isFill) {\n isHit = isInPolygon(points, x, y); // isPointInPath(shape, x, y);\n }\n return isHit;\n }\n\n createPath(context) {\n const attrs = this.attr();\n const points = attrs.points;\n if (points.length < 2) {\n return;\n }\n context.beginPath();\n for (let i = 0; i < points.length; i++) {\n const point = points[i];\n if (i === 0) {\n context.moveTo(point[0], point[1]);\n } else {\n context.lineTo(point[0], point[1]);\n }\n }\n context.closePath();\n }\n}\n\nexport default Polygon;\n","/**\n * @fileoverview 多边形\n * @author dxq613@gmail.com\n */\nimport { Point } from '@antv/g-base';\nimport { Line as LineUtil } from '@antv/g-math';\nimport { Polyline as PolylineUtil } from '@antv/g-math';\nimport { each, isNil } from '@antv/util';\nimport ShapeBase from './base';\nimport inPolyline from '../util/in-stroke/polyline';\nimport * as ArrowUtil from '../util/arrow';\n\nclass PolyLine extends ShapeBase {\n getDefaultAttrs() {\n const attrs = super.getDefaultAttrs();\n return {\n ...attrs,\n startArrow: false,\n endArrow: false,\n };\n }\n\n initAttrs(attrs) {\n this.setArrow();\n }\n\n // 更新属性时,检测是否更改了 points\n onAttrChange(name: string, value: any, originValue: any) {\n super.onAttrChange(name, value, originValue);\n this.setArrow();\n if (['points'].indexOf(name) !== -1) {\n this._resetCache();\n }\n }\n\n _resetCache() {\n this.set('totalLength', null);\n this.set('tCache', null);\n }\n\n setArrow() {\n const attrs = this.attr();\n const { points, startArrow, endArrow } = this.attrs;\n const length = points.length;\n const x1 = points[0][0];\n const y1 = points[0][1];\n const x2 = points[length - 1][0];\n const y2 = points[length - 1][1];\n\n if (startArrow) {\n ArrowUtil.addStartArrow(this, attrs, points[1][0], points[1][1], x1, y1);\n }\n if (endArrow) {\n ArrowUtil.addEndArrow(this, attrs, points[length - 2][0], points[length - 2][1], x2, y2);\n }\n }\n\n // 不允许 fill\n isFill() {\n return false;\n }\n\n isInStrokeOrPath(x, y, isStroke, isFill, lineWidth) {\n // 没有设置 stroke 不能被拾取, 没有线宽不能被拾取\n if (!isStroke || !lineWidth) {\n return false;\n }\n const { points } = this.attr();\n return inPolyline(points, lineWidth, x, y, false);\n }\n\n // 始终填充\n isStroke() {\n return true;\n }\n\n createPath(context) {\n const { points, startArrow, endArrow } = this.attr();\n const length = points.length;\n if (points.length < 2) {\n return;\n }\n let x1 = points[0][0];\n let y1 = points[0][1];\n let x2 = points[length - 1][0];\n let y2 = points[length - 1][1];\n // 如果定义了箭头,并且是自定义箭头,线条相应缩进\n if (startArrow && startArrow.d) {\n const distance = ArrowUtil.getShortenOffset(x1, y1, points[1][0], points[1][1], startArrow.d);\n x1 += distance.dx;\n y1 += distance.dy;\n }\n if (endArrow && endArrow.d) {\n const distance = ArrowUtil.getShortenOffset(points[length - 2][0], points[length - 2][1], x2, y2, endArrow.d);\n x2 -= distance.dx;\n y2 -= distance.dy;\n }\n\n context.beginPath();\n context.moveTo(x1, y1);\n for (let i = 0; i < length - 1; i++) {\n const point = points[i];\n context.lineTo(point[0], point[1]);\n }\n context.lineTo(x2, y2);\n }\n\n afterDrawPath(context: CanvasRenderingContext2D) {\n const startArrowShape = this.get('startArrowShape');\n const endArrowShape = this.get('endArrowShape');\n if (startArrowShape) {\n startArrowShape.draw(context);\n }\n if (endArrowShape) {\n endArrowShape.draw(context);\n }\n }\n\n /**\n * Get length of polyline\n * @return {number} length\n */\n getTotalLength() {\n const { points } = this.attr();\n // get totalLength from cache\n const totalLength = this.get('totalLength');\n if (!isNil(totalLength)) {\n return totalLength;\n }\n this.set('totalLength', PolylineUtil.length(points));\n return this.get('totalLength');\n }\n\n /**\n * Get point according to ratio\n * @param {number} ratio\n * @return {Point} point\n */\n getPoint(ratio: number): Point {\n const { points } = this.attr();\n // get tCache from cache\n let tCache = this.get('tCache');\n if (!tCache) {\n this._setTcache();\n tCache = this.get('tCache');\n }\n\n let subt;\n let index;\n each(tCache, (v, i) => {\n if (ratio >= v[0] && ratio <= v[1]) {\n subt = (ratio - v[0]) / (v[1] - v[0]);\n index = i;\n }\n });\n return LineUtil.pointAt(points[index][0], points[index][1], points[index + 1][0], points[index + 1][1], subt);\n }\n\n _setTcache() {\n const { points } = this.attr();\n if (!points || points.length === 0) {\n return;\n }\n\n const totalLength = this.getTotalLength();\n if (totalLength <= 0) {\n return;\n }\n\n let tempLength = 0;\n const tCache = [];\n let segmentT;\n let segmentL;\n\n each(points, (p, i) => {\n if (points[i + 1]) {\n segmentT = [];\n segmentT[0] = tempLength / totalLength;\n segmentL = LineUtil.length(p[0], p[1], points[i + 1][0], points[i + 1][1]);\n tempLength += segmentL;\n segmentT[1] = tempLength / totalLength;\n tCache.push(segmentT);\n }\n });\n this.set('tCache', tCache);\n }\n\n /**\n * Get start tangent vector\n * @return {Array}\n */\n getStartTangent(): number[][] {\n const { points } = this.attr();\n const result = [];\n result.push([points[1][0], points[1][1]]);\n result.push([points[0][0], points[0][1]]);\n return result;\n }\n\n /**\n * Get end tangent vector\n * @return {Array}\n */\n getEndTangent(): number[][] {\n const { points } = this.attr();\n const l = points.length - 1;\n const result = [];\n result.push([points[l - 1][0], points[l - 1][1]]);\n result.push([points[l][0], points[l][1]]);\n return result;\n }\n}\n\nexport default PolyLine;\n","/**\n * @fileoverview 矩形\n * @author dxq613@gmail.com\n */\n\nimport ShapeBase from './base';\nimport { parseRadius } from '../util/parse';\nimport { inBox } from '../util/util';\nimport inRect from '../util/in-stroke/rect';\nimport inRectWithRadius from '../util/in-stroke/rect-radius';\nimport isPointInPath from '../util/in-path/point-in-path';\n\nclass Rect extends ShapeBase {\n getDefaultAttrs() {\n const attrs = super.getDefaultAttrs();\n return {\n ...attrs,\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n radius: 0,\n };\n }\n\n isInStrokeOrPath(x, y, isStroke, isFill, lineWidth) {\n const attrs = this.attr();\n const minX = attrs.x;\n const minY = attrs.y;\n const width = attrs.width;\n const height = attrs.height;\n const radius = attrs.radius;\n // 无圆角时的策略\n if (!radius) {\n const halfWidth = lineWidth / 2;\n // 同时填充和带有边框\n if (isFill && isStroke) {\n return inBox(minX - halfWidth, minY - halfWidth, width + halfWidth, height + halfWidth, x, y);\n }\n // 仅填充\n if (isFill) {\n return inBox(minX, minY, width, height, x, y);\n }\n if (isStroke) {\n return inRect(minX, minY, width, height, lineWidth, x, y);\n }\n } else {\n let isHit = false;\n if (isStroke) {\n isHit = inRectWithRadius(minX, minY, width, height, radius, lineWidth, x, y);\n }\n // 仅填充时带有圆角的矩形直接通过图形拾取\n // 以后可以改成纯数学的近似拾取,将圆弧切割成多边形\n if (!isHit && isFill) {\n isHit = isPointInPath(this, x, y);\n }\n return isHit;\n }\n }\n\n createPath(context) {\n const attrs = this.attr();\n const x = attrs.x;\n const y = attrs.y;\n const width = attrs.width;\n const height = attrs.height;\n const radius = attrs.radius;\n\n context.beginPath();\n if (radius === 0) {\n // 改成原生的rect方法\n context.rect(x, y, width, height);\n } else {\n const [r1, r2, r3, r4] = parseRadius(radius);\n context.moveTo(x + r1, y);\n context.lineTo(x + width - r2, y);\n r2 !== 0 && context.arc(x + width - r2, y + r2, r2, -Math.PI / 2, 0);\n context.lineTo(x + width, y + height - r3);\n r3 !== 0 && context.arc(x + width - r3, y + height - r3, r3, 0, Math.PI / 2);\n context.lineTo(x + r4, y + height);\n r4 !== 0 && context.arc(x + r4, y + height - r4, r4, Math.PI / 2, Math.PI);\n context.lineTo(x, y + r1);\n r1 !== 0 && context.arc(x + r1, y + r1, r1, Math.PI, Math.PI * 1.5);\n context.closePath();\n }\n }\n}\n\nexport default Rect;\n","import inLine from './line';\nimport inArc from './arc';\n\nexport default function rectWithRadius(minX, minY, width, height, radius, lineWidth, x, y) {\n const halfWidth = lineWidth / 2;\n return (\n inLine(minX + radius, minY, minX + width - radius, minY, lineWidth, x, y) ||\n inLine(minX + width, minY + radius, minX + width, minY + height - radius, lineWidth, x, y) ||\n inLine(minX + width - radius, minY + height, minX + radius, minY + height, lineWidth, x, y) ||\n inLine(minX, minY + height - radius, minX, minY + radius, lineWidth, x, y) ||\n inArc(minX + width - radius, minY + radius, radius, 1.5 * Math.PI, 2 * Math.PI, lineWidth, x, y) ||\n inArc(minX + width - radius, minY + height - radius, radius, 0, 0.5 * Math.PI, lineWidth, x, y) ||\n inArc(minX + radius, minY + height - radius, radius, 0.5 * Math.PI, Math.PI, lineWidth, x, y) ||\n inArc(minX + radius, minY + radius, radius, Math.PI, 1.5 * Math.PI, lineWidth, x, y)\n );\n}\n","import { inBox } from '../util';\n\nexport default function inRect(minX, minY, width, height, lineWidth, x, y) {\n const halfWidth = lineWidth / 2;\n // 将四个边看做矩形来检测,比边的检测算法要快\n return (\n inBox(minX - halfWidth, minY - halfWidth, width, lineWidth, x, y) || // 上边\n inBox(minX + width - halfWidth, minY - halfWidth, lineWidth, height, x, y) || // 右边\n inBox(minX + halfWidth, minY + height - halfWidth, width, lineWidth, x, y) || // 下边\n inBox(minX - halfWidth, minY + halfWidth, lineWidth, height, x, y)\n ); // 左边\n}\n","/**\n * @fileoverview 文本\n * @author dxq613@gmail.com\n */\n\nimport ShapeBase from './base';\nimport { isNil, isString, each } from '../util/util';\nimport { getTextHeight, assembleFont } from '@antv/g-base';\nclass Text extends ShapeBase {\n // 默认文本属性\n getDefaultAttrs() {\n const attrs = super.getDefaultAttrs();\n return {\n ...attrs,\n x: 0,\n y: 0,\n text: null,\n fontSize: 12,\n fontFamily: 'sans-serif',\n fontStyle: 'normal',\n fontWeight: 'normal',\n fontVariant: 'normal',\n textAlign: 'start',\n textBaseline: 'bottom',\n };\n }\n\n // 仅仅使用包围盒检测来进行拾取\n isOnlyHitBox() {\n return true;\n }\n\n // 初始化时组合 font,同时判断 text 是否换行\n initAttrs(attrs) {\n this._assembleFont();\n if (attrs.text) {\n this._setText(attrs.text);\n }\n }\n // 组装字体\n _assembleFont() {\n const attrs = this.attrs;\n attrs.font = assembleFont(attrs);\n }\n\n // 如果文本换行,则缓存数组\n _setText(text) {\n let textArr = null;\n if (isString(text) && text.indexOf('\\n') !== -1) {\n textArr = text.split('\\n');\n }\n this.set('textArr', textArr);\n }\n\n // 更新属性时,检测是否更改了 font、text\n onAttrChange(name: string, value: any, originValue: any) {\n super.onAttrChange(name, value, originValue);\n if (name.startsWith('font')) {\n this._assembleFont();\n }\n if (name === 'text') {\n this._setText(value);\n }\n }\n\n // 这个方法在 text 时没有可以做的事情,如果要支持文字背景时可以考虑\n // createPath(context) {\n\n // }\n\n // 如果文本多行,需要获取文本间距\n _getSpaceingY() {\n const attrs = this.attrs;\n const lineHeight = attrs.lineHeight;\n const fontSize = attrs.fontSize * 1;\n return lineHeight ? lineHeight - fontSize : fontSize * 0.14;\n }\n\n // 绘制文本,考虑多行的场景\n _drawTextArr(context, textArr, isFill) {\n const attrs = this.attrs;\n const textBaseline = attrs.textBaseline;\n const x = attrs.x;\n const y = attrs.y;\n const fontSize = attrs.fontSize * 1;\n const spaceingY = this._getSpaceingY();\n const height = getTextHeight(attrs.text, attrs.fontSize, attrs.lineHeight);\n let subY;\n each(textArr, (subText, index: number) => {\n subY = y + index * (spaceingY + fontSize) - height + fontSize; // bottom;\n if (textBaseline === 'middle') subY += height - fontSize - (height - fontSize) / 2;\n if (textBaseline === 'top') subY += height - fontSize;\n if (!isNil(subText)) {\n if (isFill) {\n context.fillText(subText, x, subY);\n } else {\n context.strokeText(subText, x, subY);\n }\n }\n });\n }\n\n // 绘制文本,同时考虑填充和绘制边框\n _drawText(context, isFill) {\n const attrs = this.attr();\n const x = attrs.x;\n const y = attrs.y;\n const textArr = this.get('textArr');\n if (textArr) {\n this._drawTextArr(context, textArr, isFill);\n } else {\n const text = attrs.text;\n if (!isNil(text)) {\n if (isFill) {\n context.fillText(text, x, y);\n } else {\n context.strokeText(text, x, y);\n }\n }\n }\n }\n\n // 复写绘制和填充的逻辑:对于文本,应该先绘制边框,再进行填充\n strokeAndFill(context) {\n const { lineWidth, opacity, strokeOpacity, fillOpacity } = this.attrs;\n\n if (this.isStroke()) {\n if (lineWidth > 0) {\n if (!isNil(strokeOpacity) && strokeOpacity !== 1) {\n context.globalAlpha = opacity;\n }\n this.stroke(context);\n }\n }\n\n if (this.isFill()) {\n if (!isNil(fillOpacity) && fillOpacity !== 1) {\n context.globalAlpha = fillOpacity;\n this.fill(context);\n context.globalAlpha = opacity;\n } else {\n this.fill(context);\n }\n }\n\n this.afterDrawPath(context);\n }\n\n // 复写填充逻辑\n fill(context) {\n this._drawText(context, true);\n }\n\n // 复写绘制边框的逻辑\n stroke(context) {\n this._drawText(context, false);\n }\n}\n\nexport default Text;\n","import { IContainer, IElement, IGroup, IShape, isAllowCapture, multiplyVec2, invert } from '@antv/g-base';\n\nfunction invertFromMatrix(v: number[], matrix: number[]): number[] {\n if (matrix) {\n const invertMatrix = invert(matrix);\n return multiplyVec2(invertMatrix, v);\n }\n return v;\n}\n\nfunction getRefXY(element: IElement, x: number, y: number) {\n // @ts-ignore\n const totalMatrix = element.getTotalMatrix();\n if (totalMatrix) {\n const [refX, refY] = invertFromMatrix([x, y, 1], totalMatrix);\n return [refX, refY];\n }\n return [x, y];\n}\n\n// 拾取前的检测,只有通过检测才能继续拾取\nfunction preTest(element: IElement, x: number, y: number) {\n // @ts-ignore\n if (element.isCanvas && element.isCanvas()) {\n return true;\n }\n // 不允许被拾取,则返回 null\n // @ts-ignore\n if (!isAllowCapture(element) || element.cfg.isInView === false) {\n return false;\n }\n\n if (element.cfg.clipShape) {\n // 如果存在 clip\n const [refX, refY] = getRefXY(element, x, y);\n if (element.isClipped(refX, refY)) {\n return false;\n }\n }\n // @ts-ignore ,这个地方调用过于频繁\n const bbox = element.cfg.cacheCanvasBBox || element.getCanvasBBox();\n // 如果没有缓存 bbox,则说明不可见\n // 注释掉的这段可能会加速拾取,上面的语句改写成 const bbox = element.cfg.cacheCanvasBBox;\n // 这时候的拾取假设图形/分组在上一次绘制都在视窗内,但是上面已经判定了 isInView 所以意义不大\n // 现在还调用 element.getCanvasBBox(); 一个很大的原因是便于单元测试\n // if (!bbox) {\n // return false;\n // }\n if (!(x >= bbox.minX && x <= bbox.maxX && y >= bbox.minY && y <= bbox.maxY)) {\n return false;\n }\n return true;\n}\n\n// 这个方法复写了 g-base 的 getShape\nexport function getShape(container: IContainer, x: number, y: number) {\n // 没有通过检测,则返回 null\n if (!preTest(container, x, y)) {\n return null;\n }\n let shape = null;\n const children = container.getChildren();\n const count = children.length;\n for (let i = count - 1; i >= 0; i--) {\n const child = children[i];\n if (child.isGroup()) {\n shape = getShape(child as IGroup, x, y);\n } else if (preTest(child, x, y)) {\n const curShape = child as IShape;\n const [refX, refY] = getRefXY(child, x, y);\n // @ts-ignore\n if (curShape.isInShape(refX, refY)) {\n shape = child;\n }\n }\n if (shape) {\n break;\n }\n }\n return shape;\n}\n","import { AbstractCanvas } from '@antv/g-base';\nimport { ChangeType } from '@antv/g-base';\nimport { IElement } from './interfaces';\nimport { getShape } from './util/hit';\nimport * as Shape from './shape';\nimport Group from './group';\nimport { each, getPixelRatio, requestAnimationFrame, clearAnimationFrame } from './util/util';\nimport { applyAttrsToContext, drawChildren, getMergedRegion, mergeView, checkRefresh, clearChanged } from './util/draw';\n\nclass Canvas extends AbstractCanvas {\n getDefaultCfg() {\n const cfg = super.getDefaultCfg();\n // 设置渲染引擎为 canvas,只读属性\n cfg['renderer'] = 'canvas';\n // 是否自动绘制,不需要用户调用 draw 方法\n cfg['autoDraw'] = true;\n // 是否允许局部刷新图表\n cfg['localRefresh'] = true;\n cfg['refreshElements'] = [];\n // 是否在视图内自动裁剪\n cfg['clipView'] = true;\n // 是否使用快速拾取的方案,默认为 false,上层可以打开\n cfg['quickHit'] = false;\n return cfg;\n }\n\n /**\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n onCanvasChange(changeType: ChangeType) {\n /**\n * 触发画布更新的三种 changeType\n * 1. attr: 修改画布的绘图属性\n * 2. sort: 画布排序,图形的层次会发生变化\n * 3. changeSize: 改变画布大小\n */\n if (changeType === 'attr' || changeType === 'sort' || changeType === 'changeSize') {\n this.set('refreshElements', [this]);\n this.draw();\n }\n }\n\n getShapeBase() {\n return Shape;\n }\n\n getGroupBase() {\n return Group;\n }\n /**\n * 获取屏幕像素比\n */\n getPixelRatio() {\n const pixelRatio = this.get('pixelRatio') || getPixelRatio();\n // 不足 1 的取 1,超出 1 的取整\n return pixelRatio >= 1 ? Math.ceil(pixelRatio) : 1;\n }\n\n getViewRange() {\n return {\n minX: 0,\n minY: 0,\n maxX: this.cfg.width,\n maxY: this.cfg.height,\n };\n }\n\n // 复写基类的方法生成标签\n createDom(): HTMLElement {\n const element = document.createElement('canvas');\n const context = element.getContext('2d');\n // 缓存 context 对象\n this.set('context', context);\n return element;\n }\n setDOMSize(width: number, height: number) {\n super.setDOMSize(width, height);\n const context = this.get('context');\n const el = this.get('el');\n const pixelRatio = this.getPixelRatio();\n el.width = pixelRatio * width;\n el.height = pixelRatio * height;\n // 设置 canvas 元素的宽度和高度,会重置缩放,因此 context.scale 需要在每次设置宽、高后调用\n if (pixelRatio > 1) {\n context.scale(pixelRatio, pixelRatio);\n }\n }\n // 复写基类方法\n clear() {\n super.clear();\n this._clearFrame(); // 需要清理掉延迟绘制的帧\n const context = this.get('context');\n const element = this.get('el');\n context.clearRect(0, 0, element.width, element.height);\n }\n\n getShape(x: number, y: number) {\n let shape;\n if (this.get('quickHit')) {\n shape = getShape(this, x, y);\n } else {\n shape = super.getShape(x, y, null);\n }\n return shape;\n }\n // 对绘制区域边缘取整,避免浮点数问题\n _getRefreshRegion() {\n const elements = this.get('refreshElements');\n const viewRegion = this.getViewRange();\n let region;\n // 如果是当前画布整体发生了变化,则直接重绘整个画布\n if (elements.length && elements[0] === this) {\n region = viewRegion;\n } else {\n region = getMergedRegion(elements);\n if (region) {\n region.minX = Math.floor(region.minX);\n region.minY = Math.floor(region.minY);\n region.maxX = Math.ceil(region.maxX);\n region.maxY = Math.ceil(region.maxY);\n region.maxY += 1; // 在很多环境下字体的高低会不一致,附加一像素,避免残影\n const clipView = this.get('clipView');\n // 自动裁剪不在 view 内的区域\n if (clipView) {\n region = mergeView(region, viewRegion);\n }\n }\n }\n return region;\n }\n\n /**\n * 刷新图形元素,这里仅仅是放入队列,下次绘制时进行绘制\n * @param {IElement} element 图形元素\n */\n refreshElement(element: IElement) {\n const refreshElements = this.get('refreshElements');\n refreshElements.push(element);\n // if (this.get('autoDraw')) {\n // this._startDraw();\n // }\n }\n // 清理还在进行的绘制\n _clearFrame() {\n const drawFrame = this.get('drawFrame');\n if (drawFrame) {\n // 如果全部渲染时,存在局部渲染,则抛弃掉局部渲染\n clearAnimationFrame(drawFrame);\n this.set('drawFrame', null);\n this.set('refreshElements', []);\n }\n }\n\n // 手工调用绘制接口\n draw() {\n const drawFrame = this.get('drawFrame');\n if (this.get('autoDraw') && drawFrame) {\n return;\n }\n this._startDraw();\n }\n // 绘制所有图形\n _drawAll() {\n const context = this.get('context');\n const element = this.get('el');\n const children = this.getChildren() as IElement[];\n context.clearRect(0, 0, element.width, element.height);\n applyAttrsToContext(context, this);\n drawChildren(context, children);\n // 对于 https://github.com/antvis/g/issues/422 的场景,全局渲染的模式下也会记录更新的元素队列,因此全局渲染完后也需要置空\n this.set('refreshElements', []);\n }\n // 绘制局部\n _drawRegion() {\n const context = this.get('context');\n const refreshElements = this.get('refreshElements');\n const children = this.getChildren() as IElement[];\n const region = this._getRefreshRegion();\n // 需要注意可能没有 region 的场景\n // 一般发生在设置了 localRefresh ,在没有图形发生变化的情况下,用户调用了 draw\n if (region) {\n // 清理指定区域\n context.clearRect(region.minX, region.minY, region.maxX - region.minX, region.maxY - region.minY);\n // 保存上下文,设置 clip\n context.save();\n context.beginPath();\n context.rect(region.minX, region.minY, region.maxX - region.minX, region.maxY - region.minY);\n context.clip();\n applyAttrsToContext(context, this);\n // 确认更新的元素,这个优化可以提升 10 倍左右的性能,10W 个带有 group 的节点,局部渲染会从 90ms 下降到 5-6 ms\n checkRefresh(this, children, region);\n // 绘制子元素\n drawChildren(context, children, region);\n context.restore();\n } else if (refreshElements.length) {\n // 防止发生改变的 elements 没有 region 的场景,这会发生在多个情况下\n // 1. 空的 group\n // 2. 所有 elements 没有在绘图区域\n // 3. group 下面的 elements 隐藏掉\n // 如果不进行清理 hasChanged 的状态会不正确\n clearChanged(refreshElements);\n }\n each(refreshElements, (element) => {\n if (element.get('hasChanged')) {\n // 在视窗外的 Group 元素会加入到更新队列里,但实际却没有执行 draw() 逻辑,也就没有清除 hasChanged 标记\n // 即已经重绘完、但 hasChanged 标记没有清除的元素,需要统一清除掉。主要是 Group 存在问题,具体原因待排查\n element.set('hasChanged', false);\n }\n });\n this.set('refreshElements', []);\n }\n\n // 触发绘制\n _startDraw() {\n let drawFrame = this.get('drawFrame');\n let drawFrameCallback = this.get('drawFrameCallback');\n if (!drawFrame) {\n drawFrame = requestAnimationFrame(() => {\n if (this.get('localRefresh')) {\n this._drawRegion();\n } else {\n this._drawAll();\n }\n this.set('drawFrame', null);\n if (drawFrameCallback) {\n drawFrameCallback();\n }\n });\n this.set('drawFrame', drawFrame);\n }\n }\n\n skipDraw() {}\n\n removeDom() {\n const el = this.get('el');\n // 需要清理 canvas 画布内容,否则ios下 创建的canvas垃圾未回收,导致Total canvas memory use exceeds问题\n // 相关问题列表\n // https://stackoverflow.com/questions/52532614/total-canvas-memory-use-exceeds-the-maximum-limit-safari-12\n // https://github.com/openlayers/openlayers/issues/9291\n el.width = 0;\n el.height = 0;\n el.parentNode.removeChild(el);\n }\n}\n\nexport default Canvas;\n","export default function cancelAnimationFrame(handler: number) {\n const method = window.cancelAnimationFrame ||\n window.webkitCancelAnimationFrame ||\n // @ts-ignore\n window.mozCancelAnimationFrame ||\n // @ts-ignore\n window.msCancelAnimationFrame ||\n clearTimeout;\n\n method(handler);\n};\n","export default function requestAnimationFrame(fn: FrameRequestCallback) {\n const method = window.requestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n // @ts-ignore\n window.mozRequestAnimationFrame ||\n // @ts-ignore\n window.msRequestAnimationFrame ||\n function(f) {\n return setTimeout(f, 16);\n };\n\n return method(fn);\n};\n","import * as Shape from './shape';\nexport * from '@antv/g-base';\nexport { IElement } from './interfaces';\nexport { Region } from './types';\nexport { default as Canvas } from './canvas';\nexport { default as Group } from './group';\nexport { Shape };\nexport { default as getArcParams } from './util/arc-params';\n\nexport const version = '0.5.12';\n","const toString = {}.toString;\n\nconst isType = (value: any, type: string): boolean => toString.call(value) === '[object ' + type + ']';\n\nexport default isType;\n","/**\n * 是否为函数\n * @param {*} fn 对象\n * @return {Boolean} 是否函数\n */\nimport isType from './is-type';\n\nexport default (value: any): value is Function => {\n return isType(value, 'Function');\n};\n","import isType from './is-type';\n\nexport default (value: any): value is Array => {\n return Array.isArray ?\n Array.isArray(value) :\n isType(value, 'Array');\n}\n","export default (value: any): value is T => {\n /**\n * isObject({}) => true\n * isObject([1, 2, 3]) => true\n * isObject(Function) => true\n * isObject(null) => false\n */\n const type = typeof value;\n return value !== null && type === 'object' || type === 'function';\n};\n","import isArray from './is-array';\nimport isObject from './is-object';\n\nfunction each (elements: any[] | object, func: (v: any, k: any) => any): void {\n if (!elements) {\n return;\n }\n let rst;\n if (isArray(elements)) {\n for (let i = 0, len = elements.length; i < len; i++) {\n rst = func(elements[i], i);\n if (rst === false) {\n break;\n }\n }\n } else if (isObject(elements)) {\n for (const k in elements) {\n if (elements.hasOwnProperty(k)) {\n rst = func(elements[k], k);\n if (rst === false) {\n break;\n }\n }\n }\n }\n}\n\nexport default each;\n","import each from './each';\nimport isFunction from './is-function';\n\nconst keys = Object.keys ? obj => Object.keys(obj) : obj => {\n const result = [];\n each(obj, (value, key) => {\n if (!(isFunction(obj) && key === 'prototype')) {\n result.push(key);\n }\n });\n return result;\n};\n\nexport default keys;\n","import isArray from './is-array';\n\n/**\n * Flattens `array` a single level deep.\n *\n * @param {Array} arr The array to flatten.\n * @param {Array} result The array to return.\n * @return {Array} Returns the new flattened array.\n * @example\n *\n * flattenDeep([1, [2, [3, [4]], 5]]); // => [1, 2, 3, 4, 5]\n */\nconst flattenDeep = function(arr: any[], result: any[] = []): any[] {\n if (!isArray(arr)) {\n result.push(arr);\n } else {\n for (let i = 0; i < arr.length; i += 1) {\n flattenDeep(arr[i], result);\n }\n }\n return result;\n};\n\nexport default flattenDeep;\n","import each from './each';\nimport isArray from './is-array';\n\n/**\n * @param {Array} arr The array to iterate over.\n * @return {*} Returns the maximum value.\n * @example\n *\n * max([1, 2]);\n * // => 2\n *\n * max([]);\n * // => undefined\n *\n * const data = new Array(1250010).fill(1).map((d,idx) => idx);\n *\n * max(data);\n * // => 1250010\n * // Math.max(...data) will encounter \"Maximum call stack size exceeded\" error\n */\nexport default (arr: number[]): number | undefined => {\n if (!isArray(arr)) {\n return undefined;\n }\n return arr.reduce((prev, curr) => {\n return Math.max(prev, curr)\n }, arr[0]);\n};\n","import each from './each';\nimport isArray from './is-array';\n\n/**\n * @param {Array} arr The array to iterate over.\n * @return {*} Returns the minimum value.\n * @example\n *\n * min([1, 2]);\n * // => 1\n *\n * min([]);\n * // => undefined\n *\n * const data = new Array(1250010).fill(1).map((d,idx) => idx);\n *\n * min(data);\n * // => 1250010\n * // Math.min(...data) will encounter \"Maximum call stack size exceeded\" error\n */\nexport default (arr: number[]): number | undefined => {\n if (!isArray(arr)) {\n return undefined;\n }\n return arr.reduce((prev, curr) => {\n return Math.min(prev, curr)\n }, arr[0]);\n};\n","const arrPrototype = Array.prototype;\nconst splice = arrPrototype.splice;\nconst indexOf = arrPrototype.indexOf;\n\nconst pull = function(arr: T[], ...values: any[]): T[] {\n for (let i = 0; i < values.length; i++) {\n const value = values[i];\n let fromIndex = -1;\n while ((fromIndex = indexOf.call(arr, value)) > -1) {\n splice.call(arr, fromIndex, 1);\n }\n }\n return arr;\n};\n\nexport default pull;\n","import isArrayLike from './is-array-like';\n\nconst splice = Array.prototype.splice;\n\nconst pullAt = function pullAt (arr: T[], indexes: number[]): T[] {\n if (!isArrayLike(arr)) {\n return [];\n }\n let length = arr ? indexes.length : 0;\n const last = length - 1;\n\n while (length--) {\n let previous;\n const index = indexes[length];\n if (length === last || index !== previous) {\n previous = index;\n splice.call(arr, index, 1);\n }\n }\n return arr;\n};\n\nexport default pullAt;\n","import isArrayLike from './is-array-like';\nimport pullAt from './pull-at';\n\nconst remove = function(arr: T[], predicate: (value: T, idx: number, arr?: T[]) => boolean): T[] {\n /**\n * const arr = [1, 2, 3, 4]\n * const evens = remove(arr, n => n % 2 == 0)\n * console.log(arr) // => [1, 3]\n * console.log(evens) // => [2, 4]\n */\n const result = [];\n if (!isArrayLike(arr)) {\n return result;\n }\n let i = -1;\n const indexes = [];\n const length = arr.length;\n\n while (++i < length) {\n const value = arr[i];\n if (predicate(value, i, arr)) {\n result.push(value);\n indexes.push(i);\n }\n }\n pullAt(arr, indexes);\n return result;\n};\n\nexport default remove;\n","import isType from './is-type';\n\nexport default (str: any): str is string => {\n return isType(str, 'String');\n}\n","import isArray from './is-array';\nimport isFunction from './is-function';\n\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\n\nexport interface ObjectType {\n [key: string]: T[];\n}\n\nfunction groupBy(data: T[], condition: (item: T) => string): ObjectType;\nfunction groupBy(data: T[], condition: string): ObjectType;\nfunction groupBy(data: T[], condition: ((item: T) => string) | string): ObjectType {\n if (!condition || !isArray(data)) {\n return {};\n }\n const result: ObjectType = {};\n\n // 兼容方法和 字符串的写法\n const predicate = isFunction(condition) ? condition : (item) => item[condition];\n\n let key: string;\n for (let i = 0; i < data.length; i++) {\n const item = data[i];\n key = predicate(item);\n if (hasOwnProperty.call(result, key)) {\n result[key].push(item);\n } else {\n result[key] = [ item ];\n }\n }\n\n return result;\n}\n\nexport default groupBy;\n","/**\n * 判断是否数字\n * @return {Boolean} 是否数字\n */\nimport isType from './is-type';\n\nconst isNumber = function(value: any): value is number {\n return isType(value, 'Number');\n};\nexport default isNumber;\n","import isNumber from './is-number';\n\nconst isInteger = Number.isInteger ? Number.isInteger : function(num: any): boolean {\n return isNumber(num) && num % 1 === 0;\n};\n\nexport default isInteger;\n","const mod = function(n: number, m: number): number {\n return ((n % m) + m) % m;\n};\n\nexport default mod;\n","const DEGREE = 180 / Math.PI;\n\nconst toDegree = function(radian: number): number {\n return DEGREE * radian;\n};\n\nexport default toDegree;\n","const RADIAN = Math.PI / 180;\n\nconst toRadian = function(degree: number): number {\n return RADIAN * degree;\n};\n\nexport default toRadian;\n","import each from './each';\nimport isFunction from './is-function';\n\n// @ts-ignore\nconst values = Object.values ? obj => Object.values(obj) : obj => {\n const result = [];\n each(obj, (value, key) => {\n if (!(isFunction(obj) && key === 'prototype')) {\n result.push(value);\n }\n });\n return result;\n};\n\nexport default values;\n","// isFinite,\nconst isNil = function(value: any): value is null | undefined {\n /**\n * isNil(null) => true\n * isNil() => true\n */\n return value === null || value === undefined;\n};\n\nexport default isNil;\n","const objectProto = Object.prototype;\n\nconst isPrototype = function(value: any): boolean {\n const Ctor = value && value.constructor;\n const proto = (typeof Ctor === 'function' && Ctor.prototype) || objectProto;\n return value === proto;\n};\n\nexport default isPrototype;\n","import isNil from './is-nil';\nimport isArrayLike from './is-array-like';\nimport getType from './get-type';\nimport isPrototype from './is-prototype';\n\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction isEmpty(value: any): boolean {\n /**\n * isEmpty(null) => true\n * isEmpty() => true\n * isEmpty(true) => true\n * isEmpty(1) => true\n * isEmpty([1, 2, 3]) => false\n * isEmpty('abc') => false\n * isEmpty({ a: 1 }) => false\n */\n if (isNil(value)) {\n return true;\n }\n if (isArrayLike(value)) {\n return !value.length;\n }\n const type = getType(value);\n if (type === 'Map' || type === 'Set') {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !Object.keys(value).length;\n }\n for (const key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n\nexport default isEmpty;\n","import each from './each';\nimport isPlainObject from './is-plain-object';\n\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\n/**\n * Creates an object composed of the picked `object` properties.\n *\n * @param {Object} object The source object.\n * @param {...(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 * pick(object, ['a', 'c']); // => { 'a': 1, 'c': 3 }\n */\n\nexport interface ObjectType {\n [key: string]: T;\n}\n\nexport default (object: ObjectType, keys: string[]): ObjectType => {\n if (object === null || !isPlainObject(object)) {\n return {};\n }\n const result: ObjectType = {};\n each(keys, key => {\n if (hasOwnProperty.call(object, key)) {\n result[key] = object[key];\n }\n });\n return result;\n};\n","const isArrayLike = function(value: any): boolean {\n /**\n * isArrayLike([1, 2, 3]) => true\n * isArrayLike(document.body.children) => true\n * isArrayLike('abc') => true\n * isArrayLike(Function) => false\n */\n return value !== null && typeof value !== 'function' && isFinite(value.length);\n};\n\nexport default isArrayLike;\n","const map = {};\n\nexport default (prefix?: string): string => {\n prefix = prefix || 'g';\n if (!map[prefix]) {\n map[prefix] = 1;\n } else {\n map[prefix] += 1;\n }\n return prefix + map[prefix];\n};\n","import values from './values';\nimport memoize from './memoize';\nimport isString from './is-string';\nimport type { Properties } from 'csstype';\n\nexport type Font = Pick & {\n fontSize?: number;\n};\n\nlet ctx: CanvasRenderingContext2D;\n\n/**\n * 计算文本的宽度\n */\nexport default memoize(\n (text: any, font: Font = {}): number => {\n const { fontSize, fontFamily, fontWeight, fontStyle, fontVariant } = font;\n if (!ctx) {\n ctx = document.createElement('canvas').getContext('2d') as CanvasRenderingContext2D;\n }\n ctx!.font = [fontStyle, fontVariant, fontWeight, `${fontSize}px`, fontFamily].join(' ');\n return ctx!.measureText(isString(text) ? text : '').width;\n },\n (text: any, font: Font = {}) => [text, ...values(font)].join('')\n);\n","import isFunction from './is-function';\n\n/**\n * _.memoize(calColor);\n * _.memoize(calColor, (...args) => args[0]);\n * @param f\n * @param resolver\n */\nexport default (f: Function, resolver?: (...args: any[]) => string) => {\n if (!isFunction(f)) {\n throw new TypeError('Expected a function')\n }\n\n const memoized = function(...args) {\n // 使用方法构造 key,如果不存在 resolver,则直接取第一个参数作为 key\n const key = resolver ? resolver.apply(this, args) : args[0];\n const cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key)\n }\n const result = f.apply(this, args);\n // 缓存起来\n cache.set(key, result);\n return result\n };\n\n memoized.cache = new Map();\n\n return memoized\n}\n","/**\n * k-v 存储\n */\nexport default class {\n map: { [key: string]: T } = {};\n\n has(key: string): boolean {\n return this.map[key] !== undefined;\n }\n\n get(key: string, def?: T): T | undefined {\n const v = this.map[key];\n return v === undefined ? def : v;\n }\n\n set(key: string, value: T): void {\n this.map[key] = value;\n }\n\n clear() {\n this.map = {};\n }\n\n delete(key: string) {\n delete this.map[key];\n }\n\n size(): number {\n return Object.keys(this.map).length;\n }\n}\n","export const SHAPE_TO_TAGS = {\n rect: 'path',\n circle: 'circle',\n line: 'line',\n path: 'path',\n marker: 'path',\n text: 'text',\n polyline: 'polyline',\n polygon: 'polygon',\n image: 'image',\n ellipse: 'ellipse',\n dom: 'foreignObject',\n};\n\nexport const SVG_ATTR_MAP = {\n opacity: 'opacity',\n fillStyle: 'fill',\n fill: 'fill',\n fillOpacity: 'fill-opacity',\n strokeStyle: 'stroke',\n strokeOpacity: 'stroke-opacity',\n stroke: 'stroke',\n x: 'x',\n y: 'y',\n r: 'r',\n rx: 'rx',\n ry: 'ry',\n width: 'width',\n height: 'height',\n x1: 'x1',\n x2: 'x2',\n y1: 'y1',\n y2: 'y2',\n lineCap: 'stroke-linecap',\n lineJoin: 'stroke-linejoin',\n lineWidth: 'stroke-width',\n lineDash: 'stroke-dasharray',\n lineDashOffset: 'stroke-dashoffset',\n miterLimit: 'stroke-miterlimit',\n font: 'font',\n fontSize: 'font-size',\n fontStyle: 'font-style',\n fontVariant: 'font-variant',\n fontWeight: 'font-weight',\n fontFamily: 'font-family',\n startArrow: 'marker-start',\n endArrow: 'marker-end',\n path: 'd',\n class: 'class',\n id: 'id',\n style: 'style',\n preserveAspectRatio: 'preserveAspectRatio',\n};\n\nexport const EVENTS = [\n 'click',\n 'mousedown',\n 'mouseup',\n 'dblclick',\n 'contextmenu',\n 'mouseenter',\n 'mouseleave',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'wheel',\n];\n","import { toArray } from '@antv/util';\nimport { IShape, IGroup, IElement } from '../interfaces';\nimport { SHAPE_TO_TAGS } from '../constant';\n\n/**\n * 创建并返回图形的 svg 元素\n * @param type svg类型\n */\nexport function createSVGElement(type: string): SVGElement {\n return document.createElementNS('http://www.w3.org/2000/svg', type);\n}\n\n/**\n * 创建并返回图形的 dom 元素\n * @param {IShape} shape 图形\n * @return {SVGElement}\n */\nexport function createDom(shape: IShape) {\n const type = SHAPE_TO_TAGS[shape.type];\n const parent = shape.getParent();\n if (!type) {\n throw new Error(`the type ${shape.type} is not supported by svg`);\n }\n const element = createSVGElement(type);\n if (shape.get('id')) {\n element.id = shape.get('id');\n }\n shape.set('el', element);\n shape.set('attrs', {});\n // 对于 defs 下的 dom 节点,parent 为空,通过 context 统一挂载到 defs 节点下\n if (parent) {\n let parentNode = parent.get('el');\n if (parentNode) {\n parentNode.appendChild(element);\n } else {\n // parentNode maybe null for group\n parentNode = (parent as IGroup).createDom();\n parent.set('el', parentNode);\n parentNode.appendChild(element);\n }\n }\n return element;\n}\n\n/**\n * 对 dom 元素进行排序\n * @param {IElement} element 元素\n * @param {sorter} function 排序函数\n */\nexport function sortDom(element: IElement, sorter: (a: IElement, b: IElement) => number) {\n const el = element.get('el');\n const childList = toArray(el.children).sort(sorter);\n // create empty fragment\n const fragment = document.createDocumentFragment();\n childList.forEach((child) => {\n fragment.appendChild(child);\n });\n el.appendChild(fragment);\n}\n\n/**\n * 将 dom 元素移动到父元素下的指定位置\n * @param {SVGElement} element dom 元素\n * @param {number} targetIndex 目标位置(从 0 开始)\n */\nexport function moveTo(element: SVGElement, targetIndex: number) {\n const parentNode = element.parentNode;\n const siblings = Array.from(parentNode.childNodes).filter(\n // 要求为元素节点,且不能为 defs 节点\n (node: Node) => node.nodeType === 1 && node.nodeName.toLowerCase() !== 'defs'\n );\n // 获取目标节点\n const target = siblings[targetIndex];\n const currentIndex = siblings.indexOf(element);\n // 如果目标节点存在\n if (target) {\n // 当前索引 > 目标索引,直接插入到目标节点之前即可\n if (currentIndex > targetIndex) {\n parentNode.insertBefore(element, target);\n } else if (currentIndex < targetIndex) {\n // 当前索引 < 目标索引\n // 获取目标节点的下一个节点\n const targetNext = siblings[targetIndex + 1];\n // 如果目标节点的下一个节点存在,插入到该节点之前\n if (targetNext) {\n parentNode.insertBefore(element, targetNext);\n } else {\n // 如果该节点不存在,则追加到末尾\n parentNode.appendChild(element);\n }\n }\n } else {\n parentNode.appendChild(element);\n }\n}\n","import isArrayLike from './is-array-like';\n\nexport default (value: any): any[] => {\n return isArrayLike(value) ? Array.prototype.slice.call(value) : [];\n}\n","import { createDom } from './dom';\n\nexport function setShadow(model, context) {\n const el = model.cfg.el;\n const attrs = model.attr();\n const cfg = {\n dx: attrs.shadowOffsetX,\n dy: attrs.shadowOffsetY,\n blur: attrs.shadowBlur,\n color: attrs.shadowColor,\n };\n if (!cfg.dx && !cfg.dy && !cfg.blur && !cfg.color) {\n el.removeAttribute('filter');\n } else {\n let id = context.find('filter', cfg);\n if (!id) {\n id = context.addShadow(cfg);\n }\n el.setAttribute('filter', `url(#${id})`);\n }\n}\n\nexport function setTransform(model) {\n const { matrix } = model.attr();\n if (matrix) {\n const el = model.cfg.el;\n let transform: any = [];\n for (let i = 0; i < 9; i += 3) {\n transform.push(`${matrix[i]},${matrix[i + 1]}`);\n }\n transform = transform.join(',');\n if (transform.indexOf('NaN') === -1) {\n el.setAttribute('transform', `matrix(${transform})`);\n } else {\n console.warn('invalid matrix:', matrix);\n }\n }\n}\n\nexport function setClip(model, context) {\n const clip = model.getClip();\n const el = model.get('el');\n if (!clip) {\n el.removeAttribute('clip-path');\n } else if (clip && !el.hasAttribute('clip-path')) {\n createDom(clip);\n clip.createPath(context);\n const id = context.addClip(clip);\n el.setAttribute('clip-path', `url(#${id})`);\n }\n}\n","import { ChangeType } from '@antv/g-base';\nimport { IElement } from '../interfaces';\nimport { setTransform, setClip } from './svg';\nimport { sortDom, moveTo } from './dom';\nimport Defs from '../defs';\n\nexport function drawChildren(context: Defs, children: IElement[]) {\n children.forEach((child) => {\n child.draw(context);\n });\n}\n\n/**\n * 更新元素,包括 group 和 shape\n * @param {IElement} element SVG 元素\n * @param {ChangeType} changeType 更新类型\n */\nexport function refreshElement(element: IElement, changeType: ChangeType) {\n // 对于还没有挂载到画布下的元素,canvas 可能为空\n const canvas = element.get('canvas');\n // 只有挂载到画布下,才对元素进行实际渲染\n if (canvas && canvas.get('autoDraw')) {\n const context = canvas.get('context');\n const parent = element.getParent();\n const parentChildren = parent ? parent.getChildren() : [canvas];\n const el = element.get('el');\n if (changeType === 'remove') {\n const isClipShape = element.get('isClipShape');\n // 对于 clip,不仅需要将 clipShape 对于的 SVG 元素删除,还需要将上层的 clipPath 元素也删除\n if (isClipShape) {\n const clipPathEl = el && el.parentNode;\n const defsEl = clipPathEl && clipPathEl.parentNode;\n if (clipPathEl && defsEl) {\n defsEl.removeChild(clipPathEl);\n }\n } else if (el && el.parentNode) {\n el.parentNode.removeChild(el);\n }\n } else if (changeType === 'show') {\n el.setAttribute('visibility', 'visible');\n } else if (changeType === 'hide') {\n el.setAttribute('visibility', 'hidden');\n } else if (changeType === 'zIndex') {\n moveTo(el, parentChildren.indexOf(element));\n } else if (changeType === 'sort') {\n const children = element.get('children');\n if (children && children.length) {\n sortDom(element, (a: IElement, b: IElement) => {\n return children.indexOf(a) - children.indexOf(b) ? 1 : 0;\n });\n }\n } else if (changeType === 'clear') {\n // el maybe null for group\n if (el) {\n el.innerHTML = '';\n }\n } else if (changeType === 'matrix') {\n setTransform(element);\n } else if (changeType === 'clip') {\n setClip(element, context);\n } else if (changeType === 'attr') {\n // 已在 afterAttrsChange 进行了处理,此处 do nothing\n } else if (changeType === 'add') {\n element.draw(context);\n }\n }\n}\n","import { AbstractGroup } from '@antv/g-base';\nimport { ChangeType } from '@antv/g-base';\nimport { each } from '@antv/util';\nimport { IElement, IGroup } from './interfaces';\nimport * as Shape from './shape';\nimport Defs from './defs';\nimport { drawChildren, refreshElement } from './util/draw';\nimport { setClip, setTransform } from './util/svg';\nimport { SVG_ATTR_MAP } from './constant';\nimport { createSVGElement } from './util/dom';\n\nclass Group extends AbstractGroup {\n // SVG 中分组对应实体标签 \n isEntityGroup() {\n return true;\n }\n\n createDom() {\n const element = createSVGElement('g');\n this.set('el', element);\n const parent = this.getParent();\n if (parent) {\n let parentNode = parent.get('el');\n if (parentNode) {\n parentNode.appendChild(element);\n } else {\n // parentNode maybe null for group\n parentNode = (parent as IGroup).createDom();\n parent.set('el', parentNode);\n parentNode.appendChild(element);\n }\n }\n return element;\n }\n\n // 覆盖基类的 afterAttrsChange 方法\n afterAttrsChange(targetAttrs) {\n super.afterAttrsChange(targetAttrs);\n const canvas = this.get('canvas');\n // 只有挂载到画布下,才对元素进行实际渲染\n if (canvas && canvas.get('autoDraw')) {\n const context = canvas.get('context');\n this.createPath(context, targetAttrs);\n }\n }\n\n /**\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n onCanvasChange(changeType: ChangeType) {\n refreshElement(this, changeType);\n }\n\n getShapeBase() {\n return Shape;\n }\n\n getGroupBase() {\n return Group;\n }\n\n draw(context: Defs) {\n const children = this.getChildren() as IElement[];\n const el = this.get('el');\n if (this.get('destroyed')) {\n if (el) {\n el.parentNode.removeChild(el);\n }\n } else {\n if (!el) {\n this.createDom();\n }\n setClip(this, context);\n this.createPath(context);\n if (children.length) {\n drawChildren(context, children);\n }\n }\n }\n\n /**\n * 绘制分组的路径\n * @param {Defs} context 上下文\n * @param {ShapeAttrs} targetAttrs 渲染的目标属性\n */\n createPath(context: Defs, targetAttrs?) {\n const attrs = this.attr();\n const el = this.get('el');\n each(targetAttrs || attrs, (value, attr) => {\n if (SVG_ATTR_MAP[attr]) {\n el.setAttribute(SVG_ATTR_MAP[attr], value);\n }\n });\n setTransform(this);\n }\n}\n\nexport default Group;\n","import { AbstractShape } from '@antv/g-base';\nimport { ShapeAttrs, ChangeType, BBox } from '@antv/g-base';\nimport { IShape } from '../interfaces';\nimport Defs from '../defs';\nimport { setShadow, setTransform, setClip } from '../util/svg';\nimport { createDom } from '../util/dom';\nimport { refreshElement } from '../util/draw';\nimport { SVG_ATTR_MAP } from '../constant';\nimport * as Shape from './index';\nimport Group from '../group';\nimport { getBBoxMethod } from '@antv/g-base';\n\nclass ShapeBase extends AbstractShape implements IShape {\n type: string = 'svg';\n canFill: boolean = false;\n canStroke: boolean = false;\n\n getDefaultAttrs() {\n const attrs = super.getDefaultAttrs();\n // 设置默认值\n return {\n ...attrs,\n lineWidth: 1,\n lineAppendWidth: 0,\n strokeOpacity: 1,\n fillOpacity: 1,\n };\n }\n\n // 覆盖基类的 afterAttrsChange 方法\n afterAttrsChange(targetAttrs: ShapeAttrs) {\n super.afterAttrsChange(targetAttrs);\n const canvas = this.get('canvas');\n // 只有挂载到画布下,才对元素进行实际渲染\n if (canvas && canvas.get('autoDraw')) {\n const context = canvas.get('context');\n this.draw(context, targetAttrs);\n }\n }\n\n getShapeBase() {\n return Shape;\n }\n\n getGroupBase() {\n return Group;\n }\n\n /**\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n onCanvasChange(changeType: ChangeType) {\n refreshElement(this, changeType);\n }\n\n calculateBBox(): BBox {\n const el = this.get('el');\n let bbox = null;\n // 包围盒计算依赖于绘制,如果还没有生成对应的 Dom 元素,则包围盒的长宽均为 0\n if (el) {\n bbox = el.getBBox();\n } else {\n const bboxMethod = getBBoxMethod(this.get('type'));\n if (bboxMethod) {\n bbox = bboxMethod(this);\n }\n }\n if (bbox) {\n const { x, y, width, height } = bbox;\n const lineWidth = this.getHitLineWidth();\n const halfWidth = lineWidth / 2;\n const minX = x - halfWidth;\n const minY = y - halfWidth;\n const maxX = x + width + halfWidth;\n const maxY = y + height + halfWidth;\n return {\n x: minX,\n y: minY,\n minX,\n minY,\n maxX,\n maxY,\n width: width + lineWidth,\n height: height + lineWidth,\n };\n }\n return {\n x: 0,\n y: 0,\n minX: 0,\n minY: 0,\n maxX: 0,\n maxY: 0,\n width: 0,\n height: 0,\n };\n }\n\n isFill() {\n const { fill, fillStyle } = this.attr();\n return (fill || fillStyle || this.isClipShape()) && this.canFill;\n }\n\n isStroke() {\n const { stroke, strokeStyle } = this.attr();\n return (stroke || strokeStyle) && this.canStroke;\n }\n\n draw(context, targetAttrs) {\n const el = this.get('el');\n if (this.get('destroyed')) {\n if (el) {\n el.parentNode.removeChild(el);\n }\n } else {\n if (!el) {\n createDom(this);\n }\n setClip(this, context);\n this.createPath(context, targetAttrs);\n this.shadow(context, targetAttrs);\n this.strokeAndFill(context, targetAttrs);\n this.transform(targetAttrs);\n }\n }\n\n /**\n * @protected\n * 绘制图形的路径\n * @param {Defs} context 上下文\n * @param {ShapeAttrs} targetAttrs 渲染的目标属性\n */\n createPath(context: Defs, targetAttrs?: ShapeAttrs) {}\n\n // stroke and fill\n strokeAndFill(context, targetAttrs?) {\n const attrs = targetAttrs || this.attr();\n const { fill, fillStyle, stroke, strokeStyle, fillOpacity, strokeOpacity, lineWidth } = attrs;\n const el = this.get('el');\n\n if (this.canFill) {\n // 初次渲染和更新渲染的逻辑有所不同: 初次渲染值为空时,需要设置为 none,否则就会是黑色,而更新渲染则不需要\n if (!targetAttrs) {\n this._setColor(context, 'fill', fill || fillStyle);\n } else if ('fill' in attrs) {\n this._setColor(context, 'fill', fill);\n } else if ('fillStyle' in attrs) {\n // compatible with fillStyle\n this._setColor(context, 'fill', fillStyle);\n }\n if (fillOpacity) {\n el.setAttribute(SVG_ATTR_MAP['fillOpacity'], fillOpacity);\n }\n }\n\n if (this.canStroke && lineWidth > 0) {\n if (!targetAttrs) {\n this._setColor(context, 'stroke', stroke || strokeStyle);\n } else if ('stroke' in attrs) {\n this._setColor(context, 'stroke', stroke);\n } else if ('strokeStyle' in attrs) {\n // compatible with strokeStyle\n this._setColor(context, 'stroke', strokeStyle);\n }\n if (strokeOpacity) {\n el.setAttribute(SVG_ATTR_MAP['strokeOpacity'], strokeOpacity);\n }\n if (lineWidth) {\n el.setAttribute(SVG_ATTR_MAP['lineWidth'], lineWidth);\n }\n }\n }\n\n _setColor(context, attr, value) {\n const el = this.get('el');\n if (!value) {\n // need to set `none` to avoid default value\n el.setAttribute(SVG_ATTR_MAP[attr], 'none');\n return;\n }\n value = value.trim();\n if (/^[r,R,L,l]{1}[\\s]*\\(/.test(value)) {\n let id = context.find('gradient', value);\n if (!id) {\n id = context.addGradient(value);\n }\n el.setAttribute(SVG_ATTR_MAP[attr], `url(#${id})`);\n } else if (/^[p,P]{1}[\\s]*\\(/.test(value)) {\n let id = context.find('pattern', value);\n if (!id) {\n id = context.addPattern(value);\n }\n el.setAttribute(SVG_ATTR_MAP[attr], `url(#${id})`);\n } else {\n el.setAttribute(SVG_ATTR_MAP[attr], value);\n }\n }\n\n shadow(context, targetAttrs?) {\n const attrs = this.attr();\n const { shadowOffsetX, shadowOffsetY, shadowBlur, shadowColor } = targetAttrs || attrs;\n if (shadowOffsetX || shadowOffsetY || shadowBlur || shadowColor) {\n setShadow(this, context);\n }\n }\n\n transform(targetAttrs?) {\n const attrs = this.attr();\n const { matrix } = targetAttrs || attrs;\n if (matrix) {\n setTransform(this);\n }\n }\n\n isInShape(refX: number, refY: number): boolean {\n return this.isPointInPath(refX, refY);\n }\n\n isPointInPath(refX: number, refY: number): boolean {\n const el = this.get('el');\n const canvas = this.get('canvas');\n const bbox = canvas.get('el').getBoundingClientRect();\n const clientX = refX + bbox.left;\n const clientY = refY + bbox.top;\n const element = document.elementFromPoint(clientX, clientY);\n if (element && element.isEqualNode(el)) {\n return true;\n }\n return false;\n }\n\n /**\n * 获取线拾取的宽度\n * @returns {number} 线的拾取宽度\n */\n getHitLineWidth() {\n const { lineWidth, lineAppendWidth } = this.attrs;\n if (this.isStroke()) {\n return lineWidth + lineAppendWidth;\n }\n return 0;\n }\n}\n\nexport default ShapeBase;\n","/**\n * @fileoverview circle\n * @author dengfuping_develop@163.com\n */\n\nimport { each } from '@antv/util';\nimport { SVG_ATTR_MAP } from '../constant';\nimport ShapeBase from './base';\n\nclass Circle extends ShapeBase {\n type: string = 'circle';\n canFill: boolean = true;\n canStroke: boolean = true;\n\n getDefaultAttrs() {\n const attrs = super.getDefaultAttrs();\n return {\n ...attrs,\n x: 0,\n y: 0,\n r: 0,\n };\n }\n\n createPath(context, targetAttrs) {\n const attrs = this.attr();\n const el = this.get('el');\n each(targetAttrs || attrs, (value, attr) => {\n // 圆和椭圆的点坐标属性不是 x, y,而是 cx, cy\n if (attr === 'x' || attr === 'y') {\n el.setAttribute(`c${attr}`, value);\n } else if (SVG_ATTR_MAP[attr]) {\n el.setAttribute(SVG_ATTR_MAP[attr], value);\n }\n });\n }\n}\n\nexport default Circle;\n","/**\n * @fileoverview dom\n * @author dengfuping_develop@163.com\n */\n\nimport { each } from '@antv/util';\nimport { SVG_ATTR_MAP } from '../constant';\nimport ShapeBase from './base';\n\nclass Dom extends ShapeBase {\n type: string = 'dom';\n canFill: boolean = false;\n canStroke: boolean = false;\n\n createPath(context, targetAttrs) {\n const attrs = this.attr();\n const el = this.get('el');\n each(targetAttrs || attrs, (value, attr) => {\n if (SVG_ATTR_MAP[attr]) {\n el.setAttribute(SVG_ATTR_MAP[attr], value);\n }\n });\n if (typeof attrs['html'] === 'function') {\n const element = attrs['html'].call(this, attrs);\n if (element instanceof Element || element instanceof HTMLDocument) {\n const children = el.childNodes;\n for (let i = children.length - 1; i >= 0; i--) {\n el.removeChild(children[i]);\n }\n el.appendChild(element); // append to el if it's an element\n } else {\n el.innerHTML = element; // set innerHTML\n }\n } else {\n el.innerHTML = attrs['html']; // set innerHTML\n }\n }\n}\n\nexport default Dom;\n","/**\n * @fileoverview ellipse\n * @author dengfuping_develop@163.com\n */\n\nimport { each } from '@antv/util';\nimport { SVG_ATTR_MAP } from '../constant';\nimport ShapeBase from './base';\n\nclass Ellipse extends ShapeBase {\n type: string = 'ellipse';\n canFill: boolean = true;\n canStroke: boolean = true;\n\n getDefaultAttrs() {\n const attrs = super.getDefaultAttrs();\n return {\n ...attrs,\n x: 0,\n y: 0,\n rx: 0,\n ry: 0,\n };\n }\n\n createPath(context, targetAttrs) {\n const attrs = this.attr();\n const el = this.get('el');\n each(targetAttrs || attrs, (value, attr) => {\n // 圆和椭圆的点坐标属性不是 x, y,而是 cx, cy\n if (attr === 'x' || attr === 'y') {\n el.setAttribute(`c${attr}`, value);\n } else if (SVG_ATTR_MAP[attr]) {\n el.setAttribute(SVG_ATTR_MAP[attr], value);\n }\n });\n }\n}\n\nexport default Ellipse;\n","/**\n * @fileoverview image\n * @author dengfuping_develop@163.com\n */\n\nimport { each, isString } from '@antv/util';\nimport { SVG_ATTR_MAP } from '../constant';\nimport ShapeBase from './base';\n\nclass Image extends ShapeBase {\n type: string = 'image';\n canFill: boolean = false;\n canStroke: boolean = false;\n\n getDefaultAttrs() {\n const attrs = super.getDefaultAttrs();\n return {\n ...attrs,\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n };\n }\n\n createPath(context, targetAttrs) {\n const attrs = this.attr();\n const el = this.get('el');\n each(targetAttrs || attrs, (value, attr) => {\n if (attr === 'img') {\n this._setImage(attrs.img);\n } else if (SVG_ATTR_MAP[attr]) {\n el.setAttribute(SVG_ATTR_MAP[attr], value);\n }\n });\n }\n\n setAttr(name: string, value: any) {\n this.attrs[name] = value;\n if (name === 'img') {\n this._setImage(value);\n }\n }\n\n _setImage(img) {\n const attrs = this.attr();\n const el = this.get('el');\n if (isString(img)) {\n el.setAttribute('href', img);\n } else if (img instanceof (window as any).Image) {\n if (!attrs.width) {\n el.setAttribute('width', img.width);\n this.attr('width', img.width);\n }\n if (!attrs.height) {\n el.setAttribute('height', img.height);\n this.attr('height', img.height);\n }\n el.setAttribute('href', img.src);\n } else if (img instanceof HTMLElement && isString(img.nodeName) && img.nodeName.toUpperCase() === 'CANVAS') {\n // @ts-ignore\n el.setAttribute('href', img.toDataURL());\n } else if (img instanceof ImageData) {\n const canvas = document.createElement('canvas');\n canvas.setAttribute('width', `${img.width}`);\n canvas.setAttribute('height', `${img.height}`);\n canvas.getContext('2d').putImageData(img, 0, 0);\n if (!attrs.width) {\n el.setAttribute('width', `${img.width}`);\n this.attr('width', img.width);\n }\n if (!attrs.height) {\n el.setAttribute('height', `${img.height}`);\n this.attr('height', img.height);\n }\n el.setAttribute('href', canvas.toDataURL());\n }\n }\n}\n\nexport default Image;\n","import { max, min } from '@antv/util';\nimport { BBox } from './types';\n\n/**\n * 两点之间的距离\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @return {number} 距离\n */\nexport function distance(x1: number, y1: number, x2: number, y2: number) {\n const dx = x1 - x2;\n const dy = y1 - y2;\n return Math.sqrt(dx * dx + dy * dy);\n}\n\nexport function isNumberEqual(v1: number, v2: number) {\n return Math.abs(v1 - v2) < 0.001;\n}\n\nexport function getBBoxByArray(xArr: number[], yArr: number[]): BBox {\n const minX = min(xArr);\n const minY = min(yArr);\n const maxX = max(xArr);\n const maxY = max(yArr);\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n}\n\nexport function getBBoxRange(x1: number, y1: number, x2: number, y2: number) {\n return {\n minX: min([x1, x2]),\n maxX: max([x1, x2]),\n minY: min([y1, y2]),\n maxY: max([y1, y2]),\n };\n}\n\nexport function piMod(angle: number) {\n return (angle + Math.PI * 2) % (Math.PI * 2);\n}\n","import { distance, getBBoxByArray } from './util';\nimport * as vec2 from 'gl-matrix/vec2';\nimport { BBox, Point } from './types';\n\nexport default {\n /**\n * 计算线段的包围盒\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @return {object} 包围盒对象\n */\n box(x1: number, y1: number, x2: number, y2: number): BBox {\n return getBBoxByArray([x1, x2], [y1, y2]);\n },\n /**\n * 线段的长度\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @return {number} 距离\n */\n length(x1: number, y1: number, x2: number, y2: number) {\n return distance(x1, y1, x2, y2);\n },\n /**\n * 根据比例获取点\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @param {number} t 指定比例\n * @return {object} 包含 x, y 的点\n */\n pointAt(x1: number, y1: number, x2: number, y2: number, t: number): Point {\n return {\n x: (1 - t) * x1 + t * x2,\n y: (1 - t) * y1 + t * y2,\n };\n },\n /**\n * 点到线段的距离\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @param {number} x 测试点 x\n * @param {number} y 测试点 y\n * @return {number} 距离\n */\n pointDistance(x1: number, y1: number, x2: number, y2: number, x: number, y: number): number {\n // 投影距离 x1, y1 的向量,假设 p, p1, p2 三个点,投影点为 a\n // p1a = p1p.p1p2/|p1p2| * (p1p 的单位向量)\n const cross = (x2 - x1) * (x - x1) + (y2 - y1) * (y - y1);\n if (cross < 0) {\n return distance(x1, y1, x, y);\n }\n const lengthSquare = (x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1);\n if (cross > lengthSquare) {\n return distance(x2, y2, x, y);\n }\n return this.pointToLine(x1, y1, x2, y2, x, y);\n },\n /**\n * 点到直线的距离,而不是点到线段的距离\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @param {number} x 测试点 x\n * @param {number} y 测试点 y\n * @return {number} 距离\n */\n pointToLine(x1: number, y1: number, x2: number, y2: number, x: number, y: number) {\n const d = [x2 - x1, y2 - y1];\n // 如果端点相等,则判定点到点的距离\n if (vec2.exactEquals(d, [0, 0])) {\n return Math.sqrt((x - x1) * (x - x1) + (y - y1) * (y - y1));\n }\n const u = [-d[1], d[0]];\n vec2.normalize(u, u);\n const a = [x - x1, y - y1];\n return Math.abs(vec2.dot(a, u));\n },\n /**\n * 线段的角度\n * @param {number} x1 起始点 x\n * @param {number} y1 起始点 y\n * @param {number} x2 结束点 x\n * @param {number} y2 结束点 y\n * @return {number} 导数\n */\n tangentAngle(x1: number, y1: number, x2: number, y2: number) {\n return Math.atan2(y2 - y1, x2 - x1);\n },\n};\n","import line from './line';\nimport { distance } from './util';\nimport { Point, PointTuple, Segment } from './types';\n\nfunction analyzePoints(points: PointTuple[]) {\n // 计算每段的长度和总的长度\n let totalLength = 0;\n const segments: Segment[] = [];\n for (let i = 0; i < points.length - 1; i++) {\n const from = points[i];\n const to = points[i + 1];\n const length = distance(from[0], from[1], to[0], to[1]);\n const seg = {\n from,\n to,\n length,\n };\n segments.push(seg);\n totalLength += length;\n }\n return { segments, totalLength };\n}\n\nexport function lengthOfSegment(points: PointTuple[]) {\n if (points.length < 2) {\n return 0;\n }\n let totalLength = 0;\n for (let i = 0; i < points.length - 1; i++) {\n const from = points[i];\n const to = points[i + 1];\n totalLength += distance(from[0], from[1], to[0], to[1]);\n }\n return totalLength;\n}\n\n/**\n * 按照比例在数据片段中获取点\n * @param {array} points 点的集合\n * @param {number} t 百分比 0-1\n * @return {object} 点的坐标\n */\nexport function pointAtSegments(points: PointTuple[], t: number): Point {\n // 边界判断\n if (t > 1 || t < 0 || points.length < 2) {\n return null;\n }\n const { segments, totalLength } = analyzePoints(points);\n // 多个点有可能重合\n if (totalLength === 0) {\n return {\n x: points[0][0],\n y: points[0][1],\n };\n }\n // 计算比例\n let startRatio = 0;\n let point = null;\n for (let i = 0; i < segments.length; i++) {\n const seg = segments[i];\n const { from, to } = seg;\n const currentRatio = seg.length / totalLength;\n if (t >= startRatio && t <= startRatio + currentRatio) {\n const localRatio = (t - startRatio) / currentRatio;\n point = line.pointAt(from[0], from[1], to[0], to[1], localRatio);\n break;\n }\n startRatio += currentRatio;\n }\n return point;\n}\n\n/**\n * 按照比例在数据片段中获取切线的角度\n * @param {array} points 点的集合\n * @param {number} t 百分比 0-1\n */\nexport function angleAtSegments(points: PointTuple[], t: number) {\n // 边界判断\n if (t > 1 || t < 0 || points.length < 2) {\n return 0;\n }\n const { segments, totalLength } = analyzePoints(points);\n // 计算比例\n let startRatio = 0;\n let angle = 0;\n for (let i = 0; i < segments.length; i++) {\n const seg = segments[i];\n const { from, to } = seg;\n const currentRatio = seg.length / totalLength;\n if (t >= startRatio && t <= startRatio + currentRatio) {\n angle = Math.atan2(to[1] - from[1], to[0] - from[0]);\n break;\n }\n startRatio += currentRatio;\n }\n return angle;\n}\n\nexport function distanceAtSegment(points: PointTuple[], x: number, y: number) {\n let minDistance = Infinity;\n for (let i = 0; i < points.length - 1; i++) {\n const point = points[i];\n const nextPoint = points[i + 1];\n const distance = line.pointDistance(point[0], point[1], nextPoint[0], nextPoint[1], x, y);\n if (distance < minDistance) {\n minDistance = distance;\n }\n }\n return minDistance;\n}\n","import { pointAtSegments, angleAtSegments, distanceAtSegment, lengthOfSegment } from './segments';\nimport { getBBoxByArray } from './util';\nimport { PointTuple, BBox } from './types';\n\nexport default {\n /**\n * 计算多折线的包围盒\n * @param {array} points 点的集合 [x,y] 的形式\n * @return {object} 包围盒\n */\n box(points: PointTuple[]): BBox {\n const xArr = [];\n const yArr = [];\n for (let i = 0; i < points.length; i++) {\n const point = points[i];\n xArr.push(point[0]);\n yArr.push(point[1]);\n }\n return getBBoxByArray(xArr, yArr);\n },\n /**\n * 计算多折线的长度\n * @param {array} points 点的集合 [x,y] 的形式\n * @return {object} 多条边的长度\n */\n length(points: PointTuple[]) {\n return lengthOfSegment(points);\n },\n /**\n * 根据比例获取多折线的点\n * @param {array} points 点的集合 [x,y] 的形式\n * @param {number} t 在多折线的长度上的比例\n * @return {object} 根据比例值计算出来的点\n */\n pointAt(points: PointTuple[], t: number) {\n return pointAtSegments(points, t);\n },\n /**\n * 指定点到多折线的距离\n * @param {array} points 点的集合 [x,y] 的形式\n * @param {number} x 指定点的 x\n * @param {number} y 指定点的 y\n * @return {number} 点到多折线的距离\n */\n pointDistance(points: PointTuple[], x: number, y: number) {\n return distanceAtSegment(points, x, y);\n },\n /**\n * 根据比例获取多折线的切线角度\n * @param {array} points 点的集合 [x,y] 的形式\n * @param {number} t 在多折线的长度上的比例\n * @return {object} 根据比例值计算出来的角度\n */\n tangentAngle(points: PointTuple[], t: number) {\n return angleAtSegments(points, t);\n },\n};\n","/**\n * @fileoverview line\n * @author dengfuping_develop@163.com\n */\nimport { Line as LineUtil } from '@antv/g-math';\nimport { each, isObject } from '@antv/util';\nimport { SVG_ATTR_MAP } from '../constant';\nimport ShapeBase from './base';\n\nclass Line extends ShapeBase {\n type: string = 'line';\n canFill: boolean = false;\n canStroke: boolean = true;\n\n getDefaultAttrs() {\n const attrs = super.getDefaultAttrs();\n return {\n ...attrs,\n x1: 0,\n y1: 0,\n x2: 0,\n y2: 0,\n startArrow: false,\n endArrow: false,\n };\n }\n\n createPath(context, targetAttrs) {\n const attrs = this.attr();\n const el = this.get('el');\n each(targetAttrs || attrs, (value, attr) => {\n if (attr === 'startArrow' || attr === 'endArrow') {\n if (value) {\n const id = isObject(value)\n ? context.addArrow(attrs, SVG_ATTR_MAP[attr])\n : context.getDefaultArrow(attrs, SVG_ATTR_MAP[attr]);\n el.setAttribute(SVG_ATTR_MAP[attr], `url(#${id})`);\n } else {\n el.removeAttribute(SVG_ATTR_MAP[attr]);\n }\n } else if (SVG_ATTR_MAP[attr]) {\n el.setAttribute(SVG_ATTR_MAP[attr], value);\n }\n });\n }\n\n /**\n * Use math calculation to get length of line\n * @return {number} length\n */\n getTotalLength() {\n const { x1, y1, x2, y2 } = this.attr();\n return LineUtil.length(x1, y1, x2, y2);\n }\n\n /**\n * Use math calculation to get point according to ratio as same sa Canvas version\n * @param {number} ratio\n * @return {Point} point\n */\n getPoint(ratio: number) {\n const { x1, y1, x2, y2 } = this.attr();\n return LineUtil.pointAt(x1, y1, x2, y2, ratio);\n }\n}\n\nexport default Line;\n","const Symbols = {\n // 圆\n circle(x: number, y: number, r: number): any[] {\n return [\n ['M', x, y],\n ['m', -r, 0],\n ['a', r, r, 0, 1, 0, r * 2, 0],\n ['a', r, r, 0, 1, 0, -r * 2, 0],\n ];\n },\n // 正方形\n square(x: number, y: number, r: number): any[] {\n return [['M', x - r, y - r], ['L', x + r, y - r], ['L', x + r, y + r], ['L', x - r, y + r], ['Z']];\n },\n // 菱形\n diamond(x: number, y: number, r: number): any[] {\n return [['M', x - r, y], ['L', x, y - r], ['L', x + r, y], ['L', x, y + r], ['Z']];\n },\n // 三角形\n triangle(x: number, y: number, r: number): any[] {\n const diffY = r * Math.sin((1 / 3) * Math.PI);\n return [['M', x - r, y + diffY], ['L', x, y - diffY], ['L', x + r, y + diffY], ['z']];\n },\n // 倒三角形\n triangleDown(x: number, y: number, r: number): any[] {\n const diffY = r * Math.sin((1 / 3) * Math.PI);\n return [['M', x - r, y - diffY], ['L', x + r, y - diffY], ['L', x, y + diffY], ['Z']];\n },\n};\n\nexport type SymbolFunc = (x: number, y: number, r: number) => any[];\n\nexport default {\n get(type: string): SymbolFunc {\n return Symbols[type];\n },\n\n register(type: string, func: SymbolFunc) {\n Symbols[type] = func;\n },\n\n remove(type: string) {\n delete Symbols[type];\n },\n\n getAll() {\n return Symbols;\n },\n};\n","/**\n * @fileoverview marker\n * @author dengfuping_develop@163.com\n */\n\nimport { isArray, isFunction } from '@antv/util';\nimport ShapeBase from '../base';\nimport symbolsFactory from './symbols';\n\nclass Marker extends ShapeBase {\n type: string = 'marker';\n canFill: boolean = true;\n canStroke: boolean = true;\n\n // 作为其静态属性\n public static symbolsFactory = symbolsFactory;\n\n createPath(context) {\n const el = this.get('el');\n el.setAttribute('d', this._assembleMarker());\n }\n\n _assembleMarker() {\n const d = this._getPath();\n if (isArray(d)) {\n return d\n .map((path) => {\n return path.join(' ');\n })\n .join('');\n }\n return d;\n }\n\n _getPath(): any[] {\n const attrs = this.attr();\n const { x, y } = attrs;\n // 兼容 r 和 radius 两种写法,推荐使用 r\n const r = attrs.r || attrs.radius;\n const symbol = attrs.symbol || 'circle';\n let method;\n if (isFunction(symbol)) {\n method = symbol;\n } else {\n method = symbolsFactory.get(symbol);\n }\n\n if (!method) {\n console.warn(`${method} symbol is not exist.`);\n return null;\n }\n return method(x, y, r);\n }\n}\n\nexport default Marker;\n","/**\n * @fileoverview path\n * @author dengfuping_develop@163.com\n */\nimport { Point } from '@antv/g-base';\nimport { each, isArray, isObject } from '@antv/util';\nimport { SVG_ATTR_MAP } from '../constant';\nimport ShapeBase from './base';\n\nclass Path extends ShapeBase {\n type: string = 'path';\n canFill: boolean = true;\n canStroke: boolean = true;\n\n getDefaultAttrs() {\n const attrs = super.getDefaultAttrs();\n return {\n ...attrs,\n startArrow: false,\n endArrow: false,\n };\n }\n\n createPath(context, targetAttrs) {\n const attrs = this.attr();\n const el = this.get('el');\n each(targetAttrs || attrs, (value, attr) => {\n if (attr === 'path' && isArray(value)) {\n el.setAttribute('d', this._formatPath(value));\n } else if (attr === 'startArrow' || attr === 'endArrow') {\n if (value) {\n const id = isObject(value)\n ? context.addArrow(attrs, SVG_ATTR_MAP[attr])\n : context.getDefaultArrow(attrs, SVG_ATTR_MAP[attr]);\n el.setAttribute(SVG_ATTR_MAP[attr], `url(#${id})`);\n } else {\n el.removeAttribute(SVG_ATTR_MAP[attr]);\n }\n } else if (SVG_ATTR_MAP[attr]) {\n el.setAttribute(SVG_ATTR_MAP[attr], value);\n }\n });\n }\n\n _formatPath(value) {\n const newValue = value\n .map((path) => {\n return path.join(' ');\n })\n .join('');\n if (~newValue.indexOf('NaN')) {\n return '';\n }\n return newValue;\n }\n\n /**\n * Get total length of path\n * 尽管通过浏览器的 SVGPathElement.getTotalLength() 接口获取的 path 长度,\n * 与 Canvas 版本通过数学计算的方式得到的长度有一些细微差异,但最大误差在个位数像素,精度上可以能接受\n * @return {number} length\n */\n getTotalLength() {\n const el = this.get('el');\n return el ? el.getTotalLength() : null;\n }\n\n /**\n * Get point according to ratio\n * @param {number} ratio\n * @return {Point} point\n */\n getPoint(ratio: number): Point {\n const el = this.get('el');\n const totalLength = this.getTotalLength();\n // @see https://github.com/antvis/g/issues/634\n if (totalLength === 0) {\n return null;\n }\n const point = el ? el.getPointAtLength(ratio * totalLength) : null;\n return point\n ? {\n x: point.x,\n y: point.y,\n }\n : null;\n }\n}\n\nexport default Path;\n","/**\n * @fileoverview polygon\n * @author dengfuping_develop@163.com\n */\nimport { each, isArray } from '@antv/util';\nimport { SVG_ATTR_MAP } from '../constant';\nimport ShapeBase from './base';\n\nclass Polygon extends ShapeBase {\n type: string = 'polygon';\n canFill: boolean = true;\n canStroke: boolean = true;\n\n createPath(context, targetAttrs) {\n const attrs = this.attr();\n const el = this.get('el');\n each(targetAttrs || attrs, (value, attr) => {\n if (attr === 'points' && isArray(value) && value.length >= 2) {\n el.setAttribute('points', value.map((point) => `${point[0]},${point[1]}`).join(' '));\n } else if (SVG_ATTR_MAP[attr]) {\n el.setAttribute(SVG_ATTR_MAP[attr], value);\n }\n });\n }\n}\n\nexport default Polygon;\n","/**\n * @fileoverview polyline\n * @author dengfuping_develop@163.com\n */\nimport { Point } from '@antv/g-base';\nimport { Polyline as PolylineUtil } from '@antv/g-math';\nimport { Line as LineUtil } from '@antv/g-math';\nimport { each, isArray, isNil } from '@antv/util';\nimport { SVG_ATTR_MAP } from '../constant';\nimport ShapeBase from './base';\n\nclass Polyline extends ShapeBase {\n type: string = 'polyline';\n canFill: boolean = true;\n canStroke: boolean = true;\n\n getDefaultAttrs() {\n const attrs = super.getDefaultAttrs();\n return {\n ...attrs,\n startArrow: false,\n endArrow: false,\n };\n }\n\n // 更新属性时,检测是否更改了 points\n onAttrChange(name: string, value: any, originValue: any) {\n super.onAttrChange(name, value, originValue);\n if (['points'].indexOf(name) !== -1) {\n this._resetCache();\n }\n }\n\n _resetCache() {\n this.set('totalLength', null);\n this.set('tCache', null);\n }\n\n createPath(context, targetAttrs) {\n const attrs = this.attr();\n const el = this.get('el');\n each(targetAttrs || attrs, (value, attr) => {\n if (attr === 'points' && isArray(value) && value.length >= 2) {\n el.setAttribute('points', value.map((point) => `${point[0]},${point[1]}`).join(' '));\n } else if (SVG_ATTR_MAP[attr]) {\n el.setAttribute(SVG_ATTR_MAP[attr], value);\n }\n });\n }\n\n /**\n * Get length of polyline\n * @return {number} length\n */\n getTotalLength() {\n const { points } = this.attr();\n // get totalLength from cache\n const totalLength = this.get('totalLength');\n if (!isNil(totalLength)) {\n return totalLength;\n }\n this.set('totalLength', PolylineUtil.length(points));\n return this.get('totalLength');\n }\n\n /**\n * Get point according to ratio\n * @param {number} ratio\n * @return {Point} point\n */\n getPoint(ratio: number): Point {\n const { points } = this.attr();\n // get tCache from cache\n let tCache = this.get('tCache');\n if (!tCache) {\n this._setTcache();\n tCache = this.get('tCache');\n }\n\n let subt;\n let index;\n each(tCache, (v, i) => {\n if (ratio >= v[0] && ratio <= v[1]) {\n subt = (ratio - v[0]) / (v[1] - v[0]);\n index = i;\n }\n });\n return LineUtil.pointAt(points[index][0], points[index][1], points[index + 1][0], points[index + 1][1], subt);\n }\n\n _setTcache() {\n const { points } = this.attr();\n if (!points || points.length === 0) {\n return;\n }\n\n const totalLength = this.getTotalLength();\n if (totalLength <= 0) {\n return;\n }\n\n let tempLength = 0;\n const tCache = [];\n let segmentT;\n let segmentL;\n\n each(points, (p, i) => {\n if (points[i + 1]) {\n segmentT = [];\n segmentT[0] = tempLength / totalLength;\n segmentL = LineUtil.length(p[0], p[1], points[i + 1][0], points[i + 1][1]);\n tempLength += segmentL;\n segmentT[1] = tempLength / totalLength;\n tCache.push(segmentT);\n }\n });\n this.set('tCache', tCache);\n }\n\n /**\n * Get start tangent vector\n * @return {Array}\n */\n getStartTangent(): number[][] {\n const { points } = this.attr();\n const result = [];\n result.push([points[1][0], points[1][1]]);\n result.push([points[0][0], points[0][1]]);\n return result;\n }\n\n /**\n * Get end tangent vector\n * @return {Array}\n */\n getEndTangent(): number[][] {\n const { points } = this.attr();\n const l = points.length - 1;\n const result = [];\n result.push([points[l - 1][0], points[l - 1][1]]);\n result.push([points[l][0], points[l][1]]);\n return result;\n }\n}\n\nexport default Polyline;\n","/**\n * @fileoverview rect\n * @author dengfuping_develop@163.com\n */\n\nimport { each, isArray } from '@antv/util';\nimport ShapeBase from './base';\nimport { SVG_ATTR_MAP } from '../constant';\nimport { parseRadius } from '../util/format';\n\nclass Rect extends ShapeBase {\n type: string = 'rect';\n canFill: boolean = true;\n canStroke: boolean = true;\n\n getDefaultAttrs() {\n const attrs = super.getDefaultAttrs();\n return {\n ...attrs,\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n radius: 0,\n };\n }\n\n createPath(context, targetAttrs) {\n const attrs = this.attr();\n const el = this.get('el');\n // 加上状态量,用来标记 path 是否已组装\n let completed = false;\n // 和组装 path 相关的绘图属性\n const pathRelatedAttrs = ['x', 'y', 'width', 'height', 'radius'];\n each(targetAttrs || attrs, (value, attr) => {\n if (pathRelatedAttrs.indexOf(attr) !== -1 && !completed) {\n el.setAttribute('d', this._assembleRect(attrs));\n completed = true;\n } else if (pathRelatedAttrs.indexOf(attr) === -1 && SVG_ATTR_MAP[attr]) {\n el.setAttribute(SVG_ATTR_MAP[attr], value);\n }\n });\n }\n\n _assembleRect(attrs) {\n const x = attrs.x;\n const y = attrs.y;\n const w = attrs.width;\n const h = attrs.height;\n const radius = attrs.radius;\n\n if (!radius) {\n return `M ${x},${y} l ${w},0 l 0,${h} l${-w} 0 z`;\n }\n const r = parseRadius(radius);\n if (isArray(radius)) {\n if (radius.length === 1) {\n r.r1 = r.r2 = r.r3 = r.r4 = radius[0];\n } else if (radius.length === 2) {\n r.r1 = r.r3 = radius[0];\n r.r2 = r.r4 = radius[1];\n } else if (radius.length === 3) {\n r.r1 = radius[0];\n r.r2 = r.r4 = radius[1];\n r.r3 = radius[2];\n } else {\n r.r1 = radius[0];\n r.r2 = radius[1];\n r.r3 = radius[2];\n r.r4 = radius[3];\n }\n } else {\n r.r1 = r.r2 = r.r3 = r.r4 = radius;\n }\n const d = [\n [`M ${x + r.r1},${y}`],\n [`l ${w - r.r1 - r.r2},0`],\n [`a ${r.r2},${r.r2},0,0,1,${r.r2},${r.r2}`],\n [`l 0,${h - r.r2 - r.r3}`],\n [`a ${r.r3},${r.r3},0,0,1,${-r.r3},${r.r3}`],\n [`l ${r.r3 + r.r4 - w},0`],\n [`a ${r.r4},${r.r4},0,0,1,${-r.r4},${-r.r4}`],\n [`l 0,${r.r4 + r.r1 - h}`],\n [`a ${r.r1},${r.r1},0,0,1,${r.r1},${-r.r1}`],\n ['z'],\n ];\n return d.join(' ');\n }\n}\n\nexport default Rect;\n","import { each, isArray, isString } from '@antv/util';\n\nconst regexTags = /[MLHVQTCSAZ]([^MLHVQTCSAZ]*)/gi;\nconst regexDot = /[^\\s,]+/gi;\n\nexport function parseRadius(radius) {\n let r1 = 0;\n let r2 = 0;\n let r3 = 0;\n let r4 = 0;\n if (isArray(radius)) {\n if (radius.length === 1) {\n r1 = r2 = r3 = r4 = radius[0];\n } else if (radius.length === 2) {\n r1 = r3 = radius[0];\n r2 = r4 = radius[1];\n } else if (radius.length === 3) {\n r1 = radius[0];\n r2 = r4 = radius[1];\n r3 = radius[2];\n } else {\n r1 = radius[0];\n r2 = radius[1];\n r3 = radius[2];\n r4 = radius[3];\n }\n } else {\n r1 = r2 = r3 = r4 = radius;\n }\n return {\n r1,\n r2,\n r3,\n r4,\n };\n}\n\nexport function parsePath(path) {\n path = path || [];\n if (isArray(path)) {\n return path;\n }\n\n if (isString(path)) {\n path = path.match(regexTags);\n each(path, (item, index) => {\n item = item.match(regexDot);\n if (item[0].length > 1) {\n const tag = item[0].charAt(0);\n item.splice(1, 0, item[0].substr(1));\n item[0] = tag;\n }\n each(item, (sub, i) => {\n if (!isNaN(sub)) {\n item[i] = +sub;\n }\n });\n path[index] = item;\n });\n return path;\n }\n}\n","/**\n * @fileoverview text\n * @author dengfuping_develop@163.com\n */\n\nimport { each } from '@antv/util';\nimport { detect } from 'detect-browser';\nimport { setTransform } from '../util/svg';\nimport { SVG_ATTR_MAP } from '../constant';\nimport ShapeBase from './base';\n\nconst LETTER_SPACING = 0.3;\n\nconst BASELINE_MAP = {\n top: 'before-edge',\n middle: 'central',\n bottom: 'after-edge',\n alphabetic: 'baseline',\n hanging: 'hanging',\n};\n\n// for FireFox\nconst BASELINE_MAP_FOR_FIREFOX = {\n top: 'text-before-edge',\n middle: 'central',\n bottom: 'text-after-edge',\n alphabetic: 'alphabetic',\n hanging: 'hanging',\n};\n\nconst ANCHOR_MAP = {\n left: 'left',\n start: 'left',\n center: 'middle',\n right: 'end',\n end: 'end',\n};\n\nclass Text extends ShapeBase {\n type: string = 'text';\n canFill: boolean = true;\n canStroke: boolean = true;\n\n getDefaultAttrs() {\n const attrs = super.getDefaultAttrs();\n return {\n ...attrs,\n x: 0,\n y: 0,\n text: null,\n fontSize: 12,\n fontFamily: 'sans-serif',\n fontStyle: 'normal',\n fontWeight: 'normal',\n fontVariant: 'normal',\n textAlign: 'start',\n textBaseline: 'bottom',\n };\n }\n\n createPath(context, targetAttrs) {\n const attrs = this.attr();\n const el = this.get('el');\n this._setFont();\n each(targetAttrs || attrs, (value, attr) => {\n if (attr === 'text') {\n this._setText(`${value}`);\n } else if (attr === 'matrix' && value) {\n setTransform(this);\n } else if (SVG_ATTR_MAP[attr]) {\n el.setAttribute(SVG_ATTR_MAP[attr], value);\n }\n });\n el.setAttribute('paint-order', 'stroke');\n el.setAttribute('style', 'stroke-linecap:butt; stroke-linejoin:miter;');\n }\n\n _setFont() {\n const el = this.get('el');\n const { textBaseline, textAlign } = this.attr();\n\n const browser = detect();\n if (browser && browser.name === 'firefox') {\n // compatible with FireFox browser, ref: https://github.com/antvis/g/issues/119\n el.setAttribute('dominant-baseline', BASELINE_MAP_FOR_FIREFOX[textBaseline] || 'alphabetic');\n } else {\n el.setAttribute('alignment-baseline', BASELINE_MAP[textBaseline] || 'baseline');\n }\n\n el.setAttribute('text-anchor', ANCHOR_MAP[textAlign] || 'left');\n }\n\n _setText(text) {\n const el = this.get('el');\n const { x, textBaseline: baseline = 'bottom' } = this.attr();\n if (!text) {\n el.innerHTML = '';\n } else if (~text.indexOf('\\n')) {\n const textArr = text.split('\\n');\n const textLen = textArr.length - 1;\n let arr = '';\n each(textArr, (segment, i: number) => {\n if (i === 0) {\n if (baseline === 'alphabetic') {\n arr += `${segment}`;\n } else if (baseline === 'top') {\n arr += `${segment}`;\n } else if (baseline === 'middle') {\n arr += `${segment}`;\n } else if (baseline === 'bottom') {\n arr += `${segment}`;\n } else if (baseline === 'hanging') {\n arr += `${segment}`;\n }\n } else {\n arr += `${segment}`;\n }\n });\n el.innerHTML = arr;\n } else {\n el.innerHTML = text;\n }\n }\n}\n\nexport default Text;\n","/**\n * @fileoverview gradient\n * @author dengfuping_develop@163.com\n */\n\nimport { each, mod, toRadian, uniqueId } from '@antv/util';\nimport { createSVGElement } from '../util/dom';\n\nconst regexLG = /^l\\s*\\(\\s*([\\d.]+)\\s*\\)\\s*(.*)/i;\nconst regexRG = /^r\\s*\\(\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*\\)\\s*(.*)/i;\nconst regexColorStop = /[\\d.]+:(#[^\\s]+|[^)]+\\))/gi;\n\nfunction addStop(steps) {\n const arr = steps.match(regexColorStop);\n if (!arr) {\n return '';\n }\n let stops = '';\n arr.sort((a, b) => {\n a = a.split(':');\n b = b.split(':');\n return Number(a[0]) - Number(b[0]);\n });\n each(arr, (item: any) => {\n item = item.split(':');\n stops += ``;\n });\n return stops;\n}\n\nfunction parseLineGradient(color, el) {\n const arr = regexLG.exec(color);\n const angle = mod(toRadian(parseFloat(arr[1])), Math.PI * 2);\n const steps = arr[2];\n let start;\n let end;\n\n if (angle >= 0 && angle < 0.5 * Math.PI) {\n start = {\n x: 0,\n y: 0,\n };\n end = {\n x: 1,\n y: 1,\n };\n } else if (0.5 * Math.PI <= angle && angle < Math.PI) {\n start = {\n x: 1,\n y: 0,\n };\n end = {\n x: 0,\n y: 1,\n };\n } else if (Math.PI <= angle && angle < 1.5 * Math.PI) {\n start = {\n x: 1,\n y: 1,\n };\n end = {\n x: 0,\n y: 0,\n };\n } else {\n start = {\n x: 0,\n y: 1,\n };\n end = {\n x: 1,\n y: 0,\n };\n }\n\n const tanTheta = Math.tan(angle);\n const tanTheta2 = tanTheta * tanTheta;\n\n const x = (end.x - start.x + tanTheta * (end.y - start.y)) / (tanTheta2 + 1) + start.x;\n const y = (tanTheta * (end.x - start.x + tanTheta * (end.y - start.y))) / (tanTheta2 + 1) + start.y;\n el.setAttribute('x1', start.x);\n el.setAttribute('y1', start.y);\n el.setAttribute('x2', x);\n el.setAttribute('y2', y);\n el.innerHTML = addStop(steps);\n}\n\nfunction parseRadialGradient(color, self) {\n const arr = regexRG.exec(color);\n const cx = parseFloat(arr[1]);\n const cy = parseFloat(arr[2]);\n const r = parseFloat(arr[3]);\n const steps = arr[4];\n self.setAttribute('cx', cx);\n self.setAttribute('cy', cy);\n self.setAttribute('r', r);\n self.innerHTML = addStop(steps);\n}\n\nclass Gradient {\n el: SVGGradientElement;\n id: string;\n cfg: {\n [key: string]: any;\n } = {};\n\n constructor(cfg) {\n let el = null;\n const id = uniqueId('gradient_');\n if (cfg.toLowerCase()[0] === 'l') {\n el = createSVGElement('linearGradient');\n parseLineGradient(cfg, el);\n } else {\n el = createSVGElement('radialGradient');\n parseRadialGradient(cfg, el);\n }\n el.setAttribute('id', id);\n this.el = el;\n this.id = id;\n this.cfg = cfg;\n return this;\n }\n\n match(type, attr) {\n return this.cfg === attr;\n }\n}\n\nexport default Gradient;\n","/**\n * @fileoverview shadow\n * @author dengfuping_develop@163.com\n */\n\nimport { each, uniqueId } from '@antv/util';\nimport { createSVGElement } from '../util/dom';\n\nconst ATTR_MAP = {\n shadowColor: 'color',\n shadowOpacity: 'opacity',\n shadowBlur: 'blur',\n shadowOffsetX: 'dx',\n shadowOffsetY: 'dy',\n};\n\nconst SHADOW_DIMENSION = {\n x: '-40%',\n y: '-40%',\n width: '200%',\n height: '200%',\n};\n\nclass Shadow {\n type: string = 'filter';\n id: string;\n el: SVGFilterElement;\n cfg: {\n [key: string]: any;\n } = {};\n\n constructor(cfg) {\n this.type = 'filter';\n const el = createSVGElement('filter') as SVGFilterElement;\n // expand the filter region to fill in shadows\n each(SHADOW_DIMENSION, (v, k) => {\n el.setAttribute(k, v);\n });\n this.el = el;\n this.id = uniqueId('filter_');\n this.el.id = this.id;\n this.cfg = cfg;\n this._parseShadow(cfg, el);\n return this;\n }\n\n match(type, cfg) {\n if (this.type !== type) {\n return false;\n }\n let flag = true;\n const config = this.cfg;\n each(Object.keys(config), (attr) => {\n if (config[attr] !== cfg[attr]) {\n flag = false;\n return false;\n }\n });\n return flag;\n }\n\n update(name, value) {\n const config = this.cfg;\n config[ATTR_MAP[name]] = value;\n this._parseShadow(config, this.el);\n return this;\n }\n\n _parseShadow(config, el) {\n const child = ``;\n el.innerHTML = child;\n }\n}\n\nexport default Shadow;\n","/**\n * @fileoverview arrow\n * @author dengfuping_develop@163.com\n */\n\nimport { isArray, uniqueId } from '@antv/util';\nimport { createSVGElement } from '../util/dom';\n\nclass Arrow {\n id: string;\n el: SVGMarkerElement;\n child: SVGPathElement | any; // TODO G.Shape, not any\n stroke: string;\n cfg: {\n [key: string]: any;\n } = {};\n\n constructor(attrs, type) {\n const el = createSVGElement('marker') as SVGMarkerElement;\n const id = uniqueId('marker_');\n el.setAttribute('id', id);\n const shape = createSVGElement('path');\n shape.setAttribute('stroke', attrs.stroke || 'none');\n shape.setAttribute('fill', attrs.fill || 'none');\n el.appendChild(shape);\n el.setAttribute('overflow', 'visible');\n el.setAttribute('orient', 'auto-start-reverse');\n this.el = el;\n this.child = shape;\n this.id = id;\n const cfg = attrs[type === 'marker-start' ? 'startArrow' : 'endArrow'];\n this.stroke = attrs.stroke || '#000';\n if (cfg === true) {\n this._setDefaultPath(type, shape);\n } else {\n this.cfg = cfg; // when arrow config exists\n this._setMarker(attrs.lineWidth, shape);\n }\n return this;\n }\n\n match() {\n return false;\n }\n\n _setDefaultPath(type, el) {\n const parent = this.el;\n // 默认箭头的边长为 10,夹角为 60 度\n el.setAttribute('d', `M0,0 L${10 * Math.cos(Math.PI / 6)},5 L0,10`);\n parent.setAttribute('refX', `${10 * Math.cos(Math.PI / 6)}`);\n parent.setAttribute('refY', `${5}`);\n }\n\n _setMarker(r, el) {\n const parent = this.el;\n let path = this.cfg.path;\n const d = this.cfg.d;\n\n if (isArray(path)) {\n path = path\n .map((segment) => {\n return segment.join(' ');\n })\n .join('');\n }\n el.setAttribute('d', path);\n parent.appendChild(el);\n if (d) {\n parent.setAttribute('refX', `${d / r}`);\n }\n }\n\n update(fill) {\n const child = this.child;\n if (child.attr) {\n child.attr('fill', fill);\n } else {\n child.setAttribute('fill', fill);\n }\n }\n}\n\nexport default Arrow;\n","/**\n * @fileoverview clip\n * @author dengfuping_develop@163.com\n */\n\nimport { uniqueId } from '@antv/util';\nimport { createSVGElement } from '../util/dom';\n\nclass Clip {\n type: string = 'clip';\n id: string;\n el: SVGClipPathElement;\n cfg: {\n [key: string]: any;\n } = {};\n\n constructor(cfg) {\n const el = createSVGElement('clipPath') as SVGClipPathElement;\n this.el = el;\n this.id = uniqueId('clip_');\n el.id = this.id;\n const shapeEl = cfg.cfg.el;\n el.appendChild(shapeEl);\n this.cfg = cfg;\n return this;\n }\n\n match() {\n return false;\n }\n\n remove() {\n const el = this.el;\n el.parentNode.removeChild(el);\n }\n}\n\nexport default Clip;\n","/**\n * @fileoverview pattern\n * @author dengfuping_develop@163.com\n */\n\nimport { uniqueId } from '@antv/util';\nimport { createSVGElement } from '../util/dom';\n\nconst regexPR = /^p\\s*\\(\\s*([axyn])\\s*\\)\\s*(.*)/i;\n\nclass Pattern {\n el: SVGPatternElement;\n id: string;\n cfg: {\n [key: string]: any;\n } = {};\n\n constructor(cfg) {\n const el = createSVGElement('pattern') as SVGPatternElement;\n el.setAttribute('patternUnits', 'userSpaceOnUse');\n const child = createSVGElement('image');\n el.appendChild(child);\n const id = uniqueId('pattern_');\n el.id = id;\n this.el = el;\n this.id = id;\n this.cfg = cfg;\n const arr = regexPR.exec(cfg);\n const source = arr[2];\n child.setAttribute('href', source);\n const img = new Image();\n if (!source.match(/^data:/i)) {\n img.crossOrigin = 'Anonymous';\n }\n img.src = source;\n function onload() {\n el.setAttribute('width', `${img.width}`);\n el.setAttribute('height', `${img.height}`);\n }\n if (img.complete) {\n onload();\n } else {\n img.onload = onload;\n // Fix onload() bug in IE9\n img.src = img.src;\n }\n\n return this;\n }\n\n match(type, attr) {\n return this.cfg === attr;\n }\n}\n\nexport default Pattern;\n","/**\n * @fileoverview defs\n * @author dengfuping_develop@163.com\n */\n\nimport { uniqueId } from '@antv/util';\nimport Gradient from './gradient';\nimport Shadow from './shadow';\nimport Arrow from './arrow';\nimport Clip from './clip';\nimport Pattern from './pattern';\nimport { createSVGElement } from '../util/dom';\n\nclass Defs {\n id: string;\n defaultArrow: {};\n children: any[];\n el: SVGDefsElement;\n canvas: SVGSVGElement;\n\n constructor(canvas) {\n const el = createSVGElement('defs') as SVGDefsElement;\n const id = uniqueId('defs_');\n el.id = id;\n canvas.appendChild(el);\n this.children = [];\n this.defaultArrow = {};\n this.el = el;\n this.canvas = canvas;\n }\n\n find(type, attr) {\n const children = this.children;\n let result = null;\n for (let i = 0; i < children.length; i++) {\n if (children[i].match(type, attr)) {\n result = children[i].id;\n break;\n }\n }\n return result;\n }\n\n findById(id) {\n const children = this.children;\n let flag = null;\n for (let i = 0; i < children.length; i++) {\n if (children[i].id === id) {\n flag = children[i];\n break;\n }\n }\n return flag;\n }\n\n add(item) {\n this.children.push(item);\n item.canvas = this.canvas;\n item.parent = this;\n }\n\n getDefaultArrow(attrs, name) {\n const stroke = attrs.stroke || attrs.strokeStyle;\n if (this.defaultArrow[stroke]) {\n return this.defaultArrow[stroke].id;\n }\n const arrow = new Arrow(attrs, name);\n this.defaultArrow[stroke] = arrow;\n this.el.appendChild(arrow.el);\n this.add(arrow);\n return arrow.id;\n }\n\n addGradient(cfg) {\n const gradient = new Gradient(cfg);\n this.el.appendChild(gradient.el);\n this.add(gradient);\n return gradient.id;\n }\n\n addArrow(attrs, name) {\n const arrow = new Arrow(attrs, name);\n this.el.appendChild(arrow.el);\n this.add(arrow);\n return arrow.id;\n }\n\n addShadow(cfg) {\n const shadow = new Shadow(cfg);\n this.el.appendChild(shadow.el);\n this.add(shadow);\n return shadow.id;\n }\n\n addPattern(cfg) {\n const pattern = new Pattern(cfg);\n this.el.appendChild(pattern.el);\n this.add(pattern);\n return pattern.id;\n }\n\n addClip(cfg) {\n const clip = new Clip(cfg);\n this.el.appendChild(clip.el);\n this.add(clip);\n return clip.id;\n }\n}\n\nexport default Defs;\n","import { AbstractCanvas, IShape } from '@antv/g-base';\nimport { ChangeType } from '@antv/g-base';\nimport { IElement } from './interfaces';\nimport { SHAPE_TO_TAGS } from './constant';\nimport { drawChildren } from './util/draw';\nimport { setTransform, setClip } from './util/svg';\nimport { sortDom, createSVGElement } from './util/dom';\nimport * as Shape from './shape';\nimport Group from './group';\nimport Defs from './defs';\n\nclass Canvas extends AbstractCanvas {\n constructor(cfg) {\n super({\n ...cfg,\n autoDraw: true,\n // 设置渲染引擎为 canvas,只读属性\n renderer: 'svg',\n });\n }\n\n getShapeBase() {\n return Shape;\n }\n\n getGroupBase() {\n return Group;\n }\n\n // 覆盖 Container 中通过遍历的方式获取 shape 对象的逻辑,直接走 SVG 的 dom 拾取即可\n getShape(x: number, y: number, ev: Event): IShape {\n let target = ev.target || ev.srcElement;\n if (!SHAPE_TO_TAGS[target.tagName]) {\n let parent = target.parentNode;\n while (parent && !SHAPE_TO_TAGS[parent.tagName]) {\n parent = parent.parentNode;\n }\n target = parent;\n }\n return this.find((child) => child.get('el') === target) as IShape;\n }\n\n // 复写基类的方法生成标签\n createDom() {\n const element = createSVGElement('svg') as SVGSVGElement;\n const context = new Defs(element);\n element.setAttribute('width', `${this.get('width')}`);\n element.setAttribute('height', `${this.get('height')}`);\n // 缓存 context 对象\n this.set('context', context);\n return element;\n }\n\n /**\n * 一些方法调用会引起画布变化\n * @param {ChangeType} changeType 改变的类型\n */\n onCanvasChange(changeType: ChangeType) {\n const context = this.get('context');\n const el = this.get('el');\n if (changeType === 'sort') {\n const children = this.get('children');\n if (children && children.length) {\n sortDom(this, (a: IElement, b: IElement) => {\n return children.indexOf(a) - children.indexOf(b) ? 1 : 0;\n });\n }\n } else if (changeType === 'clear') {\n // el maybe null for canvas\n if (el) {\n // 清空 SVG 元素\n el.innerHTML = '';\n const defsEl = context.el;\n // 清空 defs 元素\n defsEl.innerHTML = '';\n // 将清空后的 defs 元素挂载到 el 下\n el.appendChild(defsEl);\n }\n } else if (changeType === 'matrix') {\n setTransform(this);\n } else if (changeType === 'clip') {\n setClip(this, context);\n } else if (changeType === 'changeSize') {\n el.setAttribute('width', `${this.get('width')}`);\n el.setAttribute('height', `${this.get('height')}`);\n }\n }\n\n // 复写基类的 draw 方法\n draw() {\n const context = this.get('context');\n const children = this.getChildren() as IElement[];\n setClip(this, context);\n if (children.length) {\n drawChildren(context, children);\n }\n }\n}\n\nexport default Canvas;\n","import * as Shape from './shape';\n\nexport * from '@antv/g-base';\nexport { IElement, IGroup, IShape } from './interfaces';\nexport { default as Canvas } from './canvas';\nexport { default as Group } from './group';\nexport { Shape };\n\nexport const version = '0.5.6';\n","import { FIELD_ORIGIN } from '../constant';\nimport { MappingDatum, ShapeInfo } from '../interface';\nimport Geometry, { GeometryCfg } from './base';\nimport Element from './element';\n/** 引入对应的 ShapeFactory */\nimport './shape/line';\nimport { isModelChange } from './util/is-model-change';\nimport { diff } from './util/diff';\n\n/** Path 构造函数参数类型 */\nexport interface PathCfg extends GeometryCfg {\n /** 是否连接空值 */\n connectNulls?: boolean;\n /** 单个孤立数据点是否展示 */\n showSinglePoint?: boolean;\n}\n\n/**\n * Path 几何标记。\n * 用于绘制路径图等。\n */\nexport default class Path extends Geometry {\n public readonly type: string = 'path';\n public readonly shapeType: string = 'line';\n /** 是否连接空值 */\n public connectNulls: boolean;\n /** 单个孤立数据点是否展示 */\n public showSinglePoint: boolean;\n\n constructor(cfg: PathCfg) {\n super(cfg);\n\n const { connectNulls = false, showSinglePoint = true } = cfg;\n this.connectNulls = connectNulls;\n this.showSinglePoint = showSinglePoint;\n }\n\n /**\n * 创建所有的 Element 实例,对于 Path、Line、Area,一组数据对应一个 Element。\n * @param mappingData\n * @param [isUpdate]\n * @returns elements\n */\n protected updateElements(mappingDataArray: MappingDatum[][], isUpdate: boolean = false) {\n // Path 的每个 element 对应一组数据\n const keyData = new Map();\n const keyIndex = new Map();\n const keys: string[] = [];\n\n let index = 0;\n for (let i = 0; i < mappingDataArray.length; i++) {\n const mappingData = mappingDataArray[i];\n const key = this.getElementId(mappingData);\n keys.push(key);\n keyData.set(key, mappingData);\n keyIndex.set(key, index);\n index++;\n }\n\n this.elements = new Array(index);\n\n const { added, updated, removed } = diff(this.lastElementsMap, keys);\n\n for (const key of added) {\n const mappingData = keyData.get(key);\n const shapeFactory = this.getShapeFactory();\n const shapeCfg = this.getShapeInfo(mappingData);\n const i = keyIndex.get(key);\n const element = new Element({\n shapeFactory,\n container: this.container,\n offscreenGroup: this.getOffscreenGroup(),\n elementIndex: i,\n });\n element.geometry = this;\n element.animate = this.animateOption;\n element.draw(shapeCfg, isUpdate); // 绘制 shape\n this.elementsMap[key] = element;\n this.elements[i] = element;\n }\n\n for (const key of updated) {\n const mappingData = keyData.get(key);\n const element = this.lastElementsMap[key];\n const i = keyIndex.get(key);\n const shapeCfg = this.getShapeInfo(mappingData);\n const preShapeCfg = element.getModel();\n if (this.isCoordinateChanged || isModelChange(preShapeCfg, shapeCfg)) {\n element.animate = this.animateOption;\n // 通过绘制数据的变更来判断是否需要更新,因为用户有可能会修改图形属性映射\n element.update(shapeCfg); // 更新对应的 element\n }\n this.elementsMap[key] = element;\n this.elements[i] = element;\n }\n\n for (const key of removed) {\n const element = this.lastElementsMap[key];\n // 更新动画配置,用户有可能在更新之前有对动画进行配置操作\n element.animate = this.animateOption;\n element.destroy();\n }\n }\n\n /**\n * 获取组成一条线(一组数据)的所有点以及数据\n * @param mappingData 映射后的数组\n */\n protected getPointsAndData(mappingData: MappingDatum[]) {\n const points = [];\n const data = [];\n\n for (let i = 0, len = mappingData.length; i < len; i++) {\n const obj = mappingData[i];\n points.push({\n x: obj.x,\n y: obj.y,\n });\n data.push(obj[FIELD_ORIGIN]);\n }\n\n return {\n points,\n data,\n };\n }\n\n private getShapeInfo(mappingData: MappingDatum[]): ShapeInfo {\n const shapeCfg = this.getDrawCfg(mappingData[0]);\n const { points, data } = this.getPointsAndData(mappingData);\n shapeCfg.mappingData = mappingData;\n shapeCfg.data = data;\n shapeCfg.isStack = !!this.getAdjust('stack');\n shapeCfg.points = points;\n shapeCfg.connectNulls = this.connectNulls;\n shapeCfg.showSinglePoint = this.showSinglePoint;\n\n return shapeCfg;\n }\n}\n","import { each } from '@antv/util';\nimport { Coordinate, PathCommand } from '../../../dependents';\nimport { Point, Position, Shape, ShapeInfo } from '../../../interface';\n\nimport { getPathPoints } from '../util/get-path-points';\nimport { getStyle } from '../util/get-style';\nimport { getLinePath, getSplinePath } from '../util/path';\n\nfunction getPath(\n points: Point[],\n isInCircle: boolean,\n smooth: boolean,\n registeredShape: Shape,\n constraint?: Position[]\n): PathCommand[] {\n let path = [];\n\n if (points.length) {\n const topLinePoints = []; // area 区域上部分\n let bottomLinePoints = []; // area 区域下部分\n for (let i = 0, len = points.length; i < len; i++) {\n const point = points[i];\n topLinePoints.push(point[1]);\n bottomLinePoints.push(point[0]);\n }\n bottomLinePoints = bottomLinePoints.reverse();\n\n each([topLinePoints, bottomLinePoints], (pointsData, index) => {\n let subPath = [];\n const parsedPoints = registeredShape.parsePoints(pointsData);\n const p1 = parsedPoints[0];\n\n if (topLinePoints.length === 1 && bottomLinePoints.length === 1) {\n // 都只有一个点,绘制一条竖线\n subPath =\n index === 0\n ? [\n ['M', p1.x - 0.5, p1.y],\n ['L', p1.x + 0.5, p1.y],\n ]\n : [\n ['L', p1.x + 0.5, p1.y],\n ['L', p1.x - 0.5, p1.y],\n ];\n } else {\n if (isInCircle) {\n parsedPoints.push({ x: p1.x, y: p1.y });\n }\n if (smooth) {\n subPath = getSplinePath(parsedPoints, false, constraint);\n } else {\n subPath = getLinePath(parsedPoints, false);\n }\n if (index > 0) {\n subPath[0][0] = 'L';\n }\n }\n\n path = path.concat(subPath);\n });\n\n path.push(['Z']);\n }\n\n return path;\n}\n\n/**\n * @ignore\n * Gets shape attrs\n * @param cfg\n * @param isStroke\n * @param smooth\n * @param registeredShape\n * @param [constraint]\n * @returns\n */\nexport function getShapeAttrs(\n cfg: ShapeInfo,\n isStroke: boolean,\n smooth: boolean,\n registeredShape: Shape,\n constraint?: Position[]\n) {\n const attrs = getStyle(cfg, isStroke, !isStroke, 'lineWidth');\n const { connectNulls, isInCircle, points, showSinglePoint } = cfg;\n const pathPoints = getPathPoints(points, connectNulls, showSinglePoint); // 根据 connectNulls 配置获取图形关键点\n\n let path = [];\n for (let i = 0, len = pathPoints.length; i < len; i++) {\n const eachPoints = pathPoints[i];\n path = path.concat(getPath(eachPoints, isInCircle, smooth, registeredShape, constraint));\n }\n attrs.path = path;\n\n return attrs;\n}\n\n/**\n * @ignore\n * Gets constraint\n * @param coordinate\n * @returns constraint\n */\nexport function getConstraint(coordinate: Coordinate): Position[] {\n const { start, end } = coordinate;\n return [\n [start.x, end.y],\n [end.x, start.y],\n ];\n}\n","import { isArray } from '@antv/util';\nimport { IGroup } from '../../../dependents';\nimport { Point, ShapeInfo, ShapeMarkerCfg, ShapePoint } from '../../../interface';\nimport { registerShape, registerShapeFactory } from '../base';\nimport { getShapeAttrs } from './util';\n\nconst AreaShapeFactory = registerShapeFactory('area', {\n defaultShapeType: 'area',\n getDefaultPoints(pointInfo: ShapePoint): Point[] {\n // area 基本标记的绘制需要获取上下两边的顶点\n const { x, y0 } = pointInfo;\n const y = isArray(pointInfo.y) ? pointInfo.y : [y0, pointInfo.y];\n\n return y.map((yItem: number) => {\n return {\n x: x as number,\n y: yItem,\n };\n });\n },\n});\n\n// Area 几何标记默认的 shape:填充的区域图\nregisterShape('area', 'area', {\n draw(cfg: ShapeInfo, container: IGroup) {\n const attrs = getShapeAttrs(cfg, false, false, this);\n const shape = container.addShape({\n type: 'path',\n attrs,\n name: 'area',\n });\n\n return shape;\n },\n getMarker(markerCfg: ShapeMarkerCfg) {\n const { color } = markerCfg;\n return {\n symbol: (x: number, y: number, r: number = 5.5) => {\n return [['M', x - r, y - 4], ['L', x + r, y - 4], ['L', x + r, y + 4], ['L', x - r, y + 4], ['Z']];\n },\n style: {\n r: 5,\n fill: color,\n fillOpacity: 1,\n },\n };\n },\n});\n\nexport default AreaShapeFactory;\n","import { FIELD_ORIGIN } from '../constant';\nimport { MappingDatum } from '../interface';\nimport Path, { PathCfg } from './path';\nimport './shape/area';\n\n/** Area 几何标记构造函数参数 */\nexport interface AreaCfg extends PathCfg {\n /**\n * 面积图是否从 0 基准线开始填充。\n * 1. 默认值为 `true`,表现如下:\n * ![image](https://gw.alipayobjects.com/zos/rmsportal/ZQqwUCczalrKqGgagOVp.png)\n * 2. 当值为 `false` 时,表现如下:\n * ![image](https://gw.alipayobjects.com/zos/rmsportal/yPswkaXvUpCYOdhocGwB.png)\n */\n startOnZero?: boolean;\n}\n\n/**\n * Area 几何标记类。\n * 常用于绘制面积图。\n */\nexport default class Area extends Path {\n public readonly type: string = 'area';\n public readonly shapeType: string = 'area';\n /** 生成图形关键点 */\n public readonly generatePoints: boolean = true;\n /**\n * 面积图是否从 0 基准线开始填充。\n * 1. 默认值为 `true`,表现如下:\n * ![image](https://gw.alipayobjects.com/zos/rmsportal/ZQqwUCczalrKqGgagOVp.png)\n * 2. 当值为 `false` 时,表现如下:\n * ![image](https://gw.alipayobjects.com/zos/rmsportal/yPswkaXvUpCYOdhocGwB.png)\n */\n public readonly startOnZero: boolean = true;\n\n constructor(cfg: AreaCfg) {\n super(cfg);\n\n const { startOnZero = true, sortable = false, showSinglePoint = false } = cfg;\n this.startOnZero = startOnZero; // 默认为 true\n this.sortable = sortable; // 关闭默认的 X 轴数据排序\n this.showSinglePoint = showSinglePoint;\n }\n\n /**\n * 获取图形绘制的关键点以及数据\n * @param mappingData 映射后的数据\n */\n protected getPointsAndData(mappingData: MappingDatum[]) {\n const points = [];\n const data = [];\n\n for (let i = 0, len = mappingData.length; i < len; i++) {\n const obj = mappingData[i];\n points.push(obj.points);\n data.push(obj[FIELD_ORIGIN]);\n }\n\n return {\n points,\n data,\n };\n }\n\n /**\n * 获取 Y 轴上的最小值\n * @returns y 字段最小值\n */\n protected getYMinValue(): number {\n if (this.startOnZero) {\n return super.getYMinValue();\n }\n const yScale = this.getYScale();\n return yScale.min;\n }\n}\n","import { IGroup } from '../../../dependents';\nimport { Point, ShapeInfo, ShapeMarkerCfg, ShapePoint } from '../../../interface';\n\nimport { registerShape, registerShapeFactory } from '../base';\nimport { getStyle } from '../util/get-style';\nimport { getLinePath } from '../util/path';\nimport { splitPoints } from '../util/split-points';\n\nconst EdgeShapeFactory = registerShapeFactory('edge', {\n defaultShapeType: 'line',\n getDefaultPoints(pointInfo: ShapePoint): Point[] {\n return splitPoints(pointInfo);\n },\n});\n\nregisterShape('edge', 'line', {\n draw(cfg: ShapeInfo, container: IGroup) {\n const style = getStyle(cfg, true, false, 'lineWidth');\n const path = getLinePath(this.parsePoints(cfg.points), this.coordinate.isPolar);\n return container.addShape('path', {\n attrs: {\n ...style,\n path,\n },\n });\n },\n getMarker(markerCfg: ShapeMarkerCfg) {\n return {\n symbol: 'circle',\n style: {\n r: 4.5,\n fill: markerCfg.color,\n },\n };\n },\n});\n\nexport default EdgeShapeFactory;\n","import Geometry from './base';\nimport './shape/edge';\n\n/**\n * Edge 几何标记,用于绘制关系图中的**边**图形,如:\n * 1. 流程图\n * 2. 树\n * 3. 弧长连接图\n * 4. 和弦图\n * 5. 桑基图\n */\nexport default class Edge extends Geometry {\n public readonly type: string = 'edge';\n public readonly shapeType: string = 'edge';\n protected generatePoints: boolean = true;\n}\n","import ColorUtil from '@antv/color-util';\nimport { get, isNumber } from '@antv/util';\nimport { FIELD_ORIGIN } from '../constant';\nimport { Color, IShape } from '../dependents';\nimport { Data, Datum, MappingDatum, ShapeInfo, AttributeOption, ColorAttrCallback } from '../interface';\nimport Geometry from './base';\n\n/**\n * 用于绘制热力图。\n */\nexport default class Heatmap extends Geometry {\n public readonly type: string = 'heatmap';\n\n private paletteCache: Record = {};\n private grayScaleBlurredCanvas: HTMLCanvasElement;\n private shadowCanvas: HTMLCanvasElement;\n private imageShape: IShape;\n\n protected updateElements(mappingDataArray: MappingDatum[][], isUpdate: boolean = false) {\n for (let i = 0; i < mappingDataArray.length; i++) {\n const mappingData = mappingDataArray[i];\n const range = this.prepareRange(mappingData);\n const radius = this.prepareSize();\n\n let blur = get(this.styleOption, ['cfg', 'shadowBlur']);\n if (!isNumber(blur)) {\n blur = radius / 2;\n }\n\n this.prepareGreyScaleBlurredCircle(radius, blur);\n this.drawWithRange(mappingData, range, radius, blur);\n }\n }\n\n /** 热力图暂时不支持 callback 回调(文档需要说明下) */\n public color(field: AttributeOption | string, cfg?: string | string[] | ColorAttrCallback): Geometry {\n this.createAttrOption('color', field, typeof cfg !== 'function' ? cfg : '');\n\n return this;\n }\n\n /**\n * clear\n */\n public clear() {\n super.clear();\n this.clearShadowCanvasCtx();\n this.paletteCache = {};\n }\n\n private prepareRange(data: MappingDatum[]) {\n const colorAttr = this.getAttribute('color');\n const colorField = colorAttr.getFields()[0];\n\n let min = Infinity;\n let max = -Infinity;\n data.forEach((row) => {\n const value = row[FIELD_ORIGIN][colorField];\n if (value > max) {\n max = value;\n }\n if (value < min) {\n min = value;\n }\n });\n\n if (min === max) {\n min = max - 1;\n }\n\n return [min, max];\n }\n\n private prepareSize() {\n let radius = this.getDefaultValue('size');\n if (!isNumber(radius)) {\n radius = this.getDefaultSize();\n }\n\n return radius;\n }\n\n private prepareGreyScaleBlurredCircle(radius: number, blur: number) {\n const grayScaleBlurredCanvas = this.getGrayScaleBlurredCanvas();\n const r2 = radius + blur;\n const ctx = grayScaleBlurredCanvas.getContext('2d');\n grayScaleBlurredCanvas.width = grayScaleBlurredCanvas.height = r2 * 2;\n ctx.clearRect(0, 0, grayScaleBlurredCanvas.width, grayScaleBlurredCanvas.height);\n ctx.shadowOffsetX = ctx.shadowOffsetY = r2 * 2;\n ctx.shadowBlur = blur;\n ctx.shadowColor = 'black';\n\n ctx.beginPath();\n ctx.arc(-r2, -r2, radius, 0, Math.PI * 2, true);\n ctx.closePath();\n ctx.fill();\n }\n\n private drawWithRange(data: MappingDatum[], range: number[], radius: number, blur: number) {\n // canvas size\n const { start, end } = this.coordinate;\n const width = this.coordinate.getWidth();\n const height = this.coordinate.getHeight();\n\n // value, range, etc\n const colorAttr = this.getAttribute('color');\n const valueField = colorAttr.getFields()[0];\n\n // prepare shadow canvas context\n this.clearShadowCanvasCtx();\n const ctx = this.getShadowCanvasCtx();\n // filter data\n if (range) {\n data = data.filter((row) => {\n return row[FIELD_ORIGIN][valueField] <= range[1] && row[FIELD_ORIGIN][valueField] >= range[0];\n });\n }\n\n // step1. draw points with shadow\n const scale = this.scales[valueField];\n for (const obj of data) {\n const { x, y } = this.getDrawCfg(obj);\n const alpha = scale.scale(obj[FIELD_ORIGIN][valueField]);\n this.drawGrayScaleBlurredCircle((x as number) - start.x, (y as number) - end.y, radius + blur, alpha, ctx);\n }\n\n // step2. convert pixels\n const colored = ctx.getImageData(0, 0, width, height);\n this.clearShadowCanvasCtx();\n this.colorize(colored);\n ctx.putImageData(colored, 0, 0);\n const imageShape = this.getImageShape();\n imageShape.attr('x', start.x);\n imageShape.attr('y', end.y);\n imageShape.attr('width', width);\n imageShape.attr('height', height);\n imageShape.attr('img', ctx.canvas);\n imageShape.set('origin', this.getShapeInfo(data)); // 存储绘图信息数据\n }\n\n private getDefaultSize() {\n const position = this.getAttribute('position');\n const coordinate = this.coordinate;\n return Math.min(\n coordinate.getWidth() / (position.scales[0].ticks.length * 4),\n coordinate.getHeight() / (position.scales[1].ticks.length * 4)\n );\n }\n\n private clearShadowCanvasCtx() {\n const ctx = this.getShadowCanvasCtx();\n ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);\n }\n\n private getShadowCanvasCtx() {\n let canvas = this.shadowCanvas;\n if (!canvas) {\n canvas = document.createElement('canvas');\n this.shadowCanvas = canvas;\n }\n canvas.width = this.coordinate.getWidth();\n canvas.height = this.coordinate.getHeight();\n return canvas.getContext('2d');\n }\n\n private getGrayScaleBlurredCanvas() {\n if (!this.grayScaleBlurredCanvas) {\n this.grayScaleBlurredCanvas = document.createElement('canvas');\n }\n\n return this.grayScaleBlurredCanvas;\n }\n\n private drawGrayScaleBlurredCircle(x: number, y: number, r: number, alpha: number, ctx: CanvasRenderingContext2D) {\n const grayScaleBlurredCanvas = this.getGrayScaleBlurredCanvas();\n ctx.globalAlpha = alpha;\n ctx.drawImage(grayScaleBlurredCanvas, x - r, y - r);\n }\n\n private colorize(img: ImageData) {\n const colorAttr = this.getAttribute('color') as Color;\n const pixels = img.data;\n const paletteCache = this.paletteCache;\n for (let i = 3; i < pixels.length; i += 4) {\n const alpha = pixels[i]; // get gradient color from opacity value\n if (isNumber(alpha)) {\n const palette = paletteCache[alpha] ? paletteCache[alpha] : ColorUtil.rgb2arr(colorAttr.gradient(alpha / 256));\n pixels[i - 3] = palette[0];\n pixels[i - 2] = palette[1];\n pixels[i - 1] = palette[2];\n pixels[i] = alpha;\n }\n }\n }\n\n private getImageShape() {\n let imageShape = this.imageShape;\n if (imageShape) {\n return imageShape;\n }\n const container = this.container;\n imageShape = container.addShape({\n type: 'image',\n attrs: {},\n });\n this.imageShape = imageShape;\n return imageShape;\n }\n\n private getShapeInfo(mappingData: MappingDatum[]): ShapeInfo {\n const shapeCfg = this.getDrawCfg(mappingData[0]);\n\n const data = mappingData.map((obj: Datum) => {\n return obj[FIELD_ORIGIN];\n });\n\n return {\n ...shapeCfg,\n mappingData,\n data,\n };\n }\n}\n","import { Coordinate } from '@antv/coord';\nimport { isArray, isNil, get } from '@antv/util';\nimport { getAngle, getSectorPath } from '../../../util/graphics';\nimport { PathCommand } from '../../../dependents';\nimport { Point, ShapeInfo, ShapePoint } from '../../../interface';\n\n/**\n * @ignore\n * 根据数据点生成矩形的四个关键点\n * @param pointInfo 数据点信息\n * @param [isPyramid] 是否为尖底漏斗图\n * @returns rect points 返回矩形四个顶点信息\n */\nexport function getRectPoints(pointInfo: ShapePoint): Point[] {\n const { x, y, y0, size } = pointInfo;\n // 有 4 种情况,\n // 1. x, y 都不是数组\n // 2. y是数组,x不是\n // 3. x是数组,y不是\n // 4. x, y 都是数组\n let yMin;\n let yMax;\n if (isArray(y)) {\n [yMin, yMax] = y;\n } else {\n yMin = y0;\n yMax = y;\n }\n\n let xMin;\n let xMax;\n if (isArray(x)) {\n [xMin, xMax] = x;\n } else {\n xMin = x - size / 2;\n xMax = x + size / 2;\n }\n\n const points = [\n { x: xMin, y: yMin },\n { x: xMin, y: yMax },\n ];\n\n // 矩形的四个关键点,结构如下(左下角顺时针连接)\n // 1 ---- 2\n // | |\n // 0 ---- 3\n points.push({ x: xMax, y: yMax }, { x: xMax, y: yMin });\n\n return points;\n}\n\n/**\n * @ignore\n * 根据矩形关键点绘制 path\n * @param points 关键点数组\n * @param isClosed path 是否需要闭合\n * @returns 返回矩形的 path\n */\nexport function getRectPath(points: Point[], isClosed: boolean = true): PathCommand[] {\n const path = [];\n const firstPoint = points[0];\n path.push(['M', firstPoint.x, firstPoint.y]);\n for (let i = 1, len = points.length; i < len; i++) {\n path.push(['L', points[i].x, points[i].y]);\n }\n // 对于 shape=\"line\" path 不应该闭合,否则会造成 lineCap 绘图属性失效\n if (isClosed) {\n path.push(['L', firstPoint.x, firstPoint.y]); // 需要闭合\n path.push(['z']);\n }\n return path;\n}\n\n/**\n * 处理 rect path 的 radius\n * @returns 返回矩形 path 的四个角的 arc 半径\n */\nexport function parseRadius(radius: number | number[], minLength: number): number[] {\n let r1 = 0;\n let r2 = 0;\n let r3 = 0;\n let r4 = 0;\n if (isArray(radius)) {\n if (radius.length === 1) {\n r1 = r2 = r3 = r4 = radius[0];\n } else if (radius.length === 2) {\n r1 = r3 = radius[0];\n r2 = r4 = radius[1];\n } else if (radius.length === 3) {\n r1 = radius[0];\n r2 = r4 = radius[1];\n r3 = radius[2];\n } else {\n r1 = radius[0];\n r2 = radius[1];\n r3 = radius[2];\n r4 = radius[3];\n }\n } else {\n r1 = r2 = r3 = r4 = radius;\n }\n\n // 处理 边界值\n if (r1 + r2 > minLength) {\n r1 = r1 ? minLength / (1 + r2 / r1) : 0;\n r2 = minLength - r1;\n }\n\n if (r3 + r4 > minLength) {\n r3 = r3 ? minLength / (1 + r4 / r3) : 0;\n r4 = minLength - r3;\n }\n\n return [r1 || 0, r2 || 0, r3 || 0, r4 || 0];\n}\n\n/**\n * 获取 interval 矩形背景的 path\n * @param cfg 关键点的信息\n * @param points 已转化为画布坐标的 4 个关键点\n * @param coordinate 坐标系\n * @returns 返回矩形背景的 path\n */\nexport function getBackgroundRectPath(cfg: ShapeInfo, points: Point[], coordinate: Coordinate): PathCommand[] {\n let path = [];\n if (coordinate.isRect) {\n const p0 = coordinate.isTransposed\n ? { x: coordinate.start.x, y: points[0].y }\n : { x: points[0].x, y: coordinate.start.y };\n const p1 = coordinate.isTransposed\n ? { x: coordinate.end.x, y: points[2].y }\n : { x: points[3].x, y: coordinate.end.y };\n\n // corner radius of background shape works only in 笛卡尔坐标系\n const radius = get(cfg, ['background', 'style', 'radius']);\n if (radius) {\n const width = coordinate.isTransposed ? Math.abs(points[0].y - points[2].y) : points[2].x - points[1].x;\n const height = coordinate.isTransposed ? coordinate.getWidth() : coordinate.getHeight();\n const [r1, r2, r3, r4] = parseRadius(radius, Math.min(width, height));\n\n // 同时存在 坐标系是否发生转置 和 y 镜像的时候\n const isReflectYTransposed = (coordinate.isTransposed && coordinate.isReflect('y'));\n const bump = isReflectYTransposed ? 0 : 1;\n const opposite = (r: number) => isReflectYTransposed ? -r : r;\n\n path.push(['M', p0.x, p1.y + opposite(r1)]);\n r1 !== 0 && path.push(['A', r1, r1, 0, 0, bump, p0.x + r1, p1.y]);\n path.push(['L', p1.x - r2, p1.y]);\n r2 !== 0 && path.push(['A', r2, r2, 0, 0, bump, p1.x, p1.y + opposite(r2)]);\n path.push(['L', p1.x, p0.y - opposite(r3)]);\n r3 !== 0 && path.push(['A', r3, r3, 0, 0, bump, p1.x - r3, p0.y]);\n path.push(['L', p0.x + r4, p0.y]);\n r4 !== 0 && path.push(['A', r4, r4, 0, 0, bump, p0.x, p0.y - opposite(r4)]);\n } else {\n path.push(['M', p0.x, p0.y]);\n path.push(['L', p1.x, p0.y]);\n path.push(['L', p1.x, p1.y]);\n path.push(['L', p0.x, p1.y]);\n path.push(['L', p0.x, p0.y]);\n }\n\n path.push(['z']);\n }\n\n if (coordinate.isPolar) {\n const center = coordinate.getCenter();\n const { startAngle, endAngle } = getAngle(cfg, coordinate);\n if (coordinate.type !== 'theta' && !coordinate.isTransposed) {\n // 获取扇形 path\n path = getSectorPath(center.x, center.y, coordinate.getRadius(), startAngle, endAngle);\n } else {\n const pow = (v) => Math.pow(v, 2);\n const r1 = Math.sqrt(pow(center.x - points[0].x) + pow(center.y - points[0].y));\n const r2 = Math.sqrt(pow(center.x - points[2].x) + pow(center.y - points[2].y));\n // 获取扇形 path(其实是一个圆环,从 coordinate 的起始角度到结束角度)\n path = getSectorPath(center.x, center.y, r1, coordinate.startAngle, coordinate.endAngle, r2);\n }\n }\n return path;\n}\n\n/**\n * @ignore\n * 根据矩形关键点绘制 path\n * @param points 关键点数组\n * @param lineCap 'round'圆角样式\n * @param coor 坐标\n * @returns 返回矩形的 path\n */\nexport function getIntervalRectPath(points: Point[], lineCap: CanvasLineCap, coor: Coordinate): PathCommand[] {\n const width = coor.getWidth();\n const height = coor.getHeight();\n const isRect = coor.type === 'rect';\n let path = [];\n const r = (points[2].x - points[1].x) / 2;\n const ry = coor.isTransposed ? (r * height) / width : (r * width) / height;\n if (lineCap === 'round') {\n if (isRect) {\n path.push(['M', points[0].x, points[0].y + ry]);\n path.push(['L', points[1].x, points[1].y - ry]);\n path.push(['A', r, r, 0, 0, 1, points[2].x, points[2].y - ry]);\n path.push(['L', points[3].x, points[3].y + ry]);\n path.push(['A', r, r, 0, 0, 1, points[0].x, points[0].y + ry]);\n } else {\n path.push(['M', points[0].x, points[0].y]);\n path.push(['L', points[1].x, points[1].y]);\n path.push(['A', r, r, 0, 0, 1, points[2].x, points[2].y]);\n path.push(['L', points[3].x, points[3].y]);\n path.push(['A', r, r, 0, 0, 1, points[0].x, points[0].y]);\n }\n path.push(['z']);\n } else {\n path = getRectPath(points);\n }\n return path;\n}\n\n/**\n * @ignore\n * 根据 funnel 关键点绘制漏斗图的 path\n * @param points 图形关键点信息\n * @param nextPoints 下一个数据的图形关键点信息\n * @param isPyramid 是否为尖底漏斗图\n * @returns 返回漏斗图的图形 path\n */\nexport function getFunnelPath(points: Point[], nextPoints: Point[], isPyramid: boolean) {\n const path = [];\n if (!isNil(nextPoints)) {\n path.push(\n ['M', points[0].x, points[0].y],\n ['L', points[1].x, points[1].y],\n ['L', nextPoints[1].x, nextPoints[1].y],\n ['L', nextPoints[0].x, nextPoints[0].y],\n ['Z']\n );\n } else if (isPyramid) {\n // 金字塔最底部\n path.push(\n ['M', points[0].x, points[0].y],\n ['L', points[1].x, points[1].y],\n ['L', (points[2].x + points[3].x) / 2, (points[2].y + points[3].y) / 2],\n ['Z']\n );\n } else {\n // 漏斗图最底部\n path.push(\n ['M', points[0].x, points[0].y],\n ['L', points[1].x, points[1].y],\n ['L', points[2].x, points[2].y],\n ['L', points[3].x, points[3].y],\n ['Z']\n );\n }\n\n return path;\n}\n\n/**\n * 交换两个对象\n */\nfunction swap(p0: T, p1: T) {\n return [p1, p0];\n}\n\n/**\n * 获取 倒角 矩形\n * - 目前只适用于笛卡尔坐标系下\n */\nexport function getRectWithCornerRadius(points: Point[], coordinate: Coordinate, radius?: number | number[]) {\n // 获取 四个关键点\n let [p0, p1, p2, p3] = [...points];\n let [r1, r2, r3, r4] = typeof radius === 'number' ? Array(4).fill(radius) : radius;\n\n if (coordinate.isTransposed) {\n [p1, p3] = swap(p1, p3);\n }\n\n /**\n * 存在镜像\n */\n if (coordinate.isReflect('y')) {\n [p0, p1] = swap(p0, p1);\n [p2, p3] = swap(p2, p3);\n }\n if (coordinate.isReflect('x')) {\n [p0, p3] = swap(p0, p3);\n [p1, p2] = swap(p1, p2);\n }\n\n const path = [];\n\n\n /**\n * p1 → p2\n * ↑ ↓\n * p0 ← p3\n *\n * 负数的情况,关键点会变成下面的形式\n *\n * p0 ← p3 p2 ← p1\n * ↓ ↑ ↓ ↑\n * p1 → p2 --> (转置下) p3 → p0\n */\n const abs = v => Math.abs(v);\n [r1, r2, r3, r4] = parseRadius([r1, r2, r3, r4], Math.min(abs(p3.x - p0.x), abs(p1.y - p0.y))).map(d => abs(d));\n\n if (coordinate.isTransposed) {\n [r1, r2, r3, r4] = [r4, r1, r2, r3]\n }\n\n if (p0.y < p1.y /** 负数情况 */) {\n path.push(['M', p3.x, p3.y + r3]);\n r3 !== 0 && path.push(['A', r3, r3, 0, 0, 0, p3.x - r3, p3.y]);\n path.push(['L', p0.x + r4, p0.y]);\n r4 !== 0 && path.push(['A', r4, r4, 0, 0, 0, p0.x, p0.y + r4]);\n path.push(['L', p1.x, p1.y - r1]);\n r1 !== 0 && path.push(['A', r1, r1, 0, 0, 0/** 逆时针 */, p1.x + r1, p1.y]);\n path.push(['L', p2.x - r2, p2.y]);\n r2 !== 0 && path.push(['A', r2, r2, 0, 0, 0, p2.x, p2.y - r2]);\n path.push(['L', p3.x, p3.y + r3]);\n path.push(['z']);\n } else if (p3.x < p0.x) {\n path.push(['M', p2.x + r2, p2.y]);\n r2 !== 0 && path.push(['A', r2, r2, 0, 0, 0, p2.x, p2.y + r2]);\n path.push(['L', p3.x, p3.y - r3]);\n r3 !== 0 && path.push(['A', r3, r3, 0, 0, 0, p3.x + r3, p3.y]);\n path.push(['L', p0.x - r4, p0.y]);\n r4 !== 0 && path.push(['A', r4, r4, 0, 0, 0, p0.x, p0.y - r4]);\n path.push(['L', p1.x, p1.y + r1]);\n r1 !== 0 && path.push(['A', r1, r1, 0, 0, 0, p1.x - r1, p1.y]);\n path.push(['L', p2.x + r2, p2.y]);\n path.push(['z']);\n } else {\n path.push(['M', p1.x, p1.y + r1]);\n r1 !== 0 && path.push(['A', r1, r1, 0, 0, 1, p1.x + r1, p1.y]);\n path.push(['L', p2.x - r2, p2.y]);\n r2 !== 0 && path.push(['A', r2, r2, 0, 0, 1, p2.x, p2.y + r2]);\n path.push(['L', p3.x, p3.y - r3]);\n r3 !== 0 && path.push(['A', r3, r3, 0, 0, 1, p3.x - r3, p3.y]);\n path.push(['L', p0.x + r4, p0.y]);\n r4 !== 0 && path.push(['A', r4, r4, 0, 0, 1, p0.x, p0.y - r4]);\n path.push(['L', p1.x, p1.y + r1]);\n path.push(['z']);\n }\n\n return path;\n}\n","import { IGroup } from '../../../dependents';\nimport { Point, ShapeInfo, ShapeMarkerCfg, ShapePoint } from '../../../interface';\n\nimport { registerShape, registerShapeFactory } from '../base';\nimport { BACKGROUND_SHAPE } from '../constant';\nimport { getBackgroundRectStyle, getStyle } from '../util/get-style';\nimport { getBackgroundRectPath, getIntervalRectPath, getRectPoints, getRectWithCornerRadius } from './util';\n\n/** Interval 的 shape 工厂 */\nconst IntervalShapeFactory = registerShapeFactory('interval', {\n defaultShapeType: 'rect',\n getDefaultPoints(pointInfo: ShapePoint): Point[] {\n return getRectPoints(pointInfo);\n },\n});\n\n/** Inerval 默认 shape,填充的矩形 */\nregisterShape('interval', 'rect', {\n draw(cfg: ShapeInfo, container: IGroup) {\n const style = getStyle(cfg, false, true);\n let group = container;\n\n const backgroundCfg = cfg?.background;\n if (backgroundCfg) {\n group = container.addGroup({\n name: 'interval-group',\n });\n const backgroundStyle = getBackgroundRectStyle(cfg);\n const backgroundPath = getBackgroundRectPath(cfg, this.parsePoints(cfg.points) as Point[], this.coordinate);\n group.addShape('path', {\n attrs: {\n ...backgroundStyle,\n path: backgroundPath,\n },\n capture: false,\n zIndex: -1,\n name: BACKGROUND_SHAPE,\n });\n }\n\n let path;\n if (style.radius && this.coordinate.isRect) {\n path = getRectWithCornerRadius(this.parsePoints(cfg.points), this.coordinate, style.radius);\n } else {\n path = this.parsePath(getIntervalRectPath(cfg.points as Point[], style.lineCap, this.coordinate));\n }\n\n const shape = group.addShape('path', {\n attrs: {\n ...style,\n path,\n },\n name: 'interval',\n });\n\n return backgroundCfg ? group : shape;\n },\n getMarker(markerCfg: ShapeMarkerCfg) {\n const { color, isInPolar } = markerCfg;\n if (isInPolar) {\n return {\n symbol: 'circle',\n style: {\n r: 4.5,\n fill: color,\n },\n };\n }\n\n return {\n symbol: 'square',\n style: {\n r: 4,\n fill: color,\n },\n };\n },\n});\n\nexport default IntervalShapeFactory;\n","import { flatten, isString, valuesOfKey, isNil } from '@antv/util';\nimport { getXDimensionLength } from '../../util/coordinate';\n\n// 已经排序后的数据查找距离最小的\nfunction findMinDistance(arr, scale) {\n const count = arr.length;\n let sourceArr = arr;\n if (isString(sourceArr[0])) {\n // 日期类型的 values 经常上文本类型,所以需要转换一下\n sourceArr = arr.map((v: string) => {\n return scale.translate(v);\n });\n }\n let distance = sourceArr[1] - sourceArr[0];\n for (let i = 2; i < count; i++) {\n const tmp = sourceArr[i] - sourceArr[i - 1];\n if (distance > tmp) {\n distance = tmp;\n }\n }\n return distance;\n}\n\nfunction getDodgeCount(dataArray, dodgeBy) {\n if (dodgeBy) {\n const mergeData = flatten(dataArray);\n const values = valuesOfKey(mergeData, dodgeBy);\n return values.length;\n }\n\n return dataArray.length;\n}\n\n/** @ignore */\nexport function getDefaultSize(geometry): number {\n const theme = geometry.theme;\n const coordinate = geometry.coordinate;\n const xScale = geometry.getXScale();\n const xValues = xScale.values;\n const dataArray = geometry.beforeMappingData;\n let count: number = xValues.length;\n const xDimensionLength = getXDimensionLength(geometry.coordinate);\n // 获取柱宽相关配置项\n const { intervalPadding, dodgePadding } = geometry;\n // 兼容theme配置\n const maxColumnWidth = geometry.maxColumnWidth || theme.maxColumnWidth;\n const minColumnWidth = geometry.minColumnWidth || theme.minColumnWidth;\n const columnWidthRatio = geometry.columnWidthRatio || theme.columnWidthRatio;\n const multiplePieWidthRatio = geometry.multiplePieWidthRatio || theme.multiplePieWidthRatio;\n const roseWidthRatio = geometry.roseWidthRatio || theme.roseWidthRatio;\n\n // 线性情况下count值\n if (xScale.isLinear && xValues.length > 1) {\n // Linear 类型用户有可能设置了 min, max 范围所以需要根据数据最小区间计算 count\n xValues.sort();\n const interval = findMinDistance(xValues, xScale);\n count = (xScale.max - xScale.min) / interval;\n if (xValues.length > count) {\n count = xValues.length;\n }\n }\n\n const range = xScale.range;\n let normalizedSize = 1 / count;\n let wr = 1;\n if (coordinate.isPolar) {\n // 极坐标场景\n if (coordinate.isTransposed && count > 1) {\n // 极坐标下多层环图\n wr = multiplePieWidthRatio;\n } else {\n wr = roseWidthRatio;\n }\n } else {\n // 非极坐标场景\n if (xScale.isLinear) {\n normalizedSize *= range[1] - range[0];\n }\n wr = columnWidthRatio;\n }\n\n // 基础柱状图\n if (!isNil(intervalPadding) && intervalPadding >= 0) {\n // 配置组间距情况\n const normalizedIntervalPadding = intervalPadding / xDimensionLength;\n normalizedSize = (1 - (count - 1) * normalizedIntervalPadding) / count;\n } else {\n // 默认情况\n normalizedSize *= wr;\n }\n // 分组柱状图\n if (geometry.getAdjust('dodge')) {\n const dodgeAdjust = geometry.getAdjust('dodge');\n const dodgeBy = dodgeAdjust.dodgeBy;\n const dodgeCount = getDodgeCount(dataArray, dodgeBy);\n if (!isNil(dodgePadding) && dodgePadding >= 0) {\n // 仅配置组内间距情况\n const normalizedDodgePadding = dodgePadding / xDimensionLength;\n normalizedSize = (normalizedSize - normalizedDodgePadding * (dodgeCount - 1)) / dodgeCount;\n } else if (!isNil(intervalPadding) && intervalPadding >= 0) {\n // 设置组间距但未设置组内间距情况,避免组间距过小导致图形重叠,需乘以wr\n normalizedSize *= wr;\n normalizedSize = normalizedSize / dodgeCount;\n } else {\n // 组间距和组内间距均未配置\n normalizedSize = normalizedSize / dodgeCount;\n }\n normalizedSize = normalizedSize >= 0 ? normalizedSize : 0;\n }\n\n // 最大和最小限制\n if (!isNil(maxColumnWidth) && maxColumnWidth >= 0) {\n const normalizedMaxColumnWidth = maxColumnWidth / xDimensionLength;\n if (normalizedSize > normalizedMaxColumnWidth) {\n normalizedSize = normalizedMaxColumnWidth;\n }\n }\n\n // \bminColumnWidth可能设置为0\n if (!isNil(minColumnWidth) && minColumnWidth >= 0) {\n const normalizedMinColumnWidth = minColumnWidth / xDimensionLength;\n if (normalizedSize < normalizedMinColumnWidth) {\n normalizedSize = normalizedMinColumnWidth;\n }\n }\n\n return normalizedSize;\n}\n","import { get } from '@antv/util';\nimport { Datum, MappingDatum, ShapeInfo, LooseObject } from '../interface';\nimport { ShapeAttrs } from '../dependents';\nimport { getXDimensionLength } from '../util/coordinate';\nimport Geometry, { GeometryCfg } from './base';\n/** 引入对应的 ShapeFactory */\nimport './shape/interval';\nimport { getDefaultSize } from './util/shape-size';\nimport { getMaxScale } from '../util/scale';\n\n/** Path 构造函数参数类型 */\nexport interface IntervalCfg extends GeometryCfg {\n /** shape 背景,只对 Interval Geometry 生效,目前只对 interval-rect shape 生效。 */\n background?: { style?: ShapeAttrs };\n}\n\n/**\n * Interval 几何标记。\n * 用于绘制柱状图、饼图、条形图、玫瑰图等。\n */\nexport default class Interval extends Geometry {\n public readonly type: string = 'interval';\n public readonly shapeType: string = 'interval';\n /** shape 背景。目前只对 interval-rect shape 生效。 */\n protected background?: { style?: ShapeAttrs };\n protected generatePoints: boolean = true;\n\n constructor(cfg: IntervalCfg) {\n super(cfg);\n\n const { background } = cfg;\n this.background = background;\n }\n\n /**\n * 获取每条数据的 Shape 绘制信息\n * @param obj 经过分组 -> 数字化 -> adjust 调整后的数据记录\n * @returns\n */\n protected createShapePointsCfg(obj: Datum) {\n const cfg = super.createShapePointsCfg(obj);\n\n // 计算每个 shape 的 size\n let size;\n const sizeAttr = this.getAttribute('size');\n if (sizeAttr) {\n size = this.getAttributeValues(sizeAttr, obj)[0];\n // 归一化\n const coordinate = this.coordinate;\n const coordinateWidth = getXDimensionLength(coordinate);\n size = size / coordinateWidth;\n } else {\n if (!this.defaultSize) {\n this.defaultSize = getDefaultSize(this);\n }\n size = this.defaultSize;\n }\n cfg.size = size;\n\n return cfg;\n }\n\n /**\n * 调整 y 轴的 scale 范围。\n * 对于 Y 轴为数值轴柱状图,默认从 0 开始 生长。\n */\n protected adjustScale() {\n super.adjustScale();\n const yScale = this.getYScale();\n // 特殊逻辑:饼图需要填充满整个空间\n if (this.coordinate.type === 'theta') {\n yScale.change({\n nice: false,\n min: 0,\n // 发生过 stack 调整,yScale 的 max 被调整过,this.updateStackRange()\n max: getMaxScale(yScale),\n });\n } else {\n // 柱状图数值轴默认从 0 开始\n const scaleDefs = this.scaleDefs;\n const { field, min, max, type } = yScale;\n if (type !== 'time') {\n // time 类型不做调整\n // 柱状图的 Y 轴要从 0 开始生长,但是如果用户设置了则以用户的为准\n if (min > 0 && !get(scaleDefs, [field, 'min'])) {\n yScale.change({\n min: 0,\n });\n }\n // 柱当柱状图全为负值时也需要从 0 开始生长,但是如果用户设置了则以用户的为准\n if (max <= 0 && !get(scaleDefs, [field, 'max'])) {\n yScale.change({\n max: 0,\n });\n }\n }\n }\n }\n\n /**\n * @override\n */\n protected getDrawCfg(mappingData: MappingDatum): ShapeInfo {\n const shapeCfg = super.getDrawCfg(mappingData);\n shapeCfg.background = this.background;\n\n return shapeCfg;\n }\n}\n","import Path, { PathCfg } from './path';\n/** 引入 Path 对应的 ShapeFactory */\nimport './shape/line';\n\n/**\n * Line 几何标记。\n * 常用于折线图的绘制。\n */\nexport default class Line extends Path {\n public type: string = 'line';\n\n constructor(cfg: PathCfg) {\n super(cfg);\n\n const { sortable = false } = cfg; // 关闭默认的 X 轴数据排序\n this.sortable = sortable;\n }\n}\n","import { IGroup, IShape } from '../../../dependents';\nimport { ShapeInfo } from '../../../interface';\nimport { MarkerSymbols } from '../../../util/marker';\nimport { getStyle } from '../util/get-style';\n\nexport const SHAPES = ['circle', 'square', 'bowtie', 'diamond', 'hexagon', 'triangle', 'triangle-down'];\nexport const HOLLOW_SHAPES = ['cross', 'tick', 'plus', 'hyphen', 'line'];\n\n/**\n * @ignore\n * Draws points\n * @param shape\n * @param cfg\n * @param container\n * @param shapeName\n * @param isStroke\n * @returns points\n */\nexport function drawPoints(\n shape,\n cfg: ShapeInfo,\n container: IGroup,\n shapeName: string,\n isStroke: boolean\n): IShape | IGroup {\n const style = getStyle(cfg, isStroke, !isStroke, 'r');\n const points = shape.parsePoints(cfg.points);\n let pointPosition = points[0];\n if (cfg.isStack) {\n pointPosition = points[1];\n } else if (points.length > 1) {\n const group = container.addGroup();\n for (const point of points) {\n group.addShape({\n type: 'marker',\n attrs: {\n ...style,\n symbol: MarkerSymbols[shapeName] || shapeName,\n ...point,\n },\n });\n }\n return group;\n }\n\n return container.addShape({\n type: 'marker',\n attrs: {\n ...style,\n symbol: MarkerSymbols[shapeName] || shapeName,\n ...pointPosition,\n },\n });\n}\n","import { each } from '@antv/util';\nimport { IGroup } from '../../../dependents';\nimport { Point, ShapeInfo, ShapeMarkerCfg, ShapePoint } from '../../../interface';\n\nimport { MarkerSymbols } from '../../../util/marker';\nimport { registerShape, registerShapeFactory } from '../base';\nimport { splitPoints } from '../util/split-points';\nimport { drawPoints, SHAPES } from './util';\n\nconst PointShapeFactory = registerShapeFactory('point', {\n defaultShapeType: 'hollow-circle',\n getDefaultPoints(pointInfo: ShapePoint): Point[] {\n return splitPoints(pointInfo);\n },\n});\n\neach(SHAPES, (shapeName: string) => {\n // 添加该 shape 对应的 hollow-shape\n registerShape('point', `hollow-${shapeName}`, {\n draw(cfg: ShapeInfo, container: IGroup) {\n return drawPoints(this, cfg, container, shapeName, true);\n },\n getMarker(markerCfg: ShapeMarkerCfg) {\n const { color } = markerCfg;\n return {\n symbol: MarkerSymbols[shapeName] || shapeName,\n style: {\n r: 4.5,\n stroke: color,\n fill: null,\n },\n };\n },\n });\n});\n\nexport default PointShapeFactory;\n","import { MappingDatum, ShapeInfo } from '../interface';\nimport Geometry from './base';\n/** 引入 Point 对应的 ShapeFactory */\nimport './shape/point';\n\n/**\n * Point 几何标记。\n * 常用于绘制点图。\n */\nexport default class Point extends Geometry {\n public readonly type: string = 'point';\n public readonly shapeType: string = 'point';\n protected generatePoints: boolean = true;\n\n /**\n * 获取一个点的绘制信息。\n * @param mappingDatum\n * @returns draw cfg\n */\n protected getDrawCfg(mappingDatum: MappingDatum): ShapeInfo {\n const shapeCfg = super.getDrawCfg(mappingDatum);\n\n return {\n ...shapeCfg,\n isStack: !!this.getAdjust('stack'), // 层叠点图\n };\n }\n}\n","import { each, isEmpty, isEqual, last } from '@antv/util';\nimport { IGroup } from '../../../dependents';\nimport { ShapeInfo, ShapeMarkerCfg, ShapePoint } from '../../../interface';\n\nimport { registerShape, registerShapeFactory } from '../base';\nimport { getStyle } from '../util/get-style';\n\nfunction getPath(points: any[]) {\n let flag: any = points[0];\n let i = 1;\n\n const path = [['M', flag.x, flag.y]];\n\n while (i < points.length) {\n const c: any = points[i];\n if (c.x !== points[i - 1].x || c.y !== points[i - 1].y) {\n path.push(['L', c.x, c.y]);\n if (c.x === flag.x && c.y === flag.y && i < points.length - 1) {\n flag = points[i + 1];\n path.push(['Z']);\n path.push(['M', flag.x, flag.y]);\n i++;\n }\n }\n i++;\n }\n\n if (!isEqual(last(path), flag)) {\n path.push(['L', flag.x, flag.y]);\n }\n\n path.push(['Z']);\n\n return path;\n}\n\nconst PolygonShapeFactory = registerShapeFactory('polygon', {\n defaultShapeType: 'polygon',\n getDefaultPoints(pointInfo: ShapePoint) {\n const points = [];\n each(pointInfo.x as number[], (subX, index) => {\n const subY = pointInfo.y[index];\n points.push({\n x: subX,\n y: subY,\n });\n });\n return points;\n },\n});\n\nregisterShape('polygon', 'polygon', {\n draw(cfg: ShapeInfo, container: IGroup) {\n if (!isEmpty(cfg.points)) {\n const shapeAttrs = getStyle(cfg, true, true);\n const path = this.parsePath(getPath(cfg.points));\n return container.addShape('path', {\n attrs: {\n ...shapeAttrs,\n path,\n },\n name: 'polygon',\n });\n }\n },\n getMarker(markerCfg: ShapeMarkerCfg) {\n const { color } = markerCfg;\n return {\n symbol: 'square',\n style: {\n r: 4,\n fill: color,\n },\n };\n },\n});\n\nexport default PolygonShapeFactory;\n","import { isArray } from '@antv/util';\nimport { Datum } from '../interface';\nimport Geometry from './base';\n/** 引入 Path 对应的 ShapeFactory */\nimport './shape/polygon';\n\n/**\n * Polygon 几何标记。\n * 常用于绘制色块图、日历图等。\n */\nexport default class Polygon extends Geometry {\n public readonly type: string = 'polygon';\n public readonly shapeType: string = 'polygon';\n protected generatePoints: boolean = true;\n\n /**\n * 获取 Shape 的关键点数据。\n * @param obj\n * @returns\n */\n protected createShapePointsCfg(obj: Datum) {\n const cfg: any = super.createShapePointsCfg(obj);\n let x = cfg.x;\n let y = cfg.y;\n let temp;\n // x y 都是数组时,不做处理\n if (!(isArray(x) && isArray(y))) {\n const xScale = this.getXScale();\n const yScale = this.getYScale();\n const xCount = xScale.values.length;\n const yCount = yScale.values.length;\n const xOffset = (0.5 * 1) / xCount;\n const yOffset = (0.5 * 1) / yCount;\n\n if (xScale.isCategory && yScale.isCategory) {\n // 如果x,y都是分类\n x = [x - xOffset, x - xOffset, x + xOffset, x + xOffset];\n y = [y - yOffset, y + yOffset, y + yOffset, y - yOffset];\n } else if (isArray(x)) {\n // x 是数组\n temp = x;\n x = [temp[0], temp[0], temp[1], temp[1]];\n y = [y - yOffset / 2, y + yOffset / 2, y + yOffset / 2, y - yOffset / 2];\n } else if (isArray(y)) {\n // y 是数组\n temp = y;\n y = [temp[0], temp[1], temp[1], temp[0]];\n x = [x - xOffset / 2, x - xOffset / 2, x + xOffset / 2, x + xOffset / 2];\n }\n cfg.x = x;\n cfg.y = y;\n }\n return cfg;\n }\n}\n","import { registerShapeFactory } from '../base';\n\nconst SchemaShapeFactory = registerShapeFactory('schema', {\n defaultShapeType: '', // 'schema' is for some custom shapes, so will not specify defaultShapeType\n});\n\nexport default SchemaShapeFactory;\n","import { LooseObject } from '../interface';\nimport { getXDimensionLength } from '../util/coordinate';\nimport Geometry from './base';\n/** 引入对应的 ShapeFactory */\nimport './shape/schema';\nimport { getDefaultSize } from './util/shape-size';\n\n/**\n * Schema 几何标记,用于一些自定义图形的绘制,比如箱型图、股票图等。\n */\nexport default class Schema extends Geometry {\n public readonly type: string = 'schema';\n public readonly shapeType: string = 'schema';\n protected generatePoints: boolean = true;\n\n /**\n * 获取 Shape 的关键点数据。\n * @param record\n * @returns\n */\n protected createShapePointsCfg(record: LooseObject) {\n const cfg = super.createShapePointsCfg(record);\n\n // 计算每个 shape 的 size\n let size;\n const sizeAttr = this.getAttribute('size');\n if (sizeAttr) {\n size = this.getAttributeValues(sizeAttr, record)[0];\n // 归一化\n const coordinate = this.coordinate;\n const coordinateWidth = getXDimensionLength(coordinate);\n size = size / coordinateWidth;\n } else {\n if (!this.defaultSize) {\n this.defaultSize = getDefaultSize(this);\n }\n size = this.defaultSize;\n }\n cfg.size = size;\n\n return cfg;\n }\n}\n","import { each, max, map, isArray } from '@antv/util';\nimport { IGroup } from '../../../dependents';\nimport { ShapeInfo, ShapeMarkerCfg, ViolinShapePoint } from '../../../interface';\nimport { registerShape, registerShapeFactory } from '../base';\nimport { getViolinPath } from '../util/get-path-points';\nimport { getStyle } from '../util/get-style';\n\nfunction normalizeSize(arr: number[]) {\n if (!isArray(arr)) {\n return [];\n }\n const maxValue = max(arr);\n return map(arr, (num) => num / maxValue);\n}\n\nconst ViolinShapeFactory = registerShapeFactory('violin', {\n defaultShapeType: 'violin',\n getDefaultPoints(pointInfo: ViolinShapePoint) {\n const radius = pointInfo.size / 2;\n const points = [];\n const sizeArr = normalizeSize(pointInfo._size);\n\n each(pointInfo.y as number[], (y, index) => {\n const offset = sizeArr[index] * radius;\n const isMin = index === 0;\n const isMax = index === (pointInfo.y as number[]).length - 1;\n points.push({\n isMin,\n isMax,\n x: (pointInfo.x as number) - offset,\n y,\n });\n points.unshift({\n isMin,\n isMax,\n x: (pointInfo.x as number) + offset,\n y,\n });\n });\n return points;\n },\n});\n\nregisterShape('violin', 'violin', {\n draw(cfg: ShapeInfo, container: IGroup) {\n const shapeAttrs = getStyle(cfg, true, true);\n const path = this.parsePath(getViolinPath(cfg.points));\n return container.addShape('path', {\n attrs: {\n ...shapeAttrs,\n path,\n },\n name: 'violin',\n });\n },\n getMarker(markerCfg: ShapeMarkerCfg) {\n const { color } = markerCfg;\n\n return {\n symbol: 'circle',\n style: {\n r: 4,\n fill: color,\n },\n };\n },\n});\n\nexport default ViolinShapeFactory;\n","import { get } from '@antv/util';\nimport { FIELD_ORIGIN } from '../constant';\nimport { Datum, ViolinShapePoint } from '../interface';\nimport { getXDimensionLength } from '../util/coordinate';\nimport { getDefaultSize } from './util/shape-size';\nimport Geometry from './base';\n/** 引入 Path 对应的 ShapeFactory */\nimport './shape/violin';\n\n/**\n * Violin 几何标记。\n * 用于绘制小提琴图。\n */\nexport default class Violin extends Geometry {\n public readonly type: string = 'violin';\n public readonly shapeType: string = 'violin';\n protected generatePoints: boolean = true;\n /** size 私有映射字段 */\n private _sizeField: string;\n\n /**\n * 获取 Shape 的关键点数据。\n * @param record\n * @returns\n */\n protected createShapePointsCfg(record: Datum) {\n const cfg = super.createShapePointsCfg(record);\n\n // 计算每个 shape 的 size\n let size;\n const sizeAttr = this.getAttribute('size');\n if (sizeAttr) {\n size = this.getAttributeValues(sizeAttr, record)[0];\n // 归一化\n const coordinate = this.coordinate;\n const coordinateWidth = getXDimensionLength(coordinate);\n size = size / coordinateWidth;\n } else {\n if (!this.defaultSize) {\n this.defaultSize = getDefaultSize(this);\n }\n size = this.defaultSize;\n }\n cfg.size = size;\n cfg._size = get(record[FIELD_ORIGIN], [this._sizeField]);\n return cfg;\n }\n\n /**\n * @override\n */\n protected initAttributes() {\n const { attributeOption } = this;\n const sizeField = attributeOption.size\n ? attributeOption.size.fields[0]\n : this._sizeField\n ? this._sizeField\n : 'size';\n this._sizeField = sizeField;\n // fixme 干啥要删掉\n delete attributeOption.size;\n super.initAttributes();\n }\n}\n","import { each } from '@antv/util';\nimport { Point } from '../../../interface';\n\n/**\n * @ignore\n * Gets cpath\n * @param from\n * @param to\n * @returns\n */\nexport function getCPath(from: Point, to: Point) {\n return ['C', (from.x * 1) / 2 + (to.x * 1) / 2, from.y, (from.x * 1) / 2 + (to.x * 1) / 2, to.y, to.x, to.y];\n}\n\n/**\n * @ignore\n * Gets qpath\n * @param to\n * @param center\n * @returns\n */\nexport function getQPath(to: Point, center: Point) {\n const points = [];\n points.push({\n x: center.x,\n y: center.y,\n });\n points.push(to);\n\n const sub = ['Q'];\n each(points, (point) => {\n sub.push(point.x, point.y);\n });\n\n return sub;\n}\n","import { IGroup } from '../../../dependents';\nimport { ShapeInfo, ShapeMarkerCfg } from '../../../interface';\nimport { registerShape } from '../base';\nimport { getShapeAttrs } from './util';\n\n/**\n * 描边但不填充的区域图\n */\nregisterShape('area', 'line', {\n draw(cfg: ShapeInfo, container: IGroup) {\n const attrs = getShapeAttrs(cfg, true, false, this);\n const shape = container.addShape({\n type: 'path',\n attrs,\n name: 'area',\n });\n\n return shape;\n },\n getMarker(markerCfg: ShapeMarkerCfg) {\n const { color } = markerCfg;\n return {\n symbol: (x: number, y: number, r: number = 5.5) => {\n return [['M', x - r, y - 4], ['L', x + r, y - 4], ['L', x + r, y + 4], ['L', x - r, y + 4], ['Z']];\n },\n style: {\n r: 5,\n stroke: color,\n fill: null,\n },\n };\n },\n});\n","import { IGroup } from '../../../dependents';\nimport { ShapeInfo, ShapeMarkerCfg } from '../../../interface';\n\nimport { registerShape } from '../base';\nimport { getConstraint, getShapeAttrs } from './util';\n\n/**\n * 填充的平滑曲面图\n */\nregisterShape('area', 'smooth', {\n draw(cfg: ShapeInfo, container: IGroup) {\n const coordinate = this.coordinate;\n const attrs = getShapeAttrs(cfg, false, true, this, getConstraint(coordinate));\n const shape = container.addShape({\n type: 'path',\n attrs,\n name: 'area',\n });\n\n return shape;\n },\n getMarker(markerCfg: ShapeMarkerCfg) {\n const { color } = markerCfg;\n return {\n symbol: (x: number, y: number, r: number = 5.5) => {\n return [['M', x - r, y - 4], ['L', x + r, y - 4], ['L', x + r, y + 4], ['L', x - r, y + 4], ['Z']];\n },\n style: {\n r: 5,\n fill: color,\n fillOpacity: 1,\n },\n };\n },\n});\n","import { IGroup } from '../../../dependents';\nimport { ShapeInfo, ShapeMarkerCfg } from '../../../interface';\n\nimport { registerShape } from '../base';\nimport { getConstraint, getShapeAttrs } from './util';\n\n/** 描边的平滑曲面图 */\nregisterShape('area', 'smooth-line', {\n draw(cfg: ShapeInfo, container: IGroup) {\n const coordinate = this.coordinate;\n const attrs = getShapeAttrs(cfg, true, true, this, getConstraint(coordinate));\n const shape = container.addShape({\n type: 'path',\n attrs,\n name: 'area',\n });\n\n return shape;\n },\n getMarker(markerCfg: ShapeMarkerCfg) {\n const { color } = markerCfg;\n return {\n symbol: (x: number, y: number, r: number = 5.5) => {\n return [['M', x - r, y - 4], ['L', x + r, y - 4], ['L', x + r, y + 4], ['L', x - r, y + 4], ['Z']];\n },\n style: {\n r: 5,\n stroke: color,\n fill: null,\n },\n };\n },\n});\n","import { IGroup } from '../../../dependents';\nimport { Point, ShapeInfo, ShapeMarkerCfg } from '../../../interface';\n\nimport { getArcPath } from '../../../util/graphics';\nimport { registerShape } from '../base';\nimport { getStyle } from '../util/get-style';\nimport { getCPath, getQPath } from './util';\n\nfunction getArcShapePath(from: Point, to: Point, center: Point) {\n const sub = getQPath(to, center);\n const path = [['M', from.x, from.y]];\n path.push(sub);\n return path;\n}\n\nfunction getArcShapeWeightPath(points: Point[], center: Point) {\n const arc1 = getQPath(points[1], center);\n const arc2 = getQPath(points[3], center);\n const path = [['M', points[0].x, points[0].y]];\n path.push(arc2);\n path.push(['L', points[3].x, points[3].y]);\n path.push(['L', points[2].x, points[2].y]);\n path.push(arc1);\n path.push(['L', points[1].x, points[1].y]);\n path.push(['L', points[0].x, points[0].y]);\n path.push(['Z']);\n return path;\n}\n\n// 弧线包括笛卡尔坐标系下的半圆弧线、极坐标系下以圆心为控制点的二阶曲线、笛卡尔坐标系下带权重的三阶曲线、极坐标系下带权重的以圆心为控制点的二阶曲线\nregisterShape('edge', 'arc', {\n draw(cfg: ShapeInfo, container: IGroup) {\n const style = getStyle(cfg, true, false, 'lineWidth');\n\n let points = cfg.points as Point[];\n const type = points.length > 2 ? 'weight' : 'normal';\n let path;\n if (cfg.isInCircle) {\n const center = { x: 0, y: 1 };\n if (type === 'normal') {\n path = getArcShapePath(points[0], points[1], center);\n } else {\n style.fill = style.stroke;\n path = getArcShapeWeightPath(points, center);\n }\n path = this.parsePath(path);\n\n return container.addShape('path', {\n attrs: {\n ...style,\n path,\n },\n });\n } else {\n if (type === 'normal') {\n points = this.parsePoints(points);\n path = getArcPath(\n (points[1].x + points[0].x) / 2,\n points[0].y,\n Math.abs(points[1].x - points[0].x) / 2,\n Math.PI,\n Math.PI * 2\n );\n return container.addShape('path', {\n attrs: {\n ...style,\n path,\n },\n });\n } else {\n const c1 = getCPath(points[1], points[3]);\n const c2 = getCPath(points[2], points[0]);\n\n path = [\n ['M', points[0].x, points[0].y],\n ['L', points[1].x, points[1].y],\n c1,\n ['L', points[3].x, points[3].y],\n ['L', points[2].x, points[2].y],\n c2,\n ['Z'],\n ];\n path = this.parsePath(path);\n style.fill = style.stroke;\n\n return container.addShape('path', {\n attrs: {\n ...style,\n path,\n },\n });\n }\n }\n },\n getMarker(markerCfg: ShapeMarkerCfg) {\n return {\n symbol: 'circle',\n style: {\n r: 4.5,\n fill: markerCfg.color,\n },\n };\n },\n});\n","import { IGroup } from '../../../dependents';\nimport { Point, ShapeInfo, ShapeMarkerCfg } from '../../../interface';\n\nimport { registerShape } from '../base';\nimport { getStyle } from '../util/get-style';\nimport { getCPath } from './util';\n\nfunction getSmoothPath(from: Point, to: Point) {\n const sub = getCPath(from, to);\n const path = [['M', from.x, from.y]];\n\n path.push(sub);\n return path;\n}\n\nregisterShape('edge', 'smooth', {\n draw(cfg: ShapeInfo, container: IGroup) {\n const style = getStyle(cfg, true, false, 'lineWidth');\n const points = cfg.points;\n const path = this.parsePath(getSmoothPath(points[0] as Point, points[1] as Point));\n return container.addShape('path', {\n attrs: {\n ...style,\n path,\n },\n });\n },\n getMarker(markerCfg: ShapeMarkerCfg) {\n return {\n symbol: 'circle',\n style: {\n r: 4.5,\n fill: markerCfg.color,\n },\n };\n },\n});\n","import { each } from '@antv/util';\nimport { IGroup } from '../../../dependents';\nimport { Point, ShapeInfo, ShapeMarkerCfg } from '../../../interface';\n\nimport { registerShape } from '../base';\nimport { getStyle } from '../util/get-style';\n\nconst CORNER_PERCENT = 1 / 3;\n\nfunction getVHVPath(from: Point, to: Point) {\n const points = [];\n points.push({\n x: from.x,\n y: from.y * (1 - CORNER_PERCENT) + to.y * CORNER_PERCENT,\n });\n points.push({\n x: to.x,\n y: from.y * (1 - CORNER_PERCENT) + to.y * CORNER_PERCENT,\n });\n points.push(to);\n\n const path = [['M', from.x, from.y]];\n each(points, (point) => {\n path.push(['L', point.x, point.y]);\n });\n\n return path;\n}\n\nregisterShape('edge', 'vhv', {\n draw(cfg: ShapeInfo, container: IGroup) {\n const style = getStyle(cfg, true, false, 'lineWidth');\n const points = cfg.points;\n const path = this.parsePath(getVHVPath(points[0] as Point, points[1] as Point));\n return container.addShape('path', {\n attrs: {\n ...style,\n path,\n },\n });\n },\n getMarker(markerCfg: ShapeMarkerCfg) {\n return {\n symbol: 'circle',\n style: {\n r: 4.5,\n fill: markerCfg.color,\n },\n };\n },\n});\n","import { IGroup } from '../../../dependents';\nimport { Point, ShapeInfo, ShapeMarkerCfg, ShapePoint } from '../../../interface';\n\nimport { registerShape } from '../base';\nimport { getStyle } from '../util/get-style';\nimport { getFunnelPath, getRectPoints } from './util';\n\n/** 漏斗图 */\nregisterShape('interval', 'funnel', {\n getPoints(shapePoint: ShapePoint) {\n shapePoint.size = shapePoint.size * 2; // 漏斗图的 size 是柱状图的两倍\n return getRectPoints(shapePoint);\n },\n draw(cfg: ShapeInfo, container: IGroup) {\n const style = getStyle(cfg, false, true);\n const path = this.parsePath(getFunnelPath(cfg.points as Point[], cfg.nextPoints as Point[], false));\n const shape = container.addShape('path', {\n attrs: {\n ...style,\n path,\n },\n name: 'interval',\n });\n return shape;\n },\n getMarker(markerCfg: ShapeMarkerCfg) {\n const { color } = markerCfg;\n return {\n symbol: 'square',\n style: {\n r: 4,\n fill: color,\n },\n };\n },\n});\n","import { IGroup } from '../../../dependents';\nimport { Point, ShapeInfo, ShapeMarkerCfg } from '../../../interface';\n\nimport { registerShape } from '../base';\nimport { BACKGROUND_SHAPE } from '../constant';\nimport { getBackgroundRectStyle, getStyle } from '../util/get-style';\nimport { getBackgroundRectPath, getRectPath } from './util';\n\n/** 描边柱状图 */\nregisterShape('interval', 'hollow-rect', {\n draw(cfg: ShapeInfo, container: IGroup) {\n const style = getStyle(cfg, true, false);\n let group = container;\n const backgroundCfg = cfg?.background;\n if (backgroundCfg) {\n group = container.addGroup();\n const backgroundStyle = getBackgroundRectStyle(cfg);\n const backgroundPath = getBackgroundRectPath(cfg, this.parsePoints(cfg.points) as Point[], this.coordinate);\n group.addShape('path', {\n attrs: {\n ...backgroundStyle,\n path: backgroundPath,\n },\n capture: false,\n zIndex: -1,\n name: BACKGROUND_SHAPE,\n });\n }\n\n const path = this.parsePath(getRectPath(cfg.points as Point[]));\n const shape = group.addShape('path', {\n attrs: {\n ...style,\n path,\n },\n name: 'interval',\n });\n\n return backgroundCfg ? group : shape;\n },\n getMarker(markerCfg: ShapeMarkerCfg) {\n const { color, isInPolar } = markerCfg;\n if (isInPolar) {\n return {\n symbol: 'circle',\n style: {\n r: 4.5,\n stroke: color,\n fill: null,\n },\n };\n }\n\n return {\n symbol: 'square',\n style: {\n r: 4,\n stroke: color,\n fill: null,\n },\n };\n },\n});\n","import { isArray } from '@antv/util';\nimport { IGroup } from '../../../dependents';\nimport { Point, ShapeInfo, ShapeMarkerCfg, ShapePoint } from '../../../interface';\n\nimport { registerShape } from '../base';\nimport { getStyle } from '../util/get-style';\nimport { getRectPath } from './util';\nimport { omit } from '../../../util/helper';\n\n// 根据数据点生成 Line 的两个关键点\nfunction getLinePoints(pointInfo: ShapePoint): Point[] {\n const { x, y, y0 } = pointInfo;\n\n if (isArray(y)) {\n return y.map((yItem, idx) => {\n return {\n x: isArray(x) ? x[idx] : x,\n y: yItem,\n };\n });\n }\n\n // 起始点从 y0 开始\n return [\n { x: x as number, y: y0 },\n { x: x as number, y },\n ];\n}\n\nregisterShape('interval', 'line', {\n getPoints(shapePoint: ShapePoint) {\n return getLinePoints(shapePoint);\n },\n draw(cfg: ShapeInfo, container: IGroup) {\n const style = getStyle(cfg, true, false, 'lineWidth');\n const newStyle = omit({ ...style }, ['fill']);\n const path = this.parsePath(getRectPath(cfg.points as Point[], false));\n const shape = container.addShape('path', {\n attrs: {\n ...newStyle,\n path,\n },\n name: 'interval',\n });\n\n return shape;\n },\n getMarker(markerCfg: ShapeMarkerCfg) {\n const { color } = markerCfg;\n return {\n symbol: (x: number, y: number, r: number) => {\n return [\n ['M', x, y - r],\n ['L', x, y + r],\n ];\n },\n style: {\n r: 5,\n stroke: color,\n },\n };\n },\n});\n","import { IGroup } from '../../../dependents';\nimport { Point, ShapeInfo, ShapeMarkerCfg, ShapePoint } from '../../../interface';\n\nimport { registerShape } from '../base';\nimport { getStyle } from '../util/get-style';\nimport { getFunnelPath, getRectPoints } from './util';\n\n/** 金字塔图,尖底漏斗图 */\nregisterShape('interval', 'pyramid', {\n getPoints(shapePoint: ShapePoint) {\n shapePoint.size = shapePoint.size * 2; // 漏斗图的 size 是柱状图的两倍\n return getRectPoints(shapePoint);\n },\n draw(cfg: ShapeInfo, container: IGroup) {\n const style = getStyle(cfg, false, true);\n const path = this.parsePath(getFunnelPath(cfg.points as Point[], cfg.nextPoints as Point[], true));\n const shape = container.addShape('path', {\n attrs: {\n ...style,\n path,\n },\n name: 'interval',\n });\n\n return shape;\n },\n getMarker(markerCfg: ShapeMarkerCfg) {\n const { color } = markerCfg;\n return {\n symbol: 'square',\n style: {\n r: 4,\n fill: color,\n },\n };\n },\n});\n","import { isArray } from '@antv/util';\nimport { IGroup } from '../../../dependents';\nimport { Point, ShapeInfo, ShapeMarkerCfg, ShapePoint } from '../../../interface';\n\nimport { registerShape } from '../base';\nimport { getStyle } from '../util/get-style';\n\n// 根据数据点生成 tick shape 的 6 个关键点\nfunction getTickPoints(pointInfo: ShapePoint): Point[] {\n const { x, y, y0, size } = pointInfo;\n let yMin;\n let yMax;\n if (isArray(y)) {\n [yMin, yMax] = y;\n } else {\n yMin = y0;\n yMax = y;\n }\n\n const xMax = (x as number) + size / 2;\n const xMin = (x as number) - size / 2;\n\n // tick 关键点顺序\n // 4 - 1 - 5\n // |\n // 2 - 0 - 3\n return [\n { x: x as number, y: yMin },\n { x: x as number, y: yMax },\n { x: xMin, y: yMin },\n { x: xMax, y: yMin },\n { x: xMin, y: yMax },\n { x: xMax, y: yMax },\n ];\n}\n\n// 根据 tick 关键点绘制 path\nfunction getTickPath(points: Point[]) {\n return [\n ['M', points[0].x, points[0].y],\n ['L', points[1].x, points[1].y],\n ['M', points[2].x, points[2].y],\n ['L', points[3].x, points[3].y],\n ['M', points[4].x, points[4].y],\n ['L', points[5].x, points[5].y],\n ];\n}\n\n/** I 形状柱状图,常用于 error bar chart */\nregisterShape('interval', 'tick', {\n getPoints(shapePoint: ShapePoint) {\n return getTickPoints(shapePoint);\n },\n draw(cfg: ShapeInfo, container: IGroup) {\n const style = getStyle(cfg, true, false);\n const path = this.parsePath(getTickPath(cfg.points as Point[]));\n const shape = container.addShape('path', {\n attrs: {\n ...style,\n path,\n },\n name: 'interval',\n });\n\n return shape;\n },\n getMarker(markerCfg: ShapeMarkerCfg) {\n const { color } = markerCfg;\n return {\n symbol: (x: number, y: number, r: number) => {\n return [\n ['M', x - r / 2, y - r],\n ['L', x + r / 2, y - r],\n ['M', x, y - r],\n ['L', x, y + r],\n ['M', x - r / 2, y + r],\n ['L', x + r / 2, y + r],\n ];\n },\n style: {\n r: 5,\n stroke: color,\n },\n };\n },\n});\n","import { each } from '@antv/util';\nimport { IGroup } from '../../../dependents';\nimport { Point, ShapeInfo, ShapeMarkerCfg } from '../../../interface';\n\nimport { registerShape } from '../base';\nimport { getPathPoints } from '../util/get-path-points';\nimport { getStyle } from '../util/get-style';\nimport { getLineMarker } from './util';\n\nconst interpolateCallback = (point: Point, nextPoint: Point, shapeType: string) => {\n const x = point.x as number;\n const y = point.y as number;\n const nextX = nextPoint.x as number;\n const nextY = nextPoint.y as number;\n let result;\n\n switch (shapeType) {\n case 'hv':\n result = [{ x: nextX, y }];\n break;\n case 'vh':\n result = [{ x, y: nextY }];\n break;\n case 'hvh':\n const middleX = (nextX + x) / 2;\n result = [\n { x: middleX, y },\n { x: middleX, y: nextY },\n ];\n break;\n case 'vhv':\n const middleY = (y + nextY) / 2;\n result = [\n { x, y: middleY },\n { x: nextX, y: middleY },\n ];\n break;\n default:\n break;\n }\n\n return result;\n};\n\nfunction getInterpolatePoints(points: Point[], shapeType: string) {\n let result = [];\n each(points, (point: Point, index) => {\n const nextPoint = points[index + 1];\n result.push(point);\n if (nextPoint) {\n const interpolatePoint = interpolateCallback(point, nextPoint, shapeType);\n result = result.concat(interpolatePoint);\n }\n });\n return result;\n}\n\n// 插值的图形path,不考虑null\nfunction getInterpolatePath(points: Point[]) {\n return points.map((point, index) => {\n return index === 0 ? ['M', point.x, point.y] : ['L', point.x, point.y];\n });\n}\n\n// 插值的图形\nfunction getInterpolateShapeAttrs(cfg: ShapeInfo, shapeType: string) {\n const points = getPathPoints(cfg.points, cfg.connectNulls, cfg.showSinglePoint); // 根据 connectNulls 值处理 points\n let path = [];\n each(points, (eachLinePoints) => {\n const interpolatePoints = getInterpolatePoints(eachLinePoints, shapeType);\n path = path.concat(getInterpolatePath(interpolatePoints));\n });\n\n return {\n ...getStyle(cfg, true, false, 'lineWidth'),\n path,\n };\n}\n\n// step line\neach(['hv', 'vh', 'hvh', 'vhv'], (shapeType) => {\n registerShape('line', shapeType, {\n draw(cfg: ShapeInfo, container: IGroup) {\n const attrs = getInterpolateShapeAttrs(cfg, shapeType);\n const shape = container.addShape({\n type: 'path',\n attrs,\n name: 'line',\n });\n\n return shape;\n },\n getMarker(markerCfg: ShapeMarkerCfg) {\n return getLineMarker(markerCfg, shapeType);\n },\n });\n});\n","import { isArray, isNil } from '@antv/util';\nimport { IGroup, PathCommand } from '../../../dependents';\nimport { Point, ShapeInfo, ShapeMarkerCfg, ShapePoint } from '../../../interface';\n\nimport { registerShape } from '../base';\nimport { getStyle } from '../util/get-style';\n\nfunction parseValue(value: number[]) {\n const array = !isArray(value) ? [value] : value;\n\n const min = array[0]; // 最小值\n const max = array[array.length - 1]; // 最大值\n const min1 = array.length > 1 ? array[1] : min;\n const max1 = array.length > 3 ? array[3] : max;\n const median = array.length > 2 ? array[2] : min1;\n\n return {\n min, // 最小值\n max, // 最大值\n min1,\n max1,\n median,\n };\n}\n\nfunction getBoxPoints(x: number | number[], y: number | number[], size: number): Point[] {\n const halfSize = size / 2;\n let pointsArray;\n if (isArray(y)) {\n // 2维\n const { min, max, median, min1, max1 } = parseValue(y);\n const minX = (x as number) - halfSize;\n const maxX = (x as number) + halfSize;\n pointsArray = [\n [minX, max],\n [maxX, max],\n [x as number, max],\n [x as number, max1],\n [minX, min1],\n [minX, max1],\n [maxX, max1],\n [maxX, min1],\n [x as number, min1],\n [x as number, min],\n [minX, min],\n [maxX, min],\n [minX, median],\n [maxX, median],\n ];\n } else {\n // 只有一个维度\n y = isNil(y) ? 0.5 : y;\n const { min, max, median, min1, max1 } = parseValue(x as number[]);\n const minY = y - halfSize;\n const maxY = y + halfSize;\n pointsArray = [\n [min, minY],\n [min, maxY],\n [min, y],\n [min1, y],\n [min1, minY],\n [min1, maxY],\n [max1, maxY],\n [max1, minY],\n [max1, y],\n [max, y],\n [max, minY],\n [max, maxY],\n [median, minY],\n [median, maxY],\n ];\n }\n\n return pointsArray.map((arr) => {\n return {\n x: arr[0],\n y: arr[1],\n };\n });\n}\n\nfunction getBoxPath(points): PathCommand[] {\n return [\n ['M', points[0].x, points[0].y],\n ['L', points[1].x, points[1].y],\n ['M', points[2].x, points[2].y],\n ['L', points[3].x, points[3].y],\n ['M', points[4].x, points[4].y],\n ['L', points[5].x, points[5].y],\n ['L', points[6].x, points[6].y],\n ['L', points[7].x, points[7].y],\n ['L', points[4].x, points[4].y], // 封闭 z\n ['Z'],\n ['M', points[8].x, points[8].y],\n ['L', points[9].x, points[9].y],\n ['M', points[10].x, points[10].y],\n ['L', points[11].x, points[11].y],\n ['M', points[12].x, points[12].y],\n ['L', points[13].x, points[13].y],\n ];\n}\n\n// box shape\nregisterShape('schema', 'box', {\n getPoints(shapePoint: ShapePoint) {\n const { x, y, size } = shapePoint;\n return getBoxPoints(x as number, y as number[], size);\n },\n draw(cfg: ShapeInfo, container: IGroup) {\n const style = getStyle(cfg, true, false);\n const path = this.parsePath(getBoxPath(cfg.points));\n const shape = container.addShape('path', {\n attrs: {\n ...style,\n path,\n name: 'schema',\n },\n });\n\n return shape;\n },\n getMarker(markerCfg: ShapeMarkerCfg) {\n const { color } = markerCfg;\n return {\n symbol(x: number, y: number, r: number) {\n const yValues = [y - 6, y - 3, y, y + 3, y + 6];\n const points = getBoxPoints(x, yValues, r);\n return [\n ['M', points[0].x + 1, points[0].y],\n ['L', points[1].x - 1, points[1].y],\n ['M', points[2].x, points[2].y],\n ['L', points[3].x, points[3].y],\n ['M', points[4].x, points[4].y],\n ['L', points[5].x, points[5].y],\n ['L', points[6].x, points[6].y],\n ['L', points[7].x, points[7].y],\n ['L', points[4].x, points[4].y],\n ['Z'],\n ['M', points[8].x, points[8].y],\n ['L', points[9].x, points[9].y],\n ['M', points[10].x + 1, points[10].y],\n ['L', points[11].x - 1, points[11].y],\n ['M', points[12].x, points[12].y],\n ['L', points[13].x, points[13].y],\n ];\n },\n style: {\n r: 6,\n lineWidth: 1,\n stroke: color,\n },\n };\n },\n});\n","import { isArray } from '@antv/util';\nimport { IGroup, PathCommand } from '../../../dependents';\nimport { Point, ShapeInfo, ShapeMarkerCfg, ShapePoint } from '../../../interface';\n\nimport { padEnd } from '../../../util/helper';\nimport { registerShape } from '../base';\nimport { getStyle } from '../util/get-style';\n\nfunction getCandleYValues(value: number | number[]) {\n const array = !isArray(value) ? [value] : value;\n // 从大到小排序\n const sorted = array.sort((a, b) => b - a);\n return padEnd(sorted, 4, sorted[sorted.length - 1]);\n}\n\n// get candle shape's key points\nfunction getCandlePoints(x: number, y: number[], size: number): Point[] {\n const yValues = getCandleYValues(y);\n return [\n { x, y: yValues[0] },\n { x, y: yValues[1] },\n { x: x - size / 2, y: yValues[2] },\n { x: x - size / 2, y: yValues[1] },\n { x: x + size / 2, y: yValues[1] },\n { x: x + size / 2, y: yValues[2] },\n { x, y: yValues[2] },\n { x, y: yValues[3] },\n ];\n}\n\nfunction getCandlePath(points): PathCommand[] {\n return [\n ['M', points[0].x, points[0].y],\n ['L', points[1].x, points[1].y],\n ['M', points[2].x, points[2].y],\n ['L', points[3].x, points[3].y],\n ['L', points[4].x, points[4].y],\n ['L', points[5].x, points[5].y],\n ['Z'],\n ['M', points[6].x, points[6].y],\n ['L', points[7].x, points[7].y],\n ];\n}\n\n// k line shape\nregisterShape('schema', 'candle', {\n getPoints(shapePoint: ShapePoint) {\n const { x, y, size } = shapePoint;\n return getCandlePoints(x as number, y as number[], size);\n },\n draw(cfg: ShapeInfo, container: IGroup) {\n const style = getStyle(cfg, true, true);\n const path = this.parsePath(getCandlePath(cfg.points));\n const shape = container.addShape('path', {\n attrs: {\n ...style,\n path,\n name: 'schema',\n },\n });\n\n return shape;\n },\n getMarker(markerCfg: ShapeMarkerCfg) {\n const { color } = markerCfg;\n return {\n symbol(x: number, y: number, r: number) {\n const yValues = [y + 7.5, y + 3, y - 3, y - 7.5];\n const points = getCandlePoints(x, yValues, r);\n return [\n ['M', points[0].x, points[0].y],\n ['L', points[1].x, points[1].y],\n ['M', points[2].x, points[2].y],\n ['L', points[3].x, points[3].y],\n ['L', points[4].x, points[4].y],\n ['L', points[5].x, points[5].y],\n ['Z'],\n ['M', points[6].x, points[6].y],\n ['L', points[7].x, points[7].y],\n ];\n },\n style: {\n lineWidth: 1,\n stroke: color,\n fill: color,\n r: 6,\n },\n };\n },\n});\n","import { isEmpty, clamp } from '@antv/util';\nimport { IGroup } from '../../../dependents';\nimport { ShapeInfo, ShapeMarkerCfg } from '../../../interface';\n\nimport { registerShape } from '../base';\nimport { getStyle } from '../util/get-style';\n\nfunction getRectAttrs(points: any[], size: number) {\n const width = Math.abs(points[0].x - points[2].x);\n const height = Math.abs(points[0].y - points[2].y);\n\n let len = Math.min(width, height);\n if (size) {\n len = clamp(size, 0, Math.min(width, height));\n }\n len = len / 2;\n const centerX = (points[0].x + points[2].x) / 2;\n const centerY = (points[0].y + points[2].y) / 2;\n\n return {\n x: centerX - len,\n y: centerY - len,\n width: len * 2,\n height: len * 2,\n };\n}\n\nregisterShape('polygon', 'square', {\n draw(cfg: ShapeInfo, container: IGroup) {\n if (!isEmpty(cfg.points)) {\n const shapeAttrs = getStyle(cfg, true, true);\n const points = this.parsePoints(cfg.points); // 转换为画布坐标\n return container.addShape('rect', {\n attrs: {\n ...shapeAttrs,\n ...getRectAttrs(points, cfg.size), // 获取 rect 绘图信息\n },\n name: 'polygon',\n });\n }\n },\n getMarker(markerCfg: ShapeMarkerCfg) {\n const { color } = markerCfg;\n return {\n symbol: 'square',\n style: {\n r: 4,\n fill: color,\n },\n };\n },\n});\n","import { each } from '@antv/util';\nimport { IGroup } from '../../../dependents';\nimport { ShapeInfo, ShapeMarkerCfg } from '../../../interface';\n\nimport { MarkerSymbols } from '../../../util/marker';\nimport { registerShape } from '../base';\nimport { drawPoints, HOLLOW_SHAPES } from './util';\n\n// 添加 hollowShape\neach(HOLLOW_SHAPES, (shapeName: string) => {\n registerShape('point', shapeName, {\n draw(cfg: ShapeInfo, container: IGroup) {\n return drawPoints(this, cfg, container, shapeName, true);\n },\n getMarker(markerCfg: ShapeMarkerCfg) {\n const { color } = markerCfg;\n return {\n symbol: MarkerSymbols[shapeName],\n style: {\n r: 4.5,\n stroke: color,\n fill: null,\n },\n };\n },\n });\n});\n","import { IGroup } from '../../../dependents';\nimport { ShapeInfo, ShapeMarkerCfg } from '../../../interface';\n\nimport { registerShape } from '../base';\nimport { getStyle } from '../util/get-style';\n\nregisterShape('point', 'image', {\n draw(cfg: ShapeInfo, container: IGroup) {\n const { r: size } = getStyle(cfg, false, false, 'r');\n const points = this.parsePoints(cfg.points);\n let pointPosition = points[0];\n if (cfg.isStack) {\n pointPosition = points[1];\n } else if (points.length > 1) {\n const group = container.addGroup();\n for (const point of points) {\n group.addShape('image', {\n attrs: {\n x: (point.x as number) - size / 2,\n y: (point.y as number) - size,\n width: size,\n height: size,\n img: cfg.shape[1],\n },\n });\n }\n\n return group;\n }\n\n return container.addShape('image', {\n attrs: {\n x: (pointPosition.x as number) - size / 2,\n y: (pointPosition.y as number) - size,\n width: size,\n height: size,\n img: cfg.shape[1],\n },\n });\n },\n getMarker(markerCfg: ShapeMarkerCfg) {\n const { color } = markerCfg;\n return {\n symbol: 'circle',\n style: {\n r: 4.5,\n fill: color,\n },\n };\n },\n});\n","import { each } from '@antv/util';\nimport { IGroup } from '../../../dependents';\nimport { ShapeInfo, ShapeMarkerCfg } from '../../../interface';\n\nimport { MarkerSymbols } from '../../../util/marker';\nimport { registerShape } from '../base';\nimport { drawPoints, SHAPES } from './util';\n\n// 所有的 SHAPES 都注册一下\neach(SHAPES, (shapeName: string) => {\n registerShape('point', shapeName, {\n draw(cfg: ShapeInfo, container: IGroup) {\n return drawPoints(this, cfg, container, shapeName, false);\n },\n getMarker(markerCfg: ShapeMarkerCfg) {\n const { color } = markerCfg;\n return {\n symbol: MarkerSymbols[shapeName] || shapeName,\n style: {\n r: 4.5,\n fill: color,\n },\n };\n },\n });\n});\n","import { IGroup } from '../../../dependents';\nimport { ShapeInfo, ShapeMarkerCfg } from '../../../interface';\nimport { registerShape } from '../base';\nimport { getSmoothViolinPath } from '../util/get-path-points';\nimport { getStyle } from '../util/get-style';\n\n/**\n * 平滑边界的小提琴图\n */\nregisterShape('violin', 'smooth', {\n draw(cfg: ShapeInfo, container: IGroup) {\n const attrs = getStyle(cfg, true, true);\n const path = this.parsePath(getSmoothViolinPath(cfg.points));\n return container.addShape('path', {\n attrs: {\n ...attrs,\n path,\n },\n });\n },\n getMarker(markerCfg: ShapeMarkerCfg) {\n const { color } = markerCfg;\n return {\n symbol: 'circle',\n style: {\n stroke: null,\n r: 4,\n fill: color,\n },\n };\n },\n});\n","import { IGroup, Point } from '../../../dependents';\nimport { ShapeInfo, ShapeMarkerCfg } from '../../../interface';\nimport { registerShape } from '../base';\nimport { getSmoothViolinPath, getViolinPath } from '../util/get-path-points';\nimport { getStyle } from '../util/get-style';\n\n/**\n * 空心小提琴图\n */\nregisterShape('violin', 'hollow', {\n draw(cfg: ShapeInfo, container: IGroup) {\n const attrs = getStyle(cfg, true, false);\n const path = this.parsePath(getViolinPath(cfg.points));\n return container.addShape('path', {\n attrs: {\n ...attrs,\n path,\n },\n });\n },\n getMarker(markerCfg: ShapeMarkerCfg) {\n const { color } = markerCfg;\n return {\n symbol: 'circle',\n style: {\n r: 4,\n fill: null,\n stroke: color,\n },\n };\n },\n});\n\n/**\n * 平滑边界的空心小提琴图\n */\nregisterShape('violin', 'hollow-smooth', {\n draw(cfg: ShapeInfo, container: IGroup) {\n const attrs = getStyle(cfg, true, false);\n const path = this.parsePath(getSmoothViolinPath(cfg.points));\n return container.addShape('path', {\n attrs: {\n ...attrs,\n path,\n },\n });\n },\n getMarker(markerCfg: ShapeMarkerCfg) {\n const { color } = markerCfg;\n return {\n symbol: 'circle',\n style: {\n r: 4,\n fill: null,\n stroke: color,\n },\n };\n },\n});\n","import { get, deepMix, isArray } from '@antv/util';\nimport { Writeable } from '../../util/types';\nimport { MappingDatum, Point } from '../../interface';\nimport GeometryLabel from './base';\nimport { LabelCfg, LabelItem, LabelPointCfg, TextAlign } from './interface';\n\n/**\n * 柱状图 label\n */\nexport default class IntervalLabel extends GeometryLabel {\n /**\n * 获取 interval label 的方向,取决于 value 的值是正还是负\n * @param labelCfg\n */\n private getLabelValueDir(mappingData: MappingDatum) {\n // points 中的 x/y 和 transpose 无关\n const dim = 'y';\n const { points } = mappingData;\n\n return points[0][dim] <= points[2][dim] ? 1 : -1;\n }\n\n /**\n * 重载:根据 interval 值的正负来调整 label 偏移量\n * @param labelCfg\n * @param index\n * @param total\n */\n protected getLabelOffsetPoint(labelCfg: LabelCfg, index: number, total: number, position?: string) {\n let point = super.getLabelOffsetPoint(labelCfg, index, total);\n const coordinate = this.getCoordinate();\n const transposed = coordinate.isTransposed;\n const dim = transposed ? 'x' : 'y';\n const dir = this.getLabelValueDir(labelCfg.mappingData);\n point = { ...point, [dim]: point[dim] * dir };\n\n if (coordinate.isReflect('x')) {\n point = {\n ...point,\n x: point.x * -1,\n };\n }\n if (coordinate.isReflect('y')) {\n point = {\n ...point,\n y: point.y * -1,\n };\n }\n\n return point;\n }\n\n /**\n * 重载:定制 interval label 的默认主题配置\n * @param labelCfg\n */\n protected getThemedLabelCfg(labelCfg: LabelCfg) {\n const geometry = this.geometry;\n const defaultLabelCfg = this.getDefaultLabelCfg();\n const { theme } = geometry;\n\n // 如果 interval label position 设置为 middle,则将主题中的 offset 覆盖为 0\n return deepMix({}, defaultLabelCfg, theme.labels, labelCfg.position === 'middle' ? { offset: 0 } : {}, labelCfg);\n }\n\n protected setLabelPosition(\n labelPointCfg: Writeable,\n mappingData: MappingDatum,\n index: number,\n position: string\n ) {\n const coordinate = this.getCoordinate();\n const transposed = coordinate.isTransposed;\n const shapePoints = mappingData.points as Point[];\n const point0 = coordinate.convert(shapePoints[0]);\n const point2 = coordinate.convert(shapePoints[2]);\n const dir = this.getLabelValueDir(mappingData);\n\n let top;\n let right;\n let bottom;\n let left;\n\n const shape = isArray(mappingData.shape) ? mappingData.shape[0] : mappingData.shape;\n if (shape === 'funnel' || shape === 'pyramid') {\n // 处理漏斗图\n const nextPoints = get(mappingData, 'nextPoints');\n const points = get(mappingData, 'points');\n if (nextPoints) {\n // 非漏斗图底部\n const p0 = coordinate.convert(points[0] as Point);\n const p1 = coordinate.convert(points[1] as Point);\n const nextP0 = coordinate.convert(nextPoints[0] as Point);\n const nextP1 = coordinate.convert(nextPoints[1] as Point);\n\n // TODO: 使用包围盒的计算方法\n if (transposed) {\n top = Math.min(nextP0.y, p0.y);\n bottom = Math.max(nextP0.y, p0.y);\n right = (p1.x + nextP1.x) / 2;\n left = (p0.x + nextP0.x) / 2;\n } else {\n top = Math.min((p1.y + nextP1.y) / 2, (p0.y + nextP0.y) / 2);\n bottom = Math.max((p1.y + nextP1.y) / 2, (p0.y + nextP0.y) / 2);\n right = nextP1.x;\n left = p0.x;\n }\n } else {\n top = Math.min(point2.y, point0.y);\n bottom = Math.max(point2.y, point0.y);\n right = point2.x;\n left = point0.x;\n }\n } else {\n top = Math.min(point2.y, point0.y);\n bottom = Math.max(point2.y, point0.y);\n right = point2.x;\n left = point0.x;\n }\n\n switch (position) {\n case 'right':\n labelPointCfg.x = right;\n labelPointCfg.y = (top + bottom) / 2;\n labelPointCfg.textAlign = get(labelPointCfg, 'textAlign', dir > 0 ? 'left' : 'right');\n break;\n case 'left':\n labelPointCfg.x = left;\n labelPointCfg.y = (top + bottom) / 2;\n labelPointCfg.textAlign = get(labelPointCfg, 'textAlign', dir > 0 ? 'left' : 'right');\n break;\n case 'bottom':\n if (transposed) {\n labelPointCfg.x = (right + left) / 2;\n }\n labelPointCfg.y = bottom;\n labelPointCfg.textAlign = get(labelPointCfg, 'textAlign', 'center');\n labelPointCfg.textBaseline = get(labelPointCfg, 'textBaseline', dir > 0 ? 'bottom' : 'top');\n break;\n case 'middle':\n if (transposed) {\n labelPointCfg.x = (right + left) / 2;\n }\n labelPointCfg.y = (top + bottom) / 2;\n labelPointCfg.textAlign = get(labelPointCfg, 'textAlign', 'center');\n labelPointCfg.textBaseline = get(labelPointCfg, 'textBaseline', 'middle');\n break;\n case 'top':\n if (transposed) {\n labelPointCfg.x = (right + left) / 2;\n }\n labelPointCfg.y = top;\n labelPointCfg.textAlign = get(labelPointCfg, 'textAlign', 'center');\n labelPointCfg.textBaseline = get(labelPointCfg, 'textBaseline', dir > 0 ? 'bottom' : 'top');\n break;\n default:\n break;\n }\n }\n}\n","import { each, get, isArray, map, isNumber, isString } from '@antv/util';\nimport { MappingDatum, Point } from '../../interface';\nimport { getDistanceToCenter } from '../../util/coordinate';\nimport { getAngleByPoint } from '../../util/coordinate';\nimport GeometryLabel from './base';\nimport { LabelCfg, LabelItem, PolarLabelItem, LabelPointCfg, Writeable } from './interface';\n\nconst HALF_PI = Math.PI / 2;\n\n/**\n * 极坐标下的图形 label\n */\nexport default class PolarLabel extends GeometryLabel {\n /**\n * @override\n * @desc 获取 label offset\n * polar & theta coordinate support「string」type, should transform to 「number」\n */\n protected getLabelOffset(offset: number | string): number {\n const coordinate = this.getCoordinate();\n let actualOffset = 0;\n if (isNumber(offset)) {\n actualOffset = offset;\n } else if (isString(offset) && offset.indexOf('%') !== -1) {\n let r = coordinate.getRadius();\n if (coordinate.innerRadius > 0) {\n r = r * (1 - coordinate.innerRadius);\n }\n actualOffset = parseFloat(offset) * 0.01 * r;\n }\n\n return actualOffset;\n }\n\n /**\n * @override\n * 获取 labelItems, 增加切片 percent\n * @param mapppingArray\n */\n public getLabelItems(mapppingArray: MappingDatum[]): PolarLabelItem[] {\n const items = super.getLabelItems(mapppingArray);\n const yScale = this.geometry.getYScale();\n\n return map(items, (item) => {\n if (item && yScale) {\n const percent = yScale.scale(get(item.data, yScale.field));\n return { ...item, percent };\n }\n return item;\n });\n }\n /**\n * @override\n * 获取文本的对齐方式\n * @param point\n */\n protected getLabelAlign(point: LabelItem) {\n const coordinate = this.getCoordinate();\n let align;\n if (point.labelEmit) {\n align = point.angle <= Math.PI / 2 && point.angle >= -Math.PI / 2 ? 'left' : 'right';\n } else if (!coordinate.isTransposed) {\n align = 'center';\n } else {\n const center = coordinate.getCenter();\n const offset = point.offset;\n if (Math.abs(point.x - center.x) < 1) {\n align = 'center';\n } else if (point.angle > Math.PI || point.angle <= 0) {\n align = offset > 0 ? 'left' : 'right';\n } else {\n align = offset > 0 ? 'right' : 'left';\n }\n }\n return align;\n }\n\n /**\n * @override\n * 获取 label 的位置\n * @param labelCfg\n * @param mappingData\n * @param index\n */\n protected getLabelPoint(labelCfg: LabelCfg, mappingData: MappingDatum, index: number): LabelPointCfg {\n let factor = 1;\n let arcPoint;\n const content = labelCfg.content[index];\n if (this.isToMiddle(mappingData)) {\n arcPoint = this.getMiddlePoint(mappingData.points as Point[]);\n } else {\n if (labelCfg.content.length === 1 && index === 0) {\n index = 1;\n } else if (index === 0) {\n factor = -1;\n }\n arcPoint = this.getArcPoint(mappingData, index);\n }\n\n const offset = labelCfg.offset * factor;\n const middleAngle = this.getPointAngle(arcPoint);\n const isLabelEmit = labelCfg.labelEmit;\n const labelPositionCfg: Writeable = this.getCirclePoint(middleAngle, offset, arcPoint, isLabelEmit);\n if (labelPositionCfg.r === 0) {\n // 如果文本位置位于圆心,则不展示\n labelPositionCfg.content = '';\n } else {\n labelPositionCfg.content = content;\n labelPositionCfg.angle = middleAngle;\n labelPositionCfg.color = mappingData.color;\n }\n\n labelPositionCfg.rotate = labelCfg.autoRotate\n ? this.getLabelRotate(middleAngle, offset, isLabelEmit)\n : labelCfg.rotate;\n labelPositionCfg.start = {\n x: arcPoint.x,\n y: arcPoint.y,\n };\n return labelPositionCfg;\n }\n\n /**\n * 获取圆弧的位置\n */\n protected getArcPoint(mappingData: MappingDatum, index: number = 0): Point {\n if (!isArray(mappingData.x) && !isArray(mappingData.y)) {\n return {\n x: mappingData.x,\n y: mappingData.y,\n };\n }\n\n return {\n x: isArray(mappingData.x) ? mappingData.x[index] : mappingData.x,\n y: isArray(mappingData.y) ? mappingData.y[index] : mappingData.y,\n };\n }\n\n /**\n * 计算坐标线点在极坐标系下角度\n * @param point\n */\n protected getPointAngle(point: Point): number {\n return getAngleByPoint(this.getCoordinate(), point);\n }\n\n /**\n * 获取坐标点与圆心形成的圆的位置信息\n * @param angle\n * @param offset\n * @param point\n * @param isLabelEmit\n */\n protected getCirclePoint(angle: number, offset: number, point: Point, isLabelEmit: boolean) {\n const coordinate = this.getCoordinate();\n const center = coordinate.getCenter();\n let r = getDistanceToCenter(coordinate, point);\n if (r === 0) {\n return {\n ...center,\n r,\n };\n }\n\n let labelAngle = angle;\n if (coordinate.isTransposed && r > offset && !isLabelEmit) {\n const appendAngle = Math.asin(offset / (2 * r));\n labelAngle = angle + appendAngle * 2;\n } else {\n r = r + offset;\n }\n\n return {\n x: center.x + r * Math.cos(labelAngle),\n y: center.y + r * Math.sin(labelAngle),\n r,\n };\n }\n\n /**\n * 获取 label 的旋转角度\n * @param angle\n * @param offset\n * @param isLabelEmit\n */\n protected getLabelRotate(angle: number, offset: number, isLabelEmit: boolean) {\n let rotate = angle + HALF_PI;\n if (isLabelEmit) {\n rotate -= HALF_PI;\n }\n if (rotate) {\n if (rotate > HALF_PI) {\n rotate = rotate - Math.PI;\n } else if (rotate < -HALF_PI) {\n rotate = rotate + Math.PI;\n }\n }\n return rotate;\n }\n\n // 获取中心的位置\n private getMiddlePoint(points: Point[]) {\n const coordinate = this.getCoordinate();\n const count = points.length;\n let middlePoint = {\n x: 0,\n y: 0,\n };\n each(points, (point: Point) => {\n middlePoint.x += point.x;\n middlePoint.y += point.y;\n });\n middlePoint.x /= count;\n middlePoint.y /= count;\n\n middlePoint = coordinate.convert(middlePoint);\n return middlePoint;\n }\n\n // 是否居中\n private isToMiddle(mappingData: MappingDatum) {\n return (mappingData.x as number[]).length > 2;\n }\n}\n","import { deepMix, get, isArray } from '@antv/util';\nimport { getAngleByPoint } from '../../util/coordinate';\nimport { polarToCartesian } from '../../util/graphics';\nimport { LabelItem } from './interface';\nimport PolarLabel from './polar';\n\n/**\n * 饼图 label\n */\nexport default class PieLabel extends PolarLabel {\n public defaultLayout = 'distribute';\n\n protected getDefaultLabelCfg(offset?: number, position?: string) {\n const cfg = super.getDefaultLabelCfg(offset, position);\n return deepMix({}, cfg, get(this.geometry.theme, 'pieLabels', {}));\n }\n\n /** @override */\n protected getLabelOffset(offset: string | number): number {\n return super.getLabelOffset(offset) || 0;\n }\n\n protected getLabelRotate(angle: number, offset: number, isLabelLimit: boolean) {\n let rotate;\n if (offset < 0) {\n rotate = angle;\n if (rotate > Math.PI / 2) {\n rotate = rotate - Math.PI;\n }\n if (rotate < -Math.PI / 2) {\n rotate = rotate + Math.PI;\n }\n }\n return rotate;\n }\n\n protected getLabelAlign(point: LabelItem) {\n const coordinate = this.getCoordinate();\n const center = coordinate.getCenter();\n\n let align;\n if (point.angle <= Math.PI / 2 && point.x >= center.x) {\n align = 'left';\n } else {\n align = 'right';\n }\n if (point.offset <= 0) {\n if (align === 'right') {\n align = 'left';\n } else {\n align = 'right';\n }\n }\n return align;\n }\n\n protected getArcPoint(point) {\n return point;\n }\n\n protected getPointAngle(point) {\n const coordinate = this.getCoordinate();\n const startPoint = {\n x: isArray(point.x) ? point.x[0] : point.x,\n y: point.y[0],\n };\n const endPoint = {\n x: isArray(point.x) ? point.x[1] : point.x,\n y: point.y[1],\n };\n let angle;\n const startAngle = getAngleByPoint(coordinate, startPoint);\n if (point.points && point.points[0].y === point.points[1].y) {\n angle = startAngle;\n } else {\n let endAngle = getAngleByPoint(coordinate, endPoint);\n if (startAngle >= endAngle) {\n // 100% pie slice\n endAngle = endAngle + Math.PI * 2;\n }\n angle = startAngle + (endAngle - startAngle) / 2;\n }\n return angle;\n }\n\n /** @override */\n protected getCirclePoint(angle: number, offset: number) {\n const coordinate = this.getCoordinate();\n const center = coordinate.getCenter();\n const r = coordinate.getRadius() + offset;\n return {\n ...polarToCartesian(center.x, center.y, r, angle),\n angle,\n r,\n };\n }\n}\n","import { PolarLabelItem } from '../../interface';\n\n/**\n * 碰撞检测算法\n */\nexport function antiCollision(\n items: PolarLabelItem[],\n labelHeight: number,\n plotRange: { minY: number; maxY: number; minX: number; maxX: number }\n) {\n const labels = items.filter((item) => !item.invisible);\n\n // sorted by y, mutable\n labels.sort((a, b) => a.y - b.y);\n // adjust y position of labels to avoid overlapping\n let overlapping = true;\n const startY = plotRange.minY;\n const endY = plotRange.maxY;\n let totalHeight = Math.abs(startY - endY);\n let i;\n\n let maxY = 0;\n let minY = Number.MIN_VALUE;\n const boxes = labels.map((label) => {\n if (label.y > maxY) {\n maxY = label.y;\n }\n if (label.y < minY) {\n minY = label.y;\n }\n return {\n content: label.content,\n size: labelHeight,\n targets: [label.y - startY],\n pos: null,\n };\n });\n\n minY -= startY;\n if (maxY - startY > totalHeight) {\n totalHeight = maxY - startY;\n }\n\n while (overlapping) {\n /* eslint no-loop-func: 0 */\n boxes.forEach((box) => {\n const target = (Math.min.apply(minY, box.targets) + Math.max.apply(minY, box.targets)) / 2;\n box.pos = Math.min(Math.max(minY, target - box.size / 2), totalHeight - box.size);\n box.pos = Math.max(0, box.pos);\n });\n\n // detect overlapping and join boxes\n overlapping = false;\n i = boxes.length;\n while (i--) {\n if (i > 0) {\n const previousBox = boxes[i - 1];\n const box = boxes[i];\n if (previousBox.pos + previousBox.size > box.pos) {\n // overlapping\n previousBox.size += box.size;\n previousBox.targets = previousBox.targets.concat(box.targets);\n\n // overflow, shift up\n if (previousBox.pos + previousBox.size > totalHeight) {\n previousBox.pos = totalHeight - previousBox.size;\n }\n boxes.splice(i, 1); // removing box\n overlapping = true;\n }\n }\n }\n }\n\n i = 0;\n // step 4: normalize y and adjust x\n boxes.forEach((b) => {\n let posInCompositeBox = startY + labelHeight / 2; // middle of the label\n b.targets.forEach(() => {\n labels[i].y = b.pos + posInCompositeBox;\n posInCompositeBox += labelHeight;\n i++;\n });\n });\n}\n","import { each } from '@antv/util';\nimport { BBox, IGroup, IShape } from '../../../dependents';\nimport { LabelItem } from '../interface';\n\nconst MAX_TIMES = 100;\n\n/** @ignore */\ninterface Bitmap {\n [key: number]: {\n [key: number]: boolean;\n };\n}\n\n/** @ignore */\ninterface GreedyCfg {\n readonly xGap?: number;\n readonly yGap?: number;\n}\n\n/**\n * @ignore\n * Greedy 贪婪算法\n */\nclass Greedy {\n public readonly xGap: number;\n /** optimizing for text overlapping detection: use a min text height as gap */\n public readonly yGap: number;\n\n private bitmap: Bitmap = {};\n\n constructor(cfg: GreedyCfg = {}) {\n const { xGap = 1, yGap = 8 } = cfg;\n this.xGap = xGap;\n this.yGap = yGap;\n }\n\n public hasGap(bbox: BBox): boolean {\n let hasGap = true;\n const bitmap = this.bitmap;\n const minX = Math.round(bbox.minX);\n const maxX = Math.round(bbox.maxX);\n const minY = Math.round(bbox.minY);\n const maxY = Math.round(bbox.maxY);\n for (let i = minX; i <= maxX; i += 1) {\n if (!bitmap[i]) {\n bitmap[i] = {};\n continue;\n }\n if (i === minX || i === maxX) {\n for (let j = minY; j <= maxY; j++) {\n if (bitmap[i][j]) {\n hasGap = false;\n break;\n }\n }\n } else {\n if (bitmap[i][minY] || bitmap[i][maxY]) {\n hasGap = false;\n break;\n }\n }\n }\n return hasGap;\n }\n\n public fillGap(bbox: BBox): void {\n const bitmap = this.bitmap;\n const minX = Math.round(bbox.minX);\n const maxX = Math.round(bbox.maxX);\n const minY = Math.round(bbox.minY);\n const maxY = Math.round(bbox.maxY);\n // filling grid\n for (let i = minX; i <= maxX; i += 1) {\n if (!bitmap[i]) {\n bitmap[i] = {};\n }\n }\n for (let i = minX; i <= maxX; i += this.xGap) {\n for (let j = minY; j <= maxY; j += this.yGap) {\n bitmap[i][j] = true;\n }\n bitmap[i][maxY] = true;\n }\n\n // filling y edges\n if (this.yGap !== 1) {\n for (let i = minY; i <= maxY; i += 1) {\n bitmap[minX][i] = true;\n bitmap[maxX][i] = true;\n }\n }\n\n // filling x edges\n if (this.xGap !== 1) {\n for (let i = minX; i <= maxX; i += 1) {\n bitmap[i][minY] = true;\n bitmap[i][maxY] = true;\n }\n }\n }\n\n public destroy(): void {\n this.bitmap = {};\n }\n}\n\nfunction spiralFill(label: IShape, greedy: Greedy, maxTimes: number = MAX_TIMES) {\n const dt = -1;\n const { x, y } = label.attr();\n const bbox = label.getCanvasBBox();\n const maxDelta = Math.sqrt(bbox.width * bbox.width + bbox.height * bbox.height);\n let dxdy;\n let t = -dt;\n let dx = 0;\n let dy = 0;\n const f = (param: number) => {\n const nt = param * 0.1;\n return [nt * Math.cos(nt), nt * Math.sin(nt)];\n };\n\n if (greedy.hasGap(bbox)) {\n greedy.fillGap(bbox);\n return true;\n }\n let canFill = false;\n let times = 0;\n const accessedCache = {};\n while (Math.min(Math.abs(dx), Math.abs(dy)) < maxDelta && times < maxTimes) {\n dxdy = f((t += dt));\n dx = ~~dxdy[0];\n dy = ~~dxdy[1];\n if ((!dx && !dy) || accessedCache[`${dx}-${dy}`]) {\n continue;\n }\n label.attr({ x: x + dx, y: y + dy });\n if (dx + dy < 0) {\n label.attr('textAlign', 'right');\n }\n times++;\n if (greedy.hasGap(label.getCanvasBBox())) {\n greedy.fillGap(label.getCanvasBBox());\n canFill = true;\n accessedCache[`${dx}-${dy}`] = true;\n break;\n }\n }\n return canFill;\n}\n\n/*\n * 根据如下规则尝试放置label\n * 5\n * ------------------\n * | 1 | 0 |\n * 8 —————————4———————— 7\n * | 2 | 3 |\n * ——————————————————\n * 6\n */\nfunction adjustLabelPosition(label: IShape, x: number, y: number, index: number) {\n const { width, height } = label.getCanvasBBox();\n const attrs = {\n x,\n y,\n textAlign: 'center',\n };\n switch (index) {\n case 0:\n attrs.y -= height + 1;\n attrs.x += 1;\n attrs.textAlign = 'left';\n break;\n case 1:\n attrs.y -= height + 1;\n attrs.x -= 1;\n attrs.textAlign = 'right';\n break;\n case 2:\n attrs.y += height + 1;\n attrs.x -= 1;\n attrs.textAlign = 'right';\n break;\n case 3:\n attrs.y += height + 1;\n attrs.x += 1;\n attrs.textAlign = 'left';\n break;\n case 5:\n attrs.y -= height * 2 + 2;\n break;\n case 6:\n attrs.y += height * 2 + 2;\n break;\n case 7:\n attrs.x += width + 1;\n attrs.textAlign = 'left';\n break;\n case 8:\n attrs.x -= width + 1;\n attrs.textAlign = 'right';\n break;\n default:\n break;\n }\n label.attr(attrs);\n return label.getCanvasBBox();\n}\n\n/**\n * @ignore\n * label 防遮挡布局:在不改变 label 位置的情况下对相互重叠的 label 进行调整。\n * 不同于 'overlap' 类型的布局,该布局不会对 label 的位置进行偏移调整。\n * @param labels 参与布局调整的 label 数组集合\n */\nexport function fixedOverlap(items: LabelItem[], labels: IGroup[], shapes: IShape[] | IGroup[], region: BBox) {\n const greedy = new Greedy();\n each(labels, (label: IGroup) => {\n const labelShape = label.find((shape) => shape.get('type') === 'text') as IShape;\n if (!spiralFill(labelShape, greedy)) {\n label.remove(true);\n }\n });\n greedy.destroy();\n}\n\n/**\n * @ignore\n * label 防遮挡布局:为了防止 label 之间相互覆盖同时保证尽可能多 的 label 展示,通过尝试将 label 向**四周偏移**来剔除放不下的 label\n * @param labels 参与布局调整的 label 数组集合\n */\nexport function overlap(items: LabelItem[], labels: IGroup[], shapes: IShape[] | IGroup[], region: BBox) {\n const greedy = new Greedy();\n each(labels, (label: IGroup) => {\n const labelShape = label.find((shape) => shape.get('type') === 'text') as IShape;\n const { x, y } = labelShape.attr();\n let canFill = false;\n for (let i = 0; i <= 8; i++) {\n const bbox = adjustLabelPosition(labelShape, x, y, i);\n if (greedy.hasGap(bbox)) {\n greedy.fillGap(bbox);\n canFill = true;\n break;\n }\n }\n if (!canFill) {\n label.remove(true);\n }\n });\n\n greedy.destroy();\n}\n","import { isNumber } from '@antv/util';\nimport { Point } from '../dependents';\n\ntype Vec2 = [number, number];\n\ntype Item = {\n x: number;\n y: number;\n width: number;\n height: number;\n rotation?: number;\n visible?: boolean;\n};\n/**\n * 定义投影对象\n */\ntype Projection = { min: number; max: number };\n\nfunction dot(a, b) {\n return (a[0] || 0) * (b[0] || 0) + (a[1] || 0) * (b[1] || 0) + (a[2] || 0) * (b[2] || 0);\n}\n\n/**\n * @private\n * 1. 获取投影轴\n */\nfunction getAxes(points: Point[] /** 多边形的关键点 */): Vec2[] {\n // 目前先处理 平行矩形 的场景, 其他多边形不处理\n if (points.length > 4) {\n return [];\n }\n // 获取向量\n const vector = (start: Point, end: Point): Vec2 => {\n return [end.x - start.x, end.y - start.y];\n };\n\n // 由于 矩形的平行原理,所以只有 2 条投影轴: A -> B, B -> C\n const AB = vector(points[0], points[1]);\n const BC = vector(points[1], points[2]);\n\n return [AB, BC];\n}\n\n/**\n * @private\n * 绕指定点顺时针旋转后的点坐标\n * 默认绕原点旋转\n */\nfunction rotateAtPoint(point: Point, deg = 0, origin = { x: 0, y: 0 }): Point {\n const { x, y } = point;\n return {\n x: (x - origin.x) * Math.cos(-deg) + (y - origin.y) * Math.sin(-deg) + origin.x,\n y: (origin.x - x) * Math.sin(-deg) + (y - origin.y) * Math.cos(-deg) + origin.y,\n };\n}\n\n/**\n * @private\n * 转化为顶点坐标数组\n *\n * @param {Object} box\n */\nfunction getRectPoints(box: Item): Point[] {\n const points = [\n { x: box.x, y: box.y },\n { x: box.x + box.width, y: box.y },\n { x: box.x + box.width, y: box.y + box.height },\n { x: box.x, y: box.y + box.height },\n ];\n\n const rotation = box.rotation;\n if (rotation) {\n return [\n rotateAtPoint(points[0], rotation, points[0]),\n rotateAtPoint(points[1], rotation, points[0]),\n rotateAtPoint(points[2], rotation, points[0]),\n rotateAtPoint(points[3], rotation, points[0]),\n ];\n }\n\n return points;\n}\n\n/**\n * @private\n * 2. 获取多边形在投影轴上的投影\n *\n * 向量的点积的其中一个几何含义是:一个向量在平行于另一个向量方向上的投影的数值乘积。\n * 由于投影轴是单位向量(长度为1),投影的长度为 x1 * x2 + y1 * y2\n */\nfunction getProjection(points: Point[] /** 多边形的关键点 */, axis: Vec2): Projection {\n // 目前先处理矩形的场景\n if (points.length > 4) {\n return { min: 0, max: 0 };\n }\n\n const scalars = [];\n points.forEach((point) => {\n scalars.push(dot([point.x, point.y], axis));\n });\n\n return { min: Math.min(...scalars), max: Math.max(...scalars) };\n}\n\nfunction isProjectionOverlap(projection1: Projection, projection2: Projection): boolean {\n return projection1.max > projection2.min && projection1.min < projection2.max;\n}\n\nfunction isValidNumber(d: number) {\n return typeof d === 'number' && !Number.isNaN(d) && d !== Infinity && d !== -Infinity;\n}\n\nfunction isValidBox(box: Item) {\n return ['x', 'y', 'width', 'height'].every(attr => isValidNumber(box[attr]))\n}\n\n/**\n * 快速判断两个无旋转矩形是否遮挡\n */\nexport function isIntersectRect(box1: Item, box2: Item, margin: number = 0): boolean {\n return !(\n box2.x > box1.x + box1.width + margin ||\n box2.x + box2.width < box1.x - margin ||\n box2.y > box1.y + box1.height + margin ||\n box2.y + box2.height < box1.y - margin\n );\n}\n\n/**\n * detect whether two shape is intersected, useful when shape is been rotated\n * 判断两个矩形是否重叠(相交和包含, 是否旋转)\n *\n * - 原理: 分离轴定律\n */\nexport function intersect(box1: Item, box2: Item, margin: number = 0) {\n // 如果两个 box 中有一个是不合法的 box,也就是不会被渲染出来的,那么它们就不相交。\n if (!isValidBox(box1) || !isValidBox(box2)) return false;\n\n // 如果两个矩形没有旋转,使用快速判断\n if (!box1.rotation && !box2.rotation) {\n return isIntersectRect(box1, box2, margin);\n }\n\n // 分别获取 4 个关键点\n const rect1Points = getRectPoints(box1);\n const rect2Points = getRectPoints(box2);\n\n // 获取所有投影轴\n const axes = getAxes(rect1Points).concat(getAxes(rect2Points));\n\n for (let i = 0; i < axes.length; i++) {\n const axis = axes[i];\n const projection1 = getProjection(rect1Points, axis);\n const projection2 = getProjection(rect2Points, axis);\n\n // 判断投影轴上的投影是否存在重叠,若检测到存在间隙则立刻退出判断,消除不必要的运算。\n if (!isProjectionOverlap(projection1, projection2)) {\n return false;\n }\n }\n\n return true;\n}\n","import { isFunction } from '@antv/util';\n\nclass MyWorker {\n queue: any[] = [];\n worker: Worker;\n\n constructor(url) {\n this.worker = new Worker(url);\n this.worker.onmessage = (e: MessageEvent) => {\n this.queue.shift()?.resolve(e);\n };\n this.worker.onmessageerror = (e: MessageEvent) => {\n console.warn('[AntV G2] Web worker is not available');\n this.queue.shift()?.reject(e);\n };\n }\n\n post(params, onError?: () => any): Promise {\n return new Promise((resolve, reject) => {\n this.queue.push({ resolve, reject });\n try {\n this.worker.postMessage(params);\n } catch (e) {\n console.warn('[AntV G2] Web worker is not available');\n isFunction(onError) && onError();\n }\n });\n }\n\n destroy() {\n this.worker.terminate();\n }\n}\n\nexport function createWorker(f: any) {\n if (typeof window === 'undefined') return;\n\n let blob;\n try {\n blob = new Blob([f.toString()], { type: 'application/javascript' });\n } catch (e) {\n // @ts-ignore\n blob = new window.BlobBuilder();\n blob.append(f.toString());\n blob = blob.getBlob();\n }\n\n return new MyWorker(URL.createObjectURL(blob));\n}\n","const onmessage = function (e) {\n type Item = {\n x: number;\n y: number;\n width: number;\n height: number;\n rotation?: number;\n visible?: boolean;\n };\n\n // Copy from src/util/collision-detect.ts\n function generateUtils() {\n type Vec2 = [number, number];\n\n type Point = { x: number; y: number };\n\n /**\n * 定义投影对象\n */\n type Projection = { min: number; max: number };\n\n function dot(a, b) {\n return (a[0] || 0) * (b[0] || 0) + (a[1] || 0) * (b[1] || 0) + (a[2] || 0) * (b[2] || 0);\n }\n /**\n * 1. 获取投影轴\n */\n function getAxes(points: Point[] /** 多边形的关键点 */): Vec2[] {\n // 目前先处理 平行矩形 的场景, 其他多边形不处理\n if (points.length > 4) {\n return [];\n }\n // 获取向量\n const vector = (start: Point, end: Point): Vec2 => {\n return [end.x - start.x, end.y - start.y];\n };\n\n // 由于 矩形的平行原理,所以只有 2 条投影轴: A -> B, B -> C\n const AB = vector(points[0], points[1]);\n const BC = vector(points[1], points[2]);\n\n return [AB, BC];\n }\n\n /**\n * 绕指定点顺时针旋转后的点坐标\n * 默认绕原点旋转\n */\n function rotateAtPoint(point: Point, deg = 0, origin = { x: 0, y: 0 }): Point {\n const { x, y } = point;\n return {\n x: (x - origin.x) * Math.cos(-deg) + (y - origin.y) * Math.sin(-deg) + origin.x,\n y: (origin.x - x) * Math.sin(-deg) + (y - origin.y) * Math.cos(-deg) + origin.y,\n };\n }\n\n /**\n * @private\n * 转化为顶点坐标数组\n *\n * @param {Object} box\n */\n function getRectPoints(box: Item): Point[] {\n const points = [\n { x: box.x, y: box.y },\n { x: box.x + box.width, y: box.y },\n { x: box.x + box.width, y: box.y + box.height },\n { x: box.x, y: box.y + box.height },\n ];\n\n const rotation = box.rotation;\n if (rotation) {\n return [\n rotateAtPoint(points[0], rotation, points[0]),\n rotateAtPoint(points[1], rotation, points[0]),\n rotateAtPoint(points[2], rotation, points[0]),\n rotateAtPoint(points[3], rotation, points[0]),\n ];\n }\n\n return points;\n }\n\n /**\n * 2. 获取多边形在投影轴上的投影\n *\n * 向量的点积的其中一个几何含义是:一个向量在平行于另一个向量方向上的投影的数值乘积。\n * 由于投影轴是单位向量(长度为1),投影的长度为 x1 * x2 + y1 * y2\n */\n function getProjection(points: Point[] /** 多边形的关键点 */, axis: Vec2): Projection {\n // 目前先处理矩形的场景\n if (points.length > 4) {\n return { min: 0, max: 0 };\n }\n\n const scalars = [];\n points.forEach((point) => {\n scalars.push(dot([point.x, point.y], axis));\n });\n\n return { min: Math.min.apply(null, scalars), max: Math.max.apply(null, scalars) };\n }\n\n function isProjectionOverlap(projection1: Projection, projection2: Projection): boolean {\n return projection1.max > projection2.min && projection1.min < projection2.max;\n }\n\n function isValidNumber(d: number) {\n return typeof d === 'number' && !Number.isNaN(d) && d !== Infinity && d !== -Infinity;\n }\n\n function isValidBox(box: Item) {\n return ['x', 'y', 'width', 'height'].every(attr => isValidNumber(box[attr]))\n }\n\n function isIntersectRect(box1: Item, box2: Item, margin: number = 0): boolean {\n return !(\n box2.x > box1.x + box1.width + margin ||\n box2.x + box2.width < box1.x - margin ||\n box2.y > box1.y + box1.height + margin ||\n box2.y + box2.height < box1.y - margin\n );\n }\n function intersect(box1: Item, box2: Item, margin: number = 0) {\n if (!isValidBox(box1) || !isValidBox(box2)) return false;\n\n // Quick detect, if rotation is null or zero.\n if (!box1.rotation && !box2.rotation) {\n return isIntersectRect(box1, box2, margin);\n }\n\n // 分别获取 4 个关键点\n const rect1Points = getRectPoints(box1);\n const rect2Points = getRectPoints(box2);\n\n // 获取所有投影轴\n const axes = getAxes(rect1Points).concat(getAxes(rect2Points));\n\n for (let i = 0; i < axes.length; i++) {\n const axis = axes[i];\n const projection1 = getProjection(rect1Points, axis);\n const projection2 = getProjection(rect2Points, axis);\n\n if (!isProjectionOverlap(projection1, projection2)) return false;\n }\n\n return true;\n }\n return { intersect }\n }\n const { intersect } = generateUtils();\n\n // Label layouts.\n function hideOverlap(items: Item[]) {\n const boxes = items.slice();\n for (let i = 0; i < boxes.length; i++) {\n const box1 = boxes[i];\n if (box1.visible) {\n for (let j = i + 1; j < boxes.length; j++) {\n const box2 = boxes[j];\n if (box1 !== box2 && box2.visible) {\n if (intersect(box1, box2)) {\n box2.visible = false;\n }\n }\n }\n }\n }\n return boxes;\n }\n\n const methods = {\n 'hide-overlap': hideOverlap,\n }\n\n // Main\n try {\n const eventData = JSON.parse(e.data);\n if (!eventData || !eventData.type || !methods[eventData.type]) return;\n\n const { type, items } = eventData;\n const result = methods[type](items);\n self.postMessage(result);\n } catch (e) {\n throw e;\n }\n}\n\nconst code = `\n self.onmessage = ${onmessage.toString()}\n`\nexport { code };\n","import { get, each } from '@antv/util';\nimport { BBox, IGroup, IShape } from '../../../dependents';\nimport { intersect } from '../../../util/collision-detect';\nimport { LabelItem } from '../interface';\nimport { getLabelBackgroundInfo } from '../util';\nimport { createWorker } from '../util/createWorker';\nimport { code as layoutCode } from './worker/hide-overlap';\n\ntype Item = {\n x: number;\n y: number;\n width: number;\n height: number;\n rotation?: number;\n visible?: boolean;\n};\n\nconst layout = (items: Item[]): Item[] => {\n const boxes = items.slice();\n for (let i = 0; i < boxes.length; i++) {\n const box1 = boxes[i];\n if (box1.visible) {\n for (let j = i + 1; j < boxes.length; j++) {\n const box2 = boxes[j];\n if (box1 !== box2 && box2.visible) {\n if (intersect(box1, box2)) {\n box2.visible = false;\n }\n }\n }\n }\n }\n return boxes;\n};\n\nconst cache: Map = new Map();\nconst worker = createWorker(layoutCode);\n\n/**\n * label 防遮挡布局:在不改变 label 位置的情况下对相互重叠的 label 进行隐藏(非移除)\n * 不同于 'overlap' 类型的布局,该布局不会对 label 的位置进行偏移调整。\n * @param labels 参与布局调整的 label 数组集合\n */\nexport async function hideOverlap(\n labelItems: LabelItem[],\n labels: IGroup[],\n shapes: IShape[] | IGroup[],\n region: BBox\n) {\n const boxes = labels.map((d, idx) => ({\n ...getLabelBackgroundInfo(d, labelItems[idx], get(labelItems[idx], 'background.padding')),\n visible: true,\n }));\n const memoKey = JSON.stringify(boxes);\n const cb = (items: Item[]) => {\n cache.set(memoKey, items);\n each(items, ({ visible }, idx) => {\n const labelShape = labels[idx];\n if (visible) {\n labelShape?.show();\n } else {\n labelShape?.hide();\n }\n });\n return items;\n };\n if (cache.get(memoKey)) {\n cb(cache.get(memoKey));\n } else if (worker) {\n // Do layout in worker.\n try {\n const params = JSON.stringify({ type: 'hide-overlap', items: boxes });\n const res = await worker.post(params, () => cb(layout(boxes)));\n cb(Array.isArray(res.data) ? res.data : []);\n } catch (e) {\n console.error(e);\n cb(layout(boxes));\n }\n } else {\n // Normal layout in main thread.\n cb(layout(boxes));\n }\n}\n","import colorUtil from '@antv/color-util';\n\n// 内置的一些特殊设置\nconst preset = {\n '#5B8FF9': true,\n};\n\n// 根据YIQ亮度判断指定颜色取反色是不是白色\n// http://24ways.org/2010/calculating-color-contrast\n// http://www.w3.org/TR/AERT#color-contrast\nexport const isContrastColorWhite = (color: string): boolean => {\n const rgb = colorUtil.toRGB(color).toUpperCase();\n if (preset[rgb]) {\n return preset[rgb];\n }\n\n const [r, g, b] = colorUtil.rgb2arr(rgb);\n const isDark = (r * 299 + g * 587 + b * 114) / 1000 < 128;\n\n return isDark;\n};\n","let ctx: CanvasRenderingContext2D;\n\n/**\n * 获取 canvas context\n */\nexport function getCanvasContext() {\n if (!ctx) {\n ctx = document.createElement('canvas').getContext('2d');\n }\n\n return ctx;\n}\n","import { IElement, IGroup, IShape } from '../../../../dependents';\nimport { BBox } from '../../../../util/bbox';\nimport Geometry from '../../../base';\nimport Element from '../../../element';\nimport { LabelItem } from '../../interface';\nimport { findLabelTextShape } from '../../util';\n\nfunction shouldInShapeSingle(geometry: Geometry, label: IGroup, shape: IElement): boolean {\n const coordinate = geometry.coordinate;\n const textShape = findLabelTextShape(label);\n const textBBox = BBox.fromObject(textShape.getCanvasBBox());\n const shapeBBox = BBox.fromObject(shape.getBBox());\n\n return coordinate.isTransposed ? shapeBBox.height >= textBBox.height : shapeBBox.width >= textBBox.width;\n}\n\nfunction shouldInShape(geometry: Geometry, labels: IGroup[], shapes: IShape[] | IGroup[]): boolean {\n const isStack = !!geometry.getAdjust('stack');\n\n return (\n isStack ||\n labels.every((label: IGroup, index: number) => {\n const shape = shapes[index];\n return shouldInShapeSingle(geometry, label, shape);\n })\n );\n}\n\nfunction moveInShape(geometry: Geometry, label: IGroup, shape: IElement): void {\n const coordinate = geometry.coordinate;\n const shapeBBox = BBox.fromObject(shape.getBBox());\n const textShape = findLabelTextShape(label);\n\n if (coordinate.isTransposed) {\n // 水平方向:条形图系列\n textShape.attr({\n x: shapeBBox.minX + shapeBBox.width / 2,\n textAlign: 'center',\n });\n } else {\n // 垂直方向:柱形图系列\n textShape.attr({\n y: shapeBBox.minY + shapeBBox.height / 2,\n textBaseline: 'middle',\n });\n }\n}\n\n/**\n * 适用于 interval geometry 的数据标签位置自动调整布局方法\n * @param items\n * @param labels\n * @param shapes\n */\nexport function intervalAdjustPosition(items: LabelItem[], labels: IGroup[], shapes: IShape[] | IGroup[]) {\n if (shapes.length === 0) {\n return;\n }\n const element: Element = shapes[0]?.get('element');\n const geometry: Geometry = element?.geometry;\n if (!geometry || geometry.type !== 'interval') {\n return;\n }\n\n const inShape = shouldInShape(geometry, labels, shapes);\n if (inShape) {\n shapes.forEach((shape: IShape | IGroup, index: number) => {\n const label = labels[index];\n moveInShape(geometry, label, shape);\n });\n }\n}\n","import { groupBy, keys, map } from '@antv/util';\nimport { IElement, IGroup, IShape, BBox } from '../../../../dependents';\nimport Geometry from '../../../base';\nimport Element from '../../../element';\nimport { LabelItem } from '../../interface';\nimport { findLabelTextShape } from '../../util';\n\n/**\n * point-adjust-position layout 的配置类型\n */\nexport interface PointAdjustPositionLayoutCfg {\n offset?: number;\n}\n\n/**\n * 对同一组(相同 xField )的 Label 进行排序:第一个、最后一个、其他...\n * @param geometry\n * @param labels\n */\nfunction sortLabels(geometry: Geometry, labels: IGroup[]) {\n const yField = geometry.getXYFields()[1];\n const result: IGroup[] = [];\n const sortedLabels = labels.sort((left, right) => left.get('data')[yField] - left.get('data')[yField]);\n\n if (sortedLabels.length > 0) {\n result.push(sortedLabels.shift());\n }\n if (sortedLabels.length > 0) {\n result.push(sortedLabels.pop());\n }\n result.push(...sortedLabels);\n\n return result;\n}\n\nfunction hasSome(dones: IGroup[], current: IGroup, compare: (left: IGroup, right: IGroup) => boolean): boolean {\n return dones.some((done) => compare(done, current));\n}\n\n/**\n * 计算两个矩形之间的堆叠区域面积\n */\nfunction getOverlapArea(a: BBox, b: BBox, margin = 0) {\n const xOverlap = Math.max(\n 0,\n Math.min(a.x + a.width + margin, b.x + b.width + margin) - Math.max(a.x - margin, b.x - margin)\n );\n const yOverlap = Math.max(\n 0,\n Math.min(a.y + a.height + margin, b.y + b.height + margin) - Math.max(a.y - margin, b.y - margin)\n );\n\n return xOverlap * yOverlap;\n}\n\n/**\n * 判断新添加的 Label 是否和已存在的发生重叠\n * @param dones\n * @param current\n */\nfunction checkShapeOverlap(dones: IGroup[], current: IGroup): boolean {\n return hasSome(dones, current, (left, right) => {\n const leftText = findLabelTextShape(left);\n const rightText = findLabelTextShape(right);\n\n return getOverlapArea(leftText.getCanvasBBox(), rightText.getCanvasBBox(), 2) > 0;\n });\n}\n/**\n * 适用于 point geometry 的数据标签位置自动调整布局方法\n * @param items\n * @param labels\n * @param shapes\n * @param region\n * @param cfg\n */\nexport function pointAdjustPosition(\n items: LabelItem[],\n labels: IGroup[],\n shapes: IShape[] | IGroup[],\n region: BBox,\n cfg: PointAdjustPositionLayoutCfg\n): void {\n if (shapes.length === 0) {\n return;\n }\n\n const element: Element = shapes[0]?.get('element');\n const geometry: Geometry = element?.geometry;\n if (!geometry || geometry.type !== 'point') {\n return;\n }\n const [xField, yField] = geometry.getXYFields();\n const groupedLabels = groupBy(labels, (label) => label.get('data')[xField]);\n const dones: IGroup[] = [];\n const offset = (cfg && cfg.offset) || items[0]?.offset || 12;\n\n map(keys(groupedLabels).reverse(), (xValue) => {\n const sortedCollections = sortLabels(geometry, groupedLabels[xValue]);\n while (sortedCollections.length) {\n const current = sortedCollections.shift();\n const textShape = findLabelTextShape(current);\n if (\n hasSome(\n dones,\n current,\n (left, right) =>\n left.get('data')[xField] === right.get('data')[xField] &&\n left.get('data')[yField] === right.get('data')[yField]\n )\n ) {\n // 重复位置,直接隐藏\n textShape.set('visible', false);\n continue;\n }\n const upFail = checkShapeOverlap(dones, current);\n let downFail: boolean = false;\n if (upFail) {\n textShape.attr('y', textShape.attr('y') + 2 * offset);\n downFail = checkShapeOverlap(dones, current);\n }\n if (downFail) {\n textShape.set('visible', false);\n continue;\n }\n dones.push(current);\n }\n });\n}\n","import { groupBy, keys, map } from '@antv/util';\nimport { IGroup, IShape, BBox } from '../../../../dependents';\nimport Geometry from '../../../base';\nimport Element from '../../../element';\nimport { LabelItem } from '../../interface';\nimport { findLabelTextShape } from '../../util';\n\n/**\n * point-adjust-position layout 的配置类型\n */\nexport interface PointAdjustPositionLayoutCfg {\n offset?: number;\n}\n\n/**\n * 对同一组(相同 xField )的 Label 进行排序:第一个、最后一个、其他...\n * @param geometry\n * @param labels\n */\nfunction sortLabels(geometry: Geometry, labels: IGroup[]) {\n const yField = geometry.getXYFields()[1];\n const result: IGroup[] = [];\n const sortedLabels = labels.sort((left, right) => left.get('data')[yField] - left.get('data')[yField]);\n\n if (sortedLabels.length > 0) {\n result.push(sortedLabels.shift());\n }\n if (sortedLabels.length > 0) {\n result.push(sortedLabels.pop());\n }\n result.push(...sortedLabels);\n\n return result;\n}\n\nfunction hasSome(dones: IGroup[], current: IGroup, compare: (left: IGroup, right: IGroup) => boolean): boolean {\n return dones.some((done) => compare(done, current));\n}\n\n/**\n * 计算两个矩形之间的堆叠区域面积\n */\nfunction getOverlapArea(a: BBox, b: BBox, margin = 0) {\n const xOverlap = Math.max(\n 0,\n Math.min(a.x + a.width + margin, b.x + b.width + margin) - Math.max(a.x - margin, b.x - margin)\n );\n const yOverlap = Math.max(\n 0,\n Math.min(a.y + a.height + margin, b.y + b.height + margin) - Math.max(a.y - margin, b.y - margin)\n );\n\n return xOverlap * yOverlap;\n}\n\n/**\n * 判断新添加的 Label 是否和已存在的发生重叠\n * @param dones\n * @param current\n */\nfunction checkShapeOverlap(dones: IGroup[], current: IGroup): boolean {\n return hasSome(dones, current, (left, right) => {\n const leftText = findLabelTextShape(left);\n const rightText = findLabelTextShape(right);\n\n return getOverlapArea(leftText.getCanvasBBox(), rightText.getCanvasBBox(), 2) > 0;\n });\n}\n/**\n * 适用于 point geometry 的数据标签位置自动调整布局方法\n * @param items\n * @param labels\n * @param shapes\n * @param region\n * @param cfg\n */\nexport function pathAdjustPosition(\n items: LabelItem[],\n labels: IGroup[],\n shapes: IShape[] | IGroup[],\n region: BBox,\n cfg: PointAdjustPositionLayoutCfg\n): void {\n if (shapes.length === 0) {\n return;\n }\n\n const element: Element = shapes[0]?.get('element');\n const geometry: Geometry = element?.geometry;\n if (!geometry || ['path', 'line', 'area'].indexOf(geometry.type) < 0) {\n return;\n }\n const [xField, yField] = geometry.getXYFields();\n const groupedLabels = groupBy(labels, (label) => label.get('data')[xField]);\n const dones: IGroup[] = [];\n const offset = (cfg && cfg.offset) || items[0]?.offset || 12;\n\n map(keys(groupedLabels).reverse(), (xValue) => {\n const sortedCollections = sortLabels(geometry, groupedLabels[xValue]);\n while (sortedCollections.length) {\n const current = sortedCollections.shift();\n const textShape = findLabelTextShape(current);\n if (\n hasSome(\n dones,\n current,\n (left, right) =>\n left.get('data')[xField] === right.get('data')[xField] &&\n left.get('data')[yField] === right.get('data')[yField]\n )\n ) {\n // 重复位置,直接隐藏\n textShape.set('visible', false);\n continue;\n }\n const upFail = checkShapeOverlap(dones, current);\n let downFail: boolean = false;\n if (upFail) {\n textShape.attr('y', textShape.attr('y') + 2 * offset);\n downFail = checkShapeOverlap(dones, current);\n }\n if (downFail) {\n textShape.set('visible', false);\n continue;\n }\n dones.push(current);\n }\n });\n}\n","import { isString, memoize, values, toString } from '@antv/util';\nimport * as CSS from 'csstype';\nimport { getCanvasContext } from './context';\n\ntype FontFace = CSS.Properties;\n\ntype Font = Pick & {\n fontSize?: number;\n};\n\n/**\n * 计算文本在画布中的宽度\n */\nexport const measureTextWidth = memoize(\n (text: any, font: Font = {}): number => {\n const { fontSize, fontFamily, fontWeight, fontStyle, fontVariant } = font;\n const ctx = getCanvasContext();\n ctx!.font = [fontStyle, fontVariant, fontWeight, `${fontSize}px`, fontFamily].join(' ');\n return ctx!.measureText(isString(text) ? text : '').width;\n },\n (text: any, font: Font = {}) => [text, ...values(font)].join('')\n);\n\n/**\n * 获取文本的 ... 文本。\n * 算法(减少每次 measureText 的长度,measureText 的性能跟字符串时间相关):\n * 1. 先通过 STEP 逐步计算,找到最后一个小于 maxWidth 的字符串\n * 2. 然后对最后这个字符串二分计算\n * @param text 需要计算的文本, 由于历史原因 除了支持string,还支持空值,number和数组等\n * @param maxWidth\n * @param font\n */\nexport const getEllipsisText = (text: any, maxWidth: number, font?: Font) => {\n const STEP = 16; // 每次 16,调参工程师\n const DOT_WIDTH = measureTextWidth('...', font);\n\n let leftText;\n\n if (!isString(text)) {\n leftText = toString(text);\n } else {\n leftText = text;\n }\n\n let leftWidth = maxWidth;\n\n const r = []; // 最终的分段字符串\n let currentText;\n let currentWidth;\n\n if (measureTextWidth(text, font) <= maxWidth) {\n return text;\n }\n\n // 首先通过 step 计算,找出最大的未超出长度的\n while (true) {\n // 更新字符串\n currentText = leftText.substr(0, STEP);\n\n // 计算宽度\n currentWidth = measureTextWidth(currentText, font);\n\n // 超出剩余宽度,则停止\n if (currentWidth + DOT_WIDTH > leftWidth) {\n if (currentWidth > leftWidth) {\n break;\n }\n }\n\n r.push(currentText);\n\n // 没有超出,则计算剩余宽度\n leftWidth -= currentWidth;\n leftText = leftText.substr(STEP);\n\n // 字符串整体没有超出\n if (!leftText) {\n return r.join('');\n }\n }\n\n // 最下的最后一个 STEP,使用 1 递增(用二分效果更高)\n while (true) {\n // 更新字符串\n currentText = leftText.substr(0, 1);\n\n // 计算宽度\n currentWidth = measureTextWidth(currentText, font);\n\n // 超出剩余宽度,则停止\n if (currentWidth + DOT_WIDTH > leftWidth) {\n break;\n }\n\n r.push(currentText);\n // 没有超出,则计算剩余宽度\n leftWidth -= currentWidth;\n leftText = leftText.substr(1);\n\n if (!leftText) {\n return r.join('');\n }\n }\n\n return `${r.join('')}...`;\n};\n","import { ext } from '@antv/matrix-util';\nimport { Coordinate, IGroup, IShape } from '../../dependents';\nimport { GAnimateCfg, Point } from '../../interface';\n\n/**\n * @ignore\n * 对图形元素进行矩阵变换,同时返回变换前的图形矩阵\n * @param shape 进行矩阵变换的图形\n * @param vector 矩阵变换的中心点\n * @param direct 矩阵变换的类型\n */\nexport function transformShape(shape: IShape | IGroup, vector: [number, number], direct: string): number[] {\n let scaledMatrix;\n\n const [x, y] = vector;\n shape.applyToMatrix([x, y, 1]);\n if (direct === 'x') {\n shape.setMatrix(\n ext.transform(shape.getMatrix(), [\n ['t', -x, -y],\n ['s', 0.01, 1],\n ['t', x, y],\n ])\n );\n scaledMatrix = ext.transform(shape.getMatrix(), [\n ['t', -x, -y],\n ['s', 100, 1],\n ['t', x, y],\n ]);\n } else if (direct === 'y') {\n shape.setMatrix(\n ext.transform(shape.getMatrix(), [\n ['t', -x, -y],\n ['s', 1, 0.01],\n ['t', x, y],\n ])\n );\n scaledMatrix = ext.transform(shape.getMatrix(), [\n ['t', -x, -y],\n ['s', 1, 100],\n ['t', x, y],\n ]);\n } else if (direct === 'xy') {\n shape.setMatrix(\n ext.transform(shape.getMatrix(), [\n ['t', -x, -y],\n ['s', 0.01, 0.01],\n ['t', x, y],\n ])\n );\n scaledMatrix = ext.transform(shape.getMatrix(), [\n ['t', -x, -y],\n ['s', 100, 100],\n ['t', x, y],\n ]);\n }\n return scaledMatrix;\n}\n\n/**\n * 对图形元素进行剪切动画\n * @param element 进行动画的图形元素\n * @param animateCfg 动画配置\n * @param coordinate 当前坐标系\n * @param yMinPoint y 轴的最小值对应的图形坐标点\n * @param type 剪切动画的类型\n */\nexport function doScaleAnimate(\n element: IGroup | IShape,\n animateCfg: GAnimateCfg,\n coordinate: Coordinate,\n yMinPoint: Point,\n type: string\n) {\n const { start, end } = coordinate;\n const width = coordinate.getWidth();\n const height = coordinate.getHeight();\n let x: number;\n let y: number;\n\n if (type === 'y') {\n x = start.x + width / 2;\n y = yMinPoint.y < start.y ? yMinPoint.y : start.y;\n } else if (type === 'x') {\n x = yMinPoint.x > start.x ? yMinPoint.x : start.x;\n y = start.y + height / 2;\n } else if (type === 'xy') {\n if (coordinate.isPolar) {\n x = coordinate.getCenter().x;\n y = coordinate.getCenter().y;\n } else {\n x = (start.x + end.x) / 2;\n y = (start.y + end.y) / 2;\n }\n }\n\n const endMatrix = transformShape(element, [x, y], type);\n element.animate(\n {\n matrix: endMatrix,\n },\n animateCfg\n );\n}\n","import { getArcParams } from '@antv/g-canvas';\nimport { isNumberEqual, isEqual, isFunction } from '@antv/util';\n\nimport { IShape, PathCommand } from '../../dependents';\nimport { GAnimateCfg } from '../../interface';\nimport { AnimateExtraCfg } from '../interface';\n\nimport { getArcPath, getSectorPath } from '../../util/graphics';\n\nfunction getAngle(startPoint: number[], arcPath: PathCommand) {\n let { startAngle, endAngle } = getArcParams(startPoint, arcPath);\n\n if (!isNumberEqual(startAngle, -Math.PI * 0.5) && startAngle < -Math.PI * 0.5) {\n startAngle += Math.PI * 2;\n }\n if (!isNumberEqual(endAngle, -Math.PI * 0.5) && endAngle < -Math.PI * 0.5) {\n endAngle += Math.PI * 2;\n }\n\n if (arcPath[5] === 0) {\n // 逆时针,需要将 startAngle 和 endAngle 转置,因为 G2 极坐标系为顺时针方向\n [startAngle, endAngle] = [endAngle, startAngle];\n }\n\n if (isNumberEqual(startAngle, Math.PI * 1.5)) {\n startAngle = Math.PI * -0.5;\n }\n\n // 当 startAngle, endAngle 接近相等时,不进行 endAngle = Math.PI * 1.5 防止变化从整个圆开始\n if (isNumberEqual(endAngle, Math.PI * -0.5) && !isNumberEqual(startAngle, endAngle)) {\n endAngle = Math.PI * 1.5;\n }\n\n return {\n startAngle,\n endAngle,\n };\n}\n\nfunction getArcStartPoint(path: PathCommand) {\n let startPoint;\n if (path[0] === 'M' || path[0] === 'L') {\n startPoint = [path[1], path[2]];\n } else if (path[0] === 'a' || path[0] === 'A' || path[0] === 'C') {\n startPoint = [path[path.length - 2], path[path.length - 1]];\n }\n\n return startPoint;\n}\n\n/**\n * path 存在以下情况\n * 1. 饼图不为整圆的 path,命令为 M, L, A, L, Z\n * 2. 饼图为整圆的 path,命令为 M, M, A, A, M, Z\n * 3. 环图不为整圆的 path,命令为 M, A, L, A, L, Z\n * 4. 环图为整圆的 path,命令为 M, A, A, M, A, A, M, Z\n * 5. radial-line, 不为整圆时的 path, 命令为 M, A, A, Z\n * 6. radial-line, 为整圆时的 path,命令为 M, A, A, A, A, Z\n * @param path theta 坐标系下圆弧的 path 命令\n */\nexport function getArcInfo(path: PathCommand[]) {\n let startAngle;\n let endAngle;\n\n const arcPaths = path.filter((command) => {\n return command[0] === 'A' || command[0] === 'a';\n });\n\n if (arcPaths.length === 0) {\n return {\n startAngle: 0,\n endAngle: 0,\n radius: 0,\n innerRadius: 0,\n };\n }\n\n const firstArcPathCommand = arcPaths[0];\n const lastArcPathCommand = arcPaths.length > 1 ? arcPaths[1] : arcPaths[0];\n const firstIndex = path.indexOf(firstArcPathCommand);\n const lastIndex = path.indexOf(lastArcPathCommand);\n const firstStartPoint = getArcStartPoint(path[firstIndex - 1]);\n const lastStartPoint = getArcStartPoint(path[lastIndex - 1]);\n\n const { startAngle: firstStartAngle, endAngle: firstEndAngle } = getAngle(firstStartPoint, firstArcPathCommand);\n const { startAngle: lastStartAngle, endAngle: lastEndAngle } = getAngle(lastStartPoint, lastArcPathCommand);\n\n if (isNumberEqual(firstStartAngle, lastStartAngle) && isNumberEqual(firstEndAngle, lastEndAngle)) {\n startAngle = firstStartAngle;\n endAngle = firstEndAngle;\n } else {\n startAngle = Math.min(firstStartAngle, lastStartAngle);\n endAngle = Math.max(firstEndAngle, lastEndAngle);\n }\n\n let radius = firstArcPathCommand[1];\n let innerRadius = arcPaths[arcPaths.length - 1][1];\n if (radius < innerRadius) {\n [radius, innerRadius] = [innerRadius, radius];\n } else if (radius === innerRadius) {\n innerRadius = 0;\n }\n\n return {\n startAngle,\n endAngle,\n radius,\n innerRadius,\n };\n}\n\n/**\n * @ignore\n * 饼图更新动画\n * @param shape 文本图形\n * @param animateCfg\n * @param cfg\n */\nexport function sectorPathUpdate(shape: IShape, animateCfg: GAnimateCfg, cfg: AnimateExtraCfg) {\n const { toAttrs, coordinate } = cfg;\n const path = (toAttrs as { path: PathCommand[] }).path || [];\n const pathCommands = path.map((command) => command[0]);\n\n if (path.length < 1) return;\n\n const { startAngle: curStartAngle, endAngle: curEndAngle, radius, innerRadius } = getArcInfo(path);\n const { startAngle: preStartAngle, endAngle: preEndAngle } = getArcInfo(shape.attr('path'));\n\n const center = coordinate.getCenter();\n const diffStartAngle = curStartAngle - preStartAngle;\n const diffEndAngle = curEndAngle - preEndAngle;\n // 没有 diff 时直接返回最终 attrs,不需要额外动画\n if (diffStartAngle === 0 && diffEndAngle === 0) {\n shape.attr(toAttrs);\n return;\n }\n\n shape.animate(\n (ratio) => {\n const onFrameStartAngle = preStartAngle + ratio * diffStartAngle;\n const onFrameEndAngle = preEndAngle + ratio * diffEndAngle;\n return {\n ...toAttrs,\n path:\n // hack, 兼容 /examples/bar/basic/demo/radial-line.ts 动画\n isEqual(pathCommands, ['M', 'A', 'A', 'Z'])\n ? getArcPath(center.x, center.y, radius, onFrameStartAngle, onFrameEndAngle)\n : getSectorPath(center.x, center.y, radius, onFrameStartAngle, onFrameEndAngle, innerRadius),\n };\n },\n {\n ...animateCfg,\n callback: () => {\n // 将 path 保持原始态,否则会影响 setState() 的动画\n shape.attr('path', path);\n isFunction(animateCfg.callback) && animateCfg.callback();\n },\n }\n );\n}\n","import { ext } from '@antv/matrix-util';\nimport { each, isFunction } from '@antv/util';\nimport { IGroup, IShape } from '../../dependents';\nimport { GAnimateCfg } from '../../interface';\nimport { AnimateExtraCfg } from '../interface';\n\nfunction doShapeZoom(shape: IShape | IGroup, animateCfg: GAnimateCfg, type: 'zoomIn' | 'zoomOut') {\n if (shape.isGroup()) {\n each((shape as IGroup).getChildren(), (child) => {\n doShapeZoom(child, animateCfg, type);\n });\n } else {\n const bbox = shape.getBBox();\n const x = (bbox.minX + bbox.maxX) / 2;\n const y = (bbox.minY + bbox.maxY) / 2;\n shape.applyToMatrix([x, y, 1]);\n\n if (type === 'zoomIn') {\n // 放大\n const matrix = ext.transform(shape.getMatrix(), [\n ['t', -x, -y],\n ['s', 0.01, 0.01],\n ['t', x, y],\n ]);\n shape.setMatrix(matrix);\n shape.animate(\n {\n matrix: ext.transform(shape.getMatrix(), [\n ['t', -x, -y],\n ['s', 100, 100],\n ['t', x, y],\n ]),\n },\n animateCfg\n );\n } else {\n shape.animate(\n {\n matrix: ext.transform(shape.getMatrix(), [\n ['t', -x, -y],\n ['s', 0.01, 0.01],\n ['t', x, y],\n ]),\n },\n {\n ...animateCfg,\n callback: () => {\n shape.remove(true);\n isFunction(animateCfg.callback) && animateCfg.callback();\n },\n }\n );\n }\n }\n}\n\n/**\n * @ignore\n * 单个 shape 动画\n * shape 以自身中心点逐渐放大的进入动画\n * @param shape 参与动画的图形元素\n * @param animateCfg 动画配置\n * @param cfg 额外信息\n */\nexport function zoomIn(shape: IShape | IGroup, animateCfg: GAnimateCfg, cfg: AnimateExtraCfg) {\n doShapeZoom(shape, animateCfg, 'zoomIn');\n}\n\n/**\n * @ignore\n * 单个 shape 动画\n * 消失动画,shape 以自身为中心点的逐渐缩小\n * @param shape 参与动画的图形元素\n * @param animateCfg 动画配置\n * @param cfg 额外信息\n */\nexport function zoomOut(shape: IShape | IGroup, animateCfg: GAnimateCfg, cfg: AnimateExtraCfg) {\n doShapeZoom(shape, animateCfg, 'zoomOut');\n}\n","import { DIRECTION } from '../constant';\nimport { Point } from '../dependents';\nimport { FacetTitle } from '../interface';\n\n/**\n * @ignore\n * 获取 facet title 的最佳默认配置,防止\n */\nexport function getFactTitleConfig(direction: DIRECTION): FacetTitle {\n if ([DIRECTION.TOP, DIRECTION.BOTTOM].includes(direction)) {\n return {\n offsetX: 0,\n offsetY: direction === DIRECTION.TOP ? -8 : 8,\n style: {\n textAlign: 'center',\n textBaseline: direction === DIRECTION.TOP ? 'bottom' : 'top',\n },\n };\n }\n\n if ([DIRECTION.LEFT, DIRECTION.RIGHT].includes(direction)) {\n return {\n offsetX: direction === DIRECTION.LEFT ? -8 : 8,\n offsetY: 0,\n style: {\n textAlign: direction === DIRECTION.LEFT ? 'right' : 'left',\n textBaseline: 'middle',\n rotate: Math.PI / 2, // 文本阅读习惯从上往下\n },\n };\n }\n\n return {};\n}\n\n/**\n * @ignore\n * 根据角度,获取 ○ 上的点\n * @param center\n * @param r\n * @param angle\n */\nexport function getAnglePoint(center: Point, r: number, angle: number): Point {\n return {\n x: center.x + r * Math.cos(angle),\n y: center.y + r * Math.sin(angle),\n };\n}\n","import { deepMix, each, filter, get } from '@antv/util';\nimport { AxisCfg, CircleCfg, CircleData, Datum } from '../interface';\n\nimport View from '../chart/view';\nimport { DIRECTION } from '../constant';\nimport { getAnglePoint, getFactTitleConfig } from '../util/facet';\nimport { Facet } from './facet';\n\n/**\n * @ignore\n * 镜像分面\n */\nexport default class Circle extends Facet {\n protected getDefaultCfg() {\n return deepMix({}, super.getDefaultCfg(), {\n type: 'circle',\n showTitle: true,\n title: super.getDefaultTitleCfg(),\n });\n }\n\n public render() {\n super.render();\n\n if (this.cfg.showTitle) {\n this.renderTitle();\n }\n }\n\n /**\n * 根据总数和当前索引,计算分面的 region\n * @param count\n * @param index\n */\n protected getRegion(count: number, index: number) {\n const r = 1 / 2; // 画布半径\n // 画布圆心\n const center = { x: 0.5, y: 0.5 };\n // 每隔分面间隔的弧度\n const avgAngle = (Math.PI * 2) / count;\n\n // 当前分面所在的弧度\n const angle = (-1 * Math.PI) / 2 + avgAngle * index;\n // TODO 没看懂\n const facetR = r / (1 + 1 / Math.sin(avgAngle / 2));\n // 分面的中心点\n const middle = getAnglePoint(center, r - facetR, angle);\n const startAngle = (Math.PI * 5) / 4; // 右上角\n const endAngle = (Math.PI * 1) / 4; // 左下角\n\n return {\n start: getAnglePoint(middle, facetR, startAngle),\n end: getAnglePoint(middle, facetR, endAngle),\n };\n }\n\n protected afterEachView(view: View, facet: CircleData) {\n this.processAxis(view, facet);\n }\n\n protected beforeEachView(view: View, facet: CircleData) {}\n\n protected generateFacets(data: Datum[]): CircleData[] {\n const { fields, type } = this.cfg;\n const [field] = fields;\n if (!field) {\n throw new Error('No `fields` specified!');\n }\n\n const values = this.getFieldValues(data, field);\n const count = values.length;\n\n const rst = [];\n values.forEach((value: any, index: number) => {\n const conditions = [{ field, value, values }];\n const facetData = filter(data, this.getFacetDataFilter(conditions));\n\n const facet: CircleData = {\n type,\n data: facetData,\n region: this.getRegion(count, index),\n\n columnValue: value,\n columnField: field,\n columnIndex: index,\n columnValuesLength: count,\n\n rowValue: null,\n rowField: null,\n rowIndex: 0,\n rowValuesLength: 1,\n };\n rst.push(facet);\n });\n return rst;\n }\n\n protected getXAxisOption(x: string, axes: any, option: AxisCfg, facet: CircleData): object {\n // 不做任何处理\n return option;\n }\n\n /**\n * 设置 y 坐标轴的文本、title 是否显示\n * @param y\n * @param axes\n * @param option\n * @param facet\n */\n protected getYAxisOption(y: string, axes: any, option: AxisCfg, facet: CircleData): object {\n // 不做任何处理\n return option;\n }\n\n /**\n * facet title\n */\n private renderTitle() {\n each(this.facets, (facet: CircleData) => {\n const { columnValue, view } = facet;\n const formatter = get(this.cfg.title, 'formatter');\n\n const config = deepMix(\n {\n position: ['50%', '0%'] as [string, string],\n content: formatter ? formatter(columnValue) : columnValue,\n },\n getFactTitleConfig(DIRECTION.TOP),\n this.cfg.title\n );\n\n view.annotation().text(config);\n });\n }\n}\n","import { deepMix, each, filter, get } from '@antv/util';\nimport { DIRECTION } from '../constant';\nimport { AxisCfg, Datum, ListCfg, ListData } from '../interface';\n\nimport View from '../chart/view';\nimport { getFactTitleConfig } from '../util/facet';\nimport { Facet } from './facet';\n\n/**\n * @ignore\n * 镜像分面\n */\nexport default class List extends Facet {\n protected getDefaultCfg() {\n return deepMix({}, super.getDefaultCfg(), {\n type: 'list',\n cols: null, // 默认显示一列\n showTitle: true,\n title: super.getDefaultTitleCfg(),\n });\n }\n\n public render() {\n super.render();\n\n if (this.cfg.showTitle) {\n this.renderTitle();\n }\n }\n\n protected afterEachView(view: View, facet: ListData) {\n this.processAxis(view, facet);\n }\n\n protected beforeEachView(view: View, facet: ListData) {}\n\n protected generateFacets(data: Datum[]): ListData[] {\n const { fields } = this.cfg;\n let { cols } = this.cfg;\n\n const [columnField] = fields;\n if (!columnField) {\n throw new Error('No `fields` specified!');\n }\n\n const colValues = this.getFieldValues(data, columnField);\n\n const count = colValues.length;\n cols = cols || count; // 每行有几列数据\n\n // 总共有几行\n const rows = this.getPageCount(count, cols);\n const rst = [];\n\n colValues.forEach((val, index) => {\n // 当前 index 在那个行列\n const { row, col } = this.getRowCol(index, cols);\n\n const conditions = [{ field: columnField, value: val, values: colValues }];\n\n const facetData = filter(data, this.getFacetDataFilter(conditions));\n\n const facet: ListData = {\n type: this.cfg.type,\n data: facetData,\n region: this.getRegion(rows, cols, col, row),\n\n columnValue: val,\n rowValue: val,\n columnField,\n rowField: null,\n columnIndex: col,\n rowIndex: row,\n columnValuesLength: cols,\n rowValuesLength: rows,\n\n total: count,\n };\n\n rst.push(facet);\n });\n\n return rst;\n }\n\n /**\n * 设置 x 坐标轴的文本、title 是否显示\n * @param x\n * @param axes\n * @param option\n * @param facet\n */\n protected getXAxisOption(x: string, axes: any, option: AxisCfg, facet: ListData): object {\n // 当是最后一行或者下面没有 view 时文本不显示\n if (\n facet.rowIndex !== facet.rowValuesLength - 1 &&\n facet.columnValuesLength * facet.rowIndex + facet.columnIndex + 1 + facet.columnValuesLength <= facet.total\n ) {\n return {\n ...option,\n label: null,\n title: null,\n };\n }\n return option;\n }\n\n /**\n * 设置 y 坐标轴的文本、title 是否显示\n * @param y\n * @param axes\n * @param option\n * @param facet\n */\n protected getYAxisOption(y: string, axes: any, option: AxisCfg, facet: ListData): object {\n if (facet.columnIndex !== 0) {\n return {\n ...option,\n title: null,\n label: null,\n };\n }\n return option;\n }\n\n /**\n * facet title\n */\n private renderTitle() {\n each(this.facets, (facet: ListData) => {\n const { columnValue, view } = facet;\n const formatter = get(this.cfg.title, 'formatter');\n\n const config = deepMix(\n {\n position: ['50%', '0%'] as [string, string],\n content: formatter ? formatter(columnValue) : columnValue,\n },\n getFactTitleConfig(DIRECTION.TOP),\n this.cfg.title\n );\n\n view.annotation().text(config);\n });\n }\n\n /**\n * 计算分页数\n * @param total\n * @param pageSize\n */\n private getPageCount(total: number, pageSize: number): number {\n return Math.floor((total + pageSize - 1) / pageSize);\n }\n\n /**\n * 索引值在哪一页\n * @param index\n * @param pageSize\n */\n private getRowCol(index: number, pageSize: number) {\n const row = Math.floor(index / pageSize);\n const col = index % pageSize;\n\n return { row, col };\n }\n}\n","import { deepMix, each, get } from '@antv/util';\nimport { DIRECTION } from '../constant';\nimport { AxisCfg, Datum, MatrixCfg, MatrixData } from '../interface';\n\nimport View from '../chart/view';\nimport { getFactTitleConfig } from '../util/facet';\nimport { Facet } from './facet';\n\n/**\n * @ignore\n * 镜像分面\n */\nexport default class Matrix extends Facet {\n protected getDefaultCfg() {\n return deepMix({}, super.getDefaultCfg(), {\n type: 'matrix',\n showTitle: false,\n columnTitle: {\n ...super.getDefaultTitleCfg(),\n },\n rowTitle: {\n ...super.getDefaultTitleCfg(),\n },\n });\n }\n\n public render() {\n super.render();\n\n if (this.cfg.showTitle) {\n this.renderTitle();\n }\n }\n\n protected afterEachView(view: View, facet: MatrixData) {\n this.processAxis(view, facet);\n }\n\n protected beforeEachView(view: View, facet: MatrixData) {}\n\n protected generateFacets(data: Datum[]): MatrixData[] {\n const { fields, type } = this.cfg;\n\n // 矩阵中行列相等,等于指定的字段个数\n const rowValuesLength = fields.length;\n const columnValuesLength = rowValuesLength;\n\n const rst = [];\n for (let i = 0; i < columnValuesLength; i++) {\n const columnField = fields[i];\n for (let j = 0; j < rowValuesLength; j++) {\n const rowField = fields[j];\n\n const facet: MatrixData = {\n type,\n data,\n region: this.getRegion(rowValuesLength, columnValuesLength, i, j),\n\n columnValue: columnField,\n rowValue: rowField,\n columnField,\n rowField,\n columnIndex: i,\n rowIndex: j,\n columnValuesLength,\n rowValuesLength,\n };\n rst.push(facet);\n }\n }\n return rst;\n }\n\n /**\n * 设置 x 坐标轴的文本、title 是否显示\n * @param x\n * @param axes\n * @param option\n * @param facet\n */\n protected getXAxisOption(x: string, axes: any, option: AxisCfg, facet: MatrixData): object {\n // 最后一行显示\n if (facet.rowIndex !== facet.rowValuesLength - 1) {\n return {\n ...option,\n label: null,\n title: null,\n };\n }\n return option;\n }\n\n /**\n * 设置 y 坐标轴的文本、title 是否显示\n * @param y\n * @param axes\n * @param option\n * @param facet\n */\n protected getYAxisOption(y: string, axes: any, option: AxisCfg, facet: MatrixData): object {\n // 第一列显示\n if (facet.columnIndex !== 0) {\n return {\n ...option,\n title: null,\n label: null,\n };\n }\n return option;\n }\n\n /**\n * facet title\n */\n private renderTitle() {\n each(this.facets, (facet: MatrixData, facetIndex: number) => {\n const { columnIndex, rowIndex, columnValuesLength, rowValuesLength, columnValue, rowValue, view } = facet;\n\n // top\n if (rowIndex === 0) {\n const formatter = get(this.cfg.columnTitle, 'formatter');\n const config = deepMix(\n {\n position: ['50%', '0%'] as [string, string],\n content: formatter ? formatter(columnValue) : columnValue,\n },\n getFactTitleConfig(DIRECTION.TOP),\n this.cfg.columnTitle\n );\n\n view.annotation().text(config);\n }\n // right\n if (columnIndex === columnValuesLength - 1) {\n const formatter = get(this.cfg.rowTitle, 'formatter');\n const config = deepMix(\n {\n position: ['100%', '50%'] as [string, string],\n content: formatter ? formatter(rowValue) : rowValue,\n },\n getFactTitleConfig(DIRECTION.RIGHT),\n this.cfg.rowTitle\n );\n\n view.annotation().text(config);\n }\n });\n }\n}\n","import { deepMix, each, filter, get } from '@antv/util';\nimport { DIRECTION } from '../constant';\nimport { AxisCfg, Datum, MirrorCfg, MirrorData } from '../interface';\n\nimport View from '../chart/view';\nimport { getFactTitleConfig } from '../util/facet';\nimport { Facet } from './facet';\n\n/**\n * @ignore\n * 镜像分面\n */\nexport default class Mirror extends Facet {\n protected getDefaultCfg() {\n return deepMix({}, super.getDefaultCfg(), {\n type: 'mirror',\n showTitle: true,\n title: super.getDefaultTitleCfg(),\n transpose: false,\n });\n }\n\n public render() {\n super.render();\n\n if (this.cfg.showTitle) {\n this.renderTitle();\n }\n }\n\n protected beforeEachView(view: View, facet: MirrorData) {\n // 做一下坐标系转化\n if (this.cfg.transpose) {\n if (facet.columnIndex % 2 === 0) {\n view.coordinate().transpose().reflect('x');\n } else {\n view.coordinate().transpose();\n }\n } else {\n if (facet.rowIndex % 2 !== 0) {\n view.coordinate().reflect('y');\n }\n }\n }\n\n protected afterEachView(view: View, facet: MirrorData) {\n this.processAxis(view, facet);\n }\n\n protected generateFacets(data: Datum[]): MirrorData[] {\n const [f] = this.cfg.fields;\n\n const rst = [];\n let columnValuesLength = 1;\n let rowValuesLength = 1;\n\n let columnValues: string[] = [''];\n let rowValues: string[] = [''];\n\n let columnField;\n let rowField;\n\n if (this.cfg.transpose) {\n columnField = f;\n columnValues = this.getFieldValues(data, columnField).slice(0, 2); // 镜像最多两个\n columnValuesLength = columnValues.length;\n } else {\n rowField = f;\n rowValues = this.getFieldValues(data, rowField).slice(0, 2); // 镜像最多两个\n rowValuesLength = rowValues.length;\n }\n\n // 获取每个维度对应的数据配置片段\n columnValues.forEach((xVal, xIndex) => {\n rowValues.forEach((yVal, yIndex) => {\n const conditions = [\n { field: columnField, value: xVal, values: columnValues },\n { field: rowField, value: yVal, values: rowValues },\n ];\n\n const facetData = filter(data, this.getFacetDataFilter(conditions));\n\n const facet: MirrorData = {\n type: this.cfg.type,\n data: facetData,\n region: this.getRegion(rowValuesLength, columnValuesLength, xIndex, yIndex),\n\n columnValue: xVal,\n rowValue: yVal,\n columnField,\n rowField,\n columnIndex: xIndex,\n rowIndex: yIndex,\n columnValuesLength,\n rowValuesLength,\n };\n rst.push(facet);\n });\n });\n\n return rst;\n }\n\n /**\n * 设置 x 坐标轴的文本、title 是否显示\n * @param x\n * @param axes\n * @param option\n * @param facet\n */\n protected getXAxisOption(x: string, axes: any, option: AxisCfg, facet: MirrorData): object {\n // 非最后一行\n // 当是最后一行或者下面没有 view 时文本不显示\n if (facet.columnIndex === 1 || facet.rowIndex === 1) {\n return {\n ...option,\n label: null,\n title: null,\n };\n }\n\n return option;\n }\n\n /**\n * 设置 y 坐标轴的文本、title 是否显示\n * @param y\n * @param axes\n * @param option\n * @param facet\n */\n protected getYAxisOption(y: string, axes: any, option: AxisCfg, facet: MirrorData): object {\n // do nothing\n return option;\n }\n\n private renderTitle() {\n each(this.facets, (facet: MirrorData, facetIndex: number) => {\n const { columnValue, rowValue, view } = facet;\n const formatter = get(this.cfg.title, 'formatter');\n\n if (this.cfg.transpose) {\n const config = deepMix(\n {\n position: ['50%', '0%'] as [string, string],\n content: formatter ? formatter(columnValue) : columnValue,\n },\n getFactTitleConfig(DIRECTION.TOP),\n this.cfg.title\n );\n\n view.annotation().text(config);\n } else {\n const config = deepMix(\n {\n position: ['100%', '50%'] as [string, string],\n content: formatter ? formatter(rowValue) : rowValue,\n },\n getFactTitleConfig(DIRECTION.RIGHT),\n this.cfg.title\n );\n\n view.annotation().text(config);\n }\n });\n }\n}\n","import { deepMix, each, filter, get } from '@antv/util';\nimport { DIRECTION } from '../constant';\nimport { AxisCfg, Datum, RectCfg, RectData } from '../interface';\n\nimport View from '../chart/view';\nimport { getFactTitleConfig } from '../util/facet';\nimport { Facet } from './facet';\n\n/**\n * @ignore\n * 矩阵分面\n */\nexport default class Rect extends Facet {\n protected afterEachView(view: View, facet: RectData) {\n this.processAxis(view, facet);\n }\n\n protected beforeEachView(view: View, facet: RectData) {\n // do nothing\n }\n\n protected getDefaultCfg() {\n return deepMix({}, super.getDefaultCfg(), {\n type: 'rect',\n columnTitle: {\n ...super.getDefaultTitleCfg(),\n },\n rowTitle: {\n ...super.getDefaultTitleCfg(),\n },\n });\n }\n\n public render() {\n super.render();\n\n if (this.cfg.showTitle) {\n this.renderTitle();\n }\n }\n\n /**\n * 生成矩阵分面的分面数据\n * @param data\n */\n protected generateFacets(data: Datum[]): RectData[] {\n const [columnField, rowField] = this.cfg.fields;\n\n const rst = [];\n let columnValuesLength = 1;\n let rowValuesLength = 1;\n\n let columnValues: string[] = [''];\n let rowValues: string[] = [''];\n\n if (columnField) {\n columnValues = this.getFieldValues(data, columnField);\n columnValuesLength = columnValues.length;\n }\n if (rowField) {\n rowValues = this.getFieldValues(data, rowField);\n rowValuesLength = rowValues.length;\n }\n\n // 获取每个维度对应的数据配置片段\n columnValues.forEach((xVal, xIndex) => {\n rowValues.forEach((yVal, yIndex) => {\n const conditions = [\n { field: columnField, value: xVal, values: columnValues },\n { field: rowField, value: yVal, values: rowValues },\n ];\n const facetData = filter(data, this.getFacetDataFilter(conditions));\n\n const facet: RectData = {\n type: this.cfg.type,\n data: facetData,\n region: this.getRegion(rowValuesLength, columnValuesLength, xIndex, yIndex),\n\n columnValue: xVal,\n rowValue: yVal,\n columnField,\n rowField,\n columnIndex: xIndex,\n rowIndex: yIndex,\n columnValuesLength,\n rowValuesLength,\n };\n rst.push(facet);\n });\n });\n\n return rst;\n }\n\n private renderTitle(): void {\n each(this.facets, (facet: RectData, facetIndex: number) => {\n const { columnIndex, rowIndex, columnValuesLength, columnValue, rowValue, view } = facet;\n\n // top\n if (rowIndex === 0) {\n const formatter = get(this.cfg.columnTitle, 'formatter');\n const config = deepMix(\n {\n position: ['50%', '0%'] as [string, string],\n content: formatter ? formatter(columnValue) : columnValue,\n },\n getFactTitleConfig(DIRECTION.TOP),\n this.cfg.columnTitle\n );\n\n view.annotation().text(config);\n }\n // right\n if (columnIndex === columnValuesLength - 1) {\n const formatter = get(this.cfg.rowTitle, 'formatter');\n const config = deepMix(\n {\n position: ['100%', '50%'] as [string, string],\n content: formatter ? formatter(rowValue) : rowValue,\n },\n getFactTitleConfig(DIRECTION.RIGHT),\n this.cfg.rowTitle\n );\n\n view.annotation().text(config);\n }\n });\n }\n\n /**\n * 设置 x 坐标轴的文本、title 是否显示\n * @param x\n * @param axes\n * @param option\n * @param facet\n */\n protected getXAxisOption(x: string, axes: any, option: AxisCfg, facet: RectData): object {\n // 非最后一行\n if (facet.rowIndex !== facet.rowValuesLength - 1) {\n return {\n ...option,\n title: null,\n label: null,\n };\n } else if (facet.columnIndex !== Math.floor((facet.columnValuesLength - 1) / 2)) {\n // 不是中间列\n return {\n ...option,\n title: null,\n };\n }\n return option;\n }\n\n /**\n * 设置 y 坐标轴的文本、title 是否显示\n * @param y\n * @param axes\n * @param option\n * @param facet\n */\n protected getYAxisOption(y: string, axes: any, option: AxisCfg, facet: RectData): object {\n if (facet.columnIndex !== 0) {\n return {\n ...option,\n title: null,\n label: null,\n };\n } else if (facet.rowIndex !== Math.floor((facet.rowValuesLength - 1) / 2)) {\n return {\n ...option,\n title: null,\n };\n }\n return option;\n }\n}\n","/**\n * Create By Bruce Too\n * On 2020-02-10\n */\nimport { assign, deepMix, each, get } from '@antv/util';\nimport View from '../chart/view';\nimport { DIRECTION, VIEW_LIFE_CIRCLE } from '../constant';\nimport { AxisCfg, Condition, Datum, TreeCfg, TreeData } from '../interface';\nimport { getFactTitleConfig } from '../util/facet';\nimport { Facet } from './facet';\n\n/**\n * @ignore\n * Tree Facet\n */\nexport default class Tree extends Facet {\n protected afterEachView(view: View, facet: TreeData) {\n this.processAxis(view, facet);\n }\n\n protected beforeEachView(view: View, facet: TreeData) {}\n\n public init() {\n super.init();\n this.view.on(VIEW_LIFE_CIRCLE.AFTER_RENDER, this.afterChartRender);\n }\n\n protected getDefaultCfg() {\n return deepMix({}, super.getDefaultCfg(), {\n type: 'tree',\n line: {\n style: {\n lineWidth: 1,\n stroke: '#ddd',\n },\n smooth: false,\n },\n showTitle: true,\n title: super.getDefaultTitleCfg(),\n });\n }\n\n protected generateFacets(data: Datum[]): TreeData[] {\n const fields = this.cfg.fields;\n if (!fields.length) {\n throw new Error('Please specify for the fields for rootFacet!');\n }\n const rst = [];\n const rootFacet: TreeData = {\n type: this.cfg.type,\n data,\n region: null,\n rowValuesLength: this.getRows(),\n columnValuesLength: 1,\n rowIndex: 0,\n columnIndex: 0,\n rowField: '',\n columnField: '',\n rowValue: '',\n columnValue: '',\n };\n rst.push(rootFacet);\n rootFacet.children = this.getChildFacets(data, 1, rst);\n this.setRegion(rst);\n return rst;\n }\n\n private setRegion(facets: TreeData[]) {\n this.forceColIndex(facets);\n facets.forEach((facet) => {\n // @ts-ignore 允许调整\n facet.region = this.getRegion(facet.rowValuesLength, facet.columnValuesLength, facet.columnIndex, facet.rowIndex);\n });\n }\n\n protected getRegion(rows: number, cols: number, xIndex: number, yIndex: number) {\n const xWidth = 1 / cols; // x轴方向的每个分面的偏移\n const yWidth = 1 / rows; // y轴方向的每个分面的偏移\n\n const start = {\n x: xWidth * xIndex,\n y: yWidth * yIndex,\n };\n\n const end = {\n x: start.x + xWidth,\n y: start.y + (yWidth * 2) / 3, // 预留1/3的空隙,方便添加连接线\n };\n return {\n start,\n end,\n };\n }\n\n private forceColIndex(facets: TreeData[]) {\n const leafs: TreeData[] = [];\n let index = 0;\n facets.forEach((facet) => {\n if (this.isLeaf(facet)) {\n leafs.push(facet);\n // @ts-ignore 允许调整\n facet.columnIndex = index;\n index++;\n }\n });\n\n leafs.forEach((facet) => {\n // @ts-ignore\n facet.columnValuesLength = leafs.length;\n });\n const maxLevel = this.cfg.fields.length;\n for (let i = maxLevel - 1; i >= 0; i--) {\n const levelFacets = this.getFacetsByLevel(facets, i);\n // var yIndex = maxLevel - i;\n for (const facet of levelFacets) {\n if (!this.isLeaf(facet)) {\n facet.originColIndex = facet.columnIndex;\n // @ts-ignore\n facet.columnIndex = this.getRegionIndex(facet.children);\n // @ts-ignore\n facet.columnValuesLength = leafs.length;\n }\n }\n }\n }\n\n // get facet use level\n private getFacetsByLevel(facets: TreeData[], level: number) {\n const rst: TreeData[] = [];\n facets.forEach((facet) => {\n if (facet.rowIndex === level) {\n rst.push(facet);\n }\n });\n return rst;\n }\n\n // if the facet has children , make it's column index in the middle of it's children\n private getRegionIndex(children: TreeData[]) {\n const first = children[0];\n const last = children[children.length - 1];\n return (last.columnIndex - first.columnIndex) / 2 + first.columnIndex;\n }\n\n // is a leaf without children\n private isLeaf(facet: TreeData) {\n return !facet.children || !facet.children.length;\n }\n\n private getRows() {\n return this.cfg.fields.length + 1;\n }\n\n // get child\n private getChildFacets(data: Datum[], level: number, arr: TreeData[]) {\n // [ 'grade', 'class' ]\n const fields = this.cfg.fields;\n const length = fields.length;\n if (length < level) {\n return;\n }\n const rst = [];\n // get fist level except root node\n const field = fields[level - 1];\n // get field value\n const values = this.getFieldValues(data, field);\n values.forEach((value, index) => {\n const conditions = [{ field, value, values } as Condition];\n const subData = data.filter(this.getFacetDataFilter(conditions));\n if (subData.length) {\n const facet: TreeData = {\n type: this.cfg.type,\n data: subData,\n region: null,\n columnValue: value,\n rowValue: '',\n columnField: field,\n rowField: '',\n columnIndex: index,\n rowValuesLength: this.getRows(),\n columnValuesLength: 1,\n rowIndex: level,\n children: this.getChildFacets(subData, level + 1, arr),\n };\n rst.push(facet);\n arr.push(facet);\n }\n });\n return rst;\n }\n\n public render() {\n super.render();\n if (this.cfg.showTitle) {\n this.renderTitle();\n }\n }\n\n private afterChartRender = () => {\n if (this.facets && this.cfg.line) {\n this.container.clear();\n this.drawLines(this.facets);\n }\n };\n\n private renderTitle() {\n each(this.facets, (facet: TreeData) => {\n const { columnValue, view } = facet;\n const formatter = get(this.cfg.title, 'formatter');\n\n const config = deepMix(\n {\n position: ['50%', '0%'] as [string, string],\n content: formatter ? formatter(columnValue) : columnValue,\n },\n getFactTitleConfig(DIRECTION.TOP),\n this.cfg.title\n );\n\n view.annotation().text(config);\n });\n }\n\n private drawLines(facets: TreeData[]) {\n facets.forEach((facet) => {\n if (!this.isLeaf(facet)) {\n const children = facet.children;\n this.addFacetLines(facet, children);\n }\n });\n }\n\n // add lines with it's children\n private addFacetLines(facet: TreeData, children: TreeData[]) {\n const view = facet.view;\n const region = view.coordinateBBox;\n // top, right, bottom, left\n const start = {\n x: region.x + region.width / 2,\n y: region.y + region.height,\n };\n\n children.forEach((subFacet) => {\n const subRegion = subFacet.view.coordinateBBox;\n const end = {\n x: subRegion.bl.x + (subRegion.tr.x - subRegion.bl.x) / 2,\n y: subRegion.tr.y,\n };\n\n const middle1 = {\n x: start.x,\n y: start.y + (end.y - start.y) / 2,\n };\n const middle2 = {\n x: end.x,\n y: middle1.y,\n };\n this.drawLine([start, middle1, middle2, end]);\n });\n }\n\n private getPath(points) {\n const path = [];\n const smooth = this.cfg.line.smooth;\n if (smooth) {\n path.push(['M', points[0].x, points[0].y]);\n path.push(['C', points[1].x, points[1].y, points[2].x, points[2].y, points[3].x, points[3].y]);\n } else {\n points.forEach((point, index) => {\n if (index === 0) {\n path.push(['M', point.x, point.y]);\n } else {\n path.push(['L', point.x, point.y]);\n }\n });\n }\n\n return path;\n }\n\n // draw line width points\n private drawLine(points) {\n const path = this.getPath(points);\n const line = this.cfg.line.style;\n this.container.addShape('path', {\n attrs: assign(\n {\n // @ts-ignore\n path,\n },\n line\n ),\n });\n }\n\n protected getXAxisOption(x: string, axes: any, option: AxisCfg, facet: TreeData): object {\n if (facet.rowIndex !== facet.rowValuesLength - 1) {\n return {\n ...option,\n title: null,\n label: null,\n };\n }\n return option;\n }\n\n protected getYAxisOption(y: string, axes: any, option: AxisCfg, facet: TreeData): object {\n if (facet.originColIndex !== 0 && facet.columnIndex !== 0) {\n return {\n ...option,\n title: null,\n label: null,\n };\n }\n return option;\n }\n}\n","import { reduce, isNumber } from '@antv/util';\n\n/**\n * 获得中位数\n * @param array\n */\nexport function getMedian(array: number[]) {\n const arr = [...array];\n // 先排序\n arr.sort((a: number, b: number) => {\n return a - b;\n });\n\n const len = arr.length;\n\n // median\n // 0\n if (len === 0) {\n return 0;\n }\n\n // 奇数\n if (len % 2 === 1) {\n return arr[(len - 1) / 2];\n }\n\n // 偶数\n return (arr[len / 2] + arr[len / 2 - 1]) / 2;\n}\n\n/**\n * 获得平均值\n * @param array\n */\nexport function getMean(array: number[]) {\n const sum = reduce(\n array,\n (r: number, num: number) => {\n return (r += isNaN(num) || !isNumber(num) ? 0 : num);\n },\n 0\n );\n\n return array.length === 0 ? 0 : sum / array.length;\n}\n","import { getMedian, getMean } from './stat';\nimport { Scale } from '../dependents';\n\n/**\n * parse the value position\n * @param val\n * @param scale\n */\nexport function getNormalizedValue(val: number | string, scale: Scale) {\n if (!scale) {\n return null;\n }\n let scaled: number;\n\n switch (val) {\n case 'start':\n return 0;\n case 'center':\n return 0.5;\n case 'end':\n return 1;\n case 'median': {\n scaled = scale.isCategory ? getMedian(scale.values.map((_, idx: number) => idx)) : getMedian(scale.values);\n break;\n }\n case 'mean': {\n scaled = scale.isCategory ? (scale.values.length - 1) / 2 : getMean(scale.values);\n break;\n }\n case 'min':\n scaled = scale.isCategory ? 0 : scale[val];\n break;\n case 'max':\n scaled = scale.isCategory ? scale.values.length - 1 : scale[val];\n break;\n default:\n scaled = val as number;\n break;\n }\n\n return scale.scale(scaled);\n}\n","import {\n contains,\n deepMix,\n each,\n get,\n isArray,\n isFunction,\n isNil,\n isString,\n keys,\n upperFirst,\n find,\n includes,\n} from '@antv/util';\nimport { Annotation as AnnotationComponent, IElement, IGroup } from '../../dependents';\nimport {\n AnnotationBaseOption as BaseOption,\n AnnotationPosition as Position,\n ArcOption,\n ComponentOption,\n ShapeAnnotationOption,\n Data,\n DataMarkerOption,\n DataRegionOption,\n Datum,\n HtmlAnnotationOption,\n ImageOption,\n LineOption,\n Point,\n RegionFilterOption,\n RegionOption,\n RegionPositionBaseOption,\n TextOption,\n} from '../../interface';\n\nimport { DEFAULT_ANIMATE_CFG } from '../../animate/';\nimport { COMPONENT_TYPE, DIRECTION, GEOMETRY_LIFE_CIRCLE, LAYER, VIEW_LIFE_CIRCLE } from '../../constant';\n\nimport Geometry from '../../geometry/base';\nimport Element from '../../geometry/element';\nimport { getAngleByPoint, getDistanceToCenter } from '../../util/coordinate';\nimport { omit } from '../../util/helper';\nimport { getNormalizedValue } from '../../util/annotation';\nimport View from '../view';\nimport { Controller } from './base';\nimport { Scale } from '@antv/attr';\n\n/** 需要在图形绘制完成后才渲染的辅助组件类型列表 */\nconst ANNOTATIONS_AFTER_RENDER = ['regionFilter', 'shape'];\n\n/**\n * Annotation controller, 主要作用:\n * 1. 创建 Annotation: line、text、arc ...\n * 2. 生命周期: init、layout、render、clear、destroy\n */\nexport default class Annotation extends Controller {\n private foregroundContainer: IGroup;\n private backgroundContainer: IGroup;\n\n /* 组件更新的 cache,组件配置 object : 组件 */\n private cache = new Map();\n\n constructor(view: View) {\n super(view);\n\n this.foregroundContainer = this.view.getLayer(LAYER.FORE).addGroup();\n this.backgroundContainer = this.view.getLayer(LAYER.BG).addGroup();\n\n this.option = [];\n }\n\n public get name(): string {\n return 'annotation';\n }\n\n public init() { }\n\n /**\n * 因为 annotation 需要依赖坐标系信息,所以 render 阶段为空方法,实际的创建逻辑都在 layout 中\n */\n public layout() {\n this.update();\n }\n\n // 因为 Annotation 不参与布局,但是渲染的位置依赖于坐标系,所以可以将绘制阶段延迟到 layout() 进行\n public render() { }\n\n /**\n * 更新\n */\n public update() {\n // 1. 先处理需要在图形渲染之后的辅助组件 需要在 Geometry 完成之后,拿到图形信息\n this.onAfterRender(() => {\n const updated = new Map();\n // 先看是否有 regionFilter/shape 要更新\n each(this.option, (option: BaseOption) => {\n if (includes(ANNOTATIONS_AFTER_RENDER, option.type)) {\n const co = this.updateOrCreate(option);\n // 存储已经处理过的\n if (co) {\n updated.set(this.getCacheKey(option), co);\n }\n }\n });\n\n // 处理完成之后,更新 cache\n // 处理完成之后,销毁删除的\n this.cache = this.syncCache(updated);\n });\n\n // 2. 处理非 regionFilter\n const updateCache = new Map();\n each(this.option, (option: BaseOption) => {\n if (!includes(ANNOTATIONS_AFTER_RENDER, option.type)) {\n const co = this.updateOrCreate(option);\n // 存储已经处理过的\n if (co) {\n updateCache.set(this.getCacheKey(option), co);\n }\n }\n });\n this.cache = this.syncCache(updateCache);\n }\n\n /**\n * 清空\n * @param includeOption 是否清空 option 配置项\n */\n public clear(includeOption = false) {\n super.clear();\n\n this.clearComponents();\n this.foregroundContainer.clear();\n this.backgroundContainer.clear();\n\n // clear all option\n if (includeOption) {\n this.option = [];\n }\n }\n\n public destroy() {\n this.clear(true);\n\n this.foregroundContainer.remove(true);\n this.backgroundContainer.remove(true);\n }\n\n /**\n * 复写基类的方法\n */\n public getComponents(): ComponentOption[] {\n const co = [];\n\n this.cache.forEach((value: ComponentOption) => {\n co.push(value);\n });\n\n return co;\n }\n\n /**\n * 清除当前的组件\n */\n private clearComponents() {\n this.getComponents().forEach((co) => {\n co.component.destroy();\n });\n\n this.cache.clear();\n }\n\n /**\n * region filter 比较特殊的渲染时机\n * @param doWhat\n */\n private onAfterRender(doWhat: () => void) {\n let done = false;\n if (this.view.getOptions().animate) {\n this.view.geometries.forEach((g: Geometry) => {\n // 如果 geometry 开启,则监听\n if (g.animateOption) {\n g.once(GEOMETRY_LIFE_CIRCLE.AFTER_DRAW_ANIMATE, () => {\n doWhat();\n });\n done = true;\n }\n });\n }\n\n if (!done) {\n this.view.getRootView().once(VIEW_LIFE_CIRCLE.AFTER_RENDER, () => {\n doWhat();\n });\n }\n }\n\n private createAnnotation(option: BaseOption) {\n const { type } = option;\n\n const Ctor = AnnotationComponent[upperFirst(type)];\n if (Ctor) {\n const theme = this.getAnnotationTheme(type);\n const cfg = this.getAnnotationCfg(type, option, theme);\n // 不创建\n if (!cfg) {\n return null;\n }\n const annotation = new Ctor(cfg);\n\n return {\n component: annotation,\n layer: this.isTop(cfg) ? LAYER.FORE : LAYER.BG,\n direction: DIRECTION.NONE,\n type: COMPONENT_TYPE.ANNOTATION,\n extra: option,\n };\n }\n }\n\n // APIs for creating annotation component\n public annotation(option: any) {\n this.option.push(option);\n }\n\n /**\n * 创建 Arc\n * @param option\n * @returns AnnotationController\n */\n public arc(option: ArcOption) {\n this.annotation({\n type: 'arc',\n ...option,\n });\n\n return this;\n }\n\n /**\n * 创建 image\n * @param option\n * @returns AnnotationController\n */\n public image(option: ImageOption) {\n this.annotation({\n type: 'image',\n ...option,\n });\n\n return this;\n }\n\n /**\n * 创建 Line\n * @param option\n * @returns AnnotationController\n */\n public line(option: LineOption) {\n this.annotation({\n type: 'line',\n ...option,\n });\n\n return this;\n }\n\n /**\n * 创建 Region\n * @param option\n * @returns AnnotationController\n */\n public region(option: RegionOption) {\n this.annotation({\n type: 'region',\n ...option,\n });\n\n return this;\n }\n\n /**\n * 创建 Text\n * @param option\n * @returns AnnotationController\n */\n public text(option: TextOption) {\n this.annotation({\n type: 'text',\n ...option,\n });\n\n return this;\n }\n\n /**\n * 创建 DataMarker\n * @param option\n * @returns AnnotationController\n */\n public dataMarker(option: DataMarkerOption) {\n this.annotation({\n type: 'dataMarker',\n ...option,\n });\n\n return this;\n }\n\n /**\n * 创建 DataRegion\n * @param option\n * @returns AnnotationController\n */\n public dataRegion(option: DataRegionOption) {\n this.annotation({\n type: 'dataRegion',\n ...option,\n });\n }\n\n /**\n * 创建 RegionFilter\n * @param option\n * @returns AnnotationController\n */\n public regionFilter(option: RegionFilterOption) {\n this.annotation({\n type: 'regionFilter',\n ...option,\n });\n }\n\n /**\n * 创建 ShapeAnnotation\n * @param option\n */\n public shape(option: ShapeAnnotationOption) {\n this.annotation({\n type: 'shape',\n ...option,\n });\n }\n\n /**\n * 创建 HtmlAnnotation\n * @param option\n */\n public html(option: HtmlAnnotationOption) {\n this.annotation({\n type: 'html',\n ...option,\n });\n }\n // end API\n\n /**\n * parse the point position to [x, y]\n * @param p Position\n * @returns { x, y }\n */\n private parsePosition(\n p:\n | [string | number, string | number]\n | Datum\n | ((xScale: Scale, yScale: Scale) => [string | number, string | number] | number | Datum)\n ): Point {\n const xScale = this.view.getXScale();\n // 转成 object\n const yScales = this.view.getScalesByDim('y');\n\n const position: Position = isFunction(p) ? p.call(null, xScale, yScales) : p;\n\n let x = 0;\n let y = 0;\n\n // 入参是 [24, 24] 这类时\n if (isArray(position)) {\n const [xPos, yPos] = position;\n // 如果数据格式是 ['50%', '50%'] 的格式\n // fix: 原始数据中可能会包含 'xxx5%xxx' 这样的数据,需要判断下 https://github.com/antvis/f2/issues/590\n // @ts-ignore\n if (isString(xPos) && xPos.indexOf('%') !== -1 && !isNaN(xPos.slice(0, -1))) {\n return this.parsePercentPosition(position as [string, string]);\n }\n\n x = getNormalizedValue(xPos, xScale);\n y = getNormalizedValue(yPos, Object.values(yScales)[0]);\n } else if (!isNil(position)) {\n // 入参是 object 结构,数据点\n for (const key of keys(position)) {\n const value = position[key];\n if (key === xScale.field) {\n x = getNormalizedValue(value, xScale);\n }\n if (yScales[key]) {\n y = getNormalizedValue(value, yScales[key]);\n }\n }\n }\n\n if (isNaN(x) || isNaN(y)) {\n return null;\n }\n\n return this.view.getCoordinate().convert({ x, y });\n }\n\n /**\n * parse all the points between start and end\n * @param start\n * @param end\n * @return Point[]\n */\n private getRegionPoints(start: Position | Data, end: Position | Data): Point[] {\n const xScale = this.view.getXScale();\n const yScales = this.view.getScalesByDim('y');\n const yScale = Object.values(yScales)[0];\n const xField = xScale.field;\n const viewData = this.view.getData();\n const startXValue = isArray(start) ? start[0] : start[xField];\n const endXValue = isArray(end) ? end[0] : end[xField];\n const arr = [];\n\n let startIndex;\n each(viewData, (item, idx) => {\n if (item[xField] === startXValue) {\n startIndex = idx;\n }\n if (idx >= startIndex) {\n const point = this.parsePosition([item[xField], item[yScale.field]]);\n if (point) {\n arr.push(point);\n }\n }\n if (item[xField] === endXValue) {\n return false;\n }\n });\n\n return arr;\n }\n\n /**\n * parse percent position\n * @param position\n */\n private parsePercentPosition(position: [string, string]): Point {\n const xPercent = parseFloat(position[0]) / 100;\n const yPercent = parseFloat(position[1]) / 100;\n const coordinate = this.view.getCoordinate();\n const { start, end } = coordinate;\n\n const topLeft = {\n x: Math.min(start.x, end.x),\n y: Math.min(start.y, end.y),\n };\n const x = coordinate.getWidth() * xPercent + topLeft.x;\n const y = coordinate.getHeight() * yPercent + topLeft.y;\n return { x, y };\n }\n\n /**\n * get coordinate bbox\n */\n private getCoordinateBBox() {\n const coordinate = this.view.getCoordinate();\n const { start, end } = coordinate;\n\n const width = coordinate.getWidth();\n const height = coordinate.getHeight();\n const topLeft = {\n x: Math.min(start.x, end.x),\n y: Math.min(start.y, end.y),\n };\n\n return {\n x: topLeft.x,\n y: topLeft.y,\n minX: topLeft.x,\n minY: topLeft.y,\n maxX: topLeft.x + width,\n maxY: topLeft.y + height,\n width,\n height,\n };\n }\n\n /**\n * get annotation component config by different type\n * @param type\n * @param option 用户的配置\n * @param theme\n */\n private getAnnotationCfg(type: string, option: any, theme: object): object | null {\n const coordinate = this.view.getCoordinate();\n const canvas = this.view.getCanvas();\n let o = {};\n\n if (isNil(option)) {\n return null;\n }\n const { start, end, position } = option;\n const sp = this.parsePosition(start);\n const ep = this.parsePosition(end);\n const textPoint = this.parsePosition(position);\n if (['arc', 'image', 'line', 'region', 'regionFilter'].includes(type) && (!sp || !ep)) {\n return null;\n } else if (['text', 'dataMarker', 'html'].includes(type) && !textPoint) {\n return null;\n }\n\n if (type === 'arc') {\n const { start, end, ...rest } = option as ArcOption;\n const startAngle = getAngleByPoint(coordinate, sp);\n let endAngle = getAngleByPoint(coordinate, ep);\n if (startAngle > endAngle) {\n endAngle = Math.PI * 2 + endAngle;\n }\n\n o = {\n ...rest,\n center: coordinate.getCenter(),\n radius: getDistanceToCenter(coordinate, sp),\n startAngle,\n endAngle,\n };\n } else if (type === 'image') {\n const { start, end, ...rest } = option as ImageOption;\n o = {\n ...rest,\n start: sp,\n end: ep,\n src: option.src,\n };\n } else if (type === 'line') {\n const { start, end, ...rest } = option as LineOption;\n o = {\n ...rest,\n start: sp,\n end: ep,\n text: get(option, 'text', null),\n };\n } else if (type === 'region') {\n const { start, end, ...rest } = option as RegionPositionBaseOption;\n o = {\n ...rest,\n start: sp,\n end: ep,\n };\n } else if (type === 'text') {\n const filteredData = this.view.getData();\n const { position, content, ...rest } = option as TextOption;\n let textContent = content;\n if (isFunction(content)) {\n textContent = content(filteredData);\n }\n o = {\n ...textPoint,\n ...rest,\n content: textContent,\n };\n } else if (type === 'dataMarker') {\n const { position, point, line, text, autoAdjust, direction, ...rest } = option as DataMarkerOption;\n o = {\n ...rest,\n ...textPoint,\n coordinateBBox: this.getCoordinateBBox(),\n point,\n line,\n text,\n autoAdjust,\n direction,\n };\n } else if (type === 'dataRegion') {\n const { start, end, region, text, lineLength, ...rest } = option as DataRegionOption;\n o = {\n ...rest,\n points: this.getRegionPoints(start, end),\n region,\n text,\n lineLength,\n };\n } else if (type === 'regionFilter') {\n const { start, end, apply, color, ...rest } = option as RegionFilterOption;\n const geometries: Geometry[] = this.view.geometries;\n const shapes = [];\n const addShapes = (item?: IElement) => {\n if (!item) {\n return;\n }\n if (item.isGroup()) {\n (item as IGroup).getChildren().forEach((child) => addShapes(child));\n } else {\n shapes.push(item);\n }\n };\n each(geometries, (geom: Geometry) => {\n if (apply) {\n if (contains(apply, geom.type)) {\n each(geom.elements, (elem: Element) => {\n addShapes(elem.shape);\n });\n }\n } else {\n each(geom.elements, (elem: Element) => {\n addShapes(elem.shape);\n });\n }\n });\n o = {\n ...rest,\n color,\n shapes,\n start: sp,\n end: ep,\n };\n } else if (type === 'shape') {\n const { render, ...restOptions } = option as ShapeAnnotationOption;\n const wrappedRender = (container: IGroup) => {\n if (isFunction(option.render)) {\n return render(container, this.view, { parsePosition: this.parsePosition.bind(this) });\n }\n };\n o = {\n ...restOptions,\n render: wrappedRender,\n };\n } else if (type === 'html') {\n const { html, position, ...restOptions } = option as HtmlAnnotationOption;\n const wrappedHtml = (container: HTMLElement) => {\n if (isFunction(html)) {\n return html(container, this.view);\n }\n return html;\n };\n o = {\n ...restOptions,\n ...textPoint,\n // html 组件需要指定 parent\n parent: canvas.get('el').parentNode,\n html: wrappedHtml,\n };\n }\n // 合并主题,用户配置优先级高于默认主题\n const cfg = deepMix({}, theme, {\n ...o,\n top: option.top,\n style: option.style,\n offsetX: option.offsetX,\n offsetY: option.offsetY,\n });\n if (type !== 'html') {\n // html 类型不使用 G container\n cfg.container = this.getComponentContainer(cfg);\n }\n cfg.animate = this.view.getOptions().animate && cfg.animate && get(option, 'animate', cfg.animate); // 如果 view 关闭动画,则不执行\n cfg.animateOption = deepMix({}, DEFAULT_ANIMATE_CFG, cfg.animateOption, option.animateOption);\n\n return cfg;\n }\n\n /**\n * is annotation render on top\n * @param option\n * @return whethe on top\n */\n private isTop(option: any): boolean {\n return get(option, 'top', true);\n }\n\n /**\n * get the container by option.top\n * default is on top\n * @param option\n * @returns the container\n */\n private getComponentContainer(option: any) {\n return this.isTop(option) ? this.foregroundContainer : this.backgroundContainer;\n }\n\n private getAnnotationTheme(type: string) {\n return get(this.view.getTheme(), ['components', 'annotation', type], {});\n }\n\n /**\n * 创建或者更新 annotation\n * @param option\n */\n private updateOrCreate(option: BaseOption) {\n // 拿到缓存的内容\n let co = this.cache.get(this.getCacheKey(option));\n\n // 存在则更新,不存在在创建\n if (co) {\n const { type } = option;\n const theme = this.getAnnotationTheme(type);\n const cfg = this.getAnnotationCfg(type, option, theme);\n\n // 忽略掉一些配置\n if (cfg) {\n omit(cfg, ['container']);\n }\n co.component.update({ ...(cfg || {}), visible: !!cfg });\n // 对于 regionFilter/shape,因为生命周期的原因,需要额外 render\n if (includes(ANNOTATIONS_AFTER_RENDER, option.type)) {\n co.component.render();\n }\n } else {\n // 不存在,创建\n co = this.createAnnotation(option);\n if (co) {\n co.component.init();\n // Note:regionFilter/shape 特殊处理,regionFilter/shape 需要取到 Geometry 中的 Shape,需要在 view render 之后处理\n // 其他组件使用外层的统一 render 逻辑\n if (includes(ANNOTATIONS_AFTER_RENDER, option.type)) {\n co.component.render();\n }\n }\n }\n return co;\n }\n\n /**\n * 更新缓存,以及销毁组件\n * @param updated 更新或者创建的组件\n */\n private syncCache(updated: Map) {\n const newCache = new Map(this.cache); // clone 一份\n\n // 将 update 更新到 cache\n updated.forEach((co: ComponentOption, key: BaseOption) => {\n newCache.set(key, co);\n });\n\n // 另外和 options 进行对比,删除\n newCache.forEach((co: ComponentOption, key: BaseOption) => {\n // option 中已经找不到,那么就是删除的\n if (\n !find(this.option, (option: BaseOption) => {\n return key === this.getCacheKey(option);\n })\n ) {\n co.component.destroy();\n newCache.delete(key);\n }\n });\n\n return newCache;\n }\n\n /**\n * 获得缓存组件的 key\n * @param option\n */\n private getCacheKey(option: BaseOption) {\n // 如果存在 id,则使用 id string,否则直接使用 option 引用作为 key\n return option;\n // 后续扩展 id 用\n // const id = get(option, 'id');\n // return id ? id : option;\n }\n}\n","import { deepMix, get, map } from '@antv/util';\nimport { DIRECTION } from '../constant';\nimport { Coordinate, Scale, Tick } from '../dependents';\n\n/**\n * @ignore\n * get the grid theme by type, will mix the common cfg of axis\n * @param theme\n * @param direction\n * @returns theme object\n */\nexport function getGridThemeCfg(theme: object, direction: DIRECTION | 'common'): object {\n const axisTheme = deepMix(\n {},\n get(theme, ['components', 'axis', 'common']),\n get(theme, ['components', 'axis', direction])\n );\n return get(axisTheme, ['grid'], {});\n}\n\n/**\n * @ignore\n * get axis grid items\n * @param coordinate\n * @param scale\n * @param dim\n * @return items\n */\nexport function getLineGridItems(coordinate: Coordinate, scale: Scale, dim: string, alignTick?: boolean) {\n const items = [];\n const ticks = scale.getTicks();\n if (coordinate.isPolar) {\n // 补全 ticks\n ticks.push({\n value: 1,\n text: '',\n tickValue: '',\n });\n }\n ticks.reduce((preTick: Tick, currentTick: Tick, currentIndex) => {\n const currentValue = currentTick.value;\n if (alignTick) {\n items.push({\n points: [\n coordinate.convert(dim === 'y' ? { x: 0, y: currentValue } : { x: currentValue, y: 0 }),\n coordinate.convert(dim === 'y' ? { x: 1, y: currentValue } : { x: currentValue, y: 1 }),\n ],\n });\n } else {\n if (currentIndex) {\n const preValue = preTick.value;\n const middleValue = (preValue + currentValue) / 2;\n items.push({\n points: [\n coordinate.convert(dim === 'y' ? { x: 0, y: middleValue } : { x: middleValue, y: 0 }),\n coordinate.convert(dim === 'y' ? { x: 1, y: middleValue } : { x: middleValue, y: 1 }),\n ],\n });\n }\n }\n return currentTick;\n }, ticks[0]);\n return items;\n}\n\n/**\n * @ignore\n * get\n * @param coordinate\n * @param xScale\n * @param yScale\n * @param dim\n * @returns items\n */\nexport function getCircleGridItems(\n coordinate: Coordinate,\n xScale: Scale,\n yScale: Scale,\n alignTick: boolean,\n dim: string\n) {\n const count = xScale.values.length;\n const items = [];\n const ticks = yScale.getTicks();\n\n ticks.reduce((preTick: Tick, currentTick: Tick) => {\n const preValue = preTick ? preTick.value : currentTick.value; // 只有一项数据时取当前值\n const currentValue = currentTick.value;\n const middleValue = (preValue + currentValue) / 2;\n if (dim === 'x') {\n // 如果是 x 轴作为半径轴,那么只需要取圆弧收尾两个即可\n items.push({\n points: [\n coordinate.convert({\n x: alignTick ? currentValue : middleValue,\n y: 0,\n }),\n coordinate.convert({\n x: alignTick ? currentValue : middleValue,\n y: 1,\n }),\n ],\n });\n } else {\n items.push({\n points: map(Array(count + 1), (__: any, idx: number) => {\n return coordinate.convert({\n x: idx / count,\n y: alignTick ? currentValue : middleValue,\n });\n }),\n });\n }\n\n return currentTick;\n }, ticks[0]);\n return items;\n}\n\n/**\n * @ignore\n * show grid or not\n * @param axisTheme\n * @param axisOption\n */\nexport function showGrid(axisTheme: any, axisOption: any): boolean {\n const userGrid = get(axisOption, 'grid');\n if (userGrid === null) {\n return false;\n }\n\n const themeGrid = get(axisTheme, 'grid');\n\n return !(userGrid === undefined && themeGrid === null);\n}\n","import { deepMix, each, get, isUndefined } from '@antv/util';\nimport { DIRECTION, COMPONENT_TYPE, LAYER } from '../../constant';\nimport { CircleAxis, CircleGrid, IGroup, LineAxis, LineGrid, Scale } from '../../dependents';\nimport { AxisCfg, AxisOption, ComponentOption } from '../../interface';\n\nimport { DEFAULT_ANIMATE_CFG } from '../../animate/';\n\nimport {\n getAxisDirection,\n getAxisFactorByRegion,\n getAxisRegion,\n getAxisThemeCfg,\n getAxisTitleOptions,\n getAxisTitleText,\n getCircleAxisCenterRadius,\n isVertical,\n} from '../../util/axis';\nimport { getAxisOption } from '../../util/axis';\nimport { getCircleGridItems, getGridThemeCfg, getLineGridItems, showGrid } from '../../util/grid';\nimport { omit } from '../../util/helper';\nimport View from '../view';\nimport { Controller } from './base';\n\ntype Option = Record | boolean;\n\ntype Cache = Map;\n\n// update 组件的时候,忽略的数据更新\nconst OMIT_CFG = ['container'];\n\n// 坐标轴默认动画配置\nconst AXIS_DEFAULT_ANIMATE_CFG = {\n ...DEFAULT_ANIMATE_CFG,\n appear: null,\n};\n\n/**\n * @ignore\n * G2 Axis controller, will:\n * - create component\n * - axis\n * - grid\n * - life circle\n */\nexport default class Axis extends Controller